/* 瓜子茶馆 v2：灯会之夜的江湖茶楼。首屏是一张 Q版群像大海报，上面叠会动的层（飞鸽送来江湖急报、卷轴展开、醒木一拍「66%」盖上去、
   女侠御剑、轻功侠客掠过、烟花、孔明灯、金粉、西瓜瓜子乱飞）；下面每块一张场景底（月下屋顶 / 戏台红幕 / 茶楼木墙 / 庙会签摊 / 城门告示墙）。
   零脚本：动画全是 CSS；系统开了「减少动态效果」就全停在第一帧。
   兼容微信 X5（Chromium ~86）：不用 aspect-ratio、inset、:has()、color-mix()、oklch()；滚动出场只在支持的浏览器上加。
   首屏各层的位置按海报量的百分比（宽版 hero-wide 1536×1024、竖版 hero-tall 1024×1536），换海报要重量。 */

@font-face{font-family:"GuaziBrush";src:url(/fonts/brush.woff2) format("woff2");font-display:swap}
@font-face{font-family:"GuaziRound";src:url(/fonts/round.woff2) format("woff2");font-display:swap}

:root{
  --night:#12112a; --night-2:#1b1838; --night-3:#26203f;
  --ink:#2b1a12;
  --cream:#fff3dc; --paper:#f7ebcf;
  --text:#f7eedc; --muted:#d9cbb0; --dim:#b8a98f;
  --gold:#f5c451; --gold-2:#ffe08a; --gold-dk:#a8741f;
  --red:#d33a26; --red-dk:#8e1f14;
  --jade:#2fb38a;
  --wood:#8a5428; --wood-hi:#b07438; --wood-dk:#5e3517;
  --brush:"GuaziBrush","Kaiti SC","STKaiti","KaiTi",serif;
  --round:"GuaziRound","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --out:3px solid var(--ink);
  --lift:0 4px 0 var(--ink);
  --ease:cubic-bezier(.16,1,.3,1);
  --pw:min(100vw,150vh);            /* 宽版海报的宽度（字号按它算） */
  --slam:-3.6s;                     /* 醒木 7 秒一拍、拍在 80% 处：往前拨 3.6 秒，第一拍落在第 2 秒，正好是「66%」盖章那一下 */
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--night)}
body{margin:0;color:var(--text);font:400 16px/1.75 var(--sans);background:var(--night)}
img{display:block;max-width:100%;height:auto}
a{color:var(--gold-2);text-underline-offset:3px}
b{font-weight:700}
main{overflow:hidden}

/* ============ 首屏：群像海报 ============ */
.poster{position:relative;overflow:hidden;background:var(--night)}
/* 屏幕比海报宽时，两边用同一张图糊开铺满，不留黑边 */
.poster-blur{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;filter:blur(28px) brightness(.55) saturate(1.2);transform:scale(1.15)}
.box{position:relative;margin:0 auto;width:var(--pw)}
.box::before{content:"";display:block;padding-top:66.6667%}          /* 3:2，和 hero-wide 一样 */
.box > *{position:absolute}
.poster-bg,.poster-bg img{left:0;top:0;width:100%;height:100%}
.poster-bg img{position:absolute;object-fit:cover}
/* 海报下沿：一条金边祥云压住，往页面底色化开 */
.box::after{content:"";position:absolute;left:-2%;right:-2%;bottom:-1px;height:15%;z-index:9;pointer-events:none;
  background:url(/img/clouds.webp) center bottom/100% auto no-repeat,linear-gradient(180deg,rgba(18,17,42,0),var(--night) 92%)}

