:root{
  --bg:#241f3b; --panel:#2e2850; --panel2:#1b1730; --border:#0f0c1f;
  --ink:#f0eaff; --soft:#9d8fdc; --green:#7df9aa; --greenbg:#14372a;
  --gold:#ffd93d; --goldink:#1b1730; --pink:#ff6b9d; --pinkbg:#3a1626;
  --blue:#6c8cff; --empty:#3b3463;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:ui-monospace,Menlo,"PingFang SC",monospace;margin:0;-webkit-font-smoothing:none}
.wrap{max-width:520px;margin:0 auto;padding:14px}
.quote{background:var(--gold);color:var(--goldink);border:3px solid var(--border);box-shadow:4px 4px 0 #000;padding:14px;text-align:center;font-weight:800;margin-bottom:14px}
.quote .s{font-size:11px;opacity:.8;margin-top:4px;letter-spacing:2px}
.panel{background:var(--panel);border:3px solid var(--border);box-shadow:4px 4px 0 #000;padding:14px;margin-bottom:14px}
.big{font-size:44px;font-weight:800;color:var(--green)}
.big.part{color:var(--gold)}
.row{display:flex;align-items:baseline;gap:8px}
.mut{color:var(--soft);font-size:12px;font-weight:700}
.bar{display:flex;gap:3px;margin:10px 0}
.seg{flex:1;height:16px;border:1.5px solid var(--border)}
.seg.on{background:var(--green)}
.seg.off{background:var(--empty)}
.msg{font-size:13px;font-weight:700;min-height:18px}
.err{background:var(--pinkbg);color:var(--pink);border:2px solid var(--pink);padding:8px;font-weight:800;margin-bottom:14px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btn{border:3px solid var(--border);box-shadow:3px 3px 0 #000;padding:10px;font-weight:800;font-family:inherit;cursor:pointer;background:var(--empty);color:var(--ink);font-size:13px}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #000}
.btn:disabled{opacity:.4}
.btn.deduct{background:var(--pinkbg);color:var(--pink)}
.btn.add{background:var(--greenbg);color:var(--green)}
.btn.gold{background:var(--gold);color:var(--goldink)}
.btn.blue{background:var(--blue);color:#fff}
.btn.ghost{background:transparent;color:var(--soft);border-color:var(--soft);box-shadow:none}
.btn small{display:block;font-size:10px;opacity:.8;font-weight:600}
.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal .w{color:var(--soft);font-size:10px;text-align:center;font-weight:800}
.cell{aspect-ratio:1;border:2px solid var(--border);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;position:relative;cursor:pointer}
.cell.full{background:var(--green);color:var(--goldink)}
.cell.part{background:var(--gold);color:var(--goldink)}
.cell.none{background:var(--panel2);color:var(--soft)}
.cell.today{outline:3px solid var(--pink)}
.cell.sel{outline:3px solid var(--ink)}
.cell .tr{position:absolute;top:-2px;right:0;font-size:9px}
.cell .dt{position:absolute;bottom:1px;left:50%;transform:translateX(-50%);width:8px;height:2px;background:#000}
.legend{display:flex;gap:10px;flex-wrap:wrap;font-size:10px;color:var(--soft);margin-top:8px;font-weight:700}
.legend i{display:inline-block;width:10px;height:10px;border:1px solid var(--border);vertical-align:middle;margin-right:3px}
.rec{font-size:12px;font-weight:700;padding:4px 0;border-bottom:1px dashed var(--empty);display:flex;justify-content:space-between}
.rec .p{color:var(--green)} .rec .m{color:var(--pink)} .rec .t{color:var(--gold)}
label.f{display:block;font-size:11px;color:var(--soft);font-weight:800;margin:8px 0 3px}
input,select{background:var(--panel2);color:var(--ink);border:2px solid var(--border);padding:8px;font-family:inherit;font-size:13px;width:100%}
.sec{font-size:12px;color:var(--gold);font-weight:800;margin:14px 0 6px;letter-spacing:1px}
.item{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.item input{flex:1}
.tab{display:flex;gap:8px;margin-bottom:14px}
.tab .btn{flex:1}
.tab .btn.act{background:var(--gold);color:var(--goldink)}
.hidden{display:none}
.gate{max-width:340px;margin:15vh auto}
.rule{font-size:12px;line-height:1.7}
.rule b{color:var(--gold)}
