From 484c6f2de93a7ece01e5d0710b6866e6fae6cbfc Mon Sep 17 00:00:00 2001 From: Adam Raine <6752989+adamraine@users.noreply.github.com> Date: Wed, 17 Apr 2024 11:46:06 -0700 Subject: [PATCH] core: split up `CSSUsage` artifact (#15952) --- .../render-blocking-resources.js | 4 +- core/audits/byte-efficiency/unminified-css.js | 4 +- .../byte-efficiency/unused-css-rules.js | 4 +- core/audits/font-display.js | 4 +- core/computed/unused-css.js | 11 +- core/config/default-config.js | 1 + core/gather/gatherers/css-usage.js | 128 +- core/gather/gatherers/stylesheets.js | 138 ++ .../byte-efficiency/unminified-css-test.js | 8 +- .../byte-efficiency/unused-css-rules-test.js | 47 +- core/test/audits/font-display-test.js | 4 +- core/test/audits/preload-fonts-test.js | 2 +- .../user-flows/artifacts/step0/artifacts.json | 1174 +++++++------ .../user-flows/artifacts/step1/artifacts.json | 1474 ++++++++--------- .../user-flows/artifacts/step3/artifacts.json | 1042 ++++++------ .../reports/sample-flow-result.json | 85 +- core/test/gather/gatherers/css-usage-test.js | 173 +- .../test/gather/gatherers/stylesheets-test.js | 149 ++ core/test/results/artifacts/artifacts.json | 350 ++-- .../__snapshots__/api-test-pptr.js.snap | 3 - core/test/scenarios/stylesheet-tracking.js | 6 +- .../e2e/lighthouse/timespan_test.ts | 2 +- types/artifacts.d.ts | 4 +- 23 files changed, 2400 insertions(+), 2417 deletions(-) create mode 100644 core/gather/gatherers/stylesheets.js create mode 100644 core/test/gather/gatherers/stylesheets-test.js diff --git a/core/audits/byte-efficiency/render-blocking-resources.js b/core/audits/byte-efficiency/render-blocking-resources.js index 898286935514..7c6e16b4c004 100644 --- a/core/audits/byte-efficiency/render-blocking-resources.js +++ b/core/audits/byte-efficiency/render-blocking-resources.js @@ -117,7 +117,8 @@ class RenderBlockingResources extends Audit { guidanceLevel: 2, // TODO: look into adding an `optionalArtifacts` property that captures the non-required nature // of CSSUsage - requiredArtifacts: ['URL', 'traces', 'devtoolsLogs', 'CSSUsage', 'GatherContext', 'Stacks'], + requiredArtifacts: + ['URL', 'traces', 'devtoolsLogs', 'Stylesheets', 'CSSUsage', 'GatherContext', 'Stacks'], }; } @@ -263,6 +264,7 @@ class RenderBlockingResources extends Audit { const wastedBytesByUrl = new Map(); try { const unusedCssItems = await UnusedCSS.request({ + Stylesheets: artifacts.Stylesheets, CSSUsage: artifacts.CSSUsage, devtoolsLog: artifacts.devtoolsLogs[Audit.DEFAULT_PASS], }, context); diff --git a/core/audits/byte-efficiency/unminified-css.js b/core/audits/byte-efficiency/unminified-css.js index f343aefed94c..eddd8d9b8e02 100644 --- a/core/audits/byte-efficiency/unminified-css.js +++ b/core/audits/byte-efficiency/unminified-css.js @@ -37,7 +37,7 @@ class UnminifiedCSS extends ByteEfficiencyAudit { description: str_(UIStrings.description), scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS, guidanceLevel: 3, - requiredArtifacts: ['CSSUsage', 'devtoolsLogs', 'traces', 'URL', 'GatherContext'], + requiredArtifacts: ['Stylesheets', 'devtoolsLogs', 'traces', 'URL', 'GatherContext'], }; } @@ -85,7 +85,7 @@ class UnminifiedCSS extends ByteEfficiencyAudit { */ static audit_(artifacts, networkRecords) { const items = []; - for (const stylesheet of artifacts.CSSUsage.stylesheets) { + for (const stylesheet of artifacts.Stylesheets) { const networkRecord = networkRecords .find(record => record.url === stylesheet.header.sourceURL); if (!stylesheet.content) continue; diff --git a/core/audits/byte-efficiency/unused-css-rules.js b/core/audits/byte-efficiency/unused-css-rules.js index 7f71cbd663f6..61cede8fcf05 100644 --- a/core/audits/byte-efficiency/unused-css-rules.js +++ b/core/audits/byte-efficiency/unused-css-rules.js @@ -34,7 +34,8 @@ class UnusedCSSRules extends ByteEfficiencyAudit { description: str_(UIStrings.description), scoreDisplayMode: ByteEfficiencyAudit.SCORING_MODES.METRIC_SAVINGS, guidanceLevel: 1, - requiredArtifacts: ['CSSUsage', 'URL', 'devtoolsLogs', 'traces', 'GatherContext'], + requiredArtifacts: + ['Stylesheets', 'CSSUsage', 'URL', 'devtoolsLogs', 'traces', 'GatherContext'], }; } @@ -46,6 +47,7 @@ class UnusedCSSRules extends ByteEfficiencyAudit { */ static async audit_(artifacts, _, context) { const unusedCssItems = await UnusedCSS.request({ + Stylesheets: artifacts.Stylesheets, CSSUsage: artifacts.CSSUsage, devtoolsLog: artifacts.devtoolsLogs[ByteEfficiencyAudit.DEFAULT_PASS], }, context); diff --git a/core/audits/font-display.js b/core/audits/font-display.js index 232e23ebfbcd..c8f939d7fc29 100644 --- a/core/audits/font-display.js +++ b/core/audits/font-display.js @@ -50,7 +50,7 @@ class FontDisplay extends Audit { description: str_(UIStrings.description), supportedModes: ['navigation'], guidanceLevel: 3, - requiredArtifacts: ['devtoolsLogs', 'CSSUsage', 'URL'], + requiredArtifacts: ['devtoolsLogs', 'Stylesheets', 'URL'], scoreDisplayMode: Audit.SCORING_MODES.METRIC_SAVINGS, }; } @@ -67,7 +67,7 @@ class FontDisplay extends Audit { const failingURLs = new Set(); // Go through all the stylesheets to find all @font-face declarations - for (const stylesheet of artifacts.CSSUsage.stylesheets) { + for (const stylesheet of artifacts.Stylesheets) { // Eliminate newlines so we can more easily scan through with a regex const newlinesStripped = stylesheet.content.replace(/(\r|\n)+/g, ' '); // Find the @font-faces diff --git a/core/computed/unused-css.js b/core/computed/unused-css.js index 78649e7b8861..eab8948531bc 100644 --- a/core/computed/unused-css.js +++ b/core/computed/unused-css.js @@ -134,15 +134,15 @@ class UnusedCSS { } /** - * @param {{CSSUsage: LH.Artifacts['CSSUsage'], devtoolsLog: LH.DevtoolsLog}} data + * @param {{Stylesheets: LH.Artifacts['Stylesheets'], CSSUsage: LH.Artifacts['CSSUsage'], devtoolsLog: LH.DevtoolsLog}} data * @param {LH.Artifacts.ComputedContext} context * @return {Promise} */ static async compute_(data, context) { - const {CSSUsage, devtoolsLog} = data; + const {CSSUsage, Stylesheets, devtoolsLog} = data; const networkRecords = await NetworkRecords.request(devtoolsLog, context); - const indexedSheets = UnusedCSS.indexStylesheetsById(CSSUsage.stylesheets, networkRecords); - UnusedCSS.indexUsedRules(CSSUsage.rules, indexedSheets); + const indexedSheets = UnusedCSS.indexStylesheetsById(Stylesheets, networkRecords); + UnusedCSS.indexUsedRules(CSSUsage, indexedSheets); const items = Object.keys(indexedSheets) .map(sheetId => UnusedCSS.mapSheetToResult(indexedSheets[sheetId])); @@ -150,5 +150,6 @@ class UnusedCSS { } } -const UnusedCSSComputed = makeComputedArtifact(UnusedCSS, ['CSSUsage', 'devtoolsLog']); +const UnusedCSSComputed = makeComputedArtifact(UnusedCSS, + ['Stylesheets', 'CSSUsage', 'devtoolsLog']); export {UnusedCSSComputed as UnusedCSS}; diff --git a/core/config/default-config.js b/core/config/default-config.js index 381d90ad1c9c..ac261f0ba453 100644 --- a/core/config/default-config.js +++ b/core/config/default-config.js @@ -132,6 +132,7 @@ const defaultConfig = { {id: 'Scripts', gatherer: 'scripts'}, {id: 'SourceMaps', gatherer: 'source-maps'}, {id: 'Stacks', gatherer: 'stacks'}, + {id: 'Stylesheets', gatherer: 'stylesheets'}, {id: 'TraceElements', gatherer: 'trace-elements'}, {id: 'ViewportDimensions', gatherer: 'viewport-dimensions'}, diff --git a/core/gather/gatherers/css-usage.js b/core/gather/gatherers/css-usage.js index f89069280dc2..20904601dec3 100644 --- a/core/gather/gatherers/css-usage.js +++ b/core/gather/gatherers/css-usage.js @@ -8,145 +8,35 @@ * @fileoverview Tracks unused CSS rules. */ -import log from 'lighthouse-logger'; - import BaseGatherer from '../base-gatherer.js'; -import {Sentry} from '../../lib/sentry.js'; class CSSUsage extends BaseGatherer { - constructor() { - super(); - /** @type {LH.Gatherer.ProtocolSession|undefined} */ - this._session = undefined; - /** @type {Map>} */ - this._sheetPromises = new Map(); - /** - * Initialize as undefined so we can assert results are fetched. - * @type {LH.Crdp.CSS.RuleUsage[]|undefined} - */ - this._ruleUsage = undefined; - this._onStylesheetAdded = this._onStylesheetAdded.bind(this); - } - /** @type {LH.Gatherer.GathererMeta} */ meta = { - supportedModes: ['snapshot', 'timespan', 'navigation'], + supportedModes: ['snapshot', 'navigation'], }; - /** - * @param {LH.Crdp.CSS.StyleSheetAddedEvent} event - */ - _onStylesheetAdded(event) { - if (!this._session) throw new Error('Session not initialized'); - const styleSheetId = event.header.styleSheetId; - const sheetPromise = this._session.sendCommand('CSS.getStyleSheetText', {styleSheetId}) - .then(content => ({ - header: event.header, - content: content.text, - })) - .catch(/** @param {Error} err */ (err) => { - log.warn( - 'CSSUsage', - `Error fetching content of stylesheet with URL "${event.header.sourceURL}"` - ); - Sentry.captureException(err, { - tags: { - gatherer: 'CSSUsage', - }, - extra: { - url: event.header.sourceURL, - }, - level: 'error', - }); - return err; - }); - this._sheetPromises.set(styleSheetId, sheetPromise); - } - /** * @param {LH.Gatherer.Context} context + * @return {Promise} */ - async startInstrumentation(context) { + async getArtifact(context) { const session = context.driver.defaultSession; - this._session = session; - - // Calling `CSS.enable` will emit events for stylesheets currently on the page. - // We want to ignore these events in navigation mode because they are not relevant to the - // navigation that is about to happen. Adding the event listener *after* calling `CSS.enable` - // ensures that the events for pre-existing stylesheets are ignored. - const isNavigation = context.gatherMode === 'navigation'; - if (!isNavigation) { - session.on('CSS.styleSheetAdded', this._onStylesheetAdded); - } + const executionContext = context.driver.executionContext; await session.sendCommand('DOM.enable'); await session.sendCommand('CSS.enable'); await session.sendCommand('CSS.startRuleUsageTracking'); - if (isNavigation) { - session.on('CSS.styleSheetAdded', this._onStylesheetAdded); - } - } - - - /** - * @param {LH.Gatherer.Context} context - */ - async stopInstrumentation(context) { - const session = context.driver.defaultSession; - const coverageResponse = await session.sendCommand('CSS.stopRuleUsageTracking'); - this._ruleUsage = coverageResponse.ruleUsage; - session.off('CSS.styleSheetAdded', this._onStylesheetAdded); - - // Ensure we finish fetching all stylesheet contents before disabling the CSS domain - await Promise.all(this._sheetPromises.values()); + // Force style to recompute. + // Doesn't appear to be necessary in newer versions of Chrome. + await executionContext.evaluateAsync('getComputedStyle(document.body)'); + const {ruleUsage} = await session.sendCommand('CSS.stopRuleUsageTracking'); await session.sendCommand('CSS.disable'); await session.sendCommand('DOM.disable'); - } - - /** - * @param {LH.Gatherer.Context} context - * @return {Promise} - */ - async getArtifact(context) { - const executionContext = context.driver.executionContext; - - if (context.gatherMode === 'snapshot') { - await this.startInstrumentation(context); - - // Force style to recompute. - // Doesn't appear to be necessary in newer versions of Chrome. - await executionContext.evaluateAsync('getComputedStyle(document.body)'); - - await this.stopInstrumentation(context); - } - - /** @type {Map} */ - const dedupedStylesheets = new Map(); - const sheets = await Promise.all(this._sheetPromises.values()); - - for (const sheet of sheets) { - // Erroneous sheets will be reported via sentry and the log. - // We can ignore them here without throwing a fatal error. - if (sheet instanceof Error) { - continue; - } - - // Exclude empty stylesheets. - if (sheet.header.length === 0) { - continue; - } - - dedupedStylesheets.set(sheet.content, sheet); - } - - if (!this._ruleUsage) throw new Error('Issue collecting rule usages'); - return { - rules: this._ruleUsage, - stylesheets: Array.from(dedupedStylesheets.values()), - }; + return ruleUsage; } } diff --git a/core/gather/gatherers/stylesheets.js b/core/gather/gatherers/stylesheets.js new file mode 100644 index 000000000000..e08b6926e03f --- /dev/null +++ b/core/gather/gatherers/stylesheets.js @@ -0,0 +1,138 @@ +/** + * @license + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Collects all stylesheets and their contents. + */ + +import log from 'lighthouse-logger'; + +import BaseGatherer from '../base-gatherer.js'; +import {Sentry} from '../../lib/sentry.js'; + +class Stylesheets extends BaseGatherer { + constructor() { + super(); + /** @type {LH.Gatherer.ProtocolSession|undefined} */ + this._session = undefined; + /** @type {Map>} */ + this._sheetPromises = new Map(); + this._onStylesheetAdded = this._onStylesheetAdded.bind(this); + } + + /** @type {LH.Gatherer.GathererMeta} */ + meta = { + supportedModes: ['snapshot', 'timespan', 'navigation'], + }; + + /** + * @param {LH.Crdp.CSS.StyleSheetAddedEvent} event + */ + _onStylesheetAdded(event) { + if (!this._session) throw new Error('Session not initialized'); + const styleSheetId = event.header.styleSheetId; + const sheetPromise = this._session.sendCommand('CSS.getStyleSheetText', {styleSheetId}) + .then(content => ({ + header: event.header, + content: content.text, + })) + .catch(err => { + log.warn( + 'Stylesheets', + `Error fetching content of stylesheet with URL "${event.header.sourceURL}"` + ); + Sentry.captureException(err, { + tags: { + gatherer: 'Stylesheets', + }, + extra: { + url: event.header.sourceURL, + }, + level: 'error', + }); + return null; + }); + this._sheetPromises.set(styleSheetId, sheetPromise); + } + + /** + * @param {LH.Gatherer.Context} context + */ + async startInstrumentation(context) { + const session = context.driver.defaultSession; + this._session = session; + + // Calling `CSS.enable` will emit events for stylesheets currently on the page. + // We want to ignore these events in navigation mode because they are not relevant to the + // navigation that is about to happen. Adding the event listener *after* calling `CSS.enable` + // ensures that the events for pre-existing stylesheets are ignored. + const isNavigation = context.gatherMode === 'navigation'; + if (!isNavigation) { + session.on('CSS.styleSheetAdded', this._onStylesheetAdded); + } + + await session.sendCommand('DOM.enable'); + await session.sendCommand('CSS.enable'); + + if (isNavigation) { + session.on('CSS.styleSheetAdded', this._onStylesheetAdded); + } + } + + + /** + * @param {LH.Gatherer.Context} context + */ + async stopInstrumentation(context) { + const session = context.driver.defaultSession; + session.off('CSS.styleSheetAdded', this._onStylesheetAdded); + + // Ensure we finish fetching all stylesheet contents before disabling the CSS domain + await Promise.all(this._sheetPromises.values()); + + await session.sendCommand('CSS.disable'); + await session.sendCommand('DOM.disable'); + } + + /** + * @param {LH.Gatherer.Context} context + * @return {Promise} + */ + async getArtifact(context) { + const executionContext = context.driver.executionContext; + + if (context.gatherMode === 'snapshot') { + await this.startInstrumentation(context); + + // Force style to recompute. + // Doesn't appear to be necessary in newer versions of Chrome. + await executionContext.evaluateAsync('getComputedStyle(document.body)'); + + await this.stopInstrumentation(context); + } + + /** @type {Map} */ + const dedupedStylesheets = new Map(); + const sheets = await Promise.all(this._sheetPromises.values()); + + for (const sheet of sheets) { + // Erroneous sheets will be reported via sentry and the log. + // We can ignore them here without throwing a fatal error. + if (!sheet) continue; + + // Exclude empty stylesheets. + if (sheet.header.length === 0) { + continue; + } + + dedupedStylesheets.set(sheet.content, sheet); + } + + return Array.from(dedupedStylesheets.values()); + } +} + +export default Stylesheets; diff --git a/core/test/audits/byte-efficiency/unminified-css-test.js b/core/test/audits/byte-efficiency/unminified-css-test.js index 9c65ff578de7..bd47f5a0f865 100644 --- a/core/test/audits/byte-efficiency/unminified-css-test.js +++ b/core/test/audits/byte-efficiency/unminified-css-test.js @@ -16,7 +16,7 @@ describe('Page uses optimized css', () => { const auditResult = UnminifiedCssAudit.audit_( { URL: {finalDisplayedUrl: ''}, - CSSUsage: {stylesheets: [ + Stylesheets: [ { header: {sourceURL: 'foo.css'}, content: ` @@ -41,7 +41,7 @@ describe('Page uses optimized css', () => { } `.replace(/\n\s+/g, '\n'), }, - ]}, + ], }, [ {url: 'foo.css', transferSize: 20 * KB, resourceType}, @@ -62,7 +62,7 @@ describe('Page uses optimized css', () => { const auditResult = UnminifiedCssAudit.audit_( { URL: {finalDisplayedUrl: ''}, - CSSUsage: {stylesheets: [ + Stylesheets: [ {header: {sourceURL: 'foo.css'}, content: '#id{width:100px;}'}, { header: {sourceURL: 'other.css'}, @@ -77,7 +77,7 @@ describe('Page uses optimized css', () => { header: {sourceURL: 'invalid.css'}, content: '/* a broken comment .clasz { width: 0; }', }, - ]}, + ], }, [ {url: 'foo.css', transferSize: 20 * KB, resourceType}, diff --git a/core/test/audits/byte-efficiency/unused-css-rules-test.js b/core/test/audits/byte-efficiency/unused-css-rules-test.js index 40cdf0da618c..c9711ac9da49 100644 --- a/core/test/audits/byte-efficiency/unused-css-rules-test.js +++ b/core/test/audits/byte-efficiency/unused-css-rules-test.js @@ -30,11 +30,12 @@ describe('Best Practices: unused css rules audit', () => { const context = {computedCache: new Map()}; - function getArtifacts({CSSUsage, networkRecords = defaultNetworkRecords}) { + function getArtifacts({rules, stylesheets, networkRecords = defaultNetworkRecords}) { return { devtoolsLogs: {defaultPass: networkRecordsToDevtoolsLog(networkRecords)}, URL: {finalDisplayedUrl: ''}, - CSSUsage, + CSSUsage: rules, + Stylesheets: stylesheets, }; } @@ -44,7 +45,7 @@ describe('Best Practices: unused css rules audit', () => { it('ignores missing stylesheets', () => { return UnusedCSSAudit.audit_(getArtifacts({ - CSSUsage: {rules: [{styleSheetId: 'a', used: false}], stylesheets: []}, + rules: [{styleSheetId: 'a', used: false}], stylesheets: [], }), defaultNetworkRecords, context).then(result => { assert.equal(result.items.length, 0); }); @@ -52,11 +53,12 @@ describe('Best Practices: unused css rules audit', () => { it('ignores stylesheets that are 100% used', () => { return UnusedCSSAudit.audit_(getArtifacts({ - CSSUsage: {rules: [ + rules: [ {styleSheetId: 'a', used: true}, {styleSheetId: 'a', used: true}, {styleSheetId: 'b', used: true}, - ], stylesheets: [ + ], + stylesheets: [ { header: {styleSheetId: 'a', sourceURL: 'file://a.css'}, content: '.my.selector {color: #ccc;}\n a {color: #fff}', @@ -65,7 +67,7 @@ describe('Best Practices: unused css rules audit', () => { header: {styleSheetId: 'b', sourceURL: 'file://b.css'}, content: '.my.favorite.selector { rule: content; }', }, - ]}, + ], }), defaultNetworkRecords, context).then(result => { assert.equal(result.items.length, 0); }); @@ -73,10 +75,11 @@ describe('Best Practices: unused css rules audit', () => { it('fails when lots of rules are unused', () => { return UnusedCSSAudit.audit_(getArtifacts({ - CSSUsage: {rules: [ + rules: [ {styleSheetId: 'a', used: true, startOffset: 0, endOffset: 11}, // 44 * 25% = 11 {styleSheetId: 'b', used: true, startOffset: 0, endOffset: 60000}, // 40000 * 3 * 50% = 60000 - ], stylesheets: [ + ], + stylesheets: [ { header: {styleSheetId: 'a', sourceURL: 'file://a.css'}, content: '.my.selector {color: #ccc;}\n a {color: #fff}', @@ -89,7 +92,7 @@ describe('Best Practices: unused css rules audit', () => { header: {styleSheetId: 'c', sourceURL: ''}, content: `${generate('123', 450)}`, // will be filtered out }, - ]}, + ], }), defaultNetworkRecords, context).then(result => { assert.equal(result.items.length, 2); assert.equal(result.items[0].totalBytes, 100 * 1024); @@ -116,16 +119,15 @@ describe('Best Practices: unused css rules audit', () => { }, ]; const artifacts = getArtifacts({ - CSSUsage: { - rules: [ - {styleSheetId: 'a', used: true, startOffset: 0, endOffset: 60000}, // 40000 * 3 * 50% = 60000 - ], stylesheets: [ - { - header: {styleSheetId: 'a', sourceURL: 'file://a.html'}, - content: `${generate('123', 40000)}`, // stylesheet size of 40000 * 3 uncompressed bytes - }, - ], - }, + rules: [ + {styleSheetId: 'a', used: true, startOffset: 0, endOffset: 60000}, // 40000 * 3 * 50% = 60000 + ], + stylesheets: [ + { + header: {styleSheetId: 'a', sourceURL: 'file://a.html'}, + content: `${generate('123', 40000)}`, // stylesheet size of 40000 * 3 uncompressed bytes + }, + ], networkRecords, }); @@ -137,10 +139,11 @@ describe('Best Practices: unused css rules audit', () => { it('does not include empty or small sheets', () => { return UnusedCSSAudit.audit_(getArtifacts({ - CSSUsage: {rules: [ + rules: [ {styleSheetId: 'a', used: true, startOffset: 0, endOffset: 8000}, // 4000 * 3 / 2 {styleSheetId: 'b', used: true, startOffset: 0, endOffset: 500}, // 500 * 3 / 3 - ], stylesheets: [ + ], + stylesheets: [ { header: {styleSheetId: 'a', sourceURL: 'file://a.css'}, content: `${generate('123', 4000)}`, @@ -161,7 +164,7 @@ describe('Best Practices: unused css rules audit', () => { header: {styleSheetId: 'e', sourceURL: 'file://e.css'}, content: ' ', }, - ]}, + ], }), defaultNetworkRecords, context).then(result => { assert.equal(result.items.length, 1); assert.equal(Math.floor(result.items[0].wastedPercent), 33); diff --git a/core/test/audits/font-display-test.js b/core/test/audits/font-display-test.js index 1f96c65143aa..f7f9929aeaab 100644 --- a/core/test/audits/font-display-test.js +++ b/core/test/audits/font-display-test.js @@ -21,7 +21,7 @@ describe('Performance: Font Display audit', () => { return { devtoolsLogs: {[FontDisplayAudit.DEFAULT_PASS]: networkRecordsToDevtoolsLog(networkRecords)}, URL: {finalDisplayedUrl: 'https://example.com/foo/bar/page'}, - CSSUsage: {stylesheets: [stylesheet]}, + Stylesheets: [stylesheet], }; } @@ -314,7 +314,7 @@ describe('Performance: Font Display audit', () => { }]; const artifacts = getArtifacts(); - artifacts.CSSUsage.stylesheets = [ + artifacts.Stylesheets = [ {content: '', header: {}}, { content: ` diff --git a/core/test/audits/preload-fonts-test.js b/core/test/audits/preload-fonts-test.js index 82643cea5a8f..08abdfbab2a4 100644 --- a/core/test/audits/preload-fonts-test.js +++ b/core/test/audits/preload-fonts-test.js @@ -21,7 +21,7 @@ describe('Preload Fonts Audit', () => { return { devtoolsLogs: {[PreloadFontsAudit.DEFAULT_PASS]: networkRecordsToDevtoolsLog(networkRecords)}, URL: {finalDisplayedUrl: 'https://example.com/foo/bar/page'}, - CSSUsage: {stylesheets: [stylesheet]}, + Stylesheets: [stylesheet], }; } diff --git a/core/test/fixtures/user-flows/artifacts/step0/artifacts.json b/core/test/fixtures/user-flows/artifacts/step0/artifacts.json index 74435ba2f0b9..490b7837a7a8 100644 --- a/core/test/fixtures/user-flows/artifacts/step0/artifacts.json +++ b/core/test/fixtures/user-flows/artifacts/step0/artifacts.json @@ -1093,592 +1093,548 @@ } ], "ConsoleMessages": [], - "CSSUsage": { - "rules": [ - { - "styleSheetId": "32033.0", - "startOffset": 1584, - "endOffset": 1646, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 6150, - "endOffset": 6174, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11357, - "endOffset": 11596, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 142, - "endOffset": 194, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1325, - "endOffset": 1539, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 5864, - "endOffset": 6113, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 95, - "endOffset": 142, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 194, - "endOffset": 320, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1539, - "endOffset": 1584, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8811, - "endOffset": 8830, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8901, - "endOffset": 8933, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8959, - "endOffset": 8992, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9874, - "endOffset": 9918, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10389, - "endOffset": 10420, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11265, - "endOffset": 11293, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12811, - "endOffset": 12830, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 14208, - "endOffset": 14253, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9278, - "endOffset": 9296, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10189, - "endOffset": 10214, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 7576, - "endOffset": 7662, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8588, - "endOffset": 8667, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10598, - "endOffset": 10631, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10978, - "endOffset": 11025, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11237, - "endOffset": 11265, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12847, - "endOffset": 12864, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8872, - "endOffset": 8901, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 2260, - "endOffset": 2343, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8724, - "endOffset": 8755, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9239, - "endOffset": 9258, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11654, - "endOffset": 11733, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 14089, - "endOffset": 14140, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8992, - "endOffset": 9031, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9123, - "endOffset": 9146, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 2034, - "endOffset": 2060, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 6113, - "endOffset": 6150, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8851, - "endOffset": 8872, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8776, - "endOffset": 8811, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10020, - "endOffset": 10043, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9175, - "endOffset": 9202, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9473, - "endOffset": 9520, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11623, - "endOffset": 11654, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 14140, - "endOffset": 14208, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1269, - "endOffset": 1303, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1303, - "endOffset": 1325, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 6355, - "endOffset": 6534, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1077, - "endOffset": 1137, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1978, - "endOffset": 2034, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10143, - "endOffset": 10165, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10336, - "endOffset": 10362, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1670, - "endOffset": 1693, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 2343, - "endOffset": 2380, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9335, - "endOffset": 9353, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10261, - "endOffset": 10286, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10286, - "endOffset": 10309, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 744, - "endOffset": 843, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 2060, - "endOffset": 2142, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 2380, - "endOffset": 2664, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8150, - "endOffset": 8236, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8362, - "endOffset": 8396, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8755, - "endOffset": 8776, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9520, - "endOffset": 9548, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9548, - "endOffset": 9586, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10670, - "endOffset": 10688, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11117, - "endOffset": 11145, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12756, - "endOffset": 12774, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12774, - "endOffset": 12792, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1856, - "endOffset": 1911, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 3462, - "endOffset": 3527, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9586, - "endOffset": 9613, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 843, - "endOffset": 877, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 877, - "endOffset": 938, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1137, - "endOffset": 1195, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 1911, - "endOffset": 1947, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 7067, - "endOffset": 7151, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10165, - "endOffset": 10189, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10800, - "endOffset": 10845, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10935, - "endOffset": 10978, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12552, - "endOffset": 12588, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9146, - "endOffset": 9175, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 9410, - "endOffset": 9430, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11215, - "endOffset": 11237, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11293, - "endOffset": 11306, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11306, - "endOffset": 11321, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 12864, - "endOffset": 12881, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 8933, - "endOffset": 8959, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10468, - "endOffset": 10491, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10651, - "endOffset": 10670, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 11733, - "endOffset": 11815, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 14044, - "endOffset": 14089, - "used": true - }, - { - "styleSheetId": "32033.0", - "startOffset": 10068, - "endOffset": 10094, - "used": true - } - ], - "stylesheets": [ - { - "header": { - "styleSheetId": "32033.0", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", - "origin": "regular", - "title": "", - "ownerNode": 52, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 18126, - "endLine": 0, - "endColumn": 18126 - }, - "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" - }, - { - "header": { - "styleSheetId": "32033.1", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", - "origin": "regular", - "title": "", - "ownerNode": 61, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 3282, - "endLine": 81, - "endColumn": 0 - }, - "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" - } - ] - }, + "CSSUsage": [ + { + "styleSheetId": "32033.0", + "startOffset": 1584, + "endOffset": 1646, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 6150, + "endOffset": 6174, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11357, + "endOffset": 11596, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 142, + "endOffset": 194, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1325, + "endOffset": 1539, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 5864, + "endOffset": 6113, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 95, + "endOffset": 142, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 194, + "endOffset": 320, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1539, + "endOffset": 1584, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8811, + "endOffset": 8830, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8901, + "endOffset": 8933, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8959, + "endOffset": 8992, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9874, + "endOffset": 9918, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10389, + "endOffset": 10420, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11265, + "endOffset": 11293, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12811, + "endOffset": 12830, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 14208, + "endOffset": 14253, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9278, + "endOffset": 9296, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10189, + "endOffset": 10214, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 7576, + "endOffset": 7662, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8588, + "endOffset": 8667, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10598, + "endOffset": 10631, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10978, + "endOffset": 11025, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11237, + "endOffset": 11265, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12847, + "endOffset": 12864, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8872, + "endOffset": 8901, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 2260, + "endOffset": 2343, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8724, + "endOffset": 8755, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9239, + "endOffset": 9258, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11654, + "endOffset": 11733, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 14089, + "endOffset": 14140, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8992, + "endOffset": 9031, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9123, + "endOffset": 9146, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 2034, + "endOffset": 2060, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 6113, + "endOffset": 6150, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8851, + "endOffset": 8872, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8776, + "endOffset": 8811, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10020, + "endOffset": 10043, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9175, + "endOffset": 9202, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9473, + "endOffset": 9520, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11623, + "endOffset": 11654, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 14140, + "endOffset": 14208, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1269, + "endOffset": 1303, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1303, + "endOffset": 1325, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 6355, + "endOffset": 6534, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1077, + "endOffset": 1137, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1978, + "endOffset": 2034, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10143, + "endOffset": 10165, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10336, + "endOffset": 10362, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1670, + "endOffset": 1693, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 2343, + "endOffset": 2380, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9335, + "endOffset": 9353, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10261, + "endOffset": 10286, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10286, + "endOffset": 10309, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 744, + "endOffset": 843, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 2060, + "endOffset": 2142, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 2380, + "endOffset": 2664, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8150, + "endOffset": 8236, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8362, + "endOffset": 8396, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8755, + "endOffset": 8776, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9520, + "endOffset": 9548, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9548, + "endOffset": 9586, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10670, + "endOffset": 10688, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11117, + "endOffset": 11145, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12756, + "endOffset": 12774, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12774, + "endOffset": 12792, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1856, + "endOffset": 1911, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 3462, + "endOffset": 3527, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9586, + "endOffset": 9613, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 843, + "endOffset": 877, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 877, + "endOffset": 938, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1137, + "endOffset": 1195, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 1911, + "endOffset": 1947, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 7067, + "endOffset": 7151, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10165, + "endOffset": 10189, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10800, + "endOffset": 10845, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10935, + "endOffset": 10978, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12552, + "endOffset": 12588, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9146, + "endOffset": 9175, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 9410, + "endOffset": 9430, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11215, + "endOffset": 11237, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11293, + "endOffset": 11306, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11306, + "endOffset": 11321, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 12864, + "endOffset": 12881, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 8933, + "endOffset": 8959, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10468, + "endOffset": 10491, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10651, + "endOffset": 10670, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 11733, + "endOffset": 11815, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 14044, + "endOffset": 14089, + "used": true + }, + { + "styleSheetId": "32033.0", + "startOffset": 10068, + "endOffset": 10094, + "used": true + } + ], "Doctype": { "name": "html", "publicId": "", @@ -20706,5 +20662,47 @@ "HostProduct": "Chrome/121.0.6110.0", "RootCauses": { "layoutShifts": {} - } -} + }, + "Stylesheets": [ + { + "header": { + "styleSheetId": "32033.0", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", + "origin": "regular", + "title": "", + "ownerNode": 52, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 18126, + "endLine": 0, + "endColumn": 18126 + }, + "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" + }, + { + "header": { + "styleSheetId": "32033.1", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", + "origin": "regular", + "title": "", + "ownerNode": 61, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 3282, + "endLine": 81, + "endColumn": 0 + }, + "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" + } + ] +} \ No newline at end of file diff --git a/core/test/fixtures/user-flows/artifacts/step1/artifacts.json b/core/test/fixtures/user-flows/artifacts/step1/artifacts.json index ec1e4eaf06a4..67c10ab090f4 100644 --- a/core/test/fixtures/user-flows/artifacts/step1/artifacts.json +++ b/core/test/fixtures/user-flows/artifacts/step1/artifacts.json @@ -329,742 +329,698 @@ "errors": [] }, "ConsoleMessages": [], - "CSSUsage": { - "rules": [ - { - "styleSheetId": "32033.17", - "startOffset": 1584, - "endOffset": 1646, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 6150, - "endOffset": 6174, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11357, - "endOffset": 11596, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 142, - "endOffset": 194, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1325, - "endOffset": 1539, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 5864, - "endOffset": 6113, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 95, - "endOffset": 142, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 194, - "endOffset": 320, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1539, - "endOffset": 1584, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8811, - "endOffset": 8830, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8901, - "endOffset": 8933, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8959, - "endOffset": 8992, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9874, - "endOffset": 9918, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10389, - "endOffset": 10420, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11265, - "endOffset": 11293, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12811, - "endOffset": 12830, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 14208, - "endOffset": 14253, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9278, - "endOffset": 9296, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10189, - "endOffset": 10214, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 7576, - "endOffset": 7662, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8588, - "endOffset": 8667, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10598, - "endOffset": 10631, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10978, - "endOffset": 11025, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11237, - "endOffset": 11265, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12847, - "endOffset": 12864, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8872, - "endOffset": 8901, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2260, - "endOffset": 2343, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8724, - "endOffset": 8755, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9239, - "endOffset": 9258, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11654, - "endOffset": 11733, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 14089, - "endOffset": 14140, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8992, - "endOffset": 9031, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9123, - "endOffset": 9146, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2034, - "endOffset": 2060, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 6113, - "endOffset": 6150, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8851, - "endOffset": 8872, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8776, - "endOffset": 8811, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10020, - "endOffset": 10043, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9175, - "endOffset": 9202, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9473, - "endOffset": 9520, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11623, - "endOffset": 11654, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 14140, - "endOffset": 14208, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1269, - "endOffset": 1303, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1303, - "endOffset": 1325, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 6355, - "endOffset": 6534, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1077, - "endOffset": 1137, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1978, - "endOffset": 2034, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10143, - "endOffset": 10165, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10336, - "endOffset": 10362, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1670, - "endOffset": 1693, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2343, - "endOffset": 2380, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9335, - "endOffset": 9353, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10261, - "endOffset": 10286, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10286, - "endOffset": 10309, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 744, - "endOffset": 843, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2060, - "endOffset": 2142, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2380, - "endOffset": 2664, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8150, - "endOffset": 8236, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8362, - "endOffset": 8396, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8755, - "endOffset": 8776, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9520, - "endOffset": 9548, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9548, - "endOffset": 9586, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10670, - "endOffset": 10688, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11117, - "endOffset": 11145, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12756, - "endOffset": 12774, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12774, - "endOffset": 12792, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1856, - "endOffset": 1911, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 3462, - "endOffset": 3527, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9586, - "endOffset": 9613, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 843, - "endOffset": 877, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 877, - "endOffset": 938, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1137, - "endOffset": 1195, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1911, - "endOffset": 1947, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 7067, - "endOffset": 7151, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10165, - "endOffset": 10189, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10800, - "endOffset": 10845, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10935, - "endOffset": 10978, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12552, - "endOffset": 12588, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9146, - "endOffset": 9175, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9410, - "endOffset": 9430, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11215, - "endOffset": 11237, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11293, - "endOffset": 11306, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11306, - "endOffset": 11321, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12864, - "endOffset": 12881, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8933, - "endOffset": 8959, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10468, - "endOffset": 10491, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10651, - "endOffset": 10670, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11733, - "endOffset": 11815, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 14044, - "endOffset": 14089, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10068, - "endOffset": 10094, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 2664, - "endOffset": 3304, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8048, - "endOffset": 8150, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 1195, - "endOffset": 1269, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9258, - "endOffset": 9278, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8396, - "endOffset": 8428, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9372, - "endOffset": 9391, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12215, - "endOffset": 12295, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12721, - "endOffset": 12738, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 13954, - "endOffset": 14044, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10420, - "endOffset": 10444, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10444, - "endOffset": 10468, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9613, - "endOffset": 9657, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10043, - "endOffset": 10068, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 7491, - "endOffset": 7576, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 8328, - "endOffset": 8362, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10309, - "endOffset": 10336, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12704, - "endOffset": 12721, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9430, - "endOffset": 9473, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9657, - "endOffset": 9689, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11815, - "endOffset": 11897, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 9918, - "endOffset": 9942, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 10362, - "endOffset": 10389, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 12484, - "endOffset": 12552, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 11897, - "endOffset": 11976, - "used": true - }, - { - "styleSheetId": "32033.17", - "startOffset": 7751, - "endOffset": 7851, - "used": true - } - ], - "stylesheets": [ - { - "header": { - "styleSheetId": "32033.17", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", - "origin": "regular", - "title": "", - "ownerNode": 52, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 18126, - "endLine": 0, - "endColumn": 18126 - }, - "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" - }, - { - "header": { - "styleSheetId": "32033.18", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", - "origin": "regular", - "title": "", - "ownerNode": 61, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 3282, - "endLine": 81, - "endColumn": 0 - }, - "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" - } - ] - }, + "CSSUsage": [ + { + "styleSheetId": "32033.17", + "startOffset": 1584, + "endOffset": 1646, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 6150, + "endOffset": 6174, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11357, + "endOffset": 11596, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 142, + "endOffset": 194, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1325, + "endOffset": 1539, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 5864, + "endOffset": 6113, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 95, + "endOffset": 142, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 194, + "endOffset": 320, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1539, + "endOffset": 1584, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8811, + "endOffset": 8830, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8901, + "endOffset": 8933, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8959, + "endOffset": 8992, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9874, + "endOffset": 9918, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10389, + "endOffset": 10420, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11265, + "endOffset": 11293, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12811, + "endOffset": 12830, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 14208, + "endOffset": 14253, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9278, + "endOffset": 9296, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10189, + "endOffset": 10214, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 7576, + "endOffset": 7662, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8588, + "endOffset": 8667, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10598, + "endOffset": 10631, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10978, + "endOffset": 11025, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11237, + "endOffset": 11265, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12847, + "endOffset": 12864, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8872, + "endOffset": 8901, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2260, + "endOffset": 2343, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8724, + "endOffset": 8755, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9239, + "endOffset": 9258, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11654, + "endOffset": 11733, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 14089, + "endOffset": 14140, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8992, + "endOffset": 9031, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9123, + "endOffset": 9146, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2034, + "endOffset": 2060, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 6113, + "endOffset": 6150, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8851, + "endOffset": 8872, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8776, + "endOffset": 8811, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10020, + "endOffset": 10043, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9175, + "endOffset": 9202, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9473, + "endOffset": 9520, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11623, + "endOffset": 11654, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 14140, + "endOffset": 14208, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1269, + "endOffset": 1303, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1303, + "endOffset": 1325, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 6355, + "endOffset": 6534, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1077, + "endOffset": 1137, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1978, + "endOffset": 2034, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10143, + "endOffset": 10165, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10336, + "endOffset": 10362, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1670, + "endOffset": 1693, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2343, + "endOffset": 2380, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9335, + "endOffset": 9353, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10261, + "endOffset": 10286, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10286, + "endOffset": 10309, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 744, + "endOffset": 843, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2060, + "endOffset": 2142, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2380, + "endOffset": 2664, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8150, + "endOffset": 8236, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8362, + "endOffset": 8396, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8755, + "endOffset": 8776, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9520, + "endOffset": 9548, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9548, + "endOffset": 9586, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10670, + "endOffset": 10688, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11117, + "endOffset": 11145, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12756, + "endOffset": 12774, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12774, + "endOffset": 12792, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1856, + "endOffset": 1911, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 3462, + "endOffset": 3527, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9586, + "endOffset": 9613, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 843, + "endOffset": 877, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 877, + "endOffset": 938, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1137, + "endOffset": 1195, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1911, + "endOffset": 1947, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 7067, + "endOffset": 7151, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10165, + "endOffset": 10189, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10800, + "endOffset": 10845, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10935, + "endOffset": 10978, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12552, + "endOffset": 12588, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9146, + "endOffset": 9175, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9410, + "endOffset": 9430, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11215, + "endOffset": 11237, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11293, + "endOffset": 11306, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11306, + "endOffset": 11321, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12864, + "endOffset": 12881, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8933, + "endOffset": 8959, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10468, + "endOffset": 10491, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10651, + "endOffset": 10670, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11733, + "endOffset": 11815, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 14044, + "endOffset": 14089, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10068, + "endOffset": 10094, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 2664, + "endOffset": 3304, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8048, + "endOffset": 8150, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 1195, + "endOffset": 1269, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9258, + "endOffset": 9278, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8396, + "endOffset": 8428, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9372, + "endOffset": 9391, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12215, + "endOffset": 12295, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12721, + "endOffset": 12738, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 13954, + "endOffset": 14044, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10420, + "endOffset": 10444, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10444, + "endOffset": 10468, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9613, + "endOffset": 9657, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10043, + "endOffset": 10068, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 7491, + "endOffset": 7576, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 8328, + "endOffset": 8362, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10309, + "endOffset": 10336, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12704, + "endOffset": 12721, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9430, + "endOffset": 9473, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9657, + "endOffset": 9689, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11815, + "endOffset": 11897, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 9918, + "endOffset": 9942, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 10362, + "endOffset": 10389, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 12484, + "endOffset": 12552, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 11897, + "endOffset": 11976, + "used": true + }, + { + "styleSheetId": "32033.17", + "startOffset": 7751, + "endOffset": 7851, + "used": true + } + ], "GlobalListeners": [ { "type": "visibilitychange", @@ -10927,5 +10883,47 @@ ] } } - } -} + }, + "Stylesheets": [ + { + "header": { + "styleSheetId": "32033.17", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", + "origin": "regular", + "title": "", + "ownerNode": 52, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 18126, + "endLine": 0, + "endColumn": 18126 + }, + "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" + }, + { + "header": { + "styleSheetId": "32033.18", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", + "origin": "regular", + "title": "", + "ownerNode": 61, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 3282, + "endLine": 81, + "endColumn": 0 + }, + "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" + } + ] +} \ No newline at end of file diff --git a/core/test/fixtures/user-flows/artifacts/step3/artifacts.json b/core/test/fixtures/user-flows/artifacts/step3/artifacts.json index 4a183ad46e9e..4c69a55f011f 100644 --- a/core/test/fixtures/user-flows/artifacts/step3/artifacts.json +++ b/core/test/fixtures/user-flows/artifacts/step3/artifacts.json @@ -1084,526 +1084,482 @@ } ], "ConsoleMessages": [], - "CSSUsage": { - "rules": [ - { - "styleSheetId": "32033.64", - "startOffset": 1584, - "endOffset": 1646, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 6150, - "endOffset": 6174, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11357, - "endOffset": 11596, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 142, - "endOffset": 194, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1325, - "endOffset": 1539, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 5864, - "endOffset": 6113, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 95, - "endOffset": 142, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 194, - "endOffset": 320, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1539, - "endOffset": 1584, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8811, - "endOffset": 8830, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8901, - "endOffset": 8933, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8959, - "endOffset": 8992, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9874, - "endOffset": 9918, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10389, - "endOffset": 10420, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11265, - "endOffset": 11293, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 12811, - "endOffset": 12830, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 14208, - "endOffset": 14253, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9278, - "endOffset": 9296, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10189, - "endOffset": 10214, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 7576, - "endOffset": 7662, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8588, - "endOffset": 8667, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10598, - "endOffset": 10631, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10978, - "endOffset": 11025, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11237, - "endOffset": 11265, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 12847, - "endOffset": 12864, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8872, - "endOffset": 8901, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 2260, - "endOffset": 2343, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8724, - "endOffset": 8755, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9239, - "endOffset": 9258, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11654, - "endOffset": 11733, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 14089, - "endOffset": 14140, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8992, - "endOffset": 9031, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9123, - "endOffset": 9146, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 2034, - "endOffset": 2060, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 6113, - "endOffset": 6150, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1670, - "endOffset": 1693, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 2343, - "endOffset": 2380, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9258, - "endOffset": 9278, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8776, - "endOffset": 8811, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10020, - "endOffset": 10043, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9175, - "endOffset": 9202, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9473, - "endOffset": 9520, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11623, - "endOffset": 11654, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 14140, - "endOffset": 14208, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1269, - "endOffset": 1303, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1303, - "endOffset": 1325, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 6355, - "endOffset": 6534, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 7067, - "endOffset": 7151, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8396, - "endOffset": 8428, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10670, - "endOffset": 10688, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1077, - "endOffset": 1137, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1978, - "endOffset": 2034, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9548, - "endOffset": 9586, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9586, - "endOffset": 9613, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9833, - "endOffset": 9874, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8362, - "endOffset": 8396, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9353, - "endOffset": 9372, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 744, - "endOffset": 843, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 2060, - "endOffset": 2142, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10143, - "endOffset": 10165, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 2380, - "endOffset": 2664, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1693, - "endOffset": 1718, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 843, - "endOffset": 877, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 877, - "endOffset": 938, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1137, - "endOffset": 1195, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 1911, - "endOffset": 1947, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 7491, - "endOffset": 7576, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10651, - "endOffset": 10670, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8851, - "endOffset": 8872, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 9410, - "endOffset": 9430, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11215, - "endOffset": 11237, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11293, - "endOffset": 11306, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11306, - "endOffset": 11321, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 12864, - "endOffset": 12881, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 8933, - "endOffset": 8959, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10468, - "endOffset": 10491, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 11733, - "endOffset": 11815, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 14044, - "endOffset": 14089, - "used": true - }, - { - "styleSheetId": "32033.64", - "startOffset": 10068, - "endOffset": 10094, - "used": true - } - ], - "stylesheets": [ - { - "header": { - "styleSheetId": "32033.64", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", - "origin": "regular", - "title": "", - "ownerNode": 933, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 18126, - "endLine": 0, - "endColumn": 18126 - }, - "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" - }, - { - "header": { - "styleSheetId": "32033.65", - "frameId": "6B7B62084170FF8A201077D06215638B", - "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", - "origin": "regular", - "title": "", - "ownerNode": 942, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 3282, - "endLine": 81, - "endColumn": 0 - }, - "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" - } - ] - }, + "CSSUsage": [ + { + "styleSheetId": "32033.64", + "startOffset": 1584, + "endOffset": 1646, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 6150, + "endOffset": 6174, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11357, + "endOffset": 11596, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 142, + "endOffset": 194, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1325, + "endOffset": 1539, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 5864, + "endOffset": 6113, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 95, + "endOffset": 142, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 194, + "endOffset": 320, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1539, + "endOffset": 1584, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8811, + "endOffset": 8830, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8901, + "endOffset": 8933, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8959, + "endOffset": 8992, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9874, + "endOffset": 9918, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10389, + "endOffset": 10420, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11265, + "endOffset": 11293, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 12811, + "endOffset": 12830, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 14208, + "endOffset": 14253, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9278, + "endOffset": 9296, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10189, + "endOffset": 10214, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 7576, + "endOffset": 7662, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8588, + "endOffset": 8667, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10598, + "endOffset": 10631, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10978, + "endOffset": 11025, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11237, + "endOffset": 11265, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 12847, + "endOffset": 12864, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8872, + "endOffset": 8901, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 2260, + "endOffset": 2343, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8724, + "endOffset": 8755, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9239, + "endOffset": 9258, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11654, + "endOffset": 11733, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 14089, + "endOffset": 14140, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8992, + "endOffset": 9031, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9123, + "endOffset": 9146, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 2034, + "endOffset": 2060, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 6113, + "endOffset": 6150, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1670, + "endOffset": 1693, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 2343, + "endOffset": 2380, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9258, + "endOffset": 9278, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8776, + "endOffset": 8811, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10020, + "endOffset": 10043, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9175, + "endOffset": 9202, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9473, + "endOffset": 9520, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11623, + "endOffset": 11654, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 14140, + "endOffset": 14208, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1269, + "endOffset": 1303, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1303, + "endOffset": 1325, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 6355, + "endOffset": 6534, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 7067, + "endOffset": 7151, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8396, + "endOffset": 8428, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10670, + "endOffset": 10688, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1077, + "endOffset": 1137, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1978, + "endOffset": 2034, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9548, + "endOffset": 9586, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9586, + "endOffset": 9613, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9833, + "endOffset": 9874, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8362, + "endOffset": 8396, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9353, + "endOffset": 9372, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 744, + "endOffset": 843, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 2060, + "endOffset": 2142, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10143, + "endOffset": 10165, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 2380, + "endOffset": 2664, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1693, + "endOffset": 1718, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 843, + "endOffset": 877, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 877, + "endOffset": 938, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1137, + "endOffset": 1195, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 1911, + "endOffset": 1947, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 7491, + "endOffset": 7576, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10651, + "endOffset": 10670, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8851, + "endOffset": 8872, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 9410, + "endOffset": 9430, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11215, + "endOffset": 11237, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11293, + "endOffset": 11306, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11306, + "endOffset": 11321, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 12864, + "endOffset": 12881, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 8933, + "endOffset": 8959, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10468, + "endOffset": 10491, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 11733, + "endOffset": 11815, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 14044, + "endOffset": 14089, + "used": true + }, + { + "styleSheetId": "32033.64", + "startOffset": 10068, + "endOffset": 10094, + "used": true + } + ], "Doctype": { "name": "html", "publicId": "", @@ -20630,5 +20586,47 @@ "HostProduct": "Chrome/121.0.6110.0", "RootCauses": { "layoutShifts": {} - } -} + }, + "Stylesheets": [ + { + "header": { + "styleSheetId": "32033.64", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://www.mikescerealshack.co/_next/static/css/08dcb440d7d83b488817.css", + "origin": "regular", + "title": "", + "ownerNode": 933, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 18126, + "endLine": 0, + "endColumn": 18126 + }, + "content": "/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[type=email],[type=number],[type=search],[type=text],[type=time],[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,select:focus,textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}select{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}[type=checkbox],select{-webkit-print-color-adjust:exact;color-adjust:exact}[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0}[type=checkbox]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}[type=checkbox]:checked{background-size:100% 100%;background-position:50%;background-repeat:no-repeat;background-image:url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")}[type=checkbox]:checked,[type=checkbox]:checked:focus,[type=checkbox]:checked:hover{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{border-color:transparent;background-color:currentColor}body,html{padding:0;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh;--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}a{color:inherit;text-decoration:none}*{box-sizing:border-box}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.bg-red-800{--tw-bg-opacity:1;background-color:rgba(153,27,27,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(37,99,235,var(--tw-bg-opacity))}.bg-teal-dark{--tw-bg-opacity:1;background-color:rgba(12,33,46,var(--tw-bg-opacity))}.bg-teal-medium{--tw-bg-opacity:1;background-color:rgba(2,65,84,var(--tw-bg-opacity))}.bg-teal-bright{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\\:bg-red-500:hover{--tw-bg-opacity:1;background-color:rgba(239,68,68,var(--tw-bg-opacity))}.hover\\:bg-teal-bright:hover{--tw-bg-opacity:1;background-color:rgba(49,214,198,var(--tw-bg-opacity))}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.border{border-width:1px}.border-l{border-left-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.flex-grow{flex-grow:1}.font-normal{font-weight:400}.font-bold{font-weight:700}.h-2{height:.5rem}.h-3{height:.75rem}.h-6{height:1.5rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-27{height:6.75rem}.h-32{height:8rem}.h-40{height:10rem}.h-64{height:16rem}.h-96{height:24rem}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-6{margin-top:1.5rem}.mb-8{margin-bottom:2rem}.mt-12{margin-top:3rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.disabled\\:opacity-50:disabled{opacity:.5}.hover\\:outline-red:hover{outline:2px solid red;outline-offset:0}.overflow-hidden{overflow:hidden}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.pl-2{padding-left:.5rem}.pb-3{padding-bottom:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pl-8{padding-left:2rem}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-0{top:0}.left-0{left:0}.top-8{top:2rem}.right-8{right:2rem}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-teal-dark{--tw-text-opacity:1;color:rgba(12,33,46,var(--tw-text-opacity))}.hover\\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\\:text-teal-bright:hover{--tw-text-opacity:1;color:rgba(49,214,198,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppercase{text-transform:uppercase}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.w-6{width:1.5rem}.w-28{width:7rem}.w-32{width:8rem}.w-48{width:12rem}.w-64{width:16rem}.w-80{width:20rem}.w-256{width:64rem}.w-full{width:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.hover\\:z-10:hover{z-index:10}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.text-2xs{font-size:.5rem;line-height:.75rem}.drop-shadow{filter:drop-shadow(1px 1px 1px black)}.font-daniel{font-family:Daniel,Comic Sans MS,Comic Sans,sans-serif}.font-poppins{font-family:Poppins,sans-serif}@font-face{font-family:Daniel;font-weight:400;src:url(/fonts/daniel.woff2) format(\"woff2\"),url(/fonts/daniel.woff) format(\"woff\");font-display:swap}@font-face{font-family:Daniel;font-weight:600;src:url(/fonts/danielbd.woff2) format(\"woff2\"),url(/fonts/danielbd.woff) format(\"woff\");font-display:swap}@media (min-width:640px){.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:hidden{display:none}.sm\\:flex-row{flex-direction:row}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-center{align-items:center}.sm\\:h-24{height:6rem}.sm\\:h-44{height:11rem}.sm\\:h-48{height:12rem}.sm\\:text-xs{font-size:.75rem;line-height:1rem}.sm\\:mr-2{margin-right:.5rem}.sm\\:mt-8{margin-top:2rem}.sm\\:max-w-60{max-width:15rem}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}.sm\\:w-44{width:11rem}.sm\\:w-128{width:32rem}.sm\\:w-auto{width:auto}.sm\\:w-1\\/2{width:50%}.sm\\:w-3\\/4{width:75%}}@media (min-width:768px){.md\\:inline{display:inline}.md\\:flex-row{flex-direction:row}.md\\:h-60{height:15rem}.md\\:mt-24{margin-top:6rem}.md\\:pt-0{padding-top:0}.md\\:pr-2{padding-right:.5rem}.md\\:pl-2{padding-left:.5rem}.md\\:w-1\\/2{width:50%}.md\\:w-1\\/3{width:33.333333%}.md\\:w-2\\/3{width:66.666667%}}@media (min-width:1024px){.lg\\:inline{display:inline}.lg\\:h-36{height:9rem}.lg\\:h-80{height:20rem}.lg\\:mb-16{margin-bottom:4rem}.lg\\:w-64{width:16rem}.lg\\:w-192{width:48rem}.lg\\:w-1\\/4{width:25%}}@media (min-width:1280px){.xl\\:inline{display:inline}.xl\\:w-256{width:64rem}}.share-button__link{text-decoration:none;color:#fff;margin:.5em}@media (min-width:640px){.share-button__link:first-child{margin-left:0}.share-button__link:last-child{margin-right:0}}.share-button{display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;transition:25ms ease-out;padding:.5em .75em;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.share-button__icon{display:inline-block}.share-button__icon svg{width:1em;height:1em;margin-right:.4em;vertical-align:top}.share-button--small svg{margin:0;vertical-align:middle}.share-button__icon--solid,.share-button__icon--solidcircle{fill:#fff;stroke:none}.share-button--twitter:hover{background-color:#2795e9}.share-button--pinterest:hover{background-color:#8c0615}.share-button--facebook:hover{background-color:#2d4373}.share-button--tumblr{background-color:#35465c}.share-button--tumblr:hover{background-color:#222d3c}.share-button--reddit:hover{background-color:#3a80c1}.share-button--google{background-color:#dd4b39}.share-button--google:hover{background-color:#c23321}.share-button--linkedin{background-color:#0077b5}.share-button--linkedin:hover{background-color:#046293}.share-button--email{background-color:#777}.share-button--email:hover{background-color:#5e5e5e}.share-button--xing{background-color:#1a7576}.share-button--xing:hover{background-color:#114c4c}.share-button--whatsapp{background-color:#25d366}.share-button--whatsapp:hover{background-color:#1da851}.share-button--hackernews{background-color:#f60}.share-button--hackernews:focus,.share-button--hackernews:hover{background-color:#fb6200}.share-button--vk{background-color:#507299}.share-button--vk:hover{background-color:#43648c}.share-button--facebook{background-color:#3b5998;border-color:#3b5998}.share-button--facebook:active,.share-button--facebook:hover{background-color:#2d4373;border-color:#2d4373}.share-button--twitter{background-color:#55acee;border-color:#55acee}.share-button--twitter:active,.share-button--twitter:hover{background-color:#2795e9;border-color:#2795e9}.share-button--pinterest{background-color:#bd081c;border-color:#bd081c}.share-button--pinterest:active,.share-button--pinterest:hover{background-color:#8c0615;border-color:#8c0615}.share-button--reddit{background-color:#5f99cf;border-color:#5f99cf}.share-button--reddit:active,.share-button--reddit:hover{background-color:#3a80c1;border-color:#3a80c1}" + }, + { + "header": { + "styleSheetId": "32033.65", + "frameId": "6B7B62084170FF8A201077D06215638B", + "sourceURL": "https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap", + "origin": "regular", + "title": "", + "ownerNode": 942, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 3282, + "endLine": 81, + "endColumn": 0 + }, + "content": "/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* devanagari */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Poppins';\n font-style: normal;\n font-weight: 700;\n font-display: swap;\n src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n" + } + ] +} \ No newline at end of file diff --git a/core/test/fixtures/user-flows/reports/sample-flow-result.json b/core/test/fixtures/user-flows/reports/sample-flow-result.json index 9a3265123d45..a29ef6f9838e 100644 --- a/core/test/fixtures/user-flows/reports/sample-flow-result.json +++ b/core/test/fixtures/user-flows/reports/sample-flow-result.json @@ -9798,38 +9798,6 @@ }, "guidanceLevel": 3 }, - "unused-css-rules": { - "id": "unused-css-rules", - "title": "Reduce unused CSS", - "description": "Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. [Learn how to reduce unused CSS](https://developer.chrome.com/docs/lighthouse/performance/unused-css-rules/).", - "score": 1, - "scoreDisplayMode": "metricSavings", - "numericValue": 0, - "numericUnit": "millisecond", - "displayValue": "", - "metricSavings": { - "FCP": 0, - "LCP": 0 - }, - "details": { - "type": "opportunity", - "headings": [], - "items": [], - "overallSavingsMs": 0, - "overallSavingsBytes": 0, - "sortedBy": [ - "wastedBytes" - ], - "debugData": { - "type": "debugdata", - "metricSavings": { - "FCP": 0, - "LCP": 0 - } - } - }, - "guidanceLevel": 1 - }, "unused-javascript": { "id": "unused-javascript", "title": "Reduce unused JavaScript", @@ -10424,11 +10392,6 @@ "weight": 0, "group": "diagnostics" }, - { - "id": "unused-css-rules", - "weight": 0, - "group": "diagnostics" - }, { "id": "unused-javascript", "weight": 0, @@ -11392,108 +11355,96 @@ }, { "startTime": 86, - "name": "lh:audit:unused-css-rules", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 87, - "name": "lh:computed:UnusedCSS", - "duration": 1, - "entryType": "measure" - }, - { - "startTime": 88, "name": "lh:audit:unused-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 89, + "startTime": 87, "name": "lh:audit:modern-image-formats", "duration": 1, "entryType": "measure" }, { - "startTime": 90, + "startTime": 88, "name": "lh:audit:uses-optimized-images", "duration": 1, "entryType": "measure" }, { - "startTime": 91, + "startTime": 89, "name": "lh:audit:uses-text-compression", "duration": 1, "entryType": "measure" }, { - "startTime": 92, + "startTime": 90, "name": "lh:audit:uses-responsive-images", "duration": 1, "entryType": "measure" }, { - "startTime": 93, + "startTime": 91, "name": "lh:computed:ImageRecords", "duration": 1, "entryType": "measure" }, { - "startTime": 94, + "startTime": 92, "name": "lh:audit:efficient-animated-content", "duration": 1, "entryType": "measure" }, { - "startTime": 95, + "startTime": 93, "name": "lh:audit:duplicated-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 96, + "startTime": 94, "name": "lh:audit:legacy-javascript", "duration": 1, "entryType": "measure" }, { - "startTime": 97, + "startTime": 95, "name": "lh:audit:inspector-issues", "duration": 1, "entryType": "measure" }, { - "startTime": 98, + "startTime": 96, "name": "lh:audit:no-document-write", "duration": 1, "entryType": "measure" }, { - "startTime": 99, + "startTime": 97, "name": "lh:audit:uses-passive-event-listeners", "duration": 1, "entryType": "measure" }, { - "startTime": 100, + "startTime": 98, "name": "lh:audit:work-during-interaction", "duration": 1, "entryType": "measure" }, { - "startTime": 101, + "startTime": 99, "name": "lh:audit:bf-cache", "duration": 1, "entryType": "measure" }, { - "startTime": 102, + "startTime": 100, "name": "lh:runner:generate", "duration": 1, "entryType": "measure" } ], - "total": 103 + "total": 101 }, "i18n": { "rendererFormattedStrings": { @@ -11893,12 +11844,6 @@ "core/audits/byte-efficiency/unminified-javascript.js | description": [ "audits[unminified-javascript].description" ], - "core/audits/byte-efficiency/unused-css-rules.js | title": [ - "audits[unused-css-rules].title" - ], - "core/audits/byte-efficiency/unused-css-rules.js | description": [ - "audits[unused-css-rules].description" - ], "core/audits/byte-efficiency/unused-javascript.js | title": [ "audits[unused-javascript].title" ], diff --git a/core/test/gather/gatherers/css-usage-test.js b/core/test/gather/gatherers/css-usage-test.js index 98d7a4e82f82..7b825bf4919d 100644 --- a/core/test/gather/gatherers/css-usage-test.js +++ b/core/test/gather/gatherers/css-usage-test.js @@ -5,175 +5,36 @@ */ import CSSUsage from '../../../gather/gatherers/css-usage.js'; -import {defaultSettings} from '../../../config/constants.js'; -import {createMockDriver, createMockBaseArtifacts} from '../mock-driver.js'; -import {flushAllTimersAndMicrotasks, timers} from '../../test-utils.js'; - -describe('.getArtifact', () => { - before(() => timers.useFakeTimers()); - after(() => timers.dispose()); +import {createMockContext} from '../mock-driver.js'; +describe('CSSUsage gatherer', () => { it('gets CSS usage', async () => { - const driver = createMockDriver(); - driver.defaultSession.on - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '2'}}); - driver.defaultSession.sendCommand - .mockResponse('DOM.enable') - // @ts-expect-error - Force events to emit. - .mockResponse('CSS.enable', flushAllTimersAndMicrotasks) - .mockResponse('CSS.startRuleUsageTracking') - .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) - .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 2'}) - .mockResponse('CSS.stopRuleUsageTracking', { - ruleUsage: [ - {styleSheetId: '1', used: true}, - {styleSheetId: '2', used: false}, - ], - }) - .mockResponse('CSS.disable') - .mockResponse('DOM.disable'); - - /** @type {LH.Gatherer.Context} */ - const context = { - driver: driver.asDriver(), - page: driver._page.asPage(), - gatherMode: 'snapshot', - computedCache: new Map(), - baseArtifacts: createMockBaseArtifacts(), - dependencies: {}, - settings: defaultSettings, - }; - const gatherer = new CSSUsage(); - const artifact = await gatherer.getArtifact(context); - - expect(artifact).toEqual({ - stylesheets: [ - { - header: {styleSheetId: '1'}, - content: 'CSS text 1', - }, - { - header: {styleSheetId: '2'}, - content: 'CSS text 2', - }, - ], - rules: [ - { - styleSheetId: '1', - used: true, - }, - { - styleSheetId: '2', - used: false, - }, - ], - }); - }); - - it('ignores sheet if there was an error fetching content', async () => { - const driver = createMockDriver(); - driver.defaultSession.on - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '2'}}); - driver.defaultSession.sendCommand + const context = createMockContext(); + context.driver.defaultSession.sendCommand .mockResponse('DOM.enable') .mockResponse('CSS.enable') .mockResponse('CSS.startRuleUsageTracking') - .mockResponse('CSS.getStyleSheetText', () => { - throw new Error('Sheet not found'); - }) - .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 2'}) - .mockResponse('CSS.stopRuleUsageTracking', { - ruleUsage: [ - {styleSheetId: '2', used: false}, - ], - }) - .mockResponse('CSS.disable') - .mockResponse('DOM.disable'); - - /** @type {LH.Gatherer.Context} */ - const context = { - driver: driver.asDriver(), - page: driver._page.asPage(), - gatherMode: 'timespan', - computedCache: new Map(), - baseArtifacts: createMockBaseArtifacts(), - dependencies: {}, - settings: defaultSettings, - }; - - const gatherer = new CSSUsage(); - await gatherer.startInstrumentation(context); - - // Force events to emit. - await flushAllTimersAndMicrotasks(1); - - await gatherer.stopInstrumentation(context); - const artifact = await gatherer.getArtifact(context); - - expect(artifact).toEqual({ - stylesheets: [ - { - header: {styleSheetId: '2'}, - content: 'CSS text 2', - }, - ], - rules: [ - { - styleSheetId: '2', - used: false, - }, - ], - }); - }); - - it('dedupes stylesheets', async () => { - const driver = createMockDriver(); - driver.defaultSession.on - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) - .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}); - driver.defaultSession.sendCommand - .mockResponse('DOM.enable') - // @ts-expect-error - Force events to emit. - .mockResponse('CSS.enable', flushAllTimersAndMicrotasks) - .mockResponse('CSS.startRuleUsageTracking') - .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) - .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) .mockResponse('CSS.stopRuleUsageTracking', { ruleUsage: [ {styleSheetId: '1', used: true}, + {styleSheetId: '2', used: false}, ], }) .mockResponse('CSS.disable') .mockResponse('DOM.disable'); - /** @type {LH.Gatherer.Context} */ - const context = { - driver: driver.asDriver(), - page: driver._page.asPage(), - gatherMode: 'snapshot', - computedCache: new Map(), - baseArtifacts: createMockBaseArtifacts(), - dependencies: {}, - settings: defaultSettings, - }; const gatherer = new CSSUsage(); - const artifact = await gatherer.getArtifact(context); - - expect(artifact).toEqual({ - stylesheets: [ - { - header: {styleSheetId: '1'}, - content: 'CSS text 1', - }, - ], - rules: [ - { - styleSheetId: '1', - used: true, - }, - ], - }); + const artifact = await gatherer.getArtifact(context.asContext()); + + expect(artifact).toEqual([ + { + styleSheetId: '1', + used: true, + }, + { + styleSheetId: '2', + used: false, + }, + ]); }); }); diff --git a/core/test/gather/gatherers/stylesheets-test.js b/core/test/gather/gatherers/stylesheets-test.js new file mode 100644 index 000000000000..29206f428450 --- /dev/null +++ b/core/test/gather/gatherers/stylesheets-test.js @@ -0,0 +1,149 @@ +/** + * @license + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import Stylesheets from '../../../gather/gatherers/stylesheets.js'; +import {createMockContext} from '../mock-driver.js'; +import {flushAllTimersAndMicrotasks, timers} from '../../test-utils.js'; + +describe('Stylesheets gatherer', () => { + before(() => timers.useFakeTimers()); + after(() => timers.dispose()); + + it('gets stylesheets', async () => { + const context = createMockContext(); + context.driver.defaultSession.on + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '2'}}); + context.driver.defaultSession.sendCommand + .mockResponse('DOM.enable') + // @ts-expect-error - Force events to emit. + .mockResponse('CSS.enable', flushAllTimersAndMicrotasks) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 2'}) + .mockResponse('CSS.disable') + .mockResponse('DOM.disable'); + + const gatherer = new Stylesheets(); + await gatherer.startInstrumentation(context.asContext()); + + // Force events to emit. + await flushAllTimersAndMicrotasks(1); + + await gatherer.stopInstrumentation(context.asContext()); + const artifact = await gatherer.getArtifact(context.asContext()); + + expect(artifact).toEqual([ + { + header: {styleSheetId: '1'}, + content: 'CSS text 1', + }, + { + header: {styleSheetId: '2'}, + content: 'CSS text 2', + }, + ]); + }); + + it('gets stylesheets in snapshot mode', async () => { + const context = createMockContext(); + context.driver.defaultSession.on + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '2'}}); + context.driver.defaultSession.sendCommand + .mockResponse('DOM.enable') + // @ts-expect-error - Force events to emit. + .mockResponse('CSS.enable', flushAllTimersAndMicrotasks) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 2'}) + .mockResponse('CSS.disable') + .mockResponse('DOM.disable'); + + context.gatherMode = 'snapshot'; + + const gatherer = new Stylesheets(); + const artifact = await gatherer.getArtifact(context.asContext()); + + expect(artifact).toEqual([ + { + header: {styleSheetId: '1'}, + content: 'CSS text 1', + }, + { + header: {styleSheetId: '2'}, + content: 'CSS text 2', + }, + ]); + }); + + it('ignores sheet if there was an error fetching content', async () => { + const context = createMockContext(); + context.driver.defaultSession.on + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '2'}}); + context.driver.defaultSession.sendCommand + .mockResponse('DOM.enable') + .mockResponse('CSS.enable') + .mockResponse('CSS.getStyleSheetText', () => { + throw new Error('Sheet not found'); + }) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 2'}) + .mockResponse('CSS.disable') + .mockResponse('DOM.disable'); + + const gatherer = new Stylesheets(); + await gatherer.startInstrumentation(context.asContext()); + + // Force events to emit. + await flushAllTimersAndMicrotasks(1); + + await gatherer.stopInstrumentation(context.asContext()); + const artifact = await gatherer.getArtifact(context.asContext()); + + expect(artifact).toEqual([ + { + header: {styleSheetId: '2'}, + content: 'CSS text 2', + }, + ]); + }); + + it('dedupes stylesheets', async () => { + const context = createMockContext(); + context.driver.defaultSession.on + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}) + .mockEvent('CSS.styleSheetAdded', {header: {styleSheetId: '1'}}); + context.driver.defaultSession.sendCommand + .mockResponse('DOM.enable') + // @ts-expect-error - Force events to emit. + .mockResponse('CSS.enable', flushAllTimersAndMicrotasks) + .mockResponse('CSS.startRuleUsageTracking') + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) + .mockResponse('CSS.getStyleSheetText', {text: 'CSS text 1'}) + .mockResponse('CSS.stopRuleUsageTracking', { + ruleUsage: [ + {styleSheetId: '1', used: true}, + ], + }) + .mockResponse('CSS.disable') + .mockResponse('DOM.disable'); + + const gatherer = new Stylesheets(); + await gatherer.startInstrumentation(context.asContext()); + + // Force events to emit. + await flushAllTimersAndMicrotasks(1); + + await gatherer.stopInstrumentation(context.asContext()); + const artifact = await gatherer.getArtifact(context.asContext()); + + expect(artifact).toEqual([ + { + header: {styleSheetId: '1'}, + content: 'CSS text 1', + }, + ]); + }); +}); diff --git a/core/test/results/artifacts/artifacts.json b/core/test/results/artifacts/artifacts.json index b5bf84c9912c..547a3ec607ca 100644 --- a/core/test/results/artifacts/artifacts.json +++ b/core/test/results/artifacts/artifacts.json @@ -575,180 +575,56 @@ } ], "PageLoadError": null, - "CSSUsage": { - "rules": [ - { - "styleSheetId": "31161.1", - "startOffset": 1, - "endOffset": 52, - "used": true - }, - { - "styleSheetId": "31161.0", - "startOffset": 3, - "endOffset": 78, - "used": true - }, - { - "styleSheetId": "31161.2", - "startOffset": 605, - "endOffset": 639, - "used": true - }, - { - "styleSheetId": "31161.4", - "startOffset": 605, - "endOffset": 639, - "used": true - }, - { - "styleSheetId": "31161.5", - "startOffset": 3, - "endOffset": 30, - "used": true - }, - { - "styleSheetId": "31161.7", - "startOffset": 605, - "endOffset": 639, - "used": true - }, - { - "styleSheetId": "31161.8", - "startOffset": 605, - "endOffset": 639, - "used": true - }, - { - "styleSheetId": "31161.9", - "startOffset": 605, - "endOffset": 639, - "used": true - } - ], - "stylesheets": [ - { - "header": { - "styleSheetId": "31161.1", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", - "origin": "regular", - "title": "", - "ownerNode": 26, - "disabled": false, - "isInline": true, - "isMutable": false, - "isConstructed": false, - "startLine": 229, - "startColumn": 7, - "length": 53, - "endLine": 234, - "endColumn": 0 - }, - "content": "\n.small-button {\n display: block;\n width: 200px;\n}\n" - }, - { - "header": { - "styleSheetId": "31161.0", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", - "origin": "regular", - "title": "", - "ownerNode": 20, - "disabled": false, - "isInline": true, - "isMutable": false, - "isConstructed": false, - "startLine": 486, - "startColumn": 7, - "length": 229, - "endLine": 503, - "endColumn": 0 - }, - "content": "\n #animated-boi {\n animation: 3s badanim;\n border: 1px solid black;\n }\n\n @keyframes badanim {\n from {\n margin-left: 100%;\n height: 50px;\n }\n\n to {\n margin-left: 0%;\n height: 200px;\n }\n }\n" - }, - { - "header": { - "styleSheetId": "31161.9", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", - "origin": "regular", - "title": "", - "ownerNode": 34, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 689, - "endLine": 12, - "endColumn": 0 - }, - "content": "/**\n * @license Copyright 2016 Google LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n */\n\nbody {\n background-color: #eee;\n}\n.doesnotapply {\n display: flexbox; /* FAIL */\n}\n" - }, - { - "header": { - "styleSheetId": "31161.3", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "", - "origin": "regular", - "title": "", - "ownerNode": 28, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 83, - "endLine": 4, - "endColumn": 2 - }, - "content": "\n body /deep/ div {\n color: pink; /* FAIL - deprecation warning */\n }\n " - }, - { - "header": { - "styleSheetId": "31161.5", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", - "origin": "regular", - "title": "", - "ownerNode": 30, - "disabled": false, - "isInline": true, - "isMutable": false, - "isConstructed": false, - "startLine": 63, - "startColumn": 7, - "length": 119, - "endLine": 71, - "endColumn": 0 - }, - "content": "\n body {\n color: #000;\n }\n .failedselector {\n -webkit-box-flex: 1; /* FAIL */\n box-flex: 1; /* FAIL */\n }\n" - }, - { - "header": { - "styleSheetId": "31161.6", - "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", - "sourceURL": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", - "origin": "regular", - "title": "", - "ownerNode": 31, - "disabled": false, - "isInline": false, - "isMutable": false, - "isConstructed": false, - "startLine": 0, - "startColumn": 0, - "length": 0, - "endLine": 0, - "endColumn": 0 - }, - "content": "" - } - ] - }, + "CSSUsage": [ + { + "styleSheetId": "31161.1", + "startOffset": 1, + "endOffset": 52, + "used": true + }, + { + "styleSheetId": "31161.0", + "startOffset": 3, + "endOffset": 78, + "used": true + }, + { + "styleSheetId": "31161.2", + "startOffset": 605, + "endOffset": 639, + "used": true + }, + { + "styleSheetId": "31161.4", + "startOffset": 605, + "endOffset": 639, + "used": true + }, + { + "styleSheetId": "31161.5", + "startOffset": 3, + "endOffset": 30, + "used": true + }, + { + "styleSheetId": "31161.7", + "startOffset": 605, + "endOffset": 639, + "used": true + }, + { + "styleSheetId": "31161.8", + "startOffset": 605, + "endOffset": 639, + "used": true + }, + { + "styleSheetId": "31161.9", + "startOffset": 605, + "endOffset": 639, + "used": true + } + ], "JsUsage": { "10": { "scriptId": "10", @@ -13124,5 +13000,127 @@ ] } } - } -} + }, + "Stylesheets": [ + { + "header": { + "styleSheetId": "31161.1", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", + "origin": "regular", + "title": "", + "ownerNode": 26, + "disabled": false, + "isInline": true, + "isMutable": false, + "isConstructed": false, + "startLine": 229, + "startColumn": 7, + "length": 53, + "endLine": 234, + "endColumn": 0 + }, + "content": "\n.small-button {\n display: block;\n width: 200px;\n}\n" + }, + { + "header": { + "styleSheetId": "31161.0", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", + "origin": "regular", + "title": "", + "ownerNode": 20, + "disabled": false, + "isInline": true, + "isMutable": false, + "isConstructed": false, + "startLine": 486, + "startColumn": 7, + "length": 229, + "endLine": 503, + "endColumn": 0 + }, + "content": "\n #animated-boi {\n animation: 3s badanim;\n border: 1px solid black;\n }\n\n @keyframes badanim {\n from {\n margin-left: 100%;\n height: 50px;\n }\n\n to {\n margin-left: 0%;\n height: 200px;\n }\n }\n" + }, + { + "header": { + "styleSheetId": "31161.9", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.css?delay=2000&async=true", + "origin": "regular", + "title": "", + "ownerNode": 34, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 689, + "endLine": 12, + "endColumn": 0 + }, + "content": "/**\n * @license Copyright 2016 Google LLC\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n */\n\nbody {\n background-color: #eee;\n}\n.doesnotapply {\n display: flexbox; /* FAIL */\n}\n" + }, + { + "header": { + "styleSheetId": "31161.3", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "", + "origin": "regular", + "title": "", + "ownerNode": 28, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 83, + "endLine": 4, + "endColumn": 2 + }, + "content": "\n body /deep/ div {\n color: pink; /* FAIL - deprecation warning */\n }\n " + }, + { + "header": { + "styleSheetId": "31161.5", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "http://localhost:10200/dobetterweb/dbw_tester.html", + "origin": "regular", + "title": "", + "ownerNode": 30, + "disabled": false, + "isInline": true, + "isMutable": false, + "isConstructed": false, + "startLine": 63, + "startColumn": 7, + "length": 119, + "endLine": 71, + "endColumn": 0 + }, + "content": "\n body {\n color: #000;\n }\n .failedselector {\n -webkit-box-flex: 1; /* FAIL */\n box-flex: 1; /* FAIL */\n }\n" + }, + { + "header": { + "styleSheetId": "31161.6", + "frameId": "537BC44B4EE044D67F9FFE7A76173AB1", + "sourceURL": "http://localhost:10200/dobetterweb/unknown404.css?delay=200", + "origin": "regular", + "title": "", + "ownerNode": 31, + "disabled": false, + "isInline": false, + "isMutable": false, + "isConstructed": false, + "startLine": 0, + "startColumn": 0, + "length": 0, + "endLine": 0, + "endColumn": 0 + }, + "content": "" + } + ] +} \ No newline at end of file diff --git a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap index b2235e7accf5..790620e9c178 100644 --- a/core/test/scenarios/__snapshots__/api-test-pptr.js.snap +++ b/core/test/scenarios/__snapshots__/api-test-pptr.js.snap @@ -440,7 +440,6 @@ Array [ "unminified-css", "unminified-javascript", "unsized-images", - "unused-css-rules", "unused-javascript", "user-timings", "uses-http2", @@ -499,7 +498,6 @@ Array [ "unminified-css", "unminified-javascript", "unsized-images", - "unused-css-rules", "unused-javascript", "user-timings", "uses-http2", @@ -527,7 +525,6 @@ Array [ "third-party-summary", "unminified-css", "unminified-javascript", - "unused-css-rules", "unused-javascript", "user-timings", "uses-optimized-images", diff --git a/core/test/scenarios/stylesheet-tracking.js b/core/test/scenarios/stylesheet-tracking.js index 12fd9aa2e6d2..10501f80bf5e 100644 --- a/core/test/scenarios/stylesheet-tracking.js +++ b/core/test/scenarios/stylesheet-tracking.js @@ -46,13 +46,13 @@ describe('User flow stylesheet tracking', function() { state.saveTrace(artifacts1.Trace); - const stylesheets0 = artifacts0.CSSUsage.stylesheets + const stylesheets0 = artifacts0.Stylesheets .map(s => s.content.trim()) .sort((a, b) => a.localeCompare(b)); - const stylesheets1 = artifacts1.CSSUsage.stylesheets + const stylesheets1 = artifacts1.Stylesheets .map(s => s.content.trim()) .sort((a, b) => a.localeCompare(b)); - const stylesheets2 = artifacts2.CSSUsage.stylesheets + const stylesheets2 = artifacts2.Stylesheets .map(s => s.content.trim()) .sort((a, b) => a.localeCompare(b)); diff --git a/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts b/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts index 96b755f45882..0158e5f6bf19 100644 --- a/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts +++ b/third-party/devtools-tests/e2e/lighthouse/timespan_test.ts @@ -91,7 +91,7 @@ describe('Timespan', function() { assert.strictEqual(devicePixelRatio, 1); const {auditResults, erroredAudits, failedAudits} = getAuditsBreakdown(lhr); - assert.strictEqual(auditResults.length, 45); + assert.strictEqual(auditResults.length, 44); assert.deepStrictEqual(erroredAudits, []); assert.deepStrictEqual(failedAudits.map(audit => audit.id), []); diff --git a/types/artifacts.d.ts b/types/artifacts.d.ts index c95780da9dad..fa1e6f13ab1b 100644 --- a/types/artifacts.d.ts +++ b/types/artifacts.d.ts @@ -110,7 +110,7 @@ export interface GathererArtifacts extends PublicGathererArtifacts { /** Array of all URLs cached in CacheStorage. */ CacheContents: string[]; /** CSS coverage information for styles used by page's final state. */ - CSSUsage: {rules: Crdp.CSS.RuleUsage[], stylesheets: Artifacts.CSSStyleSheetInfo[]}; + CSSUsage: Crdp.CSS.RuleUsage[]; /** The log of devtools protocol activity if there was a page load error and Chrome navigated to a `chrome-error://` page. */ DevtoolsLogError: DevtoolsLog; /** Information on the document's doctype(or null if not present), specifically the name, publicId, and systemId. @@ -145,6 +145,8 @@ export interface GathererArtifacts extends PublicGathererArtifacts { SourceMaps: Array; /** Information on detected tech stacks (e.g. JS libraries) used by the page. */ Stacks: Artifacts.DetectedStack[]; + /** CSS stylesheets found on the page. */ + Stylesheets: Artifacts.CSSStyleSheetInfo[]; /** The trace if there was a page load error and Chrome navigated to a `chrome-error://` page. */ TraceError: Trace; /** Elements associated with metrics (ie: Largest Contentful Paint element). */