/* ============================================================
   modals.css — #modal-box 通用深卡 + 面板皮肤(v1 移植)+ v2 增量
   (发布确认 / 模块详情 / 牌型徽章兼容)
   类名宽匹配(:is 别名组),皮肤同时支持类挂 #modal-box 自身与内层。
   ============================================================ */

/* ---------- 遮罩与通用深卡 ---------- */
#modal,.overlay{
  position:fixed;inset:0;z-index:500;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:rgba(3,6,11,.66);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}
#modal-box{
  width:min(720px,94vw);max-height:88vh;overflow-y:auto;
  background:linear-gradient(172deg,#1a2338 0%,#121a2a 55%,#0e1522 100%);
  border:1px solid var(--line);border-radius:14px;
  box-shadow:0 24px 70px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.05);
  animation:modal-in .25s ease-out;
}
@keyframes modal-in{
  from{opacity:0;transform:translateY(16px) scale(.97)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
#modal-box :where(h2,h3){letter-spacing:.08em}
#modal-box > :where(h2,.m-head,.m-title){
  position:sticky;top:0;z-index:5;
  font-size:19px;
  padding:14px 22px;
  background:rgba(12,18,30,.92);
  border-bottom:1px solid var(--line);
  border-radius:14px 14px 0 0;
  backdrop-filter:blur(6px);
}
#modal-box :where(.m-body,.m-content,.modal-body){padding:18px 22px 22px}
#modal-box .m-actions{
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;
  padding:0 22px 20px;
}

/* ---------- 发布确认(v2) ---------- */
#modal-box.publish .m-title{
  border-top:3px solid var(--gold);
  background:linear-gradient(90deg,rgba(240,201,106,.14),rgba(12,18,30,.95) 60%);
}
#modal-box.publish .plan-list li{
  margin:4px 0 4px 1.2em;line-height:1.7;
}
#modal-box.publish .plan-list li::marker{color:var(--gold)}

/* ---------- 模块详情(v2) ---------- */
#modal-box.mod-info .m-title{color:var(--text)}

/* ============================================================
   项目会(商店,v1)
   ============================================================ */
#modal-box :is(.shop,.m-shop),
#modal-box:is(.shop,.m-shop){padding:4px}
#modal-box :is(.shop,.m-shop) :is(.cards,.shop-cards,.shop-row,.offers),
#modal-box:is(.shop,.m-shop) :is(.cards,.shop-cards,.shop-row,.offers){
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;
  padding:14px;
}
#modal-box :is(.shop,.m-shop) :is(.shop-card,.offer,.choice),
#modal-box:is(.shop,.m-shop) :is(.shop-card,.offer,.choice){
  position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:10px;
  min-height:230px;padding:14px 12px 16px;
  border:1px solid var(--line);border-radius:12px;
  background:rgba(14,21,34,.6);
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
#modal-box :is(.shop-card,.offer):not(.sold):not(.bought):hover{
  transform:translateY(-5px);
  border-color:rgba(240,201,106,.55);
  box-shadow:0 12px 26px rgba(0,0,0,.5),0 0 18px rgba(240,201,106,.12);
}
#modal-box :is(.shop-card,.offer).sold,
#modal-box :is(.shop-card,.offer).bought{
  opacity:.32;filter:grayscale(1);pointer-events:none;
}
#modal-box :is(.shop,.m-shop) :is(.price,.price-tag,.cost),
#modal-box:is(.shop,.m-shop) :is(.price,.price-tag,.cost){
  margin-top:auto;
  font-family:var(--mono),monospace;font-size:13px;font-weight:700;
  color:var(--gold);
  background:#241b07;
  border:1px solid rgba(240,201,106,.65);border-radius:20px;
  padding:3px 16px;letter-spacing:.05em;
}
#modal-box :is(.price,.price-tag,.cost).free,
#modal-box :is(.price,.price-tag,.cost).zero{
  color:var(--green);border-color:rgba(111,208,140,.6);background:#07200f;
}
#modal-box :is(.shop-card,.offer).cash,
#modal-box .cash-card{
  border-style:dashed;border-color:rgba(229,96,92,.55);
  background:linear-gradient(170deg,rgba(60,20,22,.35),rgba(20,10,14,.55));
}
#modal-box :is(.reroll,.btn-reroll){align-self:flex-end;margin:0 14px 14px}
#modal-box :is(.shop,.m-shop) :is(.foot,.shop-foot),
#modal-box:is(.shop,.m-shop) :is(.foot,.shop-foot){
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:0 14px 14px;
}

