:root{--paper:#f7f9fb;--surface:#ffffff;--ink:#0d1321;--muted:#5a6474;--line:#e2e7ee;--accent:#1f5fd6;--dot:#d3dae4;color-scheme:light}:root[data-theme=dark]{--paper:#0b0f17;--surface:#121925;--ink:#e8edf5;--muted:#8e98a9;--line:#1f2837;--accent:#7aa7ff;--dot:#1f2837;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s,color .3s}.app{font-family:var(--font-body),-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}figure,h1,h2,p,ul{margin:0}a,button{color:inherit}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.copy,.footer,.hint,.label,.mode,.mono,.topbar nav a,figcaption{font-family:var(--font-mono),ui-monospace,Menlo,monospace}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;height:60px;padding:0 max(24px,calc((100vw - 1080px) / 2));background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.topbar nav{display:flex;gap:28px}.topbar nav a{font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--muted);transition:color .15s}.topbar nav a:hover{color:var(--ink)}.mode{font-size:11px;letter-spacing:.06em;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);transition:border-color .15s}.mode:hover{border-color:var(--muted)}.hero{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:24px;max-width:1080px;min-height:min(calc(100vh - 60px),760px);margin:0 auto;padding:24px}.signature{display:block;width:100%;max-width:540px;height:auto;overflow:visible}.signature path{fill:none;stroke:var(--ink);stroke-width:4.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;animation:draw .9s cubic-bezier(.6,0,.3,1) both}@keyframes draw{0%{stroke-dashoffset:1}to{stroke-dashoffset:0}}.intro{max-width:24ch;margin-top:32px;font-size:clamp(22px,2.4vw,28px);font-weight:500;line-height:1.3;letter-spacing:-.01em;animation:rise .8s 1.3s both}.hero-links{display:flex;align-items:center;gap:24px;margin-top:32px;animation:rise .8s 1.5s both}.hero-links a:first-child{padding:12px 22px;border-radius:999px;background:var(--ink);color:var(--paper);font-weight:600;font-size:15px;text-decoration:none;transition:transform .15s}.hero-links a:first-child:hover{transform:translateY(-1px)}.hero-links a:last-child{font-weight:600;font-size:15px;text-decoration-color:var(--line);text-decoration-thickness:2px;text-underline-offset:5px;transition:text-decoration-color .15s}.hero-links a:last-child:hover{text-decoration-color:var(--accent)}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.stage{position:relative;width:100%;aspect-ratio:1/1.08;max-height:640px}.stage:before{content:"";position:absolute;inset:4% 6%;background-image:radial-gradient(var(--dot) 1.2px,transparent 1.4px);background-size:20px 20px;-webkit-mask-image:radial-gradient(closest-side,#000 55%,transparent);mask-image:radial-gradient(closest-side,#000 55%,transparent)}.stage-canvas{position:absolute;inset:0;touch-action:pan-y;cursor:grab}.stage-canvas canvas{display:block;width:100%!important;height:100%!important}.bubble{position:absolute;top:4%;left:50%;max-width:78%;padding:10px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 8px 24px rgb(13 19 33/.08);font-size:15px;font-weight:500;text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,6px);transition:opacity .2s,transform .2s}.bubble.show{opacity:1;transform:translate(-50%)}.bubble:after{content:"";position:absolute;left:50%;bottom:-6px;width:10px;height:10px;background:var(--surface);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transform:translateX(-50%) rotate(45deg)}.hint{position:absolute;bottom:2%;left:0;right:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;text-align:center;color:var(--muted);pointer-events:none;transition:opacity .4s}.hint.gone{opacity:0}.block{max-width:720px;margin:0 auto;padding:104px 24px 0;scroll-margin-top:40px}.label{display:flex;align-items:center;gap:16px;margin-bottom:28px;font-size:11px;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.label:after{content:"";flex:1;height:1px;background:var(--line)}.work{list-style:none;padding:0}.work a{display:grid;grid-template-columns:1fr auto;-moz-column-gap:16px;column-gap:16px;padding:18px 4px;border-bottom:1px solid var(--line);text-decoration:none}.work li:first-child a{padding-top:4px}.work-name{font-size:18px;font-weight:600;letter-spacing:-.01em;transition:color .15s}.work-desc{grid-column:1;font-size:15px}.arrow,.work-desc{color:var(--muted)}.arrow{grid-column:2;grid-row:1/3;align-self:center;transition:transform .2s,color .2s}.work a:hover .arrow,.work a:hover .work-name{color:var(--accent)}.work a:hover .arrow{transform:translate(3px,-3px)}.about-grid{display:grid;grid-template-columns:240px 1fr;gap:40px;align-items:start}.portrait img{display:block;width:100%;height:auto;border-radius:18px;border:1px solid var(--line)}figcaption{margin-top:10px;font-size:11px;color:var(--muted)}.prose p+p{margin-top:1em}.prose p:first-child{font-size:21px;font-weight:500;line-height:1.4;letter-spacing:-.01em}.prose p:not(:first-child){color:var(--muted)}.contact{display:flex;flex-wrap:wrap;align-items:center;gap:16px}.email{font-size:clamp(22px,4.2vw,34px);font-weight:600;letter-spacing:-.02em;text-decoration-color:var(--line);text-decoration-thickness:2px;text-underline-offset:7px;transition:text-decoration-color .15s;overflow-wrap:anywhere}.email:hover{text-decoration-color:var(--accent)}.copy{font-size:11px;letter-spacing:.06em;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}.elsewhere{display:flex;gap:24px;margin-top:24px;font-weight:600;font-size:15px}.elsewhere a{text-decoration:none;color:var(--muted);transition:color .15s}.elsewhere a:hover{color:var(--accent)}.footer{display:flex;justify-content:space-between;max-width:720px;margin:120px auto 0;padding:28px 24px 48px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}@media (max-width:760px){.hero{grid-template-columns:1fr;min-height:0;padding-top:48px}.stage{max-width:440px;margin:0 auto}.topbar nav{gap:18px}.about-grid{grid-template-columns:1fr;gap:24px}.portrait{max-width:280px}.block{padding-top:80px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-links,.intro,.signature path{animation:none}.bubble,.hint{transition:none}}@font-face{font-family:Schibsted Grotesk;font-style:normal;font-weight:400 900;font-display:swap;src:url(/_next/static/media/56069e83bb5b2425-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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-weight:400 900;font-display:swap;src:url(/_next/static/media/91601dd83defba07-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,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 Fallback;src:local("Arial");ascent-override:93.46%;descent-override:24.67%;line-gap-override:0.00%;size-adjust:104.49%}.__className_e8899d{font-family:Schibsted Grotesk,Schibsted Grotesk Fallback;font-style:normal}.__variable_e8899d{--font-body:"Schibsted Grotesk","Schibsted Grotesk Fallback"}@font-face{font-family:Martian Mono;font-style:normal;font-weight:100 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2a705150951ef2a4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Martian Mono;font-style:normal;font-weight:100 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/f11589fe773c9f21-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Martian Mono;font-style:normal;font-weight:100 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/ef87c177b26f69d3-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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:Martian Mono;font-style:normal;font-weight:100 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9ae8a6594e58fd44-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Martian Mono Fallback;src:local("Arial");ascent-override:63.69%;descent-override:12.74%;line-gap-override:0.00%;size-adjust:157.02%}.__className_907a74{font-family:Martian Mono,Martian Mono Fallback;font-style:normal}.__variable_907a74{--font-mono:"Martian Mono","Martian Mono Fallback"}