:root{
    --ink:#07080b;
    --ink-2:#0d0f14;
    --bone:#f4efe6;
    --muted:#9b938a;
    --red:#d8394a;
    --red-deep:#8f1d2c;
    --gold:#d8b06a;
    --teal:#6fc9be;
    --violet:#b49cf5;
    --serif:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun",serif;
    --sans:"PingFang SC","Microsoft YaHei","Noto Sans SC","Hiragino Sans GB",sans-serif;
  }
  *{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
  html,body{height:100%;margin:0;}
  body{
    background:#04050a;
    color:var(--bone);
    font-family:var(--sans);
    display:grid;
    place-items:center;
    overflow:hidden;
  }
  button{font-family:inherit;color:inherit;cursor:pointer;}

  /* ---------- 无 JS / 抓取回退简介（仅在 noscript 中渲染） ---------- */
  .noscript-page{
    position:fixed;
    inset:0;
    z-index:999;
    overflow-y:auto;
    padding:56px 22px 72px;
    background:
      radial-gradient(110% 60% at 75% 8%,rgba(43,110,116,.35),transparent 60%),
      radial-gradient(90% 55% at 15% 92%,rgba(143,29,44,.4),transparent 65%),
      #07080b;
    color:var(--bone);
    font-family:var(--sans);
  }
  .ns-inner{max-width:600px;margin:0 auto;}
  .ns-kicker{font-size:11px;letter-spacing:.28em;color:var(--gold);margin:0 0 14px;}
  .noscript-page h1{
    margin:0 0 18px;
    font-family:var(--serif);
    font-size:clamp(30px,8vw,48px);
    line-height:1.2;
    letter-spacing:.04em;
  }
  .noscript-page h1 em{font-style:normal;color:var(--red);}
  .ns-lead{margin:0 0 18px;font-size:16px;line-height:1.9;color:rgba(244,239,230,.82);}
  .noscript-page p{margin:0 0 12px;font-size:14px;line-height:2;color:rgba(232,226,216,.72);}
  .noscript-page h2{
    margin:26px 0 8px;
    font-family:var(--serif);
    font-size:15px;
    letter-spacing:.18em;
    color:var(--gold);
    font-weight:600;
  }
  .ns-foot{margin-top:28px;padding-top:16px;border-top:1px solid rgba(244,239,230,.12);font-size:12px;color:rgba(244,239,230,.4);}
  .ambient{
    position:fixed;
    inset:-12%;
    background-position:center;
    background-size:cover;
    filter:blur(64px) saturate(.65) brightness(.55);
    opacity:.5;
    transform:scale(1.08);
    transition:background-image 1.2s ease;
    z-index:0;
  }
  .stage{
    position:relative;
    height:min(94svh,940px);
    width:auto;
    aspect-ratio:9 / 16;
    max-width:100vw;
    overflow:hidden;
    border-radius:22px;
    background:#080a0f;
    box-shadow:0 40px 120px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.08);
    isolation:isolate;
  }
  @media (max-width:640px){
    .stage{width:100vw;height:100svh;aspect-ratio:auto;max-width:none;border-radius:0;box-shadow:none;}
  }

  /* ---------- 背景 ---------- */
  .bg-base{position:absolute;inset:0;z-index:0;transition:background 1s ease;}
  .stage[data-bg="cover"] .bg-base{
    background:
      radial-gradient(120% 70% at 70% 15%,rgba(43,110,116,.5),transparent 60%),
      radial-gradient(90% 60% at 20% 90%,rgba(143,29,44,.55),transparent 65%),
      linear-gradient(160deg,#0a1218,#120a0e 55%,#07080b);
  }
  .stage[data-bg="mirror"] .bg-base{
    background:
      radial-gradient(80% 55% at 50% 22%,rgba(160,124,80,.35),transparent 65%),
      linear-gradient(165deg,#1a1511,#0c0b0d 70%);
  }
  .stage[data-bg="wedding"] .bg-base{
    background:
      radial-gradient(80% 60% at 60% 20%,rgba(216,176,106,.28),transparent 65%),
      linear-gradient(165deg,#1c1914,#0b0b0e 72%);
  }
  .stage[data-bg="garage"] .bg-base{
    background:
      radial-gradient(90% 60% at 65% 30%,rgba(52,120,124,.35),transparent 60%),
      radial-gradient(60% 40% at 20% 80%,rgba(196,140,64,.22),transparent 70%),
      linear-gradient(170deg,#081012,#0a0b0e 75%);
  }
  .stage[data-bg="warehouse"] .bg-base{
    background:
      radial-gradient(60% 55% at 50% 20%,rgba(150,44,52,.35),transparent 62%),
      linear-gradient(170deg,#10100f,#08090a 70%);
  }
  .stage[data-bg="banquet"] .bg-base{
    background:
      radial-gradient(80% 55% at 50% 10%,rgba(216,176,106,.32),transparent 60%),
      radial-gradient(90% 70% at 80% 85%,rgba(143,29,44,.35),transparent 65%),
      linear-gradient(165deg,#17110f,#09090c 72%);
  }
  .stage[data-bg="dawn"] .bg-base{
    background:
      radial-gradient(80% 55% at 55% 25%,rgba(232,164,96,.42),transparent 60%),
      linear-gradient(170deg,#13242c,#0a0e13 70%);
  }
  .stage[data-bg="script"] .bg-base{
    background:
      radial-gradient(70% 55% at 50% 25%,rgba(216,176,106,.3),transparent 60%),
      linear-gradient(165deg,#161310,#07080b 72%);
  }
  .bg-layer{
    position:absolute;
    inset:0;
    z-index:1;
    background-position:center;
    background-size:cover;
    opacity:0;
    transform:scale(1.02);
    transition:opacity 1.1s ease, transform 9s linear;
  }
  .bg-layer.show{opacity:1;transform:scale(1.07);}
  .veil{
    position:absolute;
    inset:0;
    z-index:2;
    background:
      linear-gradient(to bottom,rgba(5,6,10,.72) 0%,rgba(5,6,10,.18) 30%,rgba(5,6,10,.42) 58%,rgba(5,6,10,.96) 100%);
  }
  .grain{
    position:absolute;
    inset:-60%;
    z-index:3;
    pointer-events:none;
    opacity:.07;
    background-image: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='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
    animation:grain 7s steps(8) infinite;
  }
  @keyframes grain{
    0%{transform:translate(0,0)}
    20%{transform:translate(-4%,3%)}
    40%{transform:translate(3%,-4%)}
    60%{transform:translate(-3%,-2%)}
    80%{transform:translate(4%,2%)}
    100%{transform:translate(0,0)}
  }
  .stage.glitch{animation:glitch .55s steps(2) 2;}
  @keyframes glitch{
    0%{filter:none;transform:translate(0)}
    20%{filter:hue-rotate(24deg) saturate(1.6);transform:translate(2px,-1px)}
    40%{filter:invert(.08);transform:translate(-2px,1px)}
    60%{filter:hue-rotate(-18deg);transform:translate(1px,1px)}
    100%{filter:none;transform:translate(0)}
  }

  /* ---------- HUD ---------- */
  .hud{
    position:absolute;
    top:0;left:0;right:0;
    z-index:20;
    padding:calc(16px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) 0 calc(18px + env(safe-area-inset-left));
    transition:opacity .45s ease,transform .45s ease;
  }
  .stage[data-mode="cover"] .hud,
  .stage[data-mode="ending"] .hud{opacity:0;transform:translateY(-8px);pointer-events:none;}
  .hud-top{display:flex;align-items:center;justify-content:space-between;}
  .chapter-indicator{display:flex;align-items:baseline;gap:6px;font-size:10px;letter-spacing:.16em;color:rgba(244,239,230,.55);}
  .ch-num{font-family:var(--serif);font-size:13px;letter-spacing:.12em;color:var(--gold);}
  .icon-btn{
    border:1px solid rgba(244,239,230,.18);
    background:rgba(8,9,13,.4);
    color:rgba(244,239,230,.72);
    font-size:10px;
    letter-spacing:.14em;
    padding:5px 10px;
    border-radius:999px;
    backdrop-filter:blur(8px);
    transition:.25s;
  }
  .icon-btn:hover{border-color:rgba(216,176,106,.65);color:var(--gold);}
  .hud-actions{display:flex;align-items:center;gap:6px;}
  .icon-btn.muted{color:rgba(244,239,230,.36);border-color:rgba(244,239,230,.12);}
  .icon-btn.sound-btn{display:flex;align-items:center;justify-content:center;padding:5px 8px;}
  .sound-icon{display:block;width:14px;height:14px;overflow:visible;}
  .sound-icon .note{fill:currentColor;}
  .sound-icon .stem{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
  .sound-icon .slash{
    fill:none;
    stroke:currentColor;
    stroke-width:1.8;
    stroke-linecap:round;
    opacity:0;
    transition:opacity .2s;
  }
  .icon-btn.muted .sound-icon .slash{opacity:1;}
  .progress{
    height:1px;
    margin:12px 0 10px;
    background:rgba(244,239,230,.14);
    overflow:hidden;
  }
  .progress i{
    display:block;
    height:100%;
    width:0%;
    background:linear-gradient(90deg,var(--red-deep),var(--red),var(--gold));
    box-shadow:0 0 12px rgba(216,176,106,.6);
    transition:width .8s cubic-bezier(.22,.8,.24,1);
  }
  .stats{display:flex;gap:5px;flex-wrap:wrap;}
  .stat{
    display:flex;align-items:center;gap:4px;
    padding:3px 7px;
    border:1px solid rgba(244,239,230,.1);
    border-radius:999px;
    background:rgba(8,9,13,.42);
    backdrop-filter:blur(8px);
    font-size:9px;
    color:rgba(244,239,230,.5);
    transition:.3s;
  }
  .stat .dot{width:4px;height:4px;border-radius:50%;background:currentColor;box-shadow:0 0 7px currentColor;}
  .stat b{font-family:var(--serif);font-size:12px;font-weight:600;color:var(--bone);min-width:9px;text-align:center;}
  .stat[data-stat="scheme"]{color:#e05666;}
  .stat[data-stat="heart"]{color:#e9a0a8;}
  .stat[data-stat="evidence"]{color:#e6d3a3;}
  .stat[data-stat="trust"]{color:var(--teal);}
  .stat[data-stat="meta"]{color:var(--violet);}
  .stat.hidden{display:none;}
  .stat.bump{animation:bump .45s ease;}
  @keyframes bump{0%{transform:scale(1)}35%{transform:scale(1.14);background:rgba(216,176,106,.18)}100%{transform:scale(1)}}

  /* ---------- 场景 ---------- */
  .scene{
    position:absolute;
    inset:0;
    z-index:10;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior:contain;
    scrollbar-width:none;
    background:linear-gradient(to top,rgba(4,5,9,.92) 0%,rgba(4,5,9,.55) 42%,transparent 78%);
    transition:opacity .45s ease;
  }
  .scene::-webkit-scrollbar{width:0;height:0;}
  .scene-inner{
    min-height:100%;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:96px 20px calc(24px + env(safe-area-inset-bottom));
  }
  .stage[data-mode="cover"] .scene,
  .stage[data-mode="ending"] .scene{opacity:0;pointer-events:none;}
  .chapter-card{
    position:absolute;
    inset:0;
    z-index:15;
    display:grid;
    place-content:center;
    text-align:center;
    background:rgba(4,5,9,.86);
    backdrop-filter:blur(7px);
    opacity:0;
    pointer-events:none;
    transition:opacity .5s ease;
  }
  .chapter-card.show{opacity:1;}
  .cc-kicker{font-size:9px;letter-spacing:.5em;color:var(--gold);opacity:.75;margin-bottom:10px;}
  .cc-num{font-family:var(--serif);font-size:64px;line-height:1;color:rgba(244,239,230,.14);letter-spacing:.04em;}
  .cc-title{font-family:var(--serif);font-size:22px;letter-spacing:.32em;color:var(--bone);margin-top:2px;}
  .chapter-card.show .cc-num{animation:ccIn .9s cubic-bezier(.2,.8,.2,1) both;}
  .chapter-card.show .cc-title{animation:ccIn .9s .12s cubic-bezier(.2,.8,.2,1) both;}
  @keyframes ccIn{from{opacity:0;transform:translateY(12px);letter-spacing:.6em}to{opacity:1;transform:none}}

  .dialogue-wrap{position:relative;min-height:110px;}
  .speaker{
    font-family:var(--serif);
    font-size:14px;
    letter-spacing:.2em;
    color:var(--gold);
    margin-bottom:9px;
    opacity:0;
    transform:translateY(4px);
    transition:.3s ease;
  }
  .speaker.show{opacity:1;transform:none;}
  .speaker.m{color:#cfb9a4;font-style:italic;letter-spacing:.12em;}
  .speaker.msg{color:var(--teal);}
  .text{
    font-size:17px;
    line-height:1.9;
    color:var(--bone);
    text-shadow:0 2px 18px rgba(0,0,0,.7);
    min-height:104px;
    white-space:pre-wrap;
    word-break:break-word;
  }
  .text.n{color:rgba(232,226,216,.8);font-size:16px;line-height:1.95;}
  .text.m{color:#d7c3ae;font-style:italic;}
  .text.msg{
    background:rgba(111,201,190,.08);
    border-left:2px solid rgba(111,201,190,.7);
    padding:10px 13px;
    border-radius:0 10px 10px 0;
    font-size:15px;
    min-height:0;
    margin-bottom:10px;
  }
  .continue-hint{
    margin-top:8px;
    text-align:right;
    font-size:9px;
    letter-spacing:.2em;
    color:rgba(244,239,230,.4);
    opacity:0;
    transition:.3s;
  }
  .continue-hint.show{opacity:1;animation:blink 2s ease-in-out infinite;}
  .scene.choices-open .text{min-height:0;}
  .scene.choices-open .continue-hint{display:none;}
  @keyframes blink{0%,100%{opacity:.35}50%{opacity:.85}}

  .choices{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
  .choice{
    position:relative;
    display:flex;
    gap:11px;
    align-items:flex-start;
    width:100%;
    padding:13px 14px;
    border:1px solid rgba(244,239,230,.16);
    border-radius:12px;
    background:rgba(8,9,13,.6);
    backdrop-filter:blur(12px);
    color:var(--bone);
    font-size:14px;
    line-height:1.55;
    text-align:left;
    transition:border-color .25s,background .25s,transform .25s,opacity .25s;
    animation:choiceIn .4s cubic-bezier(.2,.8,.2,1) both;
  }
  .choice:nth-child(2){animation-delay:.05s}
  .choice:nth-child(3){animation-delay:.1s}
  .choice:nth-child(4){animation-delay:.15s}
  .choice:nth-child(5){animation-delay:.2s}
  @keyframes choiceIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .choice:hover{border-color:rgba(216,176,106,.6);background:rgba(216,176,106,.09);transform:translateX(3px);}
  .choice-index{font-family:var(--serif);font-size:11px;color:var(--gold);opacity:.8;padding-top:2px;letter-spacing:.08em;}
  .choice-main{flex:1;min-width:0;}
  .choice-text{display:block;}
  .choice-note{display:block;margin-top:4px;font-size:10px;letter-spacing:.04em;color:rgba(244,239,230,.45);}
  .choice-note.warn{color:#e08894;}
  .choice.locked{opacity:.42;cursor:not-allowed;border-style:dashed;}
  .choice.locked:hover{transform:none;border-color:rgba(244,239,230,.16);background:rgba(8,9,13,.6);}
  .choice.meta-choice{border-color:rgba(180,156,245,.35);}
  .choice.meta-choice .choice-index{color:var(--violet);}
  .choice.meta-choice:hover{border-color:rgba(180,156,245,.75);background:rgba(180,156,245,.09);}

  /* ---------- 封面 ---------- */
  .cover{
    position:absolute;
    inset:0;
    z-index:30;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:calc(34px + env(safe-area-inset-top)) calc(26px + env(safe-area-inset-right)) calc(30px + env(safe-area-inset-bottom)) calc(26px + env(safe-area-inset-left));
    background:
      linear-gradient(to top,rgba(4,5,9,.97) 0%,rgba(4,5,9,.82) 32%,rgba(4,5,9,.18) 68%,rgba(4,5,9,.42) 100%);
    transition:opacity .6s ease,transform .6s ease;
  }
  .stage[data-mode="play"] .cover,
  .stage[data-mode="ending"] .cover{opacity:0;transform:scale(1.02);pointer-events:none;}
  .cover-side{
    position:absolute;
    top:80px;
    right:20px;
    writing-mode:vertical-rl;
    font-family:var(--serif);
    font-size:10px;
    letter-spacing:.45em;
    color:rgba(216,176,106,.55);
  }
  .cover-topline{
    position:absolute;
    top:calc(26px + env(safe-area-inset-top));
    left:calc(26px + env(safe-area-inset-left));
    font-size:9px;
    letter-spacing:.28em;
    color:rgba(244,239,230,.5);
  }
  .cover-sound{
    position:absolute;
    top:calc(18px + env(safe-area-inset-top));
    right:calc(22px + env(safe-area-inset-right));
    z-index:2;
  }
  .cover-eyebrow{
    display:flex;align-items:center;gap:10px;
    font-size:9px;
    letter-spacing:.32em;
    color:var(--gold);
    margin-bottom:14px;
  }
  .cover-eyebrow::before{content:"";width:28px;height:1px;background:var(--red);box-shadow:0 0 8px var(--red);}
  .cover-title{margin:0 0 16px;font-family:var(--serif);font-weight:600;letter-spacing:.02em;}
  .cover-title .t-small{
    display:block;
    font-size:clamp(24px,5.2vh,34px);
    color:rgba(244,239,230,.72);
    letter-spacing:.18em;
    margin-bottom:6px;
  }
  .cover-title .t-big{
    display:block;
    font-size:clamp(40px,8.4vh,58px);
    line-height:1.08;
    color:var(--bone);
    text-shadow:0 0 34px rgba(216,57,74,.22);
  }
  .cover-title .t-big em{font-style:normal;color:var(--red);position:relative;}
  .cover-title .t-big em::after{
    content:"";
    position:absolute;
    left:0;right:0;bottom:-5px;
    height:2px;
    background:linear-gradient(90deg,var(--red),rgba(216,57,74,0));
  }
  .cover-tagline{
    margin:0 0 20px;
    font-size:13px;
    line-height:2;
    color:rgba(244,239,230,.66);
    letter-spacing:.05em;
  }
  .cover-meta{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:24px;}
  .cover-meta span{
    padding:4px 9px;
    border:1px solid rgba(244,239,230,.14);
    border-radius:999px;
    font-size:9px;
    letter-spacing:.12em;
    color:rgba(244,239,230,.55);
    background:rgba(8,9,13,.35);
  }
  .primary-btn{
    position:relative;
    display:flex;align-items:center;justify-content:space-between;
    width:100%;
    padding:15px 18px;
    border:1px solid rgba(216,176,106,.55);
    border-radius:2px;
    background:linear-gradient(90deg,rgba(143,29,44,.9),rgba(216,57,74,.72));
    color:#fff7ec;
    font-size:14px;
    letter-spacing:.22em;
    overflow:hidden;
    transition:.3s;
    box-shadow:0 10px 40px rgba(143,29,44,.35);
  }
  .primary-btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);transform:translateX(-120%);animation:sheen 3.6s ease-in-out infinite;}
  @keyframes sheen{0%,55%{transform:translateX(-120%)}85%,100%{transform:translateX(120%)}}
  .primary-btn:hover{transform:translateY(-2px);box-shadow:0 16px 50px rgba(143,29,44,.5);}
  .primary-btn .arrow{font-size:18px;letter-spacing:0;}
  .cover-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:16px;gap:10px;}
  .cover-endings{font-size:10px;letter-spacing:.08em;color:rgba(244,239,230,.42);}
  .cover-endings b{color:var(--gold);font-family:var(--serif);font-weight:600;}
  .disclaimer{margin:14px 0 0;font-size:9px;line-height:1.7;color:rgba(244,239,230,.28);letter-spacing:.03em;}

  /* ---------- 结局 ---------- */
  .ending{
    position:absolute;
    inset:0;
    z-index:40;
    overflow-y:auto;
    padding:calc(52px + env(safe-area-inset-top)) 26px calc(30px + env(safe-area-inset-bottom));
    background:linear-gradient(to bottom,rgba(4,5,9,.72) 0%,rgba(4,5,9,.88) 38%,rgba(4,5,9,.97) 100%);
    opacity:0;
    pointer-events:none;
    transform:translateY(10px);
    transition:opacity .7s ease,transform .7s ease;
    -webkit-overflow-scrolling:touch;
  }
  .stage[data-mode="ending"] .ending{opacity:1;pointer-events:auto;transform:none;}
  .ending-sound{
    position:absolute;
    top:calc(18px + env(safe-area-inset-top));
    right:calc(22px + env(safe-area-inset-right));
    z-index:41;
    opacity:0;
    pointer-events:none;
    transition:opacity .4s ease;
  }
  .stage[data-mode="ending"] .ending-sound{opacity:1;pointer-events:auto;}
  .ending-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}
  .ending-kicker{font-size:9px;letter-spacing:.34em;color:var(--gold);margin-bottom:6px;}
  .ending-rank{
    font-family:var(--serif);
    font-size:54px;
    line-height:.9;
    color:var(--gold);
    text-shadow:0 0 30px rgba(216,176,106,.35);
  }
  .ending-rank[data-rank="A"]{color:var(--teal);text-shadow:0 0 30px rgba(111,201,190,.3);}
  .ending-rank[data-rank="B"]{color:#d98c93;text-shadow:none;}
  .ending-rank[data-rank="C"]{color:rgba(244,239,230,.4);text-shadow:none;}
  .ending-title{
    margin:0 0 4px;
    font-family:var(--serif);
    font-size:clamp(32px,6.4vh,42px);
    letter-spacing:.06em;
    line-height:1.2;
  }
  .ending-sub{font-size:10px;letter-spacing:.22em;color:var(--muted);margin-bottom:22px;}
  .ending-body p{
    margin:0 0 13px;
    font-size:14px;
    line-height:2.05;
    color:rgba(232,226,216,.78);
    animation:fadeUp .7s both;
  }
  @keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
  .ending-quote{
    margin:24px 0 22px;
    padding:2px 0 2px 16px;
    border-left:2px solid var(--red);
    font-family:var(--serif);
    font-size:15px;
    line-height:1.9;
    color:rgba(244,239,230,.92);
  }
  .ending-stats{
    display:flex;gap:6px;flex-wrap:wrap;
    padding:13px 0;
    border-top:1px solid rgba(244,239,230,.1);
    border-bottom:1px solid rgba(244,239,230,.1);
    margin-bottom:20px;
  }
  .ending-stats span{display:inline-flex;align-items:baseline;gap:4px;font-size:10px;color:rgba(244,239,230,.45);letter-spacing:.06em;margin-right:6px;}
  .ending-stats b{font-family:var(--serif);font-size:13px;color:var(--bone);}
  .ending-actions{display:flex;gap:8px;}
  .ending-actions + .ending-actions{margin-top:8px;}
  .ending-actions button{
    flex:1;
    padding:12px 8px;
    border-radius:2px;
    border:1px solid rgba(244,239,230,.2);
    background:rgba(244,239,230,.04);
    font-size:11px;
    letter-spacing:.14em;
    color:rgba(244,239,230,.78);
    transition:.25s;
  }
  .ending-actions button:hover{border-color:var(--gold);color:var(--gold);background:rgba(216,176,106,.08);}
  .ending-actions button.primary{border-color:rgba(216,57,74,.6);background:rgba(143,29,44,.45);color:#fff;}
  .ending-actions button.primary:hover{background:rgba(143,29,44,.7);border-color:var(--red);}
  .ending-actions button.share-cta{
    padding:14px 8px;
    font-family:var(--serif);
    font-size:13px;
    letter-spacing:.26em;
    color:#fff7ec;
    border-color:rgba(216,176,106,.5);
    background:linear-gradient(90deg,rgba(143,29,44,.75),rgba(216,57,74,.55));
    box-shadow:0 8px 26px rgba(143,29,44,.28);
  }
  .ending-actions button.share-cta:hover{
    border-color:var(--gold);
    background:linear-gradient(90deg,rgba(143,29,44,.95),rgba(216,57,74,.75));
    color:#fff;
  }
  .ending-count{margin-top:14px;text-align:center;font-size:9px;letter-spacing:.14em;color:rgba(244,239,230,.35);}
  .ending-count b{color:var(--gold);font-family:var(--serif);}

  /* ---------- 结局长图 ---------- */
  .modal.share-modal{align-items:center;background:rgba(3,4,7,.86);}
  .share-card{
    max-height:90%;
    padding:18px 16px calc(16px + env(safe-area-inset-bottom));
  }
  .share-card .modal-sub{margin-bottom:12px;}
  .share-preview{
    position:relative;
    max-height:52vh;
    overflow-y:auto;
    border-radius:10px;
    border:1px solid rgba(244,239,230,.12);
    background:#05060a;
    scrollbar-width:thin;
    -webkit-overflow-scrolling:touch;
  }
  .share-preview img{display:block;width:100%;height:auto;}
  .share-loading{
    display:flex;align-items:center;justify-content:center;
    min-height:220px;
    font-size:10px;letter-spacing:.28em;
    color:rgba(244,239,230,.45);
  }
  .share-loading::after{
    content:"";
    width:14px;height:14px;
    margin-left:10px;
    border:1px solid rgba(216,176,106,.3);
    border-top-color:var(--gold);
    border-radius:50%;
    animation:spin .8s linear infinite;
  }
  @keyframes spin{to{transform:rotate(360deg)}}
  .share-actions{display:flex;gap:8px;margin-top:12px;}
  .share-actions a,
  .share-actions button{
    flex:1;
    display:flex;align-items:center;justify-content:center;
    padding:12px 6px;
    border-radius:2px;
    border:1px solid rgba(244,239,230,.2);
    background:rgba(244,239,230,.04);
    font-size:11px;letter-spacing:.16em;
    color:rgba(244,239,230,.8);
    text-decoration:none;
    transition:.25s;
  }
  .share-actions a:hover,
  .share-actions button:hover{border-color:var(--gold);color:var(--gold);background:rgba(216,176,106,.08);}
  .share-actions a.primary{
    border-color:rgba(216,57,74,.65);
    background:rgba(143,29,44,.5);
    color:#fff;
  }
  .share-actions a.primary:hover{background:rgba(143,29,44,.75);border-color:var(--red);}
  .share-actions a.disabled{opacity:.4;pointer-events:none;}
  .share-tip{margin:10px 0 0;text-align:center;font-size:9px;line-height:1.7;letter-spacing:.06em;color:rgba(244,239,230,.35);}

  /* ---------- 图鉴 ---------- */
  .modal{
    position:absolute;
    inset:0;
    z-index:60;
    display:flex;
    align-items:flex-end;
    padding:18px;
    background:rgba(3,4,7,.72);
    backdrop-filter:blur(12px);
    opacity:0;
    pointer-events:none;
    transition:opacity .35s ease;
  }
  .modal.open{opacity:1;pointer-events:auto;}
  .modal-card{
    width:100%;
    max-height:82%;
    overflow-y:auto;
    padding:20px 18px calc(18px + env(safe-area-inset-bottom));
    border:1px solid rgba(244,239,230,.14);
    border-radius:16px;
    background:linear-gradient(160deg,rgba(20,20,26,.98),rgba(9,10,14,.98));
    transform:translateY(16px);
    transition:transform .35s cubic-bezier(.2,.8,.2,1);
  }
  .modal.open .modal-card{transform:none;}
  .modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;}
  .modal-head h3{margin:0;font-family:var(--serif);font-size:18px;letter-spacing:.14em;font-weight:600;}
  .modal-close{
    width:28px;height:28px;border-radius:50%;
    border:1px solid rgba(244,239,230,.18);
    background:transparent;color:rgba(244,239,230,.6);
    font-size:16px;line-height:1;
  }
  .modal-sub{font-size:9px;letter-spacing:.16em;color:var(--muted);margin:0 0 16px;}
  .gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .gallery-item{
    position:relative;
    padding:12px 11px;
    border:1px solid rgba(244,239,230,.1);
    border-radius:10px;
    background:rgba(244,239,230,.03);
    min-height:94px;
  }
  .gallery-item.unlocked{border-color:rgba(216,176,106,.32);background:rgba(216,176,106,.06);}
  .gi-rank{font-family:var(--serif);font-size:11px;color:var(--gold);letter-spacing:.1em;}
  .gi-title{font-family:var(--serif);font-size:15px;letter-spacing:.06em;margin:6px 0 4px;color:var(--bone);}
  .gi-sub{font-size:9px;line-height:1.6;color:rgba(244,239,230,.42);letter-spacing:.03em;}
  .gallery-item.locked .gi-title{color:rgba(244,239,230,.3);}
  .gallery-item.locked .gi-rank{color:rgba(244,239,230,.24);}
  .gi-lock{position:absolute;top:10px;right:10px;font-size:9px;color:rgba(244,239,230,.25);letter-spacing:.08em;}
  .gallery-note{margin:16px 0 0;font-size:9px;line-height:1.8;color:rgba(244,239,230,.3);letter-spacing:.04em;text-align:center;}

  /* ---------- Toast ---------- */
  .toasts{
    position:absolute;
    top:104px;
    right:16px;
    z-index:70;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    gap:6px;
    pointer-events:none;
  }
  .toast{
    padding:5px 10px;
    border:1px solid rgba(244,239,230,.16);
    border-radius:999px;
    background:rgba(8,9,13,.82);
    backdrop-filter:blur(8px);
    font-size:10px;
    letter-spacing:.08em;
    color:rgba(244,239,230,.7);
    animation:toastIn 1.8s ease both;
  }
  .toast b{font-family:var(--serif);font-size:13px;margin-right:2px;}
  .toast.scheme b{color:#e05666;}
  .toast.heart b{color:#e9a0a8;}
  .toast.evidence b{color:#e6d3a3;}
  .toast.trust b{color:var(--teal);}
  .toast.meta b{color:var(--violet);}
  @keyframes toastIn{
    0%{opacity:0;transform:translateY(8px)}
    15%{opacity:1;transform:none}
    75%{opacity:1}
    100%{opacity:0;transform:translateY(-12px)}
  }

  @media (max-height:700px){
    .text{font-size:15px;line-height:1.78;min-height:82px;}
    .text.n{font-size:14.5px;}
    .dialogue-wrap{min-height:92px;}
    .choice{padding:10px 12px;font-size:13px;}
    .cover-tagline{font-size:12px;line-height:1.8;margin-bottom:16px;}
    .cover-meta{margin-bottom:18px;}
    .ending{padding-top:38px;}
  }
  @media (max-width:380px){
    .stats{gap:4px;}
    .stat{padding:3px 6px;font-size:8px;}
    .stat b{font-size:11px;}
    .choice{font-size:13px;padding:11px 12px;}
    .scene-inner{padding-left:16px;padding-right:16px;}
  }
  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
    .grain{display:none;}
  }

  /* =========================================================
     P1：平台化新增样式
     ========================================================= */
  .hud-left{display:flex;align-items:center;gap:8px;min-width:0;}
  .back-btn{
    display:flex;align-items:center;justify-content:center;
    width:24px;height:24px;padding:0;
    text-decoration:none;
    font-size:13px;line-height:1;
  }
  .cover-actions{display:flex;gap:8px;align-items:stretch;}
  .cover-actions .primary-btn{flex:1;width:auto;}
  .ghost-btn{
    flex:0 0 auto;
    padding:0 14px;
    border:1px solid rgba(244,239,230,.18);
    border-radius:2px;
    background:rgba(8,9,13,.42);
    color:rgba(244,239,230,.62);
    font-size:11px;
    letter-spacing:.12em;
    transition:.25s;
  }
  .ghost-btn:hover{border-color:rgba(216,176,106,.55);color:var(--gold);background:rgba(216,176,106,.06);}
  .ghost-btn[hidden]{display:none;}
  .resume-note{
    margin:9px 0 0;
    font-size:10px;
    letter-spacing:.08em;
    color:rgba(216,176,106,.62);
  }
  .resume-note[hidden]{display:none;}
  .ending-back{
    display:block;
    margin-top:14px;
    text-align:center;
    font-size:10px;
    letter-spacing:.14em;
    color:rgba(244,239,230,.42);
    text-decoration:none;
  }
  .ending-back:hover{color:var(--gold);}
  .gallery-note a{color:rgba(216,176,106,.72);text-decoration:none;letter-spacing:.1em;}
  .gallery-note a:hover{color:var(--gold);}

  .player-loading{
    position:fixed;
    inset:0;
    z-index:900;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    background:#04050a;
    color:rgba(244,239,230,.55);
    font-size:10px;
    letter-spacing:.28em;
  }
  .player-loading[hidden]{display:none;}
  .player-loading-dot{
    width:12px;height:12px;
    border:1px solid rgba(216,176,106,.3);
    border-top-color:var(--gold);
    border-radius:50%;
    animation:spin .8s linear infinite;
  }
  .player-error{
    position:fixed;
    inset:0;
    z-index:1000;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    overflow-y:auto;
    background:
      radial-gradient(90% 60% at 20% 90%,rgba(143,29,44,.35),transparent 65%),
      radial-gradient(100% 60% at 80% 10%,rgba(43,110,116,.28),transparent 60%),
      #07080b;
  }
  .player-error[hidden]{display:none;}
  .player-error-card{
    width:100%;
    max-width:520px;
    padding:30px 26px;
    border:1px solid rgba(244,239,230,.14);
    border-radius:14px;
    background:rgba(9,10,14,.88);
  }
  .player-error-kicker{margin:0 0 10px;font-size:10px;letter-spacing:.3em;color:var(--gold);}
  .player-error-card h1{margin:0 0 14px;font-family:var(--serif);font-size:26px;letter-spacing:.08em;}
  .player-error-card p{margin:0 0 10px;font-size:13px;line-height:1.9;color:rgba(244,239,230,.6);}
  .player-error-help{color:rgba(244,239,230,.36) !important;font-size:11px !important;}
  .player-error-card code{color:rgba(216,176,106,.72);}
  .player-error-link{
    display:inline-flex;
    margin-top:12px;
    padding:10px 18px;
    border:1px solid rgba(216,176,106,.5);
    border-radius:2px;
    color:var(--gold);
    font-size:11px;
    letter-spacing:.16em;
    text-decoration:none;
  }
  .player-error-link:hover{background:rgba(216,176,106,.08);}
