/* ── variables ── */
:root{
  --bg:#0a0810; --bg2:#14101e; --bg3:#1b1426;
  --ink:#efe9dd; --ink-dim:#9a8f7d; --ink-faint:#6b6354;
  --gold:#d4af37; --gold-bright:#f4d27a; --gold-deep:#9c7e26;
  --line:rgba(212,175,55,.18); --line-soft:rgba(212,175,55,.10);
  --N:#9b958a; --R:#5aa6ff; --SR:#bd7dff; --SSR:#ffd34d;
  --N-glow:rgba(155,149,138,.4); --R-glow:rgba(90,166,255,.55);
  --SR-glow:rgba(189,125,255,.6); --SSR-glow:rgba(255,211,77,.7);
  --alarm:#e0584f; --alarm-glow:rgba(224,88,79,.5);
  --safe:#4dba77;
  --gilt:linear-gradient(150deg,var(--gold-bright),var(--gold) 45%,var(--gold-deep));
  --ease-out:cubic-bezier(.22,1,.36,1);
  --tense-intensity:0;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:
    radial-gradient(130% 80% at 50% -8%,#23193a 0%,#120e1d 42%,var(--bg) 78%),
    var(--bg);
  color:var(--ink);font-family:'Noto Serif SC',serif;overflow-x:hidden;
  min-height:100%;-webkit-tap-highlight-color:transparent;
  text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;
}
.grain{position:fixed;inset:0;pointer-events:none;opacity:.05;z-index:1;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
/* 顶部柔和暗角，给场景纵深 */
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;
  box-shadow:inset 0 0 200px rgba(0,0,0,.55),inset 0 -120px 160px rgba(0,0,0,.4)}

/* ── loading（金菱旋转 + 标题流光）── */
.loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;
  z-index:40;background:radial-gradient(ellipse 90% 60% at 50% 45%,#1a1330,var(--bg) 75%)}
.loading-frame{position:relative;width:64px;height:64px;display:grid;place-items:center}
.loading-frame::before,.loading-frame::after{content:"";position:absolute;inset:0;border-radius:50%;
  border:1px solid var(--gold);opacity:.5}
.loading-frame::before{animation:loadRing 1.8s ease-out infinite}
.loading-frame::after{animation:loadRing 1.8s ease-out .9s infinite}
@keyframes loadRing{0%{transform:scale(.5);opacity:.7}100%{transform:scale(1.25);opacity:0}}
.loading-mark{font-size:30px;color:var(--gold);text-shadow:0 0 18px rgba(212,175,55,.6);
  animation:loadMark 2.6s ease-in-out infinite}
@keyframes loadMark{0%,100%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.18)}}
.loading-text{font-family:'Cinzel',serif;font-weight:500;font-size:13px;letter-spacing:.34em;
  background:linear-gradient(90deg,var(--gold-deep) 0%,var(--gold-bright) 50%,var(--gold-deep) 100%);
  background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:loadShimmer 2.2s linear infinite}
@keyframes loadShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ── layout ── */
#app{position:relative;z-index:3;min-height:100vh;overflow:hidden}
.screen{max-width:600px;margin:0 auto;padding:0 22px 72px;display:flex;flex-direction:column;gap:22px}

/* ── masthead ── */
header.top{position:relative;z-index:3;text-align:center;padding:40px 22px 14px}
header.top .kicker{font-family:'Cinzel',serif;font-weight:500;font-size:12px;letter-spacing:.52em;
  color:var(--gold);text-transform:uppercase;opacity:.78;
  display:inline-block;padding-bottom:2px}
header.top h1{font-family:'Cinzel',serif;font-weight:700;font-size:35px;letter-spacing:.1em;
  margin-top:10px;line-height:1;
  background:linear-gradient(170deg,var(--gold-bright),var(--gold) 55%,var(--gold-deep));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--gold);
  filter:drop-shadow(0 0 26px rgba(212,175,55,.28))}
/* 标题下的居中金线分隔（细节装饰，不影响功能） */
header.top h1::after{content:"";display:block;width:46px;height:1px;margin:14px auto 0;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.6}
/* 首页 masthead 重设计：更大气标题 + kicker 双侧金线 + 柔光底 */
.masthead{padding:52px 22px 20px}
.masthead::before{content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);
  width:min(520px,86%);height:170px;pointer-events:none;
  background:radial-gradient(ellipse 70% 100% at 50% 0%,rgba(212,175,55,.14),transparent 70%)}
.masthead .kicker{display:inline-flex;align-items:center;gap:13px}
.masthead .kicker::before,.masthead .kicker::after{content:"";width:30px;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold));opacity:.5}
.masthead .kicker::after{background:linear-gradient(90deg,var(--gold),transparent)}
.masthead h1{font-size:46px;letter-spacing:.12em}
@media(max-width:420px){.masthead h1{font-size:38px}}

/* ── top controls (lang / mute) ── */
.top-controls{position:absolute;top:16px;right:16px;display:flex;gap:6px;z-index:10}
.top-controls .lang-toggle,.top-controls .mute-toggle{
  width:auto;padding:6px 11px;font-size:12.5px;letter-spacing:.12em}
.top-controls button:hover{transform:translateY(-1px)}

/* ── cash bar ── */
.cash-bar{text-align:center;font-family:'Cinzel',serif;font-weight:600;font-size:15px;letter-spacing:.14em;
  color:var(--gold);padding:11px 8px;position:relative;
  border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line)}
.cash-bar span{font-family:'Cinzel',serif;color:var(--ink-faint);font-size:11px;letter-spacing:.3em;
  text-transform:uppercase;margin-right:9px;vertical-align:middle}

/* ── buttons ── */
button.draw{font-family:'Cinzel',serif;font-weight:600;font-size:15px;letter-spacing:.12em;color:var(--ink);
  background:linear-gradient(180deg,rgba(212,175,55,.14),rgba(212,175,55,.03));
  border:1px solid var(--gold);border-radius:3px;padding:14px 22px;cursor:pointer;
  position:relative;overflow:hidden;transition:transform .18s var(--ease-out),box-shadow .3s,border-color .3s,background .3s;width:100%}
/* hover 时一道金属反光扫过 */
button.draw::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,235,170,.16),transparent);
  transform:skewX(-18deg);transition:left .55s var(--ease-out);pointer-events:none}
button.draw:hover::after{left:140%}
button.draw .sub{display:block;font-family:'Noto Serif SC',serif;font-weight:300;font-size:12.5px;
  letter-spacing:.22em;color:var(--ink-dim);margin-top:4px}
button.draw:hover{transform:translateY(-2px);box-shadow:0 8px 26px rgba(212,175,55,.22);
  background:linear-gradient(180deg,rgba(212,175,55,.2),rgba(212,175,55,.05))}
