:root{--bg:#f3f6f9;--card:#fff;--ink:#14212e;--mut:#6b7c8d;--line:#e3e9ef;--pri:#0a7c86;--pri2:#065e66;--red:#d43c3c;--yel:#d99a0b;--grn:#1f9d60;--side:#0d2433;--sideink:#b9c9d6;--r:10px;--f:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}html,body{margin:0}body{font:14px/1.45 var(--f);color:var(--ink);background:var(--bg)}
a{color:var(--pri);text-decoration:none}a:hover{text-decoration:underline}
.ic{width:18px;height:18px;flex:none}
.muted{color:var(--mut)}.small{font-size:12px}.center{text-align:center}.tr{color:var(--red)}.g{color:var(--grn)}
/* layout */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh;min-width:1100px}
.side{background:var(--side);color:var(--sideink);position:sticky;top:0;height:100vh;overflow:auto;display:flex;flex-direction:column}
.brand{display:flex;gap:10px;align-items:center;padding:18px 18px 14px;color:#fff;text-decoration:none!important}
.brand b{display:block;font-size:16px;letter-spacing:.5px}.brand small{display:block;font-size:11px;color:var(--sideink)}
.logo{width:36px;height:36px;border-radius:9px;background:var(--pri);color:#fff;display:grid;place-items:center;font:700 24px/1 var(--f)}
.side nav{padding:4px 10px;flex:1}.navsec{font-size:10.5px;text-transform:uppercase;letter-spacing:1.2px;color:#6f8798;padding:14px 10px 6px}
.side nav a,.sidefoot a{display:flex;gap:10px;align-items:center;color:var(--sideink);padding:7px 10px;border-radius:8px;text-decoration:none;font-size:13.5px}
.side nav a:hover,.sidefoot a:hover{background:#163647;color:#fff}.side nav a.on{background:var(--pri);color:#fff}
.sidefoot{padding:10px;border-top:1px solid #1b3a4c}
.main{min-width:0}.top{display:flex;align-items:center;justify-content:space-between;padding:14px 26px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top h1{font-size:19px;margin:0}.topr{display:flex;gap:16px;align-items:center}.date{color:var(--mut)}.who em{font-style:normal;color:var(--mut);font-size:12px;text-transform:capitalize;margin-left:4px}
.content{padding:22px 26px 60px}
/* components */
.btn{display:inline-flex;gap:7px;align-items:center;background:var(--pri);color:#fff;border:0;border-radius:8px;padding:8px 14px;font:600 13.5px var(--f);cursor:pointer;text-decoration:none!important;white-space:nowrap}
.btn:hover{background:var(--pri2)}.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.ghost:hover{border-color:var(--pri);color:var(--pri)}
.btn.red{background:var(--red)}.btn.sm{padding:5px 10px;font-size:12.5px}.btn.block{width:100%;justify-content:center;padding:11px}
.lnk{background:none;border:0;color:var(--pri);cursor:pointer;padding:0;font:inherit}.lnk.del{color:var(--red)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:18px}.card.flush{padding:0;overflow:hidden}
.card h3{margin:0 0 12px;font-size:15px;display:flex;justify-content:space-between}.more{font-weight:400;font-size:12.5px}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:16px;background:#e3f6ec;color:#11683f;border:1px solid #bfe7d1}.flash.err{background:#fdeaea;color:#a12424;border-color:#f6c9c9}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.toolbar label{display:flex;gap:6px;align-items:center;color:var(--mut);font-size:12.5px}.grow{flex:1}
input,select,textarea{font:inherit;color:inherit;border:1px solid #cfd9e2;border-radius:7px;padding:7px 10px;background:#fff;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid #9fd6db;border-color:var(--pri)}
.toolbar input[type=search]{width:260px}
table.grid{width:100%;border-collapse:collapse}.grid th{background:#f7f9fb;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--mut);font-weight:600;padding:9px 12px;border-bottom:1px solid var(--line)}
.grid td{padding:8px 12px;border-bottom:1px solid #eef2f5;vertical-align:middle}.grid tbody tr:hover{background:#f8fbfc}.grid tfoot td{background:#f7f9fb;font-weight:600}
.grid.sm td,.grid.sm th{padding:6px 8px}.num{text-align:right;white-space:nowrap}
.act{text-align:right;white-space:nowrap}.act a,.act form{display:inline;margin-left:10px}.empty{color:var(--mut);text-align:center;padding:24px!important}
.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;background:#eef2f5;color:#4b5d6c}
.pill.g,.s-completed,.s-discharged,.s-green,.s-closed{background:#e1f5ea!important;color:#16774a!important}
.pill.r,.s-red,.s-cancelled,.s-expired{background:#fde4e4!important;color:#b42626!important}
.pill.y,.s-yellow,.s-requested,.s-new,.s-undertreatment{background:#fdf2d8!important;color:#9a6a00!important}
.s-checkedin,.s-admitted,.s-contacted{background:#e1eefc!important;color:#1d5fa8!important}.s-booked,.s-referred{background:#e6f4f5!important;color:#0a6b73!important}
.pager{display:flex;gap:4px;margin-top:12px}.pager a{padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}.pager a.on{background:var(--pri);color:#fff;border-color:var(--pri)}
.sums{display:flex;gap:12px;margin-bottom:14px}.sums div{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 14px}.sums small{display:block;color:var(--mut);font-size:11.5px}.sums b{font-size:16px}
/* forms */
.form .fields{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 18px}.fld{display:flex;flex-direction:column;gap:5px}.fld.wide{grid-column:1/-1}
.fld label{font-size:12.5px;font-weight:600;color:#3d4f5f}.fld label i{color:var(--red);font-style:normal}.chk{display:flex!important;gap:8px;align-items:center;font-weight:400!important;padding-top:6px}
.formbar{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.formbar.left{justify-content:flex-start;border:0;padding:0}
.picker{position:relative;display:flex;flex-direction:column;gap:4px}.pick-list{position:absolute;top:38px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:20;max-height:280px;overflow:auto;display:none}
.pick-list div{padding:8px 11px;cursor:pointer;border-bottom:1px solid #f0f3f6}.pick-list div:hover,.pick-list div.hl{background:#e8f5f6}
.quickadd{align-self:flex-start;font-size:12.5px}
.qa-box{position:fixed;inset:0;background:rgba(10,25,35,.45);display:grid;place-items:center;z-index:50}.qa-box form{background:#fff;border-radius:12px;padding:20px;width:520px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.qa-box h3{grid-column:1/-1;margin:0}
.items{margin-top:18px;border:1px solid var(--line)}.items td{padding:6px 8px}.items input{width:100%}.items .tot{font-weight:600;text-align:right}.items .rm{color:var(--red);cursor:pointer;background:none;border:0;font-size:18px}
#addrow{margin-top:10px}
.totals{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:18px;background:#f7f9fb;border-radius:10px;padding:14px}.totals>div{display:flex;flex-direction:column;gap:4px}.totals label{font-size:12px;color:var(--mut)}.totals b{font-size:17px}.totals b.big{font-size:22px;color:var(--pri)}
.meta{display:flex;gap:30px;flex-wrap:wrap;margin-bottom:14px}.meta small{display:block;color:var(--mut);font-size:11.5px}.meta b{font-size:15px}
/* dashboard */
.quick{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{background:#fff;border:1px solid var(--line);border-left:4px solid var(--pri);border-radius:var(--r);padding:14px 16px}
.kpi small{display:block;color:var(--mut);font-size:12px}.kpi b{display:block;font-size:22px;margin:3px 0}.kpi em{font-style:normal;color:var(--mut);font-size:12px}
.kpi.warn{border-left-color:var(--yel)}.kpi.neg{border-left-color:var(--red)}.kpi.neg b{color:var(--red)}.kpi.pos{border-left-color:var(--grn)}.kpi.pos b{color:var(--grn)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}.cols>.card{margin-bottom:18px}
.bars{display:flex;align-items:flex-end;gap:6px;height:190px;padding-top:6px}.bar{flex:1;display:flex;align-items:flex-end;gap:2px;height:100%;position:relative;padding-bottom:18px}
.bar i{flex:1;border-radius:3px 3px 0 0;min-height:2px}.bar i.r{background:var(--pri)}.bar i.c{background:#f0a3a3}.bar span{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:10.5px;color:var(--mut)}
.legend{font-size:12px;color:var(--mut);display:flex;gap:6px;align-items:center;margin-top:8px}.legend span{width:10px;height:10px;border-radius:2px;display:inline-block;margin-left:10px}.legend .r{background:var(--pri)}.legend .c{background:#f0a3a3}
.stmt td{padding:7px 10px}.stmt .hd td{font-weight:700;background:#f2f6f8;text-transform:uppercase;font-size:12px;letter-spacing:.5px}.stmt .tot td{font-weight:700;border-top:2px solid var(--line)}
.stmt .net td{font-size:17px;font-weight:800}.stmt .net.pos td{color:var(--grn)}.stmt .net.neg td{color:var(--red)}
/* login */
body.login{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,#0d2433,#0a7c86)}
.loginbox{background:#fff;border-radius:14px;padding:30px;width:380px;display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.loginbox h2{margin:6px 0 0}.brand.big{color:var(--ink);padding:0}.brand.big small{color:var(--mut)}
/* print */
body.print{background:#e9eef2;min-width:0}.pbar{display:flex;gap:8px;justify-content:center;padding:12px}
.sheet{background:#fff;margin:0 auto 30px;padding:14px 16px;font-family:"Courier New",monospace;font-size:12.5px;color:#000}.thermal .sheet{width:80mm}.a4 .sheet{width:210mm;padding:20mm}
.phead{text-align:center;border-bottom:1px dashed #000;padding-bottom:8px;margin-bottom:8px}.phead b{display:block;font-size:15px}.phead small{display:block}
.ptitle{text-align:center;font-weight:700;letter-spacing:2px;margin:4px 0 8px}.token{text-align:center;font-size:14px;margin-bottom:8px}.token b{display:block;font-size:42px;line-height:1}
.prow{display:flex;justify-content:space-between;gap:8px;padding:2px 0}.prow.big{font-size:15px;border-top:1px dashed #000;margin-top:6px;padding-top:6px}
.ptable{width:100%;border-collapse:collapse;margin:8px 0;border-top:1px dashed #000;border-bottom:1px dashed #000}.ptable th,.ptable td{text-align:left;padding:3px 2px;font-size:12px}.ptable td:nth-child(n+2),.ptable th:nth-child(n+2){text-align:right}
.pfoot{text-align:center;border-top:1px dashed #000;margin-top:10px;padding-top:8px;font-size:11px}
@media print{.noprint,.side,.top,.toolbar .btn,.toolbar label,.toolbar input{display:none!important}body.print{background:#fff}.sheet{margin:0}.app{display:block;min-width:0}.content{padding:0}.card{border:0}@page{margin:6mm}}
.items select{width:100%}
