/* ===== 同级の日々 · Emergent Days ===== */
:root{
  --bg:#0e1014; --panel:#161a21; --panel2:#1d222b; --line:#2b323d;
  --txt:#dfe4ec; --dim:#8b95a5; --accent:#ffb86b; --accent2:#6bc7ff;
  --good:#5fd68a; --bad:#ff6b7a; --love:#ff8fb0;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--txt);
  font-family:"Hiragino Sans GB","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;font-size:14px}
#app{display:flex;flex-direction:column;height:100%}

/* ---------- 顶栏 ---------- */
#top{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--panel);
  border-bottom:1px solid var(--line);flex-shrink:0;flex-wrap:wrap}
#top .logo{font-weight:700;letter-spacing:1px;color:var(--accent);font-size:15px;white-space:nowrap}
#top .logo small{color:var(--dim);font-weight:400;font-size:11px;margin-left:6px}
.chip{background:var(--panel2);border:1px solid var(--line);border-radius:999px;
  padding:3px 11px;font-size:12px;color:var(--dim);white-space:nowrap}
.chip b{color:var(--txt);font-weight:600}
.spacer{flex:1}
button{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:7px;padding:6px 12px;font-size:13px;cursor:pointer;font-family:inherit;
  transition:.14s;white-space:nowrap}
button:hover{background:#262d38;border-color:#3a4350}
button:active{transform:translateY(1px)}
button.primary{background:linear-gradient(180deg,#c98a3f,#a86e2c);border-color:#d69b4e;color:#fff;font-weight:600}
button.primary:hover{filter:brightness(1.12)}
button.ghost{background:transparent}
select,input{background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:inherit;outline:none}
select:focus,input:focus{border-color:var(--accent)}

/* ---------- 主体 ---------- */
#main{flex:1;display:flex;min-height:0;position:relative}
#stage{flex:1;position:relative;min-width:0;background:#0a0c10;overflow:hidden}
#cv{display:block;width:100%;height:100%}

/* ---------- 侧栏 ---------- */
#side{width:262px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0}
.sidesec{border-bottom:1px solid var(--line);padding:10px 12px}
.sidetitle{font-size:11px;color:var(--dim);letter-spacing:2px;margin-bottom:8px;
  text-transform:uppercase;font-weight:600}
#radar{max-height:170px;overflow-y:auto;font-size:12.5px;line-height:1.7}
.where{display:flex;justify-content:space-between;gap:8px;padding:3px 0;
  border-bottom:1px dashed #232932}
.where span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.where span:last-child{color:var(--accent2);flex-shrink:0;font-size:11.5px}
#castList{flex:1;overflow-y:auto;padding:8px 10px}
.cast{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;
  cursor:pointer;transition:.12s;border:1px solid transparent}
.cast:hover{background:var(--panel2)}
.ava{width:32px;height:32px;border-radius:6px;flex-shrink:0;position:relative;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;
  color:#fff;overflow:hidden;background:#2a3140}
.ava img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.info{flex:1;min-width:0}
.nm{font-size:13px;font-weight:600;display:flex;align-items:center;gap:5px}
.tg{font-size:10px;padding:1px 5px;border-radius:4px;font-weight:600;flex-shrink:0}
.bar{height:4px;background:#252b34;border-radius:2px;margin-top:4px;overflow:hidden}
.bar i{display:block;height:100%;border-radius:2px;transition:width .4s}
.sub{font-size:10px;color:var(--dim);margin-top:2px}

/* ---------- 对话场景（全屏背景 + 立绘 + 底部对话框） ---------- */
#talk{position:absolute;left:0;right:0;bottom:0;min-height:36%;
  background:linear-gradient(180deg,rgba(10,12,16,0),rgba(10,12,16,.86) 16%,rgba(10,12,16,.97) 34%);
  padding:44px 6% 20px;display:none;z-index:10}
#talk.show{display:block}
#talkhead{display:flex;align-items:center;gap:11px;margin-bottom:10px}
#face{width:46px;height:46px;border-radius:50%;background:#232a36;flex-shrink:0;
  overflow:hidden;border:2px solid rgba(255,255,255,.25)}
#face img{width:100%;height:100%;object-fit:cover}
#who{font-size:17px;color:#ffe3a6;font-weight:700;letter-spacing:1px;
  text-shadow:0 2px 6px rgba(0,0,0,.8)}
#who small{display:block;color:#aab4c4;font-weight:400;margin-top:2px;font-size:11.5px}
#line{font-size:16px;line-height:1.9;min-height:58px;max-width:960px;
  text-shadow:0 2px 8px rgba(0,0,0,.9);color:#eef2f8}
#opts{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px;margin-top:12px}
.opt{background:rgba(22,28,38,.82);backdrop-filter:blur(4px);text-align:left;
  padding:9px 15px;font-size:13.5px;line-height:1.5}
.opt .tag{font-size:10px;float:right;margin-left:10px;border:1px solid var(--line);
  padding:1px 6px;border-radius:4px;color:var(--dim)}
.opt:hover{border-color:var(--accent);background:rgba(34,44,60,.92)}
.opt.unlocked{border-color:rgba(255,215,107,.55);
  background:linear-gradient(180deg,rgba(70,56,26,.85),rgba(40,34,20,.85))}
.opt.unlocked:hover{border-color:#ffd76b;background:linear-gradient(180deg,rgba(92,72,30,.95),rgba(52,42,22,.95))}
.opt.unlocked .tag{border-color:rgba(255,215,107,.45)}
#thint{position:absolute;right:4%;bottom:12px;color:var(--accent);font-size:15px;
  animation:thblink 1.1s infinite;pointer-events:none}
@keyframes thblink{50%{opacity:.15}}
#talk.view #line{font-style:italic;color:#d5deea}
#talk.view #who{color:var(--accent2)}

/* ---------- 提示 / 转场 ---------- */
#toast{position:absolute;top:14px;left:50%;transform:translateX(-50%);display:flex;
  flex-direction:column;gap:6px;align-items:center;pointer-events:none;z-index:20;width:max-content}
.tst{background:rgba(22,26,33,.94);border:1px solid var(--line);border-radius:8px;
  padding:7px 15px;font-size:13px;animation:tin .3s ease-out;white-space:nowrap}
.tst.win{border-color:var(--good);color:var(--good)}
.tst.lose{border-color:var(--bad);color:var(--bad)}
.tst.love{border-color:var(--love);color:var(--love)}
@keyframes tin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

#transit{position:absolute;inset:0;background:#0a0c10;opacity:0;pointer-events:none;
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;
  transition:opacity .45s;z-index:25}
#transit.on{opacity:1}
#transit .big{font-size:30px;font-weight:700;letter-spacing:9px;color:var(--accent)}
#transit .sm{font-size:13px;color:var(--dim);letter-spacing:3px}

#help{position:absolute;left:12px;bottom:12px;font-size:11.5px;color:var(--dim);
  background:rgba(14,16,20,.8);border:1px solid var(--line);border-radius:8px;padding:7px 11px;
  line-height:1.7;pointer-events:none}