button.draw:active{transform:translateY(0)}
button.draw:disabled{opacity:.34;cursor:not-allowed;filter:saturate(.6)}
button.draw:disabled::after{display:none}
button.ghost{background:transparent;border-color:var(--line);color:var(--ink-dim)}
button.ghost:hover{box-shadow:none;color:var(--ink);border-color:var(--gold);background:rgba(212,175,55,.05)}
button.danger{background:linear-gradient(180deg,rgba(224,88,79,.16),rgba(224,88,79,.03));
  border-color:var(--alarm);color:var(--alarm)}
button.danger:hover{box-shadow:0 8px 26px var(--alarm-glow);
  background:linear-gradient(180deg,rgba(224,88,79,.24),rgba(224,88,79,.06))}
button.safe{background:linear-gradient(180deg,rgba(77,186,119,.16),rgba(77,186,119,.03));
  border-color:var(--safe);color:var(--safe)}
button.safe:hover{box-shadow:0 8px 26px rgba(77,186,119,.3);
  background:linear-gradient(180deg,rgba(77,186,119,.24),rgba(77,186,119,.06))}
button.sm{padding:7px 15px;font-size:14px}

/* ── museum buttons ── */
.museums{display:flex;flex-direction:column;gap:11px}
.museum-btn{display:flex;flex-direction:column;gap:4px;text-align:left;padding:15px 20px 15px 22px}
/* 等距馆图做背景：图靠右、文字压左下暗区，盖在渐变上 */
.museum-card{min-height:132px;justify-content:flex-end;overflow:hidden;
  background-size:cover;background-position:center 62%;background-repeat:no-repeat}
.museum-card.museum-locked{filter:grayscale(.55) brightness(.72) saturate(.5)}
/* 左侧细金竖条，进画廊名录的气质 */
.museum-btn::before{content:"";position:absolute;left:0;top:14%;bottom:14%;width:2px;
  background:var(--gilt);opacity:.55;transition:opacity .25s}
.museum-btn:hover::before{opacity:1}
.museum-btn .name{font-family:'Cinzel',serif;font-weight:600;font-size:15px;letter-spacing:.06em}
.museum-btn .meta-line{font-family:'Noto Serif SC',serif;font-weight:300;font-size:13px;
  color:var(--ink-dim);letter-spacing:.14em}
.museum-locked{border-color:var(--line-soft);color:var(--ink-dim);cursor:not-allowed;filter:saturate(.5)}
.museum-locked::before{opacity:.2}
.museum-locked .name{color:var(--ink-faint)}
.museum-locked:hover{transform:none;box-shadow:none}

/* ── nav row ── */
.nav-row{display:flex;gap:10px;padding:6px 0 0}
.nav-row button{flex:1;padding:11px 8px;font-size:14px}

/* ── alarm bar ── */
.alarm-section{padding:2px 0 6px}
.alarm-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;
  font-family:'Cinzel',serif;font-weight:500;letter-spacing:.22em;text-transform:uppercase;margin-bottom:8px;
  color:var(--ink-faint)}
.alarm-label .val{font-family:'Cinzel',serif;font-weight:600;font-size:17px;letter-spacing:.08em;color:var(--alarm-color, var(--ink-dim))}
.alarm-track{height:7px;background:rgba(0,0,0,.4);border-radius:4px;overflow:hidden;
  border:1px solid var(--line);box-shadow:inset 0 1px 3px rgba(0,0,0,.5)}
.alarm-fill{height:100%;border-radius:4px;transition:width .45s var(--ease-out);
  background:linear-gradient(90deg,var(--safe) 0%,var(--gold) 50%,var(--alarm) 85%);
  box-shadow:0 0 8px currentColor}
.risk-line{font-family:'Cinzel',serif;font-size:12.5px;color:var(--ink-dim);margin-top:8px;
  letter-spacing:.16em;text-align:center;text-transform:uppercase}
.risk-high{color:var(--alarm)}

/* ── card flip ── */
.card{width:130px;height:185px;position:relative;transform-style:preserve-3d;
  transition:transform .6s cubic-bezier(.2,.7,.3,1);cursor:pointer;border-radius:6px;flex-shrink:0}
