:root,[data-theme=terminal]{--hue: 255;--accent-hue: 250;--bg: oklch(.165 .022 var(--hue));--bg-1: oklch(.195 .026 var(--hue));--bg-2: oklch(.225 .03 var(--hue));--bg-3: oklch(.265 .034 var(--hue));--fg: oklch(.945 .01 var(--hue));--fg-dim: oklch(.76 .018 var(--hue));--fg-faint: oklch(.56 .022 var(--hue));--border: oklch(.33 .03 var(--hue));--border-strong: oklch(.42 .034 var(--hue));--accent: oklch(.7 .155 var(--accent-hue));--accent-2: oklch(.64 .19 calc(var(--accent-hue) + 25));--accent-ink: oklch(.16 .02 var(--hue));--accent-soft: color-mix(in oklch, var(--accent) 16%, transparent);--grid-line: color-mix(in oklch, var(--accent) 8%, transparent);--grid-size: 32px;--glow: none;--terminal-chrome: var(--bg-2);--shadow: 0 1px 0 oklch(1 0 0 / .03) inset, 0 18px 50px -24px oklch(0 0 0 / .7);--radius: 12px;--radius-sm: 8px;--maxw: 1180px;--gut: clamp(20px, 5vw, 64px);--ff-display: "Space Grotesk", system-ui, sans-serif;--ff-body: "IBM Plex Sans", system-ui, sans-serif;--ff-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;color-scheme:dark}[data-theme=blueprint]{--hue: 258;--accent-hue: 268;--bg: oklch(.965 .008 var(--hue));--bg-1: oklch(.992 .004 var(--hue));--bg-2: oklch(.985 .006 var(--hue));--bg-3: oklch(.945 .012 var(--hue));--fg: oklch(.255 .04 var(--hue));--fg-dim: oklch(.43 .045 var(--hue));--fg-faint: oklch(.6 .04 var(--hue));--border: oklch(.84 .03 var(--hue));--border-strong: oklch(.74 .045 var(--hue));--accent: oklch(.52 .205 var(--accent-hue));--accent-2: oklch(.47 .23 calc(var(--accent-hue) + 18));--accent-ink: oklch(.99 .005 var(--hue));--accent-soft: color-mix(in oklch, var(--accent) 12%, transparent);--grid-line: color-mix(in oklch, var(--accent) 14%, transparent);--grid-size: 28px;--glow: none;--terminal-chrome: oklch(.915 .014 var(--hue));--shadow: 0 1px 0 oklch(1 0 0 / .6) inset, 0 16px 40px -26px oklch(.4 .1 var(--hue) / .4);color-scheme:light}[data-theme=midnight]{--hue: 272;--accent-hue: 280;--bg: oklch(.125 .024 var(--hue));--bg-1: oklch(.155 .03 var(--hue));--bg-2: oklch(.185 .036 var(--hue));--bg-3: oklch(.225 .042 var(--hue));--fg: oklch(.955 .012 var(--hue));--fg-dim: oklch(.77 .024 var(--hue));--fg-faint: oklch(.56 .03 var(--hue));--border: oklch(.3 .04 var(--hue));--border-strong: oklch(.4 .05 var(--hue));--accent: oklch(.68 .215 var(--accent-hue));--accent-2: oklch(.64 .235 calc(var(--accent-hue) + 22));--accent-ink: oklch(.12 .024 var(--hue));--accent-soft: color-mix(in oklch, var(--accent) 18%, transparent);--grid-line: color-mix(in oklch, var(--accent) 10%, transparent);--grid-size: 36px;--glow: 0 0 0 1px color-mix(in oklch, var(--accent) 30%, transparent), 0 0 40px -8px color-mix(in oklch, var(--accent) 60%, transparent);--terminal-chrome: var(--bg-2);--shadow: 0 1px 0 oklch(1 0 0 / .04) inset, 0 24px 60px -28px oklch(0 0 0 / .85);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--ff-body);background:var(--bg);color:var(--fg);line-height:1.6;font-size:17px;letter-spacing:.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;transition:background .4s ease,color .4s ease}body:before{content:"";position:fixed;inset:0;background:linear-gradient(var(--grid-line) 1px,transparent 1px) 0 0 / var(--grid-size) var(--grid-size),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px) 0 0 / var(--grid-size) var(--grid-size);-webkit-mask-image:radial-gradient(120% 90% at 50% -10%,#000 0%,transparent 72%);mask-image:radial-gradient(120% 90% at 50% -10%,#000 0%,transparent 72%);pointer-events:none;z-index:0;opacity:.9}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}button,input,textarea{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--accent-ink)}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}section{position:relative;z-index:1}.kicker{font-family:var(--ff-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:.6em}.kicker:before{content:"";width:26px;height:1px;background:var(--accent);opacity:.7}.section-head{margin-bottom:56px;max-width:720px}.section-head h2{font-family:var(--ff-display);font-weight:600;font-size:clamp(1.9rem,4vw,3rem);letter-spacing:-.02em;line-height:1.04;margin-top:18px;text-wrap:balance}.section-head p{color:var(--fg-dim);margin-top:16px;font-size:1.05rem;max-width:56ch}.s-num{font-family:var(--ff-mono);color:var(--fg-faint);font-size:.8rem;letter-spacing:.1em}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:none}.reveal[data-d="1"]{transition-delay:.07s}.reveal[data-d="2"]{transition-delay:.14s}.reveal[data-d="3"]{transition-delay:.21s}.reveal[data-d="4"]{transition-delay:.28s}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}.nav{position:fixed;top:0;left:0;right:0;z-index:50;border-bottom:1px solid transparent;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease}.nav.scrolled{background:color-mix(in oklch,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);border-bottom-color:var(--border)}.nav-in{max-width:var(--maxw);margin-inline:auto;padding:16px var(--gut);display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-family:var(--ff-mono);font-weight:700;font-size:.95rem;letter-spacing:.02em;display:inline-flex;align-items:center;gap:.55em}.brand .dot{width:9px;height:9px;border-radius:2px;background:var(--accent);box-shadow:var(--glow);animation:blink 1.6s steps(1) infinite}@keyframes blink{0%,60%{opacity:1}61%,to{opacity:.25}}.brand .slash{color:var(--fg-faint)}.nav-links{display:flex;align-items:center;gap:4px}.nav-links a{font-family:var(--ff-mono);font-size:.82rem;color:var(--fg-dim);padding:8px 12px;border-radius:var(--radius-sm);transition:color .2s,background .2s;letter-spacing:.02em}.nav-links a:hover{color:var(--fg);background:var(--bg-2)}.nav-links a .hash{color:var(--accent)}.nav-cta{font-family:var(--ff-mono);font-size:.82rem;white-space:nowrap;padding:9px 16px!important;border:1px solid var(--border-strong);color:var(--fg)!important;background:var(--bg-1)}.nav-cta:hover{border-color:var(--accent);background:var(--accent-soft)!important}.nav-burger{display:none;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;cursor:pointer;font-family:var(--ff-mono)}@media(max-width:820px){.nav-links{display:none}.nav-burger{display:inline-flex}.nav-links.open{display:flex;flex-direction:column;align-items:stretch;position:absolute;top:100%;left:0;right:0;background:var(--bg-1);border-bottom:1px solid var(--border);padding:12px var(--gut) 20px;gap:2px}.nav-links.open a{padding:12px}}.hero{padding:150px 0 90px}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}@media(max-width:940px){.hero-grid{grid-template-columns:1fr;gap:40px}}.hero-prompt{font-family:var(--ff-mono);font-size:.85rem;color:var(--fg-dim);margin-bottom:22px}.hero-prompt .p{color:var(--accent)}.hero-prompt .cmd{color:var(--fg)}.cursor{display:inline-block;width:9px;height:1.05em;transform:translateY(2px);background:var(--accent);margin-left:2px;animation:blink 1s steps(1) infinite}.hero h1{font-family:var(--ff-display);font-weight:600;font-size:clamp(2.7rem,7.2vw,5.2rem);line-height:.98;letter-spacing:-.035em;margin-bottom:18px}.hero h1 .out{color:var(--fg)}.hero h1 .accent{color:var(--accent)}.hero .role{font-family:var(--ff-mono);font-size:clamp(1rem,2.2vw,1.25rem);color:var(--fg-dim);letter-spacing:.02em;margin-bottom:26px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.hero .role .tag{border:1px solid var(--border);border-radius:999px;padding:3px 12px;font-size:.78rem;color:var(--fg);background:var(--bg-1)}.hero-lede{color:var(--fg-dim);font-size:1.12rem;max-width:48ch;margin-bottom:34px}.hero-lede strong{color:var(--fg);font-weight:600}.btn-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center}.btn{font-family:var(--ff-mono);font-size:.9rem;letter-spacing:.01em;white-space:nowrap;display:inline-flex;align-items:center;gap:.6em;padding:13px 22px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent;transition:transform .15s ease,background .2s,border-color .2s,box-shadow .2s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:var(--glow)}.btn-primary:hover{background:var(--accent-2)}.btn-ghost{border-color:var(--border-strong);color:var(--fg);background:var(--bg-1)}.btn-ghost:hover{border-color:var(--accent);background:var(--accent-soft)}.btn .arrow{transition:transform .2s ease}.btn:hover .arrow{transform:translate(3px)}.hero-stats{display:flex;gap:40px;margin-top:48px;flex-wrap:wrap}.stat .num{font-family:var(--ff-display);font-weight:600;font-size:clamp(1.8rem,4vw,2.5rem);letter-spacing:-.02em;line-height:1;color:var(--fg)}.stat .num .suf{color:var(--accent)}.stat .lbl{font-family:var(--ff-mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.12em;color:var(--fg-faint);margin-top:8px}.terminal{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-1);box-shadow:var(--shadow)}.term-bar{display:flex;align-items:center;gap:8px;padding:11px 14px;background:var(--terminal-chrome);border-bottom:1px solid var(--border)}.term-bar .dots{display:flex;gap:7px}.term-bar .dots i{width:11px;height:11px;border-radius:50%;display:block}.term-bar .dots i:nth-child(1){background:#e8605b}.term-bar .dots i:nth-child(2){background:#e6ac3d}.term-bar .dots i:nth-child(3){background:#61bd67}.term-bar .title{font-family:var(--ff-mono);font-size:.76rem;color:var(--fg-faint);margin-left:6px}.term-body{font-family:var(--ff-mono);font-size:.84rem;line-height:1.85;padding:20px 20px 24px;min-height:320px}.term-body .line{white-space:pre-wrap;word-break:break-word}.term-body .p{color:var(--accent)}.term-body .k{color:var(--accent-2)}.term-body .s{color:#80cd82}.term-body .c{color:var(--fg-faint)}.term-body .o{color:var(--fg)}.term-body .muted{color:var(--fg-dim)}.about{padding:96px 0}.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start}@media(max-width:880px){.about-grid{grid-template-columns:1fr;gap:40px}}.about-body p{color:var(--fg-dim);font-size:1.12rem;margin-bottom:18px;max-width:58ch}.about-body p strong{color:var(--fg);font-weight:600}.about-body .lead{font-size:1.3rem;color:var(--fg);line-height:1.5}.principles{display:grid;gap:14px}.principle{border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;background:var(--bg-1);display:flex;gap:16px;align-items:flex-start;transition:border-color .25s,transform .25s,background .25s}.principle:hover{border-color:var(--accent);transform:translate(4px)}.principle .idx{font-family:var(--ff-mono);color:var(--accent);font-size:.8rem;padding-top:3px}.principle h4{font-family:var(--ff-display);font-weight:600;font-size:1.02rem;margin-bottom:4px}.principle p{color:var(--fg-dim);font-size:.92rem}.skills{padding:96px 0}.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}@media(max-width:800px){.skills-grid{grid-template-columns:1fr}}.stack-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-1);overflow:hidden}.stack-card .sc-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border);background:var(--terminal-chrome)}.stack-card .sc-head h3{font-family:var(--ff-mono);font-size:.92rem;letter-spacing:.02em;display:inline-flex;align-items:center;gap:.6em}.stack-card .sc-head h3 .b{color:var(--accent)}.stack-card .sc-head .meta{font-family:var(--ff-mono);font-size:.74rem;color:var(--fg-faint)}.stack-list{padding:8px 22px 22px}.skill{padding:16px 0;border-bottom:1px dashed var(--border)}.skill:last-child{border-bottom:none}.skill-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.skill-name{font-family:var(--ff-mono);font-size:.98rem;color:var(--fg)}.skill-name .ext{color:var(--fg-faint);font-size:.8rem}.skill-lvl{font-family:var(--ff-mono);font-size:.76rem;color:var(--fg-faint)}.bar{height:6px;border-radius:999px;background:var(--bg-3);overflow:hidden}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:999px;transition:width 1.1s cubic-bezier(.2,.7,.2,1);box-shadow:var(--glow)}.tooling{margin-top:28px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.tooling .lbl{font-family:var(--ff-mono);font-size:.76rem;color:var(--fg-faint);text-transform:uppercase;letter-spacing:.1em;margin-right:6px}.chip{font-family:var(--ff-mono);font-size:.82rem;color:var(--fg-dim);border:1px solid var(--border);border-radius:999px;padding:6px 13px;background:var(--bg-1);transition:color .2s,border-color .2s}.chip:hover{color:var(--fg);border-color:var(--accent)}.timeline{padding:96px 0}.tl{position:relative;margin-top:8px}.tl:before{content:"";position:absolute;left:9px;top:6px;bottom:6px;width:2px;background:linear-gradient(var(--accent),transparent);opacity:.5}@media(max-width:620px){.tl:before{left:7px}}.tl-item{position:relative;padding-left:44px;padding-bottom:40px}.tl-item:last-child{padding-bottom:0}.tl-item .node{position:absolute;left:0;top:4px;width:20px;height:20px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);box-shadow:var(--glow);display:grid;place-items:center}.tl-item .node:after{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}.tl-when{font-family:var(--ff-mono);font-size:.78rem;color:var(--accent);letter-spacing:.04em;margin-bottom:6px}.tl-role{font-family:var(--ff-display);font-weight:600;font-size:1.25rem;letter-spacing:-.01em}.tl-role .at{color:var(--fg-faint);font-weight:400}.tl-co{font-family:var(--ff-mono);font-size:.86rem;color:var(--fg-dim);margin-top:2px}.tl-desc{color:var(--fg-dim);margin-top:12px;max-width:60ch}.tl-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.tl-tags .chip{font-size:.74rem;padding:4px 10px}.projects{padding:96px 0}.proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}@media(max-width:800px){.proj-grid{grid-template-columns:1fr}}.proj{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-1);display:flex;flex-direction:column;transition:border-color .3s,transform .3s,box-shadow .3s}.proj:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:var(--shadow)}.proj-shot{aspect-ratio:16 / 10;position:relative;overflow:hidden;background:repeating-linear-gradient(135deg,var(--bg-3) 0 12px,var(--bg-2) 12px 24px);border-bottom:1px solid var(--border);display:grid;place-items:center}.proj-shot .ph{font-family:var(--ff-mono);font-size:.78rem;color:var(--fg-faint);letter-spacing:.06em;text-transform:uppercase;padding:6px 12px;border:1px dashed var(--border-strong);border-radius:6px;background:color-mix(in oklch,var(--bg) 60%,transparent)}.proj-shot .tape{position:absolute;top:12px;left:12px;font-family:var(--ff-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);padding:4px 9px;border-radius:5px}.proj-body{padding:22px;display:flex;flex-direction:column;gap:12px;flex:1}.proj-body h3{font-family:var(--ff-display);font-weight:600;font-size:1.3rem;letter-spacing:-.01em}.proj-body .desc{color:var(--fg-dim);font-size:.96rem;flex:1}.proj-tags{display:flex;flex-wrap:wrap;gap:7px}.proj-tags .chip{font-size:.72rem;padding:4px 10px}.proj-link{font-family:var(--ff-mono);font-size:.82rem;color:var(--accent);display:inline-flex;align-items:center;gap:.5em}.proj-link .arrow{transition:transform .2s}.proj:hover .proj-link .arrow{transform:translate(3px)}.contact{padding:96px 0 40px}.contact-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:56px;align-items:start}@media(max-width:880px){.contact-grid{grid-template-columns:1fr;gap:40px}}.contact-body .lead{font-size:1.25rem;color:var(--fg);line-height:1.5;margin-bottom:24px}.contact-links{display:grid;gap:2px;margin-top:26px}.clink{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--border);font-family:var(--ff-mono);font-size:.92rem;transition:color .2s,padding .2s}.clink:hover{color:var(--accent);padding-left:6px}.clink .ic{width:18px;color:var(--accent)}.clink .k{color:var(--fg-faint);width:86px;display:inline-block}.form{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-1);padding:26px;box-shadow:var(--shadow)}.form .field{margin-bottom:18px}.form label{font-family:var(--ff-mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-faint);display:block;margin-bottom:8px}.form label .req{color:var(--accent)}.form input,.form textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-family:var(--ff-mono);font-size:.9rem;color:var(--fg);transition:border-color .2s,box-shadow .2s}.form input::placeholder,.form textarea::placeholder{color:var(--fg-faint)}.form input:focus,.form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form textarea{resize:vertical;min-height:120px}.form .btn-primary{width:100%;justify-content:center;margin-top:6px}.form-note{font-family:var(--ff-mono);font-size:.76rem;color:var(--fg-faint);margin-top:14px;text-align:center}.form.sent .form-inner{display:none}.form-success{display:none;text-align:center;padding:40px 10px}.form.sent .form-success{display:block}.form-success .check{width:54px;height:54px;margin:0 auto 18px;border-radius:50%;border:2px solid var(--accent);display:grid;place-items:center;color:var(--accent);font-family:var(--ff-mono);font-size:1.5rem;box-shadow:var(--glow)}.form-success h4{font-family:var(--ff-display);font-size:1.3rem;margin-bottom:8px}.form-success p{color:var(--fg-dim);font-family:var(--ff-mono);font-size:.86rem}.footer{border-top:1px solid var(--border);padding:30px 0;margin-top:60px}.footer-in{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.footer-in p{font-family:var(--ff-mono);font-size:.78rem;color:var(--fg-faint)}.footer-in .top{font-family:var(--ff-mono);font-size:.78rem;color:var(--fg-dim);cursor:pointer;transition:color .2s}.footer-in .top:hover{color:var(--accent)}.sec-divider{display:flex;align-items:center;gap:16px;margin-bottom:8px}.sec-divider .line{flex:1;height:1px;background:var(--border)}
