@font-face{font-family:Instrument Sans;src:url(../fonts/instrument-sans-var.woff2)format("woff2");font-weight:400 500;font-style:normal;font-display:swap;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:JetBrains Mono;src:url(../fonts/jetbrains-mono-var.woff2)format("woff2");font-weight:400 500;font-style:normal;font-display:swap;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{--ink:#050507;--surface:#0f1218;--hairline:#ffffff14;--text:#ededf0;--muted:#9b9ba3;--accent:#4fc1d4;--accent-dim:#4fc1d424;--sans:"Instrument Sans", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--t-13:13px;--t-15:15px;--t-17:17px;--t-21:21px;--t-27:27px;--t-34:34px;--t-44:44px;--t-56:56px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:72px;--r-sm:8px;--r-md:12px;--r-pill:999px;--ease:cubic-bezier(.25, .1, .25, 1);--dur:.2s;--max:1400px;--pad:clamp(24px, 5vw, 72px);--measure:74ch}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--ink)}body{color:var(--text);font:400 var(--t-17) / 1.65 var(--sans);background:0 0;min-height:100vh;margin:0}.ocean{z-index:0;pointer-events:none;background:var(--ink);position:fixed;inset:0;overflow:hidden}.ocean canvas,.ocean-noise,.ocean-fade{width:100%;height:100%;position:absolute;inset:0}.ocean-noise{opacity:.08;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}.ocean-fade{background:linear-gradient(to bottom, transparent 0%, transparent 58%, var(--ink) 100%)}body>:not(.ocean):not(.loader){z-index:1;position:relative}.loader{z-index:100;transition:opacity .26s var(--ease), visibility .26s var(--ease);background:#0505077a;place-items:center;display:grid;position:fixed;inset:0}html:not(.is-ready) .nav,html:not(.is-ready) main,html:not(.is-ready) .foot{visibility:hidden}html.is-ready .loader{opacity:0;visibility:hidden;pointer-events:none}@media (prefers-reduced-motion:reduce){.loader{transition:none}}a{color:var(--accent);text-decoration:none}a:hover{color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}img{max-width:100%;display:block}::selection{background:#4fc1d440}.wrap{max-width:var(--max);padding-inline:var(--pad);margin:0 auto}.skip{position:absolute;left:-9999px}.skip:focus{left:var(--pad);z-index:50;background:var(--surface);border:1px solid var(--hairline);color:var(--text);border-radius:8px;padding:10px 16px;top:12px}.label{font:500 13px/1.4 var(--mono);letter-spacing:.02em;color:var(--muted)}.nav{z-index:20;padding-block:20px;position:sticky;top:0}.nav .wrap,.nav-actions,.nav-links{align-items:center;display:flex}.nav .wrap{justify-content:space-between;gap:16px 24px}.brand{color:var(--muted);display:inline-flex}.brand:hover{color:var(--text)}.brand svg{width:42px;height:30px}.nav-actions{gap:clamp(16px,2.5vw,32px)}.nav-links{-webkit-backdrop-filter:blur(22px)saturate(150%);font:400 13px/1 var(--mono);letter-spacing:.02em;background:#ffffff0b;border:1px solid #ffffff17;border-radius:999px;gap:clamp(16px,2.5vw,30px);padding:10px 20px;box-shadow:inset 0 1px #ffffff17}.nav-links a{color:var(--muted)}.nav-links a[aria-current=page]{color:var(--text)}.nav-links a:hover{color:var(--accent)}.status{color:var(--muted);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}@media (width<=680px){.nav{padding-block:16px}.nav .wrap{flex-direction:column;align-items:flex-start}.nav-actions{width:100%}.status{display:none}.nav-links{justify-content:space-between;width:100%}}.dot{background:var(--accent);border-radius:999px;flex:none;width:7px;height:7px}.hero{padding-block:clamp(48px,9vh,96px) 32px}.hero h1{letter-spacing:-.02em;text-wrap:balance;max-width:26ch;margin:0;font-size:clamp(34px,4.4vw,56px);font-weight:500;line-height:1.08}.hero p{max-width:74ch;color:var(--muted);margin:16px 0 0}.hero .hero-role{color:var(--text);font:400 15px/1.5 var(--mono);letter-spacing:.02em;margin-top:10px}.project-row.compact{padding-block:18px}.project-row.compact h2{font-size:21px}.cta{flex-wrap:wrap;align-items:center;gap:12px 28px;margin-top:32px;display:flex}.btn{background:var(--text);color:#08080b;transition:opacity .2s var(--ease);border-radius:999px;align-items:center;padding:12px 28px;font-size:15px;font-weight:500;display:inline-flex}.btn:hover{opacity:.78;color:#08080b}.btn-quiet{font:400 13px/1.4 var(--mono);letter-spacing:.02em;color:var(--muted);text-underline-offset:4px;transition:color .2s var(--ease);text-decoration:underline #ffffff2e}.btn-quiet:hover{color:var(--accent)}.section{padding-block:48px}.section-head{border-bottom:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;padding-bottom:16px;display:flex}.section-head h2{letter-spacing:-.015em;margin:0;font-size:21px;font-weight:500}.project-list{border-top:1px solid var(--hairline);margin-top:16px}.project-row{border-bottom:1px solid var(--hairline);color:inherit;transition:background var(--dur) var(--ease);border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:24px;margin-inline:clamp(-24px,-2vw,-12px);padding:clamp(24px,3vw,36px) clamp(12px,2vw,24px);display:grid}.project-row:hover{background:var(--surface);color:inherit}.project-row-title{justify-content:space-between;align-items:baseline;gap:12px 24px;display:flex}.project-row h2{margin:0;font-size:clamp(21px,2.2vw,27px);font-weight:500}.project-row p{max-width:74ch;color:var(--muted);margin:10px 0 0}.project-stack{color:var(--muted);font:400 12px/1.6 var(--mono);letter-spacing:.02em;margin-top:12px;display:block}.project-arrow{color:var(--accent);transition:transform var(--dur) var(--ease);font-size:17px}.project-row:hover .project-arrow{transform:translate(4px)}@media (width<=600px){.project-row{align-items:start}.project-row-title{flex-direction:column;align-items:flex-start;gap:6px}}.cards{grid-template-columns:1fr;gap:16px;margin-top:24px;display:grid}@media (width>=900px){.cards{grid-template-columns:1fr 1fr}}@media (width>=1200px){.cards{grid-template-columns:repeat(3,1fr)}}.card{border:1px solid var(--hairline);color:inherit;transition:background .2s var(--ease), border-color .2s var(--ease);background:0 0;border-radius:12px;padding:12px;display:block}.card:hover{background:var(--surface);color:inherit;border-color:#ffffff24}.card figure{border:1px solid var(--hairline);background:#f4f6fa;border-radius:8px;height:168px;margin:0 0 12px;padding:8px;overflow:hidden}.card figure img{object-fit:contain;object-position:center;width:100%;height:100%}.card h3{letter-spacing:-.015em;margin:0;font-size:21px;font-weight:500}.card p{color:var(--muted);margin:8px 0 0;font-size:15px}.card-foot{border-top:1px solid var(--hairline);font:400 13px/1.3 var(--mono);letter-spacing:.02em;color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;margin-top:12px;padding-top:12px;display:flex}.card .go{color:var(--muted);transition:transform .2s var(--ease), color .2s var(--ease)}.card:hover .go{color:var(--accent);transform:translate(3px)}.study{padding-block:32px 24px}.study h1{letter-spacing:-.02em;max-width:20ch;margin:8px 0 0;font-size:clamp(34px,4vw,44px);font-weight:500;line-height:1.12}.study .lede{max-width:74ch;color:var(--muted);margin:16px 0 0}.block{border-top:1px solid var(--hairline);padding-block:32px}.block h2{letter-spacing:-.015em;margin:12px 0 0;font-size:27px;font-weight:500}.block p{max-width:74ch;margin:12px 0 0}.block p+p{margin-top:16px}figure.arch{border:1px solid var(--hairline);-webkit-backdrop-filter:blur(18px)saturate(135%);background:#0f1218c7;border-radius:12px;width:min(100%,960px);margin:24px 0 0;padding:clamp(12px,2vw,20px);overflow:hidden;box-shadow:inset 0 1px #ffffff0f}figure.arch img{object-fit:contain;background:#08080b;border-radius:8px;width:100%;max-height:620px}figure.arch figcaption{overflow-wrap:anywhere;max-width:74ch;font:400 13px/1.5 var(--mono);letter-spacing:.02em;color:var(--muted);margin-top:12px}.rows{border-top:1px solid var(--hairline);margin:16px 0 0}.row{border-bottom:1px solid var(--hairline);gap:4px 32px;padding-block:16px;display:grid}@media (width>=900px){.row{grid-template-columns:320px 1fr}}.row dt{font-weight:500}.row dd{color:var(--muted);margin:0}.metrics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:16px 0 0;padding:0;list-style:none;display:grid}.metrics li{border:1px solid var(--hairline);background:var(--surface);border-radius:12px;padding:16px}.metrics b{font:500 27px/1.2 var(--mono);letter-spacing:-.01em;color:var(--text);display:block}.metrics span{color:var(--muted);font-size:15px}.foot{color:var(--muted);margin-top:72px;padding-bottom:48px}.footer-panel{border:1px solid var(--hairline);background:#0f1218d1;border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:32px clamp(32px,4vw,64px);padding:clamp(32px,4vw,48px);display:grid;box-shadow:inset 0 1px #ffffff0f}.footer-col>.label{display:block}.footer-col p{color:var(--muted);margin:14px 0 0}.footer-col>a{width:fit-content;margin-top:14px;display:flex}.footer-col a,.footer-links a{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.footer-links{flex-direction:column;align-items:flex-start;gap:12px;margin-top:14px;display:flex}.footer-col a:hover{color:var(--accent)}.footer-col svg{flex:none;width:16px;height:16px}.footer-meta{font:400 12px/1.8 var(--mono);letter-spacing:.02em;justify-content:space-between;align-items:center;gap:16px;margin-top:24px;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.ocean i{opacity:.85}}.prose{max-width:var(--measure);margin:var(--s-5) 0 0;color:var(--muted)}a.label{transition:color var(--dur) var(--ease)}a.label:hover{color:var(--accent)}div.card:hover{border-color:var(--hairline);background:0 0}.role{margin-top:var(--s-5)}.role-head{justify-content:space-between;align-items:baseline;gap:var(--s-2) var(--s-4);flex-wrap:wrap;display:flex}.role-head h3{font-size:var(--t-21);letter-spacing:-.015em;margin:0;font-weight:500}.points{margin:var(--s-4) 0 0;max-width:var(--measure);color:var(--muted);padding-left:1.1em}.points li{margin-top:var(--s-2)}.cert-grid{margin-top:var(--s-5);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px 48px;display:grid}.cert{color:inherit;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);border:1px solid #0000;border-radius:12px;align-items:center;gap:24px;padding:20px;display:flex}.cert:hover{background:var(--surface);border-color:var(--hairline);color:inherit}.cert img{object-fit:contain;flex:none;width:104px;height:104px}.cert strong{font-size:var(--t-17);font-weight:500;display:block}.cert small{color:var(--muted);font:400 12px/1.5 var(--mono);letter-spacing:.02em;margin-top:6px;display:block}@media (width<=480px){.cert{align-items:flex-start;padding-inline:0}.cert img{width:80px;height:80px}}.lockups{margin:var(--s-5) 0 0;border-top:1px solid var(--hairline);padding:0;list-style:none}.lockups li{justify-content:space-between;align-items:baseline;gap:var(--s-2) var(--s-5);padding-block:var(--s-4);border-bottom:1px solid var(--hairline);flex-wrap:wrap;display:flex}.lockup-name{font-size:var(--t-17)}.lockup-name a{color:var(--text)}.lockup-name a:hover{color:var(--accent)}.skills{margin:var(--s-5) 0 0;border-top:1px solid var(--hairline)}.skill-row{gap:var(--s-1) var(--s-6);padding-block:var(--s-4);border-bottom:1px solid var(--hairline);display:grid}@media (width>=900px){.skill-row{grid-template-columns:180px 1fr}}.skill-row dd{color:var(--muted);margin:0}.study .cta{margin-top:var(--s-5)}.block code{font:400 .92em var(--mono);color:var(--text);background:#ffffff0f;border-radius:4px;padding:2px 6px}.block strong{color:var(--text);font-weight:500}.metrics+p{margin-top:var(--s-6)}