.card.flipped{transform:rotateY(180deg)}
.card .face{position:absolute;inset:0;backface-visibility:hidden;border-radius:6px;overflow:hidden;
  border:1.5px solid var(--c,#555);box-shadow:0 6px 22px rgba(0,0,0,.5),0 0 0 1px rgba(0,0,0,.4)}
.card .back{background:
  radial-gradient(circle at 50% 42%,rgba(212,175,55,.10),transparent 60%),
  repeating-linear-gradient(45deg,#171120,#171120 6px,#201829 6px,#201829 12px);
  display:grid;place-items:center;border-color:var(--line)}
.card .back .mark{font-family:'Cinzel',serif;font-size:30px;color:var(--gold);opacity:.55;
  text-shadow:0 0 14px rgba(212,175,55,.5)}
.card .front{transform:rotateY(180deg);background:#0c0a12;display:flex;flex-direction:column}
.card .front img{width:100%;flex:1;object-fit:cover;background:#1a1422;min-height:0}
.card .front .meta{padding:5px 6px;background:linear-gradient(0deg,#0c0a12,rgba(12,10,18,.85))}
.card .front .rt{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.18em;color:var(--c)}
.card .front .ti{font-size:11px;line-height:1.25;color:var(--ink);margin-top:2px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .front .fake-tag{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.1em;
  color:var(--alarm);background:rgba(224,92,92,.15);padding:2px 5px;border-radius:2px;margin-top:2px}
.card.r-N{--c:var(--N)} .card.r-R{--c:var(--R)} .card.r-SR{--c:var(--SR)} .card.r-SSR{--c:var(--SSR)}
/* 稀有度整卡发光：档位越高，外发光半径越大 */
.r-N{--g:var(--N-glow);--gr:7px} .r-R{--g:var(--R-glow);--gr:13px}
.r-SR{--g:var(--SR-glow);--gr:20px} .r-SSR{--g:var(--SSR-glow);--gr:30px}
.card.flipped .front{box-shadow:0 0 var(--gr) var(--g),0 6px 22px rgba(0,0,0,.5)}
.card.flipped.r-SSR{animation:ssrpulse 2.2s ease-in-out infinite}
@keyframes ssrpulse{0%,100%{filter:drop-shadow(0 0 6px var(--SSR-glow))}50%{filter:drop-shadow(0 0 20px var(--SSR-glow))}}
.card .spark{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:6px;opacity:0}
.card.flipped.r-SSR .spark{opacity:1}
.card .spark i{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--SSR);
  box-shadow:0 0 6px var(--SSR);animation:rise 2.4s linear infinite}
@keyframes rise{0%{transform:translateY(200px) scale(0);opacity:0}
  20%{opacity:1}100%{transform:translateY(-20px) scale(1);opacity:0}}

/* ── pending card area ── */
.pending-area{display:flex;gap:20px;align-items:flex-start;padding:6px 0 10px;perspective:1000px}
.pending-info{flex:1;min-width:0}
.pending-label{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--ink-faint);margin-bottom:10px}
.pending-actions{display:flex;flex-direction:column;gap:9px;margin-top:12px}

/* ── loot row ── */
.loot-section{border-top:1px solid var(--line);padding-top:16px}
.loot-label{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--ink-faint);margin-bottom:12px}
.loot-row{display:flex;gap:11px;flex-wrap:wrap;perspective:1000px}
.loot-item{position:relative;cursor:pointer;transition:transform .2s var(--ease-out)}
.loot-item:hover{transform:translateY(-3px)}

/* ── 战利品真伪徽标（画作已揭示，徽标只表真伪状态）── */
.loot-badge{position:absolute;top:6px;left:6px;right:6px;text-align:center;pointer-events:none;
  font-family:'Cinzel',serif;font-size:10px;letter-spacing:.06em;line-height:1.4;
  padding:4px 3px;border-radius:3px}
.loot-badge .sub{display:block;font-size:8px;letter-spacing:.02em;opacity:.9;margin-top:1px}
/* 未鉴定：金色脉冲 CTA + 卡面暗化，诱导点击鉴定（push-your-luck） */
.loot-badge.unappraised{color:#19120a;background:linear-gradient(0deg,rgba(212,175,55,.92),rgba(232,200,110,.95));
  box-shadow:0 2px 8px rgba(0,0,0,.5);animation:badgePulse 1.5s ease-in-out infinite}
@keyframes badgePulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.22)}}
.loot-item.unappraised .card-mini{filter:saturate(.6) brightness(.72);transition:filter .25s}
.loot-item.unappraised:hover .card-mini{filter:saturate(.9) brightness(.95)}
/* 已认证：绿；赝品：红 */
.loot-badge.authed{color:var(--safe);background:rgba(77,186,119,.18);border:1px solid rgba(77,186,119,.5)}
.loot-badge.fake{color:var(--alarm);background:rgba(224,92,92,.2);border:1px solid rgba(224,92,92,.55)}
/* 鉴定动画：金色光带自上而下扫描 + 卡面去暗 */
.loot-item.appraising{pointer-events:none}
.loot-item.appraising .card-mini{animation:appraiseLight .7s ease forwards}
.loot-item.appraising .loot-badge{opacity:0;transition:opacity .2s}
.loot-item.appraising::after{content:"";position:absolute;left:0;right:0;height:34%;top:-34%;border-radius:6px;
  pointer-events:none;z-index:3;background:linear-gradient(180deg,transparent,rgba(255,228,140,.7),transparent);
  box-shadow:0 0 14px rgba(212,175,55,.6);animation:appraiseScan .7s ease forwards}
@keyframes appraiseScan{0%{top:-34%;opacity:0}15%{opacity:1}100%{top:100%;opacity:0}}
@keyframes appraiseLight{0%{filter:saturate(.6) brightness(.72)}60%{filter:saturate(1.1) brightness(1.15)}100%{filter:none}}
/* 全部鉴定按钮 */
.appraise-all{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gold);background:rgba(212,175,55,.1);border:1px solid var(--gold);border-radius:3px;
  padding:3px 10px;margin-left:10px;cursor:pointer;vertical-align:middle;transition:background .2s}
.appraise-all:hover{background:rgba(212,175,55,.22)}

/* mini card shown after appraisal */
.card-mini{width:90px;height:128px;border-radius:6px;overflow:hidden;border:1.5px solid var(--c,#555);
  position:relative;flex-shrink:0;cursor:pointer;box-shadow:0 0 var(--gr) var(--g)}
.card-mini img{width:100%;height:72px;object-fit:cover;background:#1a1422;display:block}
.card-mini .mini-meta{padding:4px 5px;background:#0c0a12;font-size:10px;line-height:1.3}
.card-mini .mini-rt{font-family:'Cinzel',serif;font-size:9px;letter-spacing:.1em;color:var(--c)}
.card-mini .mini-ti{color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-mini .mini-fake{font-family:'Cinzel',serif;font-size:9px;letter-spacing:.08em;
  color:var(--alarm);margin-top:2px}
.card-mini.r-N{--c:var(--N)}.card-mini.r-R{--c:var(--R)}.card-mini.r-SR{--c:var(--SR)}.card-mini.r-SSR{--c:var(--SSR)}

/* ── section headers ── */
.section-title{font-family:'Cinzel',serif;font-weight:500;font-size:13px;letter-spacing:.3em;
  color:var(--gold);text-transform:uppercase;padding:18px 0 9px;
  border-bottom:1px solid var(--line);margin-bottom:14px;
  display:flex;align-items:center;gap:10px}
/* 标题尾随细金线，填满到行尾，画册栏目感 */
.section-title::after{content:"";flex:1;height:1px;
  background:linear-gradient(90deg,var(--line),transparent)}

/* ── rescue ── */
.rescue-banner{height:128px;border-radius:8px;margin-bottom:14px;
  background:linear-gradient(180deg,rgba(7,5,16,.15),rgba(7,5,16,.8)),url("../data/ui/busted-bg.jpg") center 38%/cover;
  border:1px solid rgba(224,88,79,.35);box-shadow:0 0 34px rgba(224,88,79,.18) inset,0 6px 20px rgba(0,0,0,.5)}
.rescue-grid{display:flex;gap:10px;flex-wrap:wrap;padding:8px 0}
.rescue-info{font-size:15px;color:var(--ink-dim);margin-bottom:10px;line-height:1.6}
.rescue-card{position:relative;width:90px;cursor:pointer;border-radius:7px;
  transition:transform .15s var(--ease-out),box-shadow .2s}
.rescue-card .rescue-name{font-size:10px;color:var(--ink-dim);text-align:center;margin-top:3px}
/* 选中：金环高亮 + 上浮 + 角标 ✓ */
.rescue-card .card-mini{transition:box-shadow .2s,outline-color .2s;outline:2px solid transparent;outline-offset:1px}
.rescue-card.selected{transform:translateY(-4px)}
.rescue-card.selected .card-mini{outline-color:var(--gold);box-shadow:0 0 18px rgba(212,175,55,.45)}
.rescue-card.selected .rescue-name{color:var(--gold)}
.rescue-card .rescue-tick{position:absolute;top:4px;right:4px;z-index:2;width:20px;height:20px;
  border-radius:50%;background:var(--gold);color:#1a1206;font-size:15px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  transform:scale(0);transition:transform .18s var(--ease-out);box-shadow:0 2px 8px rgba(0,0,0,.5)}
.rescue-card.selected .rescue-tick{transform:scale(1)}

/* ── auction ── */
.auction-items{display:flex;flex-direction:column;gap:12px;padding:8px 0}
.auction-item{display:flex;gap:14px;align-items:center;border:1px solid var(--line);
  border-left:2px solid var(--c,var(--line));
  border-radius:6px;padding:11px 14px;background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,.01))}
.auction-item img{width:62px;height:62px;object-fit:cover;border-radius:4px;background:#1a1422;flex-shrink:0;
  box-shadow:0 0 var(--gr) var(--g),0 3px 10px rgba(0,0,0,.4)}
.auction-item .ai-info{flex:1;min-width:0}
.auction-item .ai-title{font-size:16px;line-height:1.35;margin-bottom:3px;color:var(--ink)}
.auction-item .ai-rarity{font-family:'Cinzel',serif;font-weight:500;font-size:10.5px;letter-spacing:.2em;
  color:var(--c);text-transform:uppercase}
.auction-item .ai-payout{font-family:'Cinzel',serif;font-weight:700;font-size:19px;color:var(--gold);
  margin-top:5px;letter-spacing:.02em;text-shadow:0 0 16px rgba(212,175,55,.25)}
.auction-item .ai-crit{font-family:'Cinzel',serif;font-weight:600;font-size:10.5px;letter-spacing:.16em;
  color:var(--SSR);background:rgba(255,211,77,.12);padding:2px 8px;border-radius:2px;margin-left:8px;
  vertical-align:middle}
.auction-item .ai-fake{color:var(--alarm);font-size:12.5px;margin-top:3px;letter-spacing:.05em}
.auction-item.r-N{--c:var(--N)}.auction-item.r-R{--c:var(--R)}
.auction-item.r-SR{--c:var(--SR)}.auction-item.r-SSR{--c:var(--SSR)}
.auction-total{position:relative;font-family:'Cinzel',serif;font-weight:700;font-size:24px;color:var(--gold);
  text-align:center;padding:18px 14px 8px;margin-top:6px;border-top:1px solid var(--line);letter-spacing:.1em;
  text-shadow:0 0 22px rgba(212,175,55,.3)}

/* ── 入账震撼：总额砸落 + 冲击波 + 震屏 ── */
.auction-total.slam,.haul-total-val.slam{animation:cashSlam .5s var(--ease-out)}
@keyframes cashSlam{
  0%{transform:scale(1)}
  30%{transform:scale(1.28);text-shadow:0 0 40px rgba(255,225,130,.95),0 0 14px rgba(212,175,55,.7);color:var(--gold-bright)}
  100%{transform:scale(1)}
}
.cash-shock{position:absolute;left:50%;top:50%;width:24px;height:24px;border-radius:50%;pointer-events:none;
  transform:translate(-50%,-50%);border:2px solid rgba(255,221,130,.9);
  animation:cashShock .68s var(--ease-out) forwards}
@keyframes cashShock{
  0%{opacity:.9;width:24px;height:24px;border-width:3px}
  100%{opacity:0;width:340px;height:340px;border-width:0}
}
@keyframes cashShake{
  0%,100%{transform:translate(0,0)}
  20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}
  60%{transform:translate(-3px,-1px)}80%{transform:translate(3px,1px)}
}
.screen.cash-shake{animation:cashShake .42s ease}

/* ── shop ── */
.shop-section{margin-bottom:24px}
.equip-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.equip-card{border:1px solid var(--line);border-radius:6px;padding:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.03),rgba(255,255,255,.008));
  display:flex;flex-direction:column;gap:7px}
.equip-card .eq-head{display:flex;align-items:center;gap:10px}
.equip-card .eq-icon{font-size:22px;line-height:1;flex-shrink:0;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5))}
.equip-card .eq-icon img{width:42px;height:42px;object-fit:contain;display:block}
.equip-card .eq-name{font-family:'Cinzel',serif;font-weight:600;font-size:15px;letter-spacing:.07em}
.equip-card .eq-desc{font-family:'Noto Serif SC',serif;font-weight:300;font-size:12.5px;
  color:var(--ink-dim);letter-spacing:.04em;line-height:1.5}
