:root{--ink:#1c2735;--ink-soft:#45536a;--muted:#8494a7;--paper:#f4f1ec;--surface:#fff;--line:#e3ddd2;--brass:#9a7b4f;--brass-dark:#7d6340;--brass-soft:#f0e9dd;--ok:#4a7c59;--ok-soft:#e6efe9;--warn:#b07d2b;--warn-soft:#f7edd8;--danger:#a94442;--danger-soft:#f5e4e3;--info:#47617e;--info-soft:#e5ebf2;--r:10px;--shadow:0 1px 2px #1c27350f, 0 4px 16px #1c273512;--font-body:"Manrope", sans-serif;--font-display:"Fraunces", serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600}h1{font-size:26px}h2{font-size:20px}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:14px}.shell{min-height:100vh;display:flex}.sidebar{background:var(--ink);color:#cfd8e3;z-index:20;flex-direction:column;flex-shrink:0;width:232px;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar .brand{font-family:var(--font-display);color:#fff;border-bottom:1px solid #ffffff14;padding:22px 20px 18px;font-size:22px}.sidebar .brand small{font-family:var(--font-body);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin-top:3px;font-size:11px;display:block}.sidebar nav{flex-direction:column;flex:1;gap:2px;padding:14px 10px;display:flex;overflow-y:auto}.sidebar nav a{color:#b6c2d1;border-radius:8px;align-items:center;gap:11px;padding:10px 12px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.sidebar nav a:hover{color:#fff;background:#ffffff0f}.sidebar nav a.active{background:var(--brass);color:#fff}.sidebar nav a svg{flex-shrink:0;font-size:17px}.sidebar .foot{border-top:1px solid #ffffff14;padding:14px 20px;font-size:12px}.sidebar .foot .who{color:#fff;font-weight:600}.sidebar .foot .role{color:var(--muted)}.main{flex:1;max-width:1400px;margin-left:232px;padding:26px 30px}.seg{background:#ebe6dc;border-radius:11px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--ink-soft);background:0 0;border:none;border-radius:8px;padding:7px 16px;font-size:12.5px;font-weight:700;transition:all .15s}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 5px #1c273529}.pager{border-top:1px solid var(--line);color:var(--ink-soft);justify-content:flex-end;align-items:center;gap:10px;padding:12px 14px;font-size:13px;display:flex}.pager button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:7px;padding:5px 11px;font-weight:700}.pager button:disabled{opacity:.35;cursor:default}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:22px;display:flex}.topbar .actions{align-items:center;gap:8px;display:flex}.card{background:linear-gradient(#fff 0%,#fdfbf7 100%);border:1px solid #e7e1d5;border-radius:14px;padding:20px;box-shadow:0 1px 2px #1c27350d,0 6px 24px #1c27350f}.grid{gap:16px;display:grid}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-2{grid-template-columns:repeat(2,1fr)}@media (width<=1100px){.grid.cols-4,.grid.cols-3{grid-template-columns:repeat(2,1fr)}}.stat{flex-direction:column;gap:5px;display:flex;position:relative}.stat .label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:11.5px;font-weight:700}.stat .label:before{content:"";background:var(--brass);border-radius:2px;width:22px;height:3px;margin-bottom:8px;display:block}.stat .value{font-family:var(--font-display);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:31px;font-weight:600;line-height:1.1}.stat .sub{color:var(--ink-soft);font-size:12.5px}.card.clickable{cursor:pointer;transition:box-shadow .18s,transform .18s,border-color .18s}.card.clickable:hover{border-color:var(--brass);transform:translateY(-2px);box-shadow:0 3px 6px #1c273514,0 12px 34px #1c273521}.card.clickable:active{transform:translateY(0)}.btn{background:var(--ink);color:#fff;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:9px 16px;font-size:13.5px;font-weight:600;transition:opacity .15s;display:inline-flex}.btn:hover{opacity:.88}.btn.brass{background:var(--brass)}.btn.ghost{border-color:var(--line);color:var(--ink);background:0 0}.btn.ghost:hover{background:var(--surface)}.btn.danger{background:var(--danger)}.btn.sm{padding:6px 11px;font-size:12.5px}.btn:disabled{opacity:.45;cursor:not-allowed}.input,select.input,textarea.input{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:8px;outline:none;padding:9px 12px;transition:border-color .15s}.input:focus{border-color:var(--brass)}label.fld{color:var(--ink-soft);flex-direction:column;gap:5px;font-size:12.5px;font-weight:600;display:flex}table.tbl{border-collapse:collapse;width:100%}.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--line);padding:9px 12px;font-size:11.5px}.tbl td{border-bottom:1px solid var(--line);padding:11px 12px}.tbl tr:last-child td{border-bottom:none}.tbl tr:hover td{background:#faf8f4}.badge{border-radius:99px;align-items:center;gap:5px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.neutral{color:var(--ink-soft);background:#eef0f3}.badge.brass{background:var(--brass-soft);color:var(--brass-dark)}.login-wrap{background:radial-gradient(1200px 600px at 80% -10%, #e9e2d4 0%, transparent 60%), var(--paper);place-items:center;min-height:100vh;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;width:380px;padding:34px 32px;box-shadow:0 8px 40px #1c27351f}.login-card h1{margin-bottom:2px;font-size:30px}.login-card .tag{color:var(--muted);margin-bottom:26px;font-size:13px}.login-card form{flex-direction:column;gap:14px;display:flex}.chess{overflow-x:auto}.chess table{border-collapse:collapse;min-width:100%}.chess th,.chess td{border:1px solid var(--line)}.chess thead th{background:var(--surface);color:var(--muted);text-align:center;min-width:42px;padding:6px 4px;font-size:11px;font-weight:700;position:sticky;top:0}.chess .room-cell{background:var(--surface);white-space:nowrap;min-width:90px;padding:8px 12px;font-weight:700;position:sticky;left:0}.chess .room-cell small{color:var(--muted);font-size:11px;font-weight:500;display:block}.chess td.slot{background:#fdfcfa;min-width:42px;height:44px;padding:0;position:relative}.chess td.slot:hover{background:var(--brass-soft);cursor:pointer}.chess .blk{color:#fff;white-space:nowrap;z-index:2;border-radius:6px;padding:3px 8px;font-size:11.5px;font-weight:700;position:absolute;top:4px;bottom:4px;left:2px;overflow:hidden;box-shadow:0 1px 3px #0000002e}.blk.BOOKED{background:var(--info)}.blk.LIVING{background:var(--ok)}.chess-tip{z-index:100;pointer-events:none;background:var(--ink);color:#e8edf3;border-radius:10px;min-width:220px;padding:12px 14px;font-size:12.5px;animation:.12s both rise;position:fixed;box-shadow:0 8px 30px #00000059}.chess-tip .name{color:#fff;margin-bottom:7px;font-size:14px;font-weight:800}.chess-tip .row{justify-content:space-between;gap:14px;padding:2px 0;display:flex}.chess-tip .row span:first-child{color:#93a3b5}.chess-tip .chan{margin-top:7px}.dot{border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.dot.AVAILABLE{background:var(--ok)}.dot.OCCUPIED{background:var(--info)}.dot.DIRTY{background:var(--warn)}.dot.MAINTENANCE{background:var(--muted)}.overlay{z-index:50;background:#1c273573;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:14px;width:min(560px,94vw);max-height:90vh;padding:26px;overflow-y:auto;box-shadow:0 16px 60px #00000040}.modal h2{margin-bottom:18px}.modal .row{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.modal .row.single{grid-template-columns:1fr}.modal .foot{justify-content:flex-end;gap:9px;margin-top:20px;display:flex}.empty{text-align:center;color:var(--muted);padding:36px 0}.error-text{color:var(--danger);font-size:13px;font-weight:600}.nav-toggle{z-index:40;background:var(--ink);color:#fff;border:none;border-radius:10px;justify-content:center;align-items:center;width:42px;height:42px;font-size:20px;display:none;position:fixed;top:12px;left:12px;box-shadow:0 4px 14px #1c27354d}.nav-backdrop{display:none}.notif-pop{background:var(--surface);width:340px;max-height:380px;color:var(--ink);z-index:60;border-radius:12px;padding:12px;position:absolute;bottom:14px;left:240px;overflow-y:auto;box-shadow:0 10px 40px #0000004d}@media (width<=900px){.nav-toggle{display:flex}.sidebar{z-index:55;width:260px;transition:transform .25s;transform:translate(-105%);box-shadow:0 0 50px #00000059}.sidebar.open{transform:none}.nav-backdrop{z-index:50;background:#1c273573;display:block;position:fixed;inset:0}.main{max-width:100%;margin-left:0;padding:64px 14px 24px}.topbar{gap:10px}.topbar h1{font-size:22px}.topbar .actions{flex-wrap:wrap;width:100%}.notif-pop{width:auto;position:fixed;bottom:70px;left:12px;right:12px}.card{overflow-x:auto}.card table.tbl{min-width:560px}.modal{max-height:92vh;padding:18px}.modal .row{grid-template-columns:1fr}.login-card{width:min(380px,92vw);padding:26px 22px}}@media (width<=700px){.grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}.stat .value{font-size:26px}.seg button{padding:6px 11px;font-size:12px}.pager{flex-wrap:wrap}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.main>*{animation:.28s both rise}.main>:nth-child(2){animation-delay:50ms}.main>:nth-child(3){animation-delay:.1s}
