:root{--bg:#0c0c0e;--text:#f2f2f0;--text-dim:hsla(60,7%,95%,.55);--accent:#8a8aff;--card-bg:hsla(0,0%,100%,.04);--card-border:hsla(0,0%,100%,.09);--font:"Helvetica Neue","Inter",system-ui,-apple-system,sans-serif}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:auto}body,html{background:var(--bg)}body{font-family:var(--font);color:var(--text);overflow-x:hidden;-webkit-font-smoothing:antialiased}body.is-exploring{overflow:hidden}.shader-bg{z-index:0;pointer-events:none;background:var(--bg)}#webgl,.shader-bg{position:fixed;inset:0;width:100%;height:100%;display:block}#webgl{z-index:1}body.is-exploring #webgl{z-index:5}.loader{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:var(--bg);transition:opacity .6s ease,visibility .6s ease}.loader.is-done{opacity:0;visibility:hidden;pointer-events:none}.loader__inner{display:flex;flex-direction:column;align-items:center;gap:14px}.loader__label{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--text-dim)}.loader__percent{font-size:48px;font-weight:200;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loader__bar{width:180px;height:1px;background:hsla(0,0%,100%,.12);overflow:hidden}.loader__bar-fill{width:0;height:100%;background:var(--text);transition:width .2s ease}#content{position:relative;z-index:2;pointer-events:none}.section{min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:0 clamp(24px,7vw,120px)}.section__inner{max-width:560px;pointer-events:auto}.section__inner--right{margin-left:auto}.section__inner--center{margin:0 auto;text-align:center}.eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--text-dim);margin-bottom:20px}h1.hero-title{font-size:clamp(56px,11vw,150px);font-weight:200;letter-spacing:-.03em;line-height:.95}.hero-subtitle{margin-top:18px;font-size:clamp(16px,2.2vw,24px);font-weight:300;color:var(--text-dim);letter-spacing:.02em}h2{font-size:clamp(36px,6vw,76px);font-weight:200;letter-spacing:-.02em;line-height:1.02;margin-bottom:24px}.body-copy{font-size:clamp(15px,1.4vw,18px);font-weight:300;line-height:1.7;color:var(--text-dim)}.scroll-cue{margin-top:64px;display:inline-flex;align-items:center;gap:16px;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--text-dim)}.scroll-cue__line{display:inline-block;width:56px;height:1px;background:var(--text-dim);animation:cue 2.2s ease-in-out infinite;transform-origin:left}@keyframes cue{0%{transform:scaleX(0);opacity:0}40%{transform:scaleX(1);opacity:1}to{transform:scaleX(1) translateX(24px);opacity:0}}.section--projects .section__inner{max-width:640px}.cards{display:flex;flex-direction:column;gap:14px;margin-top:8px}.card{padding:22px 26px;background:var(--card-bg);border:1px solid var(--card-border);border-radius:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transform:translateX(80px)}.card__tag{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.card h3{margin:8px 0 6px;font-size:22px;font-weight:400}.card p{font-size:14px;font-weight:300;line-height:1.6;color:var(--text-dim)}.contact-links{display:flex;flex-direction:column;gap:10px;margin:28px 0 48px}.contact-links a{color:var(--text);text-decoration:none;font-size:clamp(16px,2vw,22px);font-weight:300;border-bottom:1px solid transparent;transition:border-color .25s ease,color .25s ease;align-self:center}.contact-links a:hover{border-color:var(--accent);color:var(--accent)}.explore-btn{pointer-events:auto;display:inline-flex;align-items:center;gap:10px;padding:16px 34px;font-family:var(--font);font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--text);background:transparent;border:1px solid hsla(0,0%,100%,.3);border-radius:999px;cursor:pointer;transition:background .3s ease,border-color .3s ease}.explore-btn:hover{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.7)}.explore-btn__icon{font-size:18px;line-height:1}.explore-exit{top:28px;right:28px;padding:12px 22px;font-family:var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--bg);background:var(--text);border:none;border-radius:999px;cursor:pointer}.explore-exit,.explore-hint{position:fixed;z-index:10;font-size:12px}.explore-hint{bottom:28px;left:50%;transform:translateX(-50%);letter-spacing:.12em;color:var(--text-dim);pointer-events:none}@media (max-width:640px){.section{align-items:flex-end;padding-bottom:12vh}.section__inner,.section__inner--right{margin:0;max-width:100%}.card{padding:16px 18px}}.hero-subtitle{min-height:1.3em}.typewriter__caret{display:inline-block;width:2px;height:1em;margin-left:4px;background:var(--accent);vertical-align:-.12em;animation:caret-blink 1s steps(1) infinite}.typewriter__caret.is-static{animation:none}@keyframes caret-blink{50%{opacity:0}}.contact-heading{display:flex;flex-direction:column;align-items:center;gap:4px}.rotating-text{position:relative;display:inline-grid;place-items:center;line-height:1.1}.rotating-text.contact-morph{display:grid;width:100%}.rotating-text__ghost{grid-area:1/1;visibility:hidden;white-space:nowrap}.rotating-text__word{grid-area:1/1;color:var(--accent);white-space:nowrap}.rotating-text__word.is-animated{animation:rotating-word .5s cubic-bezier(.22,1,.36,1)}@keyframes rotating-word{0%{opacity:0;transform:translateY(.5em);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@media (prefers-reduced-motion:reduce){.rotating-text__word.is-animated{animation:none}}.cv-extra{position:relative;z-index:3;background:linear-gradient(180deg,rgba(10,10,18,.62),rgba(8,8,14,.74));border-top:1px solid hsla(0,0%,100%,.06)}.cv-section{padding:clamp(64px,11vw,140px) clamp(24px,7vw,120px)}.cv-section--alt{background:hsla(0,0%,100%,.015)}.cv-section__inner{display:grid;grid-template-columns:.85fr 1.15fr;align-items:center;grid-gap:clamp(28px,6vw,88px);gap:clamp(28px,6vw,88px);max-width:1080px;margin:0 auto}.cv-section__inner--reverse .cv-section__art{order:2}.cv-section__body h2{margin-bottom:32px}.section-art{width:100%;max-width:320px;margin:0 auto;filter:drop-shadow(0 26px 48px rgba(91,91,255,.28));animation:art-float 6s ease-in-out infinite}.section-art svg{width:100%;height:auto;display:block}@keyframes art-float{0%,to{transform:translateY(-8px) rotate(-1deg)}50%{transform:translateY(8px) rotate(1deg)}}@media (prefers-reduced-motion:reduce){.section-art{animation:none}}.timeline{list-style:none;position:relative;padding-left:26px}.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(to bottom,var(--accent),rgba(138,138,255,.1))}.timeline__item{position:relative;padding-bottom:30px}.timeline__item:last-child{padding-bottom:0}.timeline__item:before{content:"";position:absolute;left:-26px;top:6px;width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px rgba(138,138,255,.15)}.timeline__date{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.timeline__item h3{margin:6px 0 8px;font-size:clamp(18px,2vw,22px);font-weight:400}.timeline__item p{font-size:15px;font-weight:300;line-height:1.65;color:var(--text-dim);max-width:46ch}.skill-bars{display:flex;flex-direction:column;gap:18px;margin-bottom:36px}.skill-bar__head{display:flex;justify-content:space-between;font-size:14px;font-weight:300;margin-bottom:8px}.skill-bar__pct{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.skill-bar__track{height:6px;border-radius:999px;background:hsla(0,0%,100%,.07);overflow:hidden}.skill-bar__fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#5b5bff,var(--accent))}.skill-tags{list-style:none;display:flex;flex-wrap:wrap;gap:10px}.skill-tag{padding:8px 16px;font-size:13px;font-weight:300;color:var(--text);background:var(--card-bg);border:1px solid var(--card-border);border-radius:999px}.cv-actions{display:flex;flex-wrap:wrap;gap:14px;margin:28px 0}.cv-btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;font-size:14px;letter-spacing:.06em;text-decoration:none;color:var(--text);border:1px solid hsla(0,0%,100%,.2);border-radius:999px;transition:background .25s ease,border-color .25s ease,transform .25s ease}.cv-btn:hover{border-color:var(--accent);transform:translateY(-2px)}.cv-btn--primary{background:var(--accent);border-color:var(--accent);color:#0c0c14;font-weight:500}.cv-btn--primary:hover{background:#9a9aff}.cv-preview{margin-top:8px;border:1px solid var(--card-border);border-radius:14px;overflow:hidden;background:hsla(0,0%,100%,.03);box-shadow:0 24px 60px -28px rgba(0,0,0,.7)}.cv-preview__frame{display:block;width:100%;height:clamp(440px,70vh,720px);border:0}.cv-footer{padding:clamp(48px,8vw,96px) clamp(24px,7vw,120px) 56px;border-top:1px solid hsla(0,0%,100%,.06)}.cv-footer__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:40px;gap:40px;max-width:1080px;margin:0 auto 48px}.cv-meta{list-style:none;margin-top:18px;gap:14px}.cv-meta,.cv-meta li{display:flex;flex-direction:column}.cv-meta li{gap:3px;font-size:15px;font-weight:300;color:var(--text)}.cv-meta li span{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.cv-meta a{color:var(--text);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .25s ease,color .25s ease;width:-moz-fit-content;width:fit-content}.cv-meta a:hover{color:var(--accent);border-color:var(--accent)}.cv-footer__copy{max-width:1080px;margin:0 auto;font-size:13px;color:var(--text-dim);text-align:center}@media (max-width:760px){.cv-section__inner{grid-template-columns:1fr;gap:36px}.cv-section__inner--reverse .cv-section__art{order:0}.section-art{max-width:200px}}@media (max-width:768px){.section--about{align-items:flex-end;padding-bottom:clamp(40px,11vh,96px)}.section--about .section__inner{max-width:100%;margin:0;padding:22px 18px;border-radius:18px;background:linear-gradient(0deg,rgba(8,8,14,.86) 48%,rgba(8,8,14,0))}.section--projects{align-items:flex-end;padding-bottom:clamp(28px,7vh,64px)}.section--projects .section__inner{max-width:100%;margin:0}}.liquid-btn{position:relative;pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;padding:16px 36px;font-family:var(--font);font-size:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--text);cursor:pointer;border-radius:999px;border:1px solid hsla(0,0%,100%,.18);background:hsla(0,0%,100%,.06);backdrop-filter:blur(12px) saturate(160%);-webkit-backdrop-filter:blur(12px) saturate(160%);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.35),inset 0 -2px 8px rgba(0,0,0,.35),0 12px 34px -12px rgba(138,138,255,.45);overflow:hidden;isolation:isolate}.liquid-btn__glow{position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none}.liquid-btn__label{position:relative;display:inline-flex;align-items:center;gap:10px}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;border-radius:50%;will-change:transform,left,top}.cursor-dot{width:7px;height:7px;margin:-3.5px 0 0 -3.5px;background:var(--text);mix-blend-mode:difference}.cursor-ring{width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid rgba(138,138,255,.85)}.has-custom-cursor,.has-custom-cursor *{cursor:none!important}.debug-readout{position:fixed;left:16px;bottom:16px;z-index:40;width:min(92vw,440px);padding:10px 12px;background:rgba(10,10,18,.72);border:1px solid hsla(0,0%,100%,.12);border-radius:10px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;pointer-events:auto}.debug-readout__row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.debug-readout__label{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim)}.debug-readout__copy{font-family:inherit;font-size:11px;padding:3px 12px;color:var(--text);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.18);border-radius:6px;cursor:pointer}.debug-readout__copy:hover{background:hsla(0,0%,100%,.16)}.debug-readout__value{display:block;font-size:12px;line-height:1.5;color:var(--accent);word-break:break-word}.debug-readout__hint{display:block;margin-top:6px;font-size:10px;color:var(--text-dim)}