/* ---------- 弹层 ---------- */
.modal{position:absolute;inset:0;background:rgba(8,10,14,.92);display:none;
  align-items:center;justify-content:center;z-index:50;padding:20px;overflow:auto}
.modal.show{display:flex}
.box{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:22px 24px;max-width:680px;width:100%}
.box h2{font-size:19px;margin-bottom:6px;color:var(--accent)}
.box h3{font-size:14px;margin:14px 0 7px;color:var(--txt)}
.box .lead{color:var(--dim);font-size:13px;line-height:1.7;margin-bottom:14px}
.rules{background:var(--panel2);border:1px solid var(--line);border-radius:9px;
  padding:12px 14px;font-size:12.5px;line-height:1.8;color:#b9c2cf;max-height:250px;overflow:auto}
.rules b{color:var(--accent)}
.rowbtn{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px;
  line-height:1.7;margin:10px 0}
.kv div:nth-child(odd){color:var(--dim)}

/* 规则包选择卡 */
.packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:12px 0}
.pk{border:1px solid var(--line);border-radius:11px;padding:12px 13px;cursor:pointer;
  background:var(--panel2);transition:.15s}
.pk:hover{border-color:#4a5563;transform:translateY(-2px)}
.pk.on{border-color:var(--accent);background:#262220}
.pk .pe{font-size:20px}
.pk .pn{font-weight:700;font-size:14px;margin:5px 0 3px}
.pk .pd{font-size:11.5px;color:var(--dim);line-height:1.6}
.pk .pm{font-size:10.5px;color:var(--accent2);margin-top:6px}

.endcard{border:1px solid var(--line);border-radius:10px;padding:13px 15px;margin:10px 0;
  background:var(--panel2)}
.endcard .h{font-weight:700;color:var(--love);margin-bottom:6px;font-size:15px}
.endcard p{font-size:13px;line-height:1.8;color:#c6cfdb}
.diagbar{display:flex;align-items:center;gap:8px;margin:5px 0}
.diagbar span:first-child{width:34px;font-size:12px}
.diagbar .track{flex:1;height:7px;background:#252b34;border-radius:4px;overflow:hidden}
.diagbar .track i{display:block;height:100%}

/* 批量生产 */
.brow{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin:9px 0}
.brow label{font-size:12.5px;color:var(--dim);min-width:64px}
#batchOut{margin-top:12px;max-height:270px;overflow-y:auto;border:1px solid var(--line);
  border-radius:9px;background:var(--panel2)}
.bitem{padding:9px 12px;border-bottom:1px solid #232932;font-size:12.5px;line-height:1.6}
.bitem:last-child{border-bottom:none}
.bitem .bh{display:flex;justify-content:space-between;gap:10px;align-items:center}
.bitem code{background:#11151c;padding:1px 6px;border-radius:4px;color:var(--accent2);font-size:11.5px}
.bitem .who{color:var(--dim);font-size:11.5px;margin-top:3px}
.bitem button{padding:3px 9px;font-size:11.5px}

/* 存档列表 */
.slist{max-height:250px;overflow-y:auto;border:1px solid var(--line);border-radius:9px;
  background:var(--panel2)}
.sitem{padding:9px 12px;border-bottom:1px solid #232932;display:flex;
  justify-content:space-between;align-items:center;gap:10px;font-size:12.5px}
.sitem:last-child{border-bottom:none}
.empty{padding:20px;text-align:center;color:var(--dim);font-size:12.5px}

::-webkit-scrollbar{width:7px;height:7px}
::-webkit-scrollbar-thumb{background:#2f3742;border-radius:4px}
::-webkit-scrollbar-track{background:transparent}
@media (max-width:900px){#side{width:200px}.box{padding:16px}}
