:root{--bg:#09090b;--bg-rgb:9 9 11;--ink-rgb:255 255 255;--fg:#f4f4f5;--fg-2:#e0e0e5;--fg-hover:#fff;--muted:#a8a8b3;--line:rgb(var(--ink-rgb) / .08);--line-strong:rgb(var(--ink-rgb) / .16);--surface:#121215eb;--surface-see:#12121599;--panel:#121215f5;--overlay:#0009;--shadow-lg:0 30px 80px #0009;--scrim:.5;--accent:#eeae03;--owl-eye:#eeae03;--on-accent:#000;--font-display:"Fraunces", ui-serif, Georgia, serif;--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--gutter:clamp(16px, 4vw, 48px);--max:1200px;--rail:220px;--ease:cubic-bezier(.2, .7, .1, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#fafaf9;--bg-rgb:250 250 249;--ink-rgb:9 9 11;--fg:#18181b;--fg-2:#3f3f46;--fg-hover:#000;--muted:#6b6b76;--surface:#ffffffe6;--surface-see:#fff9;--panel:#fffffff7;--overlay:#09090b4d;--shadow-lg:0 24px 60px #09090b29;--scrim:.7;--accent:#9c6800;--on-accent:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:17px;line-height:1.65;overflow-x:hidden}::selection{background:var(--accent);color:var(--on-accent)}a{color:inherit;text-decoration:none}h1,h2,h3,p,dl,dd{margin:0}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.container{width:100%;max-width:calc(var(--max) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:12.5px;font-weight:400}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{position:absolute;left:-9999px}.skip:focus{left:var(--gutter);z-index:100;background:var(--fg);color:var(--bg);padding:6px 10px;top:12px}.backdrop{z-index:0;pointer-events:none;position:fixed;inset:0}.backdrop:after{content:"";background:linear-gradient(to bottom, var(--bg) 0%, transparent 18%, transparent 75%, var(--bg) 100%), radial-gradient(120% 90% at 70% 40%, transparent 40%, rgb(var(--bg-rgb) / .85) 100%);position:absolute;inset:0}.field-canvas{animation:fade-in 1.8s var(--ease) both}@keyframes fade-in{0%{opacity:0}}main,.footer{z-index:1;position:relative}main:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(to bottom, rgb(var(--bg-rgb) / 0) 0, rgb(var(--bg-rgb) / var(--scrim)) 200px);position:absolute;inset:calc(min(100svh,1000px) - 40px) 0 0}.footer{background:rgb(var(--bg-rgb) / .5)}@media (width<=820px){main:before{background:linear-gradient(to bottom, rgb(var(--bg-rgb) / 0) 0, rgb(var(--bg-rgb) / calc(var(--scrim) - .05)) 160px)}.backdrop:after{background:linear-gradient(to bottom, var(--bg) 0%, transparent 12%, transparent 85%, var(--bg) 100%), radial-gradient(140% 100% at 50% 45%, transparent 55%, rgb(var(--bg-rgb) / .7) 100%)}}.btn{border:1px solid var(--line-strong);background:rgb(var(--ink-rgb) / .03);height:42px;color:var(--fg);font:inherit;cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding-inline:18px;font-size:14px;font-weight:500;transition:border-color .2s,background .2s,color .2s;display:inline-flex}.btn:hover{border-color:rgb(var(--ink-rgb) / .32);background:rgb(var(--ink-rgb) / .06)}.btn span[aria-hidden]{transition:transform .3s var(--ease)}.btn:hover span[aria-hidden]{transform:translate(3px)}.btn-primary{background:var(--fg);border-color:var(--fg);color:var(--bg)}.btn-primary:hover{background:var(--fg-hover);border-color:var(--fg-hover)}.btn-sm{height:34px;padding-inline:14px;font-size:13px}.hero{flex-direction:column;justify-content:flex-end;min-height:min(100svh,1000px);padding-top:60px;display:flex;position:relative}.hero:before{content:"";pointer-events:none;background:radial-gradient(70% 70% at 15% 70%, rgb(var(--bg-rgb) / .82) 0%, rgb(var(--bg-rgb) / .4) 55%, transparent 100%);position:absolute;inset:0}.hero>*{position:relative}.hero-content{will-change:transform, opacity;padding-bottom:clamp(72px,15vh,168px)}.hero-owl{height:clamp(44px,5.5vw,68px);margin-bottom:28px;display:block}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}.hero-content>*{animation:rise 1s var(--ease) both}.hero-content>:nth-child(2){animation-delay:80ms}.hero-content>:nth-child(3){animation-delay:.16s}.hero-content>:nth-child(4){animation-delay:.24s}.hero-title{max-width:13ch;font-family:var(--font-display);font-variation-settings:"opsz" 36;letter-spacing:-.02em;text-wrap:balance;margin-top:20px;font-size:clamp(48px,7.6vw,104px);font-weight:500;line-height:1}.hero-intro{max-width:54ch;color:var(--fg-2);margin-top:24px;font-size:clamp(17px,1.4vw,19px);line-height:1.65}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.status-dot{background:#3ecf8e;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #3ecf8e2e}@media (width<=820px) and (orientation:portrait){.hero:before{background:linear-gradient(to bottom, transparent 18%, rgb(var(--bg-rgb) / .7) 42%, rgb(var(--bg-rgb) / .88) 70%)}}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags li{font-family:var(--font-mono);border:1px solid var(--line);background:rgb(var(--ink-rgb) / .03);color:var(--fg-2);white-space:nowrap;border-radius:5px;padding:3px 8px;font-size:11.5px}.scope{align-items:center;gap:10px;margin-top:12px;display:flex}.scope-bars{grid-template-columns:repeat(5,14px);gap:3px;display:grid}.scope-bars span{background:var(--line-strong);border-radius:2px;height:4px}.scope-bars span.on{background:var(--accent)}.scope-label{color:var(--muted);font-size:11px}.scope-label.is-full{color:var(--accent)}.scope-detailed .scope-bars{grid-template-columns:repeat(5,1fr);gap:4px;width:100%}.scope-detailed{margin-top:0}.scope-detailed .scope-bars span{border-top:3px solid var(--line-strong);background:rgb(var(--ink-rgb) / .02);height:auto;font-family:var(--font-mono);text-align:center;color:var(--muted);border-radius:6px;padding:8px 0 6px;font-size:11px}.scope-detailed .scope-bars span.on{border-top-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--fg)}.signal-dot{color:var(--accent)}.section{padding-block:clamp(88px,13vh,150px)}.section-head{grid-template-columns:var(--rail) 1fr;align-items:baseline;gap:24px;margin-bottom:56px;display:grid}.section-index{color:var(--accent);margin-right:6px;font-weight:700}.section-head h2{font-family:var(--font-display);font-variation-settings:"opsz" 36;letter-spacing:-.015em;text-wrap:balance;scroll-margin-top:120px;font-size:clamp(34px,4vw,52px);font-weight:500;line-height:1.08}@media (width<=820px){.section-head{grid-template-columns:1fr;gap:14px;margin-bottom:40px}}.about-grid{margin-left:calc(var(--rail) + 24px);grid-template-columns:1fr 280px;gap:64px;display:grid}.about-body{color:var(--fg-2);gap:20px;max-width:62ch;font-size:clamp(17px,1.5vw,19px);display:grid}.about-body p:first-child{color:var(--fg)}.about-side{align-content:start;gap:32px;display:grid}.about-facts{border-top:1px solid var(--line-strong);align-content:start;display:grid}.now .label{align-items:center;gap:8px;display:flex}.now-date{text-transform:none;letter-spacing:0;margin-left:auto}.now ul{color:var(--fg-2);gap:10px;margin-top:14px;font-size:14.5px;display:grid}.now li{border-left:1px solid var(--line-strong);padding-left:14px}.principles{margin:72px 0 0 calc(var(--rail) + 24px);border-top:1px solid var(--line-strong);grid-template-columns:repeat(4,1fr);gap:24px;padding-top:28px;display:grid}.principles li{align-content:start;gap:8px;display:grid}.principles h3{font-family:var(--font-display);letter-spacing:-.015em;font-size:22px;font-weight:500;line-height:1.15}.principles p{color:var(--fg-2);font-size:15px}@media (width<=1100px){.principles{grid-template-columns:1fr 1fr;gap:32px 24px}}@media (width<=960px){.principles{margin-left:0}}@media (width<=560px){.principles{grid-template-columns:1fr}}.about-facts>div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:16px;padding-block:14px;display:flex}.about-facts dd{text-align:right;font-size:15px}@media (width<=960px){.about-grid{grid-template-columns:1fr;gap:40px;margin-left:0}}.work-head,.work-row{grid-template-columns:minmax(180px,1.1fr) 2fr minmax(200px,1.2fr) 72px;gap:32px;display:grid}.work-head{border-bottom:1px solid var(--line-strong);padding-bottom:12px}.work-head span:last-child{text-align:right}.work-row{border-bottom:1px solid var(--line);align-items:start;padding:26px 0;position:relative}.work-row:before{content:"";inset:0 calc(var(--gutter) * -.5);background:rgb(var(--ink-rgb) / .035);opacity:0;z-index:-1;border-radius:10px;transition:opacity .3s;position:absolute}.work-row:hover:before,.work-row[data-mapped]:before{opacity:1}.work-place{color:var(--muted);align-items:center;gap:7px;margin-top:10px;font-size:11.5px;transition:color .3s;display:inline-flex}.work-pin{border:1px solid var(--accent);border-radius:50%;width:7px;height:7px;transition:background .3s,box-shadow .3s}.work-row[data-mapped] .work-place{color:var(--fg)}.work-row[data-mapped] .work-pin{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent)}.work-name{gap:2px;display:grid}.work-title{letter-spacing:-.015em;margin:0;font-size:18px;font-weight:500}.work-role{color:var(--muted);font-size:13px}.work-body{gap:14px;display:grid}.work-links{flex-wrap:wrap;gap:8px;display:flex}.work-links .btn{gap:6px;height:32px;padding-inline:12px}.work-summary{color:var(--fg-2);max-width:54ch;font-size:16px}.work-tags{align-content:start}.work-year{text-align:right;color:var(--muted);font-size:13px}@media (width<=960px){.work-head{display:none}.work-list{border-top:1px solid var(--line-strong)}.work-row{grid-template-columns:1fr auto;gap:10px 16px}.work-body,.work-tags{grid-column:1/-1}.work-year{grid-area:1/2}}.work-thumb{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--line);background:var(--surface);border-radius:10px;width:100%;display:block}.work-preview{display:none}@media (hover:hover) and (width>=961px){.work-thumb{display:none}.work-preview{z-index:40;aspect-ratio:16/10;border:1px solid var(--line-strong);background:var(--surface);width:340px;box-shadow:var(--shadow-lg);pointer-events:none;opacity:0;transition:opacity .25s, scale .35s var(--ease);border-radius:12px;display:block;position:fixed;top:0;left:0;overflow:hidden;scale:.92}.work-preview.is-on{opacity:1;scale:1}.work-preview>*{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .25s;position:absolute;inset:0}.work-preview>.is-current{opacity:1}}.process{--progress:0;grid-template-columns:repeat(5,1fr);gap:24px;padding-top:28px;display:grid;position:relative}.process:before,.process:after{content:"";background:var(--line-strong);height:1px;position:absolute;top:5px;left:0;right:0}.process:after{background:var(--accent);transform:scaleX(var(--progress));transform-origin:0}.process-step{align-content:start;gap:10px;display:grid;position:relative}.process-node{border:1px solid var(--line-strong);background:var(--bg);border-radius:50%;width:11px;height:11px;transition:border-color .4s,background .4s,box-shadow .4s;position:absolute;top:-28px;left:0}.process-step.is-reached .process-node{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent)}.process-step h3{letter-spacing:-.015em;font-size:18px;font-weight:500}.process-body{color:var(--fg-2);font-size:15px}.process-step .tags{margin-top:4px}@media (width<=960px){.process{grid-template-columns:1fr;gap:36px;padding-top:0;padding-left:32px}.process:before,.process:after{width:1px;height:auto;inset:0 auto 0 5px}.process:after{transform:scaleY(var(--progress));transform-origin:top}.process-node{top:3px;left:-32px}}.stack-grid{border:1px solid var(--line);background:var(--surface-see);border-radius:12px;grid-template-columns:repeat(4,1fr);display:grid;overflow:hidden}.stack-col{padding:24px}.stack-col+.stack-col{border-left:1px solid var(--line)}.stack-col h3{margin-bottom:18px}.stack-col li{color:var(--fg-2);align-items:center;gap:12px;padding-block:7px;font-size:15.5px;display:flex}.stack-icons{flex:none;gap:4px;display:inline-flex}.devicon{width:18px;height:18px;transition:transform .3s var(--ease);display:block}.devicon-mask{background:var(--fg-2);transition:transform .3s var(--ease), background .2s}.stack-col li:hover .devicon-mask{background:var(--fg)}.devicon-fallback{color:var(--fg-2)}.stack-col li:hover .devicon-fallback{color:var(--fg)}.devicon-fallback svg{width:100%;height:100%}.stack-col li:hover .devicon{transform:translateY(-2px)}@media (width<=560px){.stack-grid{grid-template-columns:1fr}.stack-col+.stack-col{border-left:0;border-top:1px solid var(--line)}}@media (width>=561px) and (width<=820px){.stack-grid{grid-template-columns:repeat(2,1fr)}.stack-col:nth-child(3){border-left:0}.stack-col:nth-child(n+3){border-top:1px solid var(--line)}}.exp-list{border-top:1px solid var(--line-strong)}.exp-row{grid-template-columns:var(--rail) minmax(180px, .8fr) 1.6fr;border-bottom:1px solid var(--line);gap:24px;padding-block:28px;display:grid}.exp-period{color:var(--muted);font-size:13px}.exp-title{align-content:start;font-weight:500;display:grid}.exp-org{color:var(--muted);font-size:14px;font-weight:400}.exp-body{gap:12px;display:grid}.exp-summary{color:var(--fg)}.exp-highlights{color:var(--fg-2);gap:6px;font-size:15px;display:grid}.exp-highlights li{padding-left:18px;position:relative}.exp-highlights li:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:.68em;left:2px}@media (width<=820px){.exp-row{grid-template-columns:1fr;gap:8px}}.notes-list{border-top:1px solid var(--line-strong)}.notes-row{grid-template-columns:var(--rail) 1fr auto;border-bottom:1px solid var(--line);align-items:baseline;gap:24px;padding-block:22px;transition:background .3s;display:grid}a.notes-row:hover .notes-title{color:var(--accent)}.notes-date,.notes-go{color:var(--muted);font-size:13px}.notes-text{gap:4px;display:grid}.notes-title{letter-spacing:-.015em;font-size:18px;font-weight:500;transition:color .2s}.notes-summary{color:var(--fg-2);font-size:15px}@media (width<=820px){.notes-row{grid-template-columns:1fr auto;gap:6px 16px}.notes-text{grid-area:2/1/auto/-1}}.contact-grid{margin-left:calc(var(--rail) + 24px);grid-template-columns:1fr 1.3fr;gap:48px;display:grid}.contact-intro{align-content:start;gap:32px;display:grid}.contact-clock{color:var(--muted);align-items:center;gap:10px;font-size:13px;display:flex}.services{border-top:1px solid var(--line-strong);display:grid}.services li{border-bottom:1px solid var(--line);gap:2px;padding-block:14px;display:grid}.services strong{font-weight:500}.services span{color:var(--fg-2);font-size:15px}.contact-lede{color:var(--fg-2);max-width:40ch;font-size:clamp(17px,1.5vw,19px)}.contact-card{border:1px solid var(--line);background:var(--surface-see);border-radius:14px;gap:14px;padding:28px;display:grid}.contact-email{letter-spacing:-.025em;overflow-wrap:anywhere;background:linear-gradient(var(--accent), var(--accent)) 0 100% / 0 1px no-repeat;width:fit-content;transition:background-size .5s var(--ease);font-size:clamp(22px,2.6vw,30px);font-weight:500}.contact-email:hover{background-size:100% 1px}.contact-actions{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.contact-links{border-top:1px solid var(--line);flex-wrap:wrap;gap:20px;margin-top:12px;padding-top:18px;font-size:14px;display:flex}.contact-links a{color:var(--muted);transition:color .2s}.contact-links a:hover{color:var(--fg)}@media (width<=960px){.contact-grid{grid-template-columns:1fr;gap:28px;margin-left:0}}.footer{color:var(--muted);font-size:13px}.footer-bar{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:16px;padding-block:28px 36px;display:flex}.footer-kbd{margin-left:auto}@media (hover:none){.footer-kbd{display:none}}.footer a:hover{color:var(--fg)}[data-reveal]{opacity:0;transition:opacity .9s var(--ease), transform .9s var(--ease);transform:translateY(16px)}[data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}[data-reveal]{opacity:1;transform:none}}.lost{justify-content:center;min-height:100svh}.lost .hero-title{max-width:16ch}
