:root,html[data-theme=light]{--bg:#e6eae4;--bg-elevated:#f3f5f1;--bg-panel:#fbfcf9;--ink:#12161c;--line:#12161c1f;--line-strong:#12161c38;--text:#12161c;--text-muted:#4a5560;--text-dim:#7a858f;--cyan:#c23b22;--cyan-dim:#c23b221f;--amber:#1a5f4a;--amber-dim:#1a5f4a1f;--violet:#2f3b4a;--nav-glass:#e6eae4e0;--mobile-glass:#f3f5f1f7;--overlay:#12161c59;--grid-line:#12161c0d;--shadow-ink:#12161c1f;--card-wash:#e6eae4b3;--marquee-em:#ff6b4a;--scene-ink:#12161c;--scene-signal:#c23b22;--scene-oxide:#1a5f4a;--font-display:"Bricolage Grotesque", system-ui, sans-serif;--font-body:"Public Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--nav-h:68px;--ease-out:cubic-bezier(.2, .8, .2, 1)}html[data-theme=dark]{--bg:#0e1116;--bg-elevated:#161b22;--bg-panel:#1a212b;--ink:#e8eef4;--line:#e8eef41a;--line-strong:#e8eef433;--text:#e8eef4;--text-muted:#9aa6b5;--text-dim:#6d7a8a;--cyan:#e85d3d;--cyan-dim:#e85d3d29;--amber:#3dba8e;--amber-dim:#3dba8e24;--violet:#8b9bb4;--nav-glass:#0e1116e0;--mobile-glass:#0e1116f5;--overlay:#0000008c;--grid-line:#e8eef40d;--shadow-ink:#00000073;--card-wash:#0e11168c;--marquee-em:#ff8a6a;--scene-ink:#e8eef4;--scene-signal:#e85d3d;--scene-oxide:#3dba8e}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--cyan-dim) transparent}body{font-family:var(--font-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;cursor:auto;line-height:1.6;transition:background-color .35s,color .35s;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}::selection{background:var(--cyan);color:#fff}.noise{pointer-events:none;z-index:9998;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}html[data-theme=dark] .noise{opacity:.06;mix-blend-mode:soft-light}.grid-bg{pointer-events:none;z-index:0;background-image:linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);background-size:48px 48px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000 0% 40%,#0000 100%);mask-image:linear-gradient(#000 0% 40%,#0000 100%)}.aurora{pointer-events:none;z-index:0;background:radial-gradient(ellipse 45% 30% at 90% 8%, color-mix(in srgb, var(--cyan) 14%, transparent), transparent 55%), radial-gradient(ellipse 40% 35% at 8% 70%, color-mix(in srgb, var(--amber) 12%, transparent), transparent 55%);animation:none;position:fixed;inset:0}.app-shell{z-index:1;position:relative}#root{min-height:100vh}a{color:inherit;text-decoration:none}img,canvas{max-width:100%;display:block}.section{max-width:1280px;margin:0 auto;padding:clamp(4.5rem,10vw,8rem) clamp(1.25rem,4vw,3.5rem);position:relative}.section-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);border:1px solid color-mix(in srgb, var(--cyan) 35%, transparent);background:var(--cyan-dim);align-items:center;gap:.55rem;margin-bottom:.85rem;padding:.3rem .55rem;font-size:.68rem;display:inline-flex}.section-label:before{content:"?";color:var(--cyan);font-size:.45rem}.section-title{font-family:var(--font-display);letter-spacing:-.03em;margin-bottom:.75rem;font-size:clamp(2rem,4.5vw,3.25rem);font-weight:700;line-height:1.1}.section-lead{color:var(--text-muted);max-width:36rem;margin-bottom:3rem;font-size:1.05rem}.cursor-dot,.cursor-ring{display:none}.nav{z-index:100;height:var(--nav-h);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;padding:0 clamp(1.25rem,4vw,3.5rem);transition:background .4s,border-color .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s;display:flex;position:fixed;top:0;left:0;right:0}.nav.scrolled{background:var(--nav-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom-color:var(--line)}.nav-links a,.nav-links button{color:var(--text-muted);padding:.5rem .85rem;font-size:.85rem;font-weight:500;transition:color .25s;position:relative}.nav-links a:hover,.nav-links a.active,.nav-links button:hover,.nav-links button.active{color:var(--text)}.nav-brand{font-family:var(--font-display);letter-spacing:.04em;align-items:center;gap:.55rem;font-size:1.15rem;font-weight:800;display:flex}.nav-brand span{color:var(--cyan)}.nav-links{align-items:center;gap:.25rem;list-style:none;display:flex}.nav-actions{align-items:center;gap:.55rem;display:flex}.nav-theme{border:1px solid var(--line-strong);width:36px;height:36px;color:var(--text-muted);justify-content:center;align-items:center;transition:color .25s,border-color .25s,background .25s,transform .25s;display:inline-flex}.nav-theme:hover{color:var(--text);border-color:var(--ink);background:color-mix(in srgb, var(--ink) 6%, transparent);transform:rotate(-8deg)}.nav-mobile-tools{align-items:center;gap:.35rem;display:none}.nav-github{border:1px solid var(--line-strong);width:36px;height:36px;color:var(--text-muted);justify-content:center;align-items:center;transition:color .25s,border-color .25s,background .25s;display:inline-flex}.nav-github:hover{color:var(--cyan);border-color:var(--cyan);background:var(--cyan-dim)}.nav-cta{border:1px solid var(--line-strong);background:var(--cyan-dim);color:var(--cyan);transition:background .3s, border-color .3s, transform .3s var(--ease-out);align-items:center;gap:.4rem;padding:.55rem 1.1rem;font-size:.82rem;font-weight:600;display:inline-flex}.nav-cta:hover{border-color:var(--cyan);background:#2ee6d640;transform:translateY(-1px)}.nav-toggle{flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;display:none}.nav-toggle span{background:var(--text);width:20px;height:1.5px;transition:transform .3s,opacity .3s;display:block}@media (width<=860px){.nav-links,.nav-actions{display:none}.nav-mobile-tools,.nav-toggle{display:flex}.nav-mobile{inset:var(--nav-h) 0 0 0;background:var(--mobile-glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:99;flex-direction:column;gap:.5rem;padding:2rem;display:flex;position:fixed}.nav-mobile a,.nav-mobile button{font-family:var(--font-display);border-bottom:1px solid var(--line);text-align:left;width:100%;padding:.75rem 0;font-size:1.75rem;font-weight:600}}.hero{min-height:100vh;padding:calc(var(--nav-h) + 2rem) clamp(1.25rem, 4vw, 3.5rem) 4rem;grid-template-columns:1fr 1fr;align-items:center;gap:2rem;max-width:1400px;margin:0 auto;display:grid;position:relative}.hero-copy{z-index:2;position:relative}.hero-status{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--amber);background:var(--amber-dim);border:1px solid #1a5f4a59;align-items:center;gap:.55rem;margin-bottom:1.5rem;padding:.4rem .85rem;font-size:.72rem;display:inline-flex}.hero-status-dot{background:var(--amber);width:7px;height:7px;box-shadow:none;border-radius:0;animation:none}.hero-brand{font-family:var(--font-display);letter-spacing:-.04em;white-space:nowrap;margin-bottom:1rem;font-size:clamp(2.2rem,7.5vw,5.75rem);font-weight:800;line-height:.92}.hero-brand .accent{color:var(--cyan);display:inline-block}.hero-role{font-family:var(--font-display);color:var(--text-muted);max-width:34rem;margin-bottom:1.25rem;font-size:clamp(1.05rem,2vw,1.35rem);font-weight:600;line-height:1.35}.hero-tagline{color:var(--text-dim);max-width:26rem;margin-bottom:2.25rem;font-size:1rem}.hero-actions{flex-wrap:wrap;gap:.85rem;margin-bottom:2.5rem;display:flex}.btn-primary{background:var(--ink);color:var(--bg);letter-spacing:.02em;transition:transform .35s var(--ease-out), background .25s;align-items:center;gap:.5rem;padding:.9rem 1.5rem;font-size:.9rem;font-weight:700;display:inline-flex}.btn-primary:hover{background:var(--cyan);color:#fff;box-shadow:none;transform:translateY(-2px)}.btn-ghost{border:1px solid var(--line-strong);color:var(--text);transition:border-color .3s, background .3s, transform .35s var(--ease-out);align-items:center;gap:.5rem;padding:.9rem 1.5rem;font-size:.9rem;font-weight:600;display:inline-flex}.btn-ghost:hover{border-color:var(--text-muted);background:#ffffff08;transform:translateY(-2px)}.hero-meta{font-family:var(--font-mono);color:var(--text-dim);letter-spacing:.04em;flex-wrap:wrap;gap:1.5rem;font-size:.72rem;display:flex}.hero-meta strong{color:var(--text-muted);font-weight:500}.hero-visual{height:min(72vh,620px);min-height:380px;position:relative}.hero-visual-stage{background:0 0;position:absolute;inset:-8% -6%;overflow:visible;-webkit-mask-image:radial-gradient(72% 68% at 55% 48%,#000 28%,#0000 78%);mask-image:radial-gradient(72% 68% at 55% 48%,#000 28%,#0000 78%)}.hero-visual-stage canvas{width:100%!important;height:100%!important}.hero-visual-caption{z-index:2;pointer-events:none;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);justify-content:space-between;gap:1rem;font-size:.65rem;display:flex;position:absolute;bottom:14%;left:14%;right:14%}@media (width<=960px){.hero{padding-top:calc(var(--nav-h) + 1.5rem);grid-template-columns:1fr;min-height:auto}.hero-visual{order:-1;height:42vh;min-height:280px}.hero-visual-stage{inset:-4% -2%;-webkit-mask-image:radial-gradient(80% 75% at 50% 45%,#000 35%,#0000 82%);mask-image:radial-gradient(80% 75% at 50% 45%,#000 35%,#0000 82%)}.hero-visual-caption{bottom:8%;left:10%;right:10%}}.about-grid{grid-template-columns:1.2fr .8fr;align-items:start;gap:3rem;display:grid}.about-text p{color:var(--text-muted);margin-bottom:1.25rem;font-size:1.05rem}.stat-grid{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;display:grid}.stat-cell{background:var(--bg-elevated);padding:1.5rem 1.25rem;transition:background .3s}.stat-cell:hover{background:var(--bg-panel)}.stat-value{font-family:var(--font-display);color:var(--cyan);letter-spacing:-.03em;margin-bottom:.4rem;font-size:2rem;font-weight:700;line-height:1}.stat-label{color:var(--text-dim);font-size:.8rem}@media (width<=800px){.about-grid{grid-template-columns:1fr;gap:2rem}}.skills-layout{grid-template-columns:minmax(280px,380px) 1fr;align-items:start;gap:2.5rem;display:grid}.radar-panel{border:1px solid var(--line);background:linear-gradient(165deg, var(--bg-panel), var(--card-wash));padding:1.25rem 1rem 1rem;position:relative;overflow:hidden}.radar-glow{pointer-events:none;background:radial-gradient(circle,#2ee6d624,#0000 65%);animation:5s ease-in-out infinite radar-pulse;position:absolute;inset:10% 15%}@keyframes radar-pulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.radar-wrap{aspect-ratio:1;z-index:1;width:100%;max-width:380px;margin:0 auto;position:relative}.radar-metrics{z-index:1;gap:.55rem;margin-top:.5rem;display:grid;position:relative}.radar-metric{text-align:left;border:1px solid #0000;width:100%;padding:.45rem .55rem;transition:border-color .25s,background .25s,opacity .25s}.radar-metric:hover,.radar-metric.active{border-color:var(--line-strong);background:#ffffff08}.radar-metric-top{font-family:var(--font-mono);letter-spacing:.04em;color:var(--text-muted);justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.35rem;font-size:.68rem;display:flex}.radar-metric-top strong{font-size:.78rem}.radar-bar{background:#ffffff0f;height:3px;overflow:hidden}.radar-bar-fill{height:100%;box-shadow:none}.skill-groups{flex-direction:column;gap:1.25rem;min-width:0;display:flex}.skill-filter{flex-wrap:wrap;gap:.4rem;display:flex}.skill-filter-btn{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);color:var(--text-dim);background:#ffffff05;padding:.45rem .7rem;font-size:.65rem;transition:color .25s,border-color .25s,background .25s,transform .25s}.skill-filter-btn:hover{color:var(--text);border-color:var(--line-strong);transform:translateY(-1px)}.skill-filter-btn.active{color:var(--cyan);border-color:var(--cyan);background:var(--cyan-dim)}.skill-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.skill-card{border:1px solid var(--line);background:linear-gradient(160deg, var(--bg-panel), var(--card-wash));transition:border-color .3s, transform .35s var(--ease-out);padding:1.15rem 1.15rem 1.25rem;position:relative;overflow:hidden}.skill-card:before{content:"";background:var(--skill-accent,var(--cyan));transform-origin:0;height:2px;transition:transform .4s var(--ease-out);position:absolute;top:0;left:0;right:0;transform:scaleX(.35)}.skill-card:hover{border-color:var(--line-strong);transform:translateY(-3px)}.skill-card:hover:before{transform:scaleX(1)}.skill-card-head{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.95rem;display:flex}.skill-card-head h3{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);margin-bottom:.2rem;font-size:1rem;font-weight:700}.skill-card-head p{color:var(--text-dim);font-size:.78rem}.skill-count{font-family:var(--font-mono);color:var(--skill-accent,var(--cyan));border:1px solid color-mix(in srgb, var(--skill-accent,var(--cyan)) 40%, transparent);background:color-mix(in srgb, var(--skill-accent,var(--cyan)) 12%, transparent);flex-shrink:0;justify-content:center;align-items:center;min-width:1.75rem;height:1.75rem;font-size:.72rem;display:inline-flex}.skill-chips{flex-wrap:wrap;gap:.4rem;display:flex}.skill-chip{border:1px solid var(--line);color:var(--text-muted);background:#ffffff05;align-items:center;gap:.35rem;padding:.4rem .65rem;font-size:.78rem;transition:border-color .25s,color .25s,background .25s,box-shadow .25s;display:inline-flex}.skill-chip:hover{border-color:var(--skill-accent,var(--cyan));color:var(--text);background:color-mix(in srgb, var(--skill-accent,var(--cyan)) 12%, transparent);box-shadow:none}.skill-chip.featured{border-color:color-mix(in srgb, var(--skill-accent,var(--cyan)) 45%, transparent);color:var(--text);background:color-mix(in srgb, var(--skill-accent,var(--cyan)) 10%, transparent)}.skill-chip-dot{background:var(--skill-accent,var(--cyan));width:5px;height:5px;box-shadow:none;border-radius:0;flex-shrink:0}@media (width<=1100px){.skills-layout{grid-template-columns:1fr}.radar-panel{max-width:480px;margin:0 auto}}@media (width<=700px){.skill-cards{grid-template-columns:1fr}}.timeline{flex-direction:column;gap:1.35rem;display:flex;position:relative}.timeline-item{grid-template-columns:28px 1fr;align-items:stretch;gap:1.1rem;transition:opacity .35s,filter .35s;display:grid;position:relative}.timeline-item.is-dim{opacity:.78;filter:none}.timeline-rail{justify-content:center;display:flex;position:relative}.timeline-rail:before{content:"";background:linear-gradient(180deg, var(--exp-accent,var(--cyan)), color-mix(in srgb, var(--exp-accent,var(--cyan)) 20%, transparent));opacity:.55;width:2px;position:absolute;top:18px;bottom:-1.35rem;left:50%;transform:translate(-50%)}.timeline-item:last-child .timeline-rail:before{display:none}.timeline-dot{z-index:1;border:2px solid var(--exp-accent,var(--cyan));background:var(--bg);width:16px;height:16px;box-shadow:0 0 0 4px var(--bg);border-radius:50%;margin-top:1.35rem;position:relative}.timeline-item.current .timeline-dot{background:var(--exp-accent,var(--cyan));box-shadow:0 0 0 4px var(--bg)}.timeline-pulse{border:1px solid var(--exp-accent,var(--cyan));border-radius:50%;animation:2s ease-out infinite exp-pulse;position:absolute;inset:-6px}@keyframes exp-pulse{0%{opacity:.8;transform:scale(.7)}to{opacity:0;transform:scale(1.8)}}.exp-card{border:1px solid var(--line);background:linear-gradient(160deg, var(--bg-panel), var(--card-wash));transition:border-color .35s, box-shadow .35s, transform .35s var(--ease-out);padding:1.35rem 1.4rem 1.45rem;position:relative;overflow:hidden}.timeline-item.is-hot .exp-card{border-color:color-mix(in srgb, var(--exp-accent,var(--cyan)) 50%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--exp-accent,var(--cyan)) 14%, transparent), 0 24px 50px #00000059, 0 0 40px color-mix(in srgb, var(--exp-accent,var(--cyan)) 10%, transparent)}.exp-card-glow{background:radial-gradient(circle, color-mix(in srgb, var(--exp-accent,var(--cyan)) 22%, transparent), transparent 70%);pointer-events:none;opacity:.7;border-radius:50%;width:220px;height:220px;position:absolute;top:-40%;right:-10%}.exp-top{z-index:1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem;display:flex;position:relative}.exp-badges{flex-wrap:wrap;gap:.4rem;display:flex}.exp-live,.exp-focus{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid color-mix(in srgb, var(--exp-accent,var(--cyan)) 40%, transparent);padding:.28rem .55rem;font-size:.62rem}.exp-live{color:var(--exp-accent,var(--cyan));background:color-mix(in srgb, var(--exp-accent,var(--cyan)) 14%, transparent)}.exp-focus{color:var(--amber);background:var(--amber-dim);border-color:#ffb02059}.exp-period{font-family:var(--font-mono);color:var(--exp-accent,var(--cyan));letter-spacing:.04em;font-size:.72rem}.exp-header{z-index:1;margin-bottom:1.1rem;position:relative}.exp-role{font-family:var(--font-display);letter-spacing:-.02em;margin-bottom:.35rem;font-size:clamp(1.25rem,2.4vw,1.55rem);font-weight:700}.exp-company{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.92rem;display:flex}.exp-company strong{color:var(--text);font-weight:600}.exp-sep{color:var(--text-dim)}.exp-list{z-index:1;flex-direction:column;gap:.7rem;margin-bottom:1.2rem;list-style:none;display:flex;position:relative}.exp-list li{color:var(--text);align-items:flex-start;gap:.75rem;font-size:.9rem;line-height:1.55;display:flex}.exp-bullet{background:var(--exp-accent,var(--cyan));width:8px;height:8px;box-shadow:0 0 10px color-mix(in srgb, var(--exp-accent,var(--cyan)) 50%, transparent);clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);flex-shrink:0;margin-top:.45rem}.exp-tags{z-index:1;border-top:1px solid var(--line);flex-wrap:wrap;gap:.4rem;padding-top:1rem;display:flex;position:relative}.exp-tags span{font-family:var(--font-mono);letter-spacing:.05em;border:1px solid color-mix(in srgb, var(--exp-accent,var(--cyan)) 28%, var(--line));color:var(--text-muted);background:color-mix(in srgb, var(--exp-accent,var(--cyan)) 7%, transparent);padding:.35rem .55rem;font-size:.62rem;transition:color .25s,border-color .25s}.timeline-item.is-hot .exp-tags span{color:var(--text);border-color:color-mix(in srgb, var(--exp-accent,var(--cyan)) 45%, transparent)}@media (width<=640px){.timeline-item{grid-template-columns:20px 1fr;gap:.75rem}.exp-card{padding:1.1rem 1rem 1.2rem}.exp-top{flex-direction:column;align-items:flex-start}}.projects-section{overflow:visible}.projects-rail-wrap{margin-left:calc(-1*clamp(1.25rem,4vw,3.5rem));margin-right:calc(-1*clamp(1.25rem,4vw,3.5rem));padding:.5rem 0 1.5rem;overflow:visible}.projects-rail{will-change:transform;gap:1.25rem;width:max-content;padding:0 clamp(1.25rem,4vw,3.5rem);display:flex}.projects-rail .project-card{flex-shrink:0;width:min(380px,78vw)}.projects-grid{display:none}.project-card{border:1.5px solid var(--line-strong);background:var(--bg-panel);height:100%;transition:border-color .35s, box-shadow .35s, opacity .35s, transform .35s var(--ease-out);flex-direction:column;display:flex;position:relative;overflow:hidden}.project-card.is-dim{opacity:.72;filter:none}.project-card.is-hot{border-color:color-mix(in srgb, var(--accent,var(--cyan)) 55%, transparent);box-shadow:8px 10px 0 color-mix(in srgb, var(--accent,var(--cyan)) 18%, transparent)}.project-visual{border-bottom:1px solid var(--line);background:linear-gradient(145deg, color-mix(in srgb, var(--accent,var(--cyan)) 16%, transparent), var(--card-wash) 55%, var(--card-wash));flex-direction:column;justify-content:space-between;min-height:148px;padding:1.1rem 1.25rem;display:flex;position:relative;overflow:hidden}.project-orb{pointer-events:none;filter:blur(2px);border-radius:50%;position:absolute}.project-orb-a{background:radial-gradient(circle, color-mix(in srgb, var(--accent,var(--cyan)) 45%, transparent), transparent 70%);width:140px;height:140px;animation:7s ease-in-out infinite project-float;top:-40px;right:-30px}.project-orb-b{background:radial-gradient(circle, color-mix(in srgb, var(--accent,var(--cyan)) 22%, transparent), transparent 70%);width:90px;height:90px;animation:9s ease-in-out infinite reverse project-float;bottom:-30px;left:10%}@keyframes project-float{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-8px,6px)scale(1.08)}}.project-grid-lines{opacity:.7;pointer-events:none;background-image:linear-gradient(#12161c0f 1px,#0000 1px),linear-gradient(90deg,#12161c0f 1px,#0000 1px);background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 90%);mask-image:linear-gradient(#000,#0000 90%)}.project-visual-top{z-index:1;justify-content:space-between;align-items:center;gap:.75rem;display:flex;position:relative}.project-index{font-family:var(--font-mono);letter-spacing:.14em;color:var(--text-dim);font-size:.68rem}.project-status{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent,var(--cyan));border:1px solid color-mix(in srgb, var(--accent,var(--cyan)) 40%, transparent);background:color-mix(in srgb, var(--accent,var(--cyan)) 12%, transparent);padding:.28rem .5rem;font-size:.62rem}.project-mark{z-index:1;font-family:var(--font-display);letter-spacing:-.04em;color:var(--text);text-shadow:none;margin:.85rem 0 .35rem;font-size:clamp(2.4rem,4vw,3.1rem);font-weight:800;line-height:1;position:relative}.project-focus{z-index:1;font-family:var(--font-mono);letter-spacing:.08em;color:var(--accent,var(--cyan));opacity:1;font-size:.68rem;position:relative}.project-body{background:var(--bg-panel);color:var(--text);flex-direction:column;flex:1;gap:0;padding:1.35rem 1.35rem 1.5rem;display:flex}.project-title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);margin-bottom:.7rem;font-size:1.2rem;font-weight:700;line-height:1.25}.project-desc{color:var(--text-muted);margin-bottom:1.15rem;font-size:.9rem;line-height:1.55}.project-details{flex-direction:column;flex:1;gap:.55rem;margin-bottom:1.35rem;list-style:none;display:flex}.project-details li{color:var(--text);align-items:flex-start;gap:.65rem;font-size:.84rem;line-height:1.45;display:flex}.project-check{border:1px solid color-mix(in srgb, var(--accent,var(--cyan)) 55%, transparent);background:color-mix(in srgb, var(--accent,var(--cyan)) 12%, transparent);flex-shrink:0;width:14px;height:14px;margin-top:.15rem;position:relative}.project-check:after{content:"";border-right:1.5px solid var(--accent,var(--cyan));border-bottom:1.5px solid var(--accent,var(--cyan));width:5px;height:8px;position:absolute;top:1px;left:3px;transform:rotate(40deg)}.project-stack{border-top:1px solid var(--line);flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:1rem;display:flex}.project-stack span{font-family:var(--font-mono);letter-spacing:.05em;border:1px solid color-mix(in srgb, var(--accent,var(--cyan)) 30%, var(--line));color:var(--text);background:color-mix(in srgb, var(--accent,var(--cyan)) 8%, var(--bg-elevated));padding:.35rem .55rem;font-size:.62rem;transition:color .25s,border-color .25s,background .25s}.project-card:hover .project-stack span{color:var(--text);border-color:color-mix(in srgb, var(--accent,var(--cyan)) 45%, transparent)}@media (width<=960px){.projects-rail{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:.5rem;overflow-x:auto;transform:none!important}.projects-rail .project-card{scroll-snap-align:start}}@media (width>=961px) and (width<=1100px){.projects-rail .project-card{width:min(360px,60vw)}}.pub-list{background:var(--line);border:1px solid var(--line);flex-direction:column;gap:1px;margin-bottom:2.5rem;display:flex}.pub-item{background:var(--bg-elevated);grid-template-columns:auto 1fr auto;align-items:start;gap:1.25rem;padding:1.5rem 1.75rem;transition:background .3s;display:grid}.pub-item:hover{background:var(--bg-panel)}.pub-index{font-family:var(--font-mono);color:var(--cyan);padding-top:.2rem;font-size:.75rem}.pub-title{font-family:var(--font-display);letter-spacing:-.01em;margin-bottom:.35rem;font-size:1.1rem;font-weight:600}.pub-venue{color:var(--text-dim);font-size:.85rem}.pub-badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber);white-space:nowrap;border:1px solid #ffb02059;padding:.3rem .55rem;font-size:.65rem}.edu-block{grid-template-columns:1fr 1fr;gap:1.25rem;display:grid}.edu-card,.achieve-card{border:1px solid var(--line);background:var(--bg-elevated);padding:1.75rem}.edu-card h3,.achieve-card h3{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin-bottom:1rem;font-size:.7rem}.edu-degree{font-family:var(--font-display);margin-bottom:.35rem;font-size:1.2rem;font-weight:700}.edu-school{color:var(--text-muted);margin-bottom:.5rem}.edu-period{font-family:var(--font-mono);color:var(--text-dim);font-size:.75rem}.achieve-card ul{flex-direction:column;gap:.75rem;list-style:none;display:flex}.achieve-card li{color:var(--text-muted);padding-left:1rem;font-size:.92rem;position:relative}.achieve-card li:before{content:"";background:var(--amber);width:5px;height:5px;position:absolute;top:.55rem;left:0}@media (width<=800px){.pub-item{grid-template-columns:auto 1fr}.pub-badge{grid-column:2}.edu-block{grid-template-columns:1fr}}.contact-section{text-align:center;padding-bottom:6rem}.contact-section .section-title{max-width:18ch;margin-left:auto;margin-right:auto}.contact-section .section-lead{margin-left:auto;margin-right:auto}.contact-links{flex-wrap:wrap;justify-content:center;gap:1rem;margin-bottom:3rem;display:flex}.contact-link{border:1px solid var(--line-strong);background:var(--bg-elevated);transition:border-color .3s, transform .35s var(--ease-out), background .3s;align-items:center;gap:.6rem;padding:1rem 1.5rem;font-weight:600;display:inline-flex}.contact-link:hover{border-color:var(--cyan);background:var(--cyan-dim);transform:translateY(-3px)}.contact-link svg{color:var(--cyan)}.hero-meta a{color:inherit;transition:color .25s}.hero-meta a:hover{color:var(--cyan)}.footer{border-top:1px solid var(--line);font-family:var(--font-mono);color:var(--text-dim);letter-spacing:.06em;flex-wrap:wrap;justify-content:space-between;gap:1rem;max-width:1280px;margin:0 auto;padding:1.75rem clamp(1.25rem,4vw,3.5rem);font-size:.7rem;display:flex}.footer a{color:var(--text-dim);transition:color .25s}.footer a:hover{color:var(--cyan)}.scroll-progress{background:linear-gradient(90deg, var(--cyan), var(--amber));z-index:200;transform-origin:0;height:2px;position:fixed;top:0;left:0}.app-shell.window-open main{filter:none;opacity:.45;transition:opacity .35s var(--ease-out)}.app-shell main{transition:filter .35s var(--ease-out)}.window-layer{z-index:300;padding:calc(var(--nav-h) + .75rem) 1rem 1.25rem;place-items:center;display:grid;position:fixed;inset:0}.window-backdrop{background:var(--overlay);cursor:pointer;border:none;position:absolute;inset:0}.floating-window{z-index:1;width:min(1040px,100%);height:min(860px, calc(100dvh - var(--nav-h) - 1.5rem));max-height:calc(100dvh - var(--nav-h) - 1.5rem);border:1.5px solid var(--ink);background:var(--bg-panel);min-height:0;box-shadow:12px 16px 0 var(--shadow-ink);flex-direction:column;display:flex;position:relative;overflow:hidden}.window-chrome{border-bottom:1.5px solid var(--ink);background:var(--bg-elevated);-webkit-backdrop-filter:none;backdrop-filter:none;flex-shrink:0;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:.75rem 1rem;display:grid}.window-traffic{align-items:center;gap:.45rem;display:flex}.traffic{color:#0000;border-radius:0;justify-content:center;align-items:center;width:12px;height:12px;transition:color .2s,transform .2s;display:inline-flex}.traffic.close{background:var(--cyan)}.traffic.minimize{background:var(--amber)}.traffic.maximize{background:var(--ink);color:#0000}.window-traffic:hover .traffic{color:#fff}.window-title-wrap{justify-content:center;align-items:center;gap:.75rem;min-width:0;display:flex}.window-code{font-family:var(--font-mono);letter-spacing:.12em;color:var(--cyan);white-space:nowrap;font-size:.65rem}.window-title{font-family:var(--font-display);letter-spacing:-.01em;font-size:.95rem;font-weight:600}.window-esc{font-family:var(--font-mono);letter-spacing:.1em;color:var(--text-dim);border:1px solid var(--line);padding:.3rem .5rem;font-size:.65rem;transition:color .2s,border-color .2s}.window-esc:hover{color:var(--text);border-color:var(--text-muted)}.window-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--cyan) 45%, transparent) transparent;outline:none;flex:1;min-height:0;overflow:hidden auto}.window-body::-webkit-scrollbar{width:8px}.window-body::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--cyan) 40%, transparent);background-clip:padding-box;border:2px solid #0000}.window-body .section{max-width:none;margin:0;padding:1.75rem clamp(1.25rem,3vw,2.25rem) 2.25rem}.window-body .section-title{font-size:clamp(1.55rem,3vw,2.2rem)}.window-body .section-lead{color:var(--text-muted);margin-bottom:1.5rem}.window-body .projects-rail-wrap,.window-body .projects-rail-wrap.is-stack{margin:0;padding:0;overflow:visible}.window-body .projects-rail,.window-body .projects-rail.is-stack{flex-direction:column;gap:1rem;max-width:100%;padding:0;display:flex;width:100%!important;transform:none!important}.window-body .projects-rail .project-card,.window-body .projects-rail.is-stack .project-card{width:100%;max-width:100%;height:auto}.window-body .skills-layout,.window-body .about-grid,.window-body .edu-block{grid-template-columns:1fr}.window-body .contact-section{text-align:center;padding-bottom:2rem}.window-body .footer{max-width:none;padding-inline:0}.projects-rail.is-stack{flex-direction:column;gap:1rem;width:100%;padding:0;display:flex}.projects-rail-wrap.is-stack{margin:0;padding:0}.projects-rail.is-stack .project-card{width:100%}@media (width<=720px){.window-layer{padding:calc(var(--nav-h) + .35rem) .5rem .5rem}.floating-window{height:calc(100dvh - var(--nav-h) - 1rem);width:100%}.window-code{display:none}}.app-shell{opacity:0;transition:opacity .5s ease, transform .7s var(--ease-out);transform:translateY(12px)}.app-shell.is-ready{opacity:1;transform:none}.intro-loader{z-index:5000;background:var(--ink);color:var(--bg);place-items:center;display:grid;position:fixed;inset:0}.intro-loader-inner{width:min(420px,86vw)}.intro-path{font-family:var(--font-mono);letter-spacing:.12em;opacity:.55;margin-bottom:1.5rem;font-size:.75rem}.intro-words{font-family:var(--font-display);letter-spacing:-.04em;flex-direction:column;gap:.15rem;margin-bottom:2rem;font-size:clamp(2.8rem,10vw,5rem);font-weight:800;line-height:.95;display:flex}.intro-bar{background:var(--cyan);transform-origin:0;height:3px}.nav-cmd{border:1px solid var(--line-strong);height:36px;color:var(--text-muted);font-family:var(--font-mono);align-items:center;gap:.4rem;padding:0 .7rem;font-size:.72rem;transition:color .25s,border-color .25s,background .25s;display:inline-flex}.nav-cmd kbd{font:inherit;border:1px solid var(--line);padding:.05rem .3rem}.nav-cmd:hover{color:var(--text);border-color:var(--ink);background:#12161c0a}.kinetic-line{font-family:var(--font-display);letter-spacing:-.03em;perspective:600px;flex-wrap:wrap;align-items:baseline;gap:.45rem;margin:.35rem 0 1rem;font-size:clamp(1.35rem,3.2vw,2rem);font-weight:700;line-height:1.15;display:flex}.kinetic-static{color:var(--text-muted)}.kinetic-slot{place-items:center start;min-width:5.5ch;height:1.2em;display:inline-grid;overflow:hidden}.kinetic-word{color:var(--cyan);grid-area:1/1;display:inline-block}.hero-cmd-tip{align-items:center;gap:.35rem;display:inline-flex}.hero-cmd-tip kbd,.terminal-hint kbd{font-family:var(--font-mono);border:1px solid var(--line-strong);background:var(--bg-panel);padding:.1rem .35rem;font-size:.7em}.marquee{border-block:1.5px solid var(--ink);background:var(--ink);color:var(--bg);margin:0;overflow:hidden}.marquee-track{gap:0;width:max-content;padding:.85rem 0;animation:32s linear infinite marquee-move;display:flex}.marquee-track span{font-family:var(--font-display);letter-spacing:-.02em;white-space:nowrap;text-transform:uppercase;align-items:center;gap:1.25rem;padding:0 1.25rem;font-size:clamp(1rem,2.2vw,1.35rem);font-weight:700;display:inline-flex}.marquee-track em{color:var(--marquee-em);font-style:normal}@keyframes marquee-move{0%{transform:translate(0)}to{transform:translate(-50%)}}.terminal-layer{z-index:400;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.terminal-backdrop{background:var(--overlay);cursor:pointer;border:none;position:absolute;inset:0}.terminal{z-index:1;border:1.5px solid var(--ink);background:var(--bg-panel);width:min(560px,100%);box-shadow:10px 12px 0 var(--shadow-ink);position:relative;overflow:hidden}.terminal-head{border-bottom:1.5px solid var(--ink);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--bg-elevated);justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.72rem;display:flex}.terminal-head button{border:1px solid var(--line-strong);font-family:var(--font-mono);padding:.25rem .45rem;font-size:.65rem}.terminal-input-row{font-family:var(--font-mono);align-items:center;gap:.65rem;padding:1rem 1rem .35rem;display:flex}.terminal-input-row span{color:var(--cyan);font-weight:600}.terminal-input-row input{font:inherit;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:1rem}.terminal-hint{color:var(--text-dim);padding:0 1rem .85rem;font-size:.8rem}.terminal-list{border-top:1px solid var(--line);max-height:280px;list-style:none;overflow:auto}.terminal-list button{text-align:left;border-bottom:1px solid var(--line);width:100%;font-family:var(--font-mono);justify-content:space-between;gap:1rem;padding:.8rem 1rem;font-size:.82rem;transition:background .2s;display:flex}.terminal-list button em{color:var(--text-dim);font-style:normal}.terminal-list button.active,.terminal-list button:hover{background:var(--cyan-dim)}.terminal-list button.active span,.terminal-list button:hover span{color:var(--cyan)}.section-title{overflow:hidden}.hero-brand{font-size:clamp(2.6rem,9vw,7rem)}@media (width<=860px){.nav-cmd{display:none}}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}
