:root,:root[data-theme=dark]{--bg:#07080f;--bg-alt:#0b0d18;--surface:#ffffff09;--surface-strong:#11131f;--border:#ffffff14;--border-strong:#ffffff29;--text:#a5abc0;--text-h:#f4f5fb;--muted:#6f7590;--accent:#818cf8;--accent-2:#22d3ee;--accent-soft:#818cf824;--gradient:linear-gradient(120deg, #818cf8 0%, #a78bfa 45%, #22d3ee 100%);--shadow:0 20px 50px -20px #000000b3;--glow:#818cf82e;--grid:#ffffff0a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f7f8fc;--bg-alt:#eef0f8;--surface:#ffffffbf;--surface-strong:#fff;--border:#0f172a14;--border-strong:#0f172a29;--text:#4b5168;--text-h:#0c0f1d;--muted:#7d839a;--accent:#4f46e5;--accent-2:#0891b2;--accent-soft:#4f46e51a;--gradient:linear-gradient(120deg, #4f46e5 0%, #7c3aed 45%, #0891b2 100%);--shadow:0 20px 40px -24px #0f172a40;--glow:#4f46e51f;--grid:#0f172a0d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root{--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--heading:"Space Grotesk", "Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--radius:18px;--header-h:72px}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-h)}body{background:var(--bg);color:var(--text);font:400 16px/1.65 var(--sans);-webkit-font-smoothing:antialiased;margin:0;transition:background .3s,color .3s;overflow-x:hidden}h1,h2,h3{font-family:var(--heading);color:var(--text-h);letter-spacing:-.02em;margin:0;line-height:1.15}p{margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}::selection{background:var(--accent);color:#fff}.container{width:min(1180px,100% - 32px);margin-inline:auto}.accent{color:var(--accent)}.muted{color:var(--muted)}.gradient-text{background:var(--gradient);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:6s linear infinite shine}@keyframes shine{to{background-position:200%}}.icon{flex-shrink:0}.btn{cursor:pointer;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:12px 22px;font-size:15px;font-weight:600;transition:transform .2s,box-shadow .2s,background .2s,border-color .2s;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--gradient);color:#fff;box-shadow:0 10px 30px -10px var(--accent)}.btn-primary:hover{box-shadow:0 16px 40px -12px var(--accent)}.btn-ghost{border-color:var(--border-strong);color:var(--text-h);background:var(--surface)}.btn-ghost:hover{border-color:var(--accent)}.icon-btn{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-h);cursor:pointer;border-radius:12px;place-items:center;transition:border-color .2s,color .2s,transform .2s;display:inline-grid}.icon-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.pills{flex-wrap:wrap;gap:8px;display:flex}.pill{color:var(--text-h);background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;padding:5px 12px;font-size:13px;font-weight:500;transition:border-color .2s,color .2s;display:inline-flex}.pill:hover{border-color:var(--accent)}.pill-soft{background:var(--accent-soft);color:var(--accent);font-family:var(--mono);border-color:#0000;font-size:12px}.pill-accent{background:var(--gradient);color:#fff;border:none;font-weight:600}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:24px;transition:border-color .3s,transform .3s,box-shadow .3s}.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.reveal{opacity:0;transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:none}.header{z-index:50;height:var(--header-h);border-bottom:1px solid #0000;transition:background .3s,border-color .3s;position:fixed;inset:0 0 auto}.header:before{content:"";z-index:-1;opacity:0;background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transition:opacity .3s;position:absolute;inset:0}.header.is-scrolled:before{opacity:1}.header.is-scrolled{border-bottom-color:var(--border)}.scroll-progress{background:var(--gradient);height:2px;transition:width .1s linear;position:absolute;top:0;left:0}.header-inner{justify-content:space-between;align-items:center;gap:24px;height:100%;display:flex}.logo{font-family:var(--heading);color:var(--text-h);align-items:center;gap:10px;font-size:19px;font-weight:700;display:flex}.logo-mark{background:var(--gradient);color:#fff;border-radius:11px;place-items:center;width:38px;height:38px;font-size:15px;display:grid}.nav{align-items:center;gap:4px;display:flex}.nav a:not(.btn){color:var(--text);border-radius:999px;padding:8px 14px;font-size:15px;font-weight:500;transition:color .2s,background .2s;position:relative}.nav a:not(.btn):hover,.nav a.is-active{color:var(--text-h);background:var(--surface)}.nav a.is-active:after{content:"";background:var(--accent);border-radius:50%;width:4px;height:4px;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.nav-cta{margin-left:8px;padding:9px 18px}.header-actions{gap:8px;display:flex}.menu-btn{display:none}.hero{min-height:100svh;padding:calc(var(--header-h) + 56px) 0 64px;--mx:50%;--my:40%;flex-direction:column;justify-content:center;gap:64px;display:flex;position:relative;overflow:hidden}.hero-bg{pointer-events:none;position:absolute;inset:0}.blob{filter:blur(90px);opacity:.45;border-radius:50%;animation:14s ease-in-out infinite float;position:absolute}.blob-1{background:var(--accent);width:520px;height:520px;top:-160px;left:-120px}.blob-2{background:var(--accent-2);opacity:.3;width:460px;height:460px;animation-delay:-7s;bottom:-160px;right:-100px}@keyframes float{0%,to{transform:translate(0)scale(1)}50%{transform:translate(40px,30px)scale(1.08)}}.grid-lines{background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(#000 30%,#0000 75%);mask-image:radial-gradient(#000 30%,#0000 75%)}.spotlight{background:radial-gradient(500px circle at var(--mx) var(--my), var(--glow), transparent 60%);position:absolute;inset:0}.hero-inner{grid-template-columns:1.15fr 1fr;align-items:center;gap:56px;display:grid;position:relative}.hero-inner>*,.about-grid>*,.contact-grid>*{min-width:0}.badge{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-h);border-radius:999px;align-items:center;gap:10px;padding:6px 14px;font-size:13px;font-weight:500;animation:.7s both fadeUp;display:inline-flex}.pulse{background:#22c55e;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #22c55e99}@keyframes pulse{70%{box-shadow:0 0 0 10px #22c55e00}to{box-shadow:0 0 #22c55e00}}.hero h1{letter-spacing:-.035em;margin-top:22px;font-size:clamp(40px,6.4vw,76px);font-weight:700;animation:.7s .1s both fadeUp}.hero-role{font-family:var(--mono);color:var(--text-h);min-height:1.6em;margin-top:16px;font-size:clamp(17px,2vw,22px);animation:.7s .2s both fadeUp}.typed{color:var(--accent-2)}.caret{vertical-align:-.15em;background:var(--accent-2);width:2px;height:1.1em;margin-left:3px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero-summary{max-width:560px;margin-top:20px;font-size:17px;animation:.7s .3s both fadeUp}.hero-ctas{flex-wrap:wrap;gap:12px;margin-top:32px;animation:.7s .4s both fadeUp;display:flex}.hero-meta{color:var(--muted);flex-wrap:wrap;gap:20px;margin-top:28px;font-size:14px;animation:.7s .5s both fadeUp;display:flex}.hero-meta span{align-items:center;gap:6px;display:inline-flex}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}}.hero-visual{animation:.9s .3s both fadeUp;position:relative}.terminal{border-radius:var(--radius);box-shadow:0 40px 80px -30px #0009, 0 0 0 1px #818cf81a, 0 0 80px -20px var(--glow);background:#0d0f1a;border:1px solid #ffffff1a;transition:transform .5s;position:relative;overflow:hidden;transform:perspective(1200px)rotateY(-6deg)rotateX(3deg)}.terminal:hover{transform:none}.terminal-bar{background:#ffffff0a;border-bottom:1px solid #ffffff0f;align-items:center;gap:7px;padding:12px 16px;display:flex}.dot{border-radius:50%;width:11px;height:11px}.dot.red{background:#ff5f57}.dot.yellow{background:#febc2e}.dot.green{background:#28c840}.terminal-title{font-family:var(--mono);color:#6f7590;margin-left:10px;font-size:12px}.terminal-body{font-family:var(--mono);color:#c9cde0;margin:0;padding:22px 22px 26px;font-size:14px;line-height:1.75;overflow-x:auto}.t-prompt{color:#22c55e}.t-key{color:#a5b4fc}.t-str{color:#67e8f9}.t-bool{color:#f9a8d4}.t-cursor{vertical-align:-3px;background:#c9cde0;width:8px;height:16px;animation:1s step-end infinite blink;display:inline-block}.portrait{justify-self:center;width:min(100%,400px);position:relative}.portrait:before{content:"";background:var(--gradient);filter:blur(50px);opacity:.45;z-index:-1;border-radius:40px;position:absolute;inset:8% -6% -4%}.portrait-frame{background:var(--gradient);border-radius:32px;padding:4px;transition:transform .5s cubic-bezier(.2,.7,.2,1);transform:rotate(2deg)}.portrait:hover .portrait-frame{transform:rotate(0)scale(1.01)}.portrait-frame img{aspect-ratio:4/5;object-fit:cover;filter:grayscale()contrast(1.05);border-radius:28px;width:100%;height:auto;transition:filter .5s;display:block}.portrait:hover .portrait-frame img{filter:grayscale(.6)contrast(1.05)}.portrait-tag{background:var(--surface-strong);border:1px solid var(--border-strong);box-shadow:var(--shadow);border-radius:16px;align-items:center;gap:12px;padding:12px 16px;display:flex;position:absolute;bottom:28px;left:-24px}.portrait-tag strong{color:var(--text-h);font-size:14px;display:block}.portrait-tag span:not(.pulse){color:var(--muted);font-size:12px;display:block}.floating-chip{color:var(--text-h);background:var(--surface-strong);border:1px solid var(--border-strong);box-shadow:var(--shadow);border-radius:12px;padding:8px 14px;font-size:13px;font-weight:600;animation:5s ease-in-out infinite bob;position:absolute}.chip-1{top:-18px;right:24px}.chip-2{animation-delay:-1.6s;bottom:40px;left:-28px}.chip-3{animation-delay:-3.2s;bottom:-18px;right:48px}@keyframes bob{50%{transform:translateY(-10px)}}.stats{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);grid-template-columns:repeat(4,1fr);animation:.8s .6s both fadeUp;display:grid;position:relative}.stat{flex-direction:column;gap:4px;padding:26px 24px;display:flex}.stat+.stat{border-left:1px solid var(--border)}.stat-value{font-family:var(--heading);color:var(--text-h);font-size:clamp(30px,3.4vw,42px);font-weight:700;line-height:1}.stat-label{color:var(--muted);font-size:14px}.section{padding:110px 0;position:relative}.section-alt{background:var(--bg-alt)}.section-head{max-width:680px;margin-bottom:52px}.eyebrow{font-family:var(--mono);color:var(--accent);letter-spacing:.04em;margin-bottom:14px;font-size:13px;font-weight:500;display:inline-block}.section-head h2{font-size:clamp(30px,4vw,46px);font-weight:700}.section-sub{margin-top:14px;font-size:17px}.about-grid{grid-template-columns:1.3fr 1fr;grid-template-areas:"copy photo""facts facts";align-items:center;gap:40px 48px;display:grid}.about-grid>.portrait{grid-area:photo}.about-copy{grid-area:copy}.about-facts{grid-area:facts}.about-copy p{margin-bottom:18px;font-size:17px}.interests{flex-wrap:wrap;align-items:center;gap:8px;margin-top:26px;font-size:14px;display:flex}.about-facts{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.fact{align-items:center;gap:16px;padding:18px 20px;display:flex}.fact:hover{transform:translateY(-4px)}.fact-icon{background:var(--accent-soft);width:46px;height:46px;color:var(--accent);border-radius:13px;flex-shrink:0;place-items:center;display:grid}.fact-label{color:var(--muted);font-size:13px;display:block}.fact-value{color:var(--text-h);font-weight:600;display:block}.skills-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.skill-card:hover{transform:translateY(-4px)}.skill-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.skill-head h3{font-size:18px}.skill-icon{background:var(--gradient);color:#fff;border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.timeline{gap:28px;padding-left:36px;display:grid;position:relative}.timeline:before{content:"";background:linear-gradient(var(--accent), var(--accent-2), transparent);width:2px;position:absolute;top:10px;bottom:10px;left:8px}.timeline-item{position:relative}.timeline-dot{background:var(--bg);border:3px solid var(--accent);width:18px;height:18px;box-shadow:0 0 0 6px var(--accent-soft);border-radius:50%;position:absolute;top:28px;left:-36px}.timeline-dot.dot-muted{border-color:var(--accent-2)}.exp-card{padding:28px}.exp-top{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.exp-top h3{font-size:22px}.exp-org{color:var(--accent);margin-top:4px;font-weight:600}.checklist{gap:10px;margin:0;padding:0;list-style:none;display:grid}.checklist li{align-items:flex-start;gap:10px;display:flex}.checklist .icon{color:var(--accent-2);margin-top:4px}.mini-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.mini{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;padding:14px 16px;font-size:14px;display:flex}.mini strong{color:var(--text-h)}.mini span{color:var(--muted)}.filters{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.filter{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:9px 16px;font-size:14px;font-weight:500;transition:all .2s;display:inline-flex}.filter:hover{color:var(--text-h);border-color:var(--border-strong)}.filter.is-active{background:var(--gradient);color:#fff;border-color:#0000}.filter-count{font-family:var(--mono);opacity:.75;font-size:12px}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));align-items:start;gap:18px;display:grid}.project{--mx:50%;--my:0%;flex-direction:column;gap:14px;animation:.5s both cardIn;display:flex;position:relative;overflow:hidden}.project:nth-child(2){animation-delay:50ms}.project:nth-child(3){animation-delay:.1s}.project:nth-child(4){animation-delay:.15s}.project:nth-child(5){animation-delay:.2s}.project:nth-child(n+6){animation-delay:.25s}@keyframes cardIn{0%{opacity:0;transform:translateY(20px)scale(.98)}}.project:before{content:"";background:radial-gradient(360px circle at var(--mx) var(--my), var(--glow), transparent 60%);opacity:0;pointer-events:none;transition:opacity .3s;position:absolute;inset:0}.project:hover:before{opacity:1}.project:hover{transform:translateY(-4px)}.project.is-featured{border-color:color-mix(in srgb, var(--accent) 35%, var(--border))}.project-top{justify-content:space-between;align-items:center;display:flex}.project-num{font-family:var(--mono);color:var(--muted);font-size:13px}.project h3{font-size:20px}.project-summary{font-size:15px}.project-details{grid-template-rows:0fr;transition:grid-template-rows .35s;display:grid}.project-details>*{overflow:hidden}.project.is-open .project-details{grid-template-rows:1fr}.project-details .checklist{gap:8px;padding-top:4px;font-size:14px}.project-org{color:var(--accent);margin-top:-8px;font-size:14px;font-weight:600}.project-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding-top:14px;display:flex;position:relative}.project-links{flex-wrap:wrap;gap:8px;display:flex}.project-link,.project-private{border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:13px;font-weight:600;display:inline-flex}.project-link{color:var(--text-h);border:1px solid var(--border-strong);transition:border-color .2s,color .2s}.project-link:hover{color:var(--accent);border-color:var(--accent)}.project-private{color:var(--muted)}.resume-card:hover{border-color:var(--accent)}.project-toggle{color:var(--accent);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:14px;font-weight:600;display:inline-flex;position:relative}.project-toggle .icon{transition:transform .3s}.project.is-open .project-toggle .icon{transform:rotate(180deg)}.edu-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.edu-card{position:relative;overflow:hidden}.edu-card:hover{transform:translateY(-4px)}.edu-score{font-family:var(--heading);background:var(--gradient);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:18px;font-size:44px;font-weight:700;line-height:1}.edu-card h3{margin-bottom:6px;font-size:19px}.edu-card p{font-size:14px}.achieve-row{grid-template-columns:repeat(2,1fr);gap:18px;margin-top:18px;display:grid}.achieve{background:linear-gradient(120deg, var(--accent-soft), transparent 70%), var(--surface);align-items:center;gap:18px;display:flex}.achieve h3{font-size:19px}.achieve-icon{background:var(--gradient);color:#fff;border-radius:16px;flex-shrink:0;place-items:center;width:56px;height:56px;display:grid}.two-col{grid-template-columns:1fr 1fr;gap:18px;margin-top:18px;display:grid}.list-title{align-items:center;gap:10px;margin-bottom:18px;font-size:18px;display:flex}.list-title .icon{color:var(--accent)}.plain-list{margin:0;padding:0;list-style:none}.plain-list li{border-bottom:1px dashed var(--border);color:var(--text-h);justify-content:space-between;gap:16px;padding:11px 0;font-size:15px;display:flex}.plain-list li:last-child{border-bottom:none}.plain-list .muted{text-align:right}.contact-grid{grid-template-columns:1fr 1.2fr;align-items:start;gap:24px;display:grid}.contact-cards{gap:14px;display:grid;position:relative}.contact-card{align-items:center;gap:16px;padding:18px 20px;display:flex}.contact-text{flex:1;min-width:0}.contact-text a,.contact-text>span:last-child{color:var(--text-h);overflow-wrap:anywhere;font-weight:600;display:block}.contact-text a:hover{color:var(--accent)}.toast{color:var(--accent-2);font-size:14px}.contact-form{gap:16px;padding:28px;display:grid}.contact-form label{color:var(--text-h);gap:6px;font-size:14px;font-weight:500;display:grid}.contact-form input,.contact-form textarea{border:1px solid var(--border-strong);background:var(--bg);width:100%;color:var(--text-h);resize:vertical;border-radius:12px;padding:12px 14px;transition:border-color .2s,box-shadow .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.contact-form .btn{justify-self:start}.footer{border-top:1px solid var(--border);padding:28px 0;font-size:14px}.footer-inner{justify-content:space-between;align-items:center;gap:16px;display:flex}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=1024px){.hero-inner,.about-grid,.contact-grid{grid-template-columns:1fr}.about-grid{grid-template-areas:"photo""copy""facts"}.about-facts{grid-template-columns:repeat(2,1fr)}.hero-visual{max-width:560px}.skills-grid,.mini-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=880px){.menu-btn{display:inline-grid}.nav{inset:var(--header-h) 0 0;background:var(--bg);flex-direction:column;align-items:stretch;gap:4px;padding:24px 16px;transition:transform .35s cubic-bezier(.2,.7,.2,1);position:fixed;transform:translate(100%)}.nav.is-open{transform:none}.nav a:not(.btn){border-radius:12px;padding:14px 16px;font-size:18px}.nav a.is-active:after{display:none}.nav-cta{justify-content:center;margin:12px 0 0;padding:14px}.stats{grid-template-columns:repeat(2,1fr)}.stat:nth-child(3){border-left:none}.stat:nth-child(n+3){border-top:1px solid var(--border)}.edu-grid,.achieve-row,.two-col{grid-template-columns:1fr}}@media (width<=600px){.section{padding:80px 0}.hero{gap:48px}.skills-grid,.mini-grid,.about-facts,.projects-grid{grid-template-columns:1fr}.terminal{transform:none}.terminal-body{padding:18px;font-size:12px}.chip-2,.portrait-tag{left:-6px}.exp-top{flex-direction:column}.timeline{padding-left:28px}.timeline-dot{left:-28px}.timeline:before{left:6px}.stat{padding:20px 16px}.logo-text{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}}
