:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f8fa;--bg-2:#f1f3f7;--surface:#fff;--surface-2:#f5f7fa;--ink:#0f1a2b;--ink-2:#42536b;--ink-3:#5d6c82;--line:#dfe4ec;--line-2:#c7d0dd;--line-ink:#0f1a2b;--accent:#1f4e88;--accent-2:#163c6b;--on-ink:#fff;--shadow-sm:0 1px 2px #0f1a2b0d;--shadow-md:0 2px 6px -1px #0f1a2b12, 0 8px 20px -6px #0f1a2b14}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a101a;--bg-2:#0e1622;--surface:#111a28;--surface-2:#16202f;--ink:#e6ebf2;--ink-2:#a3b0c2;--ink-3:#8494a8;--line:#1d2836;--line-2:#2a3746;--line-ink:#e6ebf2;--accent:#7fb2e8;--accent-2:#a3c8f0;--on-ink:#0a101a;--shadow-sm:0 1px 2px #00000073;--shadow-md:0 4px 12px -2px #0000008c}:root{--font-sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--r:4px;--r-lg:6px;--shell:1240px;--gutter:clamp(20px, 4.5vw, 56px);--section-y:clamp(72px, 9vw, 128px);--ease:cubic-bezier(.22, 1, .36, 1);--ease-out:cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:90px}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s var(--ease), color .3s var(--ease);margin:0;font-size:16px;line-height:1.62;overflow-x:hidden}body.nav-open{overflow:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3,h4{letter-spacing:-.025em;margin:0;font-weight:600;line-height:1.1}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.skip-link{z-index:200;border-radius:var(--r);background:var(--ink);color:var(--on-ink);font-family:var(--font-mono);transition:top .2s var(--ease);padding:12px 18px;font-size:12px;position:absolute;top:-80px;left:16px}.skip-link:focus-visible{top:14px}.display{letter-spacing:-.03em;text-wrap:balance;font-weight:600;line-height:1.06}.display em{color:inherit;font-style:normal}.label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:10px;margin:0;font-size:11px;font-weight:400;display:inline-flex}.label .num{color:var(--accent)}.label .tick{background:var(--accent);flex:none;width:20px;height:1px}.prose{color:var(--ink-2);text-wrap:pretty;line-height:1.72}.shell{width:100%;max-width:var(--shell);padding-inline:var(--gutter);margin-inline:auto;position:relative}.section{padding-block:var(--section-y)}.section--ruled{border-top:1px solid var(--line)}.section--tint{background:var(--bg-2);border-block:1px solid var(--line)}.masthead{border-top:1px solid var(--line-2);grid-template-columns:minmax(0,1fr) minmax(0,30ch);align-items:end;gap:clamp(24px,5vw,80px);margin-bottom:clamp(36px,5vw,60px);padding-top:22px;display:grid}.masthead--solo{grid-template-columns:minmax(0,1fr)}.masthead h2{max-width:18ch;margin:18px 0 0;font-size:clamp(28px,3.9vw,46px)}.masthead .prose{margin:0;font-size:15px}.btn{border:1px solid var(--ink);border-radius:var(--r);background:var(--ink);color:var(--on-ink);letter-spacing:-.005em;white-space:nowrap;transition:background-color .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease), box-shadow .2s var(--ease);align-items:center;gap:10px;padding:13px 20px;font-size:14px;font-weight:550;display:inline-flex}.btn:hover{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:var(--shadow-md)}.btn--accent{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.btn--open{color:var(--ink);border-color:var(--line-2);background:0 0}.btn--open:hover{border-color:var(--ink);color:var(--ink);box-shadow:none;background:0 0}.btn--sm{padding:9px 15px;font-size:13px}.tlink{color:var(--ink-2);border-bottom:1px solid var(--line-2);transition:color .2s var(--ease), border-color .2s var(--ease);align-items:center;gap:7px;padding-bottom:3px;font-size:14px;font-weight:500;display:inline-flex;position:relative}.tlink:hover{color:var(--accent);border-color:var(--accent)}.tag{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);color:var(--ink-2);font-family:var(--font-mono);white-space:nowrap;align-items:center;padding:5px 10px;font-size:11px;display:inline-flex}.reveal{opacity:0;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transition-delay:var(--delay,0s);transform:translateY(14px)}.reveal.is-visible{opacity:1;transform:none}.site-header{z-index:100;background:var(--bg);transition:border-color .3s var(--ease);border-bottom:1px solid #0000;position:sticky;top:0}.site-header.is-stuck{border-bottom-color:var(--line)}.site-header .shell{justify-content:space-between;align-items:center;gap:24px;height:68px;display:flex}.brand{letter-spacing:-.015em;align-items:center;gap:11px;font-size:15px;font-weight:600;display:inline-flex}.brand-mark{border-radius:var(--r);background:var(--ink);width:30px;height:30px;color:var(--on-ink);font-family:var(--font-mono);transition:background-color .25s var(--ease);place-items:center;font-size:11px;font-weight:600;display:grid}.brand:hover .brand-mark{background:var(--accent);color:#fff}.brand-role{color:var(--ink-3);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:11px}.nav-desktop{align-items:center;gap:28px;display:flex}.nav-desktop a{color:var(--ink-2);transition:color .2s var(--ease);padding-block:4px;font-size:14px;font-weight:500;position:relative}.nav-desktop a:after{content:"";background:var(--accent);transform-origin:100%;width:100%;height:1px;transition:transform .3s var(--ease);position:absolute;bottom:0;left:0;transform:scaleX(0)}.nav-desktop a:hover{color:var(--accent)}.nav-desktop a:hover:after{transform-origin:0;transform:scaleX(1)}.header-actions{align-items:center;gap:12px;display:flex}.icon-btn{border:1px solid var(--line-2);border-radius:var(--r);width:34px;height:34px;color:var(--ink-2);transition:color .2s var(--ease), border-color .2s var(--ease), background-color .2s var(--ease);place-items:center;display:grid}.icon-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--surface)}.icon-btn svg{width:15px;height:15px}.theme-toggle .sun{display:none}:root[data-theme=dark] .theme-toggle .sun{display:block}:root[data-theme=dark] .theme-toggle .moon,.nav-trigger{display:none}.nav-trigger .bar{width:15px;height:1.4px;transition:transform .3s var(--ease), opacity .2s var(--ease);background:currentColor;display:block}.nav-trigger .bar+.bar{margin-top:4px}.nav-trigger[aria-expanded=true] .bar:first-child{transform:translateY(5.4px)rotate(45deg)}.nav-trigger[aria-expanded=true] .bar:nth-child(2){opacity:0}.nav-trigger[aria-expanded=true] .bar:nth-child(3){transform:translateY(-5.4px)rotate(-45deg)}.nav-sheet{z-index:99;padding:18px var(--gutter) 40px;background:var(--bg);border-top:1px solid var(--line);opacity:0;visibility:hidden;transition:opacity .28s var(--ease), visibility .28s;flex-direction:column;display:flex;position:fixed;inset:68px 0 0}.nav-sheet.is-open{opacity:1;visibility:visible}.nav-sheet a{border-bottom:1px solid var(--line);letter-spacing:-.025em;align-items:baseline;gap:14px;padding:19px 0;font-size:24px;font-weight:600;display:flex}.nav-sheet a .idx{font-family:var(--font-mono);letter-spacing:.1em;color:var(--accent);font-size:11px;font-weight:400}.nav-sheet a.btn{border-bottom:1px solid var(--ink);justify-content:center;margin-top:28px;font-size:15px}.hero{padding-block:clamp(44px,5.5vw,76px) clamp(52px,6.5vw,88px)}.hero-meta{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px 32px;padding-bottom:16px;display:flex}.hero-meta span{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:11px}.hero-meta .live{color:var(--ink-2);align-items:center;gap:8px;margin-left:auto;display:inline-flex}.hero-meta .live i{background:var(--accent);border-radius:50%;width:6px;height:6px;animation:2.6s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.hero h1{letter-spacing:-.032em;max-width:17ch;margin:clamp(26px,3.4vw,44px) 0 0;font-size:clamp(40px,5.6vw,74px);line-height:1.04}.hero-body{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:clamp(32px,6vw,88px);margin-top:clamp(34px,4.5vw,54px);padding-top:clamp(26px,3.4vw,38px);display:grid}.hero-lede{max-width:44ch;margin:0;font-size:clamp(16px,1.5vw,18px)}.hero-actions{flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:28px;display:flex}.spec{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}.spec-head{border-bottom:1px solid var(--line);background:var(--surface-2);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;font-size:11px;display:flex}.spec-row{border-bottom:1px solid var(--line);transition:background-color .2s var(--ease);grid-template-columns:116px minmax(0,1fr);gap:18px;padding:14px 18px;display:grid}.spec-row:last-child{border-bottom:0}.spec-row:hover{background:var(--surface-2)}.spec-row dt{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding-top:3px;font-size:10.5px}.spec-row dd{color:var(--ink);margin:0;font-size:14px}.spec-row dd small{color:var(--ink-3);margin-top:4px;font-size:12.5px;display:block}.figures{border-top:1px solid var(--line-2);grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(44px,5.5vw,72px);display:grid}.figure{border-right:1px solid var(--line);margin:0;padding:24px 22px 0 0}.figure:last-child{border-right:0}.figure dt{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);font-size:10px}.figure dd{letter-spacing:-.035em;margin:14px 0 0;font-size:clamp(30px,3.6vw,42px);font-weight:600;line-height:1}.figure dd em{color:var(--accent);font-style:normal}.about-grid{grid-template-columns:minmax(0,280px) minmax(0,1fr);align-items:start;gap:clamp(28px,5vw,72px);display:grid}.portrait{margin:0;position:relative}.portrait img{aspect-ratio:4/5;object-fit:cover;border:1px solid var(--line);border-radius:var(--r-lg);filter:grayscale()contrast(1.04);width:100%;transition:filter .5s var(--ease)}.portrait:hover img{filter:grayscale(0)contrast()}.portrait figcaption{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:11px;display:flex}.portrait figcaption em{font-style:normal}.about-copy h2{max-width:20ch;margin:18px 0 0;font-size:clamp(26px,3.5vw,40px)}.about-body{grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,44px);margin-top:28px;display:grid}.about-body p{margin:0;font-size:15.5px}.principles{border-top:1px solid var(--line-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:38px 0 0;padding:0;list-style:none;display:grid}.principles li{border-right:1px solid var(--line);padding:22px 22px 0 0}.principles li:last-child{border-right:0;padding-right:0}.principles b{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:10.5px;font-weight:500;display:block}.principles p{color:var(--ink-2);margin:11px 0 0;font-size:14px;line-height:1.65}.work-list{border-top:1px solid var(--line-2)}.case{border-bottom:1px solid var(--line)}.case-heading{font:inherit;letter-spacing:inherit;margin:0}.case-head{text-align:left;grid-template-columns:52px minmax(0,250px) minmax(0,1fr) 32px;align-items:center;gap:clamp(14px,2.4vw,28px);width:100%;padding:24px 0;display:grid}.case-no{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-3);font-size:11px}.case-name small{font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-size:10px;display:block}.case-name strong{letter-spacing:-.028em;transition:color .2s var(--ease);font-size:clamp(20px,2.3vw,26px);font-weight:600}.case:hover .case-name strong{color:var(--accent)}.case-blurb{color:var(--ink-2);margin:0;font-size:14px;line-height:1.6}.case-toggle{border:1px solid var(--line-2);border-radius:var(--r);width:30px;height:30px;color:var(--ink-2);transition:background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);justify-self:end;place-items:center;display:grid}.case:hover .case-toggle{border-color:var(--accent);color:var(--accent)}.case.is-open .case-toggle{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.case-toggle svg{width:13px;height:13px;transition:transform .35s var(--ease)}.case.is-open .case-toggle svg{transform:rotate(45deg)}.case-panel{transition:grid-template-rows .45s var(--ease);grid-template-rows:0fr;display:grid}.case.is-open .case-panel{grid-template-rows:1fr}.case-panel>div{overflow:hidden}.case-inner{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(28px,4vw,60px);padding:4px 0 40px 52px;display:grid}.case-lead>p{color:var(--ink-2);margin:0 0 20px;font-size:15px;line-height:1.72}.case-chips{flex-wrap:wrap;gap:6px;display:flex}.case-repo{margin-top:22px}.case-facts{grid-template-columns:1fr 1fr;gap:clamp(22px,3vw,34px);display:grid}.case-facts .wide{grid-column:1/-1}.case-facts h4{border-bottom:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:0 0 11px;padding-bottom:8px;font-size:10px;font-weight:500}.case-facts p{color:var(--ink-2);margin:0;font-size:14px;line-height:1.7}.case-facts ul{gap:9px;margin:0;padding:0;list-style:none;display:grid}.case-facts li{color:var(--ink-2);padding-left:18px;font-size:14px;line-height:1.65;position:relative}.case-facts li:before{content:"";background:var(--line-2);width:7px;height:1px;position:absolute;top:.68em;left:0}.timeline{border-top:1px solid var(--line-2)}.timeline article{border-bottom:1px solid var(--line);transition:background-color .2s var(--ease);grid-template-columns:minmax(0,176px) minmax(0,270px) minmax(0,1fr);gap:clamp(16px,3vw,40px);padding:24px 0;display:grid}.timeline article:hover{background:var(--surface-2)}.timeline time{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-3);padding-top:4px;font-size:11.5px}.timeline h3{letter-spacing:-.02em;font-size:18px;font-weight:600}.timeline .company{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:6px 0 0;font-size:11px}.timeline .role-copy{color:var(--ink-2);margin:0;padding-top:3px;font-size:14.5px;line-height:1.7}.education{border-top:1px solid var(--line-2);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:clamp(36px,4.5vw,56px);display:grid}.education>div{border-right:1px solid var(--line);padding:22px 24px 0 0}.education>div:last-child{border-right:0}.education strong{letter-spacing:-.02em;font-size:16px;font-weight:600;display:block}.education span{font-family:var(--font-mono);color:var(--ink-3);margin-top:9px;font-size:11.5px;display:block}.tech-grid{border-top:1px solid var(--line-2);border-left:1px solid var(--line);grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.tech{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:74px;transition:background-color .2s var(--ease);align-items:center;gap:12px;padding:16px 14px;display:flex}.tech:hover{background:var(--surface)}.tech-icon{object-fit:contain;width:20px;height:20px;transition:transform .25s var(--ease);flex:none}.tech:hover .tech-icon{transform:scale(1.12)}.tech-icon--dark,:root[data-theme=dark] .tech-icon--light{display:none}:root[data-theme=dark] .tech-icon--dark{display:block}.tech span{color:var(--ink-2);font-size:13px;font-weight:500;line-height:1.3}.skill-bands{border-top:1px solid var(--line-2);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(34px,4vw,52px);display:grid}.skill-bands>div{border-right:1px solid var(--line);padding:22px 24px 0 0}.skill-bands>div:last-child{border-right:0}.skill-bands b{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:10.5px;font-weight:500;display:block}.skill-bands p{color:var(--ink-2);margin:13px 0 0;font-size:14px;line-height:1.7}.contact-block{border-top:1px solid var(--line-2);padding-top:clamp(26px,3.5vw,40px)}.contact-block h2{letter-spacing:-.035em;max-width:14ch;margin:20px 0 0;font-size:clamp(34px,5.4vw,68px)}.contact-block .prose{max-width:48ch;margin:22px 0 0;font-size:17px}.contact-actions{flex-wrap:wrap;gap:12px;margin-top:30px;display:flex}.contact-rows{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));margin-top:clamp(38px,4.5vw,60px);display:grid}.contact-rows a{border-bottom:1px solid var(--line);border-right:1px solid var(--line);transition:color .2s var(--ease), padding-left .25s var(--ease);justify-content:space-between;align-items:center;gap:16px;padding:18px 20px 18px 0;display:flex}.contact-rows a:nth-child(2n){border-right:0}.contact-rows a:hover{color:var(--accent);padding-left:10px}.contact-rows small{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;font-size:10px;display:block}.contact-rows b{letter-spacing:-.015em;word-break:break-word;font-size:16px;font-weight:550}.contact-rows .arrow{color:var(--ink-3);transition:transform .2s var(--ease), color .2s var(--ease);flex:none}.contact-rows a:hover .arrow{color:var(--accent);transform:translate(3px,-3px)}.site-footer{border-top:1px solid var(--line);padding-block:24px 32px}.site-footer .shell{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;display:flex}.site-footer p{font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin:0;font-size:11px}.footer-links{flex-wrap:wrap;gap:22px;display:flex}.footer-links a{color:var(--ink-3);transition:color .2s var(--ease);font-size:13px;font-weight:500}.footer-links a:hover{color:var(--accent)}@media (max-width:1080px){.tech-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.case-head{grid-template-columns:42px minmax(0,210px) minmax(0,1fr) 30px}.timeline article{grid-template-columns:minmax(0,148px) minmax(0,225px) minmax(0,1fr)}}@media (max-width:940px){html{scroll-padding-top:80px}.nav-desktop{display:none}.nav-trigger{display:grid}.header-actions>.btn{display:none}.hero-body{grid-template-columns:minmax(0,1fr);gap:34px}.spec{max-width:560px}.hero-meta .live{margin-left:0}.figures{grid-template-columns:repeat(2,minmax(0,1fr))}.figure{border-bottom:1px solid var(--line);padding-bottom:20px}.figure:nth-child(2n){border-right:0}.about-grid{grid-template-columns:minmax(0,1fr)}.portrait{max-width:280px}.about-body{grid-template-columns:1fr;gap:18px}.case-inner{grid-template-columns:minmax(0,1fr)}.masthead{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px}.masthead h2{max-width:22ch}.tech-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.principles,.skill-bands,.education{grid-template-columns:minmax(0,1fr)}.principles li,.skill-bands>div,.education>div{border-right:0;border-bottom:1px solid var(--line);padding:20px 0}.principles li:last-child,.skill-bands>div:last-child,.education>div:last-child{border-bottom:0}}@media (max-width:720px){.brand-role{display:none}.case-head{grid-template-columns:minmax(0,1fr) 30px;grid-template-areas:"no toggle""name toggle""blurb blurb";align-items:start;gap:9px 14px}.case-no{grid-area:no}.case-name{grid-area:name}.case-blurb{grid-area:blurb}.case-toggle{grid-area:toggle}.case-inner{padding-left:0}.case-facts{grid-template-columns:minmax(0,1fr)}.case-facts .wide{grid-column:auto}.timeline article{grid-template-columns:minmax(0,1fr);gap:9px}.timeline .role-copy{padding-top:0}.contact-rows{grid-template-columns:minmax(0,1fr)}.contact-rows a{border-right:0}.site-footer .shell{flex-direction:column;align-items:flex-start;gap:14px}.spec-row{grid-template-columns:minmax(0,1fr);gap:6px}}@media (max-width:520px){.figures{grid-template-columns:minmax(0,1fr)}.figure{border-right:0;padding-right:0}.tech-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-actions .btn,.contact-actions .btn{justify-content:center;width:100%}.nav-sheet a{font-size:21px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1!important;transform:none!important}}@media (forced-colors:active){.btn,.tag,.icon-btn,.case-toggle,.spec,.portrait img{border-color:canvastext}.label .num,.label .tick{color:linktext;background:linktext}}@media print{.site-header,.nav-sheet,.case-toggle{display:none!important}.case-panel{grid-template-rows:1fr!important}body{color:#000;background:#fff}}