.equip-card .eq-level{font-family:'Cinzel',serif;font-weight:500;font-size:14px;color:var(--gold);
  letter-spacing:.08em;margin-top:auto}
.equip-card button{margin-top:4px}
.tier-list{display:flex;flex-direction:column;gap:9px}
.tier-item{border:1px solid var(--line);border-radius:6px;padding:12px 14px;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  transition:border-color .25s,background .25s}
.tier-item.active{border-color:var(--gold);background:rgba(212,175,55,.07);
  box-shadow:inset 0 0 0 1px rgba(212,175,55,.12)}
.tier-item .ti-info{flex:1;min-width:0}
.tier-item .ti-info .ti-name{font-family:'Cinzel',serif;font-weight:600;font-size:15px;letter-spacing:.07em}
.tier-item .ti-info .ti-mult{font-family:'Cinzel',serif;font-size:12.5px;color:var(--ink-dim);
  margin-top:3px;letter-spacing:.06em}
.tier-item button{flex-shrink:0;width:auto}

/* ── collection / gallery ── */
.collection-screen{position:fixed;inset:0;z-index:20;background:var(--bg);overflow-y:auto;
  transform:translateX(100%);transition:transform .35s cubic-bezier(.2,.7,.3,1)}
.collection-screen.show{transform:translateX(0)}
.col-head{position:sticky;top:0;background:rgba(12,10,18,.92);backdrop-filter:blur(8px);
  z-index:2;padding:16px 20px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between}
.col-head h2{font-family:'Cinzel',serif;font-weight:700;font-size:16px;letter-spacing:.12em;color:var(--gold)}
.col-head .prog{font-family:'Cinzel',serif;font-size:12px;color:var(--ink-dim);letter-spacing:.18em;margin-top:4px}
.col-body{max-width:900px;margin:0 auto;padding:24px 18px 64px}
.museum-section{margin-bottom:30px}
.museum-section h3{font-family:'Cinzel',serif;font-weight:600;font-size:16px;letter-spacing:.16em;
  color:var(--gold);margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:12px}
.museum-section h3::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--line),transparent)}
.tier{margin-bottom:20px}
.tier h4{font-family:'Cinzel',serif;font-weight:500;font-size:12.5px;letter-spacing:.26em;color:var(--ct);
  text-transform:uppercase;margin-bottom:10px;border-left:2px solid var(--ct);padding-left:10px}
.tier.t-N{--ct:var(--N)}.tier.t-R{--ct:var(--R)}.tier.t-SR{--ct:var(--SR)}.tier.t-SSR{--ct:var(--SSR)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:9px}
.cell{aspect-ratio:3/4;border-radius:4px;overflow:hidden;position:relative;
  border:1px solid var(--line);background:#15111e;cursor:pointer;
  transition:transform .2s var(--ease-out),box-shadow .25s,border-color .25s}
.cell:not(.locked):hover{transform:translateY(-3px);border-color:var(--gold);
  box-shadow:0 6px 18px rgba(0,0,0,.5)}
