/* 强来 · 官网。水墨宣纸 + 朱砂印 + 2026 的青绿信号。 */
@font-face{font-family:"QL Display";src:url(/assets/fonts/ql-display.woff) format("woff");font-weight:700;font-display:swap}
@font-face{font-family:"QL Heading";src:url(/assets/fonts/ql-heading.woff) format("woff");font-weight:700;font-display:swap}
@font-face{font-family:"QL Text";src:url(/assets/fonts/ql-text.woff) format("woff");font-weight:400;font-display:swap}

:root{
  --paper:#efe8d8;--paper-2:#e5dbc4;--paper-3:#d9ccb0;
  --ink:#191714;--ink-2:#37322b;--muted:#6d6457;--line:rgba(25,23,20,.16);
  --seal:#ab231b;--seal-2:#8a1912;
  --jade:#2d776d;--jade-2:#1f564f;--jade-glow:#7fd3c4;
  --night:#14171a;--night-2:#1d2226;--night-line:rgba(239,232,216,.14);
  --display:"QL Display","Source Han Serif SC","Noto Serif SC","Songti SC",serif;
  --heading:"QL Heading","Source Han Sans SC","Noto Sans SC","PingFang SC",sans-serif;
  --text:"QL Text","Noto Sans SC","Source Han Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  --wrap:min(1180px,100% - 32px);
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .3 0 0 0 0 .22 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.85 var(--text);letter-spacing:.01em;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;background:var(--grain);opacity:.38;pointer-events:none;z-index:0;mix-blend-mode:multiply}
main,.topbar,.footer{position:relative;z-index:1}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
button{font:inherit}
::selection{background:var(--seal);color:var(--paper)}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--paper);padding:8px 14px;z-index:99}
.skip:focus{left:12px}
:focus-visible{outline:2px dashed var(--seal);outline-offset:3px}
code{font:600 .92em/1 ui-monospace,Consolas,monospace;background:rgba(25,23,20,.07);padding:.15em .4em;border-radius:3px}

