*{box-sizing:border-box;margin:0;padding:0}
:root{
  --fg:#f4f3ef;
  --muted:rgba(244,243,239,.62);
  --line:rgba(255,255,255,.16);
  --accent:#ff5a36;
  --rainbow:linear-gradient(90deg,#ff8fb1,#ffd36e,#8ff0c0,#7fc8ff,#c69bff);
  --font:"Inter","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --pad:clamp(18px,3.2vw,44px);
}
html{background:#000;scrollbar-width:none}
html::-webkit-scrollbar{display:none}
body{font-family:var(--font);color:var(--fg);background:#000;-webkit-font-smoothing:antialiased;overflow-x:hidden;cursor:default}
body.is-light{--fg:#111114;--muted:rgba(17,17,20,.56);--line:rgba(0,0,0,.12)}
a{color:inherit}

#gl{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0}
.scroller{position:relative;height:1100vh;pointer-events:none}

/* ---------- 加载 ---------- */
.loader{position:fixed;inset:0;z-index:60;background:#000;display:flex;align-items:center;justify-content:center;transition:opacity .8s ease,visibility .8s}
.loader.is-done{opacity:0;visibility:hidden}
.loader-in{display:flex;flex-direction:column;align-items:center;gap:18px}
.loader-logo{display:flex;align-items:center;gap:12px;font-size:28px;font-weight:700;letter-spacing:-.02em;color:#f4f3ef}
.loader-num{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:rgba(244,243,239,.5)}
.loader-num::after{content:"%"}

/* ---------- 导航 ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;padding:20px var(--pad);pointer-events:none}
.nav a{pointer-events:auto}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:20px;letter-spacing:-.02em;color:var(--fg);transition:color .6s}
.logo-dot{width:22px;height:22px;border-radius:50%;flex:none;background:conic-gradient(from 30deg,#ff8fb1,#ffd36e,#8ff0c0,#7fc8ff,#c69bff,#ff8fb1);box-shadow:inset 0 0 0 5px #000;transition:box-shadow .6s}
body.is-light .logo-dot{box-shadow:inset 0 0 0 5px #efeee9}
.pills{display:flex;gap:8px}
.pill{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 18px;border-radius:999px;font-size:14px;font-weight:500;text-decoration:none;color:var(--fg);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:background .3s,color .6s,border-color .6s,transform .3s}
.pill:hover{background:rgba(255,255,255,.16);transform:translateY(-1px)}
.pill-solid{background:#f4f3ef;color:#0c0c0e;border-color:transparent}
.pill-solid:hover{background:#fff}
.pill-dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}
body.is-light .pill{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.1)}
body.is-light .pill-solid{background:#111114;color:#f4f3ef}

/* ---------- 章节文字 ---------- */
.chapters{position:fixed;inset:0;z-index:10;pointer-events:none}
.ch{position:absolute;opacity:0;visibility:hidden;--y:0px;will-change:opacity,transform}
.eyebrow,.num{font-size:12px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:18px;transition:color .6s}
.display{font-size:clamp(40px,6.2vw,104px);line-height:1.04;letter-spacing:-.035em;font-weight:650}
.ch h2{font-size:clamp(28px,3.4vw,54px);line-height:1.14;letter-spacing:-.025em;font-weight:600}
.ch h2.display{font-size:clamp(40px,6vw,98px);line-height:1.05}
.ch-hero,.ch-side,.ch-center,.ch-break{text-shadow:0 2px 40px rgba(0,0,0,.55)}
.ch-hero{left:var(--pad);bottom:clamp(96px,14vh,150px);max-width:min(820px,92vw);transform:translateY(var(--y))}
.ch-side{left:var(--pad);top:50%;max-width:min(560px,86vw);transform:translateY(calc(-50% + var(--y)))}
.ch-center{left:50%;top:22%;width:min(720px,90vw);text-align:center;transform:translate(-50%,var(--y))}
.ch-break{left:var(--pad);bottom:clamp(90px,13vh,140px);max-width:min(900px,92vw);transform:translateY(var(--y))}
.ch-hello{left:clamp(18px,5.5vw,96px);top:50%;max-width:min(640px,90vw);transform:translateY(calc(-50% + var(--y)));pointer-events:auto}
.ch-hello .display{font-size:clamp(42px,5.6vw,92px)}
.ch-hello em{font-style:normal;background:linear-gradient(100deg,#ff6f91 0%,#ffb347 30%,#4cc9a6 60%,#5aa7ff 80%,#a479ff 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{margin-top:22px;font-size:clamp(18px,1.6vw,24px);color:var(--muted);letter-spacing:-.01em}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}
.btn{display:inline-flex;align-items:center;gap:8px;height:52px;padding:0 26px;border-radius:999px;font:inherit;font-size:15px;font-weight:600;text-decoration:none;color:var(--fg);background:transparent;border:1px solid var(--line);cursor:pointer;transition:transform .3s,background .3s,border-color .3s}
.btn:hover{transform:translateY(-2px);border-color:currentColor}
.btn-solid{background:#111114;color:#f4f3ef;border-color:#111114}
.btn-solid:hover{background:#000;border-color:#000}
.btn-ghost{border-color:transparent;color:var(--muted)}

/* ---------- 打招呼气泡 ---------- */
.bubble{position:fixed;left:0;top:0;z-index:12;padding:12px 20px;border-radius:24px 24px 6px 24px;background:#111114;color:#f4f3ef;font-size:24px;font-weight:700;letter-spacing:-.01em;white-space:nowrap;opacity:0;pointer-events:none;transform-origin:100% 100%;box-shadow:0 14px 40px rgba(0,0,0,.18)}
.bubble-hand{display:inline-block;margin-left:6px;transform-origin:70% 80%;animation:wave 1.1s ease-in-out infinite}
@keyframes wave{0%,100%{transform:rotate(0)}25%{transform:rotate(18deg)}75%{transform:rotate(-12deg)}}

/* ---------- 底部 HUD ---------- */
.hud{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;justify-content:space-between;align-items:flex-end;padding:22px var(--pad);pointer-events:none;font-size:12px;letter-spacing:.14em;color:var(--muted);font-variant-numeric:tabular-nums;transition:color .6s}
.hud-l b{color:var(--fg);font-weight:600;margin-right:12px;transition:color .6s}
.hud-steps{position:absolute;left:50%;bottom:22px;width:min(440px,64vw);transform:translateX(-50%);opacity:0;text-align:center;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:rgba(255,255,255,.6)}
.hs-row b{color:#fff;font-weight:600;margin:0 8px;display:inline-block;min-width:4ch}
.hs-bar{height:2px;margin:10px 0 9px;border-radius:2px;background:rgba(255,255,255,.14);overflow:hidden}
.hs-bar i{display:block;height:100%;width:0;background:var(--rainbow)}
.hs-prompt{min-height:1.4em;letter-spacing:.02em;color:rgba(255,255,255,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hs-prompt::after{content:"▌";animation:blink 1s steps(2) infinite;margin-left:2px;color:rgba(255,255,255,.6)}
@keyframes blink{50%{opacity:0}}

.scroll-hint{position:fixed;left:50%;bottom:26px;z-index:15;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;font-size:12px;letter-spacing:.16em;color:rgba(244,243,239,.7);pointer-events:none}
.scroll-hint i{width:1px;height:42px;background:linear-gradient(rgba(255,255,255,0),rgba(255,255,255,.9));transform-origin:top;animation:drop 1.8s cubic-bezier(.6,0,.2,1) infinite}
@keyframes drop{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}

.rail{position:fixed;right:var(--pad);top:50%;z-index:15;width:1px;height:26vh;transform:translateY(-50%);background:var(--line);pointer-events:none;transition:background .6s}
.rail i{position:absolute;left:0;top:0;width:1px;height:100%;background:var(--fg);transform-origin:top;transform:scaleY(0);transition:background .6s}

/* ---------- 闪白 / 屏幕边框 ---------- */
.flash{position:fixed;inset:0;z-index:9;background:#fff;opacity:0;pointer-events:none}
.frame{position:fixed;inset:clamp(10px,2vw,22px);z-index:8;opacity:0;pointer-events:none}
.frame i{position:absolute;width:28px;height:28px;border:0 solid rgba(255,255,255,.9)}
.frame i:nth-child(1){left:0;top:0;border-left-width:1.5px;border-top-width:1.5px}
.frame i:nth-child(2){right:0;top:0;border-right-width:1.5px;border-top-width:1.5px}
.frame i:nth-child(3){left:0;bottom:0;border-left-width:1.5px;border-bottom-width:1.5px}
.frame i:nth-child(4){right:0;bottom:0;border-right-width:1.5px;border-bottom-width:1.5px}
.frame-tag{position:absolute;left:50%;bottom:40px;transform:translateX(-50%);font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:rgba(255,255,255,.85);white-space:nowrap}
.frame-tag::before{content:"";display:inline-block;width:7px;height:7px;margin-right:9px;border-radius:50%;background:var(--accent);vertical-align:1px;animation:blink 1s steps(2) infinite}

/* ---------- 光标 ---------- */
.cursor{position:fixed;left:0;top:0;z-index:40;width:34px;height:34px;margin:-17px 0 0 -17px;border:1px solid #fff;border-radius:50%;pointer-events:none;mix-blend-mode:difference;opacity:0;transition:width .25s,height .25s,margin .25s,opacity .3s,background .25s}
.cursor.is-on{opacity:.8}
.cursor.is-link{width:64px;height:64px;margin:-32px 0 0 -32px;background:#fff}
@media (hover:none){.cursor{display:none}}

.noscript{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#000;color:#f4f3ef;font-size:18px}

/* ---------- 没有 WebGL：直接显示结尾 ---------- */
body.no-webgl{background:radial-gradient(circle at 70% 55%,#fff 0,#efeee9 45%,#e4e3ea 100%);--fg:#111114;--muted:rgba(17,17,20,.56);--line:rgba(0,0,0,.12)}
body.no-webgl #gl,body.no-webgl .hud,body.no-webgl .rail,body.no-webgl .scroll-hint,body.no-webgl .scroller{display:none}
body.no-webgl .ch-hello{opacity:1;visibility:visible}
body.no-webgl .logo-dot{box-shadow:inset 0 0 0 5px #efeee9}

/* ---------- 手机 ---------- */
@media (max-width:760px){
  .hide-m{display:none}
  .nav{padding-top:16px}
  .pill{height:36px;padding:0 15px;font-size:13px}
  .ch-hero{bottom:104px}
  .ch-side{top:auto;bottom:118px;transform:translateY(var(--y))}
  .ch-center{top:16%}
  .ch-break{bottom:110px}
  .ch-hello{left:18px;right:18px;top:88px;max-width:none;text-align:center;transform:translateY(var(--y))}
  .ch-hello .display{font-size:clamp(34px,10vw,48px)}
  .lead{margin-top:14px;font-size:16px}
  .cta{justify-content:center;margin-top:22px}
  .btn{height:46px;padding:0 20px;font-size:14px}
  .btn-ghost{display:none}
  .hud{padding:16px 18px}
  .hud-steps{bottom:46px;width:84vw}
  .rail{display:none}
  .bubble{font-size:20px;padding:10px 16px}
  .frame-tag{bottom:28px}
}

@media (prefers-reduced-motion:reduce){
  .scroll-hint i,.bubble-hand,.hs-prompt::after,.frame-tag::before{animation:none}
}
