:root{--bg: #0b0d10;--bg-elev: #12161b;--bg-elev-2: #171b21;--border: #23282f;--border-strong: #2f363f;--text: #eaecef;--text-muted: #a3a9b3;--text-faint: #6d747d;--accent: #6ee7b7;--accent-strong: #34d399;--accent-soft: rgba(110, 231, 183, .12);--link: #7dd3fc;--danger: #f87171;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure: 68ch;--page-max: 1080px;--nav-h: 68px;--radius: 10px;--radius-lg: 16px;--ease: cubic-bezier(.2, .6, .2, 1);--dur: .2s}:root[data-theme=light]{--bg: #fafafa;--bg-elev: #ffffff;--bg-elev-2: #f3f4f6;--border: #e4e6ea;--border-strong: #d0d4da;--text: #0f172a;--text-muted: #475569;--text-faint: #94a3b8;--accent: #059669;--accent-strong: #047857;--accent-soft: rgba(5, 150, 105, .1);--link: #0284c7}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + 8px)}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:16px;line-height:1.6;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}a{color:var(--link);text-decoration:none;transition:color var(--dur) var(--ease)}a:hover{color:var(--accent)}strong{color:var(--text);font-weight:600}code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-elev-2);padding:.1em .35em;border-radius:4px}::selection{background:var(--accent-soft);color:var(--text)}.skip-link{position:absolute;left:-9999px;z-index:999;padding:8px 12px;background:var(--accent);color:#000;border-radius:4px}.skip-link:focus{left:12px;top:12px}.nav{position:sticky;top:0;z-index:100;background:color-mix(in oklab,var(--bg) 82%,transparent);backdrop-filter:saturate(160%) blur(12px);-webkit-backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--border)}.nav__inner{max-width:var(--page-max);margin:0 auto;height:var(--nav-h);padding:0 24px;display:flex;align-items:center;gap:24px}.nav__brand{display:inline-flex;align-items:center;font-family:var(--font-mono);font-weight:700;color:var(--text);text-decoration:none}.nav__brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent);border-radius:8px;font-size:13px;letter-spacing:.5px}.nav__links{display:flex;gap:6px;margin:0 0 0 auto;padding:0;list-style:none;font-family:var(--font-mono);font-size:13.5px}.nav__links a{color:var(--text-muted);padding:8px 12px;border-radius:6px;transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}.nav__links a:hover{color:var(--text);background:var(--bg-elev-2)}.theme-toggle{display:grid;place-items:center;width:38px;height:38px;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all var(--dur) var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong);background:var(--bg-elev-2)}.theme-toggle__icon{display:none}:root[data-theme=dark] .theme-toggle__icon--sun{display:block}:root[data-theme=light] .theme-toggle__icon--moon{display:block}@media(max-width:720px){.nav__links{gap:0}.nav__links a{padding:8px}.nav__links li:nth-child(4),.nav__links li:nth-child(5){display:none}}main{display:block}.section{max-width:var(--page-max);margin:0 auto;padding:84px 24px;border-bottom:1px solid var(--border)}.section:last-of-type{border-bottom:none}.section__header{margin-bottom:40px}.section__eyebrow{display:inline-block;margin-bottom:12px;padding:4px 10px;font-family:var(--font-mono);font-size:12px;color:var(--accent);background:var(--accent-soft);border-radius:999px;letter-spacing:.3px}.section__title{margin:0;font-size:clamp(1.6rem,3.5vw,2.2rem);line-height:1.2;font-weight:700;letter-spacing:-.02em;max-width:20ch}.hero{max-width:var(--page-max);margin:0 auto;padding:clamp(80px,12vw,140px) 24px 100px}.hero__eyebrow{margin:0 0 20px;font-family:var(--font-mono);font-size:13.5px;color:var(--text-muted);letter-spacing:.4px}.hero__title{margin:0 0 24px;font-size:clamp(2.4rem,7vw,4.5rem);line-height:1.05;font-weight:800;letter-spacing:-.035em}.hero__lede{max-width:62ch;margin:0 0 28px;font-size:clamp(1.05rem,1.8vw,1.2rem);line-height:1.6;color:var(--text-muted)}.hero__lede strong{color:var(--text)}.hero__lede em{color:var(--accent);font-style:normal}.hero__lede a{color:var(--link)}.hero__meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px}.chip{padding:5px 11px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-muted);background:var(--bg-elev);border:1px solid var(--border);border-radius:999px}.hero__ctas{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:40px}.btn{display:inline-flex;align-items:center;gap:6px;padding:11px 20px;border-radius:8px;font-family:var(--font-mono);font-size:14px;font-weight:500;letter-spacing:.2px;border:1px solid transparent;cursor:pointer;transition:all var(--dur) var(--ease)}.btn--primary{background:var(--accent);color:#04120d;border-color:var(--accent)}.btn--primary:hover{background:var(--accent-strong);color:#04120d;transform:translateY(-1px)}.btn--ghost{background:transparent;color:var(--text);border-color:var(--border-strong)}.btn--ghost:hover{background:var(--bg-elev-2);border-color:var(--text-muted);color:var(--text)}.hero__socials{display:flex;gap:12px}.hero__socials a{display:grid;place-items:center;width:40px;height:40px;color:var(--text-muted);border:1px solid var(--border);border-radius:8px;transition:all var(--dur) var(--ease)}.hero__socials a:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.projects{list-style:none;padding:0;margin:0;display:grid;gap:20px}.project{display:grid;grid-template-columns:auto 1fr;gap:24px;padding:28px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.project:hover{border-color:var(--border-strong);transform:translateY(-2px)}.project__index{font-family:var(--font-mono);font-size:14px;color:var(--text-faint);padding-top:4px}.project__meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.tag{font-family:var(--font-mono);font-size:11.5px;padding:3px 9px;border-radius:999px;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border)}.tag--live{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.project__title{margin:0 0 12px;font-family:var(--font-mono);font-size:1.4rem;font-weight:700;color:var(--text)}.project__lede{margin:0 0 16px;color:var(--text-muted);max-width:68ch}.project__lede strong{color:var(--text)}.project__lede em{color:var(--accent);font-style:normal}.project__stack{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-wrap:wrap;gap:6px}.project__stack li{font-family:var(--font-mono);font-size:11.5px;padding:3px 9px;color:var(--text-faint);border:1px dashed var(--border);border-radius:4px}.project__links{display:flex;flex-wrap:wrap;gap:18px}.link--arrow{font-family:var(--font-mono);font-size:13px;color:var(--accent)}.link--arrow:hover{color:var(--accent-strong)}@media(max-width:600px){.project{padding:22px;grid-template-columns:1fr}.project__index{padding:0;font-size:12px;letter-spacing:1px}}.about{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;align-items:start}.about__body p{max-width:68ch;color:var(--text-muted)}.about__body p:first-child{margin-top:0}.about__body strong{color:var(--text)}.about__body em{color:var(--accent);font-style:normal}.about__aside{padding:24px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg)}.quick-facts{margin:0}.quick-facts dt{font-family:var(--font-mono);font-size:11.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.8px;margin-top:14px}.quick-facts dt:first-child{margin-top:0}.quick-facts dd{margin:4px 0 0;color:var(--text);font-size:14.5px}@media(max-width:800px){.about{grid-template-columns:1fr;gap:24px}}.timeline{list-style:none;padding:0;margin:0;display:grid;gap:32px}.timeline__item{display:grid;grid-template-columns:200px 1fr;gap:32px;padding-bottom:32px;border-bottom:1px solid var(--border)}.timeline__item:last-child{border-bottom:none;padding-bottom:0}.timeline__meta{display:flex;flex-direction:column;gap:4px}.timeline__date{font-family:var(--font-mono);font-size:12.5px;color:var(--accent);letter-spacing:.4px}.timeline__loc{font-family:var(--font-mono);font-size:12.5px;color:var(--text-faint)}.timeline__role{margin:0 0 4px;font-size:1.15rem;font-weight:700}.timeline__co{color:var(--text-muted);font-weight:500}.timeline__sub{margin:0 0 14px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-faint)}.timeline__wins{list-style:none;padding:0;margin:0;display:grid;gap:10px}.timeline__wins li{padding-left:18px;position:relative;color:var(--text-muted);font-size:14.5px}.timeline__wins li:before{content:"";position:absolute;left:0;top:10px;width:6px;height:6px;background:var(--accent);border-radius:999px}.timeline__wins strong{color:var(--text)}@media(max-width:800px){.timeline__item{grid-template-columns:1fr;gap:12px}.timeline__meta{flex-direction:row;gap:12px}}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}.skills__group{padding:20px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius)}.skills__title{margin:0 0 12px;font-family:var(--font-mono);font-size:12.5px;color:var(--accent);text-transform:uppercase;letter-spacing:.6px}.skills__group ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}.skills__group li{font-family:var(--font-mono);font-size:12.5px;padding:4px 10px;color:var(--text);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px}.certs{margin-top:40px}.certs__title{margin:0 0 16px;font-family:var(--font-mono);font-size:12.5px;color:var(--accent);text-transform:uppercase;letter-spacing:.6px}.certs__list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.certs__list li{padding:12px 16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-size:14.5px}.certs__list strong{color:var(--text)}.blog-preview{list-style:none;padding:0;margin:0;display:grid;gap:12px}.blog-preview__item{padding:20px 22px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);display:block;color:var(--text);transition:border-color var(--dur) var(--ease),transform var(--dur) var(--ease)}.blog-preview__item:hover{border-color:var(--border-strong);transform:translateY(-1px);color:var(--text)}.blog-preview__date{font-family:var(--font-mono);font-size:12px;color:var(--text-faint)}.blog-preview__title{display:block;margin:4px 0 6px;font-weight:600;font-size:1.05rem}.blog-preview__summary{color:var(--text-muted);font-size:14px}.blog-preview__empty{padding:32px;background:var(--bg-elev);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);text-align:center}.blog-preview__empty a{color:var(--accent)}.section--contact{padding-bottom:120px}.contact__lede{max-width:60ch;margin-bottom:28px;color:var(--text-muted);font-size:1.05rem}.contact__list{list-style:none;padding:0;margin:0;display:grid;gap:12px;max-width:620px}.contact__list li{display:grid;grid-template-columns:100px 1fr;gap:20px;padding:14px 18px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);font-size:14.5px}.contact__label{color:var(--text-faint);letter-spacing:.3px}.contact__list a{color:var(--text)}.contact__list a:hover{color:var(--accent)}.footer{border-top:1px solid var(--border);padding:32px 24px;color:var(--text-faint);font-family:var(--font-mono);font-size:12.5px}.footer__inner{max-width:var(--page-max);margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.footer__meta a{color:var(--text-muted);text-decoration:underline;text-decoration-color:var(--border-strong)}.footer__meta a:hover{color:var(--accent)}@media(prefers-reduced-motion:no-preference){.section,.hero__inner>*{animation:reveal .6s var(--ease) both}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}}
