@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(./schibsted-grotesk-latin-ext-400-normal.DHVTfbSM.woff2)format("woff2"),url(./schibsted-grotesk-latin-ext-400-normal.DUPvg9bQ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(./schibsted-grotesk-latin-400-normal.DPhJBilQ.woff2)format("woff2"),url(./schibsted-grotesk-latin-400-normal.BkiRe4WW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(./schibsted-grotesk-latin-ext-500-normal.Ch1izu81.woff2)format("woff2"),url(./schibsted-grotesk-latin-ext-500-normal.BjmYCtCC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(./schibsted-grotesk-latin-500-normal.rf9C4Thp.woff2)format("woff2"),url(./schibsted-grotesk-latin-500-normal.Ba39e-CX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(./schibsted-grotesk-latin-ext-600-normal.C5pQPdUJ.woff2)format("woff2"),url(./schibsted-grotesk-latin-ext-600-normal.DQsnXf5q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(./schibsted-grotesk-latin-600-normal.Czv9Obfv.woff2)format("woff2"),url(./schibsted-grotesk-latin-600-normal.BieE9YjJ.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(./schibsted-grotesk-latin-ext-700-normal.o210KhU4.woff2)format("woff2"),url(./schibsted-grotesk-latin-ext-700-normal.DDW2aNyx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(./schibsted-grotesk-latin-700-normal.BkH0uJ1o.woff2)format("woff2"),url(./schibsted-grotesk-latin-700-normal.Dz-okVa0.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(./ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(./ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(./ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(./ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(./ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(./ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(./ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,[data-theme=light],[data-theme=system]{--bg:oklch(98.5% .004 250);--surface:oklch(96.5% .006 250);--surface-2:oklch(93.5% .008 250);--stripe:oklch(91.5% .009 250);--line:oklch(88.5% .009 250);--line-strong:oklch(78% .012 250);--fg:oklch(21% .014 255);--muted:oklch(47% .014 255);--accent:oklch(52% .13 152);--accent-hover:oklch(46% .12 152);--accent-text:oklch(47% .12 152);--accent-soft:oklch(95% .035 152);--on-accent:oklch(99% .005 152);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme]),[data-theme=system]{--bg:oklch(17.5% .01 255);--surface:oklch(21% .011 255);--surface-2:oklch(24.5% .012 255);--stripe:oklch(24.5% .012 255);--line:oklch(30% .012 255);--line-strong:oklch(42% .014 255);--fg:oklch(95% .006 250);--muted:oklch(72% .012 255);--accent:oklch(76% .14 152);--accent-hover:oklch(82% .13 152);--accent-text:oklch(80% .13 152);--accent-soft:oklch(30% .05 152);--on-accent:oklch(18% .03 152);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}[data-theme=dark]{--bg:oklch(17.5% .01 255);--surface:oklch(21% .011 255);--surface-2:oklch(24.5% .012 255);--stripe:oklch(24.5% .012 255);--line:oklch(30% .012 255);--line-strong:oklch(42% .014 255);--fg:oklch(95% .006 250);--muted:oklch(72% .012 255);--accent:oklch(76% .14 152);--accent-hover:oklch(82% .13 152);--accent-text:oklch(80% .13 152);--accent-soft:oklch(30% .05 152);--on-accent:oklch(18% .03 152);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--font-sans:"Schibsted Grotesk", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--fs-name:clamp(44px, 5.4cqi, 64px);--fs-title:20px;--fs-body-long:18px;--fs-body:17px;--fs-ui:16px;--fs-small:15px;--fs-label:13px;--fs-tag:12px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--s10:128px;--r-tag:4px;--r-btn:8px;--r-media:8px;--r-card-sm:10px;--r-card:12px;--r-pill:999px;--container:1280px;--gutter:clamp(20px, 5cqi, 48px);--control-h:44px;--ease-ui:.15s ease-out}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}a:hover{color:var(--accent-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--accent-soft)}.media-placeholder{background:repeating-linear-gradient(135deg,var(--surface) 0 10px,var(--stripe) 10px 11px)}.page-root{background:var(--bg);min-height:100vh;color:var(--fg);font-size:var(--fs-body);line-height:1.6;container-type:inline-size}.home-shell{max-width:var(--container);padding-inline:var(--gutter);flex-direction:column;margin-inline:auto;display:flex}.skip-link{z-index:1;border-radius:var(--r-btn);background:var(--fg);min-height:44px;color:var(--bg);font-size:var(--fs-small);padding:10px 14px;font-weight:600;text-decoration:none;position:absolute;top:-60px;left:16px}.skip-link:focus{top:12px}.sidebar{flex-direction:column;flex:none;gap:28px;padding:clamp(40px,6cqi,80px) 0 clamp(40px,5cqi,56px);display:flex}.sidebar__identity h1{font-size:var(--fs-name);letter-spacing:-.04em;margin:0;font-weight:600;line-height:.95}.sidebar__role{color:var(--muted);letter-spacing:-.02em;margin:10px 0 0;font-size:22px;font-weight:500;line-height:1.2}.sidebar__location{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);margin:6px 0 0}.sidebar__intro{max-width:36ch;font-size:var(--fs-body-long);text-wrap:pretty;margin:0;line-height:1.5}.sidebar__contact{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:380px;display:grid}.sidebar__contact .button--primary,.sidebar__cv{grid-column:1/-1}.sidebar-nav{border-top:1px solid var(--line);flex-direction:column;margin-top:8px;display:none}.sidebar-nav a{border-bottom:1px solid var(--line);min-height:44px;color:var(--fg);font-size:var(--fs-ui);transition:color var(--ease-ui);align-items:baseline;gap:16px;padding:12px 0;text-decoration:none;display:flex}.sidebar-nav a:hover{color:var(--accent-text)}.sidebar-nav__number,.theme-toggle{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag)}.theme-toggle{border:1px solid var(--line);border-radius:var(--r-pill);cursor:pointer;transition:color var(--ease-ui),border-color var(--ease-ui);background:0 0;align-self:flex-start;padding:6px 12px;line-height:normal;position:relative}.contact-section__email:before,.theme-toggle:before{content:"";position:absolute;inset:min(0px,50% - 23px) 0}.theme-toggle:hover{border-color:var(--line-strong);color:var(--fg)}.home-main{flex:none;width:100%;min-width:0;padding-top:clamp(0px,6cqi,80px)}.home-section{padding-bottom:clamp(64px,8cqi,112px)}.section-heading{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.02em;align-items:center;gap:16px;margin:0 0 24px;font-weight:500;display:flex}.section-heading--compact{margin-bottom:8px}.section-heading__rule{background:var(--line);flex:1;height:1px}.project-card--featured{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);overflow:hidden}.media-slot{text-align:center;justify-content:center;align-items:center;width:100%;padding:16px;display:flex;position:relative;overflow:hidden}.media-slot--featured{border-bottom:1px solid var(--line)}.media-slot--medium{border:1px solid var(--line);border-radius:var(--r-media);flex:220px;padding:12px}.media-slot__image,.media-slot__video{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.media-slot__caption{z-index:1;border:1px solid var(--line);border-radius:var(--r-tag);background:var(--bg);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag);padding:4px 10px;line-height:1.4;position:relative}.project-card__body{flex-direction:column;gap:20px;padding:clamp(22px,3.4cqi,40px);display:flex}.project-card__title-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;display:flex}.project-card__title{letter-spacing:-.035em;margin:0;font-size:clamp(30px,3.6cqi,40px);font-weight:600;line-height:1}.project-card__eyebrow{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);margin:0}.project-card__title-row .project-card__eyebrow{color:var(--accent-text);white-space:nowrap}.project-card__summary{max-width:58ch;font-size:var(--fs-body-long);text-wrap:pretty;margin:0;line-height:1.5}.project-card__highlights{color:var(--muted);font-size:var(--fs-small);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px 32px;margin:0;padding:0;line-height:1.55;list-style:none;display:grid}.project-card__highlights li{grid-template-columns:20px 1fr;display:grid}.project-card__marker{font-family:var(--font-mono)}.project-card__footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:20px;display:flex}.tag-list{flex-wrap:wrap;gap:6px;display:flex}.tag{border:1px solid var(--line);border-radius:var(--r-tag);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag);white-space:nowrap;padding:3px 8px;font-weight:500}.tag--small{padding:2px 7px}.project-card__actions{flex-wrap:wrap;gap:10px;display:flex}.button{min-height:var(--control-h);border-radius:var(--r-btn);color:var(--fg);font-size:var(--fs-small);white-space:nowrap;transition:color var(--ease-ui),background-color var(--ease-ui),border-color var(--ease-ui);border:1px solid #0000;justify-content:center;align-items:center;gap:12px;padding:0 18px;line-height:1.6;text-decoration:none;display:inline-flex}.button--primary{background:var(--accent);color:var(--on-accent);font-weight:600}.button--primary:hover{background:var(--accent-hover);color:var(--on-accent)}.button--secondary{border-color:var(--line-strong);color:var(--fg);background:0 0;font-weight:500}.button--secondary:hover{background:var(--surface-2);color:var(--fg)}.button--full-width{justify-content:space-between;width:100%;padding-inline:16px}.button__trailing{color:var(--muted);flex:none;align-items:center;display:inline-flex}.button--primary .button__trailing{color:var(--on-accent)}.button__detail{font-family:var(--font-mono);font-size:var(--fs-label);opacity:.9;font-weight:400}.button__arrow{color:var(--muted)}.project-card--medium{border:1px solid var(--line);border-radius:var(--r-card);flex-wrap:wrap;align-items:center;gap:20px 28px;margin-top:16px;padding:14px;display:flex}.project-card__medium-body{flex-direction:column;flex:1.4 280px;gap:12px;min-width:0;padding:4px 8px 4px 0;display:flex}.project-card__medium-body .project-card__eyebrow{color:var(--muted)}.project-card__medium-title{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:600;line-height:1.15}.project-card__medium-summary{color:var(--muted);font-size:var(--fs-ui);text-wrap:pretty;margin:0;line-height:1.55}.text-link{min-height:44px;color:var(--accent-text);font-size:var(--fs-small);text-underline-offset:4px;transition:color var(--ease-ui);align-self:flex-start;align-items:center;padding-block:10px;font-weight:600;line-height:1.55;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}.text-link:hover{color:var(--fg)}.side-projects-heading{letter-spacing:-.01em;margin:48px 0 4px;font-size:18px;font-weight:600;line-height:1.3}.project-list{margin:0;padding:0;list-style:none}.project-row{border-bottom:1px solid var(--line)}.project-row__link,.project-row__text{color:var(--fg);transition:color var(--ease-ui),background-color var(--ease-ui);border-radius:6px;flex-wrap:wrap;align-items:baseline;gap:6px 20px;margin:0 -10px;padding:16px 10px;text-decoration:none;display:flex}.project-row__link:hover{background:var(--surface);color:var(--fg)}.project-row__main{flex-direction:column;flex:300px;gap:2px;min-width:0;display:flex}.project-row__title{font-size:var(--fs-ui);font-weight:600}.project-row__summary{color:var(--muted);font-size:var(--fs-small);text-wrap:pretty;line-height:1.5}.project-row__meta{flex-wrap:wrap;flex:0 auto;align-items:center;gap:6px;display:flex}.tag-list--row{gap:6px}.project-row__label{min-width:64px;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag);text-align:right}.experience-list{margin:0;padding:0;list-style:none}.experience-item{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px 28px;padding:22px 0;display:flex}.experience-item__dates{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);flex:0 0 170px;padding-top:3px}.experience-item__body{flex:320px;min-width:0}.experience-item__title{font-size:var(--fs-body);margin:0;font-weight:600;line-height:1.4}.experience-item__title span{color:var(--muted);font-weight:400}.experience-item__description{color:var(--fg);font-size:var(--fs-small);text-wrap:pretty;margin:6px 0 0;line-height:1.6}.experience-item__highlights{color:var(--muted);font-size:var(--fs-small);text-wrap:pretty;gap:8px;margin:10px 0 0;padding:0;line-height:1.55;list-style:none;display:grid}.experience-item__highlights li{grid-template-columns:20px 1fr;display:grid}.experience-item__marker{font-family:var(--font-mono)}.about-copy{max-width:60ch;font-size:var(--fs-body);text-wrap:pretty;flex-direction:column;gap:18px;line-height:1.65;display:flex}.about-copy p{margin:0}.about-copy__muted{color:var(--muted)}.contact-section{padding-bottom:40px}.contact-section__intro{color:var(--muted);font-size:var(--fs-body);margin:0 0 8px}.contact-section__email{overflow-wrap:anywhere;color:var(--fg);letter-spacing:-.035em;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.14em;transition:color var(--ease-ui);font-size:clamp(28px,4cqi,48px);font-weight:600;line-height:1.1;text-decoration-thickness:.06em;display:inline-block;position:relative}.contact-section__email:hover{color:var(--accent-text)}.contact-section__socials{font-size:var(--fs-small);flex-wrap:wrap;gap:24px;margin-top:28px;display:flex}.contact-section__social{color:var(--fg);font-weight:400;line-height:1.6;display:block}.contact-section__social:hover{color:var(--accent-text)}.site-footer{border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);margin-top:clamp(56px,7cqi,96px);padding-top:20px}@media (width>=861px){.home-shell{flex-direction:row;align-items:flex-start;gap:0 clamp(40px,6cqi,96px)}.sidebar{top:var(--sidebar-top,0);flex:320px;position:sticky}.sidebar-nav{display:flex}.home-main{flex:999 1 0;width:auto;min-width:52%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important}}.button--text{color:var(--accent-text);font-size:var(--fs-small);text-underline-offset:4px;white-space:normal;background:0 0;border:0;border-radius:0;padding:10px 0;font-weight:600;text-decoration:underline}.button--text:hover{color:var(--fg);background:0 0}.case-study-page{min-height:100vh}.case-study-header{max-width:1200px;padding:20px var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;margin-inline:auto;display:flex}.case-study-header__logo{color:var(--fg);font-family:var(--font-mono);align-items:center;padding:8px 0;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.case-study-header__logo:before{content:"";position:absolute;inset:min(0px,50% - 23px) -5px}.case-study-nav{font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:0 20px;display:flex}.case-study-nav>a{color:var(--muted);align-items:center;padding:10px 0;text-decoration:none;display:inline-flex;position:relative}.case-study-nav>a:before{content:"";position:absolute;inset:min(0px,50% - 23px) -5px}.case-study-nav>a:hover,.case-study-nav>a[aria-current=true]{color:var(--fg)}.case-study-header .theme-toggle{align-self:center}.case-study-header .theme-toggle:before{inset:0 0 -18px}.case-study-hero{max-width:1200px;padding:clamp(32px,6cqi,80px) var(--gutter) clamp(32px,4cqi,48px);margin-inline:auto}.case-study-back{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:400;line-height:1.6;text-decoration:none}.case-study-back:hover{color:var(--fg)}.case-study-hero__eyebrow{color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label);margin:16px 0 12px}.case-study-hero h1{letter-spacing:-.04em;margin:0;font-size:clamp(40px,5.4cqi,64px);font-weight:600;line-height:.95}.case-study-hero__lead{letter-spacing:-.01em;text-wrap:pretty;max-width:44ch;margin:16px 0 0;font-size:clamp(18px,1.8cqi,21px);line-height:1.45}.meta-list{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:20px 32px;margin:clamp(32px,4cqi,48px) 0 0;padding-top:24px;display:grid}.meta-list dt{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label)}.meta-list dd{font-size:var(--fs-ui);margin:6px 0 0}.case-study-page .meta-list__link{min-height:0;color:var(--accent-text);font-size:var(--fs-ui);text-underline-offset:4px;background:0 0;border:0;border-radius:0;align-items:baseline;padding:0;font-weight:400;line-height:1.2;text-decoration:underline;position:relative}.case-study-page .meta-list__link:before{content:"";position:absolute;inset:min(0px,50% - 23px) 0}.case-study-page .meta-list__link:hover{color:var(--fg);background:0 0}.case-study-media-stats{max-width:1200px;padding-inline:var(--gutter);margin-inline:auto}.case-study-page .case-study-media-slot{border:1px solid var(--line);border-radius:var(--r-card);width:100%;padding:16px}.problem-grid,.stat-grid,.step-grid,.timeline{border:1px solid var(--line);border-radius:var(--r-card);background:var(--line);gap:1px;padding:0;overflow:hidden}.stat-grid,.step-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));display:grid}.stat-grid{margin:20px 0 0}.stat-grid>div{background:var(--bg);padding:24px 28px}.stat-grid dt{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label)}.stat-grid dd{letter-spacing:-.04em;margin:4px 0 0;font-size:clamp(36px,5cqi,56px);font-weight:600;line-height:1.05}.case-study-section{max-width:1200px;padding:clamp(72px,9cqi,128px) var(--gutter) 0;margin-inline:auto}.case-study-section:not(.case-study-section--with-grid),.case-study-section__row{flex-wrap:wrap;gap:12px clamp(32px,6cqi,96px);display:flex}.case-study-section__row{margin-bottom:32px}.section-heading--case-study{color:var(--fg);font-family:var(--font-sans);letter-spacing:-.025em;flex:0 0 240px;margin:0;font-size:clamp(24px,2.6cqi,30px);font-weight:600;line-height:1.15;display:block}.section-heading--case-study .section-heading__rule{display:none}.case-study-prose,.case-study-section__intro{min-width:0;max-width:64ch;font-size:var(--fs-body-long);text-wrap:pretty;flex:440px;line-height:1.65}.case-study-prose{flex-direction:column;gap:18px;display:flex}.case-study-prose p,.case-study-section__intro{margin:0}.case-study-prose__muted,.case-study-section__intro{color:var(--muted)}.step-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));margin:0;list-style:none}.step-grid>li{background:var(--bg);flex-direction:column;gap:10px;padding:28px;display:flex}.step-grid__number{color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label)}.step-grid h3{font-size:var(--fs-title);letter-spacing:-.015em;margin:0;font-weight:600;line-height:1.25}.step-grid p{color:var(--muted);font-size:var(--fs-ui);text-wrap:pretty;margin:0;line-height:1.55}.case-study-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.case-study-more-work{max-width:1200px;padding:clamp(40px,5cqi,64px) var(--gutter) clamp(40px,5cqi,64px);margin-inline:auto}.case-study-footer{max-width:1200px;padding:0 var(--gutter) 40px;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-inline:auto;display:flex}.case-study-footer,.case-study-footer__email{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);align-items:center}.case-study-footer__email{min-height:0;padding:0;font-weight:400;line-height:1.6;text-decoration:none;position:relative}.case-study-footer__email:before{content:"";position:absolute;inset:min(0px,50% - 23px) 0}.case-study-footer__email:hover{color:var(--fg)}.case-study-prose__more{flex-direction:column;gap:18px;display:flex}.case-study-section__row--after{margin:32px 0 0}.case-study-section__spacer{flex:0 0 240px}.case-study-list{flex-direction:column;gap:8px;margin:0;padding-left:1.2em;display:flex}.case-study-subheading{font-size:var(--fs-title);letter-spacing:-.015em;margin:14px 0 0;font-weight:600;line-height:1.25}.flow-diagram{border:1px solid var(--line);border-radius:var(--r-card);margin:0;padding:clamp(20px,3cqi,32px)}.flow-diagram__lanes,.flow-diagram__nodes{margin:0;padding:0;list-style:none}.flow-diagram__lanes{gap:40px;display:grid}.flow-diagram__lane{flex-direction:column;gap:12px;min-width:0;display:flex;position:relative}.flow-diagram__lane+.flow-diagram__lane:before{color:var(--accent-text);content:"↓"/"";font-size:20px;line-height:1.4;position:absolute;top:-34px;left:50%;translate:-50%}.flow-diagram__lane-title{color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label);margin:0;font-weight:500;line-height:1.4}.flow-diagram__node,.flow-diagram__nodes{flex-direction:column;gap:6px;display:flex}.flow-diagram__via{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag);text-align:center;align-self:center;line-height:1.4}.flow-diagram__box,.flow-diagram__loop{border:1px solid var(--line);border-radius:var(--r-card-sm);background:var(--surface);flex-direction:column;gap:4px;padding:14px 16px;display:flex}.flow-diagram__box strong,.flow-diagram__loop strong{font-size:var(--fs-ui);font-weight:600;line-height:1.3}.flow-diagram__box span,.flow-diagram__loop span{color:var(--muted);font-size:var(--fs-small);text-wrap:pretty;overflow-wrap:anywhere;line-height:1.5}.flow-diagram__loop{border-color:var(--line-strong);background:var(--accent-soft);margin-top:32px}.flow-diagram__loop span{color:var(--fg)}.cost-breakdown figcaption,.flow-diagram figcaption,.screen-clip figcaption,.screen-grid figcaption{max-width:72ch;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);text-wrap:pretty;margin-top:12px;line-height:1.5}.timeline{margin:0;list-style:none;display:grid}.timeline>li{background:var(--bg);grid-template-columns:10ch minmax(0,1fr);align-items:baseline;gap:4px 16px;padding:14px clamp(16px,2.4cqi,28px);display:grid}.timeline__time{color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label);white-space:nowrap}.timeline p{font-size:var(--fs-small);text-wrap:pretty;margin:0;line-height:1.55}.timeline p.timeline__title{font-size:var(--fs-body);margin-bottom:4px;font-weight:600}.screen-grid{grid-template-columns:minmax(0,1fr);gap:32px 24px;margin:0;padding:0;list-style:none;display:grid}.screen-clip,.screen-grid figure{margin:0}.screen-clip{margin-top:32px}.screen-clip__video{aspect-ratio:16/9;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);width:100%;display:block}.problem-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));margin:0;list-style:none;display:grid}.problem-grid>li{background:var(--bg);flex-direction:column;gap:16px;padding:28px;display:flex}.problem-grid h3{font-size:var(--fs-title);letter-spacing:-.015em;margin:0;font-weight:600;line-height:1.25}.problem-grid dl{flex-direction:column;gap:12px;margin:0;display:flex}.problem-grid dt{color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label)}.problem-grid dd{color:var(--muted);font-size:var(--fs-ui);text-wrap:pretty;overflow-wrap:anywhere;margin:2px 0 0;line-height:1.55}.problem-grid__rule dd{color:var(--fg)}.cost-breakdown{flex-direction:column;gap:24px;margin:0;display:flex}.cost-breakdown__table{border-collapse:collapse;width:100%;font-size:var(--fs-small);line-height:1.4}.cost-breakdown__table caption{text-align:left;padding-bottom:8px;font-weight:600}.cost-breakdown__table td,.cost-breakdown__table th{border-top:1px solid var(--line);text-align:left;padding:10px 12px 10px 0;font-weight:400}.cost-breakdown__table thead th{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label)}.cost-breakdown__table td:nth-child(2){color:var(--muted);font-variant-numeric:tabular-nums}.cost-breakdown__table td:last-child{width:60%;padding-right:0}.cost-breakdown__cost{font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:flex}.cost-breakdown__bar{border-radius:var(--r-pill);background:var(--surface-2);flex:auto;height:8px;overflow:hidden}.cost-breakdown__bar>span{border-radius:inherit;background:var(--accent);height:100%;display:block}.cost-breakdown figcaption{flex-direction:column;gap:8px;margin-top:0;display:flex}@media (width<=560px){.timeline>li{grid-template-columns:minmax(0,1fr)}}@media (width>=861px){.timeline{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}.timeline>li{grid-template-columns:minmax(0,1fr);align-content:start}.flow-diagram__lanes{grid-template-columns:repeat(3,minmax(0,1fr))}.flow-diagram__lane+.flow-diagram__lane:before{content:"→"/"";top:50%;left:-20px;translate:-50% -50%}}.error-page{flex-direction:column;display:flex}.error-page__footer,.error-page__header,.error-page__main{width:100%;max-width:1200px;padding-inline:var(--gutter);margin-inline:auto}.error-page__header{justify-content:space-between;align-items:center;gap:8px 24px;padding-block:20px;display:flex}.error-page__logo{min-height:var(--control-h);color:var(--fg);font-family:var(--font-mono);align-items:center;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.error-page__main{flex:1;padding-block:clamp(48px,10cqi,144px) clamp(56px,7cqi,96px)}.error-page__main h1{font-size:var(--fs-name);letter-spacing:-.04em;text-wrap:balance;margin:0;font-weight:600;line-height:.95}.error-page__path{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);overflow-wrap:anywhere;margin:20px 0 0}.error-page__body{max-width:44ch;font-size:var(--fs-body-long);text-wrap:pretty;margin:24px 0 0;line-height:1.5}.error-page__actions{flex-wrap:wrap;gap:10px;margin-top:32px;display:flex}.error-page__email{color:var(--muted);font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:0 8px;margin:20px 0 0;display:flex}.error-page__footer{width:auto;margin-inline:max(var(--gutter),calc(50% - 600px + var(--gutter)));border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);padding:20px 0 40px}.case-study-index{margin:40px max(var(--gutter),calc(50% - 600px + var(--gutter))) 0;border-top:1px solid var(--line);padding-top:16px}.case-study-index__label{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);margin:0 0 4px}.case-study-index ol{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:0 24px;margin:0;padding:0;list-style:none;display:grid}.case-study-index a{width:100%;min-height:calc(var(--control-h) + 4px);color:var(--muted);font-size:var(--fs-small);transition:color var(--ease-ui);align-items:center;text-decoration:none;display:flex}.case-study-index a:hover{color:var(--accent-text)}.stat-grid.stat-grid--inline{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));margin:24px 0 0}.case-study-prose>.stat-grid--inline{margin:0}.stat-grid--inline>div{padding:18px 22px}.stat-grid--inline dd{font-size:clamp(26px,3cqi,34px)}.case-study-prose__more>summary{min-height:var(--control-h);color:var(--accent-text);font-size:var(--fs-small);cursor:pointer;transition:color var(--ease-ui);padding-block:10px;font-weight:600;display:list-item}.case-study-prose__more>summary:hover{color:var(--fg)}.case-study-prose__more[open]>summary{margin-bottom:8px}.screen-grid__link{color:inherit;display:block}.screen-grid__link .case-study-media-slot{transition:border-color var(--ease-ui)}.screen-grid__link:hover .case-study-media-slot{border-color:var(--line-strong)}.case-study-contact__actions{flex-wrap:wrap;gap:10px;display:flex}.error-page__links{flex-wrap:wrap;gap:0 20px;margin:0;display:flex}.case-study-hero .case-study-source,.case-study-media-stats .stat-grid--inline{margin-top:12px}.case-study-index a[aria-current=true]{color:var(--fg);font-weight:600}.case-study-jump{z-index:2;min-height:var(--control-h);border-top:1px solid var(--line);background:var(--bg);padding:0 max(var(--gutter),calc(50% - 600px + var(--gutter)));justify-content:space-between;align-items:center;gap:16px;display:flex;position:fixed;bottom:0;left:0;right:0}.case-study-jump__email,.case-study-jump__link{min-height:var(--control-h);font-size:var(--fs-small);transition:color var(--ease-ui);align-items:center;gap:10px;font-weight:600;display:inline-flex}.case-study-jump__link{min-width:0;color:var(--fg);line-height:var(--control-h);text-overflow:ellipsis;white-space:nowrap;text-decoration:none;display:block;overflow:hidden}.case-study-jump__email{text-underline-offset:4px;flex:none;text-decoration:underline}.case-study-jump__email,.case-study-jump__link:hover{color:var(--accent-text)}.case-study-jump__email:hover{color:var(--fg)}.case-study-jump__label{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-tag);font-weight:500}.case-study-page{padding-bottom:var(--control-h)}.case-study-prose__more>summary::marker{color:var(--accent-text)}.case-study-addition{flex-direction:column;gap:18px;display:flex}.sidebar__current{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label);margin:2px 0 0}.experience-item__company{color:inherit;text-underline-offset:4px;transition:color var(--ease-ui);text-decoration:underline;text-decoration-thickness:1px;position:relative}.experience-item__company:before{content:"";position:absolute;inset:min(0px,50% - 22px) 0}.experience-item__company:hover{color:var(--accent-text)}.case-study-hero>.stat-grid:not(.stat-grid--inline){margin-top:clamp(28px,4cqi,40px)}.case-study-summary{max-width:1200px;padding-inline:var(--gutter);margin:clamp(40px,5cqi,56px) auto 0}.case-study-summary dl{border-top:1px solid var(--line);margin:0}.case-study-summary dl>div{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:0 clamp(32px,6cqi,96px);padding:12px 0;display:flex}.case-study-summary dt{flex:0 0 240px}.case-study-summary dt a{width:100%;min-height:calc(var(--control-h) + 4px);color:var(--accent-text);font-family:var(--font-mono);font-size:var(--fs-label);text-underline-offset:4px;transition:color var(--ease-ui);align-items:center;text-decoration:underline;display:flex}.case-study-summary dt a:hover{color:var(--fg)}.case-study-summary dd{max-width:64ch;font-size:var(--fs-ui);text-wrap:pretty;flex:440px;margin:0;padding-block:10px;line-height:1.55}.case-study-more{margin-top:16px}.case-study-more>summary{min-height:var(--control-h);color:var(--accent-text);font-size:var(--fs-small);cursor:pointer;transition:color var(--ease-ui);padding-block:10px;font-weight:600;display:list-item}.case-study-more>summary::marker{color:var(--accent-text)}.case-study-more>summary:hover{color:var(--fg)}.case-study-more[open]>summary{margin-bottom:12px}.sidebar-nav a[aria-current=true]{font-weight:600}.sidebar-nav a[aria-current=true] .sidebar-nav__number{color:var(--accent-text)}.screen-grid__link{position:relative}.screen-grid__link:after{border:1px solid var(--line);border-radius:var(--r-tag);background:var(--bg);color:var(--muted);content:"↗"/"";font-family:var(--font-mono);font-size:var(--fs-tag);padding:2px 8px;position:absolute;top:12px;right:12px}.case-study-prose>.stat-grid--inline dd{white-space:nowrap;font-size:clamp(22px,2.4cqi,28px)}@media (width<=560px){.case-study-hero .stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.case-study-hero .stat-grid>div{padding:14px 12px}.case-study-hero .stat-grid dt{font-size:var(--fs-tag)}.case-study-hero .stat-grid dd{font-size:24px}.case-study-nav>a{display:none}}.copy-email{flex-wrap:wrap;align-items:center;gap:0 12px;display:flex}.copy-email__button{min-height:var(--control-h);color:var(--accent-text);font:inherit;font-size:var(--fs-small);text-underline-offset:4px;cursor:pointer;transition:color var(--ease-ui);background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline;position:relative}.copy-email__button:hover{color:var(--fg)}.copy-email__status{color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-label)}@media (width<=560px){.project-card__highlights li:nth-child(n+3){display:none}}.case-study-takeaway{color:var(--fg)}@media (width<=560px){.case-study-jump__label{display:none}}@media (width>=861px){.case-study-hero{-moz-column-gap:clamp(32px,6cqi,96px);grid-template-columns:minmax(0,1fr) minmax(260px,380px);align-items:start;column-gap:clamp(32px,6cqi,96px);padding-top:clamp(24px,4cqi,48px);display:grid}.case-study-hero>*{grid-column:1}.case-study-hero>.meta-list{grid-area:1/2/span 4;margin-top:0}.case-study-hero>.case-study-source{grid-area:5/2;margin-top:0}.case-study-hero>.stat-grid{grid-column:1/-1}}