/* ============================================================
   舆论危机(v1)
   ============================================================ */
#modal-box :is(.crisis,.m-crisis),
#modal-box:is(.crisis,.m-crisis){animation:crisis-in .4s ease-out}
@keyframes crisis-in{
  0%{transform:translateX(0)}
  20%{transform:translateX(-7px)}
  40%{transform:translateX(6px)}
  60%{transform:translateX(-4px)}
  80%{transform:translateX(2px)}
  100%{transform:translateX(0)}
}
#modal-box :is(.crisis,.m-crisis) :where(h2,h3,.m-title),
#modal-box:is(.crisis,.m-crisis) :where(h2,h3,.m-title){
  color:var(--red);letter-spacing:.2em;
  border-top:4px solid var(--red);border-radius:10px 10px 0 0;
  background:linear-gradient(90deg,rgba(229,96,92,.22),rgba(12,18,30,.95) 65%);
}
#modal-box :is(.crisis,.m-crisis) :where(.body,.text,.crisis-text),
#modal-box:is(.crisis,.m-crisis) :where(.body,.text,.crisis-text){
  padding:16px 22px;line-height:1.9;color:var(--text);
}
#modal-box :is(.crisis,.m-crisis) :is(.choices,.opts,.btns,.crisis-choices),
#modal-box:is(.crisis,.m-crisis) :is(.choices,.opts,.btns,.crisis-choices){
  display:flex;flex-direction:column;gap:12px;
  max-width:360px;margin:6px auto 20px;
}
#modal-box :is(.crisis,.m-crisis) :is(.choices,.opts,.btns) > *,
#modal-box:is(.crisis,.m-crisis) :is(.choices,.opts,.btns) > *{width:100%}
#modal-box :is(.crisis,.m-crisis) :is(.choices,.opts,.btns) :is(.btn,button),
#modal-box:is(.crisis,.m-crisis) :is(.choices,.opts,.btns) :is(.btn,button){
  flex-wrap:wrap;text-align:center;line-height:1.7;
}

/* ============================================================
   数值面板(终端配置文件皮,v1)
   ============================================================ */
#modal-box :is(.num-panel,.m-num,.panel-num),
#modal-box:is(.num-panel,.m-num,.panel-num){
  position:relative;overflow:hidden;
  margin:14px;padding:16px 18px 20px;
  border:1px solid #1d3a26;border-radius:10px;
  background:#040a06;
  color:var(--green);
  font-family:var(--mono),monospace;
  font-size:13px;
}
#modal-box :is(.num-panel,.m-num,.panel-num)::before,
#modal-box:is(.num-panel,.m-num,.panel-num)::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.3) 0 1px,transparent 1px 3px);
}
#modal-box :is(.num-panel,.m-num,.panel-num)::after,
#modal-box:is(.num-panel,.m-num,.panel-num)::after{
  content:"_";position:absolute;right:12px;bottom:8px;z-index:2;
  color:var(--green);font-weight:700;
  animation:blink .6s steps(1) infinite;
}
@keyframes blink{50%{opacity:0}}
#modal-box :is(.num-panel,.m-num,.panel-num) *,
#modal-box:is(.num-panel,.m-num,.panel-num) *{font-family:inherit}
#modal-box :is(.num-panel,.m-num,.panel-num) :where(h2,h3,.m-title),
#modal-box:is(.num-panel,.m-num,.panel-num) :where(h2,h3,.m-title){
  position:static;border:0;background:none;border-radius:0;
  color:#6fae83;font-size:15px;letter-spacing:.1em;
  padding:0 0 10px;margin:0 0 10px;
  border-bottom:1px dashed rgba(111,208,140,.35);
}
#modal-box :is(.num-panel,.m-num,.panel-num) :is(.comment,.head-note,.file-head,small),
#modal-box:is(.num-panel,.m-num,.panel-num) :is(.comment,.head-note,.file-head,small){
  color:#4d5f52;font-size:11px;letter-spacing:.05em;
  display:block;margin-bottom:10px;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :where(table),
