:root{--brand-navy:#0b1e47;--brand-navy-deep:#061229;--brand-blue:#1857c6;--brand-blue-hover:#0e3f9c;--brand-blue-fg:var(--brand-blue);--zinc-50:#fafafa;--zinc-100:#f4f4f5;--zinc-200:#e4e4e7;--zinc-300:#d4d4d8;--zinc-400:#a1a1aa;--zinc-500:#71717a;--zinc-600:#52525b;--zinc-700:#3f3f46;--zinc-800:#27272a;--zinc-900:#18181b;--zinc-950:#09090b;--status-delivered:#10b981;--status-pending:#f59e0b;--status-in-flight:#1857c6;--status-delivered-tint:color-mix(in oklch, var(--status-delivered) 10%, transparent);--status-in-flight-tint:color-mix(in oklch, var(--status-in-flight) 10%, transparent);--status-delivered-fg:#047857;--status-in-flight-fg:#0e3f9c;--bg:var(--zinc-50);--bg-elevated:#fff;--bg-muted:var(--zinc-100);--fg-1:var(--zinc-900);--fg-2:var(--zinc-600);--fg-3:var(--zinc-500);--fg-4:var(--zinc-400);--border-1:var(--zinc-200);--border-2:var(--zinc-100);--link-fg:var(--brand-blue);--link-fg-hover:var(--brand-blue-hover);--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--font-brand:"Nunito", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-16:4rem;--content-w:44rem;--content-w-wide:60rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-full:9999px;--dur-fast:.15s;--ease:cubic-bezier(.4, 0, .2, 1)}.dark{--bg:var(--zinc-950);--bg-elevated:var(--zinc-900);--bg-muted:var(--zinc-800);--fg-1:var(--zinc-100);--fg-2:var(--zinc-300);--fg-3:var(--zinc-400);--fg-4:var(--zinc-500);--border-1:var(--zinc-700);--border-2:var(--zinc-800);--link-fg:#5b8def;--link-fg-hover:#93b5f6;--brand-blue-fg:#5b8def;--status-in-flight:#5b8def;--status-delivered-tint:color-mix(in oklch, var(--status-delivered) 20%, transparent);--status-in-flight-tint:color-mix(in oklch, var(--status-in-flight) 22%, transparent);--status-delivered-fg:#34d399;--status-in-flight-fg:#93b5f6}*,:before,:after{box-sizing:border-box}html,body{font-size:16px;font-family:var(--font-sans);background:var(--bg);color:var(--fg-1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s var(--ease), color .2s var(--ease);margin:0;padding:0}body{min-height:100vh}h1,h2,h3,h4,p{margin:0}ul{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font-family:inherit}:where(button,input,select,textarea,a,[tabindex]):focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px;border-radius:var(--radius-sm)}.dot{border-radius:9999px;flex-shrink:0;width:.5rem;height:.5rem;display:inline-block;position:relative}.dot--delivered{background:var(--status-delivered)}.dot--in-flight{background:var(--status-in-flight)}.dot--in-flight:after{content:"";background:var(--status-in-flight);opacity:.55;pointer-events:none;border-radius:9999px;animation:1.6s cubic-bezier(0,0,.2,1) infinite ody-ping;position:absolute;inset:-1px}@keyframes ody-ping{0%{opacity:.55;transform:scale(1)}70%{opacity:0;transform:scale(2.8)}to{opacity:0;transform:scale(2.8)}}@media (prefers-reduced-motion:reduce){.dot--in-flight:after{animation:none}}.pill{border-radius:var(--radius-sm);font-size:.75rem;font-weight:500;font-family:var(--font-sans);align-items:center;padding:.125rem .5rem;line-height:1.4;display:inline-flex}.pill--in-flight{background:var(--status-in-flight-tint);color:var(--status-in-flight-fg)}.nav{z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:color-mix(in oklch, var(--bg) 85%, transparent);border-bottom:1px solid var(--border-2);position:sticky;top:0}.nav-inner{max-width:var(--content-w-wide);padding:14px var(--space-6);align-items:center;gap:var(--space-6);margin:0 auto;display:flex}.mark{font-family:var(--font-brand);letter-spacing:-.02em;color:var(--fg-1);align-items:center;gap:6px;font-size:17px;font-weight:800;display:inline-flex}.mark .a{color:var(--fg-1)}.mark .b{color:var(--brand-blue-fg)}.nav-links{gap:var(--space-6);font-family:var(--font-mono);letter-spacing:.01em;margin-left:auto;font-size:13px;display:flex}.nav-links a{color:var(--fg-2);transition:color .15s var(--ease)}.nav-links a:hover{color:var(--fg-1)}.nav-links a .num{color:var(--fg-4);margin-right:4px}.theme-toggle{border-radius:var(--radius-sm);border:1px solid var(--border-1);background:var(--bg-elevated);cursor:pointer;width:32px;height:32px;color:var(--fg-2);justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{color:var(--fg-1);background:var(--bg-muted)}.theme-toggle svg{width:14px;height:14px}main{max-width:var(--content-w);padding:0 var(--space-6);margin:0 auto}section{padding:var(--space-16) 0;border-top:1px solid var(--border-2)}section:first-of-type{border-top:0}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);align-items:center;gap:8px;font-size:12px;font-weight:500;display:inline-flex}.eyebrow:before{content:"";background:var(--fg-4);width:18px;height:1px;display:inline-block}h2.section-title{letter-spacing:-.02em;color:var(--fg-1);margin-top:14px;margin-bottom:28px;font-size:28px;font-weight:600}p.body{color:var(--fg-2);max-width:38rem;font-size:17px;line-height:1.65}p.body+p.body{margin-top:1em}p.body strong{color:var(--fg-1);font-weight:500}.hero{border-top:0;padding:96px 0 80px}.hero .avatar{object-fit:cover;object-position:50% 40%;border:1px solid var(--border-1);background:var(--bg-muted);filter:saturate(.92);border-radius:50%;width:92px;height:92px;margin-bottom:28px;display:block}.hero .status{border-radius:var(--radius-full);background:var(--status-delivered-tint);color:var(--status-delivered-fg);font-family:var(--font-mono);letter-spacing:.02em;align-items:center;gap:8px;margin-bottom:28px;padding:4px 10px 4px 8px;font-size:12px;display:inline-flex}.hero h1{letter-spacing:-.035em;margin:0;font-size:clamp(48px,8vw,88px);font-weight:600;line-height:.98}.hero h1 .first{color:var(--fg-1)}.hero h1 .last{color:var(--brand-blue-fg)}.hero h1 .dot-char{color:var(--brand-blue-fg);margin-left:2px}.hero .role{font-family:var(--font-mono);color:var(--fg-2);letter-spacing:.01em;margin-top:24px;font-size:14px}.hero .role .sep{color:var(--fg-4);margin:0 10px}.lede{letter-spacing:-.008em;color:var(--fg-1);max-width:40rem;margin-top:40px;font-size:19px;font-weight:400;line-height:1.55}.lede+.lede{margin-top:20px}.lede .accent{color:var(--brand-blue-fg)}.ticker{font-family:var(--font-mono);color:var(--fg-3);align-items:baseline;gap:10px;margin-top:36px;font-size:13px;display:flex}.ticker .prompt{color:var(--fg-4)}.ticker .typed{color:var(--fg-1)}.ticker .cursor{background:var(--brand-blue-fg);width:8px;height:14px;margin-left:2px;animation:1s steps(2,end) infinite blink;display:inline-block;transform:translateY(2px)}@keyframes blink{50%{opacity:0}}.chips{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.chip{border:1px solid var(--border-1);border-radius:var(--radius-full);font-family:var(--font-mono);color:var(--fg-2);background:var(--bg-elevated);align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:inline-flex}.chip .dot{background:var(--brand-blue-fg);border-radius:999px;width:6px;height:6px}.project-list{margin-top:28px}.project{border:1px solid var(--border-1);border-radius:var(--radius-md);background:var(--bg-elevated);color:inherit;transition:border-color .15s var(--ease), background-color .15s var(--ease);padding:28px;display:block}.project+.project{margin-top:16px}.project:hover{border-color:var(--fg-3)}.project-head{align-items:flex-start;gap:var(--space-4);margin-bottom:12px;display:flex}.project-head .title-wrap{flex:1}.project-head h3{letter-spacing:-.015em;color:var(--fg-1);font-size:19px;font-weight:600}.project-head .url{font-family:var(--font-mono);color:var(--fg-3);margin-top:4px;font-size:12px}.project-head .pill{position:relative}.project-head .pill .dot{margin-right:6px}.project p{color:var(--fg-2);margin-top:6px;font-size:15px;line-height:1.6}.project-meta{border-top:1px solid var(--border-2);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);flex-wrap:wrap;gap:16px;margin-top:18px;padding-top:16px;font-size:11px;display:flex}.project-meta b{color:var(--fg-1);text-transform:none;letter-spacing:0;margin-left:6px;font-weight:500}.project-empty{border:1px dashed var(--border-1);border-radius:var(--radius-md);text-align:center;color:var(--fg-3);font-family:var(--font-mono);margin-top:16px;padding:28px;font-size:13px}.xp{border-bottom:1px solid var(--border-2);grid-template-columns:96px 1fr;gap:0 28px;padding:24px 0;display:grid}.xp:last-child{border-bottom:0;padding-bottom:0}.xp .years{font-family:var(--font-mono);color:var(--fg-3);letter-spacing:.02em;padding-top:4px;font-size:12px}.xp .company{color:var(--fg-1);letter-spacing:-.01em;font-size:17px;font-weight:600}.xp .title{color:var(--fg-2);font-size:14px;font-family:var(--font-mono);letter-spacing:.01em;margin-top:4px}.xp ul{margin:14px 0 0}.xp ul li{color:var(--fg-2);margin-top:6px;padding-left:18px;font-size:15px;line-height:1.55;position:relative}.xp ul li:before{content:"→";color:var(--fg-4);font-family:var(--font-mono);position:absolute;top:0;left:0}.skill-grid{border-top:1px solid var(--border-2);grid-template-columns:repeat(2,1fr);gap:0;display:grid}.skill{border-bottom:1px solid var(--border-2);justify-content:space-between;align-items:baseline;padding:14px 0;display:flex}.skill:nth-child(odd){padding-right:24px}.skill:nth-child(2n){border-left:1px solid var(--border-2);padding-left:24px}.skill .name{color:var(--fg-1);font-size:15px;font-weight:500}.skill .level{font-family:var(--font-mono);color:var(--fg-3);letter-spacing:.05em;font-size:11px}.svc-grid{background:var(--border-2);border:1px solid var(--border-2);border-radius:var(--radius-md);grid-template-columns:repeat(2,1fr);gap:1px;display:grid;overflow:hidden}.svc{background:var(--bg-elevated);padding:22px}.svc .n{font-family:var(--font-mono);color:var(--fg-4);letter-spacing:.08em;font-size:11px}.svc h4{color:var(--fg-1);letter-spacing:-.01em;margin:8px 0 6px;font-size:15px;font-weight:600}.svc p{color:var(--fg-3);font-size:13px;line-height:1.55}.edu{grid-template-columns:96px 1fr;align-items:baseline;gap:28px;display:grid}.edu .when{font-family:var(--font-mono);color:var(--fg-3);font-size:12px}.edu .what{color:var(--fg-1);font-size:16px}.edu .what small{color:var(--fg-3);font-size:13px;font-family:var(--font-mono);margin-top:4px;display:block}.contact-grid{grid-template-columns:1fr 1fr;gap:40px;display:grid}.contact-grid .aside dt{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);margin-top:18px;font-size:11px}.contact-grid .aside dt:first-child{margin-top:0}.contact-grid .aside dd{color:var(--fg-1);font-size:14px;font-family:var(--font-mono);margin:4px 0 0}.contact-grid .aside dd a{color:var(--fg-1);transition:color .15s var(--ease)}.contact-grid .aside dd a:hover{color:var(--brand-blue-fg)}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);font-size:11px}.field input,.field textarea{border:1px solid var(--border-1);background:var(--bg-elevated);color:var(--fg-1);border-radius:var(--radius-sm);padding:10px 12px;font-family:inherit;font-size:14px}.field textarea{resize:vertical;min-height:110px}.field input:focus,.field textarea:focus{outline:2px solid var(--brand-blue);outline-offset:1px}.btn-send{background:var(--brand-navy);color:#fff;border-radius:var(--radius-sm);cursor:pointer;transition:background-color .15s var(--ease);border:0;align-self:flex-start;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:500}.btn-send:hover{background:var(--brand-navy-deep)}.dark .btn-send{background:var(--zinc-100);color:var(--brand-navy)}.dark .btn-send:hover{background:#fff}.btn-send:disabled{opacity:.6;cursor:not-allowed}.form-error,.form-success{font-family:var(--font-mono);letter-spacing:.02em;border-radius:var(--radius-sm);margin-top:4px;padding:8px 10px;font-size:12px}.form-error{color:#b91c1c;background:oklch(57.7099% .215157 27.325/.08);border:1px solid oklch(57.7099% .215157 27.325/.18)}.dark .form-error{color:#f87171}.form-success{color:var(--status-delivered-fg);background:var(--status-delivered-tint);border:1px solid color-mix(in oklch, var(--status-delivered) 25%, transparent)}footer{border-top:1px solid var(--border-2);padding:32px var(--space-6);font-family:var(--font-mono);color:var(--fg-3);margin-top:64px;font-size:12px}footer .inner{max-width:var(--content-w);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;display:flex}footer a{color:var(--fg-2);transition:color .15s var(--ease)}footer a:hover{color:var(--fg-1)}@media (width<=640px){.hero{padding:64px 0 56px}.nav-links{display:none}.xp{grid-template-columns:1fr;gap:6px}.skill-grid,.svc-grid,.contact-grid{grid-template-columns:1fr}.skill:nth-child(2n){border-left:0;padding-left:0}.skill:nth-child(odd){padding-right:0}.edu{grid-template-columns:1fr;gap:4px}}