.cell.locked{display:grid;place-items:center;color:var(--ink-faint);
  font-family:'Cinzel',serif;font-size:18px;opacity:.32;cursor:default}
.cell img{width:100%;height:100%;object-fit:cover}
.cell .cnt{position:absolute;right:3px;bottom:3px;font-size:10px;background:rgba(0,0,0,.7);
  color:var(--gold);padding:1px 4px;border-radius:2px;font-family:'Cinzel',serif}
.cell .rb{position:absolute;left:0;top:0;width:100%;height:3px;background:var(--rc)}
.cell.q-N{--rc:var(--N)}.cell.q-R{--rc:var(--R)}.cell.q-SR{--rc:var(--SR)}.cell.q-SSR{--rc:var(--SSR)}

/* ── detail modal（全屏藏品详情）── */
.detail{position:fixed;inset:0;z-index:30;background:rgba(6,4,12,.94);backdrop-filter:blur(8px);
  display:none;align-items:center;justify-content:center;padding:20px;overflow-y:auto;
  animation:coachFade .25s ease both}
.detail.show{display:flex}
.detail .box{max-width:min(560px,94vw);width:100%;max-height:92vh;display:flex;flex-direction:column;
  background:var(--bg2);border:1px solid var(--c,var(--line));border-radius:10px;overflow:hidden;cursor:pointer;
  box-shadow:0 0 60px var(--g,transparent),0 24px 60px rgba(0,0,0,.72)}
.detail .box-img{position:relative;flex-shrink:0}
.detail .box img{width:100%;max-height:60vh;object-fit:contain;background:#0c0a12;display:block}
.detail .box .info{padding:18px 20px 22px;overflow-y:auto}
.detail-close{position:fixed;top:14px;right:16px;z-index:31;width:40px;height:40px;border-radius:50%;
  border:1px solid var(--line);background:rgba(20,16,28,.7);color:var(--ink-dim);font-size:23px;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s,border-color .2s}
.detail-close:hover{color:var(--gold);border-color:var(--gold)}
.detail-hint{position:fixed;bottom:18px;left:0;right:0;text-align:center;z-index:31;pointer-events:none;
  font-family:'Cinzel',serif;font-size:11px;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-faint)}
@media (min-width:720px){
  .detail .box{flex-direction:row;max-width:min(960px,94vw);max-height:88vh;align-items:stretch}
  .detail .box-img{width:58%;display:flex;align-items:center;background:#0c0a12}
  .detail .box img{max-height:88vh;height:100%}
  .detail .box .info{width:42%;max-height:88vh}
}
.detail .box .rt{font-family:'Cinzel',serif;font-weight:500;font-size:12px;letter-spacing:.24em;
  color:var(--c);text-transform:uppercase}
.detail .box .ti{font-family:'Cormorant Garamond',serif;font-weight:500;font-style:italic;
  font-size:23px;line-height:1.25;margin:7px 0 5px;color:var(--ink)}
.detail .box .by{font-family:'Cormorant Garamond',serif;font-size:15px;color:var(--ink-dim);letter-spacing:.02em}
.detail .box .dt{font-family:'Cinzel',serif;font-size:12px;color:var(--ink-faint);margin-top:8px;
  letter-spacing:.12em;line-height:1.6;text-transform:uppercase}
.detail .box .field{margin-top:12px;border-top:1px solid var(--line-soft);padding-top:12px}
.detail .box .field .fl{font-family:'Cinzel',serif;font-size:10.5px;letter-spacing:.24em;
  color:var(--ink-faint);text-transform:uppercase;margin-bottom:4px}
.detail .box .field .fv{font-size:14.5px;color:var(--ink);line-height:1.6}
.detail.r-N{--c:var(--N)}.detail.r-R{--c:var(--R)}.detail.r-SR{--c:var(--SR)}.detail.r-SSR{--c:var(--SSR)}

/* ══════════════════════════════════════════════════
   ENHANCEMENTS: 背景蓝图 / 进度条 / 动画 / juice / vignette
   ══════════════════════════════════════════════════ */

/* ── 背景蓝图 ── */
.bg-map{
  position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  opacity:.16;
  -webkit-mask-image:radial-gradient(130% 100% at 50% 30%,#000 35%,transparent 88%);
  mask-image:radial-gradient(130% 100% at 50% 30%,#000 35%,transparent 88%);
}
.bg-map .floorplan{width:100%;height:100%;object-fit:cover}
/* 蓝图扫光 */
.bg-map::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(110deg,transparent 30%,rgba(212,175,55,.08) 50%,transparent 70%);
  background-size:200% 100%;
  animation:mapSweep 8s linear infinite;
  pointer-events:none;
}
@keyframes mapSweep{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}

/* ── 通关进度条 ── */
.unlock-progress{padding:12px 0 4px}
.prog-segments{display:flex;gap:6px;margin-bottom:6px}
.prog-seg{flex:1;height:6px;border-radius:3px;background:rgba(255,255,255,.1);
  border:1px solid var(--line);transition:background .4s,border-color .4s}
.prog-seg.lit{background:var(--gold);border-color:var(--gold);
  box-shadow:0 0 8px rgba(212,175,55,.5)}
.prog-sub-track{height:4px;background:rgba(255,255,255,.08);border-radius:2px;overflow:hidden}
.prog-sub-fill{height:100%;background:linear-gradient(90deg,var(--gold),#ffec7a);
  border-radius:2px;transition:width .6s ease}
.prog-caption{font-family:'Cinzel',serif;font-size:12.5px;letter-spacing:.15em;
  color:var(--ink-dim);margin-top:4px;text-align:center}
.prog-done{color:var(--gold)}

/* ── 界面进入淡入 ── */
@keyframes screenEnter{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:translateY(0)}
}
.screen{animation:screenEnter .42s var(--ease-out) both}
/* 首屏元素轻微错峰入场 */
.screen>*{animation:screenEnter .5s var(--ease-out) both}
.screen>*:nth-child(1){animation-delay:.04s}
.screen>*:nth-child(2){animation-delay:.10s}
.screen>*:nth-child(3){animation-delay:.16s}
.screen>*:nth-child(4){animation-delay:.22s}
.screen>*:nth-child(n+5){animation-delay:.28s}

/* ── 被抓：红闪 + 抖动 ── */
@keyframes redFlash{
  0%,100%{background:transparent}
  20%,60%{background:rgba(224,92,92,.18)}
  40%,80%{background:rgba(224,92,92,.08)}
}
@keyframes shake{
  0%,100%{transform:translateX(0)}
  15%{transform:translateX(-8px) rotate(-1deg)}
  30%{transform:translateX(8px) rotate(1deg)}
  45%{transform:translateX(-6px)}
  60%{transform:translateX(6px)}
  75%{transform:translateX(-3px)}
  90%{transform:translateX(3px)}
}
#app.busted-flash{
  animation:redFlash .9s ease,shake .9s ease;
}

/* ── iris 转场（进馆圆形遮罩）── */
@keyframes irisIn{
  from{clip-path:circle(0% at 50% 50%)}
  to{clip-path:circle(150% at 50% 50%)}
}
#app.iris-in{
  animation:irisIn .6s cubic-bezier(.4,0,.2,1) both;
}