#modal-box:is(.num-panel,.m-num,.panel-num) :where(table){
  width:100%;border-collapse:collapse;position:relative;z-index:2;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :where(th),
#modal-box:is(.num-panel,.m-num,.panel-num) :where(th){
  color:#5d8a6c;font-size:11px;font-weight:400;text-align:left;letter-spacing:.15em;
  border-bottom:1px solid rgba(111,208,140,.3);padding:4px 10px;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :where(td),
#modal-box:is(.num-panel,.m-num,.panel-num) :where(td){
  padding:5px 10px;border-bottom:1px solid rgba(111,208,140,.12);
  text-shadow:0 0 6px rgba(111,208,140,.28);
  font-variant-numeric:tabular-nums;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :where(tr:hover) :where(td),
#modal-box:is(.num-panel,.m-num,.panel-num) :where(tr:hover) :where(td){
  background:rgba(111,208,140,.09);
}
#modal-box :is(.num-panel,.m-num,.panel-num) :is(.step,.step-btn,.btn-step,.adj),
#modal-box:is(.num-panel,.m-num,.panel-num) :is(.step,.step-btn,.btn-step,.adj){
  display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;margin:0 2px;
  border:1px solid rgba(111,208,140,.45);border-radius:4px;
  color:var(--green);font-size:13px;font-weight:700;line-height:1;
  background:transparent;transition:background .12s ease,color .12s ease;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :is(.step,.step-btn,.btn-step,.adj):hover,
#modal-box:is(.num-panel,.m-num,.panel-num) :is(.step,.step-btn,.btn-step,.adj):hover{
  background:var(--green);color:#04140a;text-shadow:none;
}
#modal-box :is(.num-panel,.m-num,.panel-num) :is(.changed,.edited,.mod),
#modal-box:is(.num-panel,.m-num,.panel-num) :is(.changed,.edited,.mod){
  color:var(--gold);text-shadow:0 0 8px rgba(240,201,106,.4);
}
#modal-box :is(.num-panel,.m-num,.panel-num) :is(.pts,.points,.points-left),
#modal-box:is(.num-panel,.m-num,.panel-num) :is(.pts,.points,.points-left){
  color:var(--gold);
}

/* ============================================================
   玩法工坊(蓝图风,v1)
   ============================================================ */
