@font-face{font-family:Geist Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist.woff2)format("woff2-variations")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono.woff2)format("woff2-variations")}@font-face{font-family:"Press Start 2P";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/press-start-2p.woff2)format("woff2")}@font-face{font-family:VT323;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/vt323.woff2)format("woff2")}:root{color-scheme:dark;--bg:#07090d;--backing:#07090db8;--surface:#c9d6e30d;--text:#e6e8ec;--muted:#9aa3ae;--line:#c9d6e324;--star:#c9d6e3;--accent:#3fb6d9;--terminal-bg:#0c0f14;--sans:"Geist Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--column:720px;--nav-height:60px;--radius:10px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-height) + 24px)}body{background:var(--bg);color:var(--text);font:400 1.0625rem/1.65 var(--sans);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0;padding:0}ul,ol{list-style:none}h1,h2,h3{letter-spacing:-.02em;text-wrap:balance;font-weight:600}p{text-wrap:pretty}img,svg,picture{max-width:100%;display:block}img{height:auto}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}strong{color:var(--star);font-weight:600}code{font-family:var(--mono);font-size:.85em}p code,li code{background:var(--surface);border-radius:4px;padding:.1em .35em}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.skip-link{z-index:20;background:var(--bg);padding:8px 14px;position:fixed;top:8px;left:8px;transform:translateY(-300%)}.skip-link:focus{transform:none}.mono{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;line-height:1.6}.muted{color:var(--muted)}#sky{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.page{z-index:1;width:100%;max-width:var(--column);background:var(--backing);backdrop-filter:blur(6px);min-height:100vh;margin-inline:auto;padding:0 20px 72px;transition:opacity .5s;position:relative}.nav{z-index:5;height:var(--nav-height);background:#07090ddb;align-items:center;gap:20px;margin-inline:-20px;padding-inline:20px;display:flex;position:sticky;top:0}.nav-home{color:var(--text);font-weight:600}.nav a:hover{color:var(--accent);text-decoration:none}.nav nav{margin-left:auto}.nav ul{gap:20px;display:flex}.nav li a{color:var(--muted);padding-block:10px;font-size:.9375rem;font-weight:500;display:block}.nav li a[aria-current]{color:var(--accent)}.sidebar{display:none}@media (width>=1100px){.sidebar{z-index:1;flex-direction:column;gap:18px;width:170px;transition:opacity .5s;display:flex;position:fixed;top:32px;bottom:28px;left:28px}.sidebar dt{color:var(--muted);letter-spacing:.16em;font-size:.625rem}.sidebar dd{color:var(--text);font-family:var(--mono);font-size:.75rem;line-height:1.5}.sidebar-hint{color:var(--muted);margin-top:auto;font-size:.625rem}.orbit-log{z-index:0;color:var(--star);font-family:var(--mono);opacity:.4;text-align:right;white-space:pre;pointer-events:none;font-size:.6875rem;line-height:1.6;position:fixed;bottom:20px;right:24px}}.orbit-log{display:none}@media (width>=1100px){.orbit-log{display:block}}.profile{padding-block:36px 24px}.profile h1{letter-spacing:-.035em;font-size:clamp(2.5rem,8vw,3.5rem);line-height:1.08}.profile-line{min-height:1.6em;color:var(--accent);margin-top:12px;font-size:.875rem}.cursor{display:none}@media (prefers-reduced-motion:no-preference){.js .cursor{vertical-align:-.15em;background:currentColor;width:2px;height:1.05em;margin-left:3px;animation:1.06s steps(2,start) infinite blink;display:inline-block}}@keyframes blink{to{visibility:hidden}}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.profile-text{margin-top:24px}.profile-text p+p{margin-top:14px}.block{padding-top:52px}.marker{align-items:baseline;gap:10px;margin-bottom:22px;font-size:1.3125rem;line-height:1.3;display:flex}.marker:before{content:"✦";color:var(--star);font-size:.8125rem}.sub:before{content:"└ ";color:var(--muted);font-family:var(--mono)}.timeline{gap:36px;padding-left:24px;display:grid;position:relative}.timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:8px;bottom:8px;left:4px}.role{position:relative}.role:before{content:"";background:var(--star);border-radius:50%;width:7px;height:7px;position:absolute;top:8px;left:-23px;box-shadow:0 0 6px 1px #3fb6d9b3,0 0 14px 3px #3fb6d947}.role-head{grid-template-columns:38px minmax(0,1fr);align-items:start;gap:12px;display:grid}.role-logo{background:#fff;border-radius:8px;place-items:center;width:38px;height:38px;display:grid}.role-logo img{width:22px;height:22px}.role h3{font-size:1.0625rem;line-height:1.35}.role-company{color:var(--muted);font-size:.9375rem}.role-metric{grid-column:1/-1}.metric-value{color:var(--accent);font-family:var(--mono);letter-spacing:-.01em;font-size:1.375rem;font-weight:500;line-height:1.3}.metric-label{color:var(--muted);letter-spacing:.1em;font-size:.6875rem}.role-bullets,.study-list{gap:8px;display:grid}.role-bullets{color:var(--muted);margin-top:14px;font-size:1rem}.role-bullets li,.study-list li{padding-left:18px;position:relative}.role-bullets li:before,.study-list li:before{content:"└";color:var(--muted);font-family:var(--mono);font-size:.8125rem;position:absolute;left:0}.role-tech{color:var(--muted);font-family:var(--mono);margin-top:12px;font-size:.75rem}@media (width>=640px){.role-head{grid-template-columns:38px minmax(0,1fr) minmax(0,210px)}.role-metric{text-align:right;grid-column:auto}}.rows{gap:28px;display:grid}.row{align-content:start;gap:4px;display:grid}.row-label{color:var(--muted);letter-spacing:.12em;font-size:.6875rem}.row-title{font-size:1.0625rem;line-height:1.4}.row-title a{color:var(--text);align-items:center;gap:6px;display:inline-flex}.row-title svg{width:13px;height:13px;color:var(--muted)}.row-text{color:var(--muted);font-size:1rem}.row-metric{margin-top:6px}.row-status{color:var(--star);margin-top:4px;font-size:.6875rem}.row-links{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;gap:2px 18px;margin-top:6px;font-size:.75rem;font-weight:500;display:flex}.row-links a{padding-block:5px}.row-details summary{color:var(--muted);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding-block:5px;font-size:.75rem;list-style:none;display:inline-block}.row-details summary::-webkit-details-marker{display:none}.row-details summary:after{content:" ▾"}.row-details[open] summary:after{content:" ▴"}.row-details p{color:var(--muted);margin-top:6px;font-size:.9375rem}@media (width>=640px){.rows-wide .row{grid-template-columns:minmax(0,1fr) minmax(0,200px);column-gap:24px}.rows-wide .row>*{grid-column:1}.rows-wide .row-metric{text-align:right;grid-area:1/2/span 4;margin-top:0}.rows-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px}.rows-grid .row-metric{text-align:right}}.all-link{font-family:var(--mono);letter-spacing:.08em;margin-top:24px;padding-block:6px;font-size:.75rem;font-weight:500;display:inline-block}.group-label{color:var(--muted);margin:34px 0 16px}.mayhem{margin-top:40px}.js .mayhem:not(.is-open){display:none}.mayhem-panel{border:2px solid var(--line);background:linear-gradient(#c9d6e309 1px,#0000 1px) 0 0/6px 6px,linear-gradient(90deg,#c9d6e309 1px,#0000 1px) 0 0/6px 6px;padding:26px 20px 20px;position:relative}.mayhem-art{display:none;position:absolute;top:18px;right:18px}.mayhem-art rect{fill:var(--star);opacity:.32}.mayhem-art rect.loose{fill:var(--accent);opacity:.8}.mayhem-panel h2{max-width:380px;font-family:var(--mono);letter-spacing:-.03em;font-size:clamp(1.75rem,7vw,2.5rem);font-weight:800;line-height:1.05}.mayhem-subtitle{color:var(--muted);margin-top:12px}.mayhem-wave{align-items:flex-end;gap:4px;height:26px;margin-top:18px;display:flex}.mayhem-wave span{width:6px;height:calc(6px + (var(--bar) * 7 % 5) * 5px);background:var(--accent);opacity:.7}.mayhem-action{flex-wrap:wrap;align-items:center;gap:18px 24px;margin-top:20px;display:flex}.mayhem-button{background:var(--accent);box-shadow:5px 5px 0 var(--star);color:var(--bg);font-family:var(--mono);letter-spacing:.04em;padding:13px 16px;font-size:.875rem;font-weight:800;transition:transform 80ms steps(2,end),box-shadow 80ms steps(2,end);display:inline-block}.mayhem-button:hover{box-shadow:2px 2px 0 var(--star);text-decoration:none;transform:translate(3px,3px)}.mayhem-keys{grid-template-columns:repeat(3,26px);gap:3px;display:grid}.mayhem-keys kbd{border:2px solid var(--line);height:26px;color:var(--star);font-family:var(--mono);border-bottom-width:4px;place-items:center;font-size:.6875rem;font-weight:700;display:grid}.mayhem-credit{color:var(--muted);margin-top:20px;font-size:.8125rem}@media (width>=640px){.mayhem-art{display:block}}@media (prefers-reduced-motion:no-preference){.mayhem.is-open .mayhem-wave span{animation:.9s steps(4,end) infinite alternate mayhem-bar;animation-delay:calc(var(--bar) * -130ms)}.mayhem-panel:hover .mayhem-art rect.loose{transform:translateY(2px)}@keyframes mayhem-bar{to{height:24px}}}.ascent-label{color:var(--star);margin-bottom:10px}.ascent{gap:10px;display:grid}.ascent img{aspect-ratio:4/5;border-radius:var(--radius);object-fit:cover;width:100%}.ascent picture:first-child img{aspect-ratio:4/3}@media (width>=640px){.ascent{grid-template-columns:repeat(3,minmax(0,1fr))}.ascent picture:first-child{grid-column:1/-1}}.ascent-stats{color:var(--accent);margin-top:14px}.ascent-text{margin-top:10px}.profile-chart{margin-top:12px;position:relative}.profile-chart svg{width:100%;height:90px;overflow:visible}.profile-chart path{fill:none;stroke:var(--accent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.profile-chart circle{fill:var(--accent)}.profile-readout{min-height:1.6em;color:var(--muted)}.shelf-label{color:var(--star);margin:36px 0 12px}.shelf{border-bottom:2px solid var(--line);align-items:flex-end;gap:8px;padding-inline:12px;display:flex}.spine{background:var(--spine);border-radius:3px 3px 0 0;flex-direction:column;justify-content:space-between;align-items:center;width:54px;height:214px;padding:10px 4px;transition:transform .25s;display:flex;position:relative}.spine:nth-child(2){height:196px}.spine:nth-child(3){height:226px}.spine-title{writing-mode:vertical-rl;font-size:.875rem;font-weight:600;line-height:1.2}.spine-author{max-width:100%;color:var(--text);font-family:var(--mono);text-align:center;font-size:.5625rem;line-height:1.25}.spine-note{z-index:2;border:1px solid var(--line);background:var(--bg);width:200px;color:var(--muted);opacity:0;pointer-events:none;border-radius:6px;padding:8px 10px;font-size:.8125rem;transition:opacity .2s;position:absolute;bottom:calc(100% + 8px);left:0}.spine:hover{transform:translateY(-10px)}.spine:hover .spine-note{opacity:1}.contact-list{gap:8px;display:grid}.contact-list li{flex-wrap:wrap;align-items:center;gap:2px 8px;display:flex}.contact-list span{color:var(--muted)}.contact-icon{color:var(--star);flex:none}.contact-list a{overflow-wrap:anywhere}html:not(.js) .js-only{display:none}.site-footer{border-top:1px solid var(--line);color:var(--muted);text-align:center;margin:56px -20px -72px;padding:24px 20px 32px;font-size:.875rem}.footer-pills{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:16px;display:flex}.footer-pill{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);min-height:40px;color:var(--muted);font-family:var(--mono);cursor:pointer;align-items:center;gap:10px;padding:8px 14px;font-size:.75rem;transition:color .2s,border-color .2s;display:inline-flex}.footer-pill:hover,.footer-pill[aria-expanded=true],.footer-pill[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.footer-pill kbd{font:inherit;opacity:.8}.study{padding-top:16px}.back-link{font-family:var(--mono);letter-spacing:.06em;padding-block:8px;font-size:.75rem;display:inline-block}.study-header{margin-top:16px}.study-header h1{letter-spacing:-.03em;margin-top:4px;font-size:clamp(2.25rem,7vw,3rem);line-height:1.1}.study-tagline{margin-top:14px;font-size:1.1875rem;line-height:1.5}.study-credit{color:var(--muted);margin-top:8px}.study-tech{color:var(--muted);font-family:var(--mono);margin-top:12px;font-size:.75rem}.study-figure{margin-top:32px}.study-figure .media{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.study-figure figcaption{color:var(--muted);margin-top:8px;font-size:.875rem}.study-section{margin-top:44px}.study-section .marker{margin-bottom:12px}.study-section p+p{margin-top:12px}.media img{width:100%}.media-contain{background:#f5f5f7}.media-figure{background:#fff}.terminal{background:var(--terminal-bg);color:#aeb6c0}.terminal-title{font:500 .75rem/1.4 var(--mono);padding:10px 16px 0}.terminal pre{font:400 .8125rem/1.6 var(--mono);margin:0;padding:10px 16px 16px;overflow-x:auto}.terminal pre:focus-visible{outline-offset:-3px}.terminal code{font-size:inherit;display:block}.term-input{color:#fff}.term-comment{color:var(--accent)}.flow{gap:24px;margin-block:8px 24px;display:grid}.flow-row{grid-template-columns:repeat(var(--boxes), minmax(0, 1fr));gap:8px;display:grid;position:relative}.flow-row:not(:last-child):after{content:"↓";color:var(--muted);font:400 .8125rem/22px var(--mono);text-align:center;position:absolute;bottom:-23px;left:0;right:0}.flow-box{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:8px;align-content:center;gap:1px;padding:10px 12px;display:grid}.flow-box strong{color:var(--text);font-size:.9375rem;font-weight:500;line-height:1.35}.flow-box span{color:var(--muted);font-size:.8125rem;line-height:1.4}.next-project{border-top:1px solid var(--line);font-family:var(--mono);margin-top:52px;padding-top:14px;font-size:.8125rem;display:block}.not-found{padding-block:88px}.not-found h1{margin-block:6px 12px;font-size:2.5rem;line-height:1.1}.not-found p{color:var(--muted)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.js .reveal{opacity:0;transition:opacity .5s}.js .reveal.is-in{opacity:1}}@media (prefers-reduced-motion:reduce){.page,.sidebar,.spine,.spine-note{transition:none}}html.eight-bit{--bg:#0e0f1f;--backing:#0e0f1fe6;--surface:#1b1d38;--text:#fff1e8;--muted:#c2c3c7;--line:#5f6288;--star:#ffec27;--accent:#29adff;--terminal-bg:#0e0f1f;--sans:"VT323", ui-monospace, Menlo, Consolas, monospace;--mono:"VT323", ui-monospace, Menlo, Consolas, monospace;--radius:0}.eight-bit body{font-size:1.3125rem;line-height:1.3}.eight-bit #sky{image-rendering:pixelated}.eight-bit .page{backdrop-filter:none}.eight-bit h1,.eight-bit h2,.eight-bit h3,.eight-bit .nav-home{letter-spacing:0;overflow-wrap:anywhere;font-family:"Press Start 2P",ui-monospace,monospace;font-weight:400;line-height:1.4}.eight-bit .profile h1,.eight-bit .study-header h1{font-size:clamp(1.375rem,5.4vw,2.25rem)}.eight-bit .marker{font-size:1rem}.eight-bit .marker:before{content:">";color:var(--star);font-size:1rem}.eight-bit .role h3,.eight-bit .row-title{font-size:.8125rem}.eight-bit .nav-home{font-size:.6875rem}.eight-bit .mono,.eight-bit .metric-label,.eight-bit .row-label,.eight-bit .row-links,.eight-bit .row-details summary,.eight-bit .role-tech,.eight-bit .study-tech,.eight-bit .all-link,.eight-bit .footer-pill{letter-spacing:.04em;font-size:1rem}.eight-bit .sidebar dd{font-size:1rem}.eight-bit .sidebar dt,.eight-bit .sidebar-hint{font-size:.875rem}.eight-bit .metric-value{font-size:1.875rem}.eight-bit .role:before{box-shadow:none;border-radius:0}.eight-bit .role-logo,.eight-bit .flow-box,.eight-bit .spine,.eight-bit .spine-note{border-radius:0}.eight-bit .ascent img{border:3px solid var(--line)}.eight-bit .mayhem-panel h2{font-size:clamp(1.125rem,4.6vw,1.625rem);line-height:1.5}.eight-bit .terminal pre{font-size:1rem;line-height:1.25}