/* ── 拍卖暴击金光 ── */
@keyframes critBurst{
  0%{box-shadow:0 0 0 rgba(255,211,77,0)}
  30%{box-shadow:0 0 30px rgba(255,211,77,.7),0 0 60px rgba(255,211,77,.3)}
  100%{box-shadow:0 0 8px rgba(255,211,77,.2)}
}
.auction-item.crit-burst{
  animation:critBurst 1s ease forwards;
  border-color:var(--SSR);
}

/* ── 拍卖赝品碎裂 ── */
@keyframes shatter{
  0%{opacity:1;transform:scale(1)}
  40%{opacity:.6;transform:scale(1.03) skew(2deg,-1deg)}
  60%{opacity:.3;transform:scale(.97) skew(-3deg,2deg)}
  100%{opacity:.5;transform:scale(1)}
}
.auction-item.shatter{
  animation:shatter .6s ease forwards;
  border-color:var(--alarm);
}

/* ── 警报 > 30 脉动渐红 ── */
@keyframes alarmPulse{
  0%,100%{box-shadow:none}
  50%{box-shadow:0 0 12px rgba(224,92,92,calc(.3 + var(--tense-intensity) * .4))}
}
.alarm-section.danger .alarm-track{
  animation:alarmPulse 1.2s ease-in-out infinite;
}
.alarm-section.danger .alarm-label .val{
  animation:alarmPulse 1.2s ease-in-out infinite;
}

/* ── SSR 偷到：屏幕边缘金光 ── */
@keyframes ssrEdge{
  0%{opacity:0}20%{opacity:1}80%{opacity:1}100%{opacity:0}
}
#app.ssr-edge::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:50;
  box-shadow:inset 0 0 80px rgba(255,211,77,.35),inset 0 0 160px rgba(255,211,77,.15);
  animation:ssrEdge 2s ease forwards;
}

/* ── 馆解锁金爆 ── */
@keyframes unlockBurst{
  0%{box-shadow:0 0 0 rgba(212,175,55,0);transform:scale(1)}
  40%{box-shadow:0 0 40px rgba(212,175,55,.8),0 0 80px rgba(212,175,55,.4);transform:scale(1.04)}
  100%{box-shadow:0 0 10px rgba(212,175,55,.2);transform:scale(1)}
}
.unlock-burst{
  animation:unlockBurst .6s ease forwards;
}

/* ── 升级脉冲 ── */
@keyframes upgradePulse{
  0%{box-shadow:none}
  50%{box-shadow:0 0 20px rgba(212,175,55,.6)}
  100%{box-shadow:none}
}
.equip-card.upgrade-pulse{
  animation:upgradePulse .4s ease;
}

/* ── 高警报 vignette 暗角 ── */
#app.tense::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:2;
  box-shadow:inset 0 0 calc(60px + 80px * var(--tense-intensity))
    rgba(224,92,92,calc(.08 + .25 * var(--tense-intensity)));
  animation:vignetteHeartbeat calc(1.5s - var(--tense-intensity) * 0.8s) ease-in-out infinite;
}
@keyframes vignetteHeartbeat{
  0%,100%{opacity:.7}
  50%{opacity:1}
}

/* ── 卡牌 hover 抬起 ── */
.card-mini:hover{transform:translateY(-3px) scale(1.03);transition:transform .2s ease;z-index:2}
.equip-card:hover{border-color:rgba(212,175,55,.4);transition:border-color .2s}

/* ── 按钮按压 ── */
button.draw:active{transform:scale(.97) translateY(1px) !important;
  box-shadow:inset 0 2px 4px rgba(0,0,0,.3) !important}

/* ── 开场 intro overlay ── */
@keyframes titleRise{
  from{opacity:0;transform:translateY(28px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes subFade{
  from{opacity:0}
  to{opacity:.72}
}
@keyframes sweep{
  0%{left:-60%;opacity:.15}
  50%{opacity:.28}
  100%{left:130%;opacity:0}
}
@keyframes pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(212,175,55,0)}
  50%{box-shadow:0 0 22px 4px rgba(212,175,55,.45)}
}
@keyframes introOut{
  to{opacity:0;pointer-events:none}
}

.intro-overlay{
  position:fixed;inset:0;z-index:200;
  background:
    linear-gradient(180deg,rgba(7,5,16,.5) 0%,rgba(7,5,16,.28) 38%,rgba(7,5,16,.9) 100%),
    url("../data/ui/intro-bg.jpg") center/cover no-repeat,
    radial-gradient(ellipse 120% 80% at 50% 55%,#241a3c 0%,#120d1f 45%,#070510 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  cursor:pointer;overflow:hidden;
}
/* 开场细金边框 + 暗角，电影标题卡气质 */
.intro-overlay::before{
  content:"";position:absolute;inset:20px;pointer-events:none;
  border:1px solid rgba(212,175,55,.16);
  box-shadow:inset 0 0 160px rgba(0,0,0,.6);
  animation:subFade 1.4s ease .3s both;
}
.intro-sweep{
  position:absolute;top:0;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(212,175,55,.12),transparent);
  animation:sweep 3.6s ease-in-out infinite;pointer-events:none;
}
.intro-title{
  position:relative;
  font-family:'Cinzel',serif;font-weight:700;font-size:clamp(34px,8.5vw,68px);
  letter-spacing:.2em;text-align:center;
  background:linear-gradient(170deg,var(--gold-bright),var(--gold) 52%,var(--gold-deep));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--gold);
  filter:drop-shadow(0 0 60px rgba(212,175,55,.4));
  animation:titleRise .9s var(--ease-out) both;
}
.intro-sub{
  position:relative;
  font-family:'Cinzel',serif;font-weight:500;font-size:clamp(11px,2.3vw,15px);
  letter-spacing:.42em;color:var(--ink-dim);text-align:center;text-transform:uppercase;
  animation:subFade 1.2s ease .5s both;
}
.intro-start{
  position:relative;
  font-family:'Cinzel',serif;font-weight:500;font-size:16px;letter-spacing:.28em;
  color:var(--ink-dim);background:transparent;border:1px solid rgba(212,175,55,.28);
  border-radius:3px;padding:14px 40px;cursor:pointer;
  opacity:0;transition:opacity .5s,color .3s,border-color .3s,background .3s,transform .2s var(--ease-out);
  margin-top:18px;pointer-events:none;
}
.intro-start.ready{
  opacity:1;pointer-events:auto;
  color:var(--gold);border-color:var(--gold);
  animation:pulse 1.8s ease-in-out 0s infinite;
}
.intro-start.ready:hover{background:rgba(212,175,55,.08);transform:translateY(-2px)}
.intro-start.ready:active{transform:scale(.97)}

