:root{--ink: #1b2230;--panel: #222b3c;--line: #36415b;--text: #d6d9e0;--dim: #8591a9;--amber: #ffc857;--mint: #8ee3c8;--coral: #ff8a7a;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}body{margin:0;background:var(--ink);color:var(--text);font:400 15px/1.7 var(--mono);-webkit-font-smoothing:antialiased}a{color:var(--mint);text-underline-offset:3px}a:hover{color:var(--amber)}:focus-visible{outline:2px solid var(--amber);outline-offset:3px}h1,h2,h3,p,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}.dim{color:var(--dim)}.hl{color:var(--amber)}.err{color:var(--coral)}.skip{position:absolute;left:-999px;top:8px;background:var(--amber);color:var(--ink);padding:6px 10px;z-index:20}.skip:focus{left:8px}.bar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px max(20px,calc((100vw - 980px)/2));background:#1b2230eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.brand{color:var(--amber);text-decoration:none;font-weight:700;white-space:nowrap}.bar nav{display:flex;gap:18px;overflow-x:auto}.bar nav a{color:var(--dim);text-decoration:none;font-size:13px}.bar nav a:hover{color:var(--text)}main,footer{max-width:980px;margin:0 auto;padding:0 20px}footer{max-width:980px;margin:0 auto;padding:0 20px}.hero{padding:64px 0 42px}.hero-kicker{display:flex;align-items:center;gap:9px;margin-bottom:18px;color:var(--mint);font-size:11px;letter-spacing:.11em;font-weight:700}.status-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--mint);box-shadow:0 0 12px color-mix(in srgb,var(--mint) 70%,transparent)}.hero h1{font-size:clamp(2.7rem,8vw,5rem);line-height:1.02;font-weight:800;letter-spacing:-.055em}.hero-period{color:var(--amber)}.hero-role{margin-top:12px;color:var(--mint);font-size:clamp(1.05rem,2.4vw,1.4rem);font-weight:700}.lede{margin:10px 0 22px;max-width:62ch;color:var(--dim);font-size:1rem}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:22px}.hero-cta{display:inline-flex;align-items:center;gap:10px;padding:9px 14px;border:1px solid var(--line);border-radius:5px;text-decoration:none;font-size:13px;font-weight:700;transition:transform .15s,border-color .15s,background .15s}.hero-cta:hover{transform:translateY(-2px)}.hero-cta.primary{background:var(--amber);border-color:var(--amber);color:var(--ink)}.hero-cta.primary:hover{background:#ffda85;color:var(--ink)}.hero-cta.secondary{color:var(--text)}.hero-cta.secondary:hover{border-color:var(--mint);color:var(--mint)}.hero-meta{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:26px;color:var(--dim);font-size:12px}.hero-meta span+span:before{content:">";color:var(--amber);margin-right:9px}.term{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 18px 50px #00000059}.term-title{padding:8px 14px;font-size:12px;color:var(--dim);border-bottom:1px solid var(--line);background:#1e2635}.term-body{height:min(62vh,470px);overflow-y:auto;padding:14px 16px;font-size:14px;line-height:1.6;cursor:text}.line{margin-bottom:6px;overflow-wrap:anywhere}.line.out{padding-left:18px}.line p{margin:0 0 6px}.prompt{color:var(--amber);margin-right:6px;-webkit-user-select:none;user-select:none}.line.cmd{color:#fff}.input-line{display:flex;align-items:center;margin-bottom:0}.input-line input{flex:1;min-width:0;background:transparent;border:0;color:#fff;font:inherit;caret-color:var(--amber);padding:0}.input-line input:focus{outline:none}.input-line input::placeholder{color:var(--dim)}.term:focus-within{border-color:var(--amber)}.row{display:grid;grid-template-columns:150px 1fr;gap:12px}.row .k{color:var(--mint)}.blk{margin-bottom:10px}.ai{border-left:2px solid var(--mint);padding-left:12px;max-width:70ch}.chips{display:flex;flex-wrap:wrap;gap:8px;padding:10px 14px 12px;border-top:1px solid var(--line);background:#1e2635}.chips button{font:inherit;font-size:12px;color:var(--text);background:transparent;border:1px solid var(--line);border-radius:4px;padding:4px 10px;cursor:pointer}.chips button:hover:not(:disabled){border-color:var(--amber);color:var(--amber)}.chips button:disabled{opacity:.45;cursor:default}.sec{padding:56px 0 8px;border-top:1px solid var(--line);margin-top:24px}.sec h2{font-size:1.5rem;font-weight:700;margin-bottom:26px;color:var(--text)}.path{color:var(--amber)}h3{font-size:1rem;font-weight:700}.log-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}button.log-head{width:100%;background:none;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer;justify-content:flex-start;row-gap:0}button.log-head h3{transition:color .15s}button.log-head:hover h3{color:var(--amber)}button.log-head time{margin-left:auto}.caret{color:var(--amber);width:1ch}.log-body{margin-top:10px}.textbtn{background:none;border:0;padding:0;font:inherit;font-size:13px;color:var(--mint);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.textbtn:hover{color:var(--amber)}#experience>.textbtn{display:block;margin:-10px 0 22px}time{color:var(--dim);font-size:13px}.org{color:var(--mint);font-size:13px}.log{border-left:2px solid var(--line);margin-left:4px}.log>li{position:relative;padding:0 0 34px 26px}.log>li:before{content:"";position:absolute;left:-7px;top:7px;width:12px;height:12px;background:var(--ink);border:2px solid var(--amber);border-radius:50%}.log li ul{margin-top:8px}.log li li,.proj li{position:relative;padding-left:18px;margin-bottom:6px;max-width:78ch}.log li li:before,.proj li:before{content:"-";position:absolute;left:0;color:var(--dim)}.projects{display:grid;gap:28px}.proj{--mx: -400px;--my: -400px;position:relative;padding:14px 18px 14px 20px;border-left:2px solid var(--amber);background:radial-gradient(260px circle at var(--mx) var(--my),color-mix(in srgb,var(--amber) 11%,transparent),transparent 70%);transition:opacity .2s}.proj.dimmed{opacity:.32}.muted{color:var(--dim)}.proj .stack{margin:8px 0 12px;display:flex;flex-wrap:wrap;gap:6px}.links{margin-top:12px;display:flex;gap:20px}.skills>div{display:grid;grid-template-columns:160px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}.skills dt{color:var(--amber)}.skills dd{display:flex;flex-wrap:wrap;gap:6px 8px}.chip,.tag{font:inherit;font-size:13px;color:var(--text);background:transparent;padding:1px 9px;border:1px solid var(--line);border-radius:3px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.tag{color:var(--mint)}.chip:hover,.tag:hover{border-color:var(--amber);color:var(--amber)}.chip.on,.tag.on{background:var(--amber);border-color:var(--amber);color:var(--ink)}.filter,.skill-note{min-height:1.7em;margin:-8px 0 22px;font-size:14px}.skill-note{margin:18px 0 0}.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:30;background:var(--amber);transform-origin:0 50%;transform:scaleX(0)}.bar nav a.on{color:var(--amber)}.hint{margin-top:14px;font-size:13px}kbd,code{font:inherit;font-size:12px;padding:0 6px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--text)}.two{display:grid;grid-template-columns:1fr 1fr;gap:48px}.edu{margin-bottom:18px}.sub{margin-bottom:12px;color:var(--amber)}.plain li{margin-bottom:6px;overflow-wrap:anywhere}.form{display:grid;gap:14px}.form label{display:grid;gap:6px;color:var(--dim);font-size:13px}.form input:not(.hp),.form textarea{width:100%;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:4px;padding:10px 12px;font:inherit;resize:vertical}.form input:focus,.form textarea:focus{outline:none;border-color:var(--amber)}.form button{justify-self:start;font:inherit;font-weight:700;background:var(--amber);color:var(--ink);border:0;border-radius:4px;padding:10px 20px;cursor:pointer}.form button:hover:not(:disabled){background:#ffd885}.form button:disabled{opacity:.6;cursor:default}.status{min-height:1.7em;font-size:14px}.status.ok{color:var(--mint)}.status.error{color:var(--coral)}.status.sending{color:var(--dim)}footer{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:64px;padding-top:22px;padding-bottom:36px;border-top:1px solid var(--line);color:var(--dim);font-size:13px}footer a{margin-left:14px}@media(max-width:720px){body{font-size:14px}.hero{padding-top:36px}.two{grid-template-columns:1fr;gap:32px}.row,.skills>div{grid-template-columns:1fr;gap:2px}.term-body{font-size:13px}.bar{padding:10px 16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.cc{--c-bg: #232236;--c-field: #2e2d44;--c-line: #3d3c58;--c-muted: #8f8da8;position:relative;display:flex;border-radius:14px;overflow:hidden;background:var(--c-bg);border:1px solid var(--c-line);font-family:"Poppins",var(--mono)}.marquee{position:absolute;left:0;top:170px;bottom:0;width:64px;overflow:hidden}.track{display:flex;flex-direction:column;animation:marquee 22s linear infinite;will-change:transform}.group{display:flex;flex-direction:column}.group span{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;padding:14px 0;font-size:30px;line-height:64px;font-weight:500;color:#eceaf7;text-align:center}@keyframes marquee{to{transform:translateY(-50%)}}.cc-main{flex:1;min-width:0;padding:26px 34px 34px 72px}.cc-head{display:flex;align-items:center;gap:18px;padding-left:6px}.cc-head h3{font-size:1.5rem;font-weight:600;color:#eceaf7}.soc{display:grid;place-items:center;width:64px;height:64px;border-radius:12px;border:1px solid var(--c-line);animation:pop .45s cubic-bezier(.2,.9,.3,1.3);box-shadow:0 6px 20px #00000059;transition:transform .15s}.soc:hover{transform:scale(1.06) rotate(-3deg)}@keyframes pop{0%{transform:rotateY(90deg) scale(.7);opacity:0}to{transform:none;opacity:1}}.cc-copy{margin:26px 0 28px 6px;color:var(--c-muted);font-size:15px;line-height:1.7;max-width:62ch}.cc-form{display:grid;gap:20px;padding-left:56px}.cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.cc-form label{display:grid;gap:8px}.cc-form label>span{font-size:14px;font-weight:500;color:#eceaf7}.cc-form b{color:#ff4d6d;font-weight:600}.cc-form input:not(.hp),.cc-form textarea{width:100%;background:var(--c-field);color:#eceaf7;border:1px solid transparent;border-radius:8px;padding:12px 14px;font:400 14px "Poppins",var(--mono);resize:vertical;transition:border-color .15s,box-shadow .15s}.cc-form input::placeholder,.cc-form textarea::placeholder{color:#77759a}.cc-form input:focus,.cc-form textarea:focus{outline:none;border-color:#7c6cff;box-shadow:0 0 0 3px #7c6cff38}.cc-form small{justify-self:end;color:var(--c-muted);font-size:12px;margin-top:-2px}.cc-form small.warn{color:#ffb86b}.talk{justify-self:center;display:inline-flex;align-items:center;gap:10px;margin-top:8px;padding:14px 30px;font:600 15px "Poppins",var(--mono);color:#fff;background:#0d1124;border:1px solid #2b3050;border-radius:10px;cursor:pointer;box-shadow:0 0 22px #7c6cff73;animation:glow 2.8s ease-in-out infinite;transition:transform .15s}.talk:hover:not(:disabled){transform:translateY(-2px)}.talk:active:not(:disabled){transform:translateY(0) scale(.98)}.talk:disabled{opacity:.7;cursor:default;animation:none}.talk.ok{background:#10301f;border-color:#1f6b43;box-shadow:0 0 22px #34d39966;animation:none}.talk:hover:not(:disabled) .wave{display:inline-block;animation:wave .7s ease-in-out}@keyframes glow{50%{box-shadow:0 0 34px #7c6cffbf}}@keyframes wave{25%{transform:rotate(18deg)}75%{transform:rotate(-14deg)}}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.cc-status{min-height:1.6em;text-align:center;font-size:14px}.cc-status.ok{color:#6ee7b7}.cc-status.error{color:#ff8a9b}@media(max-width:720px){.marquee{display:none}.cc-main{padding:22px 18px 28px}.cc-head{padding-left:0}.cc-copy{margin-left:0}.cc-form{padding-left:0}.cc-grid{grid-template-columns:1fr;gap:20px}}@media(prefers-reduced-motion:reduce){.track,.talk,.soc,.talk .wave{animation:none!important}.proj,.progress{transition:none}}.project-featured-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:18px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.project-card{min-width:0;overflow:hidden;padding:0;border:1px solid var(--line);border-left:2px solid var(--amber);border-radius:8px;background:color-mix(in srgb,var(--ink) 94%,white 6%)}.project-card.proj-featured{border-left-width:3px}.project-image{display:block;overflow:hidden;aspect-ratio:16 / 9;background:#111827;border-bottom:1px solid var(--line)}.project-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;transition:transform .35s ease}.project-image:hover img{transform:scale(1.025)}.project-content{padding:16px 18px 18px}.project-title-row{align-items:flex-start}.project-title-row h3{font-size:1.05rem}.project-content>.muted{margin-top:8px}.project-content ul{margin-top:10px}.project-content .links{flex-wrap:wrap}.project-content .links a{color:var(--mint);text-decoration:none;font-size:13px}.project-content .links a:hover{color:var(--amber);text-decoration:underline;text-underline-offset:3px}.project-card.dimmed{opacity:.28}@media(max-width:760px){.project-featured-grid,.project-grid{grid-template-columns:1fr}.project-content{padding:14px}}.project-media{display:grid;grid-template-columns:1fr}.project-media-dual{grid-template-columns:1fr 1fr;gap:2px}.project-media-dual .project-image{aspect-ratio:16 / 10}@media(max-width:520px){.hero{padding-top:42px}.hero-kicker{font-size:9px;letter-spacing:.07em}.hero-meta{flex-direction:column;gap:5px}.hero-meta span+span:before{margin-right:7px}}.hero{padding-top:76px}.hero h1{max-width:900px}.hero-role{letter-spacing:-.025em}.lede{max-width:66ch;line-height:1.85}.hero-proof{display:flex;flex-wrap:wrap;gap:0;margin:4px 0 30px;width:fit-content;border:1px solid var(--line);border-radius:7px;background:color-mix(in srgb,var(--panel) 70%,transparent)}.hero-proof>div{display:grid;gap:1px;min-width:124px;padding:11px 17px}.hero-proof>div+div{border-left:1px solid var(--line)}.hero-proof strong{color:var(--amber);font-size:1.25rem;line-height:1.2}.hero-proof span{color:var(--dim);font-size:11px}.about-section{scroll-margin-top:80px}.about-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:42px;align-items:start}.about-intro{padding:22px;border:1px solid var(--line);border-left:3px solid var(--mint);border-radius:7px;background:color-mix(in srgb,var(--panel) 75%,transparent)}.about-eyebrow{color:var(--mint);font-size:10px;font-weight:700;letter-spacing:.14em;margin-bottom:13px}.about-intro h3{font-size:clamp(1.45rem,3vw,2rem);line-height:1.35;letter-spacing:-.04em;margin-bottom:15px}.about-intro h3 span{color:var(--amber)}.about-intro>p:last-child,.about-details p{color:var(--dim);line-height:1.85}.about-details{display:grid;gap:14px}.about-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.about-tags span{padding:5px 9px;border:1px solid var(--line);border-radius:4px;color:var(--mint);font-size:11px}.bar nav a{white-space:nowrap}@media(max-width:760px){.hero{padding-top:48px}.about-layout{grid-template-columns:1fr;gap:20px}.hero-proof>div{min-width:105px;padding:10px 12px}}@media(max-width:420px){.hero-proof{width:100%}.hero-proof>div{min-width:0;flex:1;padding:9px 8px}.hero-proof span{font-size:10px}.bar{align-items:flex-start;flex-direction:column;gap:8px}.bar nav{width:100%;gap:14px}}.hero-tech{display:flex;flex-wrap:wrap;gap:9px;margin:-8px 0 24px}.hero-tech a{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--panel) 72%,transparent);color:var(--text);text-decoration:none;font-size:12px;transition:transform .18s,border-color .18s,color .18s,box-shadow .18s}.hero-tech a:hover{transform:translateY(-3px);border-color:var(--mint);color:var(--mint);box-shadow:0 7px 22px #0003}.tech-mark{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:5px;font:800 11px/1 var(--mono)}.react-mark{color:#61dafb;font-size:20px}.python-mark{color:#ffd45c;background:#254b70}.js-mark{color:#171717;background:#f7df1e}.ai-mark{color:#c4b5fd;background:#342b65;font-size:16px}.cyber-mark{color:#8ee3c8;background:#173d38;font-size:16px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.project-featured-grid{display:none}.project-card{display:flex;flex-direction:column}.project-content{display:flex;flex:1;flex-direction:column}.project-content .links{margin-top:auto;padding-top:14px}.project-card .project-image{aspect-ratio:16 / 10}.project-title-row{min-height:30px}@media(max-width:900px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.project-grid{grid-template-columns:1fr}.hero-tech{gap:7px}.hero-tech a{font-size:11px;padding:6px 8px}}:root[data-theme=light]{--ink: #f4f6fb;--panel: #ffffff;--line: #d7deea;--text: #202a3b;--dim: #64748b;--amber: #a16207;--mint: #087f68;--coral: #c2413b;color-scheme:light}:root[data-theme=dark]{color-scheme:dark}html,body,.bar,.term,.proj,.project-card,.about-intro,.hero-proof,.chips,.term-title,.project-image,.cc-main,.cc-form input,.cc-form textarea{transition:background-color .22s ease,color .22s ease,border-color .22s ease}:root[data-theme=light] body{background:var(--ink);color:var(--text)}:root[data-theme=light] .bar{background:#f4f6fbed}:root[data-theme=light] .term{box-shadow:0 18px 45px #1e293b1f}:root[data-theme=light] .term-title,:root[data-theme=light] .chips{background:#e9eef7}:root[data-theme=light] .term-body{color:#263449}:root[data-theme=light] .line.cmd{color:#111827}:root[data-theme=light] .input-line input{color:#111827}:root[data-theme=light] .project-card{background:#fff}:root[data-theme=light] .project-image{background:#e8edf5}:root[data-theme=light] .hero-proof{background:#ffffffbf}:root[data-theme=light] .about-intro{background:#fff}:root[data-theme=light] .cc-main{background:#f1f3fb;color:#22283d}:root[data-theme=light] .cc-form input,:root[data-theme=light] .cc-form textarea{background:#fff;color:#202a3b;border-color:#cbd5e1}:root[data-theme=light] .cc-copy{color:#59657a}.bar-right{display:flex;align-items:center;gap:12px;min-width:0}.theme-toggle{display:inline-flex;flex:0 0 auto;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font:600 12px var(--mono);cursor:pointer;transition:transform .16s,border-color .16s,background .2s}.theme-toggle:hover{transform:translateY(-2px);border-color:var(--mint)}.theme-toggle span{font-size:16px;line-height:1;color:var(--amber)}@media(max-width:900px){.bar{flex-wrap:wrap}.bar-right{flex:1;justify-content:flex-end}}@media(max-width:620px){.bar-right{width:100%;justify-content:space-between}.bar-right nav{flex:1}}:root[data-theme=light] .cc-head h3,:root[data-theme=light] .cc-form label>span{color:#202a3b}:root[data-theme=light] .cc-form input:not(.hp),:root[data-theme=light] .cc-form textarea{background:#fff;color:#202a3b;border-color:#cbd5e1}:root[data-theme=light] .cc-form input::placeholder,:root[data-theme=light] .cc-form textarea::placeholder{color:#64748b;opacity:1}:root[data-theme=light] .cc-form input:focus,:root[data-theme=light] .cc-form textarea:focus{border-color:#6d5dfc;box-shadow:0 0 0 3px #6d5dfc29}:root[data-theme=light] .cc-form small,:root[data-theme=light] .cc-status{color:#64748b}:root[data-theme=light] .cc-status.ok{color:#087f68}:root[data-theme=light] .cc-status.error{color:#b42318}
