:root{--dark:#2b3a55;--light:#f6f4ef;--card:#fff;--line:#d5dedc;--teal:#12528f;--acc:#c2560c;--red:#b3261e;--green:#1e7a46;--amber:#9a6200;--txt:#1c2326;--mut:#56636b}
*{box-sizing:border-box}
body{margin:0;font:17px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--light);color:var(--txt)}
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));background:#fff;color:var(--txt);border-bottom:3px solid #892994}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:#892994;font-weight:700;font-size:17px}.brand img{height:30px;width:auto;display:block}
nav{display:flex;gap:6px;flex-wrap:wrap}nav a,nav button{color:#2b3a55;background:#fff;border:1px solid #c9d3e3;border-radius:8px;padding:6px 10px;font-size:14px;text-decoration:none;cursor:pointer}
main{max-width:760px;margin:0 auto;padding:14px 14px 80px}
h1{font-size:24px;margin:6px 0 12px}h2{font-size:19px;margin:22px 0 8px}h3{font-size:17px;margin:0 0 4px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin:10px 0}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.grow{flex:1}
.muted{color:var(--mut)}.small{font-size:14px}
.btn{display:inline-block;border:0;border-radius:10px;padding:12px 16px;font-size:16px;font-weight:600;cursor:pointer;background:var(--teal);color:#fff;text-decoration:none}
.btn.big{width:100%;padding:16px;font-size:18px}.btn.sec{background:#e8eeec;color:var(--txt)}.btn.warn{background:var(--acc)}.btn.red{background:var(--red)}.btn.ok{background:var(--green)}
.btn:disabled{opacity:.5}
input,select,textarea{width:100%;font:inherit;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;margin:4px 0 10px}
textarea{min-height:90px}label{font-weight:600;font-size:15px}
.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:13px;font-weight:700}
.s-given{background:#dff3e7;color:var(--green)}.s-due{background:#fff1d6;color:var(--amber)}.s-overdue,.s-missed{background:#fbe0de;color:var(--red)}
.s-upcoming{background:#e8eeec;color:var(--mut)}.s-refused,.s-withheld{background:#ece4f7;color:#5b2d91}
.alert{border-left:6px solid var(--red)}.dose.overdue{border-left:6px solid var(--red)}.dose.due{border-left:6px solid var(--acc)}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.tabs a{padding:8px 12px;border-radius:99px;background:#e8eeec;color:var(--txt);text-decoration:none;white-space:nowrap;font-size:15px}.tabs a.on{background:#12528f;color:#fff!important}
.tl{border-left:3px solid var(--line);margin-left:6px;padding-left:12px}.tl .item{margin:0 0 12px}
.tl .when{font-size:13px;color:var(--mut)}.superseded{opacity:.55;text-decoration:line-through}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--dark);color:#fff;padding:12px 18px;border-radius:12px;max-width:92%;z-index:9}
.toast.err{background:var(--red)}.hidden{display:none}
table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.code{font:700 30px ui-monospace,monospace;letter-spacing:4px;background:#fff1d6;padding:10px 14px;border-radius:10px;display:inline-block}
.check{display:flex;gap:8px;align-items:center;font-weight:400}.check input{width:auto;margin:0}
.plain{text-decoration:none;color:inherit}.block{display:block}
html{background:var(--light)}
.timer{font:700 64px ui-monospace,monospace;text-align:center;margin:6px 0}.timer.over{color:var(--red)}.pre{white-space:pre-wrap}
.overlay{position:fixed;inset:0;background:rgba(18,48,58,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}.overlay .card{max-width:420px;width:100%}
main a:not(.btn):not(.card):not(.brand){color:var(--teal)}
.ck{border-top:1px solid var(--line);padding:10px 0;display:flex;flex-direction:column;gap:8px}.ck:first-of-type{border-top:0}
.risk{border-left:6px solid var(--acc);background:#fff7ef}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}
.tile{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;background:#fff;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--txt);font-size:14px;font-weight:600;text-align:center}
.tile span{font-size:28px}
.bar{height:12px;background:#e8eeec;border-radius:99px;overflow:hidden;min-width:60px}.bar span{display:block;height:100%;background:var(--teal);width:0}.bar span.low{background:var(--acc)}
.w8{width:96px}.w5{width:48px;text-align:right}.grp{margin-top:14px}.quick{margin:-4px 0 10px}.quick .btn{padding:8px 12px}

.netbar{background:#fff4d6;border-bottom:1px solid #e6c26b;color:#5a3d00;padding:8px 14px;font-size:.92rem}.netbar.bad{background:#fde4e1;border-color:var(--red);color:var(--red)}.linkbtn{background:none;border:0;color:inherit;text-decoration:underline;font:inherit;padding:0;cursor:pointer}
.day h3{margin:14px 0 4px;font-size:15px;color:#892994}.shift{align-items:center;gap:12px;border-left:6px solid #12528f}.shift .time{display:flex;flex-direction:column;align-items:center;min-width:52px;font-size:15px}.shift .time span{color:var(--mut);font-size:13px}
.shift.st-late,.shift.st-missed{border-left-color:var(--red)}.shift.st-on,.shift.st-done{border-left-color:var(--green)}.shift.st-cancelled{opacity:.55}.shift.st-due{border-left-color:var(--acc)}.center{text-align:center}
.setup{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:1px solid var(--line);text-decoration:none;color:var(--txt)!important}.setup .tick{width:24px;height:24px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-weight:800;flex:none}
.setup.done .tick{background:#dff3e6;color:var(--green)}.setup.must .tick{background:#fde4e1;color:var(--red)}.setup.should .tick{background:#fff1d6;color:var(--amber)}.setup.done{color:var(--mut)!important}
.printhead{display:none}.scrollx{overflow-x:auto}.red{color:var(--red);font-weight:700}
table.mar{border-collapse:collapse;font-size:12px;background:#fff}table.mar th,table.mar td{border:1px solid #bbb;padding:2px 3px;text-align:center;min-width:20px}table.mar td.med{text-align:left;min-width:120px}
table.mar sub{font-size:8px;display:block;line-height:1;color:var(--mut)}.m-G{background:#e3f4e9}.m-R,.m-W{background:#f0e8f8}.m-x{background:#fde4e1;color:var(--red);font-weight:800}.m-na{background:#f3f3f3}
table.list{border-collapse:collapse;width:100%;font-size:13px}table.list th,table.list td{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top}
@media print{
  .top,#netbar,.noprint,.tabs,.toast,button,.btn{display:none!important}
  html,body,main{background:#fff!important}body{font-size:11px}main{padding:0;max-width:none}.card{border:0;padding:0;margin:6px 0;break-inside:avoid}
  .printhead{display:flex;gap:14px;align-items:center;justify-content:space-between;border-bottom:2px solid #892994;padding-bottom:4px;margin-bottom:6px}
  .scrollx{overflow:visible}h1{font-size:16px}h2{font-size:13px;margin:6px 0 2px}a{color:inherit!important;text-decoration:none}
  table.mar td,table.mar th{padding:1px 2px;font-size:9px;min-width:14px}.m-G,.m-R,.m-W,.m-x,.m-na{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr)) 40px;gap:3px;margin:8px 0}.cal-h{font-size:12px;font-weight:700;text-align:center;color:#892994;padding:2px 0}
.cal-day{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:74px;padding:3px;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.cal-day.today{border:2px solid #12528f}.cal-day.past{background:#f3f3f1;opacity:.75}.cal-n{font-size:12px;font-weight:700;color:var(--mut)}.cal-day.today .cal-n{color:#12528f}
.cal-shift{display:flex;flex-direction:column;background:#e6eef9;border-left:3px solid #12528f;border-radius:5px;padding:2px 3px;font-size:11px;line-height:1.2;text-decoration:none;color:var(--txt)!important}
.cal-shift span{color:var(--mut)}.cal-shift i{font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-shift.st-late,.cal-shift.st-missed{background:#fde4e1;border-left-color:var(--red)}.cal-shift.st-on,.cal-shift.st-done{background:#e3f4e9;border-left-color:var(--green)}.cal-shift.st-due{background:#fff1d6;border-left-color:var(--acc)}
@media(min-width:600px){.cal-day{min-height:96px}.cal-shift{font-size:13px}}
.cal-day.out{background:transparent;border-style:dashed;opacity:.5}.cal-tot{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f4ecf3;border-radius:8px;font-size:12px;line-height:1.2;color:#892994}
.cal-tot span{font-size:10px;color:var(--mut);text-align:center}.cal-nav h2{margin:0}.cal-month{gap:14px;align-items:center}.bignum{font-size:22px;color:#12528f}
.cal-day{min-height:64px}@media(max-width:420px){.cal-shift i{display:none}.cal{gap:2px}.cal-shift{font-size:10px;padding:1px 2px}}
@media(min-width:600px){.cal{grid-template-columns:repeat(7,minmax(0,1fr)) 64px}.cal-tot{font-size:14px}.cal-tot span{font-size:12px}}

.login-logo{display:block;margin:18px auto 6px;width:min(320px,80%);height:auto}
.seg{display:flex;flex-wrap:wrap;gap:6px}.seg label{border:1px solid var(--line);border-radius:99px;padding:6px 10px;font-size:14px;cursor:pointer;background:#fff}.seg input{margin-right:4px}
.voided{opacity:.55;text-decoration:line-through}.voided .red{text-decoration:none}
.wb-top{display:flex;gap:16px;align-items:center}.dial{width:92px;height:92px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;flex:none}
.dial::before{content:"";position:absolute;inset:9px;background:#fff;border-radius:50%}.dial b,.dial span{position:relative}.dial b{font-size:28px;line-height:1}.dial span{font-size:12px;color:var(--mut)}
.radar{width:100%;max-width:440px}.radar .rg{fill:none;stroke:#d5dedc;stroke-width:1}.radar .now{fill:rgba(18,82,143,.18);stroke:#12528f;stroke-width:2.5}.radar .prev{fill:none;stroke:#892994;stroke-width:1.5;stroke-dasharray:5 4}
.radar .rl{font-size:12px;fill:#1c2326}.key{display:inline-block;width:18px;height:4px;vertical-align:middle;margin:0 4px 0 10px}.key.now{background:#12528f}.key.prev{background:#892994}
.wb-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.wb-row:first-child{border-top:0}.dot{width:14px;height:14px;border-radius:50%;flex:none}
.spark{width:84px;height:26px;flex:none}.spark .sl{fill:none;stroke:#9aa5ad;stroke-width:1.5}
.cal7{grid-template-columns:repeat(7,minmax(0,1fr))!important}.cal-shift.unfilled{background:#fde4e1;border-left-color:var(--red)}.cal-n.linkbtn{text-decoration:none;text-align:left;font-size:12px;font-weight:700;color:var(--mut)}
@media(max-width:420px){.cal-shift i.who{display:block;font-size:9px}}
.dlg{max-height:90vh;overflow:auto;width:min(520px,94vw)}.item .linkbtn{color:var(--mut)}
.cp summary{cursor:pointer}.cp-text{background:#f7f9fb;border-left:4px solid #12528f;padding:10px 12px;margin:10px 0}.card.old{background:#f6f6f6}
.pp h2{font-size:17px;margin:14px 0 4px;color:#12528f}.pp-red{border:3px solid var(--red);border-radius:10px;padding:10px;margin:10px 0}
@media print{.pp{break-inside:avoid}.pp .pre,.pp p,.pp td,.pp th{font-size:13px!important}.pp-red{font-size:14px}.pp h2{font-size:16px!important}.pp-red{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 12px}.sbard{white-space:pre-wrap;background:#f7f9fb;border-left:4px solid #12528f;padding:10px;font-family:inherit;font-size:14px;line-height:1.5}
.row.call{gap:8px;flex-wrap:wrap;margin:12px 0}.reqf{margin:10px 0;padding-top:8px;border-top:1px solid var(--line)}
.qr svg{width:220px;height:220px;display:block;margin:8px 0;background:#fff}
tr.risk td{background:#fdecea}
@media print{.print-tag #view>*:not(#vtag){display:none!important}.print-tag #vtag .qr svg{width:9cm;height:9cm}.print-tag #vtag h2{font-size:20px}.print-tag #vtag .small{font-size:14px}}
.bm-wrap{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.bm{margin:0;text-align:center;flex:1 1 150px;max-width:220px}
.bm svg{width:100%;height:auto}.bm figcaption{font-size:12px;color:var(--grey,#65646A)}
.bm-r{fill:#e8eef6;stroke:#12528F;stroke-width:.8;cursor:pointer}.bm-r:hover,.bm-r:focus{fill:#c9dbef}.bm-open{fill:#f3b7b0;stroke:#b3261e}
.bm-ctx{fill:#f2f2f2;stroke:#ccc;stroke-width:.6}
@media (max-width:480px){.tabs{gap:5px}.tabs a{padding:6px 10px;font-size:14px}}
.hide{display:none!important}
.record-top{display:grid;gap:12px;grid-template-columns:1fr}@media(min-width:900px){.record-top{grid-template-columns:3fr 2fr}}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 16px;margin:6px 0}
.card.em{border-left:4px solid #892994}.rank{display:inline-block;min-width:24px;height:24px;line-height:24px;text-align:center;border-radius:50%;background:#892994;color:#fff;font-weight:700;font-size:13px}
.need{background:#fff7e0;border-radius:8px;padding:6px 8px;margin:6px 0}
.grow2{flex:2}
details.log{border-bottom:1px solid #e3e6ea;padding:0}details.log>summary{list-style:none;cursor:pointer;padding:10px 4px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
details.log>summary::-webkit-details-marker{display:none}details.log>summary::after{content:"›";margin-left:auto;color:#999;transition:transform .15s}details.log[open]>summary::after{transform:rotate(90deg)}
details.log .lw{color:#65646A;font-size:13px;min-width:110px}details.log .ls{color:#333;flex:1 1 200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
details.log[open]{background:#f6f8fb}details.log .ld{padding:4px 8px 12px}details.log.hot>summary b{color:#b3261e}details.log.superseded .ls{text-decoration:line-through;color:#999}
.logwrap{overflow-x:auto;background:#fff;border:1px solid #d9dee5;border-radius:8px}
table.logt{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed}
.logt th{position:sticky;top:0;background:#eef2f7;text-align:left;font-weight:600;padding:8px;border-bottom:1px solid #cfd6df;color:#12528F}
.logt th:nth-child(1){width:84px}.logt th:nth-child(2){width:52px}.logt th:nth-child(3){width:118px}.logt th:nth-child(5){width:104px}
.logt td{padding:7px 8px;border-bottom:1px solid #edf0f3;vertical-align:top}.logt .nw{white-space:nowrap}
.logt tr[data-act]{cursor:pointer}.logt tr[data-act]:hover,.logt tr.on{background:#f3f7fc}
.logt .lnote span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (hover:hover){.logt tr[data-act]:hover .lnote span{white-space:normal;overflow:visible}}.logt .mt{display:none}
.logt .ldet td{background:#f6f8fb;padding:10px 12px 14px;border-bottom:2px solid #cfd6df}
.logt tbody.hot b{color:#b3261e}.logt tbody.superseded .lnote span{text-decoration:line-through;color:#999}
.st{display:inline-block;padding:2px 8px;border-radius:99px;font-size:12px;font-weight:600}.st-ok{background:#e5f4e4;color:#1e6b2a}.st-open{background:#fdecea;color:#b3261e}
.st-log{background:#eef2f7;color:#4a5563}.st-void{background:#eee;color:#777}
@media (max-width:600px){table.logt{font-size:13px}.logt .tcol{display:none}.logt .mt{display:inline;color:#65646A}.logt th:nth-child(1){width:52px}.logt th:nth-child(3){width:62px}.logt th:nth-child(5){width:80px}.logt .yr{display:none}.st{padding:2px 5px;font-size:11px}.logt td,.logt th{padding:6px 4px}.logt .cat{word-break:break-word}}
#logbox{height:400px;overflow-y:auto;overscroll-behavior:contain}
.logt tr[data-act] td{height:36px;box-sizing:border-box}
.logmore{text-align:center;color:#65646A;font-size:13px;padding:10px}
.logf{margin:4px 0}.logf .row{gap:6px;flex-wrap:nowrap}.logf input[type=search]{padding:7px 10px;margin:0}.logf .btn{padding:7px 12px;margin:0}.logf .btn.on{background:#12528F;color:#fff}.logadv{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end;margin-top:8px}.evh{margin-top:14px}.evh h2{margin:0}#logcount{margin:2px 0;min-height:0}#logcount:empty{display:none}.logf label{display:flex;flex-direction:column;font-size:12px;color:#65646A;margin:0}
.logf input,.logf select{margin-top:2px;min-width:0;padding:6px 8px;font-size:14px}
@media (max-width:600px){.logt tr[data-act] td{height:44px}.logf label{flex:1 1 45%}}
.glance{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0 4px}
.gt{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid #d9dee5;border-left:6px solid #c3c9d1;border-radius:10px;padding:8px 10px;min-height:96px}
.gt:hover{box-shadow:0 1px 4px rgba(18,82,143,.18)}.gh{font-size:13px;color:#4a5563;font-weight:600}.gi{margin-right:4px}
.ga{font-size:20px;font-weight:700;margin:2px 0;color:#12528F}.gd{font-size:12px;color:#4a5563;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gt.g-ok{border-left-color:#2e8b3e}.gt.g-amber{border-left-color:#e3a008;background:#fffaf0}.gt.g-amber .ga{color:#9a6700}
.gt.g-red{border-left-color:#b3261e;background:#fdf1f0}.gt.g-red .ga{color:#b3261e}.gt.g-night{border-left-color:#8a8fb5}.gt.g-none .ga{color:#9aa1ab}.gt.g-info{border-left-color:#892994}
.gbar{height:6px;background:#e6ebf1;border-radius:3px;margin-top:6px;overflow:hidden}.gbar i{display:block;height:100%;background:#2b7bd0}.gsub{font-size:11px;color:#65646A}
.glegend{margin:2px 0 10px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 3px 0 8px;vertical-align:-1px}
.dot.g-ok{background:#2e8b3e}.dot.g-amber{background:#e3a008}.dot.g-red{background:#b3261e}.dot.g-night{background:#8a8fb5}
@media (max-width:480px){.glance{grid-template-columns:repeat(2,1fr)}.ga{font-size:17px}.gt{min-height:88px}}
#grf input[type=number]{width:72px;padding:4px 6px}#grf td{vertical-align:middle}
.pulse{border-radius:14px;padding:12px 14px;margin:10px 0 4px;background:#f2f8f3;border:1px solid #cfe6d3}
.pulse.p-amber{background:#fff8e8;border-color:#f0d9a0}.pulse.p-red{background:#fdf0ef;border-color:#f0c4c0}
.ph{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ph b{font-size:18px;color:#1e6b2a}.p-amber .ph b{color:#8a5a00}.p-red .ph b{color:#b3261e}
.pdot{width:12px;height:12px;border-radius:50%;background:#2e8b3e;box-shadow:0 0 0 4px rgba(46,139,62,.15)}
.p-amber .pdot{background:#e3a008;box-shadow:0 0 0 4px rgba(227,160,8,.18)}.p-red .pdot{background:#b3261e;box-shadow:0 0 0 4px rgba(179,38,30,.18);animation:pp 1.6s ease-in-out infinite}
@keyframes pp{50%{box-shadow:0 0 0 8px rgba(179,38,30,.06)}}@media (prefers-reduced-motion:reduce){.p-red .pdot{animation:none}}
.pmeta{font-size:13px;color:#65646A;margin-left:auto}
.pissues{list-style:none;margin:10px 0 2px;padding:0}.pissues li{margin:4px 0}.pulse .pissues a{display:flex;gap:8px;align-items:baseline;text-decoration:none;color:#3a2a00;font-size:15px}
.pulse .pissues li.l-red a{color:#8c1d16;font-weight:600}.pissues .pi-i{width:22px;text-align:center}
.prow{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}
.pi{display:flex;flex-direction:column;align-items:center;min-width:40px;padding:4px 2px;border-radius:8px;text-decoration:none;color:#65646A;opacity:.75}
.pi:hover{background:rgba(0,0,0,.04);opacity:1}.pi .pi-i{font-size:18px;filter:grayscale(.6)}.pi small{font-size:11px;line-height:1.2}
.pi.l-amber,.pi.l-red{opacity:1}.pi.l-amber .pi-i,.pi.l-red .pi-i{filter:none}.pi.l-amber small{color:#9a6700;font-weight:700}.pi.l-red small{color:#b3261e;font-weight:700}
.pi.l-none{opacity:.4}
@media (max-width:480px){.pmeta{margin-left:0;width:100%}.ph b{font-size:17px}}