#modal-box :is(.rule-panel,.m-rule,.panel-rule),
#modal-box:is(.rule-panel,.m-rule,.panel-rule){
  position:relative;overflow:hidden;
  margin:14px;padding:18px;
  border:1px solid rgba(110,168,254,.5);border-radius:12px;
  background:linear-gradient(165deg,#12305e 0%,#0d2246 58%,#0b1d3c 100%);
  color:#d7e6ff;
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule)::before,
#modal-box:is(.rule-panel,.m-rule,.panel-rule)::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:
    repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 24px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 24px);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :where(h2,h3,.m-title),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :where(h2,h3,.m-title){
  position:static;border-radius:0;background:none;border:0;
  color:#eaf3ff;font-size:18px;letter-spacing:.25em;
  padding:0 0 10px;margin:0 0 6px;
  border-bottom:2px dashed rgba(255,255,255,.35);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item){
  position:relative;z-index:1;
  display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;
  margin:12px 0 12px 46px;padding:10px 14px;
  border:1px dashed rgba(255,255,255,.5);border-radius:8px;
  background:rgba(13,34,70,.55);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item) :is(p,span,small),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item) :is(p,span,small){
  display:inline-block;
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item) :is(.btn,button),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item) :is(.btn,button){
  margin-left:auto;
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item)::before,
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item)::before{
  content:"";position:absolute;left:-40px;top:50%;width:34px;height:0;
  border-top:1px dashed rgba(255,255,255,.55);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item)::after,
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item)::after{
  content:"";position:absolute;left:-46px;top:50%;transform:translateY(-50%);
  width:6px;height:6px;border-radius:50%;
  background:rgba(255,255,255,.75);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item).on,
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item).active,
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.rule,.rule-item,.item).on{
  border-style:solid;border-color:#9cc4ff;
  background:rgba(110,168,254,.14);
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :is(.cost,.pts),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :is(.cost,.pts){
  font-family:var(--mono),monospace;color:#ffd98a;font-size:12px;
}
#modal-box :is(.rule-panel,.m-rule,.panel-rule) :where(.btn),
#modal-box:is(.rule-panel,.m-rule,.panel-rule) :where(.btn){
  border-color:rgba(255,255,255,.45);color:#eaf3ff;background:rgba(255,255,255,.06);
}

/* ============================================================
   关卡编辑器(路线图,v1)
   ============================================================ */
#modal-box :is(.lv-panel,.m-lv,.panel-lv),
#modal-box:is(.lv-panel,.m-lv,.panel-lv){padding:18px 20px 22px}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.roadmap,.road,.nodes),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.roadmap,.road,.nodes){
  position:relative;
  display:flex;justify-content:space-around;gap:8px;
  margin:22px 8px 10px;padding:0;
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.roadmap,.road,.nodes)::before,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.roadmap,.road,.nodes)::before{
  content:"";position:absolute;top:26px;left:11%;right:11%;
  border-top:2px dashed var(--line);
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node){
  position:relative;z-index:1;
  display:flex;flex-direction:column;align-items:center;gap:8px;
  width:128px;text-align:center;
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node)::before,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node)::before{
  content:"";order:-1;
  width:52px;height:52px;border-radius:50%;
  background:var(--panel);
  border:2px solid var(--line);
  box-shadow:0 4px 10px rgba(0,0,0,.4);
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).done::before,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).done::before{
  border-color:var(--green);background:#0d2417;
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).cur::before,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).cur::before{
  border-color:var(--gold);
  animation:node-pulse .6s ease-in-out infinite alternate;
}
@keyframes node-pulse{
  from{box-shadow:0 0 8px rgba(240,201,106,.3)}
  to{box-shadow:0 0 20px rgba(240,201,106,.65)}
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node) :is(.q,.label),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node) :is(.q,.label){
  font-family:var(--mono),monospace;font-size:15px;font-weight:700;color:var(--text);
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node) :is(.target,.num),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node) :is(.target,.num){
  font-family:var(--mono),monospace;font-size:13px;color:var(--gold);
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).future,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node).future{opacity:.55}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.preview,.event-preview),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.preview,.event-preview){
  border:1px dashed rgba(110,168,254,.4);border-radius:8px;
  padding:8px 12px;margin:8px 0;
  font-size:12px;color:var(--dim);
  line-height:1.9;
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.loan,.btn-loan),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.loan,.btn-loan){
  border:1px solid var(--red);color:var(--red);border-radius:8px;
  background:transparent;padding:9px 22px;font-weight:600;
  transition:background .15s ease,transform .15s ease;
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.loan,.btn-loan):hover,
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.loan,.btn-loan):hover{
  background:rgba(229,96,92,.12);transform:translateY(-1px);
}
#modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.interest,.risk),
#modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.interest,.risk){
  color:var(--red);font-size:11px;opacity:.85;
}

/* ============================================================
   转正(三职业大卡,v1)
   ============================================================ */
