:root{--bg-top: #1a2340;--bg: #070a18;--bg-deep: #04060e;--ink: #eef2f8;--ink-2: #98a2b5;--ink-3: #5b6472;--accent: #7fd4ff;--accent-soft: #6cc3f5;--warm: #ffb36b;--glass: rgba(255, 255, 255, .05);--glass-border: rgba(255, 255, 255, .12);--line: rgba(255, 255, 255, .1);--line-soft: rgba(255, 255, 255, .06);--font-serif: "Cormorant Garamond", "Noto Serif SC", Georgia, serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--font-sans: ui-sans-serif, system-ui, -apple-system, "PingFang SC", "Noto Sans SC", "Microsoft YaHei", sans-serif;--radius: 16px;--max-w: 1200px;--z-scene: 0;--z-content: 10;--z-veil: 1;--z-grain: 30;--z-chrome: 40;--z-loader: 100;--z-modal: 110}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{background:var(--bg-deep);color:var(--ink)}body{font-family:var(--font-sans);line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased}body.loading-lock{overflow:hidden}::selection{background:#7fd4ff47;color:var(--ink)}a{color:inherit}.scene-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-scene)}.scene-bg canvas{display:block}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-veil);background:linear-gradient(to bottom,#04060e1a,#04060e6b);pointer-events:none}.noise{position:fixed;top:-60px;right:-60px;bottom:-60px;left:-60px;z-index:var(--z-grain);pointer-events:none;opacity:.055;mix-blend-mode:overlay;background-repeat:repeat;background-size:190px 190px;animation:grain 7s steps(10) infinite}@keyframes grain{0%,to{transform:translate(0)}12%{transform:translate(-2%,-3%)}25%{transform:translate(3%,1%)}37%{transform:translate(-3%,2%)}50%{transform:translate(2%,-2%)}62%{transform:translate(-1%,3%)}75%{transform:translate(3%,2%)}87%{transform:translate(-2%,-1%)}}.content{position:relative;z-index:var(--z-content)}.hero{position:relative;isolation:isolate;min-height:100dvh;display:flex;align-items:flex-end;justify-content:center;padding:0 1.5rem clamp(4.5rem,11vh,8rem);text-align:center}.hero-scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(62% 58% at 50% 60%,rgba(4,6,14,.62),rgba(4,6,14,.24) 55%,transparent 78%);pointer-events:none}.hero-inner{max-width:60rem}.hero-kicker{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.34em;text-transform:uppercase;color:var(--accent-soft)}.hero-name{font-family:var(--font-serif);font-weight:500;font-size:clamp(3rem,9vw,6.4rem);line-height:1.04;letter-spacing:-.01em;margin:1.3rem 0 .7rem;text-wrap:balance}.hero-role{font-size:clamp(1rem,2vw,1.2rem);color:var(--ink-2);max-width:36ch;margin:0 auto 2.4rem}.btn{display:inline-flex;align-items:center;gap:.55rem;padding:.82rem 1.7rem;border:1px solid var(--glass-border);border-radius:999px;background:#ffffff0f;color:var(--ink);text-decoration:none;font-family:var(--font-mono);font-size:.8rem;letter-spacing:.08em;transition:border-color .25s,color .25s,background .25s,transform .15s}.btn:hover{color:var(--accent);border-color:#7fd4ff73;background:#7fd4ff1a}.btn:active{transform:scale(.97)}.section{padding:clamp(5rem,12vh,9rem) 1.5rem}.section-inner{max-width:var(--max-w);margin:0 auto}.section-head{max-width:46rem;margin-bottom:3.2rem}.section-head h2{font-family:var(--font-serif);font-weight:500;font-size:clamp(2.2rem,4.5vw,3.4rem);line-height:1.06;letter-spacing:-.01em}.section-head p{margin-top:1rem;color:var(--ink-2);max-width:42ch}.divider{height:1px;max-width:var(--max-w);margin:0 auto;background:var(--line-soft)}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.1rem}.skill-card{border:1px solid var(--line-soft);border-radius:var(--radius);padding:1.6rem 1.7rem;background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:border-color .3s,background .3s}.skill-card:hover{border-color:#7fd4ff59;background:#7fd4ff0f}.skill-title{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-soft)}.skill-items{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}.skill-chip{font-family:var(--font-mono);font-size:.76rem;color:var(--ink-2);border:1px solid var(--line-soft);border-radius:999px;padding:.3rem .75rem}.timeline{position:relative;padding-left:2.4rem}.timeline:before{content:"";position:absolute;left:8px;top:0;bottom:0;width:1px;background:var(--line)}.timeline-item{position:relative;min-height:86vh;display:flex;align-items:center;scroll-margin-top:20vh}.timeline-rail{position:absolute;left:-2.4rem;top:50%;transform:translateY(-50%);width:17px;height:17px;display:flex;align-items:center;justify-content:center}.tl-dot{width:11px;height:11px;border-radius:50%;background:var(--bg);border:1px solid var(--ink-3);transition:background .35s,border-color .35s,box-shadow .35s}.timeline-item.active .tl-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 14px #7fd4ffd9}.timeline-body{max-width:52rem}.tl-meta{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.06em;color:var(--ink-3);display:flex;gap:1.1rem;align-items:baseline}.tl-org{color:var(--ink-2)}.tl-role{font-family:var(--font-serif);font-weight:500;font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.15;margin:.6rem 0 1.1rem;transition:color .4s}.timeline-item:not(.active) .tl-role{color:var(--ink-3)}.tl-points{list-style:none}.tl-points li{position:relative;padding-left:1.15rem;color:var(--ink-2);font-size:.98rem;margin:.45rem 0}.tl-points li:before{content:"";position:absolute;left:0;top:.72em;width:.45rem;height:1px;background:var(--accent-soft);opacity:.65}.works-section{padding-top:clamp(5rem,12vh,9rem)}.works-section .section-inner{padding:0 1.5rem}.works{position:relative;margin-top:3.2rem}.works-sticky{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}.works-track{display:flex;gap:1.2rem;align-items:center;padding-left:max(1.5rem,calc((100vw - var(--max-w)) / 2));will-change:transform}.work-card{flex:0 0 clamp(300px,58vw,560px);height:min(70vh,540px);display:flex;flex-direction:column;border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden;background:#0f14238c;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);cursor:pointer;transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .35s}.work-card:hover{transform:translateY(-6px);border-color:#7fd4ff66}.work-card:active{transform:translateY(-2px)}.work-art{flex:1;position:relative;min-height:0}.work-art:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="2"/></filter><rect width="80" height="80" filter="url(%23n)" opacity="0.14"/></svg>');mix-blend-mode:overlay;pointer-events:none}.work-meta{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;color:var(--ink-3);padding:1rem 1.25rem .35rem}.work-title{padding:0 1.25rem 1.2rem;font-family:var(--font-serif);font-weight:500;font-size:1.4rem;line-height:1.15}.works-fog{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(to right,transparent 55%,rgba(4,6,14,.9) 100%)}.works-hint{position:absolute;right:max(1.5rem,calc((100vw - var(--max-w)) / 2));bottom:2rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);pointer-events:none}.contact{text-align:center;padding:clamp(6rem,15vh,11rem) 1.5rem}.contact-inner{max-width:var(--max-w);margin:0 auto}.contact h2{font-family:var(--font-serif);font-weight:500;font-size:clamp(2.4rem,5.5vw,4.2rem);line-height:1.08;margin:0 auto 1.6rem;text-wrap:balance}.contact-sub{color:var(--ink-2);margin:0 auto 2.6rem;max-width:40ch}.contact .email{font-family:var(--font-mono);font-size:clamp(1rem,2.4vw,1.25rem);color:var(--accent-soft);text-decoration:none;border-bottom:1px solid rgba(127,212,255,.35);padding-bottom:.2rem;transition:color .25s}.contact .email:hover{color:var(--accent)}.contact-socials{display:flex;gap:.9rem;justify-content:center;margin-top:2.6rem}.contact-socials a{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;color:var(--ink-2);text-decoration:none;border:1px solid var(--line-soft);border-radius:999px;padding:.55rem 1.15rem;display:inline-flex;gap:.45rem;align-items:center;transition:color .25s,border-color .25s}.contact-socials a:hover{color:var(--accent);border-color:#7fd4ff73}.back-top{display:inline-flex;align-items:center;gap:.4rem;margin-top:3.2rem;background:none;border:none;cursor:pointer;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);transition:color .25s}.back-top:hover{color:var(--accent)}.copyright{margin-top:1.6rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;color:var(--ink-3)}.glass-rail{position:fixed;right:1.2rem;top:50%;transform:translateY(-50%);z-index:var(--z-chrome);display:flex;flex-direction:column;gap:.3rem;align-items:flex-end}.rail-item{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);text-decoration:none;padding:.35rem .6rem;border-radius:999px;transition:color .25s,background .25s}.rail-item:hover{color:var(--ink)}.rail-item.active{color:var(--accent);background:#7fd4ff1a}.lang-toggle{position:fixed;top:1.1rem;right:1.3rem;z-index:var(--z-chrome);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;padding:.5rem 1rem;border-radius:999px;border:1px solid var(--glass-border);background:#0f142380;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--ink-2);cursor:pointer;transition:color .25s,border-color .25s}.lang-toggle:hover{color:var(--accent);border-color:#7fd4ff66}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-loader);background:radial-gradient(120% 120% at 50% 40%,var(--bg-top),var(--bg-deep));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem}.loader-mark{font-family:var(--font-serif);font-size:clamp(2.4rem,6vw,4rem);letter-spacing:.04em;color:var(--ink)}.loader-bar{width:min(260px,60vw);height:1px;background:#ffffff1f;position:relative;overflow:hidden}.loader-bar i{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left;background:var(--accent)}.loader-label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:#04060eb8;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;padding:1.5rem}.modal-panel{position:relative;width:min(720px,100%);max-height:88vh;overflow:auto;border:1px solid var(--glass-border);border-radius:var(--radius);background:#0d1221e0;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.modal-figure{height:240px;position:relative}.modal-body{padding:1.9rem}.modal-title{font-family:var(--font-serif);font-weight:500;font-size:clamp(1.7rem,3.5vw,2.3rem);line-height:1.1}.modal-meta{font-family:var(--font-mono);font-size:.76rem;letter-spacing:.06em;color:var(--ink-3);display:flex;gap:1rem;margin:.6rem 0 1.1rem}.modal-blurb{color:var(--ink-2);max-width:54ch}.modal-stack{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1.3rem}.modal-stack span{font-family:var(--font-mono);font-size:.72rem;color:var(--accent-soft);border:1px solid rgba(127,212,255,.25);padding:.25rem .65rem;border-radius:999px}.modal-close{position:absolute;top:.9rem;right:.9rem;width:38px;height:38px;border-radius:50%;border:1px solid var(--glass-border);background:#04060e73;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .25s,border-color .25s}.modal-close:hover{color:var(--accent);border-color:#7fd4ff73}@media (max-width: 768px){.skills-grid{grid-template-columns:1fr}.glass-rail{display:none}}@media (max-width: 480px){.timeline{padding-left:1.8rem}.timeline-rail{left:-1.8rem}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.noise{animation:none}.work-card,.skill-card,.rail-item,.btn,.contact-socials a{transition:none}}@media (prefers-reduced-transparency: reduce){.skill-card,.work-card,.modal-panel,.lang-toggle{backdrop-filter:none;-webkit-backdrop-filter:none;background:#0a0e1ae6}}