.intro-out{animation:introOut .4s ease forwards}

/* ── coachmark 首次引导（spotlight + 气泡）── */
@keyframes coachFade{from{opacity:0}to{opacity:1}}
@keyframes spotPulse{
  0%,100%{box-shadow:0 0 0 9999px rgba(7,5,14,.74),0 0 0 1px var(--gold),0 0 14px rgba(212,175,55,.5)}
  50%{box-shadow:0 0 0 9999px rgba(7,5,14,.74),0 0 0 1px var(--gold-bright),0 0 24px rgba(212,175,55,.85)}
}
.coach-overlay{
  position:fixed;inset:0;z-index:210;pointer-events:auto;
  animation:coachFade .35s ease both;
}
/* spotlight：用超大外阴影把四周压暗，只留高亮目标 */
.coach-spot{
  position:absolute;border-radius:6px;
  box-shadow:0 0 0 9999px rgba(7,5,14,.74),0 0 0 1px var(--gold),0 0 14px rgba(212,175,55,.5);
  animation:spotPulse 1.8s ease-in-out infinite;
}
.coach-bubble{
  position:absolute;max-width:268px;
  background:linear-gradient(180deg,var(--bg3),var(--bg2));
  border:1px solid var(--gold);border-radius:6px;
  padding:14px 16px 13px;
  box-shadow:0 14px 40px rgba(0,0,0,.65),0 0 0 1px rgba(0,0,0,.5);
  animation:coachFade .4s ease .12s both;
}
/* 小金角：left 由 JS 设 --arrow-x 指向目标中心；.flip 时翻到气泡下方 */
.coach-bubble::before{
  content:"";position:absolute;top:-7px;left:var(--arrow-x,22px);width:12px;height:12px;
  background:var(--bg3);border-left:1px solid var(--gold);border-top:1px solid var(--gold);
  transform:rotate(45deg);
}
.coach-bubble.flip::before{
  top:auto;bottom:-7px;
  border-left:0;border-top:0;border-right:1px solid var(--gold);border-bottom:1px solid var(--gold);
}
.coach-text{
  font-family:'Noto Serif SC',serif;font-weight:300;font-size:15.5px;line-height:1.6;
  color:var(--ink);letter-spacing:.02em;margin-bottom:12px;
}
.coach-ok{
  font-family:'Cinzel',serif;font-weight:500;font-size:14px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gold);background:rgba(212,175,55,.08);
  border:1px solid var(--gold);border-radius:3px;padding:8px 18px;cursor:pointer;
  transition:background .2s,transform .15s var(--ease-out);
}
.coach-ok:hover{background:rgba(212,175,55,.18)}
.coach-ok:active{transform:scale(.96)}

/* ── 3 路卡 (path selection) ── */
.paths-area{display:flex;flex-direction:column;gap:10px;padding:6px 0 10px}
.paths-label{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--ink-faint);margin-bottom:6px}
.paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.path-card{display:flex;flex-direction:column;align-items:center;gap:5px;
  padding:14px 10px 12px;border:1px solid var(--line);border-radius:6px;cursor:pointer;
  background:linear-gradient(180deg,rgba(212,175,55,.07),rgba(212,175,55,.02));
  font-family:'Noto Serif SC',serif;color:var(--ink);position:relative;overflow:hidden;
  transition:border-color .2s,box-shadow .2s,transform .18s var(--ease-out),background .2s;width:100%}
.path-card::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,235,170,.12),transparent);
  transform:skewX(-18deg);transition:left .45s var(--ease-out);pointer-events:none}
.path-card:hover::after{left:140%}
.path-card:hover{border-color:var(--gold);box-shadow:0 6px 20px rgba(212,175,55,.18);
  transform:translateY(-2px);background:linear-gradient(180deg,rgba(212,175,55,.14),rgba(212,175,55,.04))}
