:root{--ink: #17242b;--ink-soft: #55676f;--page: #f4f6f7;--card: #ffffff;--line: #d3dade;--brand: #0b4f6c;--brand-ink: #ffffff;--brand-soft: #e6f1f6;--warn: #8a4b00;--warn-bg: #fdf1df;--bad: #9b1c1c;--radius: 12px;--tap: 48px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--ink: #e8eef1;--ink-soft: #9fb0b8;--page: #111a1f;--card: #17242b;--line: #2d3d46;--brand: #7fc4e0;--brand-ink: #06222e;--brand-soft: #1b3440;--warn: #ffcf8a;--warn-bg: #3a2c15;--bad: #ff9d9d;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--ink);font:17px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}h1{font-size:1.5rem;margin:0 0 4px}h2{font-size:1.15rem;margin:20px 0 8px}p{margin:8px 0}.muted{color:var(--ink-soft)}.small{font-size:.9rem}.error{color:var(--bad);font-weight:600}.brand{display:flex;align-items:baseline;gap:6px}.brand-name{font-weight:700;letter-spacing:.01em;color:var(--brand)}.brand-sub{color:var(--ink-soft);font-size:.85rem}.splash,.signin{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;width:100%;max-width:420px;display:flex;flex-direction:column;gap:4px}.card.wide{max-width:640px;margin:0 0 20px}label{font-weight:600;margin-top:12px}input[type=text],input[type=email],input[type=password],input[type=time],input[type=date],input[type=number],textarea,input:not([type]){min-height:var(--tap);padding:10px 12px;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;width:100%}textarea{min-height:88px;resize:vertical;line-height:1.45}input:focus-visible,textarea:focus-visible,button:focus-visible{outline:3px solid var(--brand);outline-offset:2px}button{min-height:var(--tap);padding:10px 18px;font:inherit;font-weight:600;color:var(--brand-ink);background:var(--brand);border:1px solid transparent;border-radius:8px;cursor:pointer;margin-top:12px}button[disabled]{opacity:.6;cursor:default}button.quiet{background:transparent;color:var(--brand);border-color:var(--line)}.shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--card);border-bottom:1px solid var(--line)}.topbar .who{margin-left:auto;display:flex;flex-direction:column;line-height:1.2;text-align:right}.topbar .who-name{font-weight:600}.topbar button{margin-top:0}main{padding:16px;max-width:900px;width:100%;margin:0 auto}.head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.head button{margin-top:0}.tabs{display:flex;gap:8px;margin:12px 0 4px;flex-wrap:wrap}.tabs button{margin-top:0;background:transparent;color:var(--ink);border-color:var(--line)}.tabs button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.notice{background:var(--warn-bg);color:var(--warn);border-radius:8px;padding:10px 12px;font-weight:600}.notice.warn{border:1px solid currentColor}.list{list-style:none;margin:8px 0;padding:0;display:flex;flex-direction:column;gap:8px}.row{width:100%;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin:0;text-align:left;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);font-weight:400}.row.static{cursor:default}.row.column{flex-direction:column;align-items:stretch;gap:8px}.row-line{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.row-main{font-weight:600}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.row-actions button{margin-top:0}li.is-off .row{opacity:.65}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:.85rem;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft)}.chip.warn{color:var(--warn);border-color:currentColor;background:var(--warn-bg)}.chip.off{color:var(--bad);border-color:currentColor}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:16px 0 0;padding:12px 14px}legend{font-weight:600;padding:0 6px}.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin-top:10px}.check input{width:22px;height:22px;margin-top:2px;flex:none}.password{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.6rem;letter-spacing:.06em;background:var(--page);border:1px dashed var(--line);border-radius:8px;padding:14px;text-align:center;-webkit-user-select:all;user-select:all}select{min-height:var(--tap);padding:10px 12px;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;width:100%}.dose{border-left:5px solid var(--line)}.dose.due{border-left-color:var(--brand)}.dose.overdue{border-left-color:var(--bad)}.dose.given{border-left-color:#1e8449}.dose.not-given{border-left-color:var(--warn)}.dose.upcoming{border-left-color:var(--line)}.time{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink-soft)}.chip.done{color:#1e8449;border-color:currentColor}.scroll{overflow-x:auto;margin:12px 0}table.register{width:100%;border-collapse:collapse;font-size:.92rem}table.register th,table.register td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}table.register th{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}table.register td small{display:block;color:var(--ink-soft)}table.register .num{text-align:right;font-variant-numeric:tabular-nums}table.register tr.mismatch td{background:var(--warn-bg)}.facts{margin:12px 0;display:flex;flex-direction:column;gap:8px}.facts>div{display:grid;grid-template-columns:minmax(120px,30%) 1fr;gap:12px}.facts dt{color:var(--ink-soft)}.facts dd{margin:0;font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a141a8c;display:flex;align-items:flex-start;justify-content:center;padding:16px;overflow:auto;z-index:10}.overlay-inner{width:100%;max-width:640px;margin:24px 0}.overlay .card{margin:0}.dose-amount{font-weight:600;margin:2px 0 0}button.tiny{min-height:32px;padding:2px 8px;font-size:.85rem;margin:0 0 0 8px}.tray-items li.is-cancelled{text-decoration:line-through;color:var(--ink-soft)}.warn-text{color:var(--warn);font-weight:600}.printout .sheet{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:0 0 16px}.sheet-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-start}.sheet-head h2{margin:0}.sheet-head p{margin:2px 0;color:var(--ink-soft);font-size:.9rem}.sheet-note{display:flex;flex-direction:column;text-align:right;font-size:.85rem;max-width:34ch}.sheet-foot{margin-top:12px;font-size:.8rem;color:var(--ink-soft)}.printout .allergy{border:2px solid var(--bad);color:var(--bad);font-weight:700;padding:6px 10px;border-radius:6px;margin:10px 0}.printout td.blank,.printout td.box{height:34px}@media print{.printout .sheet{border:0;padding:0;page-break-after:always}.printout .sheet:last-child{page-break-after:auto}.printout td.box,.printout td.blank{height:30px}@page{size:A4 landscape;margin:10mm}}.picker{list-style:none;margin:4px 0 0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;max-height:320px;overflow-y:auto}.picker li+li{border-top:1px solid var(--line)}.picker button{width:100%;margin:0;min-height:var(--tap);padding:10px 12px;background:var(--card);color:var(--ink);border:0;border-radius:0;text-align:left;font-weight:400;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;justify-content:space-between}.picker button:hover{background:var(--band, var(--page))}.bar.big{height:14px;margin:12px 0}.week{display:flex;flex-direction:column;gap:6px;margin:10px 0}.week-row{display:grid;grid-template-columns:44px 1fr 40px;gap:10px;align-items:center}.week-day{color:var(--ink-soft);font-size:.9rem}.week-bar{display:flex;height:18px;border-radius:4px;overflow:hidden;background:var(--line);min-width:2px}.week-bar span{display:block}.week-count{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.on-time{background:#1e8449}.late{background:#c77800}.not-given{background:var(--bad)}.key{display:inline-block;width:12px;height:12px;border-radius:3px;margin:0 6px 0 14px;vertical-align:-1px}.legend.small{font-size:.88rem;color:var(--ink-soft)}.live-summary{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}.live-summary .stat{flex:1 1 130px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.live-summary .stat b{display:block;font-size:1.3rem;line-height:1.2;font-variant-numeric:tabular-nums}.live-summary .stat span{color:var(--ink-soft);font-size:.85rem}.live-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin:12px 0}.live-card{border:1px solid var(--line);border-left:5px solid var(--line);border-radius:var(--radius);background:var(--card);padding:10px 12px}.live-card.waiting{border-left-color:var(--brand)}.live-card.overdue{border-left-color:var(--bad)}.live-card.done{border-left-color:#1e8449}.live-card.none{opacity:.6}.live-count{font-size:1.2rem;font-weight:600;margin:4px 0;font-variant-numeric:tabular-nums}.feed .row{min-height:44px}.bodymap{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.bodymap figure{margin:0;flex:1 1 200px;max-width:260px}.bodymap figcaption{font-weight:600;text-align:center;margin-bottom:4px}.bodymap svg{width:100%;height:auto;max-width:100%}.bodymap .map-note{flex:1 1 100%;margin:0}.bodymap .body rect,.bodymap .body circle{fill:var(--band, var(--card));stroke:var(--line);stroke-width:1.5}.bodymap .spot circle{fill:transparent;stroke:var(--ink-soft);stroke-width:1.5;stroke-dasharray:3 3;cursor:pointer}.bodymap .spot:hover circle{stroke:var(--brand);stroke-width:2.5}.bodymap .spot circle:focus-visible{outline:3px solid var(--brand)}.bodymap .spot.resting circle{fill:var(--warn-bg);stroke:var(--warn);stroke-dasharray:none}.bodymap .spot.on circle{fill:var(--brand);stroke:var(--brand);stroke-dasharray:none}.bodymap .spot-days{font-size:9px;fill:var(--warn);font-weight:600}.bodymap .spot.on .spot-days{fill:var(--brand-ink)}.scanner{margin:12px 0;border-radius:var(--radius);overflow:hidden;background:#000;aspect-ratio:4 / 3;max-width:100%}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.cards{list-style:none;margin:10px 0;padding:0;display:flex;flex-wrap:wrap;gap:10px}.cards>li{flex:1 1 260px;border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.card-head{display:flex;align-items:center;gap:8px}.swatch{width:14px;height:14px;border-radius:3px;border:1px solid var(--line);flex:none}.tray-items{list-style:none;margin:8px 0 0;padding:0}.tray-items li{padding:3px 0;border-bottom:1px dotted var(--line)}.tray-items li:last-child{border-bottom:0}.seal-sheet{position:relative;width:215.9mm;height:355.6mm;margin:0 auto 10mm;background:#fff;color:#000;font-family:system-ui,Segoe UI,sans-serif;transform:translate(var(--shift-x, 0mm),var(--shift-y, 0mm));box-shadow:0 0 0 1px var(--line);overflow:hidden}.seal-sheet .s-cell{position:absolute;border:.3mm solid #000;border-radius:3mm;overflow:hidden;display:flex;flex-direction:column}.seal-sheet .s-header{width:100%}.seal-sheet .s-name{font-size:7pt;font-weight:700;text-align:center;line-height:1.1;padding-top:.5mm}.seal-sheet .s-meds{flex:1;padding:.5mm 1mm;line-height:1.15;overflow:hidden}.seal-sheet .s-footer{font-size:6.5pt;text-align:center;border-top:.2mm solid #000;line-height:1.2}.seal-sheet .s-day{position:absolute;left:12mm;transform:translate(-50%,-50%) rotate(-90deg);font-size:8pt;letter-spacing:.02em}.seal-sheet .s-warning{position:absolute;left:24.8mm;top:317.8mm;font-size:8pt;font-weight:600}.seal-sheet .s-tray{position:absolute;left:33mm;top:323.5mm;width:18mm;height:11mm;border:.4mm solid #000;border-radius:1.5mm;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:7pt;line-height:1.1}.seal-sheet .s-resident,.seal-sheet .s-pharmacy{position:absolute;top:323.5mm;display:flex;flex-direction:column;font-size:7.5pt;line-height:1.25}.seal-sheet .s-resident{left:66.4mm}.seal-sheet .s-pharmacy{left:117.7mm}.seal-sheet .s-code{position:absolute;left:178mm;top:313mm;display:flex;flex-direction:column;align-items:center}.seal-sheet .s-code-box{width:14mm;height:14mm}.seal-sheet .s-code-box svg{width:100%;height:100%;display:block;shape-rendering:crispEdges}.seal-sheet .s-code-text{font-size:5.5pt;margin-top:.5mm}.seal-sheet .s-printed{position:absolute;right:10mm;top:345mm;font-size:6pt;color:#444}.seal-sheet .s-outline{position:absolute;border:.3mm dashed #000;border-radius:3mm;display:grid;place-items:center;font-size:7pt;color:#666}.seal-sheet .s-tick{position:absolute;font-size:5pt;color:#444}.seal-sheet .s-tick.x{top:2mm;border-left:.2mm solid #000;padding-left:.4mm;height:4mm}.seal-sheet .s-tick.y{left:2mm;border-top:.2mm solid #000;padding-top:.4mm;width:6mm}.seal-sheet .s-align-note{position:absolute;left:24.6mm;top:320mm;display:flex;flex-direction:column;font-size:8pt;line-height:1.4}@media print{.seals .seal-sheet{box-shadow:none;margin:0;page-break-after:always}.seals{background:#fff}}.slot{border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin:10px 0;background:var(--card)}.slot-top{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.slot-top>div{flex:1 1 160px}.slot-top>div.narrow{flex:0 1 110px}.slot-top label,.slot-top button{margin-top:0}.days{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px}button.day{margin-top:0;min-height:38px;padding:4px 10px;font-size:.9rem;background:transparent;color:var(--ink);border-color:var(--line)}button.day.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.slot details{margin-top:10px}.slot summary{cursor:pointer;color:var(--brand);font-size:.9rem}.slot-extra{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.slot-extra>div{flex:1 1 180px}.preview{border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;margin-top:12px}.preview ul{margin:8px 0 0;padding-left:20px}.preview li{font-variant-numeric:tabular-nums}.bar{height:8px;border-radius:999px;background:var(--line);overflow:hidden}.bar span{display:block;height:100%;background:var(--brand)}.chart-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.chart-header h2{margin:0}table.mar{border-collapse:collapse;width:100%;font-size:.9rem}table.mar th,table.mar td{border:1px solid var(--line);padding:6px 8px}table.mar th.med{text-align:left;min-width:190px;font-weight:600}table.mar th.med small{display:block;font-weight:400;color:var(--ink-soft)}table.mar td.at,table.mar th.at{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}table.mar th.day{text-align:center;white-space:nowrap}table.mar th.day span{display:block}table.mar td.box{text-align:center;min-width:40px;font-weight:600}table.mar td.box.given{color:#1e8449}table.mar td.box.not-given{color:var(--warn)}table.mar td.box.overdue{color:var(--bad)}table.mar td.box.none{background:repeating-linear-gradient(45deg,transparent,transparent 4px,var(--line) 4px,var(--line) 5px)}table.mar sup{font-size:.7em;color:var(--ink-soft)}.legend{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:16px 0}.legend strong{margin-right:4px}.chip.unread{color:var(--brand-ink);background:var(--brand);border-color:var(--brand);font-weight:600}.thread{display:flex;flex-direction:column;gap:10px;max-height:46vh;overflow-y:auto;padding:4px 2px;margin:12px 0}.bubble{border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px;max-width:88%}.bubble.mine{align-self:flex-end;background:var(--brand-soft)}.bubble.theirs{align-self:flex-start;background:var(--card)}.bubble p{margin:2px 0;white-space:pre-wrap}.live-card .chips{margin-top:6px}button.link{margin:0;padding:0;min-height:0;background:none;border:0;color:inherit;font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}@media print{.topbar,.tabs,.no-print,button{display:none!important}body{background:#fff;color:#000;font-size:11pt}main{max-width:none;padding:0}.scroll{overflow:visible}table.mar{font-size:9pt}table.mar th,table.mar td{border-color:#666}table.mar td.box.none{background:#eee}.notice,.chip{border:1px solid #666}@page{size:A4 landscape;margin:10mm}}@media(max-width:480px){.topbar{flex-wrap:wrap}main{padding:12px}}
