:root{
  --bg:#0e0f13; --panel:#171a21; --panel2:#1e222c; --line:#2a2f3c;
  --gold:#DDB55E; --gold-dim:#9c8444; --text:#e8e6df; --muted:#9aa0ae;
  --red:#e5534b; --green:#3fb96f; --radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:15px;line-height:1.55;padding-bottom:76px}
.hidden{display:none!important}
.banner{background:#3a2f10;color:var(--gold);text-align:center;padding:8px 12px;font-size:13px;border-bottom:1px solid var(--gold-dim)}
button{font:inherit;cursor:pointer;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:9px 14px}
button.primary{background:var(--gold);color:#191204;border-color:var(--gold);font-weight:600;width:100%;margin-top:10px}
button.ghost{background:transparent;padding:5px 10px;font-size:13px;color:var(--muted)}
button:active{opacity:.8}
input,select,textarea{background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--text);padding:10px 12px;font:inherit;width:100%}
textarea{min-height:64px;resize:vertical}
label{display:block;color:var(--muted);font-size:13px;margin:12px 0 5px}
.msg{min-height:20px;color:var(--gold);font-size:13px;margin-top:8px}
.warn{background:#3d1414;border:1px solid var(--red);color:#ffb4ae;border-radius:10px;padding:10px 12px;font-size:13px;margin:12px 0}
.fine{color:var(--muted);font-size:12px;margin-top:14px}
.view{max-width:680px;margin:0 auto;padding:16px}
.login-card{max-width:420px;margin:6vh auto 0;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:26px 22px;text-align:left}
.login-logo{width:64px;height:64px;border-radius:14px}
.login-card h1{font-size:20px;margin:14px 0 4px}
.login-card .sub{color:var(--gold);font-size:13px}
.login-card .desc{color:var(--muted);font-size:13px;margin-top:10px}
.staging-code{background:#3a2f10;border:1px dashed var(--gold-dim);border-radius:10px;padding:10px 12px;margin-top:12px;font-size:14px;color:var(--gold)}
.topbar{position:sticky;top:0;z-index:5;background:rgba(14,15,19,.94);backdrop-filter:blur(6px);display:flex;justify-content:space-between;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;font-weight:600}
.brand img{width:28px;height:28px;border-radius:7px}
.top-actions{display:flex;align-items:center;gap:6px}
.top-actions #who{color:var(--muted);font-size:13px;margin-right:2px}
.ruin{background:#3d1414;border:1px solid var(--red);color:#ffb4ae;border-radius:10px;padding:10px 12px;margin:12px 0;font-size:13px}
.tab{padding:14px 2px 20px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px}
.card h2{font-size:16px;margin-bottom:8px}
.card h3{font-size:14px;color:var(--gold);margin:12px 0 6px}
.muted{color:var(--muted);font-size:13px}
.gold{color:var(--gold)}
.big-index{font-size:56px;font-weight:700;color:var(--gold);line-height:1}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.stat{background:var(--panel2);border-radius:10px;padding:10px;text-align:center}
.stat .n{font-size:22px;font-weight:700}
.stat .t{color:var(--muted);font-size:12px}
.acc-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.acc-row:last-child{border-bottom:none}
.acc-row .name{width:38px;color:var(--gold);font-weight:600;flex-shrink:0}
.acc-row input[type=text]{flex:1}
.chk{width:26px;height:26px;accent-color:var(--gold);flex-shrink:0}
.energy-pick{display:flex;gap:5px;align-items:center}
.energy-pick button{width:32px;height:32px;padding:0;border-radius:50%;font-size:13px}
.energy-pick button.on{background:var(--gold);color:#191204;border-color:var(--gold);font-weight:700}
.heat{display:grid;grid-template-columns:repeat(28,1fr);gap:2px;margin-top:8px}
.heat i{aspect-ratio:1;border-radius:2px;background:#22262f;display:block}
.heat i.d1{background:#4a3f1c}.heat i.d2{background:#6d5c26}.heat i.d3{background:#a8893a}.heat i.d4{background:var(--gold);outline:1px solid #fff2c9}
.ach-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ach{background:var(--panel2);border-radius:10px;padding:10px;font-size:13px;opacity:.45}
.ach.unlocked{opacity:1;border:1px solid var(--gold-dim)}
.ach .an{font-weight:600}
.ach .ap{color:var(--muted);font-size:12px}
.bar-row{display:flex;align-items:center;gap:8px;font-size:13px;margin:4px 0}
.bar-row .bn{width:36px;color:var(--muted)}
.bar-row .bar{flex:1;height:10px;background:#22262f;border-radius:5px;overflow:hidden}
.bar-row .bar i{display:block;height:100%;background:var(--gold)}
table.hist{width:100%;border-collapse:collapse;font-size:13px}
table.hist td,table.hist th{border-bottom:1px solid var(--line);padding:6px 4px;text-align:left}
.day-detail{background:var(--panel2);border-radius:10px;padding:12px;margin-top:10px;font-size:13px;white-space:pre-wrap}
.seg{display:flex;gap:6px;margin:8px 0}
.seg button.on{background:var(--gold);color:#191204;border-color:var(--gold);font-weight:600}
.toast{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);background:#262b36;border:1px solid var(--gold-dim);color:var(--text);padding:10px 16px;border-radius:10px;z-index:50;max-width:88vw;text-align:center;font-size:14px}
.bottomnav{position:fixed;left:0;right:0;bottom:0;background:rgba(18,20,26,.97);border-top:1px solid var(--line);display:flex;z-index:10;padding-bottom:env(safe-area-inset-bottom)}
.bottomnav button{flex:1;background:none;border:none;border-radius:0;color:var(--muted);padding:12px 0;font-size:13px}
.bottomnav button.active{color:var(--gold);font-weight:700}
fieldset{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0}
legend{color:var(--gold);font-size:13px;padding:0 6px}
select.gp{width:76px;display:inline-block}
.inline{display:flex;gap:8px;align-items:center}
.spark{width:100%;height:90px}
.checkline{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--muted);margin-top:6px}
.checkline input{width:18px;height:18px;accent-color:var(--gold);margin-top:2px}
