lighthouse 11.7.0-dev.20240403 → 11.7.0-dev.20240404

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.
@@ -1,2138 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2017 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /*
8
- Naming convention:
9
-
10
- If a variable is used for a specific component: --{component}-{property name}-{modifier}
11
-
12
- Both {component} and {property name} should be kebab-case. If the target is the entire page,
13
- use 'report' for the component. The property name should not be abbreviated. Use the
14
- property name the variable is intended for - if it's used for multiple, a common descriptor
15
- is fine (ex: 'size' for a variable applied to 'width' and 'height'). If a variable is shared
16
- across multiple components, either create more variables or just drop the "{component}-"
17
- part of the name. Append any modifiers at the end (ex: 'big', 'dark').
18
-
19
- For colors: --color-{hue}-{intensity}
20
-
21
- {intensity} is the Material Design tag - 700, A700, etc.
22
- */
23
- .lh-vars {
24
- /* Palette using Material Design Colors
25
- * https://www.materialui.co/colors */
26
- --color-amber-50: #FFF8E1;
27
- --color-blue-200: #90CAF9;
28
- --color-blue-900: #0D47A1;
29
- --color-blue-A700: #2962FF;
30
- --color-blue-primary: #06f;
31
- --color-cyan-500: #00BCD4;
32
- --color-gray-100: #F5F5F5;
33
- --color-gray-300: #CFCFCF;
34
- --color-gray-200: #E0E0E0;
35
- --color-gray-400: #BDBDBD;
36
- --color-gray-50: #FAFAFA;
37
- --color-gray-500: #9E9E9E;
38
- --color-gray-600: #757575;
39
- --color-gray-700: #616161;
40
- --color-gray-800: #424242;
41
- --color-gray-900: #212121;
42
- --color-gray: #000000;
43
- --color-green-700: #080;
44
- --color-green: #0c6;
45
- --color-lime-400: #D3E156;
46
- --color-orange-50: #FFF3E0;
47
- --color-orange-700: #C33300;
48
- --color-orange: #fa3;
49
- --color-red-700: #c00;
50
- --color-red: #f33;
51
- --color-teal-600: #00897B;
52
- --color-white: #FFFFFF;
53
-
54
- /* Context-specific colors */
55
- --color-average-secondary: var(--color-orange-700);
56
- --color-average: var(--color-orange);
57
- --color-fail-secondary: var(--color-red-700);
58
- --color-fail: var(--color-red);
59
- --color-hover: var(--color-gray-50);
60
- --color-informative: var(--color-blue-900);
61
- --color-pass-secondary: var(--color-green-700);
62
- --color-pass: var(--color-green);
63
- --color-not-applicable: var(--color-gray-600);
64
-
65
- /* Component variables */
66
- --audit-description-padding-left: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right));
67
- --audit-explanation-line-height: 16px;
68
- --audit-group-margin-bottom: calc(var(--default-padding) * 6);
69
- --audit-group-padding-vertical: 8px;
70
- --audit-margin-horizontal: 5px;
71
- --audit-padding-vertical: 8px;
72
- --category-padding: calc(var(--default-padding) * 6) var(--edge-gap-padding) calc(var(--default-padding) * 4);
73
- --chevron-line-stroke: var(--color-gray-600);
74
- --chevron-size: 12px;
75
- --default-padding: 8px;
76
- --edge-gap-padding: calc(var(--default-padding) * 4);
77
- --env-item-background-color: var(--color-gray-100);
78
- --env-item-font-size: 28px;
79
- --env-item-line-height: 36px;
80
- --env-item-padding: 10px 0px;
81
- --env-name-min-width: 220px;
82
- --footer-padding-vertical: 16px;
83
- --gauge-circle-size-big: 96px;
84
- --gauge-circle-size: 48px;
85
- --gauge-circle-size-sm: 32px;
86
- --gauge-label-font-size-big: 18px;
87
- --gauge-label-font-size: var(--report-font-size-secondary);
88
- --gauge-label-line-height-big: 24px;
89
- --gauge-label-line-height: var(--report-line-height-secondary);
90
- --gauge-percentage-font-size-big: 38px;
91
- --gauge-percentage-font-size: var(--report-font-size-secondary);
92
- --gauge-wrapper-width: 120px;
93
- --header-line-height: 24px;
94
- --highlighter-background-color: var(--report-text-color);
95
- --icon-square-size: calc(var(--score-icon-size) * 0.88);
96
- --image-preview-size: 48px;
97
- --link-color: var(--color-blue-primary);
98
- --locale-selector-background-color: var(--color-white);
99
- --metric-toggle-lines-fill: #7F7F7F;
100
- --metric-value-font-size: calc(var(--report-font-size) * 1.8);
101
- --metrics-toggle-background-color: var(--color-gray-200);
102
- --plugin-badge-background-color: var(--color-white);
103
- --plugin-badge-size-big: calc(var(--gauge-circle-size-big) / 2.7);
104
- --plugin-badge-size: calc(var(--gauge-circle-size) / 2.7);
105
- --plugin-icon-size: 65%;
106
- --pwa-icon-margin: 0 var(--default-padding);
107
- --pwa-icon-size: var(--topbar-logo-size);
108
- --report-background-color: #fff;
109
- --report-border-color-secondary: #ebebeb;
110
- --report-font-family-monospace: 'Roboto Mono', 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console', monospace;
111
- --report-font-family: Roboto, Helvetica, Arial, sans-serif;
112
- --report-font-size: 14px;
113
- --report-font-size-secondary: 12px;
114
- --report-icon-size: var(--score-icon-background-size);
115
- --report-line-height: 24px;
116
- --report-line-height-secondary: 20px;
117
- --report-monospace-font-size: calc(var(--report-font-size) * 0.85);
118
- --report-text-color-secondary: var(--color-gray-800);
119
- --report-text-color: var(--color-gray-900);
120
- --report-content-max-width: calc(60 * var(--report-font-size)); /* defaults to 840px */
121
- --report-content-min-width: 360px;
122
- --report-content-max-width-minus-edge-gap: calc(var(--report-content-max-width) - var(--edge-gap-padding) * 2);
123
- --score-container-padding: 8px;
124
- --score-icon-background-size: 24px;
125
- --score-icon-margin-left: 6px;
126
- --score-icon-margin-right: 14px;
127
- --score-icon-margin: 0 var(--score-icon-margin-right) 0 var(--score-icon-margin-left);
128
- --score-icon-size: 12px;
129
- --score-icon-size-big: 16px;
130
- --screenshot-overlay-background: rgba(0, 0, 0, 0.3);
131
- --section-padding-vertical: calc(var(--default-padding) * 6);
132
- --snippet-background-color: var(--color-gray-50);
133
- --snippet-color: #0938C2;
134
- --stackpack-padding-horizontal: 10px;
135
- --sticky-header-background-color: var(--report-background-color);
136
- --sticky-header-buffer: var(--topbar-height);
137
- --sticky-header-height: calc(var(--gauge-circle-size-sm) + var(--score-container-padding) * 2 + 1em);
138
- --table-group-header-background-color: #EEF1F4;
139
- --table-group-header-text-color: var(--color-gray-700);
140
- --table-higlight-background-color: #F5F7FA;
141
- --tools-icon-color: var(--color-gray-600);
142
- --topbar-background-color: var(--color-white);
143
- --topbar-height: 32px;
144
- --topbar-logo-size: 24px;
145
- --topbar-padding: 0 8px;
146
- --toplevel-warning-background-color: hsla(30, 100%, 75%, 10%);
147
- --toplevel-warning-message-text-color: var(--color-average-secondary);
148
- --toplevel-warning-padding: 18px;
149
- --toplevel-warning-text-color: var(--report-text-color);
150
-
151
- /* SVGs */
152
- --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>');
153
- --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>');
154
-
155
- --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>');
156
- --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>');
157
- --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>');
158
- --error-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 3 15"><title>error</title><path d="M0 15H 3V 12H 0V" fill="%23FF4E42"/><path d="M0 9H 3V 0H 0V" fill="%23FF4E42"/></svg>');
159
-
160
- --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>');
161
- --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>');
162
-
163
- --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>');
164
- --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>');
165
-
166
- --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>');
167
- --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>');
168
-
169
- --swap-locale-icon-url: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>');
170
- }
171
-
172
- @media not print {
173
- .lh-dark {
174
- /* Pallete */
175
- --color-gray-200: var(--color-gray-800);
176
- --color-gray-300: #616161;
177
- --color-gray-400: var(--color-gray-600);
178
- --color-gray-700: var(--color-gray-400);
179
- --color-gray-50: #757575;
180
- --color-gray-600: var(--color-gray-500);
181
- --color-green-700: var(--color-green);
182
- --color-orange-700: var(--color-orange);
183
- --color-red-700: var(--color-red);
184
- --color-teal-600: var(--color-cyan-500);
185
-
186
- /* Context-specific colors */
187
- --color-hover: rgba(0, 0, 0, 0.2);
188
- --color-informative: var(--color-blue-200);
189
-
190
- /* Component variables */
191
- --env-item-background-color: #393535;
192
- --link-color: var(--color-blue-200);
193
- --locale-selector-background-color: var(--color-gray-200);
194
- --plugin-badge-background-color: var(--color-gray-800);
195
- --report-background-color: var(--color-gray-900);
196
- --report-border-color-secondary: var(--color-gray-200);
197
- --report-text-color-secondary: var(--color-gray-400);
198
- --report-text-color: var(--color-gray-100);
199
- --snippet-color: var(--color-cyan-500);
200
- --topbar-background-color: var(--color-gray);
201
- --toplevel-warning-background-color: hsl(33deg 14% 18%);
202
- --toplevel-warning-message-text-color: var(--color-orange-700);
203
- --toplevel-warning-text-color: var(--color-gray-100);
204
- --table-group-header-background-color: rgba(186, 196, 206, 0.15);
205
- --table-group-header-text-color: var(--color-gray-100);
206
- --table-higlight-background-color: rgba(186, 196, 206, 0.09);
207
-
208
- /* SVGs */
209
- --plugin-icon-url: var(--plugin-icon-url-dark);
210
- --pwa-installable-gray-url: var(--pwa-installable-gray-url-dark);
211
- --pwa-optimized-gray-url: var(--pwa-optimized-gray-url-dark);
212
- }
213
- }
214
-
215
- @media only screen and (max-width: 480px) {
216
- .lh-vars {
217
- --audit-group-margin-bottom: 20px;
218
- --edge-gap-padding: var(--default-padding);
219
- --env-name-min-width: 120px;
220
- --gauge-circle-size-big: 96px;
221
- --gauge-circle-size: 72px;
222
- --gauge-label-font-size-big: 22px;
223
- --gauge-label-font-size: 14px;
224
- --gauge-label-line-height-big: 26px;
225
- --gauge-label-line-height: 20px;
226
- --gauge-percentage-font-size-big: 34px;
227
- --gauge-percentage-font-size: 26px;
228
- --gauge-wrapper-width: 112px;
229
- --header-padding: 16px 0 16px 0;
230
- --image-preview-size: 24px;
231
- --plugin-icon-size: 75%;
232
- --pwa-icon-margin: 0 7px 0 -3px;
233
- --report-font-size: 14px;
234
- --report-line-height: 20px;
235
- --score-icon-margin-left: 2px;
236
- --score-icon-size: 10px;
237
- --topbar-height: 28px;
238
- --topbar-logo-size: 20px;
239
- }
240
- }
241
-
242
- .lh-vars.lh-devtools {
243
- --audit-explanation-line-height: 14px;
244
- --audit-group-margin-bottom: 20px;
245
- --audit-group-padding-vertical: 12px;
246
- --audit-padding-vertical: 4px;
247
- --category-padding: 12px;
248
- --default-padding: 12px;
249
- --env-name-min-width: 120px;
250
- --footer-padding-vertical: 8px;
251
- --gauge-circle-size-big: 72px;
252
- --gauge-circle-size: 64px;
253
- --gauge-label-font-size-big: 22px;
254
- --gauge-label-font-size: 14px;
255
- --gauge-label-line-height-big: 26px;
256
- --gauge-label-line-height: 20px;
257
- --gauge-percentage-font-size-big: 34px;
258
- --gauge-percentage-font-size: 26px;
259
- --gauge-wrapper-width: 97px;
260
- --header-line-height: 20px;
261
- --header-padding: 16px 0 16px 0;
262
- --screenshot-overlay-background: transparent;
263
- --plugin-icon-size: 75%;
264
- --pwa-icon-margin: 0 7px 0 -3px;
265
- --report-font-family-monospace: 'Menlo', 'dejavu sans mono', 'Consolas', 'Lucida Console', monospace;
266
- --report-font-family: '.SFNSDisplay-Regular', 'Helvetica Neue', 'Lucida Grande', sans-serif;
267
- --report-font-size: 12px;
268
- --report-line-height: 20px;
269
- --score-icon-margin-left: 2px;
270
- --score-icon-size: 10px;
271
- --section-padding-vertical: 8px;
272
- }
273
-
274
- .lh-container:has(.lh-sticky-header) {
275
- --sticky-header-buffer: calc(var(--topbar-height) + var(--sticky-header-height));
276
- }
277
-
278
- .lh-container:not(.lh-topbar + .lh-container) {
279
- --topbar-height: 0;
280
- --sticky-header-height: 0;
281
- --sticky-header-buffer: 0;
282
- }
283
-
284
- .lh-max-viewport {
285
- display: flex;
286
- flex-direction: column;
287
- min-height: 100vh;
288
- width: 100%;
289
- }
290
-
291
- .lh-devtools.lh-root {
292
- height: 100%;
293
- }
294
- .lh-devtools.lh-root img {
295
- /* Override devtools default 'min-width: 0' so svg without size in a flexbox isn't collapsed. */
296
- min-width: auto;
297
- }
298
- .lh-devtools .lh-container {
299
- overflow-y: scroll;
300
- height: calc(100% - var(--topbar-height));
301
- /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */
302
- --sticky-header-buffer: 0;
303
- }
304
- .lh-devtools .lh-container:has(.lh-sticky-header) {
305
- /** The .lh-container is the scroll parent in DevTools so we exclude the topbar from the sticky header buffer. */
306
- --sticky-header-buffer: var(--sticky-header-height);
307
- }
308
- @media print {
309
- .lh-devtools .lh-container {
310
- overflow: unset;
311
- }
312
- }
313
- .lh-devtools .lh-sticky-header {
314
- /* This is normally the height of the topbar, but we want it to stick to the top of our scroll container .lh-container` */
315
- top: 0;
316
- }
317
- .lh-devtools .lh-element-screenshot__overlay {
318
- position: absolute;
319
- }
320
-
321
- @keyframes fadeIn {
322
- 0% { opacity: 0;}
323
- 100% { opacity: 0.6;}
324
- }
325
-
326
- .lh-root *, .lh-root *::before, .lh-root *::after {
327
- box-sizing: border-box;
328
- }
329
-
330
- .lh-root {
331
- font-family: var(--report-font-family);
332
- font-size: var(--report-font-size);
333
- margin: 0;
334
- line-height: var(--report-line-height);
335
- background: var(--report-background-color);
336
- color: var(--report-text-color);
337
- }
338
-
339
- .lh-root :focus-visible {
340
- outline: -webkit-focus-ring-color auto 3px;
341
- }
342
- .lh-root summary:focus {
343
- outline: none;
344
- box-shadow: 0 0 0 1px hsl(217, 89%, 61%);
345
- }
346
-
347
- .lh-root [hidden] {
348
- display: none !important;
349
- }
350
-
351
- .lh-root pre {
352
- margin: 0;
353
- }
354
-
355
- .lh-root pre,
356
- .lh-root code {
357
- font-family: var(--report-font-family-monospace);
358
- }
359
-
360
- .lh-root details > summary {
361
- cursor: pointer;
362
- }
363
-
364
- .lh-hidden {
365
- display: none !important;
366
- }
367
-
368
- .lh-container {
369
- /*
370
- Text wrapping in the report is so much FUN!
371
- We have a `word-break: break-word;` globally here to prevent a few common scenarios, namely
372
- long non-breakable text (usually URLs) found in:
373
- 1. The footer
374
- 2. .lh-node (outerHTML)
375
- 3. .lh-code
376
-
377
- With that sorted, the next challenge is appropriate column sizing and text wrapping inside our
378
- .lh-details tables. Even more fun.
379
- * We don't want table headers ("Potential Savings (ms)") to wrap or their column values, but
380
- we'd be happy for the URL column to wrap if the URLs are particularly long.
381
- * We want the narrow columns to remain narrow, providing the most column width for URL
382
- * We don't want the table to extend past 100% width.
383
- * Long URLs in the URL column can wrap. Util.getURLDisplayName maxes them out at 64 characters,
384
- but they do not get any overflow:ellipsis treatment.
385
- */
386
- word-break: break-word;
387
- }
388
-
389
- .lh-audit-group a,
390
- .lh-category-header__description a,
391
- .lh-audit__description a,
392
- .lh-warnings a,
393
- .lh-footer a,
394
- .lh-table-column--link a {
395
- color: var(--link-color);
396
- }
397
-
398
- .lh-audit__description, .lh-audit__stackpack {
399
- --inner-audit-padding-right: var(--stackpack-padding-horizontal);
400
- padding-left: var(--audit-description-padding-left);
401
- padding-right: var(--inner-audit-padding-right);
402
- padding-top: 8px;
403
- padding-bottom: 8px;
404
- }
405
-
406
- .lh-details {
407
- margin-top: var(--default-padding);
408
- margin-bottom: var(--default-padding);
409
- margin-left: var(--audit-description-padding-left);
410
- /* whatever the .lh-details side margins are */
411
- width: 100%;
412
- }
413
-
414
- .lh-audit__stackpack {
415
- display: flex;
416
- align-items: center;
417
- }
418
-
419
- .lh-audit__stackpack__img {
420
- max-width: 30px;
421
- margin-right: var(--default-padding)
422
- }
423
-
424
- /* Report header */
425
-
426
- .lh-report-icon {
427
- display: flex;
428
- align-items: center;
429
- padding: 10px 12px;
430
- cursor: pointer;
431
- }
432
- .lh-report-icon[disabled] {
433
- opacity: 0.3;
434
- pointer-events: none;
435
- }
436
-
437
- .lh-report-icon::before {
438
- content: "";
439
- margin: 4px;
440
- background-repeat: no-repeat;
441
- width: var(--report-icon-size);
442
- height: var(--report-icon-size);
443
- opacity: 0.7;
444
- display: inline-block;
445
- vertical-align: middle;
446
- }
447
- .lh-report-icon:hover::before {
448
- opacity: 1;
449
- }
450
- .lh-dark .lh-report-icon::before {
451
- filter: invert(1);
452
- }
453
- .lh-report-icon--print::before {
454
- 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>');
455
- }
456
- .lh-report-icon--copy::before {
457
- 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>');
458
- }
459
- .lh-report-icon--open::before {
460
- 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>');
461
- }
462
- .lh-report-icon--download::before {
463
- 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>');
464
- }
465
- .lh-report-icon--dark::before {
466
- 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>');
467
- }
468
- .lh-report-icon--treemap::before {
469
- 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="M3 5v14h19V5H3zm2 2h15v4H5V7zm0 10v-4h4v4H5zm6 0v-4h9v4h-9z"/></svg>');
470
- }
471
- .lh-report-icon--date::before {
472
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11h2v2H7v-2zm14-5v14a2 2 0 01-2 2H5a2 2 0 01-2-2V6c0-1.1.9-2 2-2h1V2h2v2h8V2h2v2h1a2 2 0 012 2zM5 8h14V6H5v2zm14 12V10H5v10h14zm-4-7h2v-2h-2v2zm-4 0h2v-2h-2v2z"/></svg>');
473
- }
474
- .lh-report-icon--devices::before {
475
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 6h18V4H4a2 2 0 00-2 2v11H0v3h14v-3H4V6zm19 2h-6a1 1 0 00-1 1v10c0 .6.5 1 1 1h6c.6 0 1-.5 1-1V9c0-.6-.5-1-1-1zm-1 9h-4v-7h4v7z"/></svg>');
476
- }
477
- .lh-report-icon--world::before {
478
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm7 6h-3c-.3-1.3-.8-2.5-1.4-3.6A8 8 0 0 1 18.9 8zm-7-4a14 14 0 0 1 2 4h-4a14 14 0 0 1 2-4zM4.3 14a8.2 8.2 0 0 1 0-4h3.3a16.5 16.5 0 0 0 0 4H4.3zm.8 2h3a14 14 0 0 0 1.3 3.6A8 8 0 0 1 5.1 16zm3-8H5a8 8 0 0 1 4.3-3.6L8 8zM12 20a14 14 0 0 1-2-4h4a14 14 0 0 1-2 4zm2.3-6H9.7a14.7 14.7 0 0 1 0-4h4.6a14.6 14.6 0 0 1 0 4zm.3 5.6c.6-1.2 1-2.4 1.4-3.6h3a8 8 0 0 1-4.4 3.6zm1.8-5.6a16.5 16.5 0 0 0 0-4h3.3a8.2 8.2 0 0 1 0 4h-3.3z"/></svg>');
479
- }
480
- .lh-report-icon--stopwatch::before {
481
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 1H9v2h6V1zm-4 13h2V8h-2v6zm8.1-6.6L20.5 6l-1.4-1.4L17.7 6A9 9 0 0 0 3 13a9 9 0 1 0 16-5.6zm-7 12.6a7 7 0 1 1 0-14 7 7 0 0 1 0 14z"/></svg>');
482
- }
483
- .lh-report-icon--networkspeed::before {
484
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.9 5c-.2 0-.3 0-.4.2v.2L10.1 17a2 2 0 0 0-.2 1 2 2 0 0 0 4 .4l2.4-12.9c0-.3-.2-.5-.5-.5zM1 9l2 2c2.9-2.9 6.8-4 10.5-3.6l1.2-2.7C10 3.8 4.7 5.3 1 9zm20 2 2-2a15.4 15.4 0 0 0-5.6-3.6L17 8.2c1.5.7 2.9 1.6 4.1 2.8zm-4 4 2-2a9.9 9.9 0 0 0-2.7-1.9l-.5 3 1.2.9zM5 13l2 2a7.1 7.1 0 0 1 4-2l1.3-2.9C9.7 10.1 7 11 5 13z"/></svg>');
485
- }
486
- .lh-report-icon--samples-one::before {
487
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="7" cy="14" r="3"/><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>');
488
- }
489
- .lh-report-icon--samples-many::before {
490
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 18a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5.6 17.6a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/><circle cx="7" cy="14" r="3"/><circle cx="11" cy="6" r="3"/></svg>');
491
- }
492
- .lh-report-icon--chrome::before {
493
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -50 562 562"><path d="M256 25.6v25.6a204 204 0 0 1 144.8 60 204 204 0 0 1 60 144.8 204 204 0 0 1-60 144.8 204 204 0 0 1-144.8 60 204 204 0 0 1-144.8-60 204 204 0 0 1-60-144.8 204 204 0 0 1 60-144.8 204 204 0 0 1 144.8-60V0a256 256 0 1 0 0 512 256 256 0 0 0 0-512v25.6z"/><path d="M256 179.2v25.6a51.3 51.3 0 0 1 0 102.4 51.3 51.3 0 0 1 0-102.4v-51.2a102.3 102.3 0 1 0-.1 204.7 102.3 102.3 0 0 0 .1-204.7v25.6z"/><path d="M256 204.8h217.6a25.6 25.6 0 0 0 0-51.2H256a25.6 25.6 0 0 0 0 51.2m44.3 76.8L191.5 470.1a25.6 25.6 0 1 0 44.4 25.6l108.8-188.5a25.6 25.6 0 1 0-44.4-25.6m-88.6 0L102.9 93.2a25.7 25.7 0 0 0-35-9.4 25.7 25.7 0 0 0-9.4 35l108.8 188.5a25.7 25.7 0 0 0 35 9.4 25.9 25.9 0 0 0 9.4-35.1"/></svg>');
494
- }
495
- .lh-report-icon--external::before {
496
- background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><path d="M3.15 11.9a1.01 1.01 0 0 1-.743-.307 1.01 1.01 0 0 1-.306-.743v-7.7c0-.292.102-.54.306-.744a1.01 1.01 0 0 1 .744-.306H7v1.05H3.15v7.7h7.7V7h1.05v3.85c0 .291-.103.54-.307.743a1.01 1.01 0 0 1-.743.307h-7.7Zm2.494-2.8-.743-.744 5.206-5.206H8.401V2.1h3.5v3.5h-1.05V3.893L5.644 9.1Z"/></svg>');
497
- }
498
-
499
- .lh-buttons {
500
- display: flex;
501
- flex-wrap: wrap;
502
- margin: var(--default-padding) 0;
503
- }
504
- .lh-button {
505
- height: 32px;
506
- border: 1px solid var(--report-border-color-secondary);
507
- border-radius: 3px;
508
- color: var(--link-color);
509
- background-color: var(--report-background-color);
510
- margin: 5px;
511
- }
512
-
513
- .lh-button:first-of-type {
514
- margin-left: 0;
515
- }
516
-
517
- /* Node */
518
- .lh-node__snippet {
519
- font-family: var(--report-font-family-monospace);
520
- color: var(--snippet-color);
521
- font-size: var(--report-monospace-font-size);
522
- line-height: 20px;
523
- }
524
-
525
- /* Score */
526
-
527
- .lh-audit__score-icon {
528
- width: var(--score-icon-size);
529
- height: var(--score-icon-size);
530
- margin: var(--score-icon-margin);
531
- }
532
-
533
- .lh-audit--pass .lh-audit__display-text {
534
- color: var(--color-pass-secondary);
535
- }
536
- .lh-audit--pass .lh-audit__score-icon,
537
- .lh-scorescale-range--pass::before {
538
- border-radius: 100%;
539
- background: var(--color-pass);
540
- }
541
-
542
- .lh-audit--average .lh-audit__display-text {
543
- color: var(--color-average-secondary);
544
- }
545
- .lh-audit--average .lh-audit__score-icon,
546
- .lh-scorescale-range--average::before {
547
- background: var(--color-average);
548
- width: var(--icon-square-size);
549
- height: var(--icon-square-size);
550
- }
551
-
552
- .lh-audit--fail .lh-audit__display-text {
553
- color: var(--color-fail-secondary);
554
- }
555
- .lh-audit--fail .lh-audit__score-icon,
556
- .lh-audit--error .lh-audit__score-icon,
557
- .lh-scorescale-range--fail::before {
558
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
559
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
560
- border-bottom: var(--score-icon-size) solid var(--color-fail);
561
- }
562
-
563
- .lh-audit--error .lh-audit__score-icon,
564
- .lh-metric--error .lh-metric__icon {
565
- background-image: var(--error-icon-url);
566
- background-repeat: no-repeat;
567
- background-position: center;
568
- border: none;
569
- }
570
-
571
- .lh-gauge__wrapper--fail .lh-gauge--error {
572
- background-image: var(--error-icon-url);
573
- background-repeat: no-repeat;
574
- background-position: center;
575
- transform: scale(0.5);
576
- top: var(--score-container-padding);
577
- }
578
-
579
- .lh-audit--manual .lh-audit__display-text,
580
- .lh-audit--notapplicable .lh-audit__display-text {
581
- color: var(--color-gray-600);
582
- }
583
- .lh-audit--manual .lh-audit__score-icon,
584
- .lh-audit--notapplicable .lh-audit__score-icon {
585
- border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);
586
- border-radius: 100%;
587
- background: none;
588
- }
589
-
590
- .lh-audit--informative .lh-audit__display-text {
591
- color: var(--color-gray-600);
592
- }
593
-
594
- .lh-audit--informative .lh-audit__score-icon {
595
- border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-400);
596
- border-radius: 100%;
597
- }
598
-
599
- .lh-audit__description,
600
- .lh-audit__stackpack {
601
- color: var(--report-text-color-secondary);
602
- }
603
- .lh-audit__adorn {
604
- border: 1px solid var(--color-gray-500);
605
- border-radius: 3px;
606
- margin: 0 3px;
607
- padding: 0 2px;
608
- line-height: 1.1;
609
- display: inline-block;
610
- font-size: 90%;
611
- color: var(--report-text-color-secondary);
612
- }
613
-
614
- .lh-category-header__description {
615
- text-align: center;
616
- color: var(--color-gray-700);
617
- margin: 0px auto;
618
- max-width: 400px;
619
- }
620
-
621
-
622
- .lh-audit__display-text,
623
- .lh-chevron-container {
624
- margin: 0 var(--audit-margin-horizontal);
625
- }
626
- .lh-chevron-container {
627
- margin-right: 0;
628
- }
629
-
630
- .lh-audit__title-and-text {
631
- flex: 1;
632
- }
633
-
634
- .lh-audit__title-and-text code {
635
- color: var(--snippet-color);
636
- font-size: var(--report-monospace-font-size);
637
- }
638
-
639
- /* Prepend display text with em dash separator. */
640
- .lh-audit__display-text:not(:empty):before {
641
- content: '—';
642
- margin-right: var(--audit-margin-horizontal);
643
- }
644
-
645
- /* Expandable Details (Audit Groups, Audits) */
646
- .lh-audit__header {
647
- display: flex;
648
- align-items: center;
649
- padding: var(--default-padding);
650
- }
651
-
652
-
653
- .lh-metricfilter {
654
- display: grid;
655
- justify-content: end;
656
- align-items: center;
657
- grid-auto-flow: column;
658
- gap: 4px;
659
- color: var(--color-gray-700);
660
- }
661
-
662
- .lh-metricfilter__radio {
663
- /*
664
- * Instead of hiding, position offscreen so it's still accessible to screen readers
665
- * https://bugs.chromium.org/p/chromium/issues/detail?id=1439785
666
- */
667
- position: fixed;
668
- left: -9999px;
669
- }
670
- .lh-metricfilter input[type='radio']:focus-visible + label {
671
- outline: -webkit-focus-ring-color auto 1px;
672
- }
673
-
674
- .lh-metricfilter__label {
675
- display: inline-flex;
676
- padding: 0 4px;
677
- height: 16px;
678
- text-decoration: underline;
679
- align-items: center;
680
- cursor: pointer;
681
- font-size: 90%;
682
- }
683
-
684
- .lh-metricfilter__label--active {
685
- background: var(--color-blue-primary);
686
- color: var(--color-white);
687
- border-radius: 3px;
688
- text-decoration: none;
689
- }
690
- /* Give the 'All' choice a more muted display */
691
- .lh-metricfilter__label--active[for="metric-All"] {
692
- background-color: var(--color-blue-200) !important;
693
- color: black !important;
694
- }
695
-
696
- .lh-metricfilter__text {
697
- margin-right: 8px;
698
- }
699
-
700
- /* If audits are filtered, hide the itemcount for Passed Audits… */
701
- .lh-category--filtered .lh-audit-group .lh-audit-group__itemcount {
702
- display: none;
703
- }
704
-
705
-
706
- .lh-audit__header:hover {
707
- background-color: var(--color-hover);
708
- }
709
-
710
- /* We want to hide the browser's default arrow marker on summary elements. Admittedly, it's complicated. */
711
- .lh-root details > summary {
712
- /* 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*/
713
- display: block;
714
- }
715
- /* Safari and Blink <=88 require using the -webkit-details-marker selector */
716
- .lh-root details > summary::-webkit-details-marker {
717
- display: none;
718
- }
719
-
720
- /* Perf Metric */
721
-
722
- .lh-metrics-container {
723
- display: grid;
724
- grid-auto-rows: 1fr;
725
- grid-template-columns: 1fr 1fr;
726
- grid-column-gap: var(--report-line-height);
727
- margin-bottom: var(--default-padding);
728
- }
729
-
730
- .lh-metric {
731
- border-top: 1px solid var(--report-border-color-secondary);
732
- }
733
-
734
- .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(-n+2) {
735
- border-bottom: 1px solid var(--report-border-color-secondary);
736
- }
737
-
738
- .lh-metric__innerwrap {
739
- display: grid;
740
- /**
741
- * Icon -- Metric Name
742
- * -- Metric Value
743
- */
744
- grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 1fr;
745
- align-items: center;
746
- padding: var(--default-padding);
747
- }
748
-
749
- .lh-metric__details {
750
- order: -1;
751
- }
752
-
753
- .lh-metric__title {
754
- flex: 1;
755
- }
756
-
757
- .lh-calclink {
758
- padding-left: calc(1ex / 3);
759
- }
760
-
761
- .lh-metric__description {
762
- display: none;
763
- grid-column-start: 2;
764
- grid-column-end: 4;
765
- color: var(--report-text-color-secondary);
766
- }
767
-
768
- .lh-metric__value {
769
- font-size: var(--metric-value-font-size);
770
- margin: calc(var(--default-padding) / 2) 0;
771
- white-space: nowrap; /* No wrapping between metric value and the icon */
772
- grid-column-start: 2;
773
- }
774
-
775
-
776
- @media screen and (max-width: 535px) {
777
- .lh-metrics-container {
778
- display: block;
779
- }
780
-
781
- .lh-metric {
782
- border-bottom: none !important;
783
- }
784
- .lh-category:not(.lh--hoisted-meta) .lh-metric:nth-last-child(1) {
785
- border-bottom: 1px solid var(--report-border-color-secondary) !important;
786
- }
787
-
788
- /* Change the grid to 3 columns for narrow viewport. */
789
- .lh-metric__innerwrap {
790
- /**
791
- * Icon -- Metric Name -- Metric Value
792
- */
793
- grid-template-columns: calc(var(--score-icon-size) + var(--score-icon-margin-left) + var(--score-icon-margin-right)) 2fr 1fr;
794
- }
795
- .lh-metric__value {
796
- justify-self: end;
797
- grid-column-start: unset;
798
- }
799
- }
800
-
801
- /* No-JS toggle switch */
802
- /* Keep this selector sync'd w/ `magicSelector` in report-ui-features-test.js */
803
- .lh-metrics-toggle__input:checked ~ .lh-metrics-container .lh-metric__description {
804
- display: block;
805
- }
806
-
807
- /* TODO get rid of the SVGS and clean up these some more */
808
- .lh-metrics-toggle__input {
809
- opacity: 0;
810
- position: absolute;
811
- right: 0;
812
- top: 0px;
813
- }
814
-
815
- .lh-metrics-toggle__input + div > label > .lh-metrics-toggle__labeltext--hide,
816
- .lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--show {
817
- display: none;
818
- }
819
- .lh-metrics-toggle__input:checked + div > label > .lh-metrics-toggle__labeltext--hide {
820
- display: inline;
821
- }
822
- .lh-metrics-toggle__input:focus + div > label {
823
- outline: -webkit-focus-ring-color auto 3px;
824
- }
825
-
826
- .lh-metrics-toggle__label {
827
- cursor: pointer;
828
- font-size: var(--report-font-size-secondary);
829
- line-height: var(--report-line-height-secondary);
830
- color: var(--color-gray-700);
831
- }
832
-
833
- /* Pushes the metric description toggle button to the right. */
834
- .lh-audit-group--metrics .lh-audit-group__header {
835
- display: flex;
836
- justify-content: space-between;
837
- }
838
-
839
- .lh-metric__icon,
840
- .lh-scorescale-range::before {
841
- content: '';
842
- width: var(--score-icon-size);
843
- height: var(--score-icon-size);
844
- display: inline-block;
845
- margin: var(--score-icon-margin);
846
- }
847
-
848
- .lh-metric--pass .lh-metric__value {
849
- color: var(--color-pass-secondary);
850
- }
851
- .lh-metric--pass .lh-metric__icon {
852
- border-radius: 100%;
853
- background: var(--color-pass);
854
- }
855
-
856
- .lh-metric--average .lh-metric__value {
857
- color: var(--color-average-secondary);
858
- }
859
- .lh-metric--average .lh-metric__icon {
860
- background: var(--color-average);
861
- width: var(--icon-square-size);
862
- height: var(--icon-square-size);
863
- }
864
-
865
- .lh-metric--fail .lh-metric__value {
866
- color: var(--color-fail-secondary);
867
- }
868
- .lh-metric--fail .lh-metric__icon {
869
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
870
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
871
- border-bottom: var(--score-icon-size) solid var(--color-fail);
872
- }
873
-
874
- .lh-metric--error .lh-metric__value,
875
- .lh-metric--error .lh-metric__description {
876
- color: var(--color-fail-secondary);
877
- }
878
-
879
- /* Filmstrip */
880
-
881
- .lh-filmstrip-container {
882
- /* smaller gap between metrics and filmstrip */
883
- margin: -8px auto 0 auto;
884
- }
885
-
886
- .lh-filmstrip {
887
- display: flex;
888
- justify-content: space-between;
889
- justify-items: center;
890
- margin-bottom: var(--default-padding);
891
- width: 100%;
892
- }
893
-
894
- .lh-filmstrip__frame {
895
- overflow: hidden;
896
- line-height: 0;
897
- }
898
-
899
- .lh-filmstrip__thumbnail {
900
- border: 1px solid var(--report-border-color-secondary);
901
- max-height: 150px;
902
- max-width: 120px;
903
- }
904
-
905
- /* Audit */
906
-
907
- .lh-audit {
908
- border-bottom: 1px solid var(--report-border-color-secondary);
909
- }
910
-
911
- /* Apply border-top to just the first audit. */
912
- .lh-audit {
913
- border-top: 1px solid var(--report-border-color-secondary);
914
- }
915
- .lh-audit ~ .lh-audit {
916
- border-top: none;
917
- }
918
-
919
-
920
- .lh-audit--error .lh-audit__display-text {
921
- color: var(--color-fail-secondary);
922
- }
923
-
924
- /* Audit Group */
925
-
926
- .lh-audit-group {
927
- margin-bottom: var(--audit-group-margin-bottom);
928
- position: relative;
929
- }
930
- .lh-audit-group--metrics {
931
- margin-bottom: calc(var(--audit-group-margin-bottom) / 2);
932
- }
933
-
934
- .lh-audit-group__header::before {
935
- /* By default, groups don't get an icon */
936
- content: none;
937
- width: var(--pwa-icon-size);
938
- height: var(--pwa-icon-size);
939
- margin: var(--pwa-icon-margin);
940
- display: inline-block;
941
- vertical-align: middle;
942
- }
943
-
944
- /* Style the "over budget" columns red. */
945
- .lh-audit-group--budgets #performance-budget tbody tr td:nth-child(4),
946
- .lh-audit-group--budgets #performance-budget tbody tr td:nth-child(5),
947
- .lh-audit-group--budgets #timing-budget tbody tr td:nth-child(3) {
948
- color: var(--color-red-700);
949
- }
950
-
951
- /* Align the "over budget request count" text to be close to the "over budget bytes" column. */
952
- .lh-audit-group--budgets .lh-table tbody tr td:nth-child(4){
953
- text-align: right;
954
- }
955
-
956
- .lh-audit-group--budgets .lh-details--budget {
957
- width: 100%;
958
- margin: 0 0 var(--default-padding);
959
- }
960
-
961
- .lh-audit-group--pwa-installable .lh-audit-group__header::before {
962
- content: '';
963
- background-image: var(--pwa-installable-gray-url);
964
- }
965
- .lh-audit-group--pwa-optimized .lh-audit-group__header::before {
966
- content: '';
967
- background-image: var(--pwa-optimized-gray-url);
968
- }
969
- .lh-audit-group--pwa-installable.lh-badged .lh-audit-group__header::before {
970
- background-image: var(--pwa-installable-color-url);
971
- }
972
- .lh-audit-group--pwa-optimized.lh-badged .lh-audit-group__header::before {
973
- background-image: var(--pwa-optimized-color-url);
974
- }
975
-
976
- .lh-audit-group--metrics .lh-audit-group__summary {
977
- margin-top: 0;
978
- margin-bottom: 0;
979
- }
980
-
981
- .lh-audit-group__summary {
982
- display: flex;
983
- justify-content: space-between;
984
- align-items: center;
985
- }
986
-
987
- .lh-audit-group__header .lh-chevron {
988
- margin-top: calc((var(--report-line-height) - 5px) / 2);
989
- }
990
-
991
- .lh-audit-group__header {
992
- letter-spacing: 0.8px;
993
- padding: var(--default-padding);
994
- padding-left: 0;
995
- }
996
-
997
- .lh-audit-group__header, .lh-audit-group__summary {
998
- font-size: var(--report-font-size-secondary);
999
- line-height: var(--report-line-height-secondary);
1000
- color: var(--color-gray-700);
1001
- }
1002
-
1003
- .lh-audit-group__title {
1004
- text-transform: uppercase;
1005
- font-weight: 500;
1006
- }
1007
-
1008
- .lh-audit-group__itemcount {
1009
- color: var(--color-gray-600);
1010
- }
1011
-
1012
- .lh-audit-group__footer {
1013
- color: var(--color-gray-600);
1014
- display: block;
1015
- margin-top: var(--default-padding);
1016
- }
1017
-
1018
- .lh-details,
1019
- .lh-category-header__description,
1020
- .lh-audit-group__footer {
1021
- font-size: var(--report-font-size-secondary);
1022
- line-height: var(--report-line-height-secondary);
1023
- }
1024
-
1025
- .lh-audit-explanation {
1026
- margin: var(--audit-padding-vertical) 0 calc(var(--audit-padding-vertical) / 2) var(--audit-margin-horizontal);
1027
- line-height: var(--audit-explanation-line-height);
1028
- display: inline-block;
1029
- }
1030
-
1031
- .lh-audit--fail .lh-audit-explanation {
1032
- color: var(--color-fail-secondary);
1033
- }
1034
-
1035
- /* Report */
1036
- .lh-list > :not(:last-child) {
1037
- margin-bottom: calc(var(--default-padding) * 2);
1038
- }
1039
-
1040
- .lh-header-container {
1041
- display: block;
1042
- margin: 0 auto;
1043
- position: relative;
1044
- word-wrap: break-word;
1045
- }
1046
-
1047
- .lh-header-container .lh-scores-wrapper {
1048
- border-bottom: 1px solid var(--color-gray-200);
1049
- }
1050
-
1051
-
1052
- .lh-report {
1053
- min-width: var(--report-content-min-width);
1054
- }
1055
-
1056
- .lh-exception {
1057
- font-size: large;
1058
- }
1059
-
1060
- .lh-code {
1061
- white-space: normal;
1062
- margin-top: 0;
1063
- font-size: var(--report-monospace-font-size);
1064
- }
1065
-
1066
- .lh-warnings {
1067
- --item-margin: calc(var(--report-line-height) / 6);
1068
- color: var(--color-average-secondary);
1069
- margin: var(--audit-padding-vertical) 0;
1070
- padding: var(--default-padding)
1071
- var(--default-padding)
1072
- var(--default-padding)
1073
- calc(var(--audit-description-padding-left));
1074
- background-color: var(--toplevel-warning-background-color);
1075
- }
1076
- .lh-warnings span {
1077
- font-weight: bold;
1078
- }
1079
-
1080
- .lh-warnings--toplevel {
1081
- --item-margin: calc(var(--header-line-height) / 4);
1082
- color: var(--toplevel-warning-text-color);
1083
- margin-left: auto;
1084
- margin-right: auto;
1085
- max-width: var(--report-content-max-width-minus-edge-gap);
1086
- padding: var(--toplevel-warning-padding);
1087
- border-radius: 8px;
1088
- }
1089
-
1090
- .lh-warnings__msg {
1091
- color: var(--toplevel-warning-message-text-color);
1092
- margin: 0;
1093
- }
1094
-
1095
- .lh-warnings ul {
1096
- margin: 0;
1097
- }
1098
- .lh-warnings li {
1099
- margin: var(--item-margin) 0;
1100
- }
1101
- .lh-warnings li:last-of-type {
1102
- margin-bottom: 0;
1103
- }
1104
-
1105
- .lh-scores-header {
1106
- display: flex;
1107
- flex-wrap: wrap;
1108
- justify-content: center;
1109
- }
1110
- .lh-scores-header__solo {
1111
- padding: 0;
1112
- border: 0;
1113
- }
1114
-
1115
- /* Gauge */
1116
-
1117
- .lh-gauge__wrapper--pass {
1118
- color: var(--color-pass-secondary);
1119
- fill: var(--color-pass);
1120
- stroke: var(--color-pass);
1121
- }
1122
-
1123
- .lh-gauge__wrapper--average {
1124
- color: var(--color-average-secondary);
1125
- fill: var(--color-average);
1126
- stroke: var(--color-average);
1127
- }
1128
-
1129
- .lh-gauge__wrapper--fail {
1130
- color: var(--color-fail-secondary);
1131
- fill: var(--color-fail);
1132
- stroke: var(--color-fail);
1133
- }
1134
-
1135
- .lh-gauge__wrapper--not-applicable {
1136
- color: var(--color-not-applicable);
1137
- fill: var(--color-not-applicable);
1138
- stroke: var(--color-not-applicable);
1139
- }
1140
-
1141
- .lh-fraction__wrapper .lh-fraction__content::before {
1142
- content: '';
1143
- height: var(--score-icon-size);
1144
- width: var(--score-icon-size);
1145
- margin: var(--score-icon-margin);
1146
- display: inline-block;
1147
- }
1148
- .lh-fraction__wrapper--pass .lh-fraction__content {
1149
- color: var(--color-pass-secondary);
1150
- }
1151
- .lh-fraction__wrapper--pass .lh-fraction__background {
1152
- background-color: var(--color-pass);
1153
- }
1154
- .lh-fraction__wrapper--pass .lh-fraction__content::before {
1155
- background-color: var(--color-pass);
1156
- border-radius: 50%;
1157
- }
1158
- .lh-fraction__wrapper--average .lh-fraction__content {
1159
- color: var(--color-average-secondary);
1160
- }
1161
- .lh-fraction__wrapper--average .lh-fraction__background,
1162
- .lh-fraction__wrapper--average .lh-fraction__content::before {
1163
- background-color: var(--color-average);
1164
- }
1165
- .lh-fraction__wrapper--fail .lh-fraction__content {
1166
- color: var(--color-fail);
1167
- }
1168
- .lh-fraction__wrapper--fail .lh-fraction__background {
1169
- background-color: var(--color-fail);
1170
- }
1171
- .lh-fraction__wrapper--fail .lh-fraction__content::before {
1172
- border-left: calc(var(--score-icon-size) / 2) solid transparent;
1173
- border-right: calc(var(--score-icon-size) / 2) solid transparent;
1174
- border-bottom: var(--score-icon-size) solid var(--color-fail);
1175
- }
1176
- .lh-fraction__wrapper--null .lh-fraction__content {
1177
- color: var(--color-gray-700);
1178
- }
1179
- .lh-fraction__wrapper--null .lh-fraction__background {
1180
- background-color: var(--color-gray-700);
1181
- }
1182
- .lh-fraction__wrapper--null .lh-fraction__content::before {
1183
- border-radius: 50%;
1184
- border: calc(0.2 * var(--score-icon-size)) solid var(--color-gray-700);
1185
- }
1186
-
1187
- .lh-fraction__background {
1188
- position: absolute;
1189
- height: 100%;
1190
- width: 100%;
1191
- border-radius: calc(var(--gauge-circle-size) / 2);
1192
- opacity: 0.1;
1193
- z-index: -1;
1194
- }
1195
-
1196
- .lh-fraction__content-wrapper {
1197
- height: var(--gauge-circle-size);
1198
- display: flex;
1199
- align-items: center;
1200
- }
1201
-
1202
- .lh-fraction__content {
1203
- display: flex;
1204
- position: relative;
1205
- align-items: center;
1206
- justify-content: center;
1207
- font-size: calc(0.3 * var(--gauge-circle-size));
1208
- line-height: calc(0.4 * var(--gauge-circle-size));
1209
- width: max-content;
1210
- min-width: calc(1.5 * var(--gauge-circle-size));
1211
- padding: calc(0.1 * var(--gauge-circle-size)) calc(0.2 * var(--gauge-circle-size));
1212
- --score-icon-size: calc(0.21 * var(--gauge-circle-size));
1213
- --score-icon-margin: 0 calc(0.15 * var(--gauge-circle-size)) 0 0;
1214
- }
1215
-
1216
- .lh-gauge {
1217
- stroke-linecap: round;
1218
- width: var(--gauge-circle-size);
1219
- height: var(--gauge-circle-size);
1220
- }
1221
-
1222
- .lh-category .lh-gauge {
1223
- --gauge-circle-size: var(--gauge-circle-size-big);
1224
- }
1225
-
1226
- .lh-gauge-base {
1227
- opacity: 0.1;
1228
- }
1229
-
1230
- .lh-gauge-arc {
1231
- fill: none;
1232
- transform-origin: 50% 50%;
1233
- animation: load-gauge var(--transition-length) ease both;
1234
- animation-delay: 250ms;
1235
- }
1236
-
1237
- .lh-gauge__svg-wrapper {
1238
- position: relative;
1239
- height: var(--gauge-circle-size);
1240
- }
1241
- .lh-category .lh-gauge__svg-wrapper,
1242
- .lh-category .lh-fraction__wrapper {
1243
- --gauge-circle-size: var(--gauge-circle-size-big);
1244
- }
1245
-
1246
- /* The plugin badge overlay */
1247
- .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {
1248
- width: var(--plugin-badge-size);
1249
- height: var(--plugin-badge-size);
1250
- background-color: var(--plugin-badge-background-color);
1251
- background-image: var(--plugin-icon-url);
1252
- background-repeat: no-repeat;
1253
- background-size: var(--plugin-icon-size);
1254
- background-position: 58% 50%;
1255
- content: "";
1256
- position: absolute;
1257
- right: -6px;
1258
- bottom: 0px;
1259
- display: block;
1260
- z-index: 100;
1261
- box-shadow: 0 0 4px rgba(0,0,0,.2);
1262
- border-radius: 25%;
1263
- }
1264
- .lh-category .lh-gauge__wrapper--plugin .lh-gauge__svg-wrapper::before {
1265
- width: var(--plugin-badge-size-big);
1266
- height: var(--plugin-badge-size-big);
1267
- }
1268
-
1269
- @keyframes load-gauge {
1270
- from { stroke-dasharray: 0 352; }
1271
- }
1272
-
1273
- .lh-gauge__percentage {
1274
- width: 100%;
1275
- height: var(--gauge-circle-size);
1276
- line-height: var(--gauge-circle-size);
1277
- position: absolute;
1278
- font-family: var(--report-font-family-monospace);
1279
- font-size: calc(var(--gauge-circle-size) * 0.34 + 1.3px);
1280
- text-align: center;
1281
- top: var(--score-container-padding);
1282
- }
1283
-
1284
- .lh-category .lh-gauge__percentage {
1285
- --gauge-circle-size: var(--gauge-circle-size-big);
1286
- --gauge-percentage-font-size: var(--gauge-percentage-font-size-big);
1287
- }
1288
-
1289
- .lh-gauge__wrapper,
1290
- .lh-fraction__wrapper {
1291
- position: relative;
1292
- display: flex;
1293
- align-items: center;
1294
- flex-direction: column;
1295
- text-decoration: none;
1296
- padding: var(--score-container-padding);
1297
-
1298
- --transition-length: 1s;
1299
-
1300
- /* Contain the layout style paint & layers during animation*/
1301
- contain: content;
1302
- will-change: opacity; /* Only using for layer promotion */
1303
- }
1304
-
1305
- .lh-gauge__label,
1306
- .lh-fraction__label {
1307
- font-size: var(--gauge-label-font-size);
1308
- font-weight: 500;
1309
- line-height: var(--gauge-label-line-height);
1310
- margin-top: 10px;
1311
- text-align: center;
1312
- color: var(--report-text-color);
1313
- word-break: keep-all;
1314
- }
1315
-
1316
- /* TODO(#8185) use more BEM (.lh-gauge__label--big) instead of relying on descendant selector */
1317
- .lh-category .lh-gauge__label,
1318
- .lh-category .lh-fraction__label {
1319
- --gauge-label-font-size: var(--gauge-label-font-size-big);
1320
- --gauge-label-line-height: var(--gauge-label-line-height-big);
1321
- margin-top: 14px;
1322
- }
1323
-
1324
- .lh-scores-header .lh-gauge__wrapper,
1325
- .lh-scores-header .lh-fraction__wrapper,
1326
- .lh-scores-header .lh-gauge--pwa__wrapper,
1327
- .lh-sticky-header .lh-gauge__wrapper,
1328
- .lh-sticky-header .lh-fraction__wrapper,
1329
- .lh-sticky-header .lh-gauge--pwa__wrapper {
1330
- width: var(--gauge-wrapper-width);
1331
- }
1332
-
1333
- .lh-scorescale {
1334
- display: inline-flex;
1335
-
1336
- gap: calc(var(--default-padding) * 4);
1337
- margin: 16px auto 0 auto;
1338
- font-size: var(--report-font-size-secondary);
1339
- color: var(--color-gray-700);
1340
-
1341
- }
1342
-
1343
- .lh-scorescale-range {
1344
- display: flex;
1345
- align-items: center;
1346
- font-family: var(--report-font-family-monospace);
1347
- white-space: nowrap;
1348
- }
1349
-
1350
- .lh-category-header__finalscreenshot .lh-scorescale {
1351
- border: 0;
1352
- display: flex;
1353
- justify-content: center;
1354
- }
1355
-
1356
- .lh-category-header__finalscreenshot .lh-scorescale-range {
1357
- font-family: unset;
1358
- font-size: 12px;
1359
- }
1360
-
1361
- .lh-scorescale-wrap {
1362
- display: contents;
1363
- }
1364
-
1365
- /* Hide category score gauages if it's a single category report */
1366
- .lh-header--solo-category .lh-scores-wrapper {
1367
- display: none;
1368
- }
1369
-
1370
-
1371
- .lh-categories {
1372
- width: 100%;
1373
- }
1374
-
1375
- .lh-category {
1376
- padding: var(--category-padding);
1377
- max-width: var(--report-content-max-width);
1378
- margin: 0 auto;
1379
-
1380
- scroll-margin-top: calc(var(--sticky-header-buffer) - 1em);
1381
- }
1382
-
1383
- .lh-category-wrapper {
1384
- border-bottom: 1px solid var(--color-gray-200);
1385
- }
1386
- .lh-category-wrapper:last-of-type {
1387
- border-bottom: 0;
1388
- }
1389
-
1390
- .lh-category-header {
1391
- margin-bottom: var(--section-padding-vertical);
1392
- }
1393
-
1394
- .lh-category-header .lh-score__gauge {
1395
- max-width: 400px;
1396
- width: auto;
1397
- margin: 0px auto;
1398
- }
1399
-
1400
- .lh-category-header__finalscreenshot {
1401
- display: grid;
1402
- grid-template: none / 1fr 1px 1fr;
1403
- justify-items: center;
1404
- align-items: center;
1405
- gap: var(--report-line-height);
1406
- min-height: 288px;
1407
- margin-bottom: var(--default-padding);
1408
- }
1409
-
1410
- .lh-final-ss-image {
1411
- /* constrain the size of the image to not be too large */
1412
- max-height: calc(var(--gauge-circle-size-big) * 2.8);
1413
- max-width: calc(var(--gauge-circle-size-big) * 3.5);
1414
- border: 1px solid var(--color-gray-200);
1415
- padding: 4px;
1416
- border-radius: 3px;
1417
- display: block;
1418
- }
1419
-
1420
- .lh-category-headercol--separator {
1421
- background: var(--color-gray-200);
1422
- width: 1px;
1423
- height: var(--gauge-circle-size-big);
1424
- }
1425
-
1426
- @media screen and (max-width: 780px) {
1427
- .lh-category-header__finalscreenshot {
1428
- grid-template: 1fr 1fr / none
1429
- }
1430
- .lh-category-headercol--separator {
1431
- display: none;
1432
- }
1433
- }
1434
-
1435
-
1436
- /* 964 fits the min-width of the filmstrip */
1437
- @media screen and (max-width: 964px) {
1438
- .lh-report {
1439
- margin-left: 0;
1440
- width: 100%;
1441
- }
1442
- }
1443
-
1444
- @media print {
1445
- body {
1446
- -webkit-print-color-adjust: exact; /* print background colors */
1447
- }
1448
- .lh-container {
1449
- display: block;
1450
- }
1451
- .lh-report {
1452
- margin-left: 0;
1453
- padding-top: 0;
1454
- }
1455
- .lh-categories {
1456
- margin-top: 0;
1457
- }
1458
- }
1459
-
1460
- .lh-table {
1461
- position: relative;
1462
- border-collapse: separate;
1463
- border-spacing: 0;
1464
- /* Can't assign padding to table, so shorten the width instead. */
1465
- width: calc(100% - var(--audit-description-padding-left) - var(--stackpack-padding-horizontal));
1466
- border: 1px solid var(--report-border-color-secondary);
1467
- }
1468
-
1469
- .lh-table thead th {
1470
- position: sticky;
1471
- top: var(--sticky-header-buffer);
1472
- z-index: 1;
1473
- background-color: var(--report-background-color);
1474
- border-bottom: 1px solid var(--report-border-color-secondary);
1475
- font-weight: normal;
1476
- color: var(--color-gray-600);
1477
- /* See text-wrapping comment on .lh-container. */
1478
- word-break: normal;
1479
- }
1480
-
1481
- .lh-row--group {
1482
- background-color: var(--table-group-header-background-color);
1483
- }
1484
-
1485
- .lh-row--group td {
1486
- font-weight: bold;
1487
- font-size: 1.05em;
1488
- color: var(--table-group-header-text-color);
1489
- }
1490
-
1491
- .lh-row--group td:first-child {
1492
- display: block;
1493
- min-width: max-content;
1494
- font-weight: normal;
1495
- }
1496
-
1497
- .lh-row--group .lh-text {
1498
- color: inherit;
1499
- text-decoration: none;
1500
- display: inline-block;
1501
- }
1502
-
1503
- .lh-row--group a.lh-link:hover {
1504
- text-decoration: underline;
1505
- }
1506
-
1507
- .lh-row--group .lh-audit__adorn {
1508
- text-transform: capitalize;
1509
- font-weight: normal;
1510
- padding: 2px 3px 1px 3px;
1511
- }
1512
-
1513
- .lh-row--group .lh-audit__adorn1p {
1514
- color: var(--link-color);
1515
- border-color: var(--link-color);
1516
- }
1517
-
1518
- .lh-row--group .lh-report-icon--external::before {
1519
- content: "";
1520
- background-repeat: no-repeat;
1521
- width: 14px;
1522
- height: 16px;
1523
- opacity: 0.7;
1524
- display: inline-block;
1525
- vertical-align: middle;
1526
- }
1527
-
1528
- .lh-row--group .lh-report-icon--external {
1529
- visibility: hidden;
1530
- }
1531
-
1532
- .lh-row--group:hover .lh-report-icon--external {
1533
- visibility: visible;
1534
- }
1535
-
1536
- .lh-dark .lh-report-icon--external::before {
1537
- filter: invert(1);
1538
- }
1539
-
1540
- /** Manages indentation of two-level and three-level nested adjacent rows */
1541
-
1542
- .lh-row--group ~ [data-entity]:not(.lh-row--group) td:first-child {
1543
- padding-left: 20px;
1544
- }
1545
-
1546
- .lh-row--group ~ [data-entity]:not(.lh-row--group) ~ .lh-sub-item-row td:first-child {
1547
- padding-left: 40px;
1548
- }
1549
-
1550
- .lh-row--even {
1551
- background-color: var(--table-group-header-background-color);
1552
- }
1553
- .lh-row--hidden {
1554
- display: none;
1555
- }
1556
-
1557
- .lh-table th,
1558
- .lh-table td {
1559
- padding: var(--default-padding);
1560
- }
1561
-
1562
- .lh-table tr {
1563
- vertical-align: middle;
1564
- }
1565
-
1566
- .lh-table tr:hover {
1567
- background-color: var(--table-higlight-background-color);
1568
- }
1569
-
1570
- /* Looks unnecessary, but mostly for keeping the <th>s left-aligned */
1571
- .lh-table-column--text,
1572
- .lh-table-column--source-location,
1573
- .lh-table-column--url,
1574
- /* .lh-table-column--thumbnail, */
1575
- /* .lh-table-column--empty,*/
1576
- .lh-table-column--code,
1577
- .lh-table-column--node {
1578
- text-align: left;
1579
- }
1580
-
1581
- .lh-table-column--code {
1582
- min-width: 100px;
1583
- }
1584
-
1585
- .lh-table-column--bytes,
1586
- .lh-table-column--timespanMs,
1587
- .lh-table-column--ms,
1588
- .lh-table-column--numeric {
1589
- text-align: right;
1590
- word-break: normal;
1591
- }
1592
-
1593
-
1594
-
1595
- .lh-table .lh-table-column--thumbnail {
1596
- width: var(--image-preview-size);
1597
- }
1598
-
1599
- .lh-table-column--url {
1600
- min-width: 250px;
1601
- }
1602
-
1603
- .lh-table-column--text {
1604
- min-width: 80px;
1605
- }
1606
-
1607
- /* Keep columns narrow if they follow the URL column */
1608
- /* 12% was determined to be a decent narrow width, but wide enough for column headings */
1609
- .lh-table-column--url + th.lh-table-column--bytes,
1610
- .lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--bytes,
1611
- .lh-table-column--url + .lh-table-column--ms,
1612
- .lh-table-column--url + .lh-table-column--ms + th.lh-table-column--bytes,
1613
- .lh-table-column--url + .lh-table-column--bytes + th.lh-table-column--timespanMs {
1614
- width: 12%;
1615
- }
1616
-
1617
- .lh-text__url-host {
1618
- display: inline;
1619
- }
1620
-
1621
- .lh-text__url-host {
1622
- margin-left: calc(var(--report-font-size) / 2);
1623
- opacity: 0.6;
1624
- font-size: 90%
1625
- }
1626
-
1627
- .lh-thumbnail {
1628
- object-fit: cover;
1629
- width: var(--image-preview-size);
1630
- height: var(--image-preview-size);
1631
- display: block;
1632
- }
1633
-
1634
- .lh-unknown pre {
1635
- overflow: scroll;
1636
- border: solid 1px var(--color-gray-200);
1637
- }
1638
-
1639
- .lh-text__url > a {
1640
- color: inherit;
1641
- text-decoration: none;
1642
- }
1643
-
1644
- .lh-text__url > a:hover {
1645
- text-decoration: underline dotted #999;
1646
- }
1647
-
1648
- .lh-sub-item-row {
1649
- margin-left: 20px;
1650
- margin-bottom: 0;
1651
- color: var(--color-gray-700);
1652
- }
1653
-
1654
- .lh-sub-item-row td {
1655
- padding-top: 4px;
1656
- padding-bottom: 4px;
1657
- padding-left: 20px;
1658
- }
1659
-
1660
- .lh-sub-item-row .lh-element-screenshot {
1661
- zoom: 0.6;
1662
- }
1663
-
1664
- /* Chevron
1665
- https://codepen.io/paulirish/pen/LmzEmK
1666
- */
1667
- .lh-chevron {
1668
- --chevron-angle: 42deg;
1669
- /* Edge doesn't support transform: rotate(calc(...)), so we define it here */
1670
- --chevron-angle-right: -42deg;
1671
- width: var(--chevron-size);
1672
- height: var(--chevron-size);
1673
- margin-top: calc((var(--report-line-height) - 12px) / 2);
1674
- }
1675
-
1676
- .lh-chevron__lines {
1677
- transition: transform 0.4s;
1678
- transform: translateY(var(--report-line-height));
1679
- }
1680
- .lh-chevron__line {
1681
- stroke: var(--chevron-line-stroke);
1682
- stroke-width: var(--chevron-size);
1683
- stroke-linecap: square;
1684
- transform-origin: 50%;
1685
- transform: rotate(var(--chevron-angle));
1686
- transition: transform 300ms, stroke 300ms;
1687
- }
1688
-
1689
- .lh-expandable-details .lh-chevron__line-right,
1690
- .lh-expandable-details[open] .lh-chevron__line-left {
1691
- transform: rotate(var(--chevron-angle-right));
1692
- }
1693
-
1694
- .lh-expandable-details[open] .lh-chevron__line-right {
1695
- transform: rotate(var(--chevron-angle));
1696
- }
1697
-
1698
-
1699
- .lh-expandable-details[open] .lh-chevron__lines {
1700
- transform: translateY(calc(var(--chevron-size) * -1));
1701
- }
1702
-
1703
- .lh-expandable-details[open] {
1704
- animation: 300ms openDetails forwards;
1705
- padding-bottom: var(--default-padding);
1706
- }
1707
-
1708
- @keyframes openDetails {
1709
- from {
1710
- outline: 1px solid var(--report-background-color);
1711
- }
1712
- to {
1713
- outline: 1px solid;
1714
- box-shadow: 0 2px 4px rgba(0, 0, 0, .24);
1715
- }
1716
- }
1717
-
1718
- @media screen and (max-width: 780px) {
1719
- /* no black outline if we're not confident the entire table can be displayed within bounds */
1720
- .lh-expandable-details[open] {
1721
- animation: none;
1722
- }
1723
- }
1724
-
1725
- .lh-expandable-details[open] summary, details.lh-clump > summary {
1726
- border-bottom: 1px solid var(--report-border-color-secondary);
1727
- }
1728
- details.lh-clump[open] > summary {
1729
- border-bottom-width: 0;
1730
- }
1731
-
1732
-
1733
-
1734
- details .lh-clump-toggletext--hide,
1735
- details[open] .lh-clump-toggletext--show { display: none; }
1736
- details[open] .lh-clump-toggletext--hide { display: block;}
1737
-
1738
-
1739
- /* Tooltip */
1740
- .lh-tooltip-boundary {
1741
- position: relative;
1742
- }
1743
-
1744
- .lh-tooltip {
1745
- position: absolute;
1746
- display: none; /* Don't retain these layers when not needed */
1747
- opacity: 0;
1748
- background: #ffffff;
1749
- white-space: pre-line; /* Render newlines in the text */
1750
- min-width: 246px;
1751
- max-width: 275px;
1752
- padding: 15px;
1753
- border-radius: 5px;
1754
- text-align: initial;
1755
- line-height: 1.4;
1756
- }
1757
- /* shrink tooltips to not be cutoff on left edge of narrow viewports
1758
- 45vw is chosen to be ~= width of the left column of metrics
1759
- */
1760
- @media screen and (max-width: 535px) {
1761
- .lh-tooltip {
1762
- min-width: 45vw;
1763
- padding: 3vw;
1764
- }
1765
- }
1766
-
1767
- .lh-tooltip-boundary:hover .lh-tooltip {
1768
- display: block;
1769
- animation: fadeInTooltip 250ms;
1770
- animation-fill-mode: forwards;
1771
- animation-delay: 850ms;
1772
- bottom: 100%;
1773
- z-index: 1;
1774
- will-change: opacity;
1775
- right: 0;
1776
- pointer-events: none;
1777
- }
1778
-
1779
- .lh-tooltip::before {
1780
- content: "";
1781
- border: solid transparent;
1782
- border-bottom-color: #fff;
1783
- border-width: 10px;
1784
- position: absolute;
1785
- bottom: -20px;
1786
- right: 6px;
1787
- transform: rotate(180deg);
1788
- pointer-events: none;
1789
- }
1790
-
1791
- @keyframes fadeInTooltip {
1792
- 0% { opacity: 0; }
1793
- 75% { opacity: 1; }
1794
- 100% { opacity: 1; filter: drop-shadow(1px 0px 1px #aaa) drop-shadow(0px 2px 4px hsla(206, 6%, 25%, 0.15)); pointer-events: auto; }
1795
- }
1796
-
1797
- /* Element screenshot */
1798
- .lh-element-screenshot {
1799
- float: left;
1800
- margin-right: 20px;
1801
- }
1802
- .lh-element-screenshot__content {
1803
- overflow: hidden;
1804
- min-width: 110px;
1805
- display: flex;
1806
- justify-content: center;
1807
- background-color: var(--report-background-color);
1808
- }
1809
- .lh-element-screenshot__image {
1810
- position: relative;
1811
- /* Set by ElementScreenshotRenderer.installFullPageScreenshotCssVariable */
1812
- background-image: var(--element-screenshot-url);
1813
- outline: 2px solid #777;
1814
- background-color: white;
1815
- background-repeat: no-repeat;
1816
- }
1817
- .lh-element-screenshot__mask {
1818
- position: absolute;
1819
- background: #555;
1820
- opacity: 0.8;
1821
- }
1822
- .lh-element-screenshot__element-marker {
1823
- position: absolute;
1824
- outline: 2px solid var(--color-lime-400);
1825
- }
1826
- .lh-element-screenshot__overlay {
1827
- position: fixed;
1828
- top: 0;
1829
- left: 0;
1830
- right: 0;
1831
- bottom: 0;
1832
- z-index: 2000; /* .lh-topbar is 1000 */
1833
- background: var(--screenshot-overlay-background);
1834
- display: flex;
1835
- align-items: center;
1836
- justify-content: center;
1837
- cursor: zoom-out;
1838
- }
1839
-
1840
- .lh-element-screenshot__overlay .lh-element-screenshot {
1841
- margin-right: 0; /* clearing margin used in thumbnail case */
1842
- outline: 1px solid var(--color-gray-700);
1843
- }
1844
-
1845
- .lh-screenshot-overlay--enabled .lh-element-screenshot {
1846
- cursor: zoom-out;
1847
- }
1848
- .lh-screenshot-overlay--enabled .lh-node .lh-element-screenshot {
1849
- cursor: zoom-in;
1850
- }
1851
-
1852
-
1853
- .lh-meta__items {
1854
- --meta-icon-size: calc(var(--report-icon-size) * 0.667);
1855
- padding: var(--default-padding);
1856
- display: grid;
1857
- grid-template-columns: 1fr 1fr 1fr;
1858
- background-color: var(--env-item-background-color);
1859
- border-radius: 3px;
1860
- margin: 0 0 var(--default-padding) 0;
1861
- font-size: 12px;
1862
- column-gap: var(--default-padding);
1863
- color: var(--color-gray-700);
1864
- }
1865
-
1866
- .lh-meta__item {
1867
- display: block;
1868
- list-style-type: none;
1869
- position: relative;
1870
- padding: 0 0 0 calc(var(--meta-icon-size) + var(--default-padding) * 2);
1871
- cursor: unset; /* disable pointer cursor from report-icon */
1872
- }
1873
-
1874
- .lh-meta__item.lh-tooltip-boundary {
1875
- text-decoration: dotted underline var(--color-gray-500);
1876
- cursor: help;
1877
- }
1878
-
1879
- .lh-meta__item.lh-report-icon::before {
1880
- position: absolute;
1881
- left: var(--default-padding);
1882
- width: var(--meta-icon-size);
1883
- height: var(--meta-icon-size);
1884
- }
1885
-
1886
- .lh-meta__item.lh-report-icon:hover::before {
1887
- opacity: 0.7;
1888
- }
1889
-
1890
- .lh-meta__item .lh-tooltip {
1891
- color: var(--color-gray-800);
1892
- }
1893
-
1894
- .lh-meta__item .lh-tooltip::before {
1895
- right: auto; /* Set the tooltip arrow to the leftside */
1896
- left: 6px;
1897
- }
1898
-
1899
- /* Change the grid for narrow viewport. */
1900
- @media screen and (max-width: 640px) {
1901
- .lh-meta__items {
1902
- grid-template-columns: 1fr 1fr;
1903
- }
1904
- }
1905
- @media screen and (max-width: 535px) {
1906
- .lh-meta__items {
1907
- display: block;
1908
- }
1909
- }
1910
-
1911
- /* Explodey gauge */
1912
-
1913
- .lh-exp-gauge-component {
1914
- margin-bottom: 10px;
1915
- }
1916
-
1917
- .lh-exp-gauge-component circle {
1918
- stroke: currentcolor;
1919
- r: var(--radius);
1920
- }
1921
-
1922
- .lh-exp-gauge-component text {
1923
- font-size: calc(var(--radius) * 0.2);
1924
- }
1925
-
1926
- .lh-exp-gauge-component .lh-exp-gauge {
1927
- margin: 0 auto;
1928
- width: 225px;
1929
- stroke-width: var(--stroke-width);
1930
- stroke-linecap: round;
1931
-
1932
- /* for better rendering perf */
1933
- contain: strict;
1934
- height: 225px;
1935
- will-change: transform;
1936
- }
1937
- .lh-exp-gauge-component .lh-exp-gauge--faded {
1938
- opacity: 0.1;
1939
- }
1940
- .lh-exp-gauge-component .lh-exp-gauge__wrapper {
1941
- font-family: var(--report-font-family-monospace);
1942
- text-align: center;
1943
- text-decoration: none;
1944
- transition: .3s;
1945
- }
1946
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--pass {
1947
- color: var(--color-pass);
1948
- }
1949
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--average {
1950
- color: var(--color-average);
1951
- }
1952
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--fail {
1953
- color: var(--color-fail);
1954
- }
1955
- .lh-exp-gauge-component .state--expanded {
1956
- transition: color .3s;
1957
- }
1958
- .lh-exp-gauge-component .state--highlight {
1959
- color: var(--color-highlight);
1960
- }
1961
- .lh-exp-gauge-component .lh-exp-gauge__svg-wrapper {
1962
- display: flex;
1963
- flex-direction: column-reverse;
1964
- }
1965
-
1966
- .lh-exp-gauge-component .lh-exp-gauge__label {
1967
- fill: var(--report-text-color);
1968
- font-family: var(--report-font-family);
1969
- font-size: 12px;
1970
- }
1971
-
1972
- .lh-exp-gauge-component .lh-exp-gauge__cutout {
1973
- opacity: .999;
1974
- transition: opacity .3s;
1975
- }
1976
- .lh-exp-gauge-component .state--highlight .lh-exp-gauge__cutout {
1977
- opacity: 0;
1978
- }
1979
-
1980
- .lh-exp-gauge-component .lh-exp-gauge__inner {
1981
- color: inherit;
1982
- }
1983
- .lh-exp-gauge-component .lh-exp-gauge__base {
1984
- fill: currentcolor;
1985
- }
1986
-
1987
-
1988
- .lh-exp-gauge-component .lh-exp-gauge__arc {
1989
- fill: none;
1990
- transition: opacity .3s;
1991
- }
1992
- .lh-exp-gauge-component .lh-exp-gauge__arc--metric {
1993
- color: var(--metric-color);
1994
- stroke-dashoffset: var(--metric-offset);
1995
- opacity: 0.3;
1996
- }
1997
- .lh-exp-gauge-component .lh-exp-gauge-hovertarget {
1998
- color: currentcolor;
1999
- opacity: 0.001;
2000
- stroke-linecap: butt;
2001
- stroke-width: 24;
2002
- /* hack. move the hover target out of the center. ideally i tweak the r instead but that rquires considerably more math. */
2003
- transform: scale(1.15);
2004
- }
2005
- .lh-exp-gauge-component .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {
2006
- opacity: 0;
2007
- stroke-dasharray: 0 calc(var(--circle-meas) * var(--radius));
2008
- transition: 0s .005s;
2009
- }
2010
- .lh-exp-gauge-component .state--expanded .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {
2011
- opacity: .999;
2012
- stroke-dasharray: var(--metric-array);
2013
- transition: 0.3s; /* calc(.005s + var(--i)*.05s); entrace animation */
2014
- }
2015
- .lh-exp-gauge-component .state--expanded .lh-exp-gauge__inner .lh-exp-gauge__arc {
2016
- opacity: 0;
2017
- }
2018
-
2019
-
2020
- .lh-exp-gauge-component .lh-exp-gauge__percentage {
2021
- text-anchor: middle;
2022
- dominant-baseline: middle;
2023
- opacity: .999;
2024
- font-size: calc(var(--radius) * 0.625);
2025
- transition: opacity .3s ease-in;
2026
- }
2027
- .lh-exp-gauge-component .state--highlight .lh-exp-gauge__percentage {
2028
- opacity: 0;
2029
- }
2030
-
2031
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--fail .lh-exp-gauge__percentage {
2032
- fill: var(--color-fail);
2033
- }
2034
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--average .lh-exp-gauge__percentage {
2035
- fill: var(--color-average);
2036
- }
2037
- .lh-exp-gauge-component .lh-exp-gauge__wrapper--pass .lh-exp-gauge__percentage {
2038
- fill: var(--color-pass);
2039
- }
2040
-
2041
- .lh-exp-gauge-component .lh-cover {
2042
- fill: none;
2043
- opacity: .001;
2044
- pointer-events: none;
2045
- }
2046
- .lh-exp-gauge-component .state--expanded .lh-cover {
2047
- pointer-events: auto;
2048
- }
2049
-
2050
- .lh-exp-gauge-component .metric {
2051
- transform: scale(var(--scale-initial));
2052
- opacity: 0;
2053
- transition: transform .1s .2s ease-out, opacity .3s ease-out;
2054
- pointer-events: none;
2055
- }
2056
- .lh-exp-gauge-component .metric text {
2057
- pointer-events: none;
2058
- }
2059
- .lh-exp-gauge-component .metric__value {
2060
- fill: currentcolor;
2061
- opacity: 0;
2062
- transition: opacity 0.2s;
2063
- }
2064
- .lh-exp-gauge-component .state--expanded .metric {
2065
- transform: scale(1);
2066
- opacity: .999;
2067
- transition: transform .3s ease-out, opacity .3s ease-in, stroke-width .1s ease-out;
2068
- transition-delay: calc(var(--i)*.05s);
2069
- pointer-events: auto;
2070
- }
2071
- .lh-exp-gauge-component .state--highlight .metric {
2072
- opacity: .3;
2073
- }
2074
- .lh-exp-gauge-component .state--highlight .metric--highlight {
2075
- opacity: .999;
2076
- stroke-width: calc(1.5*var(--stroke-width));
2077
- }
2078
- .lh-exp-gauge-component .state--highlight .metric--highlight .metric__value {
2079
- opacity: 0.999;
2080
- }
2081
-
2082
-
2083
- /*
2084
- the initial first load peek
2085
- */
2086
- .lh-exp-gauge-component .lh-exp-gauge__bg { /* needed for the use zindex stacking w/ transparency */
2087
- fill: var(--report-background-color);
2088
- stroke: var(--report-background-color);
2089
- }
2090
- .lh-exp-gauge-component .state--peek .metric {
2091
- transition-delay: 0ms;
2092
- animation: peek var(--peek-dur) cubic-bezier(0.46, 0.03, 0.52, 0.96);
2093
- animation-fill-mode: forwards;
2094
- }
2095
- .lh-exp-gauge-component .state--peek .lh-exp-gauge__inner .lh-exp-gauge__arc {
2096
- opacity: 1;
2097
- }
2098
- .lh-exp-gauge-component .state--peek .lh-exp-gauge__arc.lh-exp-gauge--faded {
2099
- opacity: 0.3; /* just a tad stronger cuz its fighting with a big solid arg */
2100
- }
2101
- /* do i need to set expanded and override this? */
2102
- .lh-exp-gauge-component .state--peek .lh-exp-gauge__arc--metric.lh-exp-gauge--miniarc {
2103
- transition: opacity 0.3s;
2104
- }
2105
- .lh-exp-gauge-component .state--peek {
2106
- color: unset;
2107
- }
2108
- .lh-exp-gauge-component .state--peek .metric__label {
2109
- display: none;
2110
- }
2111
-
2112
- .lh-exp-gauge-component .metric__label {
2113
- fill: var(--report-text-color);
2114
- }
2115
-
2116
- @keyframes peek {
2117
- /* biggest it should go is 0.92. smallest is 0.8 */
2118
- 0% {
2119
- transform: scale(0.8);
2120
- opacity: 0.8;
2121
- }
2122
-
2123
- 50% {
2124
- transform: scale(0.92);
2125
- opacity: 1;
2126
- }
2127
-
2128
- 100% {
2129
- transform: scale(0.8);
2130
- opacity: 0.8;
2131
- }
2132
- }
2133
-
2134
- .lh-exp-gauge-component .wrapper {
2135
- width: 620px;
2136
- }
2137
-
2138
- /*# sourceURL=report-styles.css */