/* 说书先生身后的光：慢慢转，醒木拍下那一下猛一亮 */
.rays{left:31.5%;top:22%;width:36%;padding-top:36%;z-index:2;mix-blend-mode:screen;pointer-events:none;
  background:repeating-conic-gradient(from 0deg,rgba(255,214,120,0) 0deg 7deg,rgba(255,214,120,.42) 9deg 12deg,rgba(255,214,120,0) 14deg 22deg);
  -webkit-mask-image:radial-gradient(circle,#000 8%,rgba(0,0,0,.6) 30%,transparent 66%);mask-image:radial-gradient(circle,#000 8%,rgba(0,0,0,.6) 30%,transparent 66%);
  animation:spin 48s linear infinite,flare 7s linear var(--slam) infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes flare{0%,79.9%{opacity:.55}80%{opacity:1}88%{opacity:.85}100%{opacity:.55}}

/* 烟花：纯黑底的图，screen 叠上去；一朵接一朵开 */
.fireworks,.skylamps{left:0;top:0;width:100%;height:100%;pointer-events:none}
.fw{position:absolute;mix-blend-mode:screen;opacity:0;transform:scale(.2);animation:boom 7.2s var(--ease) infinite}
.fw-1{left:76%;top:0;width:16%}
.fw-2{left:87%;top:13%;width:12%;animation-delay:2.4s}
.fw-3{left:5%;top:20%;width:14%;animation-delay:4.8s}
@keyframes boom{0%{opacity:0;transform:scale(.2)}4%{opacity:1}26%{opacity:.9;transform:scale(1.05)}38%,100%{opacity:0;transform:scale(1.12)}}

/* 孔明灯：从楼后头慢慢升上天 */
.sl{position:absolute;width:3.2%;opacity:0;filter:drop-shadow(0 0 8px rgba(255,170,70,.7));animation:rise 19s linear infinite}
.sl-1{left:36%;top:52%}
.sl-2{left:58%;top:56%;width:2.6%;animation-delay:-5s;animation-duration:23s}
.sl-3{left:73%;top:50%;width:2.2%;animation-delay:-11s;animation-duration:21s}
.sl-4{left:24%;top:58%;width:2.4%;animation-delay:-15s;animation-duration:25s}
@keyframes rise{0%{opacity:0;transform:translate(0,0)}8%{opacity:1}50%{transform:translate(12px,-260%)}90%{opacity:.9}100%{opacity:0;transform:translate(-8px,-560%)}}

/* 轻功侠客：隔一阵从左往右掠过屋顶 */
.flyer{left:-14%;top:36%;width:11%;z-index:3;animation:dash 11s cubic-bezier(.4,.1,.5,.9) 2s infinite;opacity:0}
@keyframes dash{0%{opacity:1;transform:translate(0,0) rotate(-6deg)}22%{opacity:1;transform:translate(640%,-28%) rotate(4deg)}
  23%,100%{opacity:0;transform:translate(1300%,10%) rotate(8deg)}}

/* 女侠御剑：上下浮着；剑气是另一层（黑底 screen 叠），自己浮自己的、一明一暗——
   不能塞进女侠那个会动的盒子里：父元素一带 transform 就自成一组，screen 混不到海报上，黑底会露出来 */
.sword{left:3%;top:25%;width:21%;z-index:4;animation:float 3.4s ease-in-out infinite alternate}
.qi{left:-.5%;top:26%;width:25%;z-index:3;mix-blend-mode:screen;animation:qi 3.4s ease-in-out infinite alternate}
@keyframes float{from{transform:translateY(-3%)}to{transform:translateY(4%)}}
@keyframes qi{from{opacity:.6;transform:translate(-2%,-2%)}to{opacity:1;transform:translate(2%,3%)}}

/* 说书先生：两帧——醒木举着 / 拍下，7 秒一拍 */
.teller{left:42.2%;top:41%;width:15.2%;z-index:5;display:block;border-radius:12px}
.teller img{width:100%}
.teller .f-b{position:absolute;left:0;top:0;opacity:0}
.teller .f-a{animation:frame-a 7s linear var(--slam) infinite}
.teller .f-b{animation:frame-b 7s linear var(--slam) infinite}
@keyframes frame-a{0%,79.9%{opacity:1}80%,86.9%{opacity:0}87%,100%{opacity:1}}
@keyframes frame-b{0%,79.9%{opacity:0}80%,86.9%{opacity:1}87%,100%{opacity:0}}
.teller:focus-visible{outline:3px solid var(--gold-2);outline-offset:4px}
.pa{position:absolute;left:-30%;top:30%;font:400 calc(var(--pw)*.036)/1 var(--round);color:#fff8e6;opacity:0;pointer-events:none;white-space:nowrap;
  -webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);animation:pa 7s linear var(--slam) infinite}
@keyframes pa{0%,79.9%{opacity:0;transform:scale(.3) rotate(-14deg)}80%{opacity:1;transform:scale(.5) rotate(-14deg)}
  82.5%{opacity:1;transform:scale(1.2) rotate(-9deg)}88%{opacity:1;transform:scale(1) rotate(-9deg)}93%,100%{opacity:0;transform:scale(1) rotate(-9deg)}}

/* 西瓜片、瓜子壳：从桌上蹦起来转着落下 */
.pieces{left:0;top:0;width:100%;height:100%;z-index:6;pointer-events:none}
.pc{position:absolute;opacity:0;animation:toss 3.8s cubic-bezier(.3,.7,.5,1) infinite}
.pc-1{left:30%;top:46%;width:4.6%;animation-delay:.4s}
.pc-2{left:24%;top:52%;width:4%;animation-delay:2.1s;animation-duration:4.4s}
.pc-3{left:38%;top:70%;width:1.6%;animation-delay:1.2s}
.pc-4{left:62%;top:72%;width:1.4%;animation-delay:2.8s;animation-duration:3.4s}
.pc-5{left:74%;top:66%;width:1.8%;animation-delay:.9s;animation-duration:4.1s}
@keyframes toss{0%{opacity:0;transform:translate(0,0) rotate(0)}6%{opacity:1}45%{transform:translate(-60%,-260%) rotate(200deg)}
  80%{opacity:1}100%{opacity:0;transform:translate(-140%,60%) rotate(420deg)}}

/* 金粉：满屏闪 */
.dust{left:0;top:0;width:100%;height:62%;z-index:3;pointer-events:none;
  background:radial-gradient(circle,rgba(255,226,140,.95) 0 1.5px,transparent 2.5px) 0 0/120px 110px,
             radial-gradient(circle,rgba(255,255,255,.85) 0 1px,transparent 2px) 40px 60px/170px 150px,
             radial-gradient(circle,rgba(255,200,120,.8) 0 1.2px,transparent 2.2px) 90px 20px/210px 190px;
  -webkit-mask-image:linear-gradient(180deg,#000 40%,transparent);mask-image:linear-gradient(180deg,#000 40%,transparent);
  animation:twinkle 3.2s ease-in-out infinite alternate,drift 30s linear infinite}
@keyframes twinkle{from{opacity:.35}to{opacity:1}}
@keyframes drift{to{background-position:0 -110px,40px -90px,90px -170px}}

/* 柱子上挂的竖牌：「莫连钱包」（套老舍《茶馆》里那块「莫谈国事」） */
.rule-board{margin:0;left:1.2%;top:46%;width:4.6%;padding:.7em 0 .8em;display:flex;flex-direction:column;align-items:center;gap:.25em;
  writing-mode:vertical-rl;background:#2a160e;border:var(--out);border-radius:6px;box-shadow:inset 0 0 0 3px #8b5f2a,var(--lift);z-index:7;
  font-size:calc(var(--pw)*.0092)}
.rule-board b{font:400 2.3em/1 var(--brush);color:var(--gold-2);letter-spacing:.12em;-webkit-text-stroke:.03em var(--gold-2)}
.rule-board span{font:400 1em/1.1 var(--round);color:#ecd6aa;letter-spacing:.1em}

/* 招牌 + 标语 + 小字：挪到左上角，正中让给江湖急报 */
.title{left:1.6%;top:2.6%;width:24%;z-index:8;text-align:center;display:flex;flex-direction:column;align-items:center}
.logo{margin:0;width:100%;animation:drop .9s var(--ease) .1s both;filter:drop-shadow(0 6px 0 rgba(40,8,0,.55)) drop-shadow(0 0 22px rgba(255,180,60,.35))}
.logo img{width:100%}
.slogan{margin:.2em 0 0;display:flex;gap:.4em;justify-content:center;font:400 calc(var(--pw)*.025)/1.05 var(--brush);color:#fffaf0;
  -webkit-text-stroke:calc(var(--pw)*.0009) #fffaf0;text-shadow:0 3px 0 #3b1408,0 0 18px rgba(255,120,60,.55);
  animation:ink 1.1s var(--ease) .45s both}
.slogan span{white-space:nowrap}
.tagline{margin:.6em 0 0;font:400 calc(var(--pw)*.0086)/1.2 var(--round);color:#f1dfb9;letter-spacing:.06em;text-shadow:0 2px 0 rgba(0,0,0,.6)}
@keyframes drop{from{opacity:0;transform:translateY(-30%)}}
@keyframes ink{from{opacity:0;-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}to{opacity:1;-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}

/* ============ 江湖急报：飞鸽把信送到，卷轴从中间往两边展开，醒木一拍「66%」盖上去 ============
   卷轴 = 一张空白纸（scroll-paper）+ 两根轴（scroll-roller），字全是 HTML；整张卷轴是个链接，点了跳到下面的详解。
   时间线：0–0.9s 鸽子飞进来 → 0.55–1.55s 卷轴展开 → 1.25–2.2s 字一行行浮上来 → 2s 醒木拍下、「66%」落定、金光一炸（之后每 7 秒跟着醒木再炸一次） */
.edict{left:27.5%;top:2.4%;width:45%;height:34.5%;z-index:8;display:block;color:var(--ink);text-decoration:none;
  filter:drop-shadow(0 7px 0 rgba(30,8,0,.5)) drop-shadow(0 0 26px rgba(255,190,90,.3))}
.edict:focus-visible{outline:3px solid var(--gold-2);outline-offset:4px;border-radius:10px}
.edict-paper{position:absolute;left:3.6%;right:3.6%;top:4%;bottom:4%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:5.2% 6% 4.6%;text-align:center;background:url(/img/scroll-paper.webp) center/100% 100% no-repeat;animation:unroll 1s var(--ease) .55s both}
.edict-paper > *{display:block;animation:rise-in .5s var(--ease) both}
.edict-head{font:400 calc(var(--pw)*.0098)/1.3 var(--round);color:#8a3a1f;letter-spacing:.06em;animation-delay:1.25s}
.seal{display:inline-block;margin-right:.5em;padding:.12em .4em .16em;font:400 1.3em/1 var(--brush);color:#fff4dc;background:#b8261a;border:2px solid #5e140b;border-radius:5px;vertical-align:-.12em}
.edict-title{margin-top:.1em;font:400 calc(var(--pw)*.032)/1.12 var(--brush);color:var(--ink);-webkit-text-stroke:calc(var(--pw)*.0007) var(--ink);animation-delay:1.4s}
.edict-big{display:flex;align-items:baseline;justify-content:center;gap:.3em;animation-delay:1.55s}
.edict-pre{font:400 calc(var(--pw)*.0155)/1 var(--round);color:#5a3a22}
.pct{position:relative;font:400 calc(var(--pw)*.058)/1.02 var(--round);font-style:normal;color:#d22f1b;letter-spacing:.01em;
  -webkit-text-stroke:calc(var(--pw)*.0022) #5e140b;paint-order:stroke fill;text-shadow:0 calc(var(--pw)*.0028) 0 #5e140b,0 0 calc(var(--pw)*.014) rgba(255,196,80,.85);
  animation:stamp .42s cubic-bezier(.3,0,.6,1) 1.6s both,beat 7s linear var(--slam) infinite}
.burst{position:absolute;left:50%;top:50%;z-index:-1;width:250%;padding-top:250%;margin:-125% 0 0 -125%;pointer-events:none;border-radius:50%;
  background:repeating-conic-gradient(rgba(255,190,60,.9) 0 5deg,rgba(255,190,60,0) 5deg 15deg);
  -webkit-mask-image:radial-gradient(circle,#000 22%,transparent 64%);mask-image:radial-gradient(circle,#000 22%,transparent 64%);
  opacity:0;animation:burst 7s ease-out var(--slam) infinite}
.edict-to{margin-top:.15em;font:400 calc(var(--pw)*.0148)/1.3 var(--round);color:var(--ink);animation-delay:1.9s}
.edict-foot{margin-top:.4em;font:400 calc(var(--pw)*.009)/1.3 var(--round);color:#8a6a48;animation-delay:2.2s}
.edict:hover .edict-foot{color:#b8261a}
.roller{position:absolute;top:0;height:100%;width:auto;max-width:none}
.roller-l{left:0;animation:roll-l 1s var(--ease) .55s both}
.roller-r{right:0;animation:roll-r 1s var(--ease) .55s both}
@keyframes unroll{from{-webkit-clip-path:inset(0 50%);clip-path:inset(0 50%)}to{-webkit-clip-path:inset(0 0);clip-path:inset(0 0)}}
@keyframes roll-l{from{left:46.8%}}
@keyframes roll-r{from{right:46.8%}}
@keyframes rise-in{from{opacity:0;transform:translateY(35%)}}
@keyframes stamp{0%{opacity:0;transform:scale(2.6) rotate(-10deg)}70%{opacity:1;transform:scale(.94) rotate(0)}100%{opacity:1;transform:scale(1)}}
@keyframes beat{0%,79.9%{scale:1}81%{scale:1.16}88%,100%{scale:1}}
@keyframes burst{0%,79.9%{opacity:0;transform:scale(.3) rotate(0)}81%{opacity:1;transform:scale(.75) rotate(8deg)}97%,100%{opacity:0;transform:scale(1.5) rotate(28deg)}}

/* 飞鸽：从右边飞进来，停在卷轴右上角扑腾翅膀（两帧轮着显） */
.pigeon{left:69.5%;top:-1%;width:7.2%;z-index:9;pointer-events:none;
  animation:fly-in .9s cubic-bezier(.2,.8,.3,1) both,hover 1.8s ease-in-out .9s infinite alternate,flap-a .3s steps(1,end) infinite}
.pg-b{opacity:0;animation-name:fly-in,hover,flap-b}
@keyframes fly-in{from{transform:translate(640%,110%) rotate(-8deg)}}
@keyframes hover{from{transform:translateY(-4%)}to{transform:translateY(6%)}}
@keyframes flap-a{0%{opacity:1}50%{opacity:0}}
@keyframes flap-b{0%{opacity:0}50%{opacity:1}}

/* 开发者头像 = 菜单：右上角挂一块金边圆牌（头像探出框，图是 design/art/dev-avatar-src.jpg 抠的），
   点开是本页目录（<details>，零脚本；点链接跳过去以后菜单还开着，再点头像收起） */
.dev-menu{right:1.8%;top:3.4%;width:calc(var(--pw)*.066);z-index:12}
.dev-menu summary{position:relative;display:block;cursor:pointer;list-style:none;transform-origin:50% -60px;animation:pendant 4.6s ease-in-out infinite alternate}
.dev-menu summary::-webkit-details-marker{display:none}
.dev-menu summary::before{content:"";position:absolute;left:50%;bottom:70%;width:2px;height:260px;margin-left:-1px;z-index:-1;background:linear-gradient(180deg,var(--red-dk),#c9472c)}
.dev-menu summary:focus-visible{outline:3px solid var(--gold-2);outline-offset:4px;border-radius:12px}
.dev-menu[open] summary{animation-play-state:paused}
.dev-face{display:block;width:100%;height:auto;filter:drop-shadow(0 4px 0 rgba(30,8,0,.45));transition:transform .25s var(--ease)}
.dev-menu summary:hover .dev-face,.dev-menu[open] .dev-face{transform:scale(1.06)}
.dev-tag{position:absolute;left:50%;bottom:-7%;transform:translateX(-50%);padding:.16em .7em .2em;white-space:nowrap;letter-spacing:.1em;
  font:400 calc(var(--pw)*.0105)/1.2 var(--round);color:var(--gold-2);background:var(--red);border:2px solid var(--ink);border-radius:999px;box-shadow:0 2px 0 var(--ink)}
/* 海报 overflow:hidden，面板不能超出海报底：最多高到海报底（窗口很矮时面板里面滚动） */
.dev-panel{position:absolute;right:0;top:calc(100% + 16px);width:228px;max-height:calc(var(--pw)*.567 - 26px);overflow-y:auto;padding:12px 12px 10px;color:var(--ink);text-align:left;
  background:var(--cream);border:var(--out);border-radius:14px;box-shadow:var(--lift),0 12px 28px rgba(0,0,0,.4)}
.dev-hi{margin:0 0 6px;font:400 22px/1.2 var(--brush);color:var(--red-dk);-webkit-text-stroke:.6px var(--red-dk);text-align:center}
.dev-list{list-style:none;margin:0;padding:0;counter-reset:dev}
.dev-list li{counter-increment:dev;border-top:1px dashed rgba(43,26,18,.25)}
.dev-list li:first-child{border-top:0}
.dev-list a{display:flex;align-items:center;gap:10px;padding:6px;font:400 15px/1.3 var(--round);color:var(--ink);text-decoration:none;border-radius:8px}
.dev-list a::before{content:counter(dev);flex:none;width:22px;height:22px;display:flex;align-items:center;justify-content:center;
  font:400 13px/1 var(--round);color:#fff4dc;background:var(--red);border:2px solid var(--ink);border-radius:50%}
.dev-list a:hover,.dev-list a:focus-visible{color:var(--red-dk);background:#ffe7b8}
.dev-more{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin:8px 0 0;padding-top:8px;border-top:2px solid rgba(43,26,18,.18)}
.dev-more span{width:100%;font-size:12px;color:#8a6a48}
.dev-more a{flex:1 1 auto;padding:4px 6px;font:400 13px/1.2 var(--round);color:var(--ink);text-align:center;text-decoration:none;white-space:nowrap;
  background:#ffe7b8;border:2px solid var(--ink);border-radius:999px}
.dev-more a:hover,.dev-more a:focus-visible{color:#fff4dc;background:var(--red)}
.dev-sign{margin:6px 0 0;font-size:12px;color:#8a6a48;text-align:center}
@keyframes pendant{from{transform:rotate(-3deg)}to{transform:rotate(3deg)}}

/* 首屏底部三块大按钮（站长 10-24：三页入口要一眼看得到）：压在祥云上，第一屏就在。
   「分」字龙藏体认不出，按钮字用圆体；背后一圈金光慢慢呼吸，引人点 */
.hero-go{left:50%;bottom:3.2%;transform:translateX(-50%);z-index:10;display:flex;gap:calc(var(--pw)*.016)}
.hero-go a{position:relative;display:flex;align-items:center;gap:.45em;padding:.32em 1.2em .32em .5em;white-space:nowrap;text-decoration:none;
  font:400 calc(var(--pw)*.0168)/1.2 var(--round);color:var(--gold-2);background:linear-gradient(180deg,#d8442c,var(--red-dk));
  border:3px solid var(--gold);border-radius:14px;box-shadow:0 0 0 3px var(--ink),0 5px 0 3px var(--ink);text-shadow:0 2px 0 rgba(60,8,0,.6)}
.hero-go a::before{content:"";position:absolute;left:-10px;right:-10px;top:-10px;bottom:-10px;z-index:-1;border-radius:22px;
  background:radial-gradient(closest-side,rgba(255,206,90,.55),transparent);opacity:.25;animation:go-glow 2.6s ease-in-out infinite alternate}
.hero-go a:nth-child(2)::before{animation-delay:.9s}
.hero-go a:nth-child(3)::before{animation-delay:1.8s}
.hero-go img{width:auto;height:calc(var(--pw)*.042);filter:drop-shadow(0 2px 0 rgba(0,0,0,.35))}
.hero-go a:hover{background:linear-gradient(180deg,#ea5a3f,#a8281a)}
.hero-go a:active{transform:translateY(2px)}
.hero-go a:focus-visible{outline:3px solid var(--gold-2);outline-offset:4px}
@keyframes go-glow{to{opacity:.9}}

/* ============ 下面每一块：一张场景底 ============
   底图是 <img class="sec-bg" loading="lazy">（不用 CSS 背景：CSS 背景一上来全下，懒加载只认 img），
   上面盖一层压暗的渐变（上下两头融进夜色），--shade 是中间压多暗 */
.sec{position:relative;padding:86px 0 70px;background:var(--night-2);--shade:rgba(14,12,30,.56)}
.sec-bg{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;z-index:0}
.sec::before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,var(--night) 0,var(--shade) 130px,var(--shade) calc(100% - 130px),var(--night) 100%)}
.sec-in{position:relative;z-index:1;max-width:780px;margin:0 auto;padding:0 18px}
.jibao{--shade:rgba(8,12,34,.42)}
.lai{--shade:rgba(14,10,24,.62)}
.yong{--shade:rgba(20,12,8,.5)}
.notice{--shade:rgba(10,12,26,.46)}
.wenda{--shade:rgba(12,14,30,.62)}
.feige{padding-top:64px;background:radial-gradient(70% 60% at 50% 30%,rgba(245,196,81,.12),transparent 70%),var(--night)}
.feige::before{display:none}
.chulu{padding-top:64px;background:radial-gradient(70% 60% at 50% 25%,rgba(211,58,38,.2),transparent 70%),var(--night)}
.chulu::before,.cha::before{display:none}
.cha{padding-top:56px;background:var(--night)}

/* 小标题：金边匾额 + 瓜子侠在旁边起哄 */
.sec-h{position:relative;margin:0 0 30px;text-align:center}
.plaque{position:relative;display:inline-flex;align-items:center;justify-content:center;margin:0;width:380px;height:200px;padding:0 0 40px .12em;
  font:400 44px/1 var(--brush);color:var(--gold-2);letter-spacing:.12em;white-space:nowrap;
  -webkit-text-stroke:1.2px var(--gold-2);text-shadow:0 3px 0 #4a1d08,0 0 16px rgba(255,190,80,.35);background:url(/img/plaque.webp) center/100% 100% no-repeat}
.plaque.long{font-size:34px;letter-spacing:.04em}                /* 六个字的匾额：字缩一号，不压到金边 */
.sec-mascot{position:absolute;left:50%;top:-34px;width:118px;margin-left:-250px;z-index:2;animation:bob 2.6s ease-in-out infinite alternate}
@keyframes bob{from{transform:translateY(0) rotate(-3deg)}to{transform:translateY(-7px) rotate(3deg)}}
.sec-note{margin:12px 0 0;font-size:15px;color:var(--muted);text-shadow:0 1px 2px rgba(0,0,0,.6)}

/* 卡片左上角的红圆序号（急报四句、修炼四步共用一个计数器） */
.d::before,.step::before{content:counter(n);position:absolute;left:-10px;top:-14px;z-index:2;width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  font:400 22px/1 var(--round);color:#fff4dc;background:var(--red);border:var(--out);border-radius:50%;box-shadow:0 3px 0 var(--ink)}

/* ============ 江湖急报：官宣四句话，一句一张纸；「66%」那张红底金字 ============ */
.decree{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:24px 20px;counter-reset:n}
.d{position:relative;padding:22px 20px 18px;background:var(--cream);color:var(--ink);border:var(--out);border-radius:16px;box-shadow:var(--lift);counter-increment:n}
.d h3{margin:0 0 6px;font:400 22px/1.3 var(--round);color:var(--red-dk)}
.d p{margin:0;font-size:16px;line-height:1.7;text-wrap:pretty}
.d-1{grid-row:span 2;text-align:center}
.d-pic{width:78%;max-width:260px;margin:-4px auto 6px;filter:drop-shadow(0 5px 0 rgba(0,0,0,.22))}
.d-2{color:#fff2d6;background:linear-gradient(180deg,#b3291a,#7c160d);box-shadow:inset 0 0 0 5px rgba(255,214,120,.32),var(--lift)}
.d-2 h3{color:var(--gold-2)}
.d .d-big{margin:-6px 0 4px;font:400 84px/1 var(--round);color:var(--gold-2);-webkit-text-stroke:3px #5e140b;paint-order:stroke fill;
  text-shadow:0 5px 0 #4a0d06,0 0 22px rgba(255,200,90,.6)}
.d-big small{font-size:.5em}
.d-4{grid-column:1 / -1}
.decree-src{margin:22px 0 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 14px;font-size:13px;color:var(--muted);text-align:center}
.btn{display:inline-block;padding:8px 22px;font:400 17px/1.4 var(--round);color:var(--ink);text-decoration:none;background:var(--gold);
  border:var(--out);border-radius:999px;box-shadow:var(--lift)}
.btn:hover{background:var(--gold-2)}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}
.btn-2{color:var(--cream);background:var(--wood)}
.btn-2:hover{background:var(--wood-hi)}

/* ============ 盟主令出炉榜：服务器每 10 分钟写一次（gen/ling.py）。四格大数 → 一句推算 → 前 10 份进度条 ============
   进度条用原生 <progress>（CSP 不许写内联 style，宽度没法逐行写） */
.chulu .sec-in{max-width:960px}
.sec-champ{width:90px;top:-46px;margin-left:-262px}
.chulu-when{margin:0 0 14px;text-align:center;font:400 15px/1.5 var(--round);color:var(--gold-2)}
.chulu-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 16px}
.cs{padding:14px 10px 12px;text-align:center;background:var(--cream);color:var(--ink);border:var(--out);border-radius:14px;box-shadow:var(--lift)}
.cs b{display:block;font:400 40px/1.1 var(--round);color:var(--red-dk)}
.cs span{display:block;margin-top:4px;font-size:13px;line-height:1.4;color:#6b4e33}
.cs-hot{color:#fff2d6;background:linear-gradient(180deg,#b3291a,#7c160d);box-shadow:inset 0 0 0 4px rgba(255,214,120,.3),var(--lift)}
.cs-hot b{color:var(--gold-2)}
.cs-hot span{color:#ffe3c2}
.chulu-eta{margin:0 0 16px;padding:12px 16px;text-align:center;font:400 17px/1.65 var(--round);color:var(--ink);background:var(--gold-2);border:var(--out);border-radius:14px;box-shadow:var(--lift);text-wrap:pretty}
.chulu-eta .tag-infer,.cha-left .tag-infer{margin:0 0 0 8px;vertical-align:1px}
.chulu-top{list-style:none;margin:0;padding:12px 16px;background:var(--cream);color:var(--ink);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.chulu-top li{display:grid;grid-template-columns:2em 9em 1fr 4em 5.5em;grid-template-areas:"r a b d l";align-items:center;gap:10px;padding:7px 0;font-size:14px;border-top:1px dashed rgba(43,26,18,.25)}
.chulu-top li:first-child{border-top:0}
.ct-rank{grid-area:r;font:400 18px/1 var(--round);color:var(--red-dk);text-align:center}
.ct-addr{grid-area:a;font:600 13px/1.4 var(--mono)}
.ct-bar{grid-area:b}
.ct-days{grid-area:d;font:400 15px/1 var(--round);text-align:right}
.ct-left{grid-area:l;font-size:13px;color:#8a3a1f;text-align:right;white-space:nowrap}
.chulu-note{margin:10px 0 0;font-size:13px;line-height:1.7;color:var(--muted);text-wrap:pretty}
.chulu-milestone{margin:0 0 14px;padding:10px 14px;text-align:center;font:400 16px/1.6 var(--round);color:#fff2d6;background:rgba(142,31,20,.92);border:var(--out);border-radius:12px}
/* 首令纪念：第一枚盟主令铸出来以后才有 */
.shouling{margin:0 0 18px;padding:18px 16px;text-align:center;color:var(--ink);background:radial-gradient(60% 70% at 50% 0,#fff6c9,var(--cream) 70%);border:4px solid var(--gold);border-radius:18px;box-shadow:0 0 0 3px var(--ink),0 6px 0 var(--ink)}
.sl-kicker{margin:0;font:400 44px/1.2 var(--brush);color:var(--red-dk);letter-spacing:.1em;-webkit-text-stroke:.8px var(--red-dk)}
.sl-who{margin:4px 0 0;font:600 18px/1.4 var(--mono)}
.sl-meta{margin:2px 0 10px;font-size:14px;color:#6b4e33}
.sl-meta a,.chulu-note a{color:#a8321c}
.sl-ten{list-style:none;margin:0 auto;padding:0;max-width:520px;text-align:left}
.sl-ten li{display:grid;grid-template-columns:2em 1fr auto;gap:10px;align-items:center;padding:5px 0;font-size:14px;border-top:1px dashed rgba(43,26,18,.25)}
.sl-ten time{font-size:13px;color:#6b4e33}
/* 进度条（出炉榜、查询页共用） */
progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:14px;color:var(--gold);background:#f1e2c2;border:2px solid var(--ink);border-radius:999px;overflow:hidden}
progress::-webkit-progress-bar{background:#f1e2c2}
progress::-webkit-progress-value{background:linear-gradient(90deg,var(--gold),#f0a83a)}
progress::-moz-progress-bar{background:var(--gold)}

/* ============ 我的甲子俸：首页一个输入框（GET /cha），结果页由 gen/cha.py 出 ============ */
.cha .sec-in{max-width:640px}
.cha-form{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:16px;color:var(--ink);background:var(--cream);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.cha-form label{flex:1 0 100%;font:400 16px/1.4 var(--round)}
.cha-form input{flex:1;min-width:0;height:46px;padding:0 12px;font:500 15px/1 var(--mono);color:var(--ink);background:#fff;border:3px solid var(--ink);border-radius:12px}
.cha-form input:focus{outline:3px solid var(--gold-2);outline-offset:1px}
.cha-form button{flex:none;height:46px;padding:0 24px;font:400 18px/1 var(--round);color:var(--ink);background:var(--gold);border:var(--out);border-radius:12px;box-shadow:0 3px 0 var(--ink);cursor:pointer}
.cha-form button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}
.cha-tip{margin:10px 0 0;text-align:center;font-size:13px;color:var(--muted)}
.cha-page{background:radial-gradient(70% 40% at 50% 0,rgba(211,58,38,.22),transparent 70%),var(--night)}
.cha-main{max-width:640px;margin:0 auto;padding:22px 16px 40px}
.cha-home{display:block;width:220px;margin:0 auto 16px}
.cha-card{padding:20px 18px;color:var(--ink);background:var(--cream);border:var(--out);border-radius:18px;box-shadow:var(--lift)}
.cha-h{margin:0;text-align:center;font:400 34px/1.2 var(--brush);color:var(--red-dk);-webkit-text-stroke:.6px var(--red-dk)}
.cha-addr{margin:4px 0 0;text-align:center;font:600 14px/1.5 var(--mono);color:#6b4e33}
.cha-big{margin:6px 0 2px;text-align:center}
.cha-big b{font:400 72px/1 var(--round);color:var(--red)}
.cha-big span{font:400 28px/1 var(--round);color:#6b4e33}
.cha-card p{margin:8px 0 0;line-height:1.7}
.cha-left{text-align:center;font:400 17px/1.6 var(--round)}
.cha-list{list-style:none;margin:12px 0 0;padding:0}
.cha-list li{display:grid;grid-template-columns:4.2em 1fr auto;align-items:center;gap:10px;padding:6px 0;font-size:14px;border-top:1px dashed rgba(43,26,18,.25)}
.cl-name{font:400 14px/1.4 var(--round)}
.cl-v{font-size:13px;color:#6b4e33;white-space:nowrap}
.cha-card .cha-sum{font-size:14px;color:#6b4e33;text-align:center}
.cha-card .cha-today{padding:10px 12px;font-size:14px;background:#fff8e6;border:2px solid var(--ink);border-radius:10px}
.cha-card .cha-note{font-size:13px;color:#6b4e33}
.cha-share{margin:18px 0 0;text-align:center}
.cha-img{width:min(100%,360px);margin:0 auto;border:4px solid var(--gold);border-radius:14px;box-shadow:0 0 0 3px var(--ink),0 6px 0 var(--ink)}
.cha-share p{margin:12px 0 0;font-size:14px;color:var(--muted)}
.cha-page .cha-form{margin-top:18px}
.cha-foot{margin:16px 0 0;text-align:center;font-size:12px;line-height:1.7;color:var(--dim)}

/* ============ 分红账房 / 合铸算盘 / 盟主令行情：gen/pages.py 出的整页（壳和查询页同一个 gen/shell.py）============
   pg- 三页共用，fh- 分红账房，hz- 合铸算盘，hq- 盟主令行情。零脚本：图是服务器出的内联 SVG，条用原生 <progress> */
.cha-main.pg-wide{max-width:960px}
.pg-demo{margin:0 0 18px;padding:12px 16px;text-align:center;color:#fff4dc;background:repeating-linear-gradient(-45deg,#b3291a 0 18px,#8e1f14 18px 36px);
  border:var(--out);border-radius:14px;box-shadow:var(--lift)}
.pg-demo b{display:block;font:400 30px/1.3 var(--round);color:var(--gold-2);letter-spacing:.08em}
.pg-demo span{display:block;font-size:14px;line-height:1.6}
.pg-head{position:relative;margin:34px 0 0;text-align:center}
.plaque .num{font-family:var(--round);-webkit-text-stroke:0}       /* 龙藏体的「分」认不出，换圆体 */
.pg-mascot{position:absolute;left:50%;top:-30px;z-index:2;width:auto;height:150px;margin-left:140px;filter:drop-shadow(0 5px 0 rgba(0,0,0,.35));
  animation:bob 2.6s ease-in-out infinite alternate}
.pg-sub{margin:8px 0 0;font:400 16px/1.6 var(--round);color:var(--gold-2);text-wrap:pretty}
.pg-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:14px 0 22px}
.pg-nav a{padding:3px 14px;font:400 15px/1.5 var(--round);color:var(--cream);text-decoration:none;background:var(--wood);border:2px solid var(--ink);border-radius:999px;box-shadow:0 3px 0 var(--ink)}
.pg-nav a:hover{background:var(--wood-hi)}
.pg-nav a[aria-current]{color:var(--ink);background:var(--gold)}
.pg-when{margin:0 0 14px;text-align:center;font:400 15px/1.5 var(--round);color:var(--gold-2)}
.pg-warn{margin:0 0 14px;padding:8px 12px;text-align:center;font:400 15px/1.5 var(--round);color:#fff2d6;background:rgba(142,31,20,.92);border:var(--out);border-radius:12px}
.pg-card{margin:0 0 18px;padding:18px 18px 16px;color:var(--ink);background:var(--cream);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.pg-card p{margin:0 0 8px;line-height:1.7;text-wrap:pretty}
.pg-card a{color:#a8321c}
.pg-todo{border-style:dashed}
.pg-h{margin:0 0 10px;font:400 21px/1.35 var(--round);color:var(--red-dk)}
.pg-list{margin:0 0 10px;padding:0 0 0 1.3em;line-height:1.7}
.pg-list li{margin:0 0 4px}
.pg-list li::marker{color:var(--red)}
.pg-card .pg-note{font-size:13px;color:#6b4e33}
.pg-card > :last-child{margin-bottom:0}
.pg-empty{margin:0;padding:10px 12px;font:400 15px/1.6 var(--round);color:#6b4e33;background:#fff8e6;border:2px dashed rgba(43,26,18,.4);border-radius:10px}
.pg-card .pg-empty{margin:0}
.pg-src{margin:8px 0 0;font-size:13px;line-height:1.7;color:#8a6a48;word-break:break-word}
.pg-out{margin:0 0 18px;text-align:center;font-size:13px;line-height:1.7;color:var(--muted)}
.pg-out a{color:var(--gold-2)}
.pg-addr{font:600 13px/1.4 var(--mono)}
.pg-boards{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;margin:0 0 18px}
.pg-boards .pg-card{margin:0}
.pg-card .checks{margin:0 0 8px}
.pg-scam{margin:0 0 18px;padding:16px 18px;color:#fff2d6;background:linear-gradient(180deg,#8e1f14,#5e140b);border:var(--out);border-radius:16px;
  box-shadow:inset 0 0 0 4px rgba(255,214,120,.28),var(--lift)}
.pg-scam-h{margin:0 0 6px;text-align:center;font:400 36px/1.2 var(--brush);color:var(--gold-2);letter-spacing:.16em;-webkit-text-stroke:.8px var(--gold-2)}
.pg-scam p{margin:0 0 8px;line-height:1.7;text-wrap:pretty}
.pg-scam ul{margin:0 0 10px;padding:0 0 0 1.3em;line-height:1.7}
.pg-scam li{margin:0 0 4px}
.pg-scam li::marker{color:var(--gold)}
.pg-scam .pg-scam-us{margin:0;text-align:center;font:400 15px/1.6 var(--round);color:var(--gold-2)}
.pg-table{width:100%;margin:8px 0 10px;border-collapse:collapse;font-size:14px}
.pg-table th{padding:6px 8px;font:400 13px/1.4 var(--round);color:#6b4e33;text-align:left;border-bottom:2px solid var(--ink)}
.pg-table td{padding:6px 8px;border-top:1px dashed rgba(43,26,18,.25)}
.pg-table b{font:400 18px/1 var(--round);color:var(--red-dk)}
.pg-table i{margin-left:6px;padding:0 6px;font:400 12px/1.6 var(--round);font-style:normal;color:#fff4dc;white-space:nowrap;background:var(--red);border-radius:4px}
/* 分红账房：每个来源一张卡（三格合计 + 领走多少的条），下面一期一行 */
.fh-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 12px}
.fh-stats .cs b{font-size:30px;word-break:break-all}
.pg-card .fh-cap{margin:6px 0 0;font-size:13px;color:#6b4e33;text-align:right}
.fh-rows{list-style:none;margin:0 0 8px;padding:0}
.fh-rows li{display:grid;grid-template-columns:4.2em 1fr 6.4em 8em 6.5em 6.5em 5.6em 3.6em;align-items:center;gap:8px;padding:7px 0;font-size:14px;border-top:1px dashed rgba(43,26,18,.25)}
.fh-rows li:first-child{border-top:0}
.fh-rows .fh-hd{font:400 13px/1.4 var(--round);color:#6b4e33}
.fh-hd span:nth-child(n+4){text-align:right}
.fh-no{font:400 15px/1.3 var(--round);color:var(--red-dk);white-space:nowrap}
.fh-t{color:#6b4e33;font-variant-numeric:tabular-nums}
.fh-v{text-align:right;font-variant-numeric:tabular-nums}
.fh-v small{color:#8a6a48}
.fh-left{color:#8a3a1f}
.fh-who{text-align:right;color:#6b4e33}
.fh-tx{text-align:right;font-size:13px;white-space:nowrap}
.fh-look .cha-form{margin:10px 0 0;padding:0;background:none;border:0;border-radius:0;box-shadow:none}
/* 合铸算盘：√N 表（整份那几行金底）、合不合的对比表 */
.hz-sqrt td:nth-child(3){color:#8a6a48}
.hz-sq td{background:#ffe9a6}
.hz-up{color:#1d7a5c}
.hz-down{color:var(--red-dk)}
.hz-quote{margin:4px 0 10px;padding:8px 12px;font-size:15px;line-height:1.7;background:#fff8e6;border-left:4px solid var(--gold);border-radius:6px}
/* 盟主令行情：四格大数、分档条、名册、易主 / 成交列表、每天成交的柱子图（内联 SVG）、挂单分布 */
.hq-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 18px}
.pg-card .hq-stats{margin:0 0 14px}
.hq-stats .cs b{font-size:34px;word-break:break-all}
.hq-buckets{list-style:none;margin:0 0 8px;padding:0}
.hq-buckets li{display:grid;grid-template-columns:5.4em 1fr 3.8em;grid-template-areas:"l b n" "l h h";gap:2px 10px;align-items:center;padding:7px 0;border-top:1px dashed rgba(43,26,18,.25)}
.hq-buckets li:first-child{border-top:0}
.hq-b-l{grid-area:l;font:400 16px/1.3 var(--round);color:var(--red-dk)}
.hq-buckets progress{grid-area:b}
.hq-b-n{grid-area:n;text-align:right;font:400 15px/1.3 var(--round)}
.hq-b-h{grid-area:h;font-size:12px;line-height:1.4;color:#8a6a48}
.hq-rows{list-style:none;margin:0 0 8px;padding:0}
.hq-rows li{display:flex;flex-wrap:wrap;align-items:center;gap:2px 12px;padding:7px 0;font-size:14px;border-top:1px dashed rgba(43,26,18,.25)}
.hq-rows li:first-child{border-top:0}
.hq-rank{flex:none;width:1.6em;font:400 18px/1 var(--round);color:var(--red-dk);text-align:center}
.hq-top .pg-addr{flex:1}
.hq-cnt{font:400 16px/1.3 var(--round)}
.hq-share{width:5.4em;text-align:right;font-size:13px;color:#6b4e33}
.hq-rows time{font-size:13px;color:#6b4e33;font-variant-numeric:tabular-nums}
.hq-id{font:600 13px/1.4 var(--mono);color:var(--red-dk)}
.hq-who{flex:1;min-width:0}
.hq-price{font:400 16px/1.3 var(--round);white-space:nowrap}
.hq-price small{font:400 12px/1 var(--sans);color:#8a6a48}          /* 快乐体的 f 像 ƒ，币种名用系统字 */
.hq-tx{margin-left:auto;font-size:13px}
.hq-rows.hq-trades li{display:grid;grid-template-columns:auto auto 1fr auto;grid-template-areas:"t i p x" "w w w w";gap:2px 12px}
.hq-trades time,.hq-recent time{grid-area:t}
.hq-trades .hq-id,.hq-recent .hq-id{grid-area:i}
.hq-trades .hq-price{grid-area:p}
.hq-trades .hq-tx,.hq-recent .hq-tx{grid-area:x}
.hq-trades .hq-who,.hq-recent .hq-who{grid-area:w}
.hq-charts{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 4px}
.hq-chart{margin:0;padding:10px 12px 8px;background:#fff8e6;border:2px solid var(--ink);border-radius:12px}
.hq-chart figcaption{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 10px;margin:0 0 4px}
.hq-chart figcaption b{font:400 16px/1.4 var(--round);color:var(--red-dk)}
.hq-chart figcaption span{font-size:12px;color:#6b4e33}
.hq-plot{position:relative;padding-top:18px}
.hq-max{position:absolute;left:0;top:0;font-size:11px;line-height:16px;color:#8a6a48}
.hq-svg{display:block;width:100%;height:120px;overflow:visible}
.hq-bars rect{fill:var(--gold);stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}
.hq-bars rect:hover{fill:#f0a83a}
.hq-grid{stroke:rgba(43,26,18,.25);stroke-width:1px;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
.hq-base{stroke:var(--ink);stroke-width:2px;vector-effect:non-scaling-stroke}
.hq-axis{display:flex;justify-content:space-between;margin-top:2px;font-size:11px;color:#8a6a48}
.hq-depth{list-style:none;margin:0 0 8px;padding:0}
.hq-depth li{display:grid;grid-template-columns:7.6em 1fr 3em;align-items:center;gap:10px;padding:6px 0;border-top:1px dashed rgba(43,26,18,.25)}
.hq-depth li:first-child{border-top:0}
.hq-depth li > span:last-child{text-align:right;font:400 15px/1.3 var(--round)}

/* 玩法解读（没数据时整页就是它；有数据以后缩成「玩法速览」）：金底一句话、框框加箭头的流程图（手机上竖排）、
   √N 方阵举例、规则出来要问的问题、FunGuazi 三个词 */
.pg-lead{margin:0 0 18px;padding:14px 18px;text-align:center;color:var(--ink);background:var(--gold-2);border:var(--out);border-radius:14px;box-shadow:var(--lift)}
.pg-lead p{margin:0;font:400 18px/1.65 var(--round);text-wrap:pretty}
.pg-lead .pg-src{margin-top:6px;font:400 13px/1.6 var(--sans);color:#6b4e33}
.pg-lead a{color:#a8321c}
.quote.pg-quote{margin:0 0 18px;text-align:center}
.pg-h3{margin:16px 0 10px;font:400 17px/1.4 var(--round);color:var(--ink)}
.pg-h + .pg-h3{margin-top:0}
.pg-tag{margin-left:6px;padding:1px 6px;font:400 12px/1.4 var(--round);font-style:normal;color:#fff4dc;white-space:nowrap;background:var(--wood);border-radius:4px}
.pg-next{margin:0 0 18px;padding:10px 16px;text-align:center;font:400 15px/1.65 var(--round);color:var(--gold-2);border:2px dashed rgba(245,196,81,.6);border-radius:14px;text-wrap:pretty}
.pg-card .pg-boards{margin:0}
.pg-flow{list-style:none;margin:4px 0 12px;padding:0;display:flex;gap:26px;counter-reset:fl}
.pg-flow li{position:relative;flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 10px;
  text-align:center;background:#fff8e6;border:2px solid var(--ink);border-radius:12px;box-shadow:0 3px 0 var(--ink);counter-increment:fl}
.pg-flow li + li::before{content:"";position:absolute;left:-22px;top:50%;margin-top:-9px;border:9px solid transparent;border-left:13px solid var(--gold-dk);border-right:0}
.pg-flow img{width:auto;height:64px;filter:drop-shadow(0 3px 0 rgba(0,0,0,.2))}
.pg-flow b{display:block;font:400 17px/1.3 var(--round);color:var(--red-dk)}
.pg-flow span{display:block;margin-top:2px;font-size:13px;line-height:1.55;color:#5a3a22;text-wrap:pretty}
.pg-flow .hot{background:linear-gradient(180deg,#b3291a,#7c160d)}
.pg-flow .hot b{color:var(--gold-2)}
.pg-flow .hot span{color:#ffe3c2}
.pg-steps li{padding-top:16px}
.pg-steps li::after{content:counter(fl);position:absolute;left:-9px;top:-11px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;
  font:400 15px/1 var(--round);color:#fff4dc;background:var(--red);border:2px solid var(--ink);border-radius:50%}
.pg-flow .pg-tok{display:flex;align-items:center;justify-content:center;width:46px;height:62px;margin:0;font:400 34px/1 var(--round);color:var(--ink);
  background:linear-gradient(180deg,#ffe9a6,#f0b84a 60%,#c98a2a);border:3px solid var(--ink);border-radius:10px 10px 7px 7px;box-shadow:inset 0 0 0 3px rgba(255,255,255,.35)}
.pg-ask{list-style:none;margin:0 0 10px;padding:0}
.pg-ask li{position:relative;padding:8px 0 8px 40px;font:400 16px/1.6 var(--round);border-top:1px dashed rgba(43,26,18,.25)}
.pg-ask li:first-child{border-top:0}
.pg-ask li::before{content:"?";position:absolute;left:0;top:7px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;
  font:400 17px/1 var(--round);color:#fff4dc;background:var(--red);border:2px solid var(--ink);border-radius:50%}
.fh-two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0 0 10px}
.fh-box{padding:12px 14px;background:#fff8e6;border:2px solid var(--ink);border-radius:12px}
.fh-box b{display:block;margin:0 0 4px;font:400 18px/1.3 var(--round);color:var(--red-dk)}
.pg-card .fh-box p{margin:0}
.fh-ask{border-style:dashed}
.fh-eg{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:10px 0 12px}
.fh-p{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px 10px;text-align:center;background:#fff8e6;border:2px solid var(--ink);border-radius:12px}
.fh-tk{display:grid;gap:4px;height:58px;align-content:end}
.fh-tk.n1{grid-template-columns:16px}
.fh-tk.n2{grid-template-columns:repeat(2,16px)}
.fh-tk.n3{grid-template-columns:repeat(3,16px)}
.fh-tk i{display:block;width:16px;height:16px;background:radial-gradient(circle at 35% 30%,#fff3c4,#f5c451 55%,#c98a2a);border:2px solid var(--ink);border-radius:4px}
.fh-p b{font:400 16px/1.3 var(--round)}
.fh-p span:last-child{font:400 18px/1.3 var(--round);color:var(--red-dk)}
.pg-card .fh-split{display:flex;height:34px;margin:0 0 8px;overflow:hidden;border:2px solid var(--ink);border-radius:999px}
.fh-split span{display:flex;align-items:center;justify-content:center;font:400 14px/1 var(--round);white-space:nowrap;border-left:2px solid var(--ink)}
.fh-split span:first-child{border-left:0}
.fh-split .g1{flex:1;background:#ffe9a6}
.fh-split .g2{flex:2;background:var(--gold)}
.fh-split .g3{flex:3;background:#f0a83a}
.pg-card .fh-cap2{font:400 16px/1.6 var(--round);text-align:center}
.pg-card .fh-warn{margin:10px 0 0;padding:8px 12px;text-align:center;font:400 16px/1.6 var(--round);color:#fff2d6;background:rgba(142,31,20,.92);border-radius:10px}
.fh-warn b{color:var(--gold-2)}
.hq-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 12px}
.hq-tile{padding:12px 14px;background:#fff8e6;border:2px solid var(--ink);border-radius:12px}
.hq-tile b{display:block;margin:0 0 4px;font:400 18px/1.3 var(--round);color:var(--red-dk)}
.pg-card .hq-tile p{margin:0;font-size:14px}
.pg-card .hq-good,.pg-card .hq-bad{margin:0 0 4px;font:400 17px/1.4 var(--round)}
.hq-good{color:#1d7a5c}
.hq-bad{color:var(--red-dk)}
.pg-card .scam{margin:0}

/* ============ 飞鸽传书：服务器每 10 分钟写一次（gen/watch.py），左边官方帖子、右边合约和链上动静 ============
   帖子正文是官方原话、字是随机的，不用切了子集的两套字体，用系统字体 */
.feige .sec-in{max-width:960px}
.sec-pigeon{width:96px;top:-26px;transform:scaleX(-1);animation:none}
.feige-when{margin:0 0 14px;text-align:center;font:400 15px/1.5 var(--round);color:var(--gold-2)}
.feige-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;align-items:start}
.fg-posts,.fg-box{padding:16px 18px;background:var(--cream);color:var(--ink);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.fg-box + .fg-box{margin-top:18px}
.fg-h{margin:0 0 10px;font:400 20px/1.3 var(--round);color:var(--red-dk)}
.fg-stale{margin-left:6px;font:400 12px/1.4 var(--sans);color:#a8321c}
.posts{list-style:none;margin:0;padding:0}
.post{padding:10px 0;border-top:1px dashed rgba(43,26,18,.28)}
.post:first-child{padding-top:0;border-top:0}
.post-meta{margin:0 0 4px;display:flex;align-items:center;gap:8px;font-size:13px;color:#8a6a48}
.tag-new{padding:0 7px;font:400 12px/1.6 var(--round);color:#fff4dc;background:var(--red);border-radius:4px}
.post-text{margin:0;font:400 15px/1.7 var(--sans);text-wrap:pretty;word-break:break-word}
.post-links{margin:4px 0 0;display:flex;gap:14px;font-size:14px}
.post-links a,.fg-box a,.fg-note a{color:#a8321c}
.fg-note,.fg-empty{margin:10px 0 0;font-size:13px;color:#8a6a48}
.fg-box p{margin:0 0 6px;font-size:14px;line-height:1.65}
.fg-addr{padding:8px 10px;margin:0 0 8px;background:#fff8e6;border:2px solid var(--ink);border-radius:8px}
.fg-addr .fg-addr-v{margin:0 0 4px;font:600 13px/1.5 var(--mono);word-break:break-all}
.fg-warn-s{color:#a8321c}
.fg-list{list-style:none;margin:0;padding:0}
.fg-list li{padding:7px 0;font-size:14px;line-height:1.65;border-top:1px dashed rgba(43,26,18,.28)}
.fg-list li:first-child{padding-top:0;border-top:0}
.fg-list b{display:inline-block;min-width:5.5em;margin-right:6px;font:400 14px/1.5 var(--round);color:var(--red-dk)}
.fg-warn{margin:16px 0 0;text-align:center;font-size:13px;color:var(--muted)}

/* ============ 盟主令怎么来：四步修炼路线，一步一张纸，金色虚线串起来 ============
   第三步 60 格进度条和第四步「?」令牌同一个 9 秒循环：0–33% 第一排 30 格一格一格亮，33–66% 第二排，72% 令牌「叮」地铸出来 */
.path{list-style:none;margin:0;padding:0;counter-reset:n}
.step{position:relative;display:flex;align-items:center;gap:18px;margin:0 0 40px;padding:18px 20px;background:var(--cream);color:var(--ink);
  border:var(--out);border-radius:16px;box-shadow:var(--lift);counter-increment:n}
.step:nth-child(even){flex-direction:row-reverse}
.step:last-child{margin-bottom:0}
.step + .step::after{content:"";position:absolute;left:50%;top:-40px;height:34px;margin-left:-2px;border-left:4px dashed var(--gold)}
.step-pic{flex:none;width:28%;max-width:180px;margin:-30px 0 -8px;filter:drop-shadow(0 5px 0 rgba(0,0,0,.25));animation:bob 2.8s ease-in-out infinite alternate}
.s-2 .step-pic{animation-delay:-.7s}
.s-3 .step-pic{animation-delay:-1.4s}
.step-txt{flex:1;min-width:0}
.step-h{margin:0 0 6px;font:400 32px/1.2 var(--brush);color:var(--red-dk);-webkit-text-stroke:.7px var(--red-dk)}
.step p{margin:0;font-size:16px;line-height:1.7;text-wrap:pretty}
.jiazi{display:flex;flex-direction:column;gap:5px;margin:12px 0 0}
.jz{position:relative;display:block;height:16px;overflow:hidden;border:2px solid var(--ink);border-radius:5px;
  background:repeating-linear-gradient(90deg,#f1e2c2 0,#f1e2c2 calc(3.3333% - 2px),rgba(43,26,18,.35) calc(3.3333% - 2px),rgba(43,26,18,.35) 3.3333%)}
.jz::after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;
  background:repeating-linear-gradient(90deg,var(--gold) 0,var(--gold) calc(3.3333% - 2px),transparent calc(3.3333% - 2px),transparent 3.3333%);
  -webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0);animation:jz-a 9s steps(30,end) infinite}
.jz + .jz::after{animation-name:jz-b}
@keyframes jz-a{0%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}33%,100%{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}
@keyframes jz-b{0%,33%{-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0)}66%,100%{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}
.step .jz-cap{margin:5px 0 0;font:400 13px/1.4 var(--round);color:#8a6a48}
.token{position:relative;flex:none;width:28%;max-width:180px;min-height:150px;display:flex;align-items:center;justify-content:center}
.token b{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:88px;height:120px;font:400 64px/1 var(--round);color:var(--ink);
  background:linear-gradient(180deg,#ffe9a6,#f0b84a 60%,#c98a2a);border:var(--out);border-radius:16px 16px 10px 10px;
  box-shadow:inset 0 0 0 5px rgba(255,255,255,.35),0 5px 0 var(--ink);animation:mint 9s var(--ease) infinite}
.token-burst{position:absolute;left:50%;top:50%;width:220px;height:220px;margin:-110px 0 0 -110px;border-radius:50%;pointer-events:none;
  background:repeating-conic-gradient(rgba(255,196,64,.9) 0 6deg,rgba(255,196,64,0) 6deg 18deg);
  -webkit-mask-image:radial-gradient(circle,#000 20%,transparent 66%);mask-image:radial-gradient(circle,#000 20%,transparent 66%);
  opacity:0;animation:mint-burst 9s ease-out infinite}
@keyframes mint{0%,68%{opacity:.55;transform:scale(.86)}72%{opacity:1;transform:scale(1.18)}76%,94%{opacity:1;transform:scale(1)}100%{opacity:.55;transform:scale(.86)}}
@keyframes mint-burst{0%,69%{opacity:0;transform:scale(.4) rotate(0)}72%{opacity:1;transform:scale(.9) rotate(10deg)}90%,100%{opacity:0;transform:scale(1.4) rotate(30deg)}}
.sum{margin:30px 0 0;padding:14px 18px;text-align:center;font:400 19px/1.6 var(--round);color:var(--ink);background:var(--gold-2);
  border:var(--out);border-radius:14px;box-shadow:var(--lift);text-wrap:pretty}
.infer{margin:18px 0 0;font-size:15px;line-height:1.7;color:var(--text);text-wrap:pretty}
.tag-infer{display:inline-block;margin-right:8px;padding:0 8px;font:400 13px/1.6 var(--round);color:var(--ink);background:var(--muted);border-radius:4px}
.srcline{margin:10px 0 0;font-size:13px;color:var(--dim)}
.quote{margin:18px 0 0;padding:12px 18px;background:rgba(58,14,10,.82);border:2px solid #c99a3c;border-radius:12px}
.quote p{margin:0;font:400 19px/1.6 var(--round);color:#fff2d6}
.quote cite{display:block;margin-top:4px;font-size:13px;font-style:normal;color:var(--muted)}
.quote a{color:var(--gold-2)}

/* ============ 盟主令能干什么：大卡「六六福泽」（天赦局小动画）+ 三张小卡 ============ */
.yong .sec-in{max-width:960px}
.uses{display:grid;grid-template-columns:1.25fr 1fr;gap:22px 20px;align-items:start}
.use{position:relative;padding:20px 20px 14px;background:var(--cream);color:var(--ink);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.u-fz{grid-row:span 4}
.use-h{margin:0 0 8px;font:400 30px/1.2 var(--brush);color:var(--red-dk);-webkit-text-stroke:.6px var(--red-dk)}
.use-h .num{font-family:var(--round);-webkit-text-stroke:0}       /* 龙藏体的数字又小又歪，「66%」用圆体 */
.use p{margin:0 0 8px;font-size:16px;line-height:1.7;text-wrap:pretty}
.use .cite{margin:6px 0 0;font-size:12px;color:#8a6a48}
.use .cite a{color:#a8321c}
.use-go{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.use-go a{padding:4px 14px;font:400 15px/1.4 var(--round);color:var(--ink);text-decoration:none;background:var(--gold);border:2px solid var(--ink);border-radius:999px;box-shadow:0 2px 0 var(--ink)}
.use-go a:hover{background:var(--gold-2)}
.use-pic{float:right;width:84px;margin:-40px -6px 4px 10px;filter:drop-shadow(0 4px 0 rgba(0,0,0,.25))}
.hl{font-size:1.3em;color:var(--red)}
.use .sqrt-if{margin:0 0 4px;font-size:14px;color:#6b4e33}
.sqrt{list-style:none;margin:4px 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.sqrt li{padding:3px 12px;font:400 15px/1.5 var(--round);background:#fff8e6;border:2px solid var(--ink);border-radius:999px}
.sqrt b{color:var(--red)}
/* 天赦局：第 64、65 局那 66 枚掉进归墟（烧掉），第 66 局那 66 枚落进福泽罐；6 秒一轮 */
.tianshe{position:relative;height:180px;margin:2px 0 12px;overflow:hidden;background:linear-gradient(180deg,#2c2350,#17142f);border:3px solid var(--ink);border-radius:12px}
.ts-lab{position:absolute;bottom:6px;font:400 13px/1.3 var(--round);color:var(--muted)}
.l-void{left:calc(18% - 40px)}
.l-jar{left:calc(82% - 21px)}
.ts-void{position:absolute;left:calc(18% - 46px);bottom:30px;width:92px;height:92px;border-radius:50%;
  background:repeating-conic-gradient(#0b0a18 0 18deg,#5b3a91 18deg 36deg);
  -webkit-mask-image:radial-gradient(circle,#000 34%,rgba(0,0,0,.6) 56%,transparent 70%);mask-image:radial-gradient(circle,#000 34%,rgba(0,0,0,.6) 56%,transparent 70%);
  animation:spin 2.4s linear infinite}
.ts-glow{position:absolute;left:calc(82% - 70px);bottom:24px;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(255,214,110,.75),transparent 65%);
  opacity:0;animation:jar-glow 6s linear infinite}
.ts-jar{position:absolute;left:calc(82% - 40px);bottom:26px;width:80px}
.ts-no{position:absolute;left:50%;top:10px;padding:2px 12px;font:400 15px/1.5 var(--round);color:var(--cream);white-space:nowrap;transform:translateX(-50%);
  background:var(--wood);border:2px solid var(--ink);border-radius:999px;opacity:0}
.n-1{animation:ts-1 6s linear infinite}
.n-2{animation:ts-2 6s linear infinite}
.n-3{color:#fff4dc;background:var(--red);animation:ts-3 6s linear infinite}
@keyframes ts-1{0%,33%{opacity:1}33.4%,100%{opacity:0}}
@keyframes ts-2{0%,33%{opacity:0}33.4%,66.3%{opacity:1}66.7%,100%{opacity:0}}
@keyframes ts-3{0%,66.3%{opacity:0}66.7%,100%{opacity:1}}
.ts-coin{position:absolute;left:50%;top:52px;width:46px;height:46px;margin-left:-23px;display:flex;align-items:center;justify-content:center;
  font:400 16px/1 var(--round);color:var(--ink);background:radial-gradient(circle at 35% 30%,#fff3c4,#f5c451 55%,#c98a2a);border:3px solid var(--ink);border-radius:50%;
  opacity:0;animation:ts-coin 6s ease-in infinite}
@keyframes ts-coin{
  0%{left:50%;top:52px;opacity:0;transform:scale(.6)}
  4%{opacity:1;transform:scale(1)}
  14%{left:50%;top:52px;opacity:1;transform:scale(1) rotate(0)}
  28%{left:18%;top:86px;opacity:1;transform:scale(.7) rotate(-120deg)}
  31%,33.3%{left:18%;top:96px;opacity:0;transform:scale(.2) rotate(-240deg)}
  33.4%{left:50%;top:52px;opacity:0;transform:scale(.6)}
  37%{opacity:1;transform:scale(1)}
  47%{left:50%;top:52px;opacity:1;transform:scale(1) rotate(0)}
  61%{left:18%;top:86px;opacity:1;transform:scale(.7) rotate(-120deg)}
  64%,66.6%{left:18%;top:96px;opacity:0;transform:scale(.2) rotate(-240deg)}
  66.7%{left:50%;top:52px;opacity:0;transform:scale(.6)}
  70%{opacity:1;transform:scale(1.2)}
  80%{left:50%;top:52px;opacity:1;transform:scale(1)}
  91%{left:82%;top:84px;opacity:1;transform:scale(.8)}
  95%,100%{left:82%;top:96px;opacity:0;transform:scale(.4)}}
@keyframes jar-glow{0%,88%{opacity:0}94%{opacity:1}100%{opacity:0}}

/* ============ 江湖告示：城门墙上贴两张（已公布 / 还没公布）+ 捕快指着防骗告示 ============ */
.notice .sec-in{max-width:960px}
.boards2{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:0 0 34px;align-items:start}
.paper{position:relative;padding:20px 20px 16px;background:var(--paper);color:var(--ink);border:var(--out);border-radius:6px;box-shadow:var(--lift);transform:rotate(-.8deg)}
.p-todo{transform:rotate(.7deg)}
.paper::before,.paper::after{content:"";position:absolute;top:8px;width:11px;height:11px;border-radius:50%;background:var(--ink)}
.paper::before{left:10px}
.paper::after{right:10px}
.paper-h{margin:0 0 8px;text-align:center;font:400 38px/1.1 var(--brush);letter-spacing:.2em;-webkit-text-stroke:.8px var(--ink)}
.p-todo .paper-h{color:var(--red-dk);-webkit-text-stroke-color:var(--red-dk)}
.checks{list-style:none;margin:0;padding:0}
.checks li{position:relative;padding:8px 0 8px 34px;line-height:1.6;border-top:1px dashed rgba(43,26,18,.28);text-wrap:pretty}
.checks li:first-child{border-top:0}
.checks li::before{content:"";position:absolute;left:0;top:10px;width:22px;height:22px;font:700 15px/18px var(--sans);color:#fff;text-align:center;
  background:#fff8e6;border:2px solid var(--ink);border-radius:5px}
.checks .ok::before{content:"✓";background:var(--jade)}
.checks .wait::before{border-style:dashed}
.checks i{margin-left:6px;padding:1px 6px;font:400 12px/1.4 var(--round);font-style:normal;color:#fff4dc;white-space:nowrap;background:var(--wood);border-radius:4px}
.notice-body{display:flex;align-items:flex-end;gap:10px}
.constable{flex:none;width:28%;max-width:200px;order:2;filter:drop-shadow(0 6px 0 rgba(0,0,0,.35));animation:bob 2.2s ease-in-out infinite alternate}
.p-scam{flex:1;min-width:0}
.paper .lead{margin:0 0 6px;font:400 19px/1.5 var(--round)}
.scam{margin:0 0 12px;padding:0 0 0 1.3em;line-height:1.7}
.scam li{margin:0 0 4px}
.scam li::marker{color:var(--red)}
.scam.good li::marker{color:var(--jade)}

/* ============ 小白问答：吃瓜群众提问（表情贴纸当头像），点开看答案；底下一张名词小抄 ============ */
.faq{display:flex;flex-direction:column;gap:14px}
.qa{background:var(--cream);color:var(--ink);border:var(--out);border-radius:16px;box-shadow:var(--lift)}
.qa summary{display:flex;align-items:center;gap:12px;padding:10px 14px 10px 12px;cursor:pointer;list-style:none}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"+";flex:none;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font:400 22px/1 var(--round);color:#fff4dc;
  background:var(--red);border:2px solid var(--ink);border-radius:50%}
.qa[open] summary::after{content:"−"}
.qa summary:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px;border-radius:14px}
.q{flex:1;min-width:0;font:400 18px/1.45 var(--round)}
.qa p{margin:0;padding:0 18px 16px 82px;line-height:1.75;text-wrap:pretty}
/* 表情贴纸：一张 6 格的图（阿婆、胖小子、草帽哥、女侠、胖和尚、书生），--s 是一格多大 */
.stk{--s:58px;flex:none;width:var(--s);height:var(--s);background:url(/img/stickers.webp) 0 0/calc(var(--s)*6) var(--s) no-repeat;filter:drop-shadow(0 3px 0 rgba(0,0,0,.3))}
.stk-boy{background-position:calc(var(--s)*-1) 0}
.stk-straw{background-position:calc(var(--s)*-2) 0}
.stk-sword{background-position:calc(var(--s)*-3) 0}
.stk-monk{background-position:calc(var(--s)*-4) 0}
.stk-scholar{background-position:calc(var(--s)*-5) 0}
.glossary{margin-top:34px;padding:16px 18px;background:rgba(12,14,30,.74);border:2px solid rgba(245,196,81,.5);border-radius:14px}
.glossary-h{margin:0 0 6px;font:400 28px/1.4 var(--brush);color:var(--gold-2);-webkit-text-stroke:.5px var(--gold-2)}
.glossary dl{margin:0}
.glossary dl > div{padding:9px 0;border-top:1px dashed rgba(245,196,81,.32)}
.glossary dt{display:inline;font:400 17px/1.6 var(--round);color:var(--gold-2)}
.glossary dt::after{content:"："}
.glossary dd{display:inline;margin:0;color:var(--text)}

/* ============ 一图看懂 ============ */
.card{padding-bottom:40px;background-image:radial-gradient(60% 50% at 50% 40%,rgba(211,58,38,.22),transparent 70%)}
.card .sec-in{text-align:center}
.card-img{position:relative;display:inline-block;width:min(100%,380px)}
.card-img a{display:block}
.card-img .shot{width:100%;border:4px solid var(--gold);border-radius:16px;box-shadow:0 0 0 3px var(--ink),0 8px 0 var(--ink)}
.card-mascot{position:absolute;right:-74px;bottom:-14px;width:120px;filter:drop-shadow(0 5px 0 rgba(0,0,0,.35));animation:bob 2.4s ease-in-out infinite alternate}
.hint{margin:16px 0 0;font-size:15px;color:var(--muted)}

/* ============ 页脚：瓜子侠挥手送客 ============ */
.foot{position:relative;padding:40px 0 46px;font-size:13px;line-height:1.7;color:var(--dim);background:linear-gradient(180deg,var(--night),#0c0b1c)}
.foot-in{max-width:780px;margin:0 auto;padding:0 18px;text-align:center}
.foot-mascot{width:120px;margin:0 auto -6px;animation:bob 2s ease-in-out infinite alternate}
.foot-bye{margin:0 0 14px;font:400 26px/1.4 var(--brush);color:var(--gold-2);-webkit-text-stroke:.6px var(--gold-2)}
.foot p{margin:0 0 6px}
.foot b{color:var(--muted)}

/* ============ 手机：竖版海报 ============ */
@media (max-width:699px){
  :root{--pw:100vw}
  .poster-blur{display:none}
  .box{width:100%}
  .box::before{padding-top:150%}
  .title{left:4%;top:1.4%;width:92%}
  .logo{width:48%}
  .slogan{font-size:calc(var(--pw)*.058)}
  .tagline{display:none}
  .edict{left:1.5%;top:17.2%;width:97%;height:25.6%}
  .edict-paper{padding:3.8% 5% 3.4%}
  .edict-head{font-size:calc(var(--pw)*.026)}
  .seal{font-size:1.15em}
  .edict-title{font-size:calc(var(--pw)*.06)}
  .edict-pre{font-size:calc(var(--pw)*.034)}
  .pct{font-size:calc(var(--pw)*.106)}
  .edict-to{font-size:calc(var(--pw)*.035)}
  .edict-foot{display:none}                  /* 手机上卷轴太矮：这句省掉，整张卷轴本来就能点、详解就在下面 */
  @keyframes roll-l{from{left:47.6%}}
  @keyframes roll-r{from{right:47.6%}}
  .pigeon{left:80%;top:12.6%;width:14%}
  .dev-menu{right:2.4%;top:1%;width:52px}
  .dev-tag{font-size:11px;border-width:1.5px}
  .dev-panel{top:calc(100% + 12px);width:240px;max-height:calc(var(--pw)*1.48 - 84px)}
  .dev-list a{padding:4px 6px}
  .dev-more a{padding:3px 5px;font-size:12px}
  .hero-go{left:2.5%;right:2.5%;bottom:2.6%;transform:none;gap:6px}
  .hero-go a{flex:1 1 0;flex-direction:column;justify-content:center;gap:2px;padding:5px 2px 6px;font-size:12px;border-width:2px;border-radius:12px;box-shadow:0 0 0 2px var(--ink),0 4px 0 2px var(--ink)}
  .hero-go img{height:30px}
  .rays{left:20%;top:38%;width:66%;padding-top:66%}
  .teller{left:35%;top:43.5%;width:34%}
  .pa{font-size:calc(var(--pw)*.08);left:-36%}
  .sword{left:-4%;top:40%;width:34%}
  .qi{left:-10%;top:41%;width:42%}
  .flyer{display:none}
  .fw-1{left:2%;top:1%;width:36%}
  .fw-2{left:62%;top:0;width:36%}
  .fw-3{left:4%;top:38%;width:26%}
  .sl{width:6%}
  .sl-1{left:10%;top:44%}
  .sl-2{left:80%;top:40%;width:5%}
  .sl-3{left:66%;top:48%;width:4.5%}
  .sl-4{left:24%;top:50%;width:4.8%}
  .pc-1{left:4%;top:46%;width:10%}
  .pc-2{left:30%;top:56%;width:8%}
  .pc-3{left:40%;top:78%;width:3.2%}
  .pc-4{left:60%;top:80%;width:3%}
  .pc-5{left:82%;top:74%;width:3.4%}
  .dust{height:48%}
  .rule-board{left:auto;right:1.5%;top:44%;width:9%;font-size:calc(var(--pw)*.022)}
  .sec{padding:72px 0 56px}
  .plaque{width:300px;height:158px;padding-bottom:32px;font-size:34px}
  .plaque.long{font-size:27px}
  .sec-mascot{width:86px;top:-22px;margin-left:-190px}
  .decree{grid-template-columns:1fr;gap:26px}
  .feige-grid{grid-template-columns:1fr}
  .chulu-stats{grid-template-columns:repeat(2,1fr);gap:12px}
  .cs b{font-size:34px}
  .chulu-top li{grid-template-columns:1.6em 1fr auto;grid-template-areas:"r a d" "r b l";gap:4px 10px}
  .sec-champ{width:66px;top:-30px;margin-left:-196px}
  .sec-pigeon{width:72px;top:-18px}
  .d-1{grid-row:auto}
  .d-pic{width:62%}
  .d .d-big{font-size:76px}
  .step,.step:nth-child(even){flex-direction:column;gap:6px;padding:16px 16px 18px;text-align:center}
  .step-pic,.token{width:46%;margin:-46px 0 0}
  .token{min-height:132px}
  .step p{text-align:left}
  .uses,.boards2{grid-template-columns:1fr}
  .u-fz{grid-row:auto}
  .card-mascot{right:-14px;width:84px}
  .pg-head{margin-top:30px}
  .pg-mascot{left:auto;right:-6px;top:-22px;height:84px;margin:0}
  .pg-nav{gap:6px}
  .pg-nav a{padding:2px 10px;font-size:14px}
  .pg-demo b{font-size:24px}
  .pg-boards,.hq-charts{grid-template-columns:1fr}
  .fh-stats{grid-template-columns:1fr;gap:10px}
  .fh-stats .cs{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 14px;text-align:left}
  .fh-stats .cs b{font-size:26px}
  .fh-stats .cs span{margin:0;text-align:right}
  .fh-rows .fh-hd{display:none}
  .fh-rows li{grid-template-columns:repeat(3,1fr);grid-template-areas:"no pool pool" "t t t" "a c l" "w w tx";align-items:start;gap:2px 8px;padding:10px 0}
  .fh-no{grid-area:no}
  .fh-pool-n{grid-area:pool;text-align:right;font-size:13px}
  .fh-t{grid-area:t}
  .fh-tx{grid-area:tx}
  .fh-rows .fh-v:nth-child(4){grid-area:a}
  .fh-rows .fh-v:nth-child(5){grid-area:c}
  .fh-rows .fh-v:nth-child(6){grid-area:l}
  .fh-v{text-align:left}
  .fh-v::before{content:attr(data-k);display:block;font-size:12px;color:#8a6a48}
  .fh-who{grid-area:w;text-align:left;font-size:13px}
  .hq-stats{grid-template-columns:repeat(2,1fr);gap:12px}
  .hq-stats .cs b{font-size:28px}
  .hq-rows.hq-recent li{display:grid;grid-template-columns:auto auto 1fr auto;grid-template-areas:"t i p x" "w w w w";gap:2px 12px}
  .pg-lead p{font-size:16px}
  .pg-flow{flex-direction:column;gap:22px}
  .pg-flow li{flex-direction:row;align-items:center;gap:12px;padding:10px 12px;text-align:left}
  .pg-flow li + li::before{left:50%;top:-20px;margin:0 0 0 -9px;border:9px solid transparent;border-top:12px solid var(--gold-dk);border-bottom:0}
  .pg-flow li > div{flex:1;min-width:0}
  .pg-flow img{flex:none;height:52px}
  .pg-flow .pg-tok{flex:none;width:38px;height:52px;font-size:28px}
  .pg-steps li{padding-top:10px;padding-left:22px}
  .fh-two,.hq-tiles{grid-template-columns:1fr}
  .fh-eg{gap:8px}
}
@media (max-width:360px){
  body{font-size:15px}
  .plaque{width:270px;height:142px;padding-bottom:28px;font-size:30px}
  .plaque.long{font-size:24px}
  .dev-hi{font-size:19px}
  .dev-list a{padding:3px 6px;font-size:14px}
  .dev-list a::before{width:18px;height:18px;font-size:12px}
  .dev-more{margin-top:6px;padding-top:6px}
  .dev-more span{display:none}
  .sec-mascot{width:70px;margin-left:-158px}
  .step-h{font-size:28px}
  .qa p{padding-left:18px}
  .pg-h{font-size:19px}
  .pg-card{padding:16px 14px 14px}
  .pg-scam-h{font-size:30px}
  .pg-table{font-size:13px}
  .pg-table th,.pg-table td{padding:5px 4px}
  .hq-stats .cs b{font-size:24px}
  .fh-p b{font-size:14px}
  .fh-p span:last-child{font-size:16px}
  .pg-ask li{font-size:15px}
}

/* ============ 滚动出场：只在支持 animation-timeline 的浏览器上加，老浏览器直接显示 ============ */
@supports (animation-timeline:view()){
  .d,.step,.use,.qa{animation:card-in linear both;animation-timeline:view();animation-range:entry 5% cover 30%}
  .d .d-big{animation:stamp-in linear both;animation-timeline:view();animation-range:entry 25% cover 45%}
  .paper{animation:pin-in linear both;animation-timeline:view();animation-range:entry 10% cover 35%}
  @keyframes card-in{from{opacity:0;transform:translateY(30px) scale(.96)}}
  @keyframes stamp-in{from{opacity:0;transform:scale(2.2) rotate(-8deg)}}
  @keyframes pin-in{from{opacity:0;transform:translateY(20px) rotate(-5deg)}}
}

/* ============ 404 ============ */
.lost{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:24px;padding:32px 20px;flex-wrap:wrap;
  background:radial-gradient(60% 50% at 50% 30%,rgba(211,58,38,.2),transparent 70%)}
.lost-waiter{width:200px}
.lost-say{max-width:420px}
.lost-say h1{margin:0 0 10px;font:400 38px/1.3 var(--brush);color:var(--gold-2);-webkit-text-stroke:.8px var(--gold-2)}
.lost-say p{margin:0 0 10px}
.lost-warn{padding:12px 14px;background:var(--cream);color:var(--ink);border:var(--out);border-radius:14px;box-shadow:var(--lift)}
.lost-back{display:inline-block;margin-top:6px;padding:8px 20px;font:400 17px/1.4 var(--round);color:var(--cream);text-decoration:none;background:var(--wood);
  border:var(--out);border-radius:999px;box-shadow:var(--lift)}
.lost-back:active{transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}

/* ============ 减少动态效果：全停，停在看得懂的那一帧 ============ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .teller .f-b,.pa,.pc,.fw,.sl,.flyer,.pg-b,.ts-coin,.ts-glow,.token-burst{opacity:0!important}
  .n-3{opacity:1!important}
  .jz::after{-webkit-clip-path:none;clip-path:none}
}
