:root{--sans:"Space Grotesk", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--max:920px;--cursor-default:url(/cursors/graphic-default.svg) 10 10, auto;--cursor-pointer:url(/cursors/pointer.svg) 14 6, pointer}:root,[data-theme=dark]{--bg:#08090b;--bg-soft:#0e1014;--fg:#e9eaee;--fg-bright:#fff;--fg-dim:#9a9da6;--fg-faint:#5c5f68;--line:#ffffff14;--accent:#e9eaee;--project-bg:#0e101480;--project-bg-hover:#12141ab3;--dot-base:120, 124, 135;--dot-accent:235, 236, 240}[data-theme=light]{--bg:#f3f3f0;--bg-soft:#e9e9e4;--fg:#15161a;--fg-bright:#000;--fg-dim:#565961;--fg-faint:#8b8e95;--line:#0000001a;--accent:#15161a;--project-bg:#ffffff8c;--project-bg-hover:#ffffffd9;--dot-base:165, 167, 172;--dot-accent:24, 25, 30}@media (prefers-color-scheme:light){:root:not([data-theme=dark]):not([data-theme=light]){--bg:#f3f3f0;--bg-soft:#e9e9e4;--fg:#15161a;--fg-bright:#000;--fg-dim:#565961;--fg-faint:#8b8e95;--line:#0000001a;--accent:#15161a;--project-bg:#ffffff8c;--project-bg-hover:#ffffffd9;--dot-base:165, 167, 172;--dot-accent:24, 25, 30}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;cursor:var(--cursor-default);font-size:16px;line-height:1.6;transition:background .4s,color .4s;overflow-x:hidden}.has-matrix{position:relative;overflow:hidden}.has-matrix>.layer{z-index:1;position:relative}.dot-matrix{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.arcade-controls{z-index:2;gap:8px;display:flex;position:absolute}.arcade-btn{font-family:var(--mono);width:30px;height:30px;color:var(--fg-dim);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;transition:color .2s,border-color .2s;display:inline-flex}.arcade-btn:hover{color:var(--fg);border-color:var(--fg)}.arcade-btn.wide{letter-spacing:.04em;gap:7px;width:auto;height:32px;padding:0 14px}.arcade-caption{z-index:2;text-align:center;height:28px;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);pointer-events:none;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute}.arcade-over{z-index:3;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute}.arcade-over-title{font-family:var(--mono);letter-spacing:.28em;color:var(--fg-dim);font-size:13px}.arcade-over-score{font-family:var(--mono);letter-spacing:.1em;color:var(--fg);font-size:34px}.arcade-over-actions{gap:10px;margin-top:6px;display:flex}.theme-toggle{font-family:var(--mono);letter-spacing:.08em;color:var(--fg-dim);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;padding:6px 13px;font-size:12px;transition:color .2s,border-color .2s}.theme-toggle:hover{color:var(--fg);border-color:var(--fg)}.nav-right{align-items:center;gap:22px;display:flex}.shell{z-index:2;max-width:var(--max);margin:0 auto;padding:0 28px;position:relative}section{border-top:1px solid var(--line);padding:96px 0}section:first-of-type{border-top:none}section[id]{scroll-margin-top:84px}.eyebrow{font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--fg-faint);align-items:center;gap:10px;margin-bottom:38px;font-size:12px;display:flex}.eyebrow:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 12px var(--accent);border-radius:50%}.nav{z-index:3;max-width:var(--max);font-family:var(--mono);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);justify-content:space-between;align-items:center;margin:0 auto;padding:20px 28px;font-size:13px;display:flex;position:sticky;top:0}.nav-brand{letter-spacing:.04em;color:var(--fg);font-weight:500;text-decoration:none}.nav-links{gap:22px;display:flex}.nav-menu-btn{font-family:var(--mono);width:32px;height:30px;color:var(--fg-dim);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;font-size:16px;line-height:1;transition:color .2s,border-color .2s;display:none}.nav-menu-btn:hover{color:var(--fg);border-color:var(--fg)}.nav-menu{background:var(--bg-soft);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;flex-direction:column;gap:4px;padding:10px;display:flex;position:absolute;top:100%;left:28px;right:28px}.nav-menu a{color:var(--fg-dim);border-radius:8px;padding:10px 12px;text-decoration:none;transition:color .2s,background .2s}.nav-menu a:hover,.nav-menu a.active{color:var(--fg);background:#7f7f7f14}.nav-links a{color:var(--fg-dim);text-decoration:none;transition:color .2s;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--fg)}.nav-links a.active:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:-6px;left:0;right:0}@media (max-width:620px){.nav-links{display:none}.nav-menu-btn{display:inline-flex}}.hero{border-top:none;align-items:center;width:100vw;min-height:calc(100vh - 64px);padding:0;display:flex;position:relative;left:50%;overflow:hidden;transform:translate(-50%)}.hero-inner{width:100%;max-width:var(--max);margin:0 auto;padding:0 28px;transform:translateY(calc(-1*clamp(24px,6vh,54px)))}.hero-status{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-dim);align-items:center;gap:10px;margin-bottom:26px;font-size:12.5px;display:inline-flex}.pulse{background:#5ee08a;border-radius:50%;width:7px;height:7px;animation:2.4s infinite pulse;box-shadow:0 0 #5ee08a99}@keyframes pulse{0%{box-shadow:0 0 #5ee08a80}70%{box-shadow:0 0 0 9px #5ee08a00}to{box-shadow:0 0 #5ee08a00}}.hero h1{letter-spacing:-.03em;font-size:clamp(2.2rem,4.2vw,5.4rem);font-weight:600;line-height:1.02}.hero .role{color:var(--fg-dim);margin-top:18px;font-size:clamp(1rem,2vw,1.4rem);font-weight:400}.hero .tagline{max-width:560px;color:var(--fg-dim);margin-top:28px;font-size:1.05rem}.hero-meta{font-family:var(--mono);color:var(--fg-faint);flex-wrap:wrap;gap:14px 26px;margin-top:40px;font-size:13px;display:flex}.hero-meta a{color:var(--fg-dim);border-bottom:1px solid var(--line);text-decoration:none;transition:color .2s,border-color .2s}.hero-meta a:hover{color:var(--fg);border-color:var(--fg)}.hero-scroll{bottom:34px;left:max(28px, calc((100vw - var(--max)) / 2 + 28px));z-index:1;width:fit-content;max-width:calc(100vw - 56px);font-family:var(--mono);letter-spacing:.22em;text-transform:uppercase;color:var(--fg-faint);align-items:center;gap:10px;padding:0;font-size:11px;text-decoration:none;transition:color .2s;display:flex;position:absolute}.hero-scroll:hover{color:var(--fg)}.hero-scroll-arrow{animation:1.8s ease-in-out infinite scrollNudge;display:inline-block}@keyframes scrollNudge{0%,to{opacity:.5;transform:translateY(0)}50%{opacity:1;transform:translateY(5px)}}.section-title{letter-spacing:-.02em;margin-bottom:8px;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:600}.section-lead{color:var(--fg-dim);max-width:560px;margin-bottom:48px}.work-section{--timeline-x:7px;--entry-content-x:256px;--entry-body-offset:228px;z-index:1;padding-bottom:clamp(120px,18vh,180px);position:relative}.work-timeline{z-index:1;margin-top:clamp(34px,7vh,60px);position:relative}.work-timeline:before{content:"";top:0;bottom:0;left:var(--timeline-x);pointer-events:none;background-image:radial-gradient(circle, rgba(var(--dot-accent), .34) 0 1.15px, transparent 1.35px);opacity:.48;background-repeat:repeat-y;background-size:6px 12px;width:6px;position:absolute;transform:translate(-50%);-webkit-mask-image:linear-gradient(#0000 0,#000 48px calc(100% - 48px),#0000 100%);mask-image:linear-gradient(#0000 0,#000 48px calc(100% - 48px),#0000 100%)}.entry{padding:26px 0 clamp(36px,7vh,56px) 28px;position:relative}.entry:not(:first-child):after{content:"";top:0;left:var(--entry-content-x);background:var(--line);height:1px;position:absolute;right:0}.entry-summary{grid-template-columns:200px 1fr;gap:28px;padding:8px 0 12px;display:grid}.entry-period{font-family:var(--mono);color:var(--fg-faint);letter-spacing:.02em;padding-top:4px;font-size:11px;position:relative}.entry-period:before{content:"";left:calc(var(--timeline-x) - 31.5px);background:var(--bg);border:1px solid rgba(var(--dot-accent), .62);width:7px;height:7px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;position:absolute;top:11px}.entry-head{min-width:0}.entry-role{font-size:1rem;font-weight:600;line-height:1.18;transition:color .2s}.entry-org{color:var(--fg-dim);margin-top:2px;margin-bottom:0;font-size:.82rem;line-height:1.28;transition:color .2s}.entry-org span{color:var(--fg-faint)}.entry-details{margin-left:var(--entry-body-offset)}.entry ul{flex-direction:column;gap:9px;padding-top:18px;list-style:none;display:flex}.entry li{color:var(--fg-dim);padding-left:20px;font-size:.94rem;position:relative}.entry li:before{content:"";background:var(--fg-faint);border-radius:50%;width:5px;height:5px;position:absolute;top:9px;left:0}@media (max-width:680px){.work-section{--entry-content-x:28px;--entry-body-offset:0px;padding-bottom:96px}.entry-summary{grid-template-columns:1fr;gap:8px}.entry-details{margin-left:0}}#projects{z-index:1;position:relative}.projects-grid{grid-template-columns:repeat(2,1fr);gap:18px;display:grid}.project{isolation:isolate;color:inherit;border:1px solid var(--line);background:var(--project-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);--card-accent:#7c8cff;--mx:50%;--my:50%;border-radius:14px;padding:26px;text-decoration:none;transition:transform .25s,border-color .25s,background .25s,box-shadow .25s;display:block;position:relative}.project:hover{border-color:color-mix(in srgb, var(--card-accent) 65%, var(--line));background:var(--project-bg-hover);box-shadow:0 0 24px -6px color-mix(in srgb, var(--card-accent) 35%, transparent);transform:translateY(-4px)}.project-dots,.project-ring{z-index:0;pointer-events:none;border-radius:inherit;opacity:0;transition:opacity .3s;position:absolute;inset:0}.project-dots{background-image:radial-gradient(circle, color-mix(in srgb, var(--card-accent) 100%, transparent) 0 1.2px, transparent 2px);-webkit-mask-image:radial-gradient(circle 280px at var(--mx) var(--my), #000 0%, transparent 75%), radial-gradient(130% 130% at 50% 50%, transparent 20%, #000 100%);-webkit-mask-composite:source-in;-webkit-mask-image:radial-gradient(circle 210px at var(--mx) var(--my), #000 0%, transparent 75%), radial-gradient(130% 130% at 50% 50%, transparent 40%, #000 100%);mask-image:radial-gradient(circle 210px at var(--mx) var(--my), #000 0%, transparent 75%), radial-gradient(130% 130% at 50% 50%, transparent 40%, #000 100%);background-size:14px 14px;-webkit-mask-composite:source-in;mask-composite:intersect}.project-ring{background:radial-gradient(circle 280px at var(--mx) var(--my), color-mix(in srgb, var(--card-accent) 95%, transparent), transparent 80%);-webkit-mask-composite:xor;padding:1px;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.project:hover .project-dots,.project:hover .project-ring{opacity:1}.project:hover .project-name{color:var(--fg-bright)}.project:hover p{color:var(--fg)}.project:hover .project-tag{color:color-mix(in srgb, var(--card-accent) 80%, var(--fg-dim))}.project:hover .chip{color:var(--fg);border-color:color-mix(in srgb, var(--card-accent) 45%, var(--line))}@media (hover:none),(pointer:coarse){.project.scroll-active{border-color:color-mix(in srgb, var(--card-accent) 65%, var(--line));background:var(--project-bg-hover);box-shadow:0 0 24px -6px color-mix(in srgb, var(--card-accent) 35%, transparent);transform:translateY(-4px)}.project.scroll-active .project-dots,.project.scroll-active .project-ring{opacity:1}.project.scroll-active .project-name{color:var(--fg-bright)}.project.scroll-active p{color:var(--fg)}.project.scroll-active .project-tag{color:color-mix(in srgb, var(--card-accent) 80%, var(--fg-dim))}.project.scroll-active .chip{color:var(--fg);border-color:color-mix(in srgb, var(--card-accent) 45%, var(--line))}}.project-head,.project>p,.project-stack{z-index:1;position:relative}.project-head{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:flex}.project-name{font-size:1.25rem;font-weight:600}.project-tag{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-faint);font-size:11px}.project p{color:var(--fg-dim);font-size:.93rem}.project-stack{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.chip{font-family:var(--mono);color:var(--fg-dim);border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:11.5px}@media (max-width:680px){.projects-grid{grid-template-columns:1fr}}.skills-grid{grid-template-columns:repeat(2,1fr);gap:34px 40px;display:grid}.skill-group h3{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:14px;font-size:12.5px}.skill-list{flex-wrap:wrap;gap:8px;display:flex}@media (max-width:680px){.skills-grid{grid-template-columns:1fr}}.edu{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:20px;padding:20px 0;display:flex}.edu:first-of-type{border-top:none}.edu-degree{font-weight:500}.edu-school{color:var(--fg-dim);font-size:.92rem}.edu-period{font-family:var(--mono);color:var(--fg-faint);white-space:nowrap;font-size:12.5px}.contact h2{letter-spacing:-.03em;max-width:640px;font-size:clamp(2rem,6vw,3.4rem);font-weight:600;line-height:1.05}.contact .section-lead{margin-top:22px}.contact-links{flex-wrap:wrap;gap:14px;margin-top:14px;display:flex}.btn{font-family:var(--mono);letter-spacing:.03em;color:var(--fg);border:1px solid var(--line);border-radius:999px;padding:12px 22px;font-size:13px;text-decoration:none;transition:border-color .2s,background .2s,transform .2s}.btn:hover{border-color:var(--fg);background:#ffffff0a;transform:translateY(-2px)}.footer{font-family:var(--mono);color:var(--fg-faint);border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding:40px 0 60px;font-size:12px;display:flex}.footer-note{align-items:center;gap:8px;display:inline-flex}.footer-dot{background:#5ee08a;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #5ee08a99}.footer-top{color:var(--fg-faint);text-decoration:none;transition:color .2s}.footer-top:hover{color:var(--fg)}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(18px)}.reveal.in{opacity:1;transform:none}h1,h2,h3,p,li,.chip,.eyebrow,.entry-period,.edu-period,.project-tag,.skill-group h3{transition:color .2s,border-color .2s}.hero h1:hover,.section-title:hover,.contact h2:hover,.entry-role:hover,.project-name:hover,.edu-degree:hover,.about-lead:hover{color:var(--fg-bright)}.tagline:hover,.role:hover,.section-lead:hover,.entry li:hover,.entry-org:hover,.project p:hover,.hero-meta:hover,.edu-school:hover{color:var(--fg)}.eyebrow:hover,.skill-group h3:hover,.entry-period:hover,.edu-period:hover,.project-tag:hover{color:var(--fg-dim)}.chip:hover{color:var(--fg);border-color:var(--fg-faint)}.entry:hover .entry-role{color:var(--fg-bright)}.entry:hover .entry-period{color:var(--fg-dim)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}a,button,select,summary,label,[role=button]{cursor:var(--cursor-pointer)}input,textarea{cursor:text}input[type=checkbox],input[type=color],input[type=range]{cursor:var(--cursor-pointer)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}html{scroll-behavior:auto}.pulse,.hero-scroll-arrow{animation:none}}
