*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f7f5f0;--bg-nav:#f7f5f0e6;--text:#1a1816;--muted:#7a776f;--border:#1a181621;--border-hi:#1a18163d;--glow:#1a18168c;--glow-soft:#1a181638}[data-theme=dark]{--bg:#0d0c0a;--bg-nav:#0d0c0ae6;--text:#e6e2d8;--muted:#898278;--border:#e6e2d81f;--border-hi:#e6e2d847;--glow:#e6e2d899;--glow-soft:#e6e2d840}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);height:100vh;font-family:Space Grotesk,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;transition:background .4s,color .4s;overflow:hidden}body:after{content:"";pointer-events:none;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}.loader{z-index:100000;background:var(--bg);color:var(--text);justify-content:center;align-items:center;transition:opacity .55s,visibility .55s;display:flex;position:fixed;inset:0}.loader.is-done{opacity:0;visibility:hidden;pointer-events:none}.ld-stage{flex-direction:column;align-items:center;gap:26px;display:flex}.ld-mesh{width:132px;height:132px;overflow:visible}.ld-node{opacity:0;transform-box:fill-box;transform-origin:50%;filter:drop-shadow(0 0 3px var(--glow-soft));animation:.5s forwards ldPop,2.4s ease-in-out infinite ldGlow;animation-delay:calc(var(--i) * 70ms), calc(.8s + var(--i) * 70ms);transform:scale(0)}.ld-hub{filter:drop-shadow(0 0 6px var(--glow))}@keyframes ldPop{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.25)}to{opacity:1;transform:scale(1)}}@keyframes ldGlow{0%,to{filter:drop-shadow(0 0 3px var(--glow-soft))}50%{filter:drop-shadow(0 0 7px var(--glow))}}.ld-edge{opacity:.55;stroke-dasharray:1;stroke-dashoffset:1px;animation:.5s forwards ldDraw;animation-delay:calc(var(--i) * 70ms)}@keyframes ldDraw{to{stroke-dashoffset:0}}.ld-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.78rem}#ldPct{color:var(--text)}@media (prefers-reduced-motion:reduce){.ld-node{opacity:1;animation:none;transform:none}.ld-edge{stroke-dashoffset:0;animation:none}}nav{background:var(--bg-nav);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);z-index:500;justify-content:space-between;align-items:center;height:68px;padding:0 44px;display:flex;position:fixed;inset:0 0 auto}.nav-left{align-items:center;gap:32px;display:flex}.nav-profile{border:1.5px solid var(--border-hi);width:38px;height:38px;box-shadow:2px 2px 0 var(--border);border-radius:7px;flex-shrink:0;transition:transform .2s,box-shadow .2s;display:block;overflow:hidden}.nav-profile:hover{box-shadow:3px 3px 0 var(--border-hi);transform:translate(-1px,-1px)}.nav-profile img{object-fit:cover;object-position:center top;width:100%;height:100%;display:block}.nav-links{align-items:center;gap:28px;display:flex}.nav-links a{color:var(--muted);letter-spacing:.03em;font-size:.83rem;font-weight:500;text-decoration:none;transition:color .2s;position:relative}.nav-links a:after{content:"";background:var(--text);width:0;height:1px;transition:width .22s;position:absolute;bottom:-3px;left:0}.nav-links a:hover{color:var(--text)}.nav-links a:hover:after{width:100%}.theme-toggle{border:1.5px solid var(--border-hi);cursor:pointer;color:var(--muted);letter-spacing:.06em;background:0 0;border-radius:24px;align-items:center;gap:9px;padding:5px 14px 5px 7px;font-family:inherit;font-size:.77rem;font-weight:500;transition:color .2s,border-color .2s;display:flex}.theme-toggle:hover{color:var(--text);border-color:var(--text)}.toggle-pill{background:var(--border);border:1.5px solid var(--border-hi);border-radius:11px;flex-shrink:0;width:42px;height:22px;transition:background .35s;position:relative}.toggle-pill:after{content:"";background:var(--text);border-radius:50%;width:14px;height:14px;transition:transform .35s;position:absolute;top:2px;left:2px}[data-theme=dark] .toggle-pill:after{transform:translate(20px)}.theme-icon{width:20px;height:20px;display:none}.mobile-switcher{display:none}.track{z-index:1;position:relative}.track>section{opacity:0;visibility:hidden;will-change:transform, opacity, filter;backface-visibility:hidden;padding-top:68px;display:flex;position:fixed;inset:0}.track>section.is-active{opacity:1;visibility:visible}.sec-content{flex-direction:column;justify-content:center;width:50%;display:flex}.scroll-region{scrollbar-width:none;max-height:calc(100vh - 300px);overflow-y:auto}.scroll-region::-webkit-scrollbar{width:0;height:0}@keyframes secBumpDown{0%,to{transform:translateY(0)}35%{transform:translateY(-10px)}65%{transform:translateY(-3px)}}@keyframes secBumpUp{0%,to{transform:translateY(0)}35%{transform:translateY(10px)}65%{transform:translateY(3px)}}.sec-bump-down{animation:.42s secBumpDown}.sec-bump-up{animation:.42s secBumpUp}@media (prefers-reduced-motion:reduce){.sec-bump-down,.sec-bump-up{animation:none}}.sec-canvas{width:50%;position:relative;overflow:hidden}.content-right{padding:0 88px 0 48px}.content-left{padding:0 48px 0 88px}.hero-left{padding:0 48px 0 88px;transform:translate(40px)}.greeting{color:var(--muted);letter-spacing:.01em;margin-bottom:2px;font-size:1.05rem;font-weight:400}.name{letter-spacing:-.04em;color:var(--text);text-shadow:2px 2px 0 var(--border), 4px 4px 0 #00000005;margin-bottom:28px;font-size:clamp(4.5rem,9vw,8rem);font-weight:700;line-height:.88}.role-prefix{color:var(--muted);margin-bottom:4px;font-size:1rem;font-weight:400}.typewriter-wrap{color:var(--text);align-items:center;min-height:2em;margin-bottom:40px;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:clamp(.95rem,1.7vw,1.25rem);font-weight:400;display:flex}.cursor{background:var(--text);vertical-align:middle;width:2px;height:1.1em;margin-left:3px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.hero-links{flex-wrap:wrap;gap:16px;display:flex}.resume-btn{color:var(--text);letter-spacing:.14em;border:1.5px solid var(--border-hi);width:fit-content;box-shadow:2px 2px 0 var(--border-hi), 4px 4px 0 var(--border);border-radius:50px;align-items:center;gap:9px;padding:13px 28px;font-family:inherit;font-size:.8rem;font-weight:600;text-decoration:none;transition:color .22s,background .22s,box-shadow .22s,transform .22s;display:inline-flex}.resume-btn:hover{background:var(--text);color:var(--bg);box-shadow:4px 4px 0 var(--muted), 6px 6px 0 var(--border);transform:translate(-2px,-2px)}.resume-btn .arrow{transition:transform .2s;display:inline-block}.resume-btn:hover .arrow{transform:translate(2px,-2px)}.section-label{color:var(--muted);letter-spacing:.14em;margin-bottom:18px;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.8rem}.sec-heading{letter-spacing:-.03em;color:var(--text);text-shadow:2px 2px 0 var(--border), 4px 4px 0 #00000005;margin-bottom:30px;font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:.95}.sec-text p{color:var(--muted);max-width:48ch;margin-bottom:18px;font-size:1rem;line-height:1.75}.sec-text p:last-child{margin-bottom:0}#skills .sec-heading{margin-bottom:14px}.skills-hint{letter-spacing:.1em;color:var(--muted);opacity:.8;margin-bottom:18px;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.72rem}.skills-explorer{flex-direction:column;max-width:46ch;display:flex}.skill-group{border-top:1px solid var(--border)}.skill-group:last-child{border-bottom:1px solid var(--border)}.skill-cat{letter-spacing:.08em;text-transform:uppercase;width:100%;color:var(--muted);text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:9px 4px;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.82rem;transition:color .25s;display:flex}.skill-cat:hover{color:var(--text)}.cat-dot{border:1.5px solid var(--border-hi);border-radius:50%;flex:none;width:9px;height:9px;transition:background .3s,border-color .3s,box-shadow .3s}.cat-name{flex:1}.cat-count{opacity:.7;font-size:.74rem}.skill-group.open .skill-cat{color:var(--text)}.skill-group.open .cat-dot{background:var(--text);border-color:var(--text);box-shadow:0 0 0 3px var(--glow-soft), 0 0 12px var(--glow)}.skill-list{opacity:0;flex-wrap:wrap;gap:9px 18px;max-height:0;padding-left:21px;transition:max-height .45s,opacity .35s,padding-bottom .45s;display:flex;overflow:hidden}.skill-group.open .skill-list{opacity:1;max-height:420px;padding-bottom:14px}.skill-node{color:var(--muted);opacity:0;align-items:center;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.78rem;transition:opacity .4s,transform .4s,color .2s;display:inline-flex;transform:translateY(7px)}.skill-group.open .skill-node{opacity:1;transition-delay:calc(var(--i) * 45ms);transform:none}.nd-dot{background:var(--muted);border-radius:50%;flex:none;width:6px;height:6px;transition:background .2s,box-shadow .2s,transform .2s}.nd-wire{background:var(--border-hi);flex:none;width:13px;height:1px;margin:0 8px}.skill-node:hover{color:var(--text)}.skill-node:hover .nd-dot{background:var(--text);box-shadow:0 0 9px var(--glow);transform:scale(1.3)}#experience .sec-heading{margin-bottom:14px}.exp-explorer{flex-direction:column;max-width:54ch;display:flex}.exp-group{border-top:1px solid var(--border)}.exp-group:last-child{border-bottom:1px solid var(--border)}.exp-head{text-align:left;width:100%;color:var(--muted);background:0 0;border:none;align-items:flex-start;gap:12px;padding:11px 4px;transition:color .25s;display:flex}.exp-head:hover{color:var(--text)}.exp-dot{border:1.5px solid var(--border-hi);border-radius:50%;flex:none;width:9px;height:9px;margin-top:5px;transition:background .3s,border-color .3s,box-shadow .3s}.exp-headings{flex-direction:column;flex:1;gap:3px;display:flex}.exp-role{letter-spacing:-.01em;color:var(--text);font-size:.98rem;font-weight:600}.exp-org{color:var(--muted);font-weight:400}.exp-meta{letter-spacing:.06em;color:var(--muted);font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.72rem}.exp-group.open .exp-dot{background:var(--text);border-color:var(--text);box-shadow:0 0 0 3px var(--glow-soft), 0 0 12px var(--glow)}.exp-points{opacity:0;flex-direction:column;gap:9px;max-height:0;padding-left:21px;transition:max-height .5s,opacity .4s,padding-bottom .5s;display:flex;overflow:hidden}.exp-group.open .exp-points{opacity:1;max-height:1100px;padding-bottom:14px}.exp-note{max-width:54ch;color:var(--muted);opacity:0;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.72rem;font-style:italic;line-height:1.5;transition:opacity .4s,transform .4s;transform:translateY(7px)}.exp-group.open .exp-note{opacity:.85;transform:none}.exp-point{max-width:54ch;color:var(--muted);opacity:0;align-items:flex-start;font-size:.82rem;line-height:1.5;transition:opacity .4s,transform .4s,color .2s;display:flex;transform:translateY(7px)}.exp-group.open .exp-point{opacity:1;transition-delay:calc(var(--i) * 55ms);transform:none}.exp-point .nd-dot{margin-top:7px}.exp-point .nd-wire{margin-top:10px}.exp-point .nd-text{flex:1}.exp-point:hover{color:var(--text)}.exp-point:hover .nd-dot{background:var(--text);box-shadow:0 0 9px var(--glow);transform:scale(1.3)}#projects .sec-heading{margin-bottom:14px}.proj-explorer{flex-direction:column;max-width:48ch;display:flex}.proj-group{border-top:1px solid var(--border)}.proj-group:last-child{border-bottom:1px solid var(--border)}.proj-head{text-align:left;width:100%;color:var(--muted);background:0 0;border:none;align-items:flex-start;gap:12px;padding:13px 4px;transition:color .25s;display:flex}.proj-head:hover{color:var(--text)}.proj-dot{border:1.5px solid var(--border-hi);border-radius:50%;flex:none;width:9px;height:9px;margin-top:5px;transition:background .3s,border-color .3s,box-shadow .3s}.proj-headings{flex-direction:column;flex:1;gap:3px;display:flex}.proj-name{letter-spacing:-.01em;color:var(--text);font-size:1rem;font-weight:600}.proj-tag{letter-spacing:.06em;color:var(--muted);font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.72rem}.proj-pct{color:var(--text);margin-top:3px;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.8rem}.proj-group.open .proj-dot{background:var(--text);border-color:var(--text);box-shadow:0 0 0 3px var(--glow-soft), 0 0 12px var(--glow)}.proj-body{opacity:0;flex-direction:column;gap:14px;max-height:0;padding-left:21px;transition:max-height .5s,opacity .4s,padding-bottom .5s;display:flex;overflow:hidden}.proj-group.open .proj-body{opacity:1;max-height:320px;padding-bottom:16px}.proj-desc{max-width:48ch;color:var(--muted);opacity:0;font-size:.9rem;line-height:1.6;transition:opacity .4s,transform .4s;transform:translateY(7px)}.proj-group.open .proj-desc{opacity:1;transition-delay:60ms;transform:none}.proj-progress{flex-direction:column;gap:8px;max-width:48ch;display:flex}.proj-status{letter-spacing:.16em;color:var(--muted);font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.66rem}.proj-track{background:var(--border-hi);border-radius:2px;height:2px;position:relative}.proj-fill{background:var(--text);border-radius:2px;width:0;height:100%;transition:width .9s cubic-bezier(.4,0,.1,1);position:absolute;top:0;left:0}.proj-group.open .proj-fill{width:calc(var(--p) * 1%)}.proj-fill:after{content:"";background:var(--text);width:8px;height:8px;box-shadow:0 0 10px var(--glow);border-radius:50%;position:absolute;top:50%;right:-3px;transform:translateY(-50%)}.proj-link{align-self:flex-start}@media (pointer:fine){*{cursor:none!important}}.cursor-ring,.cursor-dot{pointer-events:none;z-index:10000;will-change:transform, opacity;opacity:0;border-radius:50%;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor-ring{border:1.5px solid var(--text);width:15px;height:15px;box-shadow:0 0 10px var(--glow-soft), inset 0 0 6px var(--glow-soft);transition:width .18s,height .18s,border-color .18s,opacity .25s}.cursor-dot{background:var(--text);width:5px;height:5px;box-shadow:0 0 6px var(--glow), 0 0 12px var(--glow-soft);transition:opacity .25s}.cursor-ring.is-active{border-color:var(--text);width:20px;height:20px;box-shadow:0 0 12px var(--glow-soft), inset 0 0 8px var(--glow-soft)}.cursor-trail-canvas{pointer-events:none;z-index:9999;position:fixed;top:0;left:0}body.cursor-ready .cursor-ring{opacity:.85}body.cursor-ready .cursor-dot{opacity:1}@media (pointer:coarse){.cursor-ring,.cursor-dot{display:none}}@media (width<=1180px){.content-right{padding:0 56px 0 40px}.content-left{padding:0 40px 0 56px}.hero-left{padding:0 40px 0 56px;transform:translate(24px)}nav{padding:0 32px}.nav-left{gap:24px}.nav-links{gap:22px}}@media (width<=799px){#diveCanvas{display:none!important}.track>section{padding-top:88px}.sec-canvas{display:none}.sec-content{text-align:center;align-items:center;width:100%;max-width:540px;margin:0 auto}.content-right,.content-left,.hero-left{padding:0 28px;transform:none}.typewriter-wrap{justify-content:center}.sec-text,.skills-explorer,.proj-explorer,.exp-explorer{text-align:left;width:100%;margin-left:auto;margin-right:auto}.sec-text p{margin-left:auto;margin-right:auto}.scroll-region{max-height:calc(100vh - 240px)}}@media (width<=640px){nav{height:58px;padding:0 18px}.track>section{padding-top:112px}.nav-links{display:none}.theme-toggle{border-radius:50%;gap:0;padding:7px}.toggle-pill,#themeLabel{display:none}.theme-sun{display:block}.theme-moon,[data-theme=dark] .theme-sun{display:none}[data-theme=dark] .theme-moon{display:block}.mobile-switcher{z-index:400;background:var(--bg-nav);-webkit-backdrop-filter:blur(16px);justify-content:center;align-items:center;gap:2px;height:46px;display:flex;position:fixed;top:58px;left:0;right:0}.ms-arrow{color:var(--muted);background:0 0;border:none;flex:none;padding:0 4px;font-size:1.4rem;line-height:1;transition:color .2s}.ms-arrow:hover{color:var(--text)}.ms-track{align-items:center;width:230px;height:100%;display:flex;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 27% 73%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 27% 73%,#0000 100%)}.ms-rail{will-change:transform;align-items:center;gap:26px;width:max-content;transition:transform .42s cubic-bezier(.4,0,.1,1);display:flex;position:relative}@media (prefers-reduced-motion:reduce){.ms-rail{transition:none}}.ms-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);opacity:.6;white-space:nowrap;background:0 0;border:none;flex:none;font-family:Space Mono,Fira Code,Consolas,monospace;font-size:.72rem;transition:color .25s,opacity .25s}.ms-label.is-current{color:var(--text);opacity:1;font-weight:700}}.webgl-notice{z-index:200;background:var(--bg-nav);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1.5px solid var(--border-hi);max-width:360px;box-shadow:3px 3px 0 var(--border-hi);color:var(--text);opacity:0;align-items:flex-start;gap:12px;padding:16px 16px 16px 14px;transition:opacity .3s,transform .3s;display:flex;position:fixed;bottom:24px;left:24px;transform:translateY(12px)}.webgl-notice.is-in{opacity:1;transform:translateY(0)}.webgl-notice.is-leaving{opacity:0;transform:translateY(12px)}.webgl-notice .wn-icon{width:22px;height:22px;color:var(--muted);flex:none;margin-top:1px}.webgl-notice .wn-title{margin:0 0 4px;font-size:.92rem;font-weight:700}.webgl-notice .wn-body{color:var(--muted);margin:0;font-size:.82rem;line-height:1.45}.webgl-notice .wn-link{color:var(--text);border-bottom:1.5px solid var(--border-hi);margin-top:10px;padding-bottom:1px;font-family:Space Mono,monospace;font-size:.78rem;transition:border-color .2s;display:inline-block}.webgl-notice .wn-link:hover{border-color:var(--text)}.webgl-notice .wn-close{color:var(--muted);cursor:pointer;background:0 0;border:none;flex:none;padding:0 2px;font-size:1.3rem;line-height:1;transition:color .2s}.webgl-notice .wn-close:hover{color:var(--text)}
