Max Potential First Input Delay
80 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
Words
52
Action candidates
1
Images
0
HTML
31 KB
Primary
Next.js / Tailwind
Simulated mobile · Performance
2026-09-05 · Lab data, not field data.
Simulated mobile · Lab data, not field data
2026-09-05T04:06:47.341Z · Lighthouse 13.4.1
Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.
80 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
6.0 s
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-DIV",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,1,A,0,DIV",
"type": "node",
"snippet": "<div class=\"index_label__cgZWW\" style=\"top: -88.3495px; transform: scale(3.15534);\">",
"selector": "div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1 > div.index_label__cgZWW",
"nodeLabel": "Devouring Details",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #6f6f6f, background color: #ededed, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 269,
"left": 409,
"right": 516,
"width": 107,
"bottom": 285,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-HTML",
"path": "1,HTML",
"type": "node",
"snippet": "<html lang=\"en\" class=\"light\" style=\"color-scheme: light;\">",
"selector": "html.light",
"nodeLabel": "html.light",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 1,
"height": 1
}
}
}
]
}
},
{
"node": {
"lhId": "1-2-DIV",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,2,A,0,DIV",
"type": "node",
"snippet": "<div class=\"index_label__cgZWW\" style=\"top: -88.3495px; transform: scale(3.15534);\">",
"selector": "div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1 > div.index_label__cgZWW",
"nodeLabel": "Craft",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #6f6f6f, background color: #ededed, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 269,
"left": 802,
"right": 832,
"width": 30,
"bottom": 285,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-HTML",
"path": "1,HTML",
"type": "node",
"snippet": "<html lang=\"en\" class=\"light\" style=\"color-scheme: light;\">",
"selector": "html.light",
"nodeLabel": "html.light",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 1,
"height": 1
}
}
}
]
}
},
{
"node": {
"lhId": "1-3-DIV",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,3,A,0,DIV",
"type": "node",
"snippet": "<div class=\"index_label__cgZWW\" style=\"top: -88.3495px; transform: scale(3.15534);\">",
"selector": "div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1 > div.index_label__cgZWW",
"nodeLabel": "History of Software Design",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #6f6f6f, background color: #ededed, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 269,
"left": 1195,
"right": 1356,
"width": 162,
"bottom": 285,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-HTML",
"path": "1,HTML",
"type": "node",
"snippet": "<html lang=\"en\" class=\"light\" style=\"color-scheme: light;\">",
"selector": "html.light",
"nodeLabel": "html.light",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 1,
"height": 1
}
}
}
]
}
},
{
"node": {
"lhId": "1-4-DIV",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,4,A,0,DIV",
"type": "node",
"snippet": "<div class=\"index_label__cgZWW\" style=\"top: -88.3495px; transform: scale(3.15534);\">",
"selector": "div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1 > div.index_label__cgZWW",
"nodeLabel": "Projects",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #6f6f6f, background color: #ededed, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 269,
"left": 1588,
"right": 1638,
"width": 50,
"bottom": 285,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-HTML",
"path": "1,HTML",
"type": "node",
"snippet": "<html lang=\"en\" class=\"light\" style=\"color-scheme: light;\">",
"selector": "html.light",
"nodeLabel": "html.light",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 1,
"height": 1
}
}
}
]
}
},
{
"node": {
"lhId": "1-5-DIV",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,5,A,0,DIV",
"type": "node",
"snippet": "<div class=\"index_label__cgZWW\" style=\"top: -88.3495px; transform: scale(3.15534);\">",
"selector": "div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1 > div.index_label__cgZWW",
"nodeLabel": "Field Notes",
"explanation": "Fix any of the following:\n Element has insufficient color contrast of 4.29 (foreground color: #6f6f6f, background color: #ededed, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
"boundingRect": {
"top": 269,
"left": 1981,
"right": 2050,
"width": 69,
"bottom": 285,
"height": 16
}
},
"subItems": {
"type": "subitems",
"items": [
{
"relatedNode": {
"lhId": "1-1-HTML",
"path": "1,HTML",
"type": "node",
"snippet": "<html lang=\"en\" class=\"light\" style=\"color-scheme: light;\">",
"selector": "html.light",
"nodeLabel": "html.light",
"boundingRect": {
"top": 0,
"left": 0,
"right": 412,
"width": 412,
"bottom": 1,
"height": 1
}
}
}
]
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.color",
"wcag2aa",
"wcag143",
"TTv5",
"TT13.c",
"EN-301-549",
"EN-9.1.4.3",
"ACT",
"RGAAv4",
"RGAA-3.2.1"
],
"type": "debugdata",
"impact": "serious"
}
}Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-6-H3",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,4,A,1,DIV,0,DIV,0,DIV,0,H3",
"type": "node",
"snippet": "<h3>",
"selector": "div.c-lesPJm > div.index_contents__YVkKY > div.index_contents__YVkKY > h3",
"nodeLabel": "Projects",
"explanation": "Fix any of the following:\n Heading order invalid",
"boundingRect": {
"top": 275,
"left": 1588,
"right": 2408,
"width": 820,
"bottom": 548,
"height": 274
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"best-practice"
],
"type": "debugdata",
"impact": "moderate"
}
}Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-7-A",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,1,A",
"type": "node",
"snippet": "<a target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Devouring Details\" class=\"index_frame__XKrH1\" data-variant=\"slide\" style=\"width:1200px;height:720px;position:absolute;left:1240px\" href=\"https://www.devouringdetails.com\">",
"selector": "main.index_root__qDg6t > div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1",
"nodeLabel": "Devouring Details\nDD",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 297,
"left": 409,
"right": 789,
"width": 380,
"bottom": 526,
"height": 228
}
}
},
{
"node": {
"lhId": "1-8-A",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,2,A",
"type": "node",
"snippet": "<a aria-label=\"Craft\" class=\"index_frame__XKrH1\" data-variant=\"slide\" style=\"width:1200px;height:720px;position:absolute;left:2480px\" href=\"/craft\">",
"selector": "main.index_root__qDg6t > div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1",
"nodeLabel": "Craft\nCraft",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 297,
"left": 802,
"right": 1182,
"width": 380,
"bottom": 526,
"height": 228
}
}
},
{
"node": {
"lhId": "1-9-A",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,4,A",
"type": "node",
"snippet": "<a aria-label=\"Projects\" class=\"index_frame__XKrH1\" data-variant=\"slide\" style=\"width:1200px;height:720px;position:absolute;left:4960px\" href=\"/projects\">",
"selector": "main.index_root__qDg6t > div.index_center__dvDjE > div.index_frames__d9hw4 > a.index_frame__XKrH1",
"nodeLabel": "Projects\nProjects",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 297,
"left": 1588,
"right": 1968,
"width": 380,
"bottom": 526,
"height": 228
}
}
},
{
"node": {
"lhId": "1-10-BUTTON",
"path": "1,HTML,1,BODY,0,DIV,2,MAIN,1,DIV,0,DIV,6,DIV,0,DIV,0,DIV,4,BUTTON",
"type": "node",
"snippet": "<button aria-label=\"Copy email\">",
"selector": "div.index_frame__XKrH1 > div.c-lesPJm > div.index_contact__4w2ft > button",
"nodeLabel": "Email\n\nCopied",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 395,
"left": 2521,
"right": 2607,
"width": 85,
"bottom": 428,
"height": 32
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"wcag21a",
"wcag253",
"EN-301-549",
"EN-9.2.5.3",
"RGAAv4",
"RGAA-6.1.5",
"experimental"
],
"type": "debugdata",
"impact": "serious"
}
}Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page. Learn more about the viewport meta tag.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-11-META",
"path": "1,HTML,0,HEAD,1,META",
"type": "node",
"snippet": "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\" data-next-head=\"\">",
"selector": "head > meta",
"nodeLabel": "head > meta",
"explanation": "Fix any of the following:\n user-scalable=no on <meta> tag disables zooming on mobile devices",
"boundingRect": {
"top": 0,
"left": 0,
"right": 0,
"width": 0,
"bottom": 0,
"height": 0
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.sensory-and-visual-cues",
"wcag2aa",
"wcag144",
"EN-301-549",
"EN-9.1.4.4",
"ACT",
"RGAAv4",
"RGAA-10.4.2"
],
"type": "debugdata",
"impact": "moderate"
}
}Est savings of 610 KiB
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.
{
"type": "opportunity",
"items": [
{
"url": "https://rauno.me/_next/static/chunks/767-4b6515b63bfd27c7.js",
"totalBytes": 359090,
"wastedBytes": 284303,
"wastedPercent": 79.17318778022224
},
{
"url": "https://rauno.me/_next/static/chunks/289-997c237818b86f43.js",
"totalBytes": 337830,
"wastedBytes": 210776,
"wastedPercent": 62.39114347452861
},
{
"url": "https://rauno.me/_next/static/chunks/150-19d3218242abd104.js",
"totalBytes": 92799,
"wastedBytes": 80394,
"wastedPercent": 86.63239905602431
},
{
"url": "https://rauno.me/_next/static/chunks/pages/_app-8bc0311d52546293.js",
"totalBytes": 63185,
"wastedBytes": 27743,
"wastedPercent": 43.90757200239296
},
{
"url": "https://rauno.me/_next/static/chunks/framework-7c95b8e5103c9e90.js",
"totalBytes": 58682,
"wastedBytes": 21850,
"wastedPercent": 37.234019264448335
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "source",
"valueType": "code"
}
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceBytes"
}
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "sourceWastedBytes"
}
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 0,
"LCP": 2400
}
},
"overallSavingsMs": 2400,
"overallSavingsBytes": 625066
}Meta descriptions may be included in search results to concisely summarize page content. Learn more about the meta description.
Est savings of 13 KiB
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling
{
"type": "table",
"items": [
{
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"subItems": {
"type": "subitems",
"items": [
{
"signal": "Array.prototype.at",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 18290,
"urlProvider": "network"
}
},
{
"signal": "Array.prototype.flat",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 17678,
"urlProvider": "network"
}
},
{
"signal": "Array.prototype.flatMap",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 17791,
"urlProvider": "network"
}
},
{
"signal": "Object.fromEntries",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 18167,
"urlProvider": "network"
}
},
{
"signal": "Object.hasOwn",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 18425,
"urlProvider": "network"
}
},
{
"signal": "String.prototype.trimEnd",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 17420,
"urlProvider": "network"
}
},
{
"signal": "String.prototype.trimStart",
"location": {
"url": "https://rauno.me/_next/static/chunks/main-bff256145eb15a4d.js",
"line": 0,
"type": "source-location",
"column": 17335,
"urlProvider": "network"
}
}
]
},
"wastedBytes": 12966
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "location",
"valueType": "source-location"
}
},
{
"key": null,
"label": "",
"valueType": "code",
"subItemsHeading": {
"key": "signal"
}
},
{
"key": "wastedBytes",
"label": "Wasted bytes",
"valueType": "bytes"
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 12966
}
}Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.
{
"type": "table",
"items": [
{
"url": "https://rauno.me/_next/static/css/e621362aa87785a2.css",
"totalBytes": 2770
},
{
"url": "https://rauno.me/_next/static/css/647af292b7760dc7.css",
"totalBytes": 1449
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedMs",
"label": "Duration",
"valueType": "timespanMs"
}
]
}{
"finalUrl": "https://rauno.me/",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"formFactor": "mobile",
"throttlingMethod": "simulate",
"throttling": {
"rttMs": 150,
"throughputKbps": 1638.4,
"requestLatencyMs": 562.5,
"uploadThroughputKbps": 675,
"cpuSlowdownMultiplier": 4,
"downloadThroughputKbps": 1474.5600000000002
},
"metrics": [
{
"id": "largest-contentful-paint",
"unit": "millisecond",
"value": 6018.6990000000005
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 31.000000000000455
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 939.699
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 2127.0539059834236
}
]
}01 / WHAT WORKS
The yellow circle and black text form a direct visual signature against a muted environment.
A neighboring canvas edge, top ruler and gray surround suggest space beyond a conventional single column.
02 / NEXT STEPS
Large vertical margins and subtle panel edges leave the next-page route unclear on mobile.
Add a short swipe cue or previous/next controls, retain keyboard alternatives and make contact directly discoverable on narrow screens.
03 / DESIGN LANGUAGE
Background
#edededText
#171717Parameters are element samples. Empty values are unknown, and individual samples are not site-wide rules.
04 / EVIDENCE
Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.
Large vertical margins and subtle panel edges leave the next-page route unclear on mobile.
Add a short swipe cue or previous/next controls, retain keyboard alternatives and make contact directly discoverable on narrow screens.
mobile.png: centered horizontal canvas with subtle neighboring edge
A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
content-security-policy missing
Without nosniff, browsers may interpret a file as a different type than you sent. It is a one-line header.
Set X-Content-Type-Options: nosniff.
x-content-type-options missing
The default referrer can leak internal paths and query strings to third parties.
Set Referrer-Policy: strict-origin-when-cross-origin.
referrer-policy missing