#modal-box :is(.career-panel,.m-career),
#modal-box:is(.career-panel,.m-career){padding:16px 18px 22px}
#modal-box :is(.career-panel,.m-career) :is(.cards,.career-cards),
#modal-box:is(.career-panel,.m-career) :is(.cards,.career-cards){
  display:flex;gap:16px;margin-top:6px;
}
#modal-box :is(.career-card,.job-card){
  --cc:var(--blue);
  position:relative;flex:1;min-width:0;
  padding:26px 16px 18px;text-align:center;
  border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(180deg,rgba(22,30,46,.92),rgba(14,20,32,.96));
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
#modal-box :is(.career-card,.job-card)::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:var(--cc);border-radius:14px 14px 0 0;
}
#modal-box :is(.career-card,.job-card).num,
#modal-box :is(.career-card,.job-card)[data-career="num"]{--cc:var(--green)}
#modal-box :is(.career-card,.job-card).play,
#modal-box :is(.career-card,.job-card)[data-career="play"]{--cc:var(--blue)}
#modal-box :is(.career-card,.job-card).level,
#modal-box :is(.career-card,.job-card)[data-career="level"]{--cc:var(--gold)}
#modal-box :is(.career-card,.job-card):hover{
  transform:translateY(-6px);
  border-color:var(--cc);
  box-shadow:0 14px 30px rgba(0,0,0,.5),0 0 18px rgba(240,201,106,.1);
}
#modal-box :is(.career-card,.job-card) :where(h3,.name){
  font-size:18px;color:var(--text);letter-spacing:.15em;margin-bottom:10px;
}
#modal-box :is(.career-card,.job-card) :where(p,.intro){
  color:var(--dim);font-size:12.5px;line-height:1.8;text-align:left;
}
#modal-box :is(.career-card,.job-card) :where(.btn,.pick){margin-top:14px;width:100%}

/* ============================================================
   结局(v1)
   ============================================================ */
#modal:has(.leave){padding:0}
#modal-box:has(.leave),
#modal-box.leave{
  width:100%;height:100%;max-height:100vh;
  background:#000;border-color:#000;border-radius:0;
  animation:leave-fade .6s ease-out;
}
#modal-box :is(.ending,.m-ending).fired,
#modal-box .ending-fired{
  position:relative;
  max-width:560px;margin:26px auto;
  padding:32px 36px 48px;
  background:linear-gradient(180deg,#fbf7ee,#f0e9d8);
  color:#2f2a20;
  font-family:Georgia,"Times New Roman","SimSun","Songti SC",serif;
  border-radius:3px;
  transform:rotate(-1.2deg);
  box-shadow:0 16px 44px rgba(0,0,0,.7),0 0 60px rgba(247,243,232,.12);
  animation:paper-drop .4s cubic-bezier(.2,.9,.3,1.1);
}
@keyframes paper-drop{
  from{opacity:0;transform:rotate(-6deg) translateY(-40px)}
  to{opacity:1;transform:rotate(-1.2deg) translateY(0)}
}
#modal-box :is(.ending,.m-ending).fired::after,
#modal-box .ending-fired::after{
  content:"人事部";
  position:absolute;right:24px;bottom:16px;
  display:flex;align-items:center;justify-content:center;
  width:88px;height:88px;border-radius:50%;
  border:3px double rgba(198,36,36,.85);
  color:rgba(198,36,36,.88);
  font-size:16px;letter-spacing:3px;font-weight:700;
  transform:rotate(-18deg);
  text-shadow:0 0 2px rgba(198,36,36,.4);
  pointer-events:none;
}
#modal-box :is(.ending,.m-ending).fired :where(h2,h3),
#modal-box .ending-fired :where(h2,h3){
  position:static;border:0;background:none;border-radius:0;
  color:#2f2a20;font-family:inherit;letter-spacing:.4em;
  border-bottom:1px solid #b9ad8f;padding-bottom:10px;margin-bottom:14px;
}
#modal-box :is(.ending,.m-ending).top,
#modal-box .ending-top{padding:18px 22px 26px;max-width:640px;margin:0 auto}
#modal-box :is(.timeline,.tl){
  position:relative;
  padding-left:28px;margin:14px 0;
}
#modal-box :is(.timeline,.tl)::before{
  content:"";position:absolute;left:8px;top:6px;bottom:6px;width:2px;
  background:linear-gradient(180deg,var(--gold),rgba(240,201,106,.05));
}
#modal-box :is(.tl-item,.tl-entry){
  position:relative;margin:0 0 16px;
  font-size:13px;line-height:1.7;
}
#modal-box :is(.tl-item,.tl-entry)::before{
  content:"";position:absolute;left:-25px;top:5px;
  width:9px;height:9px;border-radius:50%;
  background:var(--bg);border:2px solid var(--gold);
}
#modal-box :is(.floor,.post,.forum-post){
  border:1px solid var(--line);border-radius:8px;
  margin:10px 0;overflow:hidden;
  background:rgba(15,22,36,.6);
}
#modal-box :is(.floor,.post) :is(.head,.meta,.floor-head){
  padding:6px 12px;
  font-family:var(--mono),monospace;font-size:11px;color:var(--dim);
  background:rgba(11,17,28,.8);
  border-bottom:1px solid var(--line);
}
#modal-box :is(.floor,.post) :is(.body,.content){
  padding:10px 14px;font-size:13px;line-height:1.8;
}
#modal-box :is(blockquote,.quote,.ref){
  margin:8px 0;padding:8px 12px;
  background:rgba(125,138,165,.1);
  border-left:3px solid var(--dim);
  border-radius:0 6px 6px 0;
  color:var(--dim);font-size:12.5px;line-height:1.7;
}
#modal-box :is(.ending,.m-ending).leave,
#modal-box .ending-leave{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:400px;padding:48px 40px;
  background:#000;
  animation:leave-fade .6s ease-out;
}
@keyframes leave-fade{
  from{opacity:0}
  to{opacity:1}
}
#modal-box :is(.ending,.m-ending).leave :where(p,.line),
#modal-box .ending-leave :where(p,.line){
  color:#fff;font-size:20px;letter-spacing:.3em;line-height:2.2;text-align:center;
}

