*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{background:#000;color:#ccc;font-family:'Noto Sans SC',system-ui,sans-serif;height:100vh;height:100dvh;overflow:hidden;cursor:default;
  display:flex;align-items:center;justify-content:center;
  -webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;touch-action:manipulation}
canvas{display:block}

/* ---- PHONE COLUMN（桌面端居中竖屏视窗，手机端全屏） ---- */
#stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center}
#game-wrap{position:relative;width:100%;height:100%;max-width:480px;background:#000;overflow:hidden}

/* ---- LAYERS ---- */
#bg-canvas{position:absolute;inset:0;z-index:1}
#fg-canvas{position:absolute;inset:0;z-index:2;pointer-events:none}
#game-canvas{position:absolute;inset:0;z-index:3}
#fx-canvas{position:absolute;inset:0;z-index:4;pointer-events:none}

/* ---- HUD · 顶栏（机位/时间/理智 + 信号电量）——顶部安全区加固 ---- */
#hud{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;flex-direction:column;gap:3px;
  padding:calc(max(18px, env(safe-area-inset-top)) + 8px) 14px 12px;pointer-events:none;
  background:linear-gradient(to bottom,rgba(5,5,8,.92),rgba(5,5,8,.6) 70%,transparent)}
#hud .hud-row{display:flex;align-items:center;gap:12px}
#hud .loc{font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:15px;color:#cfc9bb;min-width:0;letter-spacing:2px;
  text-shadow:0 0 12px rgba(0,0,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#hud .time{font-size:14px;font-weight:700;color:#ece7dc;font-variant-numeric:tabular-nums;letter-spacing:2px}
#san-wrap{display:flex;align-items:center;gap:7px;margin-left:auto}
#san-wrap .lbl{font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:13px;color:#8a8578;letter-spacing:3px}
#san-bar{width:72px;height:6px;background:#15141a;border:1px solid #000;border-radius:1px;overflow:hidden;transform:skewX(-12deg)}
#san-fill{height:100%;width:100%;background:#3a9;transition:width .4s,background .4s}
#san-v{font-size:12px;font-weight:700;min-width:24px;text-align:right;color:#cfc9bb;font-variant-numeric:tabular-nums}
#hud .hud-row.sub{font-family:'Courier New',Courier,monospace;font-size:12px;color:#8a8578;letter-spacing:1px}
#feed-label{color:#a03939;letter-spacing:2px}
#feed-label::before{content:'● ';color:#a01018;animation:vhs-blink 1.4s step-start infinite}
#phone-status{margin-left:auto;pointer-events:none;display:flex;gap:8px}

/* ---- DIALOGUE · 底部漫画纸面板 ---- */
#dialogue{position:absolute;left:50%;width:calc(100% - 20px);z-index:20;pointer-events:none;opacity:0;
  transition:opacity .2s,transform .2s;transform:translate(-50%,12px);
  bottom:calc(142px + env(safe-area-inset-bottom))}
#dialogue.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
#dlg-box{background:#d9d3c3;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='90' height='90'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/></filter><rect width='90' height='90' filter='url(%23n)'/></svg>");
  border:3px solid #0a0a0c;border-radius:3px;padding:13px 16px;width:100%;max-width:460px;margin:0 auto;
  box-shadow:5px 5px 0px rgba(0,0,0,0.85),0 14px 40px rgba(0,0,0,.6);
  position:relative;font-weight:700;color:#14130f;transform:rotate(-.35deg)}
#dlg-speaker{font-family:'KaiTi','STKaiti',serif;font-size:15px;color:#a01018;border-bottom:2px solid #14130f;
  padding-bottom:3px;margin-bottom:8px;font-weight:900;letter-spacing:3px}