05 / MAKE IT HAPPEN
Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.
Improve the current project using the 2026-09-05T03:26:19.431Z snapshot of https://rauno.me. First identify changes since capture; do not revert newer behavior to the old snapshot.
Design baseline
A white canvas carries the introduction with an overlapping yellow circle. Neighboring canvas edges and a small top ruler suggest browsing progression; contact information appears in the page content. Mobile reduces the canvas to a browsable panel. Adapt the single shape, type scale and horizontal spatial relationship, verifying keyboard and touch behavior separately.
{
"colors": [
{
"role": "bg",
"hex": "#ededed"
},
{
"role": "ink",
"hex": "#171717"
}
],
"fonts": {
"body": "X",
"display": "X",
"stack": [
"X"
]
},
"radius": {
"button": "0px",
"card": "",
"field": ""
},
"space": {
"section": "0px",
"card": ""
},
"type": {
"h1": "32px",
"body": "16px",
"weight": "500",
"lineHeight": "normal",
"letterSpacing": "normal"
}
}
Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.
Actions
1. Explain horizontal browsing
Add a short swipe cue or previous/next controls, retain keyboard alternatives and make contact directly discoverable on narrow screens.
Evidence: mobile.png: centered horizontal canvas with subtle neighboring edge
2. No Content-Security-Policy
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
Evidence: content-security-policy missing
3. No X-Content-Type-Options
Set X-Content-Type-Options: nosniff.
Evidence: x-content-type-options missing
4. No Referrer-Policy
Set Referrer-Policy: strict-origin-when-cross-origin.
Evidence: referrer-policy missing
Acceptance
- Check text, layout and the main action “Email” at 1440×900 and 390×844.
- Preserve branding, authentication and business behavior. A screenshot does not prove broken interaction.
- Change only evidence-backed issues. Validate security headers against existing resources and authentication in report-only mode where supported.
- Compare before/after screenshots and run relevant functional tests. Do not claim untested behavior passed.