/* ============================================================
   宣判卡(v1)
   ============================================================ */
#modal-box :is(.verdict,.judge){text-align:center;padding:20px 10px 26px}
#modal-box :is(.verdict,.judge) :is(.big,.pct,.num){
  display:block;
  font-family:var(--mono),monospace;
  font-size:clamp(52px,8vw,72px);font-weight:700;line-height:1.2;
  color:var(--red);
  text-shadow:0 0 34px rgba(229,96,92,.45),0 4px 0 rgba(0,0,0,.5);
}
#modal-box :is(.verdict,.judge) :is(.label,.k){
  display:block;color:var(--dim);letter-spacing:.5em;font-size:14px;margin-bottom:8px;
}

/* ============================================================
   成就解锁 toast(金色,v1)
   ============================================================ */
#toast.achv,
#toast.gold,
#toast.achievement{
  border-color:var(--gold);border-left-color:var(--gold);
  background:linear-gradient(180deg,#2a2110,#1a150a);
  color:var(--gold);
  box-shadow:var(--shadow),0 0 24px rgba(240,201,106,.35);
  font-weight:700;letter-spacing:.08em;
}

/* ---------- 1024 兜底 ---------- */
@media (max-width:1120px){
  #modal-box :is(.shop,.m-shop) :is(.cards,.shop-cards,.shop-row,.offers),
  #modal-box:is(.shop,.m-shop) :is(.cards,.shop-cards,.shop-row,.offers){gap:8px;padding:10px}
  #modal-box :is(.career-panel,.m-career) :is(.cards,.career-cards),
  #modal-box:is(.career-panel,.m-career) :is(.cards,.career-cards){flex-direction:column;gap:10px}
  #modal-box :is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node),
  #modal-box:is(.lv-panel,.m-lv,.panel-lv) :is(.node,.q-node){width:100px}
}
