:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#05060b;--bg-deep:#020307;--surface:#0d0e18c2;--surface-strong:#0c0d15;--text:#f5f3fb;--muted:#a4a2ae;--faint:#686776;--line:#ffffff1b;--line-strong:#ffffff2e;--accent:#8c5cff;--accent-soft:#b49cff;--accent-blue:#646eff;--page:min(1420px, calc(100vw - 96px));--mono:"SFMono-Regular", "Cascadia Code", "Roboto Mono", ui-monospace, monospace;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{background:radial-gradient(circle at 80% -10%, #5338a617, transparent 32%), var(--bg);min-width:320px;color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}code{font-family:var(--mono);color:var(--accent-soft)}::selection{color:#fff;background:#8c5cff8c}.site-shell{min-height:100vh;position:relative;overflow:clip}.skip-link{z-index:100;color:var(--text);border:1px solid var(--line-strong);background:var(--surface-strong);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;border-radius:9px;padding:12px 18px;font-size:12px;position:absolute;top:-100%;left:16px}.skip-link:focus{top:16px}.menu-backdrop{z-index:49;cursor:pointer;opacity:0;pointer-events:none;background:#0203079e;border:none;margin:0;padding:0;transition:opacity .25s;position:fixed;inset:0}.menu-backdrop.open{opacity:1;pointer-events:auto}.page-width{width:var(--page);margin-inline:auto}.section-anchor{scroll-margin-top:88px}.site-header{z-index:50;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(18px)saturate(140%);backdrop-filter:blur(18px)saturate(140%);background:linear-gradient(#04050aeb,#04050aad);grid-template-columns:1fr auto 1fr;align-items:center;height:78px;padding-inline:max(32px,50vw - 710px);display:grid;position:fixed;inset:0 0 auto}.brand{width:fit-content;font-family:var(--mono);letter-spacing:.32em;white-space:nowrap;align-items:center;gap:16px;font-size:14px;font-weight:600;display:inline-flex}.brand-mark{width:26px;height:26px}.desktop-nav{align-items:center;gap:48px;display:flex}.desktop-nav a{color:#d8d5df;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:28px 0 24px;font-size:13px;transition:color .18s;position:relative}.desktop-nav a:after{content:"";background:linear-gradient(90deg, transparent, var(--accent-soft), transparent);height:1px;transition:transform .18s;position:absolute;bottom:18px;left:0;right:0;transform:scaleX(0)}.desktop-nav a:hover,.desktop-nav a.active{color:var(--accent-soft)}.desktop-nav a.active:after{transform:scaleX(1)}.header-actions{justify-self:end;align-items:center;gap:12px;display:flex}.icon-button,.menu-button{color:#f3f0f8;border:1px solid var(--line-strong);background:#ffffff05;border-radius:9px;place-items:center;width:43px;height:43px;transition:border-color .18s,color .18s,background .18s,transform .18s;display:grid}.icon-button:hover,.menu-button:hover{color:var(--accent-soft);background:#8c5cff14;border-color:#ac8fff80;transform:translateY(-1px)}.icon-button svg,.menu-button svg{width:19px;height:19px}.menu-button{padding:0;display:none}.mobile-menu{display:none}.hero{isolation:isolate;border-bottom:1px solid var(--line);background:linear-gradient(90deg,#04050afa 0%,#04050aeb 33%,#04050a2e 70%,#04050ac7 100%),radial-gradient(circle at 69% 43%,#5f3dcc2e,#0000 30%),#03040a;height:min(930px,100svh);min-height:780px;padding-top:78px;position:relative}.hero:before{content:"";z-index:-1;background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:64px 64px;position:absolute;inset:78px 0 0;-webkit-mask-image:linear-gradient(#0000 0%,#00000073 32%,#000c 70%,#0000 100%);mask-image:linear-gradient(#0000 0%,#00000073 32%,#000c 70%,#0000 100%)}.hero-visual{z-index:-1;position:absolute;inset:78px 0 0 42%;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 14% 88%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 14% 88%,#0000 100%)}.particle-field{width:100%;height:100%;display:block}.hero-content{z-index:2;flex-direction:column;justify-content:center;align-items:flex-start;height:100%;padding-bottom:24px;display:flex;position:relative}.hero-brand{color:var(--text);font-family:var(--mono);letter-spacing:.42em;text-transform:uppercase;margin:0 0 18px;font-size:clamp(12px,1vw,14px);font-weight:600}.hero-intro,.section-heading>p,.section-heading>div>p,.resume-intro>p:first-child,.contact-inner>p:first-of-type{color:var(--accent-soft);font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;margin:0 0 24px;font-size:clamp(14px,1.2vw,18px)}.reveal-up{animation:.72s cubic-bezier(.22,1,.36,1) both reveal-up}.reveal-delay-1{animation-delay:80ms}.reveal-delay-2{animation-delay:.14s}.reveal-delay-3{animation-delay:.22s}.reveal-delay-4{animation-delay:.3s}.reveal-delay-5{animation-delay:.38s}.reveal-section{animation:.8s cubic-bezier(.22,1,.36,1) both reveal-up;animation-timeline:view();animation-range:entry cover 28%}@keyframes reveal-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.hero h1{max-width:850px;font-family:var(--mono);letter-spacing:.075em;text-transform:uppercase;text-wrap:balance;text-shadow:0 0 36px #ffffff0d;margin:0;font-size:clamp(52px,6.1vw,104px);font-weight:400;line-height:.94}.hero h1 span{color:#0000;background:linear-gradient(100deg,#f6f3ff 8%,#9b82ff 48%,#e8e2ff 83%);-webkit-background-clip:text;background-clip:text}.hero-role{color:#c8c3d1;font-family:var(--mono);letter-spacing:.18em;margin:28px 0 0;font-size:clamp(12px,1vw,16px);line-height:1.7}.hero-copy{max-width:610px;color:var(--muted);font-family:var(--mono);margin:25px 0 0;font-size:clamp(14px,1.15vw,18px);line-height:1.75}.hero-actions{gap:20px;margin-top:34px;display:flex}.button{min-width:220px;min-height:58px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:1px solid #0000;border-radius:9px;justify-content:space-between;align-items:center;gap:28px;padding:0 26px;font-size:13px;font-weight:600;transition:transform .18s,box-shadow .18s,background .18s,border-color .18s;display:inline-flex}.button svg{width:20px;height:20px}.button:hover{transform:translateY(-2px)}.button-primary{color:#fff;background:linear-gradient(120deg, #b39efff0, #6740ebfa), var(--accent);border-color:#bda7ff99;box-shadow:0 14px 48px #6137dc3d,inset 0 1px #ffffff47}.button-primary:hover{box-shadow:0 18px 58px #6137dc61,inset 0 1px #ffffff57}.button-secondary{color:var(--accent-soft);background:#090a13a8;border-color:#a484ffbd}.button-secondary:hover{background:#8c5cff14;border-color:#c3b1ff}.hero-index{color:var(--faint);font-family:var(--mono);letter-spacing:.12em;align-items:center;gap:10px;font-size:10px;display:flex;position:absolute;bottom:36px;right:max(36px,50vw - 710px)}.hero-index div{background:linear-gradient(90deg, var(--accent), #ffffff29);width:54px;height:1px}.about,.resume{padding-block:140px}.section-heading{grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);align-items:end;gap:80px;margin-bottom:72px;display:grid}.section-heading>p{align-self:start}.section-heading h2,.resume-intro h2,.contact h2{font-family:var(--mono);letter-spacing:-.035em;margin:0;font-size:clamp(38px,4.5vw,72px);font-weight:400;line-height:1.05}.capability-list{border-top:1px solid var(--line-strong)}.capability{border-bottom:1px solid var(--line);grid-template-columns:90px minmax(0,1fr) 70px;align-items:center;gap:34px;min-height:170px;padding:32px 8px;transition:padding-inline .22s,background .22s;display:grid;position:relative;overflow:hidden}.capability:before{content:"";opacity:0;background:linear-gradient(90deg,#8c5cff14,#0000 58%);transition:opacity .22s;position:absolute;inset:0}.capability:hover{padding-inline:24px}.capability:hover:before{opacity:1}.capability-code{z-index:1;color:var(--accent-soft);font-family:var(--mono);letter-spacing:.12em;font-size:13px;position:relative}.capability h3{z-index:1;font-family:var(--mono);letter-spacing:.02em;text-transform:uppercase;margin:0 0 12px;font-size:clamp(20px,2.2vw,32px);font-weight:500;position:relative}.capability p{z-index:1;max-width:680px;color:var(--muted);font-family:var(--mono);margin:0;font-size:14px;line-height:1.7;position:relative}.capability-mark{z-index:1;color:#a98cff85;width:34px;transition:color .22s,transform .22s;position:relative}.capability:hover .capability-mark{color:var(--accent-soft);transform:rotate(22.5deg)scale(1.08)}.projects{border-block:1px solid var(--line);background:radial-gradient(circle at 14% 10%,#7245e21a,#0000 30%),linear-gradient(#070811,#04050a);padding-block:140px}.split-heading{grid-template-columns:1.15fr .85fr;align-items:end}.section-copy{color:var(--muted);font-family:var(--mono);margin:0 0 8px;font-size:14px;line-height:1.75}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.project-card{--card-accent:140, 92, 255;background:linear-gradient(145deg, rgba(var(--card-accent), .09), transparent 52%), #080911d1;border:1px solid #ffffff1f;border-radius:16px;min-height:440px;padding:34px;transition:transform .25s,border-color .25s,box-shadow .25s;position:relative;overflow:hidden}.project-card:after{content:"";background:radial-gradient(circle, rgba(var(--card-accent), .22), transparent 62%);pointer-events:none;height:80%;position:absolute;inset:auto -30% -55% 30%}.project-card:hover{border-color:rgba(var(--card-accent), .5);box-shadow:0 26px 80px #00000057, 0 0 70px rgba(var(--card-accent), .08);transform:translateY(-7px)}.accent-indigo{--card-accent:91, 109, 255}.accent-white{--card-accent:204, 198, 255}.project-number{z-index:2;color:#ffffff61;font-family:var(--mono);letter-spacing:.15em;font-size:12px;position:relative}.project-orbit{border:1px solid rgba(var(--card-accent), .16);width:190px;height:190px;color:rgba(var(--card-accent), .72);background:radial-gradient(circle, rgba(var(--card-accent), .1), transparent 65%);border-radius:50%;place-items:center;display:grid;position:absolute;top:20px;right:32px;transform:rotate(-12deg)}.project-orbit:before,.project-orbit:after{content:"";border:1px solid rgba(var(--card-accent), .14);border-radius:50%;position:absolute;inset:22px}.project-orbit:after{inset:52px -18px;transform:rotate(58deg)}.project-orbit svg{width:64px;filter:drop-shadow(0 0 20px rgba(var(--card-accent), .58));animation:14s linear infinite slow-turn}.project-content{z-index:2;position:absolute;bottom:34px;left:34px;right:100px}.project-content>p:first-child{color:rgb(var(--card-accent));font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 12px;font-size:11px}.project-content h3{font-family:var(--mono);letter-spacing:-.03em;margin:0;font-size:clamp(30px,3vw,48px);font-weight:400}.project-year{color:var(--faint);letter-spacing:.08em}.project-description{max-width:540px;color:var(--muted);font-family:var(--mono);margin:16px 0 10px;font-size:13px;line-height:1.7}.project-outcome{color:#c8c3d1;max-width:540px;font-family:var(--mono);margin:0 0 22px;font-size:12px;line-height:1.6}.tag-row{flex-wrap:wrap;gap:8px;display:flex}.tag-row span{color:#c8c3d3;border:1px solid var(--line);font-family:var(--mono);letter-spacing:.06em;background:#ffffff05;border-radius:999px;padding:7px 10px;font-size:10px}.project-card-link{z-index:3;border-radius:16px;position:absolute;inset:0}.project-card-link:focus-visible{outline-offset:3px;outline:2px solid #b49cffe6}.project-link-icon{width:52px;height:52px;color:rgb(var(--card-accent));border:1px solid rgba(var(--card-accent), .38);pointer-events:none;background:#06070db8;border-radius:50%;place-items:center;transition:background .18s,transform .18s;display:grid;position:absolute;bottom:30px;right:30px}.project-card:hover .project-link-icon,.project-card-link:focus-visible .project-link-icon{background:rgba(var(--card-accent), .14);transform:rotate(8deg)scale(1.05)}.project-link-icon svg{width:22px}.resume-download{width:fit-content;min-width:0;margin-top:28px}.resume{grid-template-columns:minmax(300px,.85fr) minmax(0,1.15fr);gap:100px;display:grid}.resume-intro{align-self:start;position:sticky;top:130px}.resume-intro>p:last-child{max-width:500px;color:var(--muted);font-family:var(--mono);margin:28px 0 0;font-size:14px;line-height:1.75}.timeline{border-top:1px solid var(--line-strong)}.timeline article{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;gap:32px;padding:38px 0;display:grid}.timeline article>span{color:var(--accent-soft);font-family:var(--mono);letter-spacing:.12em;font-size:11px}.timeline h3{font-family:var(--mono);margin:0 0 12px;font-size:clamp(20px,2vw,29px);font-weight:500}.timeline p{color:var(--muted);font-family:var(--mono);margin:0;font-size:13px;line-height:1.75}.resume-bullets{color:var(--muted);font-family:var(--mono);margin:16px 0 0;padding-left:18px;font-size:12px;line-height:1.7}.resume-bullets li+li{margin-top:8px}.contact{border-top:1px solid var(--line);background:#030409;place-items:center;min-height:670px;display:grid;position:relative;overflow:hidden}.contact:before{content:"";background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(circle,#000,#0000 70%);mask-image:radial-gradient(circle,#000,#0000 70%)}.contact-glow{aspect-ratio:1;filter:blur(14px);background:radial-gradient(circle,#7046ee3d,#38257d1a 34%,#0000 68%);border-radius:50%;width:min(800px,80vw);position:absolute}.contact-inner{z-index:2;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.contact-mark{width:78px;color:var(--accent-soft);filter:drop-shadow(0 0 26px #8c5cffb3);margin-bottom:40px;animation:18s linear infinite slow-turn}.contact h2{font-size:clamp(44px,5.8vw,88px)}.contact-copy{color:var(--muted);font-family:var(--mono);margin:22px 0 34px;font-size:15px}.contact small{color:#6f6c7b;font-family:var(--mono);letter-spacing:.06em;margin-top:20px;font-size:10px}.contact small a{color:#9b96a8;transition:color .18s}.contact small a:hover{color:var(--accent-soft)}.site-footer{color:#777482;min-height:120px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:1fr auto 1fr;align-items:center;gap:30px;font-size:10px;display:grid}.footer-brand{color:#d9d4e4;font-size:11px}.site-footer>p{text-align:center}.footer-links{justify-self:end;gap:18px;display:flex}.footer-links a{color:#9b96a8;transition:color .18s}.footer-links a:hover{color:var(--accent-soft)}:focus-visible{outline-offset:3px;outline:2px solid #b49cffe6}@keyframes slow-turn{to{transform:rotate(360deg)}}@media (width<=1120px){:root{--page:min(100% - 64px, 1120px)}.site-header{grid-template-columns:1fr auto;padding-inline:32px}.desktop-nav{display:none}.menu-button{display:grid}.mobile-menu{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:0;pointer-events:none;background:#04050af7;padding:18px 32px 28px;transition:transform .25s,opacity .25s;display:grid;position:absolute;top:78px;left:0;right:0;transform:translateY(-120%)}.mobile-menu.open{opacity:1;pointer-events:auto;transform:translateY(0)}.mobile-menu a{border-bottom:1px solid var(--line);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:17px 0;font-size:13px;display:flex}.mobile-menu svg{width:18px}.mobile-menu-utilities{border-top:1px solid var(--line);font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;gap:18px;margin-top:6px;padding-top:18px;font-size:12px;display:flex}.mobile-menu-utilities a{border-bottom:none;justify-content:flex-start;padding:12px 0}.hero-visual{opacity:.74;left:32%}.project-card{min-height:470px}}@media (width<=820px){:root{--page:calc(100% - 40px)}.site-header{height:70px;padding-inline:20px}.brand{letter-spacing:.22em;gap:11px;font-size:11px}.brand-mark{width:22px;height:22px}.icon-button{display:none}.mobile-menu{padding-inline:20px;top:70px}.hero{background:linear-gradient(#04050a47,#04050ae0 45%,#04050a 76%),radial-gradient(circle at 60% 22%,#5f3dcc24,#0000 36%),#03040a;height:auto;min-height:760px;padding-top:70px}.hero:before{inset:70px 0 0}.hero-visual{opacity:.76;height:48%;inset:70px 0 auto;-webkit-mask-image:linear-gradient(#000 0% 60%,#0000 100%);mask-image:linear-gradient(#000 0% 60%,#0000 100%)}.hero-content{justify-content:flex-end;min-height:760px;padding:290px 0 74px}.hero-intro{margin-bottom:18px}.hero h1{letter-spacing:.035em;font-size:clamp(46px,14vw,72px);line-height:.98}.hero-role{letter-spacing:.11em;margin-top:22px;font-size:11px}.hero-copy{font-size:13px;line-height:1.65}.hero-actions{flex-direction:column;gap:12px;width:100%;margin-top:28px}.button{width:100%;min-width:0}.hero-index{display:none}.about,.projects,.resume{padding-block:90px}.section-heading,.split-heading,.resume{grid-template-columns:1fr;gap:32px}.section-heading{margin-bottom:46px}.section-heading>p,.section-heading>div>p,.resume-intro>p,.contact-inner>p:first-of-type{margin-bottom:16px;font-size:12px}.capability{grid-template-columns:44px minmax(0,1fr);gap:18px;min-height:0;padding:28px 0}.capability-mark{display:none}.capability:hover{padding-inline:0}.capability h3{font-size:19px}.project-grid{grid-template-columns:1fr}.project-card{min-height:430px;padding:26px}.project-content{bottom:26px;left:26px;right:78px}.project-orbit{width:160px;height:160px;right:22px}.project-link-icon{width:46px;height:46px;bottom:22px;right:22px}.resume-intro{position:static}.timeline article{grid-template-columns:1fr;gap:14px}.contact{min-height:580px;padding-block:80px}.contact-mark{width:58px;margin-bottom:28px}.contact small{max-width:320px;line-height:1.6}.site-footer{text-align:center;grid-template-columns:1fr;justify-items:center;padding-block:38px}.site-footer>p,.footer-links{text-align:center;justify-self:center;margin:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.reveal-up,.reveal-section{opacity:1!important;animation:none!important;transform:none!important}}
