chrome-devtools-frontend 1.0.941208 → 1.0.943182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/WATCHLISTS +1 -1
  2. package/config/gni/all_devtools_files.gni +0 -64
  3. package/config/gni/devtools_grd_files.gni +54 -19
  4. package/config/gni/devtools_image_files.gni +1 -3
  5. package/front_end/.eslintrc.js +11 -1
  6. package/front_end/Images/src/{feedback_thin_16x16_icon.svg → survey_feedback_icon.svg} +1 -1
  7. package/front_end/Tests.js +1 -32
  8. package/front_end/core/common/Color.ts +5 -0
  9. package/front_end/core/i18n/locales/en-US.json +17 -29
  10. package/front_end/core/i18n/locales/en-XL.json +17 -29
  11. package/front_end/core/sdk/CPUProfilerModel.ts +7 -9
  12. package/front_end/core/sdk/ConsoleModel.ts +27 -33
  13. package/front_end/core/sdk/DebuggerModel.ts +4 -14
  14. package/front_end/core/sdk/sdk-meta.ts +17 -3
  15. package/front_end/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.ts +1 -1
  16. package/front_end/entrypoints/devtools_app/devtools_app.js +1 -1
  17. package/front_end/entrypoints/devtools_app/devtools_app.json +1 -12
  18. package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
  19. package/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.ts +1 -1
  20. package/front_end/entrypoints/inspector/inspector.js +1 -1
  21. package/front_end/entrypoints/inspector/inspector.json +1 -3
  22. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +2 -3
  23. package/front_end/entrypoints/js_app/js_app.js +1 -1
  24. package/front_end/entrypoints/js_app/js_app.json +1 -3
  25. package/front_end/entrypoints/main/MainImpl.ts +26 -0
  26. package/front_end/entrypoints/main/main-meta.ts +1 -2
  27. package/front_end/entrypoints/ndb_app/ndb_app.js +1 -1
  28. package/front_end/entrypoints/node_app/node_app-meta.ts +0 -2
  29. package/front_end/entrypoints/node_app/node_app.js +1 -1
  30. package/front_end/entrypoints/node_app/node_app.json +1 -3
  31. package/front_end/entrypoints/node_main/node_main-meta.ts +0 -1
  32. package/front_end/entrypoints/shell/shell.js +0 -11
  33. package/front_end/entrypoints/shell/shell.json +1 -5
  34. package/front_end/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.ts +1 -1
  35. package/front_end/entrypoints/worker_app/worker_app.js +1 -1
  36. package/front_end/entrypoints/worker_app/worker_app.json +1 -7
  37. package/front_end/generated/InspectorBackendCommands.js +19 -0
  38. package/front_end/generated/protocol-mapping.d.ts +31 -1
  39. package/front_end/generated/protocol-proxy-api.d.ts +34 -2
  40. package/front_end/generated/protocol.d.ts +81 -6
  41. package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +2 -2
  42. package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +5 -1
  43. package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
  44. package/front_end/legacy_test_runner/test_runner/TestRunner.js +3 -1
  45. package/front_end/models/formatter/SourceFormatter.ts +0 -10
  46. package/front_end/models/persistence/persistence-meta.ts +0 -1
  47. package/front_end/models/workspace/UISourceCode.ts +9 -42
  48. package/front_end/panels/accessibility/accessibility-meta.ts +0 -1
  49. package/front_end/panels/animation/AnimationTimeline.ts +3 -3
  50. package/front_end/panels/animation/animation-meta.ts +0 -1
  51. package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
  52. package/front_end/panels/application/BackForwardCacheStrings.ts +3 -1
  53. package/front_end/panels/application/application-meta.ts +0 -4
  54. package/front_end/panels/application/components/EndpointsGrid.ts +1 -1
  55. package/front_end/panels/application/components/ReportsGrid.ts +1 -1
  56. package/front_end/panels/application/components/stackTraceRow.css +8 -0
  57. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +1 -2
  58. package/front_end/panels/changes/changes-meta.ts +0 -1
  59. package/front_end/panels/console/ConsolePinPane.ts +23 -32
  60. package/front_end/panels/console/ConsoleViewMessage.ts +8 -1
  61. package/front_end/panels/console/console-meta.ts +0 -1
  62. package/front_end/panels/console_counters/console_counters-meta.ts +0 -1
  63. package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
  64. package/front_end/panels/coverage/CoverageView.ts +2 -105
  65. package/front_end/panels/coverage/coverage-meta.ts +0 -1
  66. package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
  67. package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
  68. package/front_end/panels/css_overview/css_overview-meta.ts +0 -1
  69. package/front_end/panels/developer_resources/developer_resources-meta.ts +0 -1
  70. package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
  71. package/front_end/panels/elements/components/StylePropertyEditor.ts +2 -0
  72. package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
  73. package/front_end/panels/elements/elements-meta.ts +0 -1
  74. package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
  75. package/front_end/panels/emulation/DeviceModeView.ts +2 -1
  76. package/front_end/panels/emulation/InspectedPagePlaceholder.ts +3 -1
  77. package/front_end/panels/emulation/MediaQueryInspector.ts +3 -1
  78. package/front_end/panels/emulation/emulation-meta.ts +2 -5
  79. package/front_end/panels/help/help-meta.ts +0 -1
  80. package/front_end/panels/input/input-meta.ts +0 -1
  81. package/front_end/panels/issues/issues-meta.ts +0 -3
  82. package/front_end/panels/js_profiler/js_profiler-meta.ts +0 -4
  83. package/front_end/panels/layers/layers-meta.ts +0 -4
  84. package/front_end/panels/lighthouse/LighthousePanel.ts +2 -4
  85. package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -4
  86. package/front_end/panels/lighthouse/lighthouse-meta.ts +0 -1
  87. package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
  88. package/front_end/panels/lighthouse/module.json +0 -6
  89. package/front_end/panels/media/media-meta.ts +0 -4
  90. package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +0 -1
  91. package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
  92. package/front_end/panels/network/network-meta.ts +1 -5
  93. package/front_end/panels/performance_monitor/performance_monitor-meta.ts +0 -1
  94. package/front_end/panels/profiler/CPUProfileView.ts +10 -3
  95. package/front_end/panels/profiler/profiler-meta.ts +0 -3
  96. package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +0 -1
  97. package/front_end/panels/screencast/screencast-meta.ts +0 -4
  98. package/front_end/panels/security/security-meta.ts +0 -4
  99. package/front_end/panels/sensors/sensors-meta.ts +0 -1
  100. package/front_end/panels/settings/emulation/emulation-meta.ts +0 -1
  101. package/front_end/panels/settings/settings-meta.ts +0 -1
  102. package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
  103. package/front_end/panels/sources/CSSPlugin.ts +310 -331
  104. package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
  105. package/front_end/panels/sources/CoveragePlugin.ts +121 -6
  106. package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
  107. package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
  108. package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
  109. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
  110. package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
  111. package/front_end/panels/sources/Plugin.ts +20 -4
  112. package/front_end/panels/sources/ProfilePlugin.ts +185 -0
  113. package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
  114. package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
  115. package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
  116. package/front_end/panels/sources/SourcesPanel.ts +6 -5
  117. package/front_end/panels/sources/SourcesView.ts +10 -8
  118. package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
  119. package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
  120. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
  121. package/front_end/panels/sources/sources-legacy.ts +0 -6
  122. package/front_end/panels/sources/sources-meta.ts +2 -6
  123. package/front_end/panels/sources/sources.ts +0 -2
  124. package/front_end/panels/timeline/timeline-meta.ts +2 -9
  125. package/front_end/panels/web_audio/web_audio-meta.ts +0 -1
  126. package/front_end/panels/webauthn/webauthn-meta.ts +0 -1
  127. package/front_end/third_party/codemirror.next/bundle.ts +9 -13
  128. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  129. package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
  130. package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
  131. package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
  132. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  133. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  134. package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
  135. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
  136. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  137. package/front_end/third_party/codemirror.next/package.json +13 -11
  138. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1128 -1158
  139. package/front_end/third_party/lighthouse/locales/ar-XB.json +211 -79
  140. package/front_end/third_party/lighthouse/locales/ar.json +213 -81
  141. package/front_end/third_party/lighthouse/locales/bg.json +211 -79
  142. package/front_end/third_party/lighthouse/locales/ca.json +212 -80
  143. package/front_end/third_party/lighthouse/locales/cs.json +211 -79
  144. package/front_end/third_party/lighthouse/locales/da.json +211 -79
  145. package/front_end/third_party/lighthouse/locales/de.json +211 -79
  146. package/front_end/third_party/lighthouse/locales/el.json +213 -81
  147. package/front_end/third_party/lighthouse/locales/en-GB.json +211 -79
  148. package/front_end/third_party/lighthouse/locales/en-US.json +186 -75
  149. package/front_end/third_party/lighthouse/locales/en-XA.json +211 -79
  150. package/front_end/third_party/lighthouse/locales/en-XL.json +186 -75
  151. package/front_end/third_party/lighthouse/locales/es-419.json +211 -79
  152. package/front_end/third_party/lighthouse/locales/es.json +212 -80
  153. package/front_end/third_party/lighthouse/locales/fi.json +211 -79
  154. package/front_end/third_party/lighthouse/locales/fil.json +211 -79
  155. package/front_end/third_party/lighthouse/locales/fr.json +211 -79
  156. package/front_end/third_party/lighthouse/locales/he.json +212 -80
  157. package/front_end/third_party/lighthouse/locales/hi.json +214 -82
  158. package/front_end/third_party/lighthouse/locales/hr.json +211 -79
  159. package/front_end/third_party/lighthouse/locales/hu.json +211 -79
  160. package/front_end/third_party/lighthouse/locales/id.json +211 -79
  161. package/front_end/third_party/lighthouse/locales/it.json +211 -79
  162. package/front_end/third_party/lighthouse/locales/ja.json +211 -79
  163. package/front_end/third_party/lighthouse/locales/ko.json +211 -79
  164. package/front_end/third_party/lighthouse/locales/lt.json +211 -79
  165. package/front_end/third_party/lighthouse/locales/lv.json +214 -82
  166. package/front_end/third_party/lighthouse/locales/nl.json +211 -79
  167. package/front_end/third_party/lighthouse/locales/no.json +211 -79
  168. package/front_end/third_party/lighthouse/locales/pl.json +211 -79
  169. package/front_end/third_party/lighthouse/locales/pt-PT.json +211 -79
  170. package/front_end/third_party/lighthouse/locales/pt.json +211 -79
  171. package/front_end/third_party/lighthouse/locales/ro.json +212 -80
  172. package/front_end/third_party/lighthouse/locales/ru.json +211 -79
  173. package/front_end/third_party/lighthouse/locales/sk.json +211 -79
  174. package/front_end/third_party/lighthouse/locales/sl.json +211 -79
  175. package/front_end/third_party/lighthouse/locales/sr-Latn.json +211 -79
  176. package/front_end/third_party/lighthouse/locales/sr.json +211 -79
  177. package/front_end/third_party/lighthouse/locales/sv.json +211 -79
  178. package/front_end/third_party/lighthouse/locales/ta.json +218 -86
  179. package/front_end/third_party/lighthouse/locales/te.json +251 -119
  180. package/front_end/third_party/lighthouse/locales/th.json +211 -79
  181. package/front_end/third_party/lighthouse/locales/tr.json +211 -79
  182. package/front_end/third_party/lighthouse/locales/uk.json +212 -80
  183. package/front_end/third_party/lighthouse/locales/vi.json +211 -79
  184. package/front_end/third_party/lighthouse/locales/zh-HK.json +211 -79
  185. package/front_end/third_party/lighthouse/locales/zh-TW.json +211 -79
  186. package/front_end/third_party/lighthouse/locales/zh.json +211 -79
  187. package/front_end/third_party/lighthouse/report/bundle.d.ts +72 -34
  188. package/front_end/third_party/lighthouse/report/bundle.js +698 -492
  189. package/front_end/third_party/lighthouse/report-assets/report-generator.js +1 -2
  190. package/front_end/third_party/lighthouse/report-assets/report.js +40 -35
  191. package/front_end/third_party/lighthouse/report-assets/standalone-template.html +2 -4
  192. package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
  193. package/front_end/ui/components/data_grid/dataGrid.css +12 -10
  194. package/front_end/ui/components/docs/component_docs.ts +14 -0
  195. package/front_end/ui/components/docs/create_breadcrumbs.ts +1 -1
  196. package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
  197. package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
  198. package/front_end/ui/components/docs/icon_button/basic.ts +3 -3
  199. package/front_end/ui/components/docs/toggle_dark_mode.ts +1 -0
  200. package/front_end/ui/components/docs/toggle_fonts.ts +2 -0
  201. package/front_end/ui/components/helpers/get-stylesheet.ts +0 -15
  202. package/front_end/ui/components/linear_memory_inspector/linear_memory_inspector-meta.ts +1 -2
  203. package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
  204. package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
  205. package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
  206. package/front_end/ui/components/text_editor/config.ts +42 -26
  207. package/front_end/ui/components/text_editor/javascript.ts +2 -3
  208. package/front_end/ui/components/text_editor/position.ts +17 -0
  209. package/front_end/ui/components/text_editor/text_editor.ts +1 -0
  210. package/front_end/ui/components/text_editor/theme.ts +5 -1
  211. package/front_end/ui/components/tree_outline/TreeOutline.ts +63 -8
  212. package/front_end/ui/components/tree_outline/TreeOutlineUtils.ts +8 -6
  213. package/front_end/ui/legacy/Dialog.ts +3 -1
  214. package/front_end/ui/legacy/DropTarget.ts +2 -1
  215. package/front_end/ui/legacy/EmptyWidget.ts +2 -1
  216. package/front_end/ui/legacy/FilterBar.ts +2 -1
  217. package/front_end/ui/legacy/GlassPane.ts +4 -2
  218. package/front_end/ui/legacy/Infobar.ts +5 -8
  219. package/front_end/ui/legacy/InspectorView.ts +6 -1
  220. package/front_end/ui/legacy/ListWidget.ts +2 -1
  221. package/front_end/ui/legacy/PopoverHelper.ts +2 -1
  222. package/front_end/ui/legacy/ProgressIndicator.ts +2 -1
  223. package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +2 -1
  224. package/front_end/ui/legacy/ReportView.ts +2 -1
  225. package/front_end/ui/legacy/RootView.ts +2 -1
  226. package/front_end/ui/legacy/SearchableView.ts +2 -1
  227. package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
  228. package/front_end/ui/legacy/SoftContextMenu.ts +3 -2
  229. package/front_end/ui/legacy/SoftDropDown.ts +4 -2
  230. package/front_end/ui/legacy/SplitWidget.ts +2 -1
  231. package/front_end/ui/legacy/SuggestBox.ts +2 -1
  232. package/front_end/ui/legacy/TabbedPane.ts +2 -1
  233. package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -1
  234. package/front_end/ui/legacy/TextPrompt.ts +2 -1
  235. package/front_end/ui/legacy/Toolbar.ts +3 -2
  236. package/front_end/ui/legacy/Treeoutline.ts +4 -3
  237. package/front_end/ui/legacy/UIUtils.ts +17 -14
  238. package/front_end/ui/legacy/ViewManager.ts +2 -1
  239. package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +1 -2
  240. package/front_end/ui/legacy/components/inline_editor/cssAngle.css +4 -0
  241. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +2 -2
  242. package/front_end/ui/legacy/components/object_ui/object_ui-meta.ts +0 -4
  243. package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
  244. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +0 -3
  245. package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -2
  246. package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +2 -3
  247. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
  248. package/front_end/ui/legacy/components/source_frame/FontView.ts +4 -1
  249. package/front_end/ui/legacy/components/source_frame/ImageView.ts +4 -1
  250. package/front_end/ui/legacy/components/source_frame/JSONView.ts +4 -1
  251. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +21 -15
  252. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +501 -252
  253. package/front_end/ui/legacy/components/source_frame/XMLView.ts +7 -2
  254. package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
  255. package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
  256. package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +2 -0
  257. package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
  258. package/front_end/ui/legacy/components/text_editor/module.json +0 -3
  259. package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -15
  260. package/front_end/ui/legacy/radioButton.css +1 -13
  261. package/front_end/ui/legacy/textButton.css +5 -4
  262. package/front_end/ui/legacy/themeColors.css +36 -0
  263. package/front_end/ui/legacy/theme_support/theme_support_impl.ts +7 -9
  264. package/front_end/ui/legacy/utils/create-shadow-root-with-core-styles.ts +2 -2
  265. package/front_end/ui/legacy/utils/inject-core-styles.ts +7 -4
  266. package/package.json +1 -1
  267. package/scripts/check_gn.js +0 -35
  268. package/scripts/eslint_rules/lib/es_modules_import.js +15 -8
  269. package/scripts/eslint_rules/tests/es_modules_import_test.js +8 -0
  270. package/front_end/Images/radioDot-dark-theme.png +0 -0
  271. package/front_end/Images/radioDot.png +0 -0
  272. package/front_end/emulated_devices/module.json +0 -6
  273. package/front_end/panels/application/module.json +0 -6
  274. package/front_end/panels/emulation/module.json +0 -11
  275. package/front_end/panels/issues/module.json +0 -6
  276. package/front_end/panels/js_profiler/module.json +0 -5
  277. package/front_end/panels/layer_viewer/module.json +0 -5
  278. package/front_end/panels/layers/module.json +0 -5
  279. package/front_end/panels/media/module.json +0 -5
  280. package/front_end/panels/network/module.json +0 -5
  281. package/front_end/panels/profiler/module.json +0 -5
  282. package/front_end/panels/screencast/module.json +0 -6
  283. package/front_end/panels/security/module.json +0 -5
  284. package/front_end/panels/timeline/module.json +0 -7
  285. package/front_end/third_party/lighthouse/report-assets/report.css +0 -1774
  286. package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
  287. package/front_end/ui/legacy/components/source_frame/messagesPopover.css +0 -32
  288. package/front_end/ui/legacy/components/source_frame/module.json +0 -14
  289. package/front_end/ui/legacy/module.json +0 -41
