:root{--bg:#F4F6F5;--card:#fff;--ink:#1B2430;--muted:#5C6670;--line:#D9DFDD;--lagoon:#0F5C5A;--deep:#0A4241;--soft:#D6E9E7;--brass:#C9962B;--brass-soft:#F4E8CC;--brick:#B3392B;--brick-soft:#F5DAD6;--leaf:#2F7D4F;--leaf-soft:#D9EBDF}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
h1,h2,h3{font-family:Charter,Georgia,"Iowan Old Style",serif;letter-spacing:-.01em;margin:0;font-weight:600}
a{color:inherit}button{font:inherit}
.demo-banner{background:var(--brass-soft);color:#6B4E0F;font-size:13px;padding:8px 16px;text-align:center;border-bottom:1px solid #E8D6A6}
.demo-banner a{font-weight:600}
.app{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 36px)}
@media(max-width:820px){.app{grid-template-columns:1fr}}
.side{background:var(--deep);color:#fff;padding:22px 18px}.side .k{font-size:11px;opacity:.7}.side h1{font-size:20px;line-height:1.2;margin-bottom:22px}
.side nav{display:flex;flex-direction:column;gap:3px}@media(max-width:820px){.side nav{flex-direction:row;flex-wrap:wrap}}
.side nav button{text-align:left;border:0;background:transparent;color:rgba(255,255,255,.75);padding:8px 12px;border-radius:8px;cursor:pointer;font-size:14px}.side nav button.on{background:rgba(255,255,255,.15);color:#fff}.side nav button:hover{color:#fff}
.side .foot{margin-top:28px;font-size:12px;opacity:.7;line-height:1.5}.side .foot a{display:block;margin-top:8px;color:#A8D8D3}
.main{padding:22px 28px;max-width:1120px;width:100%}
.title{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.title h2{font-size:28px}.title p{margin:4px 0 0;color:var(--muted);font-size:14px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.panel h3{font-size:17px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.grid{display:grid;gap:12px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g13{grid-template-columns:minmax(0,1fr) 3fr}.g31{grid-template-columns:minmax(0,3fr) minmax(280px,1fr)}
@media(max-width:820px){.g2,.g3,.g4,.g13,.g31{grid-template-columns:1fr}}@media(max-width:1000px){.g4{grid-template-columns:1fr 1fr}}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.stat .l{font-size:12px;color:var(--muted)}.stat .v{font-family:Charter,Georgia,serif;font-size:24px;margin-top:2px}
.big{font-family:Charter,Georgia,serif;font-size:56px;line-height:1}
.warn{color:var(--brass)}.bad{color:var(--brick)}.good{color:var(--leaf)}
.tag{display:inline-block;padding:2px 8px;border-radius:5px;font-size:12px;font-weight:600;background:var(--bg);color:var(--muted)}
.tag.good{background:var(--leaf-soft);color:var(--leaf)}.tag.warn{background:var(--brass-soft);color:var(--brass)}.tag.bad{background:var(--brick-soft);color:var(--brick)}.tag.info{background:var(--soft);color:var(--lagoon)}
.btn{display:inline-flex;align-items:center;gap:6px;border-radius:7px;padding:6px 12px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px;font-weight:500}.btn:hover{background:var(--bg)}.btn.p{background:var(--lagoon);color:#fff;border-color:var(--lagoon)}.btn.p:hover{background:var(--deep)}.btn.s{padding:3px 9px;font-size:12px}
.input,select.input,textarea.input{width:100%;border:1px solid var(--line);border-radius:7px;padding:7px 10px;font:inherit;font-size:14px;background:#fff}
table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);padding:6px 8px}td{padding:7px 8px;border-bottom:1px solid #EDF0EF;vertical-align:middle}tr.click{cursor:pointer}tr.click:hover,tr.sel{background:var(--soft)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}td>span:first-child:has(> .tag){white-space:nowrap}.nw{white-space:nowrap}.muted{color:var(--muted)}.small{font-size:12px}
.chart{width:100%;height:auto;display:block}
.toast{position:fixed;bottom:20px;right:20px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:8px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:20}
.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media(max-width:820px){.kanban{grid-template-columns:1fr}}
.card{border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:8px;font-size:14px}
.rooms{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}@media(max-width:820px){.rooms{grid-template-columns:repeat(5,1fr)}}.rooms div{border-radius:6px;text-align:center;padding:7px 0;font-size:13px;font-weight:600}
.empty{text-align:center;color:var(--muted);padding:22px;font-size:14px}
.explain{background:var(--bg);border-radius:8px;padding:10px 12px;font-size:13px;margin-top:10px}.explain b{color:var(--deep)}
.hint{font-size:12px;color:var(--muted);margin-top:8px}
dl.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:14px}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}
.bar{height:8px;background:var(--brick-soft);border-radius:4px;display:inline-block;vertical-align:middle}
.list>div{padding:8px 0;border-bottom:1px solid #EDF0EF}
.form{display:flex;flex-direction:column;gap:8px}.form label{font-size:13px;color:var(--muted)}