#dlg-speaker:empty{display:none}
#dlg-text{font-size:16px;line-height:1.75;color:#14130f}
#dlg-text .wh{color:#4a463c;font-style:italic}
#dlg-text .sys{color:#a01018;font-weight:900}
#dlg-text .rule{color:#14130f;background:rgba(10,10,12,0.06);border:2px dashed #14130f;padding:4px 9px;font-weight:900;display:inline-block;margin:3px 0}
#dlg-text .bc{color:#14130f;font-weight:bold;border:2px double #14130f;padding:4px 9px;display:inline-block;margin:3px 0}
#dlg-choices{display:flex;flex-direction:column;gap:9px;margin-top:11px}
/* 伊藤润二风选项：撕纸纸条，交替歪斜 */
.dch{background:#e0dac9;border:none;color:#14130f;padding:12px 15px;
  font-weight:700;font-size:15px;cursor:pointer;font-family:inherit;text-align:left;
  clip-path:polygon(0 8%,3% 0,24% 4%,48% 0,74% 3%,97% 0,100% 9%,99% 34%,100% 62%,98% 90%,100% 100%,72% 96%,46% 100%,20% 97%,0 100%);
  box-shadow:3px 3px 0 rgba(10,10,12,.85);transition:all .1s}
.dch:nth-child(odd){transform:rotate(-.5deg)}
.dch:nth-child(even){transform:rotate(.45deg)}
.dch:active{background:#a01018;color:#f4ece2;transform:translate(2px,2px) rotate(0)}
.dch .hint{font-size:13px;color:#8a8578;display:block;margin-top:3px}
.dch:active .hint{color:#e3c9c2}
#dlg-continue{font-family:'KaiTi','STKaiti',serif;font-size:13px;color:#7a766a;text-align:center;margin-top:9px;cursor:pointer;letter-spacing:2px;padding:4px 0}
#dlg-continue:active{color:#a01018}

/* ---- INVENTORY · dock 内纸牌 ---- */
#inv{display:flex;gap:6px;overflow-x:auto;flex:1;pointer-events:auto;scrollbar-width:none;padding:1px}
#inv::-webkit-scrollbar{display:none}
#inv:empty::after{content:'背包';font-size:11px;color:#4a463d;align-self:center;margin:0 auto;letter-spacing:3px;font-family:'KaiTi','STKaiti',serif}
.inv-slot{flex:0 0 42px;width:42px;height:42px;background:#d5cfc0;border:2px solid #0a0a0c;border-radius:2px;
  display:flex;align-items:center;justify-content:center;font-size:19px;cursor:default;position:relative;
  box-shadow:2.5px 2.5px 0 rgba(0,0,0,.75)}
.inv-slot .inv-tip{display:none;position:absolute;bottom:50px;right:0;background:#ece7da;border:2px solid #0a0a0c;color:#14130f;
  padding:5px 10px;border-radius:1px;font-size:13px;white-space:nowrap;box-shadow:2px 2px 0 rgba(0,0,0,.7);font-weight:700;z-index:5}
.inv-slot.selected .inv-tip,.inv-slot:active .inv-tip{display:block}
.inv-slot.selected{border-color:#a01018;background:#f6e9e3;box-shadow:0 0 0 2px rgba(160,16,24,.35),2.5px 2.5px 0 rgba(0,0,0,.75)}
.inv-slot.combinable{border-color:#3a9;background:#e9f2ea;box-shadow:0 0 6px rgba(58,170,110,.45);animation:combPulse 1.2s ease-in-out infinite}
@keyframes combPulse{0%,100%{box-shadow:0 0 6px rgba(58,170,110,.45)}50%{box-shadow:0 0 13px rgba(58,170,110,.7)}}

/* ---- 底部 DOCK（机位 + 电源 + 档案 + 背包） ---- */
#cctv-selector{display:none;position:absolute;left:0;right:0;bottom:0;z-index:12;flex-direction:column;gap:6px;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  background:linear-gradient(to top,rgba(4,4,6,.97) 78%,rgba(4,4,6,.75) 92%,transparent)}
#cctv-selector.show{display:flex}
.dock-row{display:flex;gap:6px;align-items:stretch}
.dock-row.cams .cctv-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 2px 5px}
.dock-row.cams .cctv-btn b{font-size:15px;line-height:1.1;font-family:'Courier New',Courier,monospace}
.dock-row.cams .cctv-btn span{font-size:10px;letter-spacing:0;opacity:.85;white-space:nowrap}
.dock-row.tools{min-height:46px}
.dock-row.tools .cctv-btn{flex:0 0 78px;font-size:12px;padding:8px 4px;text-align:center}
.cctv-btn{background:#15151a;border:2px solid #000;color:#888;padding:8px 10px;border-radius:4px;
  font-weight:bold;font-size:12px;font-family:'Courier New',Courier,monospace;text-align:center;cursor:pointer;
  transition:all .1s;box-shadow:2px 2px 0 #000}
.cctv-btn:active{background:#2a2a35;color:#ddd}
.cctv-btn.active{background:#d5cfc0;color:#0a0a0c;border-color:#000;box-shadow:none;transform:translate(2px,2px)}
.cctv-btn.power{background:#3d0b0e;color:#c96;border-color:#000}
.cctv-btn.power.active{background:#134a2a;color:#7fe0a4}
.cctv-btn.file{background:#1a1712;color:#b3ac9c}

/* ---- 档案抽屉（全屏） ---- */
#rules-panel{position:absolute;inset:0;z-index:60;display:flex;flex-direction:column;
  background:#cfc9b9;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='90' height='90'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='2'/><feColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0'/></filter><rect width='90' height='90' filter='url(%23n)'/></svg>");
  padding:calc(max(18px, env(safe-area-inset-top)) + 10px) 16px calc(12px + env(safe-area-inset-bottom));
  transform:translateY(103%);transition:transform .28s cubic-bezier(.3,1,.4,1);pointer-events:none;
  box-shadow:0 -18px 60px rgba(0,0,0,.7)}
#rules-panel.show{transform:translateY(0);pointer-events:auto}
#rules-panel .rp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
#rules-panel .rlbl{font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:16px;color:#14130f;letter-spacing:4px;
  border-bottom:2px solid #14130f;padding-bottom:4px;flex:1}
#rules-panel #rc-rules .rlbl{border:none;padding:0;margin:6px 0 0;font-size:12px;color:#8a8578;letter-spacing:3px}
#rp-close{width:38px;height:38px;background:#d5cfc0;border:2px solid #0a0a0c;border-radius:2px;color:#14130f;
  font-size:16px;font-weight:900;cursor:pointer;box-shadow:2px 2px 0 rgba(0,0,0,.7)}
#rp-close:active{background:#a01018;color:#f4ece2}
#rules-list{padding-bottom:14px}

.rule-e{padding:9px 0;border-bottom:1px solid rgba(10,10,12,.18);font-size:16px;line-height:1.7}
.rule-e .rn{color:#a01018;font-weight:900;font-family:'KaiTi','STKaiti',serif}
.rule-e .rb{color:#26241d}
.rule-e .rsrc{font-size:12px;color:#8a8578;margin-top:3px}
.rule-e.bloody .rb{color:#8d0e16}

/* 档案内容排版 */
#rules-panel .rcont{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:4px 2px}
.rtabs{display:flex;border-bottom:2px solid #14130f;margin-bottom:8px}
.rtab{flex:1;padding:9px 2px;text-align:center;font-size:15px;color:#8a8578;cursor:pointer;border:none;background:none;
  font-family:'KaiTi','STKaiti',serif;font-weight:900;letter-spacing:1px}
.rtab.active{color:#a01018;border-bottom:3px solid #a01018;background:rgba(160,16,24,.06)}
.trust-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:14px}
.trust-row .tname{color:#26241d;min-width:64px;font-family:'KaiTi','STKaiti',serif;font-weight:900}
.trust-bar{flex:1;height:6px;background:rgba(10,10,12,.12);border-radius:1px;overflow:hidden}
.trust-fill{height:100%;border-radius:1px;transition:width .4s}
.trust-val{color:#8a8578;font-size:13px;min-width:24px;text-align:right;font-variant-numeric:tabular-nums}
.status-section{margin-bottom:14px}
.status-section .slbl{font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:15px;color:#26241d;letter-spacing:2px;margin-bottom:5px;border-left:3px solid #a01018;padding-left:7px}
.pitem{padding:7px 0;border-bottom:1px solid rgba(10,10,12,.15)}
.pitem .pt{color:#8a8578;font-size:12px}
.pitem .pf{color:#3f6d4e;font-size:13px;font-weight:700}
.pitem .pb{font-size:15px;margin-top:2px;color:#26241d}
.citem{padding:8px 0;border-bottom:1px solid rgba(10,10,12,.15);font-size:15px;color:#26241d}
.citem .cl{color:#a01018;font-size:12px;font-weight:900}
.jlog{padding:8px 0;border-bottom:1px solid rgba(10,10,12,.15);font-size:14px}
.jlog .jt{color:#8a8578;font-size:12px}
.jlog .jd{color:#26241d}

/* ---- VHS OVERLAY ---- */
#vhs-overlay{position:absolute;inset:0;z-index:8;pointer-events:none;padding:14px;
  font-family:'Courier New',Courier,monospace;color:rgba(255,255,255,.38);font-size:12px;
  text-shadow:1px 1px 2px rgba(0,0,0,.8);display:none}
#vhs-overlay.show{display:block}
.vhs-rec{position:absolute;top:calc(max(18px, env(safe-area-inset-top)) + 72px);right:16px;color:#ff3333;font-weight:bold;letter-spacing:2px;animation:vhs-blink 1s step-start infinite;font-size:12px}
@keyframes vhs-blink{50%{opacity:0}}
.vhs-tc{position:absolute;top:calc(max(18px, env(safe-area-inset-top)) + 92px);right:16px;letter-spacing:1px;font-size:12px}
.vhs-wm{position:absolute;bottom:calc(142px + env(safe-area-inset-bottom));left:16px;font-size:10px;letter-spacing:2px;color:rgba(207,201,187,.26)}

/* ---- 判定 / 组合反馈 ---- */
#interact-hint{display:none}
#roll-fb{position:fixed;top:42%;left:50%;transform:translate(-50%,-50%);z-index:25;pointer-events:none;font-size:44px;font-weight:900;opacity:0;font-family:'KaiTi','STKaiti',serif;filter:url(#roughink2)}
#roll-fb.show{opacity:1;animation:rollAnim .8s ease-out forwards}
#roll-fb.good{color:#2f7d52;text-shadow:2px 2px 0 rgba(0,0,0,.8)}
#roll-fb.bad{color:#a01018;text-shadow:2px 2px 0 rgba(0,0,0,.8)}
@keyframes rollAnim{0%{transform:translate(-50%,-50%) rotate(-8deg) scale(2.6);opacity:0}30%{opacity:1;transform:translate(-50%,-50%) rotate(-6deg) scale(1)}70%{opacity:1}100%{transform:translate(-50%,-50%) rotate(-6deg) scale(.9);opacity:0}}
#combo-fb{position:fixed;top:52%;left:50%;transform:translate(-50%,-50%);z-index:25;pointer-events:none;font-size:15px;color:#7fbf94;opacity:0;font-family:'KaiTi','STKaiti',serif;font-weight:900;letter-spacing:1px;text-shadow:0 2px 6px #000}
#combo-fb.show{opacity:1;animation:comboAnim 1.5s ease-out forwards}
@keyframes comboAnim{0%{transform:translate(-50%,-50%) translateY(10px);opacity:0}20%{opacity:1;transform:translate(-50%,-50%) translateY(0)}80%{opacity:1}100%{opacity:0}}

/* ---- 低理智文字特效 ---- */
@keyframes text-shake{0%,100%{transform:translate(0,0)}10%{transform:translate(-1px,-1px)}30%{transform:translate(1px,1px)}50%{transform:translate(-1px,1px)}70%{transform:translate(1px,-1px)}}
.shake-text{display:inline-block;animation:text-shake .15s infinite;color:#e55 !important}
@keyframes text-glitch{0%,100%{opacity:1;text-shadow:1px 0 #f0f,-1px 0 #0ff}50%{opacity:.85;text-shadow:-1px 0 #f0f,1px 0 #0ff}25%,75%{text-shadow:none}}
.glitch-text{display:inline-block;animation:text-glitch .25s infinite}
.typewriter-cursor::after{content:'█';animation:cursor-blink .8s step-start infinite;margin-left:2px;color:#555;font-size:12px}
@keyframes cursor-blink{50%{opacity:0}}

/* ---- ENDING CARD ---- */
#end-card{position:absolute;inset:0;z-index:200;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;opacity:0;pointer-events:none;transition:opacity .5s}
#end-card.show{opacity:1;pointer-events:auto}
#end-card canvas{border-radius:2px;cursor:pointer;border:2px solid #0a0a0c;max-width:86vw;max-height:72vh;height:auto;
  box-shadow:0 0 0 6px rgba(232,227,214,.04),0 24px 80px rgba(0,0,0,.9)}
#end-card .ec-hint{color:#9a958a;font-size:13px;font-family:'KaiTi','STKaiti',serif;letter-spacing:3px}

/* ================================================================
   TITLE · 伊藤润二漫画封面风（沿用）
   ================================================================ */
.t-defs{position:absolute;width:0;height:0;overflow:hidden}
#title-screen{position:absolute;inset:0;z-index:100;background:#08080a;display:flex;align-items:center;justify-content:center;overflow:hidden}
.t-grain{position:absolute;inset:-60px;pointer-events:none;opacity:.08;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>");
  animation:grainJit .9s steps(4) infinite}
@keyframes grainJit{0%{transform:translate(0,0)}25%{transform:translate(-14px,9px)}50%{transform:translate(10px,-12px)}75%{transform:translate(-8px,-7px)}100%{transform:translate(0,0)}}
.t-tone{position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(circle,rgba(20,20,26,.5) 1px,transparent 1.4px);
  background-size:5px 5px;
  -webkit-mask-image:radial-gradient(ellipse 62% 55% at 50% 44%,#000 20%,transparent 72%);
  mask-image:radial-gradient(ellipse 62% 55% at 50% 44%,#000 20%,transparent 72%)}
.t-vignette{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 45%,transparent 42%,rgba(0,0,0,.78) 100%)}
.t-splat{position:absolute;pointer-events:none;filter:url(#roughink2)}
.t-splat-a{width:340px;height:280px;left:5%;top:9%;transform:rotate(-14deg);
  background:
    radial-gradient(closest-side at 32% 38%,rgba(10,10,12,.85) 0 55%,transparent 58%),
    radial-gradient(closest-side at 58% 62%,rgba(10,10,12,.7) 0 40%,transparent 44%),
    radial-gradient(closest-side at 75% 30%,rgba(10,10,12,.6) 0 22%,transparent 26%),
    radial-gradient(closest-side at 22% 70%,rgba(10,10,12,.55) 0 18%,transparent 22%)}
.t-splat-b{width:300px;height:240px;right:4%;bottom:11%;transform:rotate(10deg);
  background:
    radial-gradient(closest-side at 60% 45%,rgba(122,10,17,.45) 0 40%,transparent 44%),
    radial-gradient(closest-side at 35% 65%,rgba(122,10,17,.32) 0 20%,transparent 24%),
    radial-gradient(closest-side at 70% 25%,rgba(10,10,12,.6) 0 26%,transparent 30%)}
.t-stage{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;padding:0 24px}
.t-head{display:flex;align-items:flex-start;gap:14px}
.t-jp{writing-mode:vertical-rl;font-family:'KaiTi','STKaiti',serif;font-size:18px;
  letter-spacing:.5em;color:#57534a;border-left:1px solid #2c2a26;padding-left:10px;
  margin-top:8px;animation:fadeIn 1.2s both .55s}
.t-title{font-family:'KaiTi','STKaiti','BiauKai',serif;font-weight:900;
  font-size:clamp(34px,11vw,58px);letter-spacing:.06em;line-height:1.05;white-space:nowrap;
  color:#ece7dc;margin:0;filter:url(#roughink);
  text-shadow:0 0 70px rgba(0,0,0,.95);
  animation:tIn .9s cubic-bezier(.2,1.4,.3,1) both .15s,tflick 9s infinite 3s}
@keyframes tIn{0%{opacity:0;transform:scale(1.7)}60%{opacity:1}100%{opacity:1;transform:scale(1)}}
@keyframes tflick{0%,93%,100%{opacity:1}94%{opacity:.55}95%{opacity:.9}96%{opacity:.4}97%{opacity:.85}}
.t-seal{align-self:flex-end;width:40px;height:40px;background:#a01018;color:#f4ece2;
  font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:22px;
  display:flex;align-items:center;justify-content:center;
  margin:12px 0 0 8px;box-shadow:inset 0 0 0 2px rgba(244,236,226,.35);
  filter:url(#roughink2);animation:stamp .4s cubic-bezier(.2,1.6,.4,1) both 1.1s}
@keyframes stamp{0%{opacity:0;transform:rotate(14deg) scale(2.4)}100%{opacity:1;transform:rotate(6deg) scale(1)}}
.t-sub{font-family:'Courier New',Courier,monospace;font-size:11px;letter-spacing:.5em;
  color:#6b675e;margin:12px 0 4px .4em;animation:fadeIn 1s both .8s}
.t-figs{width:min(560px,90vw);margin:2px 0 14px}
.t-figs svg{width:100%;height:auto;display:block}
.fig{fill:#101016;animation:figIn .8s both;animation-delay:var(--d)}
@keyframes figIn{from{opacity:0;transform:translateY(8px)}to{opacity:var(--o,1);transform:none}}
.t-ground{stroke:#20202a;stroke-width:2;opacity:.55;filter:url(#roughink2)}
.t-scratch{stroke:#17171f;stroke-width:1.5;opacity:.5;filter:url(#roughink2)}
.fig7{fill:#0b0b10;animation:f7 7s ease-in-out infinite 2.4s both}
@keyframes f7{0%{opacity:0}8%{opacity:.5}50%{opacity:.3}92%{opacity:.5}100%{opacity:0}}
.fig7-head{transform-box:fill-box;transform-origin:center;animation:tilt 9s ease-in-out infinite 3s}
@keyframes tilt{0%,100%{transform:rotate(0)}40%{transform:rotate(-9deg)}70%{transform:rotate(4deg)}}
.f7-eye{fill:#e8e4da;transform-box:fill-box;transform-origin:center;animation:blink 6.5s infinite 4s}
@keyframes blink{0%,96%,100%{transform:scaleY(1)}97%,99%{transform:scaleY(.05)}}
.t-note{font-family:'KaiTi','STKaiti',serif;font-size:14px;line-height:2;color:#17150f;
  background:#e8e3d6;text-align:center;padding:13px 26px;max-width:82vw;
  box-shadow:0 8px 24px rgba(0,0,0,.5);transform:rotate(-1.6deg);
  clip-path:polygon(0 6%,4% 0,26% 3%,52% 0,78% 4%,100% 1%,98% 32%,100% 66%,97% 100%,72% 96%,45% 100%,18% 96%,2% 100%,0 68%,2% 34%);
  animation:noteIn .7s both .9s}
.t-note b{color:#a01018}
@keyframes noteIn{from{opacity:0;transform:rotate(-1.6deg) translateY(10px) scale(.96)}to{opacity:1;transform:rotate(-1.6deg)}}
.t-go{position:relative;margin-top:26px;background:transparent;
  border:2px solid #dcd6c8;color:#ece7dc;cursor:pointer;
  font-family:'KaiTi','STKaiti',serif;font-weight:900;font-size:19px;
  letter-spacing:1.1em;text-indent:1.1em;padding:13px 34px 13px 45px;
  filter:url(#roughink2);
  transition:background .18s,color .18s,border-color .18s;
  animation:fadeIn .8s both 1.35s}
.t-go:active,.t-go:focus-visible{background:#a01018;border-color:#a01018;color:#fff;outline:none}
/* 继续乘车（有本地检查点时出现） */
.t-resume{margin-top:12px;font-size:14px;padding:10px 26px 10px 37px;letter-spacing:.8em;text-indent:.8em;
  border-color:#5a564c;color:#a39c8a;filter:url(#roughink2)}
.t-resume:active{background:#2a2a35;border-color:#8a8578;color:#e8e3d6}
/* 图鉴格子 */
.end-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.end-cell{border:1px dashed rgba(10,10,12,.35);padding:8px;font-size:13px;color:rgba(38,36,29,.38);
  font-family:'KaiTi','STKaiti',serif;letter-spacing:2px;text-align:center;background:rgba(10,10,12,.03)}
.end-cell.got{border:1.5px solid #14130f;color:#14130f;font-weight:900;background:rgba(160,16,24,.05)}
.t-side-l,.t-side-r{display:none}
.t-cr{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;
  font-family:'KaiTi','STKaiti',serif;font-size:12px;letter-spacing:.6em;text-indent:.6em;
  color:#56524a;animation:fadeIn 1.6s both 2s}
.t-cr-wm{display:block;margin-top:5px;font-size:10px;letter-spacing:.34em;text-indent:.34em;
  font-family:'Courier New',Courier,monospace;color:#3b3934}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ---- 标题页彩蛋 ---- */
/* 第七个乘客被点醒 */
#title-screen.egg7 .fig7{opacity:.9 !important;animation:none}
#title-screen.egg7 .f7-eye{fill:#ff2a2a;r:2.6;animation:none}
#title-screen.egg7 .fig7-head{animation:none;transform:rotate(-14deg)}
#title-screen.egg7 .t-title{animation:tflick .5s steps(2) 4}
/* 印章渗血 */
.t-seal{position:relative;cursor:pointer}
.t-seal.drip{animation:sealTilt .4s both}
.t-seal.drip::after{content:'';position:absolute;left:22%;bottom:-34px;width:3px;height:30px;
  background:linear-gradient(#a01018,rgba(160,16,24,.1));border-radius:0 0 3px 3px;
  animation:sealDrip 1.8s ease-in both}
.t-seal.drip::before{content:'';position:absolute;left:64%;bottom:-22px;width:2px;height:18px;
  background:linear-gradient(#a01018,rgba(160,16,24,.08));border-radius:0 0 2px 2px;
  animation:sealDrip 1.5s ease-in .25s both}
@keyframes sealTilt{0%{transform:rotate(6deg)}40%{transform:rotate(12deg) scale(1.06)}100%{transform:rotate(6deg)}}
@keyframes sealDrip{0%{height:0;opacity:0}25%{opacity:1}100%{height:30px;opacity:0}}
/* 长按上车警告 */
.t-go.warn{background:#a01018 !important;border-color:#a01018 !important;color:#fff !important;
  animation:goShake .25s 3}
@keyframes goShake{0%,100%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-1px)}}
/* 彩蛋便签（撕纸条） */
#egg-note{position:relative;margin-top:14px;min-height:0;font-family:'KaiTi','STKaiti',serif;font-size:14px;
  color:#a01018;background:#d9d3c3;padding:7px 18px;letter-spacing:3px;font-weight:900;
  clip-path:polygon(0 12%,4% 0,28% 5%,52% 0,77% 4%,100% 2%,98% 40%,100% 72%,97% 100%,70% 95%,44% 100%,16% 96%,0 100%);
  box-shadow:0 6px 18px rgba(0,0,0,.5);transform:rotate(-1.4deg) translateY(6px);
  opacity:0;pointer-events:none;transition:opacity .3s,transform .3s}
#egg-note.show{opacity:1;transform:rotate(-1.4deg) translateY(0)}
@media (max-width:370px){
  .t-jp{display:none}
  .t-title{font-size:10.5vw}
}
@media (prefers-reduced-motion:reduce){
  #title-screen *{animation:none !important;transition:none !important}
  .fig{opacity:var(--o,1)}
  .fig7{opacity:.45}
}
