:root{--bg:#f4f6fb;--card:#fff;--line:#e4e8f1;--tx:#111a2e;--tx2:#5f6b85;--p:#4f46e5;--p2:#4338ca;--pl:#eceafe;--acc:#ff6b4a;--accl:#ffe9e3;--ok:#0ea371;--okl:#dff6ec;--warn:#e69a00;--warnl:#fff2d6;--err:#dc3b56;--errl:#fde6ea;--ink:#0b1b2b;--ink2:#132a40;--r:16px;--sbw:236px}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--tx);font:14px/1.5 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;min-height:100vh}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
a{color:var(--p);text-decoration:none}
input,select,textarea{font:inherit;font-size:16px;background:#fff;border:1.5px solid #dde2ee;color:var(--tx);border-radius:10px;padding:8px 11px;width:100%}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--p);box-shadow:0 0 0 3px var(--pl)}
textarea{min-height:70px;resize:vertical}
label.fl{display:block;font-size:11.5px;font-weight:600;color:var(--tx2);margin:0 0 4px}
.fld{margin-bottom:10px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
/* sidebar */
#side{position:fixed;top:0;left:0;bottom:0;width:var(--sbw);background:linear-gradient(180deg,var(--ink),var(--ink2));color:#c7d2e3;display:flex;flex-direction:column;z-index:60;overflow:hidden}
#side .brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;color:#fff}
#side .brand .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--p),#7c3aed);display:grid;place-items:center;font-weight:900;font-size:17px;color:#fff;flex:none}
#side .brand b{font-size:17px;font-weight:800;letter-spacing:-.3px;display:block;line-height:1}
#side .brand small{font-size:10px;color:#8fa0b8;letter-spacing:.8px;text-transform:uppercase;font-weight:600}
#side .org{margin:0 14px 10px;padding:9px 12px;background:rgba(255,255,255,.06);border-radius:12px;font-size:12px;color:#c7d2e3;display:flex;gap:8px;align-items:center}
#side .org b{color:#fff;display:block;font-size:12.5px}
#side .org .pl{margin-left:auto;background:var(--acc);color:#fff;font-size:9.5px;font-weight:800;padding:2px 7px;border-radius:99px;letter-spacing:.4px}
#side nav{flex:1;overflow-y:auto;padding:4px 10px 14px;scrollbar-width:thin;scrollbar-color:#2b3f55 transparent}
#side .sec{font-size:9.5px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#6f8198;padding:14px 10px 5px}
.ni{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;font-size:13px;font-weight:500;color:#c7d2e3;cursor:pointer;white-space:nowrap}
.ni .ic{width:20px;text-align:center;font-size:15px;opacity:.9}
.ni:hover{background:rgba(255,255,255,.07);color:#fff}
.ni.on{background:var(--p);color:#fff;box-shadow:0 6px 16px rgba(79,70,229,.35)}
.ni.lock{opacity:.5}.ni.lock:after{content:"🔒";margin-left:auto;font-size:10px}
.ni .bd{margin-left:auto;background:var(--acc);color:#fff;font-size:10px;font-weight:800;padding:1px 6px;border-radius:99px}
#side .foot{padding:10px 14px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px;font-size:12px}
#side .foot .av{width:32px;height:32px;border-radius:50%;background:var(--acc);color:#fff;display:grid;place-items:center;font-weight:800;font-size:12px}
#side .foot b{color:#fff;display:block}
#side .foot button{margin-left:auto;color:#8fa0b8;font-size:11px}
/* top */
#top{position:fixed;top:0;left:var(--sbw);right:0;height:62px;display:flex;align-items:center;gap:12px;padding:0 24px;background:rgba(244,246,251,.85);backdrop-filter:blur(8px);z-index:50}
#top h1{font-size:19px;font-weight:800;letter-spacing:-.3px}
#top .crumb{font-size:12px;color:var(--tx2)}
#gsearch{margin-left:auto;width:min(360px,40vw);position:relative}
#gsearch input{padding:8px 12px 8px 36px;font-size:13.5px;border-radius:12px;background:#fff}
#gsearch:before{content:"⌕";position:absolute;left:12px;top:5px;font-size:19px;color:var(--tx2)}
.ibtn{width:38px;height:38px;border-radius:12px;background:#fff;border:1.5px solid var(--line);display:grid;place-items:center;font-size:16px;position:relative}
.ibtn .dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--acc);border:2px solid #fff}
#main{margin-left:var(--sbw);padding:78px 24px 40px;max-width:1400px}
/* headings & cards */
.ph{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.ph h2{font-size:17px;font-weight:800}
.ph .sp{flex:1}
.ph p{color:var(--tx2);font-size:13px;width:100%}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:14px;box-shadow:0 1px 3px rgba(17,26,46,.04)}
.card h3{font-size:12px;font-weight:800;letter-spacing:.3px;color:var(--tx2);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.card h3 .sp{flex:1}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;cursor:pointer;display:flex;gap:12px;align-items:center;box-shadow:0 1px 3px rgba(17,26,46,.04)}
.kpi .ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;font-size:19px;background:var(--pl);color:var(--p);flex:none}
.kpi.acc .ico{background:var(--accl);color:var(--acc)}.kpi.ok .ico{background:var(--okl);color:var(--ok)}.kpi.warn .ico{background:var(--warnl);color:var(--warn)}.kpi.err .ico{background:var(--errl);color:var(--err)}
.kpi .l{font-size:11.5px;color:var(--tx2);font-weight:600}
.kpi .v{font-size:21px;font-weight:800;line-height:1.15}
.kpi .s{font-size:11px;color:var(--tx2)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.md{display:grid;grid-template-columns:330px 1fr;gap:14px;align-items:start}
.mlist{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;max-height:76vh;display:flex;flex-direction:column}
.mlist .srch{padding:10px;border-bottom:1px solid var(--line)}
.mlist .srch input{font-size:13.5px;padding:7px 10px}
.mlist .items{overflow:auto}
.mitem{padding:10px 12px;border-bottom:1px solid #eef1f7;cursor:pointer;display:flex;gap:10px;align-items:center}
.mitem:hover{background:#f7f8fd}
.mitem.on{background:var(--pl)}
.av{width:34px;height:34px;border-radius:12px;background:#e8ebf5;color:var(--p2);font-weight:800;display:grid;place-items:center;font-size:12px;flex:none}
.mitem .t{font-weight:700;font-size:13.5px}
.mitem .d{font-size:11.5px;color:var(--tx2)}
.mitem .rt{margin-left:auto;text-align:right;font-size:11px;color:var(--tx2)}
/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;background:var(--p);color:#fff;font-weight:700;padding:9px 15px;border-radius:11px;font-size:13px;white-space:nowrap;box-shadow:0 4px 12px rgba(79,70,229,.25)}
.btn:hover{background:var(--p2)}
.btn.acc{background:var(--acc);box-shadow:0 4px 12px rgba(255,107,74,.3)}.btn.acc:hover{background:#f0573a}
.btn.ok{background:var(--ok);box-shadow:0 4px 12px rgba(14,163,113,.25)}
.btn.sec{background:#eef0f7;color:var(--tx);box-shadow:none}.btn.sec:hover{background:#e3e6f0}
.btn.ghost{background:#fff;border:1.5px solid var(--line);color:var(--tx2);box-shadow:none}
.btn.wa{background:#25d366;box-shadow:0 4px 12px rgba(37,211,102,.3)}
.btn.sm{padding:5px 10px;font-size:12px;border-radius:9px}
.btn.xs{padding:3px 8px;font-size:11px;border-radius:8px}
.btn:disabled{opacity:.5;cursor:not-allowed}
/* table */
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13px}
th{color:var(--tx2);text-align:left;font-size:11px;font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:10px;border-bottom:1px solid #eef1f7;white-space:nowrap}
tr:hover td{background:#f7f8fd}
tr.cl{cursor:pointer}
td.r,th.r{text-align:right}
.chip{display:inline-block;padding:2px 9px;border-radius:8px;font-size:11px;font-weight:700;background:#eef0f7;color:var(--tx2)}
.chip.p{background:var(--pl);color:var(--p2)}.chip.err{background:var(--errl);color:var(--err)}.chip.warn{background:var(--warnl);color:#9a6400}.chip.ok{background:var(--okl);color:#0a7a55}.chip.acc{background:var(--accl);color:#c4421f}.chip.ink{background:var(--ink);color:#fff}
/* tabs */
.tabs{display:flex;gap:4px;background:#eef0f7;padding:4px;border-radius:12px;margin-bottom:12px;overflow-x:auto;scrollbar-width:none;width:max-content;max-width:100%}
.tab{padding:6px 12px;font-weight:700;font-size:12.5px;color:var(--tx2);border-radius:9px;white-space:nowrap}
.tab.on{color:var(--p2);background:#fff;box-shadow:0 1px 3px rgba(17,26,46,.1)}
/* modal */
.ovl{position:fixed;inset:0;background:rgba(11,27,43,.5);display:none;align-items:center;justify-content:center;z-index:100;padding:10px}
.ovl.on{display:flex}
.modal{background:#fff;border-radius:20px;padding:22px;width:min(580px,96vw);max-height:92vh;overflow:auto;box-shadow:0 30px 80px rgba(11,27,43,.35)}
.modal.wide{width:min(960px,96vw)}
.modal h2{font-size:17px;margin-bottom:12px}
.mfoot{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:12px;font-weight:600;font-size:13px;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:200;display:none;max-width:92vw}
.toast.on{display:block}
/* queue board */
.qboard{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.room{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.room .rh{padding:12px 14px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line)}
.room .rh b{font-size:13.5px}.room .rh small{color:var(--tx2);margin-left:auto;font-size:11px}
.room .now{padding:12px 14px;background:linear-gradient(135deg,var(--pl),#fff);border-bottom:1px solid var(--line)}
.room .now .tk{font-size:24px;font-weight:900;color:var(--p2);letter-spacing:-.5px}
.tok{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid #eef1f7;font-size:12.5px}
.tok .n{font-weight:800;color:var(--p2);min-width:48px}
.tok .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.tok.done{opacity:.45}
/* bed board */
.beds{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}
.bed{border:1.5px solid var(--line);border-radius:12px;padding:9px;background:#fff;font-size:11.5px;cursor:pointer;min-height:66px}
.bed b{display:block;font-size:12.5px}
.bed.occ{background:var(--errl);border-color:#f3b9c4}.bed.free{background:var(--okl);border-color:#a9e4cc}.bed.clean{background:var(--warnl);border-color:#f3d79a}
/* rx */
.rxline{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 32px;gap:6px;align-items:center;margin-bottom:6px}
.rxline input,.rxline select{font-size:13px;padding:6px 8px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips .c{padding:4px 10px;border-radius:99px;border:1.5px solid #dde2ee;font-size:12px;font-weight:600;color:var(--tx2);background:#fff;cursor:pointer}
.chips .c.on,.chips .c:hover{background:var(--pl);border-color:var(--p);color:var(--p2)}
.pt-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.pt-head .av{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,var(--p),#7c3aed);color:#fff;font-size:16px}
.pt-head h2{font-size:18px}
.pt-head .meta{color:var(--tx2);font-size:12.5px}
.alert{background:var(--errl);color:#9c1f34;border:1px solid #f3b9c4;border-radius:12px;padding:8px 12px;font-size:12.5px;font-weight:600}
.note{background:#f3f5fa;border-radius:12px;padding:10px 12px;font-size:12.5px;color:var(--tx2)}
.split{display:grid;grid-template-columns:270px 1fr;gap:14px;align-items:start}
.rep-list{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.rep-list .g{padding:9px 12px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--tx2);background:#f7f8fd;border-bottom:1px solid var(--line)}
.rep-list .i{padding:9px 14px;border-bottom:1px solid #eef1f7;cursor:pointer;font-size:13px}
.rep-list .i.on{background:var(--pl);color:var(--p2);font-weight:700}
.addon{border:1.5px solid var(--line);border-radius:var(--r);padding:16px;background:#fff;display:flex;flex-direction:column;gap:8px}
.addon .pr{font-size:20px;font-weight:800}.addon .pr small{font-size:11px;color:var(--tx2);font-weight:600}
.addon .why{font-size:12.5px;color:var(--tx2);font-style:italic}
.addon.on{border-color:var(--ok);background:#f6fdf9}
.tot{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13px}
.tot.big{font-size:17px;font-weight:800;border:0}
.muted{color:var(--tx2);font-size:12px}
.lockpane{text-align:center;padding:50px 20px}
.lockpane .big{font-size:44px}
.bar{height:8px;background:#eef0f7;border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;background:var(--p);border-radius:99px}
.steps{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--tx2);flex-wrap:wrap}
.steps b{background:var(--pl);color:var(--p2);padding:3px 9px;border-radius:99px}
.steps .done{background:var(--okl);color:#0a7a55}
/* login */
#login{position:fixed;inset:0;background:radial-gradient(1200px 600px at 10% 0%,#1e2a5a,transparent),linear-gradient(135deg,#0b1b2b,#132a40 55%,#4f46e5);display:flex;align-items:center;justify-content:center;z-index:300;padding:16px}
#login .box{background:#fff;border-radius:22px;padding:30px;width:min(410px,96vw);box-shadow:0 30px 80px rgba(0,0,0,.4)}
#login .lg{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:4px}
#login .lg .mark{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--p),#7c3aed);color:#fff;font-weight:900;display:grid;place-items:center;font-size:20px}
#login .lg b{font-size:24px;font-weight:800;letter-spacing:-.4px}
#login .tag{text-align:center;color:var(--tx2);font-size:12.5px;margin-bottom:18px}
#login .demo{font-size:11.5px;color:var(--tx2);text-align:center;margin-top:12px;line-height:1.7}
/* responsive */
#bnav{display:none}
@media(max-width:1100px){:root{--sbw:72px}#side .brand b,#side .brand small,#side .org,#side .sec,#side .ni span,#side .foot b,#side .foot small,#side .foot button{display:none}#side .ni{justify-content:center;padding:10px}#side .ni .ic{width:auto;font-size:18px}#side .ni .bd{display:none}#side .foot{justify-content:center}}
@media(max-width:900px){
 .md,.grid2,.grid3,.split{grid-template-columns:1fr}
 .grid4{grid-template-columns:1fr 1fr}
 #side{display:none}
 #top{left:0;padding:0 14px;height:56px}
 #top h1{font-size:16px}
 #gsearch{display:none}
 #main{margin-left:0;padding:66px 12px 84px}
 .mlist{max-height:none}
 #bnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:60;padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
 #bnav .bn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;font-size:10.5px;font-weight:700;color:var(--tx2);border-radius:10px}
 #bnav .bn .ic{font-size:19px}
 #bnav .bn.on{color:var(--p2);background:var(--pl)}
 .rxline{grid-template-columns:1fr 1fr}
 .tabs{width:100%}
}
@media print{#side,#top,#bnav,.btn{display:none!important}#main{margin:0;padding:0}}