/* ---- 印章 ---- */
.seal{display:inline-grid;grid-template-columns:1fr 1fr;width:58px;height:58px;padding:5px;background:var(--seal);color:var(--paper);font:700 22px/1 var(--display);border-radius:6px 3px 7px 4px;box-shadow:inset 0 0 0 2px rgba(239,232,216,.35);filter:url(#rough);writing-mode:vertical-rl;place-items:center}
.seal--small{width:38px;height:38px;font-size:15px;padding:3px;border-radius:4px 2px 5px 3px}
.stamp{position:absolute;font:700 18px/1 var(--display);color:var(--seal);border:3px solid var(--seal);padding:8px 10px 6px;letter-spacing:.3em;border-radius:6px;transform:rotate(-9deg);opacity:.86;mix-blend-mode:multiply;pointer-events:none;background:radial-gradient(circle at 30% 40%,transparent 60%,rgba(239,232,216,.5) 61%,transparent 64%)}

/* ---- 顶栏 ---- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:24px;padding:10px max(16px,calc((100% - 1180px)/2));background:rgba(239,232,216,.86);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand__name{font:700 22px/1 var(--display);display:flex;flex-direction:column;gap:3px}
.brand__name small{font:600 9px/1 var(--heading);letter-spacing:.42em;color:var(--muted)}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{font:600 15px/1 var(--heading);text-decoration:none;padding:9px 12px;border-radius:999px;color:var(--ink-2);transition:background .2s,color .2s}
.nav a:hover{background:rgba(25,23,20,.07);color:var(--ink)}
.nav__cta{background:var(--ink)!important;color:var(--paper)!important}
.nav__cta:hover{background:var(--seal)!important}
.signal{font:600 13px/1 var(--heading);color:var(--ink-2);display:flex;align-items:center;gap:7px;white-space:nowrap;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.25)}
.signal b{font:700 15px/1 ui-monospace,Consolas,monospace;color:var(--jade-2);min-width:4ch;text-align:right}
.signal__dot{width:8px;height:8px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 0 var(--jade-glow);animation:pulse 1.8s infinite}
.signal.done b{color:var(--seal)}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(127,211,196,.8)}80%{box-shadow:0 0 0 8px rgba(127,211,196,0)}100%{box-shadow:0 0 0 0 rgba(127,211,196,0)}}

/* ---- 号外 ---- */
.hero{position:relative;width:var(--wrap);margin:0 auto;display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(24px,5vw,72px);align-items:center;padding:clamp(32px,6vw,84px) 0 clamp(40px,5vw,72px)}
.hero__ink{position:absolute;inset:-10% -30% auto auto;width:70%;height:120%;background:radial-gradient(closest-side,rgba(45,119,109,.20),transparent 70%),radial-gradient(closest-side at 30% 70%,rgba(25,23,20,.10),transparent 70%);filter:blur(10px);pointer-events:none}
.kicker{font:600 13px/1.4 var(--heading);letter-spacing:.18em;color:var(--muted);margin:0 0 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kicker__date{background:var(--ink);color:var(--paper);padding:4px 8px;letter-spacing:.08em;border-radius:2px}
.hero__title{margin:0;font:700 clamp(112px,17vw,230px)/.86 var(--display);letter-spacing:-.04em;display:flex;align-items:flex-end;gap:.02em}
.hero__qiang{display:inline-block;animation:inkIn 1s cubic-bezier(.2,.7,.2,1) both}
.hero__lai{display:inline-block;color:transparent;-webkit-text-stroke:2px var(--ink);animation:inkIn 1s .18s cubic-bezier(.2,.7,.2,1) both;position:relative}
.hero__lai::after{content:"来";position:absolute;inset:0;color:var(--ink);clip-path:inset(130% 0 -30% 0);animation:fillUp 1.4s .9s cubic-bezier(.6,0,.2,1) forwards}
@keyframes inkIn{from{opacity:0;transform:translateY(24px) scale(.96);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes fillUp{to{clip-path:inset(-30% 0 -30% 0)}}
.hero__motto{font:700 clamp(24px,3vw,34px)/1.3 var(--display);margin:18px 0 22px;color:var(--seal);letter-spacing:.12em;animation:inkIn .9s .45s both}
.hero__lede{max-width:34em;color:var(--ink-2);animation:inkIn .9s .6s both}
.hero__lede p{margin:0 0 12px}
.radio-line{margin:14px 0;padding:14px 18px;border-left:3px solid var(--jade);background:linear-gradient(90deg,rgba(45,119,109,.10),transparent);font:400 16px/1.8 var(--text);color:var(--jade-2);position:relative}
.radio-line::before{content:"电台";position:absolute;top:-10px;left:12px;font:700 11px/1 var(--heading);background:var(--jade);color:var(--paper);padding:4px 6px;letter-spacing:.2em}
.hero__actions{display:flex;gap:14px;flex-wrap:wrap;margin:28px 0 14px;animation:inkIn .9s .75s both}
.hero__fine{font:600 13px/1.6 var(--heading);color:var(--muted);margin:0;letter-spacing:.06em}
.hero__poster{position:relative;margin:0;justify-self:end;max-width:460px;animation:inkIn 1.1s .3s both}
.hero__poster img{width:100%;border-radius:2px;box-shadow:0 1px 0 var(--paper-3),18px 22px 0 -6px rgba(25,23,20,.08),0 30px 60px -30px rgba(25,23,20,.55);transform:rotate(1.4deg)}
.hero__poster figcaption{position:absolute;right:-14px;top:22px;writing-mode:vertical-rl;font:700 20px/1.4 var(--display);letter-spacing:.3em;background:var(--ink);color:var(--paper);padding:14px 8px}
.stamp--hero{left:-26px;bottom:42px;font-size:24px;transform:rotate(-14deg)}

/* ---- 按钮 ---- */
.btn{display:inline-flex;align-items:center;gap:12px;text-decoration:none;cursor:pointer;border:0;padding:14px 22px 13px;border-radius:3px;font:700 17px/1.15 var(--heading);transition:transform .18s,box-shadow .18s,background .2s;position:relative}
.btn svg{width:22px;height:22px;fill:currentColor;flex:none}
.btn span{display:flex;flex-direction:column;gap:3px}
.btn small{font:600 12px/1 var(--heading);opacity:.72;letter-spacing:.06em}
.btn:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--seal)}
.btn:active{transform:none;box-shadow:none}
.btn--ink{background:var(--ink);color:var(--paper)}
.btn--jade{background:var(--jade);color:#f3fbf9}
.btn--jade:hover{box-shadow:4px 4px 0 var(--ink)}
.btn--paper{background:var(--paper);color:var(--ink)}
.btn--seal{background:var(--seal);color:var(--paper)}
.btn--small{padding:9px 16px;font-size:15px}

/* ---- 走马灯 ---- */
.ticker{position:relative;background:var(--ink);color:var(--paper);overflow:hidden;border-block:1px solid #000;transform:rotate(-1deg);margin:8px -2% 0;width:104%}
.ticker__track{display:flex;gap:48px;width:max-content;padding:13px 0;animation:tick 60s linear infinite;font:600 15px/1 var(--heading);letter-spacing:.04em}
.ticker__track span::before{content:"◉ ";color:var(--jade-glow)}
.ticker:hover .ticker__track{animation-play-state:paused}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---- 通用段落 ---- */
.section{width:var(--wrap);margin:0 auto;padding:clamp(64px,9vw,120px) 0 0}
.section__head{display:grid;grid-template-columns:auto 1fr;column-gap:20px;align-items:end;margin-bottom:clamp(28px,4vw,48px);border-bottom:2px solid var(--ink);padding-bottom:18px}
.section__no{grid-row:span 2;margin:0;font:700 clamp(64px,8vw,104px)/.8 var(--display);color:var(--seal)}
.section__head h2{margin:0;font:700 clamp(32px,4.4vw,56px)/1.12 var(--display);letter-spacing:.02em}
.section__sub{margin:6px 0 0;font:600 14px/1.5 var(--heading);color:var(--muted);letter-spacing:.06em}
.br-sm{display:none}

/* ---- 一条规则 ---- */
.rule__quote{margin:0 0 28px;font:700 clamp(30px,5.4vw,72px)/1.18 var(--display);letter-spacing:.02em}
.rule__quote p{margin:0}
.rule__quote em{font-style:normal;color:var(--seal);background:linear-gradient(transparent 62%,rgba(171,35,27,.16) 62%)}
.rule__intro{max-width:46em;font-size:18px;color:var(--ink-2);margin:0 0 40px}
.rule__list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.card{position:relative;padding:26px 24px 22px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.35),rgba(255,255,255,.08));border-radius:2px}
.card::before{content:"";position:absolute;inset:6px;border:1px dashed rgba(25,23,20,.10);pointer-events:none}
.card h3{font:700 24px/1.3 var(--display);margin:8px 0 10px}
.card p{margin:0;color:var(--ink-2);font-size:16px}
.card__no{font:700 15px/1 var(--display);color:var(--paper);background:var(--ink);width:30px;height:30px;display:grid;place-items:center;border-radius:50%}
.rule__note{position:relative;margin:36px 0 0;padding:22px 26px 22px 120px;background:var(--paper-2);border-radius:2px;color:var(--ink-2)}
.rule__note p{margin:0}
.rule__note .stamp{left:22px;top:50%;margin-top:-20px}

/* ---- 消音 ---- */
.redact{display:inline;border:0;padding:0 .3em;margin:0 .1em;cursor:pointer;color:transparent;background:var(--ink);border-radius:2px;font:inherit;line-height:1.3;position:relative;transition:background .15s;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.redact:hover{background:var(--seal)}
.redact.bleep::after{content:"哔——";position:absolute;left:50%;bottom:110%;transform:translateX(-50%);white-space:nowrap;font:700 15px/1 var(--heading);color:var(--paper);background:var(--seal);padding:6px 9px;border-radius:3px;animation:bleep .9s forwards}
@keyframes bleep{0%{opacity:0;transform:translate(-50%,6px)}15%,70%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-6px)}}

/* ---- 前情 ---- */
.dossier{display:grid;grid-template-columns:1.1fr .9fr;gap:36px;align-items:start}
.dossier__paper{position:relative;background:#f6f1e4;padding:34px 34px 30px;box-shadow:0 1px 0 var(--paper-3),0 18px 40px -26px rgba(25,23,20,.5);border-radius:2px;background-image:repeating-linear-gradient(transparent 0 33px,rgba(45,119,109,.10) 33px 34px);font-size:16px}
.dossier__paper::before{content:"";position:absolute;left:58px;top:0;bottom:0;width:1px;background:rgba(171,35,27,.28)}
.dossier__meta{margin:0 0 14px 40px;color:var(--muted);font-size:14px;line-height:1.9}
.script{display:grid;grid-template-columns:76px 1fr;gap:4px 14px;margin:0 0 16px}
.script dt{font:700 14px/1.9 var(--heading);text-align:right;color:var(--ink-2)}
.script dd{margin:0;line-height:1.9}
.script__fatal{font-weight:700;color:var(--seal);background:linear-gradient(transparent 60%,rgba(171,35,27,.14) 60%)}
.stamp--file{right:24px;bottom:22px;font-size:20px}
.dossier__photo{margin:0;position:sticky;top:90px}
.dossier__photo img{border-radius:2px;filter:sepia(.25) contrast(1.05);box-shadow:0 20px 50px -26px rgba(25,23,20,.7)}
.dossier__photo figcaption{font:600 14px/1.5 var(--heading);color:var(--muted);margin-top:10px}
.acts__title{font:700 28px/1.3 var(--display);margin:64px 0 22px}
.acts{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--ink)}
.act{padding:22px 20px 26px;border-right:1px solid var(--line);position:relative}
.act:last-child{border-right:0}
.act h4{font:700 22px/1.3 var(--display);margin:6px 0 10px}
.act p{margin:0 0 10px;font-size:15px;color:var(--ink-2)}
.act__level{display:flex;align-items:center;gap:8px;font:700 13px/1 var(--heading)!important;color:var(--seal)!important;letter-spacing:.06em}
.act__level span{color:var(--muted);font-weight:600}
.act__level i{width:48px;height:6px;background:var(--paper-3);position:relative;border-radius:3px;overflow:hidden}
.act__level i::after{content:"";position:absolute;inset:0;width:calc(var(--lv)*33.4%);background:var(--seal)}
.act__real{border-top:1px dashed var(--line);padding-top:10px;color:var(--ink)!important;font-weight:600}
.act--last{background:var(--ink);color:var(--paper)}
.act--last p{color:rgba(239,232,216,.78)}
.act--last .act__real{color:var(--paper)!important;border-color:var(--night-line)}
.act--last .redact{background:var(--paper)}

/* ---- 人物与建模 ---- */
.viewer{display:grid;grid-template-columns:1.35fr 1fr;gap:0;background:var(--night);color:var(--paper);border-radius:4px;overflow:hidden;box-shadow:0 30px 70px -40px rgba(0,0,0,.7)}
.viewer__stage{position:relative;min-height:560px;background:radial-gradient(ellipse at 50% 85%,rgba(127,211,196,.22),transparent 55%),radial-gradient(ellipse at 50% 30%,#2b3237,#14171a 75%)}
.viewer__stage::after{content:"";position:absolute;left:50%;bottom:64px;width:58%;height:22px;transform:translateX(-50%);border-radius:50%;border:1px solid rgba(127,211,196,.35);box-shadow:0 0 30px rgba(127,211,196,.18);pointer-events:none}
.viewer__canvas{position:absolute;inset:0}
.viewer__canvas model-viewer{width:100%;height:100%;--poster-color:transparent;--progress-bar-color:var(--jade-glow);background:transparent}
.viewer__loading,.viewer__fallback{position:absolute;inset:auto 0 46%;text-align:center;font:600 15px/1 var(--heading);letter-spacing:.3em;color:rgba(239,232,216,.6);margin:0}
.viewer__tools{position:absolute;left:18px;top:16px;display:flex;gap:8px;z-index:2}
.chip{background:rgba(239,232,216,.08);color:var(--paper);border:1px solid var(--night-line);border-radius:999px;padding:7px 13px;font:600 13px/1 var(--heading);cursor:pointer}
.chip[aria-pressed="true"]{background:var(--jade);border-color:var(--jade)}
.viewer__plate{position:absolute;left:18px;bottom:16px;font:700 clamp(40px,6vw,76px)/1 var(--display);color:rgba(239,232,216,.10);pointer-events:none;letter-spacing:.06em}
.viewer__file{padding:30px 30px 28px;border-left:1px solid var(--night-line);background:var(--night-2);position:relative;min-height:320px}
.viewer__file h3{font:700 40px/1.1 var(--display);margin:0 0 6px}
.viewer__file .person__role{color:var(--jade-glow)}
.viewer__file dl{margin:22px 0 0}
.viewer__file dt{font:700 12px/1 var(--heading);letter-spacing:.24em;color:rgba(239,232,216,.5);margin-top:16px}
.viewer__file dd{margin:6px 0 0;font-size:16px;line-height:1.75}
.viewer__file .redact{background:var(--paper)}
.viewer__note{margin:22px 0 0;padding:10px 12px;border:1px dashed rgba(127,211,196,.4);color:var(--jade-glow);font:600 13px/1.6 var(--heading)}
.viewer__file .stamp{right:22px;top:22px;color:#e2574c;border-color:#e2574c;mix-blend-mode:normal}
.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-top:22px}
.roster__group{grid-column:1/-1;margin:18px 0 0;font:700 13px/1 var(--heading);letter-spacing:.28em;color:var(--muted);display:flex;align-items:center;gap:12px}
.roster__group::after{content:"";flex:1;height:1px;background:var(--line)}
.person{cursor:pointer;padding:14px 14px 12px;border:1px solid var(--line);background:rgba(255,255,255,.25);border-radius:2px;transition:background .2s,transform .2s,border-color .2s;position:relative;overflow:hidden}
.person:hover{transform:translateY(-2px);border-color:var(--ink)}
.person[aria-selected="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.person[aria-selected="true"]::after{content:"在线";position:absolute;right:8px;top:8px;font:700 10px/1 var(--heading);background:var(--jade);color:#fff;padding:3px 5px;letter-spacing:.1em}
.person h3{margin:0;font:700 20px/1.25 var(--display)}
.person__role{margin:4px 0 0;font:600 12px/1.45 var(--heading);color:var(--muted)}
.person[aria-selected="true"] .person__role{color:var(--jade-glow)}
.roster .person dl{display:none}

/* ---- 特色 ---- */
.feature{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,4vw,56px);align-items:center;margin-bottom:56px}
.feature--flip{grid-template-columns:1fr 1.25fr}
.feature--flip img{order:2}
.feature img,.tile img{border-radius:2px;box-shadow:0 22px 50px -30px rgba(25,23,20,.75);aspect-ratio:16/9;object-fit:cover;width:100%}
.feature h3{font:700 clamp(26px,3vw,36px)/1.25 var(--display);margin:0 0 12px}
.feature p{margin:0 0 12px;color:var(--ink-2)}
.feature__joke{font:600 15px/1.7 var(--heading);color:var(--jade-2)!important;border-left:3px solid var(--jade);padding-left:12px}
.feature-grid{list-style:none;padding:0;margin:0 0 64px;display:grid;grid-template-columns:repeat(4,1fr);gap:28px 22px}
.tile h3{font:700 20px/1.35 var(--display);margin:14px 0 6px}
.tile p{margin:0;font-size:15px;color:var(--ink-2);line-height:1.75}
.tile img{transition:transform .35s,filter .35s;filter:saturate(.9)}
.tile:hover img{transform:translateY(-4px) rotate(-.6deg);filter:saturate(1.05)}
.android-note{display:grid;grid-template-columns:1fr 1.05fr;gap:40px;align-items:center;background:linear-gradient(135deg,var(--jade-2),#173f3a);color:#eaf6f3;padding:clamp(28px,4vw,48px);border-radius:4px;position:relative;overflow:hidden}
.android-note::before{content:"";position:absolute;inset:0;background:var(--grain);opacity:.25;mix-blend-mode:overlay;pointer-events:none}
.android-note .kicker{color:var(--jade-glow)}
.android-note h3{font:700 clamp(26px,3vw,38px)/1.25 var(--display);margin:0 0 14px}
.android-note ul{margin:0;padding:0 0 0 1.1em;font-size:15.5px;line-height:1.8}
.android-note li{margin-bottom:6px}
.android-note b{color:#fff}
.phone{position:relative;border:10px solid #0d0f10;border-radius:26px;background:#0d0f10;box-shadow:0 30px 60px -20px rgba(0,0,0,.6),inset 0 0 0 2px #2a2f33;transform:rotate(-2.5deg)}
.phone::before{content:"";position:absolute;left:-4px;top:50%;width:4px;height:44px;margin-top:-22px;background:#2a2f33;border-radius:3px 0 0 3px}
.phone__screen{border-radius:14px;overflow:hidden}

/* ---- 下载 ---- */
.download{width:100%;max-width:none;background:var(--night);color:var(--paper);padding:clamp(64px,8vw,110px) max(16px,calc((100% - 1180px)/2)) clamp(56px,7vw,90px);margin-top:clamp(64px,9vw,120px);position:relative}
.download::before{content:"";position:absolute;inset:0;background:var(--grain);opacity:.18;mix-blend-mode:screen;pointer-events:none}
.section__head--dark{border-color:var(--paper)}
.section__head--dark .section__sub{color:rgba(239,232,216,.6)}
.switchboard{display:grid;grid-template-columns:1fr 1fr;gap:22px;position:relative}
.jack{background:var(--night-2);border:1px solid var(--night-line);border-radius:4px;padding:26px 26px 28px;display:flex;flex-direction:column}
.jack header{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.jack h3{margin:0;font:700 32px/1 var(--display)}
.jack__tag{margin-left:auto;font:700 12px/1 var(--heading);letter-spacing:.2em;border:1px solid var(--night-line);padding:6px 8px;border-radius:2px;color:rgba(239,232,216,.7)}
.jack__plug{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#e88a82,var(--seal) 60%);box-shadow:0 0 12px rgba(171,35,27,.6)}
.jack__plug--jade{background:radial-gradient(circle at 35% 35%,#b8f0e6,var(--jade) 60%);box-shadow:0 0 12px rgba(127,211,196,.5)}
.jack__spec{display:grid;grid-template-columns:72px 1fr;gap:8px 14px;margin:12px 0 18px;font-size:15px}
.jack__spec dt{font:700 12px/1.9 var(--heading);letter-spacing:.14em;color:rgba(239,232,216,.5)}
.jack__spec dd{margin:0;line-height:1.7}
.hash{font:500 12px/1.6 ui-monospace,Consolas,monospace;word-break:break-all;color:var(--jade-glow)}
.jack__steps{margin:0 0 22px;padding-left:1.2em;font-size:15px;color:rgba(239,232,216,.8);line-height:1.8;flex:1}
.jack .btn{justify-content:center}
.jack .btn--paper:hover{box-shadow:4px 4px 0 var(--seal)}
.jack .btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.download__fine{position:relative;font:600 13px/1.7 var(--heading);color:rgba(239,232,216,.55);margin:22px 0 0}
.download__fine code{background:rgba(239,232,216,.1)}

/* ---- FAQ ---- */
.faq__list{display:grid;grid-template-columns:1fr 1fr;gap:0 40px}
.faq details{border-bottom:1px solid var(--line);padding:4px 0}
.faq summary{cursor:pointer;list-style:none;font:700 19px/1.5 var(--display);padding:14px 30px 14px 0;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:12px;font:400 26px/1 var(--heading);color:var(--seal);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{margin:0 0 16px;color:var(--ink-2);font-size:16px}

/* ---- 页脚 ---- */
.footer{text-align:center;padding:90px 16px 60px}
.footer__line{font:700 clamp(26px,4vw,44px)/1.3 var(--display);margin:22px 0 14px;letter-spacing:.12em}
.footer__small{font:600 13px/1.8 var(--heading);color:var(--muted);margin:4px auto;max-width:44em}

/* ---- 少佐来电 ---- */
.call{position:fixed;right:20px;bottom:20px;z-index:40;width:min(340px,calc(100% - 32px));background:var(--night);color:var(--paper);border-radius:14px;padding:16px 18px 16px;box-shadow:0 24px 60px -20px rgba(0,0,0,.7);border:1px solid var(--night-line);animation:ring .5s cubic-bezier(.2,.8,.2,1.3) both}
.call[hidden]{display:none}
.call__from{display:flex;align-items:center;gap:8px;margin:0;font:700 12px/1 var(--heading);letter-spacing:.16em;color:var(--jade-glow)}
.call__from svg{width:16px;height:16px;fill:currentColor;animation:shake 1s infinite}
.call__title{font:700 19px/1.45 var(--display);margin:10px 0 6px}
.call__body{font-size:14px;line-height:1.7;color:rgba(239,232,216,.75);margin:0 0 14px}
.call__actions{display:flex;gap:10px}
.call__actions .btn{flex:1;justify-content:center}
@keyframes ring{from{opacity:0;transform:translateY(30px) scale(.94)}to{opacity:1;transform:none}}
@keyframes shake{0%,50%,100%{transform:rotate(0)}10%,30%{transform:rotate(-14deg)}20%,40%{transform:rotate(14deg)}}

/* ---- 进场 ---- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* ---- 响应式 ---- */
@media (max-width:1020px){
  .feature-grid{grid-template-columns:repeat(2,1fr)}
  .acts{grid-template-columns:1fr 1fr}
  .act:nth-child(2){border-right:0}
  .act:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .viewer{grid-template-columns:1fr}
  .viewer__file{border-left:0;border-top:1px solid var(--night-line)}
  .viewer__stage{min-height:480px}
  .signal__total{display:none}
}
@media (max-width:820px){
  .nav{display:none}
  .signal{margin-left:auto}
  .hero{grid-template-columns:1fr;padding-top:28px}
  .hero__poster{justify-self:center;max-width:300px;margin-top:8px}
  .hero__poster figcaption{right:-8px;font-size:16px}
  .stamp--hero{left:-8px}
  .rule__list,.dossier,.feature,.feature--flip,.switchboard,.faq__list,.android-note{grid-template-columns:1fr}
  .feature--flip img{order:0}
  .dossier__photo{position:static}
  .rule__note{padding:70px 20px 20px}
  .rule__note .stamp{top:20px;margin:0}
  .br-sm{display:inline}
}
@media (max-width:560px){
  body{font-size:16px}
  .hero__title{font-size:31vw}
  .hero__actions .btn{flex:1 1 100%;justify-content:center}
  .acts{grid-template-columns:1fr}
  .act{border-right:0;border-bottom:1px solid var(--line)}
  .feature-grid{grid-template-columns:1fr}
  .dossier__paper{padding:24px 16px 22px;font-size:15px}
  .dossier__paper::before{left:22px}
  .dossier__meta{margin-left:14px}
  .script{grid-template-columns:58px 1fr;gap:2px 10px}
  .script dt{font-size:13px}
  .viewer__stage{min-height:420px}
  .viewer__file{padding:22px 18px}
  .roster{grid-template-columns:repeat(2,1fr)}
  .brand__name small{display:none}
  .section__head{column-gap:12px}
  .ticker__track{font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
}

/* ================================================================
   色彩与动效：宣纸上多了藤黄、靛青、胭脂、赭石；每一段有自己的颜色。
   ================================================================ */
@property --accent{syntax:"<color>";inherits:true;initial-value:#7fd3c4}
:root{
  --gamboge:#e0a12a;--gamboge-2:#a8700a;--indigo:#2f5d9e;--indigo-2:#1d3c6e;
  --rouge:#c2405e;--rouge-2:#962c47;--ochre:#b5623a;--violet:#7a4fb0;--azure:#4f9fd8;
  --rainbow:linear-gradient(90deg,var(--seal),var(--gamboge) 28%,var(--jade) 55%,var(--indigo) 80%,var(--rouge));
}
body{background:radial-gradient(1200px 700px at 110% -10%,rgba(224,161,42,.16),transparent 60%),radial-gradient(900px 600px at -10% 40%,rgba(47,93,158,.10),transparent 60%),radial-gradient(900px 700px at 105% 75%,rgba(194,64,94,.09),transparent 60%),var(--paper);background-attachment:fixed}

/* 顶栏：撤离进度条 */
.topbar__progress{position:absolute;left:0;bottom:-1px;height:3px;width:100%;background:var(--rainbow);transform-origin:0 50%;transform:scaleX(var(--scroll,0));transition:transform .15s linear}
.signal{position:relative;overflow:hidden}
.signal::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc(var(--scroll,0)*100%);background:linear-gradient(90deg,var(--gamboge),var(--jade))}
.signal.done{border-color:var(--seal);background:rgba(171,35,27,.08);animation:doneGlow 1.6s ease-in-out infinite alternate}
@keyframes doneGlow{to{box-shadow:0 0 0 4px rgba(224,161,42,.25)}}
.nav a{position:relative}
.nav a:not(.nav__cta)::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:2px;background:var(--c,var(--seal));transform:scaleX(0);transform-origin:left;transition:transform .25s}
.nav a:not(.nav__cta):hover::after{transform:scaleX(1)}
.nav a:nth-child(1){--c:var(--seal)}.nav a:nth-child(2){--c:var(--gamboge-2)}.nav a:nth-child(3){--c:var(--jade)}.nav a:nth-child(4){--c:var(--indigo)}
.seal--small{transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.brand:hover .seal--small{transform:rotate(-12deg) scale(1.08)}

/* 号外：漂移的彩墨 */
.hero{isolation:isolate}
.hero__blobs{position:absolute;inset:-6% -12%;pointer-events:none;z-index:-1;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(46px);opacity:.55;mix-blend-mode:multiply;animation:drift 22s ease-in-out infinite alternate}
.blob--a{width:44%;aspect-ratio:1;right:2%;top:4%;background:radial-gradient(circle,rgba(45,119,109,.55),transparent 68%)}
.blob--b{width:34%;aspect-ratio:1;right:26%;top:46%;background:radial-gradient(circle,rgba(224,161,42,.6),transparent 68%);animation-duration:27s;animation-delay:-8s}
.blob--c{width:30%;aspect-ratio:1;left:-4%;top:-6%;background:radial-gradient(circle,rgba(194,64,94,.38),transparent 68%);animation-duration:31s;animation-delay:-14s}
.blob--d{width:26%;aspect-ratio:1;left:30%;bottom:-10%;background:radial-gradient(circle,rgba(47,93,158,.4),transparent 68%);animation-duration:25s;animation-delay:-3s}
@keyframes drift{0%{transform:translate(0,0) scale(1)}33%{transform:translate(6%,-8%) scale(1.12)}66%{transform:translate(-8%,6%) scale(.92)}100%{transform:translate(4%,4%) scale(1.06)}}
.hero__ink{display:none}
.kicker__date{background:var(--seal);animation:inkIn .7s both}
.hero__qiang{background:linear-gradient(170deg,var(--ink) 55%,var(--seal-2) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero__title{position:relative}
.hero__swash{position:absolute;left:-2%;bottom:-.08em;width:104%;height:.24em;overflow:visible;pointer-events:none}
.hero__swash path{fill:none;stroke:var(--seal);stroke-width:10;stroke-linecap:round;stroke-dasharray:1200;stroke-dashoffset:1200;animation:swash 1.1s 1.9s cubic-bezier(.7,0,.2,1) forwards;opacity:.9}
.hero__swash path+path{stroke:var(--gamboge);stroke-width:5;animation-delay:2.2s;opacity:.85}
@keyframes swash{to{stroke-dashoffset:0}}
.hero__motto{animation:none}
.hero__motto .ch{display:inline-block;animation:charDrop .6s calc(.5s + var(--i)*70ms) cubic-bezier(.3,1.5,.5,1) both}
.hero__motto .ch:nth-child(4n+1){color:var(--seal)}.hero__motto .ch:nth-child(4n+2){color:var(--rouge-2)}.hero__motto .ch:nth-child(4n+3){color:var(--ochre)}.hero__motto .ch:nth-child(4n){color:var(--seal-2)}
@keyframes charDrop{from{opacity:0;transform:translateY(-.8em) rotate(-12deg) scale(1.3)}to{opacity:1;transform:none}}
.radio-line{background:linear-gradient(90deg,rgba(45,119,109,.16),rgba(47,93,158,.06) 60%,transparent);overflow:hidden}
.radio-line::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(127,211,196,.35) 50%,transparent 70%);transform:translateX(-100%);animation:scan 4.5s 2.6s ease-in-out infinite;pointer-events:none}
@keyframes scan{0%{transform:translateX(-100%)}40%,100%{transform:translateX(100%)}}
.btn{overflow:hidden;isolation:isolate}
.btn::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%);transform:translateX(-110%);transition:transform .7s}
.btn:hover::after{transform:translateX(110%)}
.btn--ink:hover{background:var(--indigo-2);box-shadow:4px 4px 0 var(--gamboge)}
.btn--jade:hover{box-shadow:4px 4px 0 var(--rouge)}
.hero__actions .btn--ink{animation:nudge 5s 4s ease-in-out infinite}
@keyframes nudge{0%,88%,100%{transform:none}92%{transform:translate(-2px,-3px) rotate(-1deg)}96%{transform:translate(1px,0) rotate(.6deg)}}
.hero__poster{transform:perspective(900px) rotateX(var(--ry,0deg)) rotateY(var(--rx,0deg));transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.hero__poster::before{content:"";position:absolute;inset:14px -14px -14px 14px;background:linear-gradient(135deg,var(--gamboge),var(--rouge) 55%,var(--indigo));border-radius:2px;transform:rotate(-2.6deg);z-index:-1;opacity:.85}
.hero__poster figcaption{background:linear-gradient(180deg,var(--ink),var(--indigo-2))}
.stamp--hero{animation:slam .55s 1.35s cubic-bezier(.3,1.4,.4,1) both;background:rgba(239,232,216,.88);mix-blend-mode:normal;z-index:2}
@keyframes slam{0%{opacity:0;transform:rotate(-30deg) scale(2.6)}70%{opacity:.95;transform:rotate(-12deg) scale(.92)}100%{opacity:.86;transform:rotate(-14deg) scale(1)}}

/* 乒乓球：九比九，你来打 */
.pong{position:absolute;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;border:0;padding:0;cursor:pointer;background:radial-gradient(circle at 34% 30%,#fff,#f5efe0 45%,#d9cfb8 100%);box-shadow:0 6px 10px -4px rgba(25,23,20,.5);animation:bounce 1.15s cubic-bezier(.45,0,.55,1) infinite;z-index:3}
.pong:hover{filter:drop-shadow(0 0 8px rgba(224,161,42,.9))}
.pong.hit{animation:smash .5s cubic-bezier(.2,.8,.2,1)}
@keyframes bounce{0%,100%{transform:translateY(0) scale(1.08,.88)}12%{transform:translateY(-6px)}50%{transform:translateY(-58px)}}
@keyframes smash{0%{transform:scale(1)}30%{transform:translate(60px,-80px) scale(.7)}31%{transform:translate(-30px,-30px) scale(.4);opacity:0}100%{transform:none;opacity:1}}
.score{position:absolute;right:10px;bottom:-16px;z-index:3;display:flex;align-items:center;gap:8px;font:700 14px/1 var(--heading);background:var(--ink);color:var(--paper);padding:8px 12px;border-radius:999px;box-shadow:0 10px 24px -10px rgba(25,23,20,.7)}
.score b{display:inline-block;font:700 18px/1 ui-monospace,Consolas,monospace;color:var(--gamboge)}
.score b.bump{animation:bump .4s}
.score i{font-style:normal;opacity:.6;font-size:12px}
@keyframes bump{50%{transform:scale(1.6);color:#fff}}
.score__say{position:absolute;right:0;bottom:calc(100% + 10px);width:max-content;max-width:240px;background:var(--paper);color:var(--ink);border:2px solid var(--ink);padding:8px 10px;border-radius:10px 10px 2px 10px;font:600 13px/1.5 var(--heading);animation:ring .35s both}
.score__say[hidden]{display:none}

/* 走马灯：串音的颜色 */
.ticker{background:linear-gradient(90deg,var(--ink),var(--indigo-2) 50%,var(--ink));box-shadow:0 12px 30px -18px rgba(29,60,110,.8);z-index:1}
.ticker__track span::before{content:none}
.ticker__track span{display:inline-flex;align-items:center;gap:6px}
.ticker__track span b{font-weight:700;padding:3px 7px;border-radius:3px;color:var(--ink);background:var(--c,var(--jade-glow))}
.ticker__track span:nth-child(5n+1){--c:var(--gamboge)}.ticker__track span:nth-child(5n+2){--c:var(--jade-glow)}.ticker__track span:nth-child(5n+3){--c:#f08a7e}.ticker__track span:nth-child(5n+4){--c:#9cc0f0}.ticker__track span:nth-child(5n){--c:#f2a6bb}
.ticker--back{transform:rotate(1.2deg);margin-top:-8px;background:var(--gamboge);color:var(--ink);border-color:var(--gamboge-2);box-shadow:none;z-index:0}
.ticker--back .ticker__track{animation-direction:reverse;animation-duration:70s;font:700 13px/1 var(--display);letter-spacing:.4em;padding:9px 0}

/* 段落：每一段有自己的颜色 */
.section{--c:var(--seal)}
.rule{--c:var(--seal)}.story{--c:var(--gamboge-2)}.cast{--c:var(--jade)}.features{--c:var(--indigo)}.download{--c:var(--gamboge)}.faq{--c:var(--rouge)}
.section__head{position:relative}
.section__head::after{content:"";position:absolute;left:0;bottom:-2px;height:6px;width:min(220px,40%);background:linear-gradient(90deg,var(--c),color-mix(in srgb,var(--c) 30%,transparent));transform-origin:left;border-radius:0 3px 3px 0}
.section__head.reveal::after{transform:scaleX(0);transition:transform 1s .25s cubic-bezier(.7,0,.2,1)}
.section__head.reveal.in::after{transform:scaleX(1)}
.section__no{color:var(--c);text-shadow:4px 4px 0 color-mix(in srgb,var(--c) 18%,transparent)}
.section__head.reveal .section__no{opacity:0;transform:rotate(-20deg) scale(1.8)}
.section__head.reveal.in .section__no{animation:slamNo .6s .1s cubic-bezier(.3,1.4,.4,1) forwards}
@keyframes slamNo{0%{opacity:0;transform:rotate(-20deg) scale(1.8)}70%{opacity:1;transform:rotate(3deg) scale(.94)}100%{opacity:1;transform:none}}
.section__head--dark .section__no{color:var(--gamboge)}

/* 一条规则 */
.rule__quote em{background:linear-gradient(transparent 58%,rgba(224,161,42,.45) 58%) no-repeat 0 0/100% 100%}
.rule__quote.reveal em{background-size:0 100%;transition:background-size 1s .5s cubic-bezier(.7,0,.2,1)}
.rule__quote.reveal.in em{background-size:100% 100%}
.card{--c:var(--seal);border-top:5px solid var(--c);overflow:hidden}
.card:nth-child(2){--c:var(--gamboge-2)}.card:nth-child(3){--c:var(--indigo)}
.card,.tile,.jack{transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,border-color .35s,opacity .8s cubic-bezier(.2,.7,.2,1)}
.card.tilt,.tile.tilt,.jack.tilt{transform:perspective(800px) rotateX(var(--ry,0deg)) rotateY(var(--rx,0deg)) translateY(-4px)}
.card:hover{box-shadow:10px 12px 0 -2px color-mix(in srgb,var(--c) 24%,transparent)}
.card__no{background:var(--c);transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.card:hover .card__no{transform:rotate(360deg) scale(1.15)}
.card::after{content:"";position:absolute;right:-30px;top:-30px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--c) 24%,transparent),transparent 70%);pointer-events:none;transition:transform .5s}
.card:hover::after{transform:scale(1.8)}
.rule__note{background:linear-gradient(100deg,rgba(224,161,42,.2),rgba(194,64,94,.10) 60%,var(--paper-2));border-left:5px solid var(--rouge)}
.redact{background:linear-gradient(90deg,var(--ink),var(--indigo-2))}
.redact:hover{background:var(--seal);animation:jitter .25s 2}
@keyframes jitter{25%{transform:translateX(-1px) rotate(-1deg)}75%{transform:translateX(1px) rotate(1deg)}}

/* 前情：案卷 */
.dossier__paper{border-top:6px solid var(--gamboge)}
.script__fatal{animation:fatal 3.2s 1s ease-in-out infinite}
@keyframes fatal{0%,90%,100%{text-shadow:none}93%{color:var(--rouge);text-shadow:2px 0 var(--azure),-2px 0 var(--gamboge)}96%{text-shadow:-1px 0 var(--azure),1px 0 var(--gamboge)}}
.dossier__photo{transform:rotate(1.6deg)}
.dossier__photo img{filter:sepia(.1) saturate(1.15) contrast(1.05);border:8px solid #fbf7ec;transition:transform .5s,filter .5s}
.dossier__photo:hover img{transform:rotate(-2deg) scale(1.02);filter:none}
.dossier__photo::before{content:"";position:absolute;left:50%;top:-12px;width:96px;height:26px;margin-left:-48px;background:rgba(224,161,42,.55);transform:rotate(-4deg);z-index:2}
.acts{border-top:0;gap:14px}
.act{--c:var(--jade);border:1px solid var(--line);border-top:6px solid var(--c);border-radius:2px;background:rgba(255,255,255,.3);transition:transform .3s,box-shadow .3s,opacity .8s cubic-bezier(.2,.7,.2,1)}
.act:nth-child(2){--c:var(--gamboge-2)}.act:nth-child(3){--c:var(--rouge)}.act:nth-child(4){--c:var(--seal)}
.act:last-child{border-right:1px solid var(--line)}
.act:hover{transform:translateY(-5px) rotate(-.4deg);box-shadow:0 18px 30px -18px color-mix(in srgb,var(--c) 80%,transparent)}
.act--last{background:linear-gradient(160deg,var(--ink),#2a1715)}
.act__level i::after{background:linear-gradient(90deg,var(--gamboge),var(--seal))}
.act.reveal .act__level i::after{width:0;transition:width 1.2s .6s cubic-bezier(.7,0,.2,1)}
.act.reveal.in .act__level i::after{width:calc(var(--lv)*33.4%)}
.act--last .act__level i{background:repeating-linear-gradient(-45deg,rgba(239,232,216,.15) 0 4px,transparent 4px 8px)}

/* 人物：每人一种颜色，舞台跟着换 */
.person[data-model=xiang]{--accent:#e04a3a}.person[data-model=fu]{--accent:#5b8fe0}.person[data-model=wang]{--accent:#e8b23a}.person[data-model=qian]{--accent:#4fc0a8}
.person[data-model=hhd]{--accent:#e8668a}.person[data-model=lu]{--accent:#a07ae0}.person[data-model=huang]{--accent:#d98a52}.person[data-model=shao]{--accent:#f07a3a}
.person[data-model=xue]{--accent:#5cc8d8}.person[data-model=wjz]{--accent:#c05a3a}.person[data-model=shenyan]{--accent:#7fd3c4}.person[data-model=laoqin]{--accent:#c9a46a}
.person[data-model=enemy]{--accent:#a8a86a}.person[data-model=mech]{--accent:#6ab4f0}
.viewer{transition:--accent .7s}
.viewer__stage{background:radial-gradient(ellipse at 50% 85%,color-mix(in srgb,var(--accent) 42%,transparent),transparent 55%),radial-gradient(ellipse at 80% 10%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 50%),radial-gradient(ellipse at 50% 30%,#2b3237,#14171a 75%);overflow:hidden}
.viewer__stage::after{border-color:color-mix(in srgb,var(--accent) 70%,transparent);box-shadow:0 0 34px color-mix(in srgb,var(--accent) 40%,transparent),inset 0 0 18px color-mix(in srgb,var(--accent) 30%,transparent);animation:platform 3.2s ease-in-out infinite}
@keyframes platform{50%{transform:translateX(-50%) scale(1.06);opacity:.7}}
.viewer__stage::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 0 46%,color-mix(in srgb,var(--accent) 16%,transparent) 50%,transparent 54%);background-size:100% 260%;animation:sweep 5s linear infinite;pointer-events:none;z-index:1;mix-blend-mode:screen}
@keyframes sweep{from{background-position:0 100%}to{background-position:0 -160%}}
.viewer__plate{color:color-mix(in srgb,var(--accent) 26%,transparent);-webkit-text-stroke:1px color-mix(in srgb,var(--accent) 40%,transparent)}
.viewer__file{background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 12%,var(--night-2)),var(--night-2) 60%)}
.viewer__file h3{color:var(--accent);animation:inkIn .5s both}
.viewer__file .person__role{color:color-mix(in srgb,var(--accent) 70%,#fff)}
.viewer__file dl{animation:inkIn .6s .08s both}
.viewer__file dt{color:color-mix(in srgb,var(--accent) 55%,rgba(239,232,216,.5))}
.viewer__file .stamp{animation:slam .5s .2s cubic-bezier(.3,1.4,.4,1) both}
.chip[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 60%,#14171a);border-color:var(--accent)}
.viewer__canvas model-viewer{--progress-bar-color:var(--accent)}
.person{border-left:4px solid var(--accent,var(--line))}
.person::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 22%,transparent),transparent 60%);opacity:0;transition:opacity .25s}
.person:hover::before{opacity:1}
.person:hover{border-color:var(--accent);box-shadow:0 10px 22px -14px var(--accent)}
.person[aria-selected="true"]{background:linear-gradient(135deg,var(--ink),color-mix(in srgb,var(--accent) 35%,var(--ink)));border-color:var(--accent)}
.person[aria-selected="true"]::after{background:var(--accent);color:var(--ink)}
.person[aria-selected="true"] .person__role{color:var(--accent)}
.person h3,.person p{position:relative}
.roster__group::before{content:"";width:10px;height:10px;border-radius:2px;background:var(--rainbow);transform:rotate(45deg)}

/* 特色 */
.feature>img{transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s}
.feature{position:relative}
.feature>img{box-shadow:-14px -14px 0 0 var(--jade),0 22px 50px -30px rgba(25,23,20,.75)}
.feature--flip>img{box-shadow:14px -14px 0 0 var(--rouge),0 22px 50px -30px rgba(25,23,20,.75)}
.feature:hover>img{transform:translate(5px,5px);box-shadow:-20px -20px 0 0 var(--indigo),0 22px 50px -30px rgba(25,23,20,.75)}
.feature--flip:hover>img{transform:translate(-5px,5px);box-shadow:20px -20px 0 0 var(--gamboge),0 22px 50px -30px rgba(25,23,20,.75)}
.feature__joke{background:linear-gradient(90deg,rgba(45,119,109,.12),transparent);padding:8px 12px;border-left-width:4px}
.feature--flip .feature__joke{color:var(--rouge-2)!important;border-color:var(--rouge);background:linear-gradient(90deg,rgba(194,64,94,.10),transparent)}
.tile{--c:var(--indigo);position:relative}
.tile:nth-child(8n+1){--c:var(--seal)}.tile:nth-child(8n+2){--c:var(--indigo)}.tile:nth-child(8n+3){--c:var(--gamboge-2)}.tile:nth-child(8n+4){--c:var(--rouge)}
.tile:nth-child(8n+5){--c:var(--jade)}.tile:nth-child(8n+6){--c:var(--ochre)}.tile:nth-child(8n+7){--c:var(--violet)}.tile:nth-child(8n){--c:var(--jade-2)}
.tile img{box-shadow:0 0 0 0 var(--c);transition:transform .35s,filter .35s,box-shadow .35s}
.tile:hover img{transform:translate(-4px,-4px) rotate(-.6deg);box-shadow:8px 8px 0 0 var(--c);filter:saturate(1.15)}
.tile h3{display:flex;align-items:center;gap:10px}
.tile h3::before{content:"";width:12px;height:12px;flex:none;background:var(--c);border-radius:3px;transform:rotate(45deg);transition:transform .4s}
.tile:hover h3::before{transform:rotate(225deg) scale(1.2)}
.android-note{background:linear-gradient(125deg,var(--jade-2),#173f3a 35%,var(--indigo-2) 70%,#2a2050);background-size:220% 220%;animation:aurora 14s ease-in-out infinite alternate}
@keyframes aurora{from{background-position:0% 30%}to{background-position:100% 70%}}
.android-note li::marker{color:var(--gamboge)}
.android-note b{color:var(--gamboge)}
.phone{animation:float 5s ease-in-out infinite}
@keyframes float{0%,100%{transform:rotate(-2.5deg) translateY(0)}50%{transform:rotate(-1deg) translateY(-12px)}}
.phone__screen{position:relative}
.phone__screen::before,.phone__screen::after{content:"";position:absolute;width:34px;height:34px;margin:-17px;border-radius:50%;border:2px solid rgba(224,161,42,.95);animation:tap 2.4s ease-out infinite;pointer-events:none}
.phone__screen::before{left:16%;top:72%}
.phone__screen::after{left:86%;top:62%;animation-delay:1.2s;border-color:rgba(127,211,196,.95)}
@keyframes tap{0%{transform:scale(.3);opacity:1}70%,100%{transform:scale(1.6);opacity:0}}

/* 下载：夜里的接线台 */
.download{background:radial-gradient(700px 400px at 15% 10%,rgba(171,35,27,.22),transparent 60%),radial-gradient(700px 420px at 90% 30%,rgba(47,93,158,.3),transparent 60%),radial-gradient(600px 400px at 50% 110%,rgba(45,119,109,.3),transparent 60%),var(--night)}
.jack{position:relative;overflow:hidden}
.jack::before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,var(--seal),var(--gamboge))}
#dl-android::before{background:linear-gradient(90deg,var(--jade),var(--azure))}
.jack:hover{border-color:rgba(224,161,42,.5);box-shadow:0 30px 60px -30px rgba(224,161,42,.35)}
#dl-android:hover{border-color:rgba(127,211,196,.5);box-shadow:0 30px 60px -30px rgba(127,211,196,.35)}
.jack__plug{animation:plug 2s ease-in-out infinite}
.jack__plug--jade{animation-delay:1s}
@keyframes plug{50%{box-shadow:0 0 22px 4px rgba(224,161,42,.6)}}

/* FAQ */
.faq details{--c:var(--rouge);transition:background .3s}
.faq details:nth-child(6n+2){--c:var(--indigo)}.faq details:nth-child(6n+3){--c:var(--gamboge-2)}.faq details:nth-child(6n+4){--c:var(--jade)}.faq details:nth-child(6n+5){--c:var(--seal)}.faq details:nth-child(6n){--c:var(--violet)}
.faq summary::after{color:var(--c)}
.faq summary{transition:color .2s,padding-left .3s}
.faq summary:hover{color:var(--c);padding-left:8px}
.faq details[open]{background:linear-gradient(90deg,color-mix(in srgb,var(--c) 10%,transparent),transparent)}
.faq details[open] summary{color:var(--c);padding-left:12px}
.faq details[open] p{padding-left:12px;animation:inkIn .45s both}

/* 页脚 */
.footer__line{background:linear-gradient(90deg,var(--seal),var(--gamboge-2),var(--jade),var(--indigo),var(--rouge),var(--seal));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:flow 8s linear infinite}
@keyframes flow{to{background-position:200% 0}}
.footer .seal{transition:transform .6s cubic-bezier(.3,1.6,.5,1)}
.footer .seal:hover{transform:rotate(-360deg) scale(1.1)}
.call{background:linear-gradient(160deg,var(--night),#24151a);border-color:rgba(194,64,94,.35)}

/* 点哪儿，墨点就落哪儿；名单送完，纸屑满天 */
.ink-dot{position:fixed;width:14px;height:14px;margin:-7px;border-radius:50%;pointer-events:none;z-index:60;background:var(--c);animation:inkDot .7s ease-out forwards}
@keyframes inkDot{0%{transform:scale(.2);opacity:.85}100%{transform:scale(4.5);opacity:0}}
.confetti{position:fixed;top:-20px;width:10px;height:14px;pointer-events:none;z-index:70;background:var(--c);animation:fall var(--t,2.6s) cubic-bezier(.3,.6,.6,1) forwards}
@keyframes fall{to{transform:translate(var(--x,0),110vh) rotate(var(--r,720deg))}}
.toast{position:fixed;left:50%;top:84px;z-index:71;transform:translateX(-50%);background:var(--seal);color:var(--paper);font:700 18px/1.4 var(--display);letter-spacing:.12em;padding:14px 22px;border-radius:4px;box-shadow:0 20px 40px -18px rgba(171,35,27,.8);animation:toast 4.2s cubic-bezier(.3,1.4,.4,1) forwards;text-align:center;width:max-content;max-width:calc(100% - 32px)}
@keyframes toast{0%{opacity:0;transform:translate(-50%,-30px) scale(.8)}10%,85%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-10px)}}

@media (max-width:820px){
  .hero__blobs{inset:-4% -20%}
  .score{right:-6px}
}
@media (max-width:560px){
  .ticker--back{display:none}
  .pong{left:-8px;top:auto;bottom:70px}
}
@media (prefers-reduced-motion:reduce){
  .blob,.pong,.phone,.android-note,.footer__line{animation:none!important}
  .hero__swash path{stroke-dashoffset:0}
}