@@ -1,1774 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2017 The Lighthouse Authors. All Rights Reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS-IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
-
18
- /*
19
- Naming convention:
20
-
21
- If a variable is used for a specific component: --{component}-{property name}-{modifier}
22
-
23
- Both {component} and {property name} should be kebab-case. If the target is the entire page,
24
- use 'report' for the component. The property name should not be abbreviated. Use the
25
- property name the variable is intended for - if it's used for multiple, a common descriptor
26
- is fine (ex: 'size' for a variable applied to 'width' and 'height'). If a variable is shared
27
- across multiple components, either create more variables or just drop the "{component}-"
28
- part of the name. Append any modifiers at the end (ex: 'big', 'dark').
29
-
30
- For colors: --color-{hue}-{intensity}
31
-
32
- {intensity} is the Material Design tag - 700, A700, etc.
33
- */
34
- .lh-vars {
35
- /* Palette using Material Design Colors
36
- * https://www.materialui.co/colors */
37
- --color-amber-50: #FFF8E1;
38
- --color-blue-200: #90CAF9;
39
- --color-blue-900: #0D47A1;
40
- --color-blue-A700: #2962FF;
41
- --color-cyan-500: #00BCD4;
42
- --color-gray-100: #F5F5F5;
43
- --color-gray-300: #CFCFCF;
44
- --color-gray-200: #E0E0E0;
45
- --color-gray-400: #BDBDBD;
46
- --color-gray-50: #FAFAFA;
47
- --color-gray-500: #9E9E9E;
48
- --color-gray-600: #757575;
49
- --color-gray-700: #616161;
50
- --color-gray-800: #424242;
51
- --color-gray-900: #212121;
52
- --color-gray: #000000;
53
- --color-green-700: #018642;
54
- --color-green: #0CCE6B;
55
- --color-lime-400: #D3E156;
56
- --color-orange-50: #FFF3E0;
57
- --color-orange-700: #D04900;
58
- --color-orange: #FFA400;
59
- --color-red-700: #EB0F00;
60
- --color-red: #FF4E42;
61
- --color-teal-600: #00897B;
62
- --color-white: #FFFFFF;
63
-
64
- /* Context-specific colors */
65
- --color-average-secondary: var(--color-orange-700);
66
- --color-average: var(--color-orange);
67
- --color-fail-secondary: var(--color-red-700);
68
- --color-fail: var(--color-red);
69
- --color-hover: var(--color-gray-50);
70
- --color-informative: var(--color-blue-900);
71
- --color-pass-secondary: var(--color-green-700);
72
- --color-pass: var(--color-green);
73
- --color-not-applicable: var(--color-gray-600);
74
-
75
- /* Component variables */
76
- --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right));
77
- --audit-explanation-line-height: 16px;
78
- --audit-group-margin-bottom: 40px;
79
- --audit-group-padding-vertical: 8px;
80
- --audit-margin-horizontal: 5px;
81
- --audit-padding-vertical: 8px;
82
- --category-header-font-size: 20px;
83
- --category-padding: 40px;
84
- --chevron-line-stroke: var(--color-gray-600);
85
- --chevron-size: 12px;
86
- --default-padding: 12px;
87
- --env-item-background-color: var(--color-gray-100);
88
- --env-item-font-size: 28px;
89
- --env-item-line-height: 36px;
90
- --env-item-padding: 10px 0px;
91
- --env-name-min-width: 220px;
92
- --footer-padding-vertical: 16px;
93
- --gauge-circle-size-big: 112px;
94
- --gauge-circle-size: 80px;
95
- --gauge-label-font-size-big: 28px;
96
- --gauge-label-font-size: 20px;
97
- --gauge-label-line-height-big: 36px;
98
- --gauge-label-line-height: 26px;
99
- --gauge-percentage-font-size-big: 38px;
100
- --gauge-percentage-font-size: 28px;
101
- --gauge-wrapper-width: 148px;
102
- --header-line-height: 24px;
103
- --highlighter-background-color: var(--report-text-color);
104
- --icon-square-size: calc(var(--score-icon-size) * 0.88);
105
- --image-preview-size: 48px;
106
- --metric-toggle-lines-fill: #7F7F7F;
107
- --metric-value-font-size: 28px;
108
- --metrics-toggle-background-color: var(--color-gray-200);
109
- --plugin-badge-background-color: var(--color-white);
110
- --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7);
111
- --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7);
112
- --plugin-icon-size: 65%;
113
- --pwa-icon-margin: 0 6px 0 -2px;
114
- --pwa-icon-size: var(--topbar-logo-size);
115
- --report-background-color: #fff;
116
- --report-border-color-secondary: #ebebeb;
117
- --report-font-family-monospace: 'Roboto Mono', 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console', monospace;
118
- --report-font-family: Roboto, Helvetica, Arial, sans-serif;
119
- --report-font-size: 16px;
120
- --report-icon-size: var(--score-icon-background-size);
121
- --report-line-height: 24px;
122
- --report-min-width: 400px;
123
- --report-monospace-font-size: calc(var(--report-font-size) * 0.85);
124
- --report-text-color-secondary: var(--color-gray-800);
125
- --report-text-color: var(--color-gray-900);
126
- --report-width: calc(60 * var(--report-font-size));
127
- --score-container-padding: 8px;
128
- --score-icon-background-size: 24px;
129
- --score-icon-margin-left: 4px;
130
- --score-icon-margin-right: 12px;
131
- --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left);
132
- --score-icon-size: 12px;
133
- --score-icon-size-big: 16px;
134
- --scores-container-padding: 20px 0 20px 0;
135
- --scorescale-height: 6px;
136
- --scorescale-width: 18px;
137
- --screenshot-overlay-background: rgba(0, 0, 0, 0.3);
138
- --section-padding-vertical: 12px;
139
- --snippet-background-color: var(--color-gray-50);
140
- --snippet-color: #0938C2;
141
- --sparkline-height: 5px;
142
- --stackpack-padding-horizontal: 10px;
143
- --sticky-header-background-color: var(--report-background-color);
144
- --table-higlight-background-color: hsla(0, 0%, 75%, 0.1);
145
- --tools-icon-color: var(--color-gray-600);
146
- --topbar-background-color: var(--color-gray-100);
147
- --topbar-height: 32px;
148
- --topbar-logo-size: 24px;
149
- --topbar-padding: 0 8px;
150
- --toplevel-warning-background-color: var(--color-orange-50);
151
- --toplevel-warning-message-text-color: #BD4200;
152
- --toplevel-warning-padding: 18px;
153
- --toplevel-warning-text-color: var(--report-text-color);
154
-
155
- /* SVGs */
156
- --plugin-icon-url-dark: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23FFFFFF"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>');
157
- --plugin-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="%23757575"><path d="M0 0h24v24H0z" fill="none"/><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"/></svg>');
158
-
159
- --pass-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>check</title><path fill="%23178239" d="M24 4C12.95 4 4 12.95 4 24c0 11.04 8.95 20 20 20 11.04 0 20-8.96 20-20 0-11.05-8.96-20-20-20zm-4 30L10 24l2.83-2.83L20 28.34l15.17-15.17L38 16 20 34z"/></svg>');
160
- --average-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>info</title><path fill="%23E67700" d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm2 30h-4V22h4v12zm0-16h-4v-4h4v4z"/></svg>');
161
- --fail-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48"><title>warn</title><path fill="%23C7221F" d="M2 42h44L24 4 2 42zm24-6h-4v-4h4v4zm0-8h-4v-8h4v8z"/></svg>');
162
-
163
- --pwa-installable-gray-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23DAE0E3" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>');
164
- --pwa-optimized-gray-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23DAE0E3" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>');
165
-
166
- --pwa-installable-gray-url-dark: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="nonzero"><circle fill="%23424242" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>');
167
- --pwa-optimized-gray-url-dark: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%23424242" width="24" height="24" rx="12"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/><path d="M5 5h14v14H5z"/></g></svg>');
168
-
169
- --pwa-installable-color-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><circle fill="%230CCE6B" cx="12" cy="12" r="12"/><path d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm3.5 7.7h-2.8v2.8h-1.4v-2.8H8.5v-1.4h2.8V8.5h1.4v2.8h2.8v1.4z" fill="%23FFF"/></g></svg>');
170
- --pwa-optimized-color-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><rect fill="%230CCE6B" width="24" height="24" rx="12"/><path d="M5 5h14v14H5z"/><path fill="%23FFF" d="M12 15.07l3.6 2.18-.95-4.1 3.18-2.76-4.2-.36L12 6.17l-1.64 3.86-4.2.36 3.2 2.76-.96 4.1z"/></g></svg>');
171
- }
172
-
173
- @media not print {
174
- .lh-vars.lh-dark {
175
- /* Pallete */
176
- --color-gray-200: var(--color-gray-800);
177
- --color-gray-300: #616161;
178
- --color-gray-400: var(--color-gray-600);
179
- --color-gray-700: var(--color-gray-400);
180
- --color-gray-50: #757575;
181
- --color-gray-600: var(--color-gray-500);
182
- --color-green-700: var(--color-green);
183
- --color-orange-700: var(--color-orange);
184
- --color-red-700: var(--color-red);
185
- --color-teal-600: var(--color-cyan-500);
186
-
187
- /* Context-specific colors */
188
- --color-hover: rgba(0, 0, 0, 0.2);
189
- --color-informative: var(--color-blue-200);
190
-
191
- /* Component variables */
192
- --env-item-background-color: var(--color-gray);
193
- --plugin-badge-background-color: var(--color-gray-800);
194
- --report-background-color: var(--color-gray-900);
195
- --report-border-color-secondary: var(--color-gray-200);
196
- --report-text-color-secondary: var(--color-gray-400);
197
- --report-text-color: var(--color-gray-100);
198
- --snippet-color: var(--color-cyan-500);
199
- --topbar-background-color: var(--color-gray);
200
- --toplevel-warning-background-color: #544B40;
201
- --toplevel-warning-message-text-color: var(--color-orange-700);
202
- --toplevel-warning-text-color: var(--color-gray-100);
203
-
204
- /* SVGs */
205
- --plugin-icon-url: var(--plugin-icon-url-dark);
206
- --pwa-installable-gray-url: var(--pwa-installable-gray-url-dark);
207
- --pwa-optimized-gray-url: var(--pwa-optimized-gray-url-dark);
208
- }
209
- }
210
-
211
- @media only screen and (max-width: 480px) {
212
- .lh-vars {
213
- --audit-group-margin-bottom: 20px;
214
- --category-padding: 24px;
215
- --env-name-min-width: 120px;
216
- --gauge-circle-size-big: 96px;
217
- --gauge-circle-size: 72px;
218
- --gauge-label-font-size-big: 22px;
219
- --gauge-label-font-size: 14px;
220
- --gauge-label-line-height-big: 26px;
221
- --gauge-label-line-height: 20px;
222
- --gauge-percentage-font-size-big: 34px;
223
- --gauge-percentage-font-size: 26px;
224
- --gauge-wrapper-width: 112px;
225
- --header-padding: 16px 0 16px 0;
226
- --image-preview-size: 24px;
227
- --plugin-icon-size: 75%;
228
- --pwa-icon-margin: 0 7px 0 -3px;
229
- --report-font-size: 14px;
230
- --report-line-height: 20px;
231
- --score-icon-margin-left: 2px;
232
- --score-icon-size: 10px;
233
- --topbar-height: 28px;
234
- --topbar-logo-size: 20px;
235
- }
236
-
237
- /* Not enough space to adequately show the relative savings bars. */
238
- .lh-sparkline {
239
- display: none;
240
- }
241
- }
242
-
243
- .lh-vars.lh-devtools {
244
- --audit-explanation-line-height: 14px;
245
- --audit-group-margin-bottom: 20px;
246
- --audit-group-padding-vertical: 12px;
247
- --audit-padding-vertical: 4px;
248
- --category-header-font-size: 16px;
249
- --category-padding: 12px;
250
- --default-padding: 12px;
251
- --env-name-min-width: 120px;
252
- --footer-padding-vertical: 8px;
253
- --gauge-circle-size-big: 72px;
254
- --gauge-circle-size: 64px;
255
- --gauge-label-font-size-big: 22px;
256
- --gauge-label-font-size: 14px;
257
- --gauge-label-line-height-big: 26px;
258
- --gauge-label-line-height: 20px;
259
- --gauge-percentage-font-size-big: 34px;
260
- --gauge-percentage-font-size: 26px;
261
- --gauge-wrapper-width: 97px;
262
- --header-line-height: 20px;
263
- --header-padding: 16px 0 16px 0;
264
- --screenshot-overlay-background: transparent;
265
- --plugin-icon-size: 75%;
266
- --pwa-icon-margin: 0 7px 0 -3px;
267
- --report-font-family-monospace: 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console', monospace;
268
- --report-font-family: '.SFNSDisplay-Regular', 'Helvetica Neue', 'Lucida Grande', sans-serif;
269
- --report-font-size: 12px;
270
- --report-line-height: 20px;
271
- --score-icon-margin-left: 2px;
272
- --score-icon-size: 10px;
273
- --section-padding-vertical: 8px;
274
- }
275
-
276
- .lh-devtools.lh-root {
277
- height: 100%;
278
- }
279
- .lh-devtools.lh-root img {
280
- /* Override devtools default 'min-width: 0' so svg without size in a flexbox isn't collapsed. */
281
- min-width: auto;
282
- }
283
- .lh-devtools .lh-container {
284
- overflow-y: scroll;
285
- height: calc(100% - var(--topbar-height));
286
- }
287
- @media print {
288
- .lh-devtools .lh-container {
289
- overflow: unset;
290
- }
291
- }
292
- .lh-devtools .lh-sticky-header {
293
- /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container` */
294
- top: 0;
295
- }
296
-
297
- @keyframes fadeIn {
298
- 0% { opacity: 0;}
299
- 100% { opacity: 0.6;}
300
- }
301
-
302
- .lh-root *, .lh-root *::before, .lh-root *::after {
303
- box-sizing: border-box;
304
- -webkit-font-smoothing: antialiased;
305
- }
306
-
307
- .lh-root {
308
- font-family: var(--report-font-family);
309
- font-size: var(--report-font-size);
310
- margin: 0;
311
- line-height: var(--report-line-height);
312
- background: var(--report-background-color);
313
- scroll-behavior: smooth;
314
- color: var(--report-text-color);
315
- }
316
-
317
- .lh-root :focus {
318
- outline: -webkit-focus-ring-color auto 3px;
319
- }
320
- .lh-root summary:focus {
321
- outline: none;
322
- box-shadow: 0 0 0 1px hsl(217, 89%, 61%);
323
- }
324
-
325
- .lh-root [hidden] {
326
- display: none !important;
327
- }
328
-
329
- .lh-root pre {
330
- margin: 0;
331
- }
332
-
333
- .lh-root details > summary {
334
- cursor: pointer;
335
- }
336
-
337
- .lh-container {
338
- /*
339
- Text wrapping in the report is so much FUN!
340
- We have a `word-break: break-word;` globally here to prevent a few common scenarios, namely
341
- long non-breakable text (usually URLs) found in:
342
- 1. The footer
343
- 2. .lh-node (outerHTML)
344
- 3. .lh-code
345
-
346
- With that sorted, the next challenge is appropriate column sizing and text wrapping inside our
347
- .lh-details tables. Even more fun.
348
- * We don't want table headers ("Potential Savings (ms)") to wrap or their column values, but
349
- we'd be happy for the URL column to wrap if the URLs are particularly long.
350
- * We want the narrow columns to remain narrow, providing the most column width for URL
351
- * We don't want the table to extend past 100% width.
352
- * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters,
353
- but they do not get any overflow:ellipsis treatment.
354
- */
355
- word-break: break-word;
356
- }
357
-
358
- .lh-audit-group a,
359
- .lh-category-header__description a,
360
- .lh-audit__description a,
361
- .lh-warnings a,
362
- .lh-footer a,
363
- .lh-table-column--link a {
364
- color: var(--color-informative);
365
- }
366
-
367
- .lh-audit__description, .lh-audit__stackpack {
368
- --inner-audit-padding-right: var(--stackpack-padding-horizontal);
369
- padding-left: var(--audit-description-padding-left);
370
- padding-right: var(--inner-audit-padding-right);
371
- padding-top: 8px;
372
- padding-bottom: 8px;
373
- }
374
-
375
- .lh-details {
376
- font-size: var(--report-font-size);
377
- margin-top: var(--default-padding);
378
- margin-bottom: var(--default-padding);
379
- margin-left: var(--audit-description-padding-left);
380
- /* whatever the .lh-details side margins are */
381
- width: 100%;
382
- }
383
-
384
- .lh-audit__stackpack {
385
- display: flex;
386
- align-items: center;
387
- }
388
-
389
- .lh-audit__stackpack__img {
390
- max-width: 50px;
391
- margin-right: var(--default-padding)
392
- }
393
-
394
- /* Report header */
395
-
396
- .lh-report-icon {
397
- display: flex;
398
- align-items: center;
399
- padding: 10px 12px;
400
- cursor: pointer;
401
- }
402
- .lh-report-icon[disabled] {
403
- opacity: 0.3;
404
- pointer-events: none;
405
- }
406
-
407
- .lh-report-icon::before {
408
- content: "";
409
- margin-right: 5px;
410
- background-repeat: no-repeat;
411
- width: var(--report-icon-size);
412
- height: var(--report-icon-size);
413
- opacity: 0.7;
414
- }
415
- .lh-report-icon:hover::before {
416
- opacity: 1;
417
- }
418
- .lh-dark .lh-report-icon::before {
419
- filter: invert(1);
420
- }
421
- .lh-report-icon--print::before {
422
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/><path fill="none" d="M0 0h24v24H0z"/></svg>');
423
- }
424
- .lh-report-icon--copy::before {
425
- background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>');
426
- }
427
- .lh-report-icon--open::before {
428
- background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 4H5c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h4v-2H5V8h14v10h-4v2h4c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2zm-7 6l-4 4h3v6h2v-6h3l-4-4z"/></svg>');
429
- }
430
- .lh-report-icon--download::before {
431
- background-image: url('data:image/svg+xml;utf8,<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>');
432
- }
433
- .lh-report-icon--dark::before {
434
- background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 100 125"><path d="M50 23.587c-16.27 0-22.799 12.574-22.799 21.417 0 12.917 10.117 22.451 12.436 32.471h20.726c2.32-10.02 12.436-19.554 12.436-32.471 0-8.843-6.528-21.417-22.799-21.417zM39.637 87.161c0 3.001 1.18 4.181 4.181 4.181h.426l.41 1.231C45.278 94.449 46.042 95 48.019 95h3.963c1.978 0 2.74-.551 3.365-2.427l.409-1.231h.427c3.002 0 4.18-1.18 4.18-4.181V80.91H39.637v6.251zM50 18.265c1.26 0 2.072-.814 2.072-2.073v-9.12C52.072 5.813 51.26 5 50 5c-1.259 0-2.072.813-2.072 2.073v9.12c0 1.259.813 2.072 2.072 2.072zM68.313 23.727c.994.774 2.135.634 2.91-.357l5.614-7.187c.776-.992.636-2.135-.356-2.909-.992-.776-2.135-.636-2.91.357l-5.613 7.186c-.778.993-.636 2.135.355 2.91zM91.157 36.373c-.306-1.222-1.291-1.815-2.513-1.51l-8.85 2.207c-1.222.305-1.814 1.29-1.51 2.512.305 1.223 1.291 1.814 2.513 1.51l8.849-2.206c1.223-.305 1.816-1.291 1.511-2.513zM86.757 60.48l-8.331-3.709c-1.15-.512-2.225-.099-2.736 1.052-.512 1.151-.1 2.224 1.051 2.737l8.33 3.707c1.15.514 2.225.101 2.736-1.05.513-1.149.1-2.223-1.05-2.737zM28.779 23.37c.775.992 1.917 1.131 2.909.357.992-.776 1.132-1.917.357-2.91l-5.615-7.186c-.775-.992-1.917-1.132-2.909-.357s-1.131 1.917-.356 2.909l5.614 7.187zM21.715 39.583c.305-1.223-.288-2.208-1.51-2.513l-8.849-2.207c-1.222-.303-2.208.289-2.513 1.511-.303 1.222.288 2.207 1.511 2.512l8.848 2.206c1.222.304 2.208-.287 2.513-1.509zM21.575 56.771l-8.331 3.711c-1.151.511-1.563 1.586-1.05 2.735.511 1.151 1.586 1.563 2.736 1.052l8.331-3.711c1.151-.511 1.563-1.586 1.05-2.735-.512-1.15-1.585-1.562-2.736-1.052z"/></svg>');
435
- }
436
- .lh-report-icon--treemap::before {
437
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="black"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>');
438
- }
439
-
440
- .lh-buttons {
441
- display: flex;
442
- flex-wrap: wrap;
443
- }
444
- .lh-button {
445
- margin: 10px;
446
- height: 30px;
447
- border: 1px solid var(--color-gray-600);
448
- border-radius: 4px;
449
- font-weight: bold;
450
- color: rgb(26, 115, 232);
451
- background-color: var(--report-background-color);
452
- }
453
- .lh-dark .lh-button {
454
- color: var(--color-blue-200);
455
- }
456
-
457
- /* Node */
458
- .lh-node__snippet {
459
- font-family: var(--report-font-family-monospace);
460
- color: var(--snippet-color);
461
- font-size: var(--report-monospace-font-size);
462
- line-height: 20px;
463
- }
464
-
465
- /* Score */
466
-
467
- .lh-audit__score-icon {
468
- width: var(--score-icon-size);
469
- height: var(--score-icon-size);
470
- margin: var(--score-icon-margin);
471
- }
472
-
473
- .lh-audit--pass .lh-audit__display-text {
474
- color: var(--color-pass-secondary);
475
- }
476
- .lh-audit--pass .lh-audit__score-icon,
477
- .lh-scorescale-range--pass::before {
478
- border-radius: 100%;
479
- background: var(--color-pass);
480
- }
481
-
482
- .lh-audit--average .lh-audit__display-text {
483
- color: var(--color-average-secondary);
484
- }
485
- .lh-audit--average .lh-audit__score-icon,
486
- .lh-scorescale-range--average::before {
487
- background: var(--color-average);
488
- width: var(--icon-square-size);
489
- height: var(--icon-square-size);
490
- }
491
-
492
- .lh-audit--fail .lh-audit__display-text {
493
- color: var(--color-fail-secondary);
494
- }
495
- .lh-audit--fail .lh-audit__score-icon,
496
- .lh-audit--error .lh-audit__score-icon,
497
- .lh-scorescale-range--fail::before {
498
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
499
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
500
- border-bottom: var(--score-icon-size) solid var(--color-fail);
501
- }
502
-
503
- .lh-audit--manual .lh-audit__display-text,
504
- .lh-audit--notapplicable .lh-audit__display-text {
505
- color: var(--color-gray-600);
506
- }
507
- .lh-audit--manual .lh-audit__score-icon,
508
- .lh-audit--notapplicable .lh-audit__score-icon {
509
- border: 2px solid var(--color-gray-400);
510
- border-radius: 100%;
511
- background: none;
512
- }
513
-
514
- .lh-audit--informative .lh-audit__display-text {
515
- color: var(--color-gray-600);
516
- }
517
-
518
- .lh-audit--informative .lh-audit__score-icon {
519
- border: 2px solid var(--color-gray-400);
520
- border-radius: 100%;
521
- }
522
-
523
- .lh-audit__description,
524
- .lh-audit__stackpack {
525
- color: var(--report-text-color-secondary);
526
- }
527
- .lh-audit__adorn {
528
- border: 1px solid slategray;
529
- border-radius: 3px;
530
- margin: 0 3px;
531
- padding: 0 2px;
532
- line-height: 1.1;
533
- display: inline-block;
534
- font-size: 90%;
535
- }
536
-
537
- .lh-category-header__description {
538
- font-size: var(--report-font-size);
539
- text-align: center;
540
- margin: 0px auto;
541
- max-width: 400px;
542
- }
543
-
544
-
545
- .lh-audit__display-text,
546
- .lh-load-opportunity__sparkline,
547
- .lh-chevron-container {
548
- margin: 0 var(--audit-margin-horizontal);
549
- }
550
- .lh-chevron-container {
551
- margin-right: 0;
552
- }
553
-
554
- .lh-audit__title-and-text {
555
- flex: 1;
556
- }
557
-
558
- .lh-audit__title-and-text code {
559
- color: var(--snippet-color);
560
- font-size: var(--report-monospace-font-size);
561
- }
562
-
563
- /* Prepend display text with em dash separator. But not in Opportunities. */
564
- .lh-audit__display-text:not(:empty):before {
565
- content: '—';
566
- margin-right: var(--audit-margin-horizontal);
567
- }
568
- .lh-audit-group.lh-audit-group--load-opportunities .lh-audit__display-text:not(:empty):before {
569
- display: none;
570
- }
571
-
572
- /* Expandable Details (Audit Groups, Audits) */
573
- .lh-audit__header {
574
- display: flex;
575
- align-items: center;
576
- font-weight: 500;
577
- padding: var(--audit-padding-vertical) 0;
578
- }
579
-
580
- .lh-audit--load-opportunity .lh-audit__header {
581
- display: block;
582
- }
583
-
584
-
585
- .lh-metricfilter {
586
- text-align: right;
587
- margin-top: var(--default-padding);
588
- }
589
-
590
- .lh-metricfilter__radio {
591
- position: absolute;
592
- left: -9999px;
593
- }
594
- .lh-metricfilter input[type='radio']:focus-visible + label {
595
- outline: -webkit-focus-ring-color auto 1px;
596
- }
597
-
598
- .lh-metricfilter__label {
599
- border: solid 1px var(--color-gray-400);
600
- align-items: center;
601
- justify-content: center;
602
- padding: 2px 5px;
603
- width: 50%;
604
- height: 28px;
605
- cursor: pointer;
606
- font-size: 90%;
607
- }
608
-
609
- .lh-metricfilter__label:first-of-type {
610
- border-top-left-radius: 5px;
611
- border-bottom-left-radius: 5px;
612
- margin-left: 5px;
613
- }
614
- .lh-metricfilter__label:last-of-type {
615
- border-top-right-radius: 5px;
616
- border-bottom-right-radius: 5px;
617
- }
618
-
619
- .lh-metricfilter__label--active {
620
- background: var(--color-blue-A700);
621
- color: var(--color-white);
622
- }
623
- /* Give the 'All' choice a more muted display */
624
- .lh-metricfilter__label--active[for="metric-All"] {
625
- background-color: var(--color-blue-200) !important;
626
- color: black !important;
627
- }
628
-
629
- /* If audits are filtered, hide the itemcount for Passed Audits… */
630
- .lh-category--filtered .lh-audit-group .lh-audit-group__itemcount {
631
- display: none;
632
- }
633
-
634
-
635
- .lh-audit__header:hover {
636
- background-color: var(--color-hover);
637
- }
638
-
639
- /* We want to hide the browser's default arrow marker on summary elements. Admittedly, it's complicated. */
640
- .lh-audit-group > summary,
641
- .lh-expandable-details > summary {
642
- /* Blink 89+ and Firefox will hide the arrow when display is changed from (new) default of `list-item` to block. https://chromestatus.com/feature/6730096436051968*/
643
- display: block;
644
- }
645
- /* Safari and Blink <=88 require using the -webkit-details-marker selector */
646
- .lh-audit-group > summary::-webkit-details-marker,
647
- .lh-expandable-details > summary::-webkit-details-marker {
648
- display: none;
649
- }
650
-
651
- /* Perf Metric */
652
-
653
- .lh-metrics-container {
654
- display: grid;
655
- grid-template-rows: 1fr 1fr 1fr;
656
- grid-auto-flow: column;
657
- grid-column-gap: 24px;
658
- }
659
-
660
- .lh-metric {
661
- border-top: 1px solid var(--report-border-color-secondary);
662
- }
663
-
664
- @media screen and (min-width: 640px) {
665
- .lh-metric:nth-child(3n+3) {
666
- border-bottom: 1px solid var(--report-border-color-secondary);
667
- }
668
- }
669
-
670
- @media screen and (max-width: 640px) {
671
- .lh-metrics-container {
672
- display: block;
673
- }
674
-
675
- .lh-metric:nth-last-child(-n+1) {
676
- border-bottom: 1px solid var(--report-border-color-secondary);
677
- }
678
- }
679
-
680
- .lh-metric__innerwrap {
681
- display: grid;
682
- /**
683
- * Icon -- Metric Name
684
- * -- Metric Value
685
- */
686
- grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 1fr;
687
- align-items: center;
688
- padding: 10px 0;
689
- }
690
-
691
- .lh-metric__details {
692
- order: -1;
693
- }
694
-
695
- .lh-metric__title {
696
- flex: 1;
697
- font-weight: 500;
698
- }
699
-
700
- .lh-metrics__disclaimer {
701
- color: var(--color-gray-600);
702
- margin: var(--section-padding-vertical) 0;
703
- }
704
-
705
- .lh-calclink {
706
- padding-left: calc(1ex / 3);
707
- }
708
-
709
- .lh-metric__description {
710
- display: none;
711
- grid-column-start: 2;
712
- grid-column-end: 4;
713
- color: var(--report-text-color-secondary);
714
- }
715
-
716
- .lh-metric__value {
717
- font-size: var(--metric-value-font-size);
718
- margin: calc(var(--default-padding) / 2) 0;
719
- white-space: nowrap; /* No wrapping between metric value and the icon */
720
- font-weight: 500;
721
- grid-column-start: 2;
722
- }
723
-
724
- /* Change the grid to 3 columns for narrow viewport. */
725
- @media screen and (max-width: 535px) {
726
- .lh-metric__innerwrap {
727
- /**
728
- * Icon -- Metric Name -- Metric Value
729
- */
730
- grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;
731
- }
732
- .lh-metric__value {
733
- justify-self: end;
734
- grid-column-start: unset;
735
- }
736
- }
737
-
738
- /* No-JS toggle switch */
739
- /* Keep this selector sync'd w/ `magicSelector` in report-ui-features-test.js */
740
- .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {
741
- display: block;
742
- }
743
-
744
- .lh-metrics-toggle__input {
745
- cursor: pointer;
746
- opacity: 0;
747
- position: absolute;
748
- right: 0;
749
- width: 74px;
750
- height: 28px;
751
- top: -3px;
752
- }
753
- .lh-metrics-toggle__label {
754
- display: flex;
755
- background-color: #eee;
756
- border-radius: 20px;
757
- overflow: hidden;
758
- position: absolute;
759
- right: 0;
760
- top: -3px;
761
- pointer-events: none;
762
- }
763
- .lh-metrics-toggle__input:focus + label {
764
- outline: -webkit-focus-ring-color auto 3px;
765
- }
766
- .lh-metrics-toggle__icon {
767
- display: flex;
768
- align-items: center;
769
- justify-content: center;
770
- padding: 2px 5px;
771
- width: 50%;
772
- height: 28px;
773
- }
774
- .lh-metrics-toggle__input:not(:checked) + label .lh-metrics-toggle__icon--less,
775
- .lh-metrics-toggle__input:checked + label .lh-metrics-toggle__icon--more {
776
- background-color: var(--color-blue-A700);
777
- --metric-toggle-lines-fill: var(--color-white);
778
- }
779
- .lh-metrics-toggle__lines {
780
- fill: var(--metric-toggle-lines-fill);
781
- }
782
-
783
- .lh-metrics-toggle__label {
784
- background-color: var(--metrics-toggle-background-color);
785
- }
786
-
787
- .lh-metrics-toggle__label .lh-metrics-toggle__icon--less {
788
- padding-left: 8px;
789
- }
790
- .lh-metrics-toggle__label .lh-metrics-toggle__icon--more {
791
- padding-right: 8px;
792
- }
793
-
794
- /* Pushes the metric description toggle button to the right. */
795
- .lh-audit-group--metrics .lh-audit-group__header {
796
- display: flex;
797
- }
798
- .lh-audit-group--metrics .lh-audit-group__header span.lh-audit-group__title {
799
- flex: 1;
800
- }
801
-
802
- .lh-metric__icon,
803
- .lh-scorescale-range::before {
804
- content: '';
805
- width: var(--score-icon-size);
806
- height: var(--score-icon-size);
807
- display: inline-block;
808
- margin: var(--score-icon-margin);
809
- }
810
-
811
- .lh-metric--pass .lh-metric__value {
812
- color: var(--color-pass-secondary);
813
- }
814
- .lh-metric--pass .lh-metric__icon {
815
- border-radius: 100%;
816
- background: var(--color-pass);
817
- }
818
-
819
- .lh-metric--average .lh-metric__value {
820
- color: var(--color-average-secondary);
821
- }
822
- .lh-metric--average .lh-metric__icon {
823
- background: var(--color-average);
824
- width: var(--icon-square-size);
825
- height: var(--icon-square-size);
826
- }
827
-
828
- .lh-metric--fail .lh-metric__value {
829
- color: var(--color-fail-secondary);
830
- }
831
- .lh-metric--fail .lh-metric__icon,
832
- .lh-metric--error .lh-metric__icon {
833
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
834
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
835
- border-bottom: var(--score-icon-size) solid var(--color-fail);
836
- }
837
-
838
- .lh-metric--error .lh-metric__value,
839
- .lh-metric--error .lh-metric__description {
840
- color: var(--color-fail-secondary);
841
- }
842
-
843
- /* Perf load opportunity */
844
-
845
- .lh-load-opportunity__cols {
846
- display: flex;
847
- align-items: flex-start;
848
- }
849
-
850
- .lh-load-opportunity__header .lh-load-opportunity__col {
851
- color: var(--color-gray-600);
852
- display: unset;
853
- line-height: calc(2.3 * var(--report-font-size));
854
- }
855
-
856
- .lh-load-opportunity__col {
857
- display: flex;
858
- }
859
-
860
- .lh-load-opportunity__col--one {
861
- flex: 5;
862
- align-items: center;
863
- margin-right: 2px;
864
- }
865
- .lh-load-opportunity__col--two {
866
- flex: 4;
867
- text-align: right;
868
- }
869
-
870
- .lh-audit--load-opportunity .lh-audit__display-text {
871
- text-align: right;
872
- flex: 0 0 calc(3 * var(--report-font-size));
873
- }
874
-
875
-
876
- /* Sparkline */
877
-
878
- .lh-load-opportunity__sparkline {
879
- flex: 1;
880
- margin-top: calc((var(--report-line-height) - var(--sparkline-height)) / 2);
881
- }
882
-
883
- .lh-sparkline {
884
- height: var(--sparkline-height);
885
- width: 100%;
886
- }
887
-
888
- .lh-sparkline__bar {
889
- height: 100%;
890
- float: right;
891
- }
892
-
893
- .lh-audit--pass .lh-sparkline__bar {
894
- background: var(--color-pass);
895
- }
896
-
897
- .lh-audit--average .lh-sparkline__bar {
898
- background: var(--color-average);
899
- }
900
-
901
- .lh-audit--fail .lh-sparkline__bar {
902
- background: var(--color-fail);
903
- }
904
-
905
- /* Filmstrip */
906
-
907
- .lh-filmstrip-container {
908
- /* smaller gap between metrics and filmstrip */
909
- margin: -8px auto 0 auto;
910
- }
911
-
912
- .lh-filmstrip {
913
- display: flex;
914
- flex-direction: row;
915
- justify-content: space-between;
916
- padding-bottom: var(--default-padding);
917
- }
918
-
919
- .lh-filmstrip__frame {
920
- text-align: right;
921
- position: relative;
922
- }
923
-
924
- .lh-filmstrip__thumbnail {
925
- border: 1px solid var(--report-border-color-secondary);
926
- max-height: 100px;
927
- max-width: 60px;
928
- }
929
-
930
- @media screen and (max-width: 750px) {
931
- .lh-filmstrip {
932
- flex-wrap: wrap;
933
- }
934
- .lh-filmstrip__frame {
935
- width: 20%;
936
- margin-bottom: 5px;
937
- }
938
- .lh-filmstrip__thumbnail {
939
- display: block;
940
- margin: auto;
941
- }
942
- }
943
-
944
- /* Audit */
945
-
946
- .lh-audit {
947
- border-bottom: 1px solid var(--report-border-color-secondary);
948
- }
949
-
950
- /* Apply border-top to just the first audit. */
951
- .lh-audit {
952
- border-top: 1px solid var(--report-border-color-secondary);
953
- }
954
- .lh-audit ~ .lh-audit {
955
- border-top: none;
956
- }
957
-
958
-
959
- .lh-audit--error .lh-audit__display-text {
960
- color: var(--color-fail);
961
- }
962
-
963
- /* Audit Group */
964
-
965
- .lh-audit-group {
966
- margin-bottom: var(--audit-group-margin-bottom);
967
- position: relative;
968
- }
969
-
970
- .lh-audit-group__header::before {
971
- /* By default, groups don't get an icon */
972
- content: none;
973
- width: var(--pwa-icon-size);
974
- height: var(--pwa-icon-size);
975
- margin: var(--pwa-icon-margin);
976
- display: inline-block;
977
- vertical-align: middle;
978
- }
979
-
980
- /* Style the "over budget" columns red. */
981
- .lh-audit-group--budgets #performance-budget tbody tr td:nth-child(4),
982
- .lh-audit-group--budgets #performance-budget tbody tr td:nth-child(5),
983
- .lh-audit-group--budgets #timing-budget tbody tr td:nth-child(3) {
984
- color: var(--color-red-700);
985
- }
986
-
987
- /* Align the "over budget request count" text to be close to the "over budget bytes" column. */
988
- .lh-audit-group--budgets .lh-table tbody tr td:nth-child(4){
989
- text-align: right;
990
- }
991
-
992
- .lh-audit-group--budgets .lh-table {
993
- width: 100%;
994
- margin: 16px 0px 16px 0px;
995
- }
996
-
997
- .lh-audit-group--pwa-installable .lh-audit-group__header::before {
998
- content: '';
999
- background-image: var(--pwa-installable-gray-url);
1000
- }
1001
- .lh-audit-group--pwa-optimized .lh-audit-group__header::before {
1002
- content: '';
1003
- background-image: var(--pwa-optimized-gray-url);
1004
- }
1005
- .lh-audit-group--pwa-installable.lh-badged .lh-audit-group__header::before {
1006
- background-image: var(--pwa-installable-color-url);
1007
- }
1008
- .lh-audit-group--pwa-optimized.lh-badged .lh-audit-group__header::before {
1009
- background-image: var(--pwa-optimized-color-url);
1010
- }
1011
-
1012
- .lh-audit-group--metrics .lh-audit-group__summary {
1013
- margin-top: 0;
1014
- margin-bottom: 0;
1015
- }
1016
-
1017
- .lh-audit-group__summary {
1018
- display: flex;
1019
- justify-content: space-between;
1020
- margin-top: calc(var(--category-padding) * 1.5);
1021
- margin-bottom: var(--category-padding);
1022
- }
1023
-
1024
- .lh-audit-group__itemcount {
1025
- color: var(--color-gray-600);
1026
- font-weight: bold;
1027
- }
1028
- .lh-audit-group__header .lh-chevron {
1029
- margin-top: calc((var(--report-line-height) - 5px) / 2);
1030
- }
1031
-
1032
- .lh-audit-group__header {
1033
- font-size: var(--report-font-size);
1034
- margin: 0 0 var(--audit-group-padding-vertical);
1035
- /* When the header takes 100% width, the chevron becomes small. */
1036
- max-width: calc(100% - var(--chevron-size));
1037
- }
1038
- /* max-width makes the metric toggle not flush. metrics doesn't have a chevron so unset. */
1039
- .lh-audit-group--metrics .lh-audit-group__header {
1040
- max-width: unset;
1041
- }
1042
-
1043
- .lh-audit-group__header span.lh-audit-group__title {
1044
- font-weight: bold;
1045
- }
1046
-
1047
- .lh-audit-group__header span.lh-audit-group__itemcount {
1048
- font-weight: bold;
1049
- color: var(--color-gray-600);
1050
- }
1051
-
1052
- .lh-audit-group__header span.lh-audit-group__description {
1053
- font-weight: 500;
1054
- color: var(--color-gray-600);
1055
- }
1056
- .lh-audit-group__header span.lh-audit-group__description::before {
1057
- content: '—';
1058
- margin: 0px var(--audit-margin-horizontal);
1059
- }
1060
-
1061
- .lh-clump > .lh-audit-group__header,
1062
- .lh-audit-group--diagnostics .lh-audit-group__header,
1063
- .lh-audit-group--load-opportunities .lh-audit-group__header,
1064
- .lh-audit-group--metrics .lh-audit-group__header,
1065
- .lh-audit-group--pwa-installable .lh-audit-group__header,
1066
- .lh-audit-group--pwa-optimized .lh-audit-group__header {
1067
- margin-top: var(--audit-group-padding-vertical);
1068
- }
1069
-
1070
- .lh-audit-explanation {
1071
- margin: var(--audit-padding-vertical) 0 calc(var(--audit-padding-vertical) / 2) var(--audit-margin-horizontal);
1072
- line-height: var(--audit-explanation-line-height);
1073
- display: inline-block;
1074
- }
1075
-
1076
- .lh-audit--fail .lh-audit-explanation {
1077
- color: var(--color-fail);
1078
- }
1079
-
1080
- /* Report */
1081
- .lh-list > div:not(:last-child) {
1082
- padding-bottom: 20px;
1083
- }
1084
-
1085
- .lh-header-container {
1086
- display: block;
1087
- margin: 0 auto;
1088
- position: relative;
1089
- word-wrap: break-word;
1090
- }
1091
-
1092
- .lh-report {
1093
- min-width: var(--report-min-width);
1094
- }
1095
-
1096
- .lh-exception {
1097
- font-size: large;
1098
- }
1099
-
1100
- .lh-code {
1101
- white-space: normal;
1102
- margin-top: 0;
1103
- font-size: var(--report-monospace-font-size);
1104
- }
1105
-
1106
- .lh-warnings {
1107
- --item-margin: calc(var(--report-line-height) / 6);
1108
- color: var(--color-average);
1109
- margin: var(--audit-padding-vertical) 0;
1110
- padding: calc(var(--audit-padding-vertical) / 2) calc(var(--audit-description-padding-left));
1111
- }
1112
- .lh-warnings span {
1113
- font-weight: bold;
1114
- }
1115
-
1116
- .lh-warnings--toplevel {
1117
- --item-margin: calc(var(--header-line-height) / 4);
1118
- color: var(--toplevel-warning-text-color);
1119
- margin-left: auto;
1120
- margin-right: auto;
1121
- max-width: calc(var(--report-width) - var(--category-padding) * 2);
1122
- background-color: var(--toplevel-warning-background-color);
1123
- padding: var(--toplevel-warning-padding);
1124
- border-radius: 8px;
1125
- }
1126
-
1127
- .lh-warnings__msg {
1128
- color: var(--toplevel-warning-message-text-color);
1129
- margin: 0;
1130
- }
1131
-
1132
- .lh-warnings ul {
1133
- margin: 0;
1134
- }
1135
- .lh-warnings li {
1136
- margin: var(--item-margin) 0;
1137
- }
1138
- .lh-warnings li:last-of-type {
1139
- margin-bottom: 0;
1140
- }
1141
-
1142
- .lh-scores-header {
1143
- display: flex;
1144
- flex-wrap: wrap;
1145
- justify-content: center;
1146
- }
1147
- .lh-scores-header__solo {
1148
- padding: 0;
1149
- border: 0;
1150
- }
1151
-
1152
- /* Gauge */
1153
-
1154
- .lh-gauge__wrapper--pass {
1155
- color: var(--color-pass);
1156
- fill: var(--color-pass);
1157
- stroke: var(--color-pass);
1158
- }
1159
-
1160
- .lh-gauge__wrapper--average {
1161
- color: var(--color-average);
1162
- fill: var(--color-average);
1163
- stroke: var(--color-average);
1164
- }
1165
-
1166
- .lh-gauge__wrapper--fail {
1167
- color: var(--color-fail);
1168
- fill: var(--color-fail);
1169
- stroke: var(--color-fail);
1170
- }
1171
-
1172
- .lh-gauge__wrapper--not-applicable {
1173
- color: var(--color-not-applicable);
1174
- fill: var(--color-not-applicable);
1175
- stroke: var(--color-not-applicable);
1176
- }
1177
-
1178
- .lh-fraction__wrapper .lh-fraction__content::before {
1179
- content: '';
1180
- height: var(--score-icon-size);
1181
- width: var(--score-icon-size);
1182
- margin: var(--score-icon-margin);
1183
- display: inline-block;
1184
- }
1185
- .lh-fraction__wrapper--pass .lh-fraction__content {
1186
- color: var(--color-pass);
1187
- }
1188
- .lh-fraction__wrapper--pass .lh-fraction__background {
1189
- background-color: var(--color-pass);
1190
- }
1191
- .lh-fraction__wrapper--pass .lh-fraction__content::before {
1192
- background-color: var(--color-pass);
1193
- border-radius: 50%;
1194
- }
1195
- .lh-fraction__wrapper--average .lh-fraction__content {
1196
- color: var(--color-average);
1197
- }
1198
- .lh-fraction__wrapper--average .lh-fraction__background {
1199
- background-color: var(--color-average);
1200
- }
1201
- .lh-fraction__wrapper--average .lh-fraction__content::before {
1202
- background-color: var(--color-average);
1203
- }
1204
- .lh-fraction__wrapper--fail .lh-fraction__content {
1205
- color: var(--color-fail);
1206
- }
1207
- .lh-fraction__wrapper--fail .lh-fraction__background {
1208
- background-color: var(--color-fail);
1209
- }
1210
- .lh-fraction__wrapper--fail .lh-fraction__content::before {
1211
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
1212
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
1213
- border-bottom: var(--score-icon-size) solid var(--color-fail);
1214
- }
1215
- .lh-fraction__wrapper--null .lh-fraction__content {
1216
- color: var(--color-gray-700);
1217
- }
1218
- .lh-fraction__wrapper--null .lh-fraction__background {
1219
- background-color: var(--color-gray-700);
1220
- }
1221
- .lh-fraction__wrapper--null .lh-fraction__content::before {
1222
- border-radius: 50%;
1223
- border: 2px solid var(--color-gray-700);
1224
- }
1225
-
1226
- .lh-fraction__background {
1227
- position: absolute;
1228
- height: 100%;
1229
- width: 100%;
1230
- border-radius: calc(var(--gauge-circle-size) / 2);
1231
- opacity: 0.1;
1232
- z-index: -1;
1233
- }
1234
-
1235
- .lh-fraction__content-wrapper {
1236
- height: var(--gauge-circle-size);
1237
- display: flex;
1238
- align-items: center;
1239
- }
1240
-
1241
- .lh-fraction__content {
1242
- display: flex;
1243
- position: relative;
1244
- align-items: center;
1245
- justify-content: center;
1246
- font-size: var(--gauge-label-font-size);
1247
- width: max-content;
1248
- padding: 1em;
1249
- min-width: 6em;
1250
- }
1251
-
1252
- .lh-gauge {
1253
- stroke-linecap: round;
1254
- width: var(--gauge-circle-size);
1255
- height: var(--gauge-circle-size);
1256
- }
1257
-
1258
- .lh-category .lh-gauge {
1259
- --gauge-circle-size: var(--gauge-circle-size-big);
1260
- }
1261
-
1262
- .lh-gauge-base {
1263
- opacity: 0.1;
1264
- }
1265
-
1266
- .lh-gauge-arc {
1267
- fill: none;
1268
- transform-origin: 50% 50%;
1269
- animation: load-gauge var(--transition-length) ease forwards;
1270
- animation-delay: 250ms;
1271
- }
1272
-
1273
- .lh-gauge__svg-wrapper {
1274
- position: relative;
1275
- height: var(--gauge-circle-size);
1276
- }
1277
- .lh-category .lh-gauge__svg-wrapper {
1278
- --gauge-circle-size: var(--gauge-circle-size-big);
1279
- }
1280
- .lh-category .lh-fraction__wrapper {
1281
- --gauge-circle-size: var(--gauge-circle-size-big);
1282
- --score-icon-size: var(--score-icon-size-big)
1283
- }
1284
-
1285
- /* The plugin badge overlay */
1286
- .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {
1287
- width: var(--plugin-badge-size);
1288
- height: var(--plugin-badge-size);
1289
- background-color: var(--plugin-badge-background-color);
1290
- background-image: var(--plugin-icon-url);
1291
- background-repeat: no-repeat;
1292
- background-size: var(--plugin-icon-size);
1293
- background-position: 58% 50%;
1294
- content: "";
1295
- position: absolute;
1296
- right: -6px;
1297
- bottom: 0px;
1298
- display: block;
1299
- z-index: 100;
1300
- box-shadow: 0 0 4px rgba(0,0,0,.2);
1301
- border-radius: 25%;
1302
- }
1303
- .lh-category .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {
1304
- width: var(--plugin-badge-size-big);
1305
- height: var(--plugin-badge-size-big);
1306
- }
1307
-
1308
- @keyframes load-gauge {
1309
- from { stroke-dasharray: 0 352; }
1310
- }
1311
-
1312
- .lh-gauge__percentage {
1313
- width: 100%;
1314
- height: var(--gauge-circle-size);
1315
- position: absolute;
1316
- font-family: var(--report-font-family-monospace);
1317
- font-size: calc(var(--gauge-circle-size) * 0.34 + 1.3px);
1318
- line-height: 0;
1319
- text-align: center;
1320
- top: calc(var(--score-container-padding) + var(--gauge-circle-size) / 2);
1321
- }
1322
-
1323
- .lh-category .lh-gauge__percentage {
1324
- --gauge-circle-size: var(--gauge-circle-size-big);
1325
- --gauge-percentage-font-size: var(--gauge-percentage-font-size-big);
1326
- }
1327
-
1328
- .lh-gauge__wrapper,
1329
- .lh-fraction__wrapper {
1330
- position: relative;
1331
- display: flex;
1332
- align-items: center;
1333
- flex-direction: column;
1334
- text-decoration: none;
1335
- padding: var(--score-container-padding);
1336
-
1337
- --transition-length: 1s;
1338
-
1339
- /* Contain the layout style paint & layers during animation*/
1340
- contain: content;
1341
- will-change: opacity; /* Only using for layer promotion */
1342
- }
1343
-
1344
- .lh-gauge__label,
1345
- .lh-fraction__label {
1346
- font-size: var(--gauge-label-font-size);
1347
- line-height: var(--gauge-label-line-height);
1348
- margin-top: 10px;
1349
- text-align: center;
1350
- color: var(--report-text-color);
1351
- }
1352
-
1353
- /* TODO(#8185) use more BEM (.lh-gauge__label--big) instead of relying on descendant selector */
1354
- .lh-category .lh-gauge__label,
1355
- .lh-category .lh-fraction__label {
1356
- --gauge-label-font-size: var(--gauge-label-font-size-big);
1357
- --gauge-label-line-height: var(--gauge-label-line-height-big);
1358
- margin-top: 14px;
1359
- }
1360
- .lh-category .lh-fraction__content {
1361
- --gauge-label-font-size: var(--gauge-label-font-size-big);
1362
- }
1363
-
1364
-
1365
- .lh-scores-header .lh-gauge__wrapper,
1366
- .lh-scores-header .lh-fraction__wrapper,
1367
- .lh-scores-header .lh-gauge--pwa__wrapper,
1368
- .lh-sticky-header .lh-gauge__wrapper,
1369
- .lh-sticky-header .lh-fraction__wrapper,
1370
- .lh-sticky-header .lh-gauge--pwa__wrapper {
1371
- width: var(--gauge-wrapper-width);
1372
- }
1373
-
1374
- .lh-scorescale {
1375
- display: inline-flex;
1376
- margin: 12px auto 0 auto;
1377
- border: 1px solid var(--color-gray-200);
1378
- border-radius: 20px;
1379
- padding: 8px 8px;
1380
- }
1381
-
1382
- .lh-scorescale-range {
1383
- display: flex;
1384
- align-items: center;
1385
- margin: 0 12px;
1386
- font-family: var(--report-font-family-monospace);
1387
- white-space: nowrap;
1388
- }
1389
-
1390
- /* Hide category score gauages if it's a single category report */
1391
- .lh-header--solo-category .lh-scores-wrapper {
1392
- display: none;
1393
- }
1394
-
1395
-
1396
- .lh-categories {
1397
- width: 100%;
1398
- overflow: hidden;
1399
- }
1400
-
1401
- .lh-category {
1402
- padding: var(--category-padding);
1403
- max-width: var(--report-width);
1404
- margin: 0 auto;
1405
- }
1406
-
1407
- .lh-category-wrapper {
1408
- border-bottom: 1px solid var(--color-gray-200);
1409
- }
1410
-
1411
- .lh-category-wrapper:first-of-type {
1412
- border-top: 1px solid var(--color-gray-200);
1413
- }
1414
-
1415
- /* section hash link jump should preserve fixed header
1416
- https://css-tricks.com/hash-tag-links-padding/
1417
- */
1418
- .lh-category > .lh-permalink {
1419
- --sticky-header-height: calc(var(--gauge-circle-size) + var(--score-container-padding) * 2);
1420
- --topbar-plus-header: calc(var(--topbar-height) + var(--sticky-header-height));
1421
- margin-top: calc(var(--topbar-plus-header) * -1);
1422
- padding-bottom: var(--topbar-plus-header);
1423
- display: block;
1424
- visibility: hidden;
1425
- }
1426
-
1427
- .lh-category-header {
1428
- font-size: var(--category-header-font-size);
1429
- min-height: var(--gauge-circle-size);
1430
- margin-bottom: var(--section-padding-vertical);
1431
- }
1432
-
1433
- .lh-category-header .lh-score__gauge {
1434
- max-width: 400px;
1435
- width: auto;
1436
- margin: 0px auto;
1437
- }
1438
-
1439
- .lh-category-header .lh-audit__title {
1440
- font-size: var(--category-header-font-size);
1441
- line-height: var(--header-line-height);
1442
- }
1443
-
1444
- #lh-log {
1445
- position: fixed;
1446
- background-color: #323232;
1447
- color: #fff;
1448
- min-height: 48px;
1449
- min-width: 288px;
1450
- padding: 16px 24px;
1451
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
1452
- border-radius: 2px;
1453
- margin: 12px;
1454
- font-size: 14px;
1455
- cursor: default;
1456
- transition: transform 0.3s, opacity 0.3s;
1457
- transform: translateY(100px);
1458
- opacity: 0;
1459
- bottom: 0;
1460
- left: 0;
1461
- z-index: 3;
1462
- }
1463
-
1464
- #lh-log.lh-show {
1465
- opacity: 1;
1466
- transform: translateY(0);
1467
- }
1468
-
1469
- /* 964 fits the min-width of the filmstrip */
1470
- @media screen and (max-width: 964px) {
1471
- .lh-report {
1472
- margin-left: 0;
1473
- width: 100%;
1474
- }
1475
- }
1476
-
1477
- @media print {
1478
- body {
1479
- -webkit-print-color-adjust: exact; /* print background colors */
1480
- }
1481
- .lh-container {
1482
- display: block;
1483
- }
1484
- .lh-report {
1485
- margin-left: 0;
1486
- padding-top: 0;
1487
- }
1488
- .lh-categories {
1489
- margin-top: 0;
1490
- }
1491
- }
1492
-
1493
- .lh-table {
1494
- border-collapse: collapse;
1495
- /* Can't assign padding to table, so shorten the width instead. */
1496
- width: calc(100% - var(--audit-description-padding-left));
1497
- }
1498
-
1499
- .lh-table thead th {
1500
- font-weight: normal;
1501
- color: var(--color-gray-600);
1502
- /* See text-wrapping comment on .lh-container. */
1503
- word-break: normal;
1504
- }
1505
-
1506
- .lh-row--odd {
1507
- background-color: var(--table-higlight-background-color);
1508
- }
1509
- .lh-row--hidden {
1510
- display: none;
1511
- }
1512
-
1513
- .lh-table th,
1514
- .lh-table td {
1515
- padding: 8px 6px;
1516
- }
1517
- .lh-table th:first-child {
1518
- padding-left: 0;
1519
- }
1520
- .lh-table th:last-child {
1521
- padding-right: 0;
1522
- }
1523
-
1524
- .lh-table tr {
1525
- vertical-align: middle;
1526
- }
1527
-
1528
- /* Looks unnecessary, but mostly for keeping the <th>s left-aligned */
1529
- .lh-table-column--text,
1530
- .lh-table-column--source-location,
1531
- .lh-table-column--url,
1532
- /* .lh-table-column--thumbnail, */
1533
- /* .lh-table-column--empty,*/
1534
- .lh-table-column--code,
1535
- .lh-table-column--node {
1536
- text-align: left;
1537
- }
1538
-
1539
- .lh-table-column--code {
1540
- min-width: 100px;
1541
- }
1542
-
1543
- .lh-table-column--bytes,
1544
- .lh-table-column--timespanMs,
1545
- .lh-table-column--ms,
1546
- .lh-table-column--numeric {
1547
- text-align: right;
1548
- word-break: normal;
1549
- }
1550
-
1551
-
1552
-
1553
- .lh-table .lh-table-column--thumbnail {
1554
- width: var(--image-preview-size);
1555
- padding: 0;
1556
- }
1557
-
1558
- .lh-table-column--url {
1559
- min-width: 250px;
1560
- }
1561
-
1562
- .lh-table-column--text {
1563
- min-width: 80px;
1564
- }
1565
-
1566
- /* Keep columns narrow if they follow the URL column */
1567
- /* 12% was determined to be a decent narrow width, but wide enough for column headings */
1568
- .lh-table-column--url + th.lh-table-column--bytes,
1569
- .lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--bytes,
1570
- .lh-table-column--url + .lh-table-column--ms,
1571
- .lh-table-column--url + .lh-table-column--ms + th.lh-table-column--bytes,
1572
- .lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--timespanMs {
1573
- width: 12%;
1574
- }
1575
-
1576
- .lh-text__url-host {
1577
- display: inline;
1578
- }
1579
-
1580
- .lh-text__url-host {
1581
- margin-left: calc(var(--report-font-size) / 2);
1582
- opacity: 0.6;
1583
- font-size: 90%
1584
- }
1585
-
1586
- .lh-thumbnail {
1587
- object-fit: cover;
1588
- width: var(--image-preview-size);
1589
- height: var(--image-preview-size);
1590
- display: block;
1591
- }
1592
-
1593
- .lh-unknown pre {
1594
- overflow: scroll;
1595
- border: solid 1px var(--color-gray-200);
1596
- }
1597
-
1598
- .lh-text__url > a {
1599
- color: inherit;
1600
- text-decoration: none;
1601
- }
1602
-
1603
- .lh-text__url > a:hover {
1604
- text-decoration: underline dotted #999;
1605
- }
1606
-
1607
- .lh-sub-item-row {
1608
- margin-left: 20px;
1609
- margin-bottom: 0;
1610
- color: var(--color-gray-700);
1611
- }
1612
- .lh-sub-item-row td {
1613
- padding-top: 4px;
1614
- padding-bottom: 4px;
1615
- padding-left: 20px;
1616
- }
1617
-
1618
- /* Chevron
1619
- https://codepen.io/paulirish/pen/LmzEmK
1620
- */
1621
- .lh-chevron {
1622
- --chevron-angle: 42deg;
1623
- /* Edge doesn't support transform: rotate(calc(...)), so we define it here */
1624
- --chevron-angle-right: -42deg;
1625
- width: var(--chevron-size);
1626
- height: var(--chevron-size);
1627
- margin-top: calc((var(--report-line-height) - 12px) / 2);
1628
- }
1629
-
1630
- .lh-chevron__lines {
1631
- transition: transform 0.4s;
1632
- transform: translateY(var(--report-line-height));
1633
- }
1634
- .lh-chevron__line {
1635
- stroke: var(--chevron-line-stroke);
1636
- stroke-width: var(--chevron-size);
1637
- stroke-linecap: square;
1638
- transform-origin: 50%;
1639
- transform: rotate(var(--chevron-angle));
1640
- transition: transform 300ms, stroke 300ms;
1641
- }
1642
-
1643
- .lh-audit-group > summary > .lh-audit-group__summary > .lh-chevron .lh-chevron__line-right,
1644
- .lh-audit-group[open] > summary > .lh-audit-group__summary > .lh-chevron .lh-chevron__line-left,
1645
- .lh-audit > .lh-expandable-details .lh-chevron__line-right,
1646
- .lh-audit > .lh-expandable-details[open] .lh-chevron__line-left {
1647
- transform: rotate(var(--chevron-angle-right));
1648
- }
1649
-
1650
- .lh-audit-group[open] > summary > .lh-audit-group__summary > .lh-chevron .lh-chevron__line-right,
1651
- .lh-audit > .lh-expandable-details[open] .lh-chevron__line-right {
1652
- transform: rotate(var(--chevron-angle));
1653
- }
1654
-
1655
- .lh-audit-group[open] > summary > .lh-audit-group__summary > .lh-chevron .lh-chevron__lines,
1656
- .lh-audit > .lh-expandable-details[open] .lh-chevron__lines {
1657
- transform: translateY(calc(var(--chevron-size) * -1));
1658
- }
1659
-
1660
-
1661
-
1662
- /* Tooltip */
1663
- .lh-tooltip-boundary {
1664
- position: relative;
1665
- }
1666
-
1667
- .lh-tooltip {
1668
- position: absolute;
1669
- display: none; /* Don't retain these layers when not needed */
1670
- opacity: 0;
1671
- background: #ffffff;
1672
- min-width: 246px;
1673
- max-width: 275px;
1674
- padding: 15px;
1675
- border-radius: 5px;
1676
- text-align: initial;
1677
- }
1678
- /* shrink tooltips to not be cutoff on left edge of narrow viewports
1679
- 45vw is chosen to be ~= width of the left column of metrics
1680
- */
1681
- @media screen and (max-width: 535px) {
1682
- .lh-tooltip {
1683
- min-width: 45vw;
1684
- padding: 3vw;
1685
- }
1686
- }
1687
-
1688
- .lh-tooltip-boundary:hover {
1689
- background-color: var(--color-hover);
1690
- }
1691
-
1692
- .lh-tooltip-boundary:hover .lh-tooltip {
1693
- display: block;
1694
- animation: fadeInTooltip 250ms;
1695
- animation-fill-mode: forwards;
1696
- animation-delay: 850ms;
1697
- bottom: 100%;
1698
- z-index: 1;
1699
- will-change: opacity;
1700
- right: 0;
1701
- pointer-events: none;
1702
- }
1703
-
1704
- .lh-tooltip::before {
1705
- content: "";
1706
- border: solid transparent;
1707
- border-bottom-color: #fff;
1708
- border-width: 10px;
1709
- position: absolute;
1710
- bottom: -20px;
1711
- right: 6px;
1712
- transform: rotate(180deg);
1713
- pointer-events: none;
1714
- }
1715
-
1716
- @keyframes fadeInTooltip {
1717
- 0% { opacity: 0; }
1718
- 75% { opacity: 1; }
1719
- 100% { opacity: 1; filter: drop-shadow(1px 0px 1px #aaa) drop-shadow(0px 2px 4px hsla(206, 6%, 25%, 0.15)); pointer-events: auto; }
1720
- }
1721
-
1722
- /* Element screenshot */
1723
- .lh-element-screenshot {
1724
- position: relative;
1725
- overflow: hidden;
1726
- float: left;
1727
- margin-right: 20px;
1728
- }
1729
- .lh-element-screenshot__content {
1730
- overflow: hidden;
1731
- }
1732
- .lh-element-screenshot__image {
1733
- /* Set by ElementScreenshotRenderer.installFullPageScreenshotCssVariable */
1734
- background-image: var(--element-screenshot-url);
1735
- outline: 2px solid #777;
1736
- background-color: white;
1737
- background-repeat: no-repeat;
1738
- }
1739
- .lh-element-screenshot__mask {
1740
- position: absolute;
1741
- background: #555;
1742
- opacity: 0.8;
1743
- }
1744
- .lh-element-screenshot__element-marker {
1745
- position: absolute;
1746
- outline: 2px solid var(--color-lime-400);
1747
- }
1748
- .lh-element-screenshot__overlay {
1749
- position: fixed;
1750
- top: 0;
1751
- left: 0;
1752
- right: 0;
1753
- bottom: 0;
1754
- z-index: 2000; /* .lh-topbar is 1000 */
1755
- background: var(--screenshot-overlay-background);
1756
- display: flex;
1757
- align-items: center;
1758
- justify-content: center;
1759
- cursor: zoom-out;
1760
- }
1761
-
1762
- .lh-element-screenshot__overlay .lh-element-screenshot {
1763
- margin-right: 0; /* clearing margin used in thumbnail case */
1764
- outline: 1px solid var(--color-gray-700);
1765
- }
1766
-
1767
- .lh-screenshot-overlay--enabled .lh-element-screenshot {
1768
- cursor: zoom-out;
1769
- }
1770
- .lh-screenshot-overlay--enabled .lh-node .lh-element-screenshot {
1771
- cursor: zoom-in;
1772
- }
1773
-
1774
- /*# sourceURL=report-styles.css */