.path-card:active{transform:scale(.97) translateY(1px)}
.path-card:disabled{opacity:.34;cursor:not-allowed}
.path-icon{font-size:24px;line-height:1;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.path-name{font-family:'Cinzel',serif;font-weight:600;font-size:14.5px;letter-spacing:.07em;
  color:var(--gold);text-align:center}
.path-desc{font-size:12px;color:var(--ink-dim);letter-spacing:.03em;text-align:center;line-height:1.4}
.path-meta{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:2px}
.path-alarm{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.1em;color:var(--ink-faint)}
.path-risk{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.12em;
  color:var(--ink-dim);margin-top:3px;text-transform:uppercase}
.path-risk.risk-high{color:var(--alarm)}
/* 房卡按明牌稀有度发光 + 标题上色（诱饵；越高档越亮）；赝品风险隐藏 */
.path-card[data-room-idx]{box-shadow:0 0 calc(var(--gr) * .8) var(--g)}
.path-card[data-room-idx] .path-name{color:var(--c)}
.path-card[data-room-idx] .path-desc{color:var(--c);opacity:.75}
.path-card[data-room-idx]:hover{border-color:var(--c);
  box-shadow:0 0 var(--gr) var(--g),0 6px 18px rgba(0,0,0,.35)}
.paths-empty{padding:16px 0;text-align:center}

/* ── 战利品揭示 overlay（柏青哥/扭蛋式，顶层不挤布局）── */
.reveal-overlay{
  position:fixed;inset:0;z-index:240;display:grid;place-items:center;cursor:pointer;
  background:radial-gradient(ellipse 80% 60% at 50% 50%,rgba(10,7,18,.78),rgba(5,3,10,.92));
  backdrop-filter:blur(7px);animation:revealFadeIn .22s ease both;
}
.reveal-overlay.reveal-out{animation:revealFadeOut .28s ease forwards}
@keyframes revealFadeIn{from{opacity:0}to{opacity:1}}
@keyframes revealFadeOut{to{opacity:0}}
.reveal-stage{position:relative;display:grid;place-items:center;perspective:1100px}

/* 蓄力光环：旋转+脉动；揭晓后被 rays 接管 */
.reveal-halo{
  position:absolute;width:300px;height:300px;border-radius:50%;pointer-events:none;
  --halo-c:rgba(212,175,55,.26);
  background:conic-gradient(from 0deg,transparent,var(--halo-c),transparent 40%,var(--halo-c),transparent 80%);
  filter:blur(2px);
  /* spin 占 transform，charge 占 opacity —— 两动画不冲突；蓄能时长跟 --charge */
  animation:haloSpin 2.4s linear infinite, haloCharge var(--charge,700ms) ease-in both;
}
@keyframes haloSpin{to{transform:rotate(360deg)}}
@keyframes haloCharge{0%{opacity:.1}100%{opacity:.95}}   /* 蓄能渐亮：高档蓄得越久越显仪式 */
/* 档位越高，光环越大、染稀有度色 —— 仪式感递增 */
.reveal-overlay.r-SR .reveal-halo{width:440px;height:440px;--halo-c:var(--g)}
.reveal-overlay.r-SSR .reveal-halo{width:600px;height:600px;--halo-c:var(--g)}
.reveal-overlay.revealed .reveal-halo{animation:haloSpin 2.4s linear infinite;opacity:0;transition:opacity .35s}

/* 揭晓放射光：按稀有度上色，越高档越炸 */
.reveal-rays{
  position:absolute;width:520px;height:520px;border-radius:50%;pointer-events:none;opacity:0;
  background:conic-gradient(from 0deg,
    var(--g) 0deg,transparent 6deg,transparent 24deg,var(--g) 30deg,transparent 36deg,
    transparent 54deg,var(--g) 60deg,transparent 66deg,transparent 84deg,var(--g) 90deg,transparent 96deg,
    transparent 114deg,var(--g) 120deg,transparent 126deg,transparent 144deg,var(--g) 150deg,transparent 156deg,
    transparent 174deg,var(--g) 180deg,transparent 186deg,transparent 204deg,var(--g) 210deg,transparent 216deg,
    transparent 234deg,var(--g) 240deg,transparent 246deg,transparent 264deg,var(--g) 270deg,transparent 276deg,
    transparent 294deg,var(--g) 300deg,transparent 306deg,transparent 324deg,var(--g) 330deg,transparent 336deg,transparent 360deg);
  -webkit-mask-image:radial-gradient(circle,transparent 28%,#000 42%,transparent 75%);
  mask-image:radial-gradient(circle,transparent 28%,#000 42%,transparent 75%);
}
.reveal-overlay.revealed .reveal-rays{animation:raysIn .7s var(--ease-out) forwards,raysSpin 14s linear infinite}
@keyframes raysIn{from{opacity:0;transform:scale(.5)}to{opacity:.6;transform:scale(1)}}
@keyframes raysSpin{to{transform:rotate(360deg)}}
.reveal-overlay.r-N .reveal-rays,.reveal-overlay.r-R .reveal-rays{display:none} /* 低档不放射，保持克制 */

/* 掉落弹跳在 wrapper（translate/scale），翻面 rotateY 在内层 card —— 两个 transform 不打架 */
.reveal-card-wrap{width:170px;height:242px;position:relative;z-index:2;
  animation:revealDrop .5s var(--ease-out) both}
@keyframes revealDrop{
  0%{transform:translateY(-130%) rotate(-7deg) scale(.7);opacity:0}
  60%{transform:translateY(6%) rotate(1deg) scale(1.04);opacity:1}
  80%{transform:translateY(-2%) rotate(0) scale(1)}
  100%{transform:translateY(0)}
}
.reveal-overlay.revealed .reveal-card-wrap{animation:burstPop .45s ease}
@keyframes burstPop{0%{transform:scale(1)}40%{transform:scale(1.1)}100%{transform:scale(1)}}
.reveal-card{width:100%;height:100%;position:relative}
.reveal-card .face .ti{font-size:14px;-webkit-line-clamp:3}
.reveal-card .face .rt{font-size:14px}

/* 稀有度标签：揭晓后从卡下浮现 */
.reveal-label{
  position:absolute;bottom:-46px;left:50%;transform:translateX(-50%);
  font-family:'Cinzel',serif;font-weight:700;font-size:18px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--c);text-shadow:0 0 18px var(--g);opacity:0;white-space:nowrap;pointer-events:none;
}
.reveal-overlay.revealed .reveal-label{animation:labelRise .5s var(--ease-out) .15s both}
@keyframes labelRise{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}

/* SSR：全屏金闪一下 */
.reveal-flash{position:absolute;inset:-100vmax;pointer-events:none;opacity:0;
  background:radial-gradient(circle at 50% 50%,rgba(255,228,140,.55),transparent 55%)}
.reveal-overlay.r-SSR.revealed .reveal-flash{animation:revealFlash .55s ease forwards}
@keyframes revealFlash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}
/* 揭晓后的"点击收入囊中"提示：驻留脉冲，等玩家点 */
.reveal-collect{position:absolute;bottom:-84px;left:50%;transform:translateX(-50%);
  font-family:'Cinzel',serif;font-size:14px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .35s}
.reveal-overlay.revealed .reveal-collect{opacity:.85;animation:collectPulse 1.5s ease-in-out .3s infinite}
@keyframes collectPulse{0%,100%{opacity:.5}50%{opacity:1}}

/* ── 战果清点 (haul screen) ── */
@keyframes haulIn{
  from{opacity:0;transform:translateY(30px) scale(.92)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.haul-total-bar{display:flex;justify-content:space-between;align-items:baseline;
  padding:10px 0 14px;border-bottom:1px solid var(--line)}
.haul-total-label{font-family:'Cinzel',serif;font-size:11px;letter-spacing:.3em;
  text-transform:uppercase;color:var(--ink-faint)}
.haul-total-val{position:relative;display:inline-block;font-family:'Cinzel',serif;font-weight:700;font-size:27px;color:var(--gold);
  letter-spacing:.06em;text-shadow:0 0 20px rgba(212,175,55,.35)}
.haul-grid{display:flex;gap:12px;flex-wrap:wrap;padding:12px 0}
.haul-card{position:relative;width:100px;border-radius:7px;overflow:hidden;
  border:1.5px solid var(--c,var(--line));flex-shrink:0;
  box-shadow:0 0 var(--gr) var(--g),0 6px 20px rgba(0,0,0,.5);
  animation:haulIn .5s var(--ease-out) both;
  opacity:0}/* starts hidden, animation fills */
.haul-card img{width:100%;height:72px;object-fit:cover;background:#1a1422;display:block}
.haul-card-meta{padding:5px 7px 7px;background:linear-gradient(0deg,#0c0a12,rgba(12,10,18,.85))}
.haul-rarity{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.18em;color:var(--c);margin-bottom:2px}
.haul-title{font-size:11px;line-height:1.3;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.haul-card.r-N{--c:var(--N)}.haul-card.r-R{--c:var(--R)}
.haul-card.r-SR{--c:var(--SR)}.haul-card.r-SSR{--c:var(--SSR)}
/* 赝品红戳 */
.forgery-stamp{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-18deg);
  font-family:'Cinzel',serif;font-weight:700;font-size:14px;letter-spacing:.14em;
  color:var(--alarm);border:2px solid var(--alarm);border-radius:3px;padding:3px 7px;
  background:rgba(12,10,18,.72);white-space:nowrap;pointer-events:none;
  opacity:.88;text-shadow:0 0 8px rgba(224,92,92,.6)}

/* ── 尊重减少动效偏好 ── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}
