html,body{height:100%}body{max-width:none;margin:0;padding:0;font-family:sans-serif}#root{box-sizing:border-box;flex-direction:column;height:100vh;padding:24px 16px;display:flex;overflow:hidden}#root>*{flex:none}#root>.grid-wrap{flex:auto;min-height:0}.appbar{align-items:center;gap:16px;margin:0 0 8px;display:flex}.appbar .brand{cursor:pointer;border-radius:10px;align-items:center;gap:12px;margin-left:-8px;padding:4px 8px;transition:transform 80ms;display:flex}.appbar .brand:hover .logo{filter:brightness(1.05)drop-shadow(0 2px 6px #00000040);transform:scale(1.04)}.appbar .brand:hover h1{text-shadow:0 2px 6px #00000047}.appbar .brand:active{transform:scale(.99)}.appbar .brand:focus-visible{outline-offset:3px;outline:2px solid #2563eb}.appbar .logo{flex:none;width:auto;height:56px;transition:transform 80ms,filter .12s}.appbar h1{white-space:nowrap;margin:0;font-size:26px;transition:text-shadow .12s}label{font-weight:700}select{padding:8px;font-size:14px}#toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0;display:flex}.ps-wrap{display:inline-block;position:relative}.ps-button{cursor:pointer;text-align:left;color:#111827;background:#fff;border:1px solid #d1d5db;border-radius:6px;align-items:center;gap:8px;min-width:300px;max-width:580px;padding:7px 10px;font-size:14px;display:inline-flex}.ps-button:hover{background:#f9fafb}.ps-current{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.ps-arrow{color:#6b7280;flex:none;font-size:12px}.ps-placeholder{color:#9ca3af}.ps-list{z-index:30;background:#fff;border:1px solid #d1d5db;border-radius:6px;width:max-content;min-width:100%;max-width:90vw;max-height:60vh;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;overflow:auto;box-shadow:0 10px 30px #0000002e}.ps-opt{cursor:pointer;white-space:nowrap;border-radius:4px;padding:6px 8px}.ps-opt:hover{background:#eff6ff}.ps-opt.sel{background:#e0ecff}.ps-group{color:#6b7280;text-transform:uppercase;letter-spacing:.03em;padding:8px 8px 2px;font-size:12px}.ps-cardno{color:#2563eb}.ps-name,.ps-species,.ps-owner{font-weight:700}.ps-native{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;bottom:0;left:0;overflow:hidden}.btn-add{cursor:pointer;color:#fff;background:#16a34a;border:1px solid #16a34a;border-radius:6px;padding:8px 14px;font-size:14px}.btn-add:hover{background:#15803d;border-color:#15803d}.btn-archive,.btn-restore{cursor:pointer;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:8px 14px;font-size:14px}.btn-archive:hover,.btn-restore:hover{background:#f3f4f6}.btn-restore{color:#2563eb;border-color:#2563eb}.btn-delete{cursor:pointer;color:#b91c1c;background:#fee2e2;border:1px solid #fecaca;border-radius:6px;padding:8px 14px;font-size:14px}.btn-delete:hover{background:#fecaca}.btn-add:disabled,.btn-archive:disabled,.btn-restore:disabled{opacity:.5;cursor:not-allowed}.btn-archive.active:disabled:hover{background:#b45309;border-color:#b45309}#controls{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0;padding:8px;display:flex}#controls button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:6px 12px;font-size:14px}#controls button:hover{background:#f3f4f6}#controls button.active{color:#fff;background:#2563eb;border-color:#2563eb}#controls button:disabled{opacity:.45;cursor:default;background:#fff}#controls input[type=date]{padding:6px;font-size:14px}#controls .wc-date{display:inline-flex;position:relative}#controls .wc-date-btn{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}#controls .wc-date-btn .wc-cal{font-size:13px;line-height:1}#controls .wc-date-native{opacity:0;pointer-events:none;border:0;width:100%;height:1px;margin:0;padding:0;position:absolute;bottom:0;left:0}#controls .sep{flex:0 0 12px}#controls .ctrl-copyday{color:#2563eb;border-color:#2563eb;margin-left:auto}#controls .ctrl-copyday:hover{background:#eff6ff}#controls .ctrl-clearday{color:#dc2626;border-color:#dc2626}#controls .ctrl-clearday:hover{background:#fee2e2}#card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;margin:12px 0;padding:12px 16px;font-size:14px}#card dl{grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;display:grid}#card dt{color:#6b7280}#card dd{margin:0}#card.archived{border-color:#d1d5db}#card.archived .pet-name{color:#9ca3af;font-weight:700}.archive-banner{border-radius:6px 6px 0 0;margin:-12px -16px 12px;padding:8px 16px;font-size:14px;font-weight:700}.archive-banner.discharged{color:#374151;background:#e5e7eb}.archive-banner.deceased{color:#fff;background:#4b5563}.grid-wrap{border:1px solid #e5e7eb;border-radius:6px;overflow:auto}table.grid{border-collapse:collapse;white-space:nowrap;table-layout:fixed;width:100%;font-size:13px}table.grid.interactive{-webkit-user-select:none;user-select:none}table.grid th,table.grid td{border:1px solid #eceff3;padding:0}table.grid thead th{z-index:2;text-align:center;background:#f3f4f6;padding:4px 6px;font-weight:400;position:sticky;top:0}table.grid th.corner{z-index:3;text-align:left;width:230px;min-width:230px;font-weight:700;left:0}.col-d{color:#2563eb;font-size:11px;font-weight:700}.col-h{font-size:13px}td.rowhead,th.corner{background:#fff;position:sticky;left:0}td.rowhead{text-align:left;white-space:normal;z-index:1;min-width:230px;max-width:230px;padding:6px 8px}td.rowhead .unit{color:#6b7280;font-size:11px}td.rowhead .unit.comment{vertical-align:bottom;text-overflow:ellipsis;white-space:nowrap;max-width:200px;display:inline-block;overflow:hidden}tr.cat td.cat{white-space:nowrap;background:#eef2ff;padding:0;font-weight:700}tr.cat td.cat .cat-inner{z-index:1;background:#eef2ff;align-items:center;padding:4px 8px;display:inline-flex;position:sticky;left:0}tr.cat .cat-label{vertical-align:middle}.cat-add{cursor:pointer;vertical-align:middle;color:#4338ca;background:#fff;border:1px solid #c7d2fe;border-radius:4px;margin-left:10px;padding:2px 9px;font-size:13px;font-weight:700;line-height:1}.cat-add:hover{color:#fff;background:#4338ca;border-color:#4338ca}td.cell{text-align:center;vertical-align:middle;min-width:64px;height:34px}td.cell .cellbox{text-overflow:ellipsis;border-style:solid;border-width:2px;border-radius:4px;justify-content:center;align-items:center;min-height:28px;margin:2px;padding:0 2px;display:flex;position:relative;overflow:hidden}.cellbox .resize-grip{cursor:ew-resize;z-index:2;position:absolute;top:0;bottom:0}.cellbox .resize-grip.start{left:0}.cellbox .resize-grip.end{right:0}.cellbox .resize-grip:after{color:#111827e6;text-shadow:0 0 2px #fff,0 0 3px #fff,0 0 4px #fff;opacity:0;pointer-events:none;font-size:22px;font-weight:700;line-height:1;transition:opacity .1s;position:absolute;top:50%;transform:translateY(-50%)}.cellbox .resize-grip.start:after{content:"◂";left:2px}.cellbox .resize-grip.end:after{content:"▸";right:2px}table.grid.interactive td.cell:hover .resize-grip:after{opacity:.7}.cellbox .resize-grip:hover:after{opacity:1}table.grid.interactive td.cell:hover .resize-grip{background-image:repeating-linear-gradient(45deg,#11182700 0 3px,#11182726 3px 6px)}.cellbox .resize-grip:hover{background-image:repeating-linear-gradient(45deg,#11182700 0 3px,#11182747 3px 6px)}.resize-preview{pointer-events:none;z-index:50;position:fixed;inset:0}.resize-preview .rp-keep,.resize-preview .rp-cut{box-sizing:border-box;border-radius:4px;position:absolute}.resize-preview .rp-keep{background:#2563eb1a;border:2px solid #2563eb;box-shadow:0 0 0 2px #2563eb2e,0 1px 6px #2563eb40}.resize-preview .rp-cut{background:repeating-linear-gradient(45deg,#dc262624,#dc262624 6px,#dc26264d 6px 12px);border:2px dashed #dc2626d9;justify-content:center;align-items:center;display:flex}.resize-preview .rp-cut-x{color:#b91c1ceb;text-shadow:0 0 3px #fff;font-size:16px;font-weight:700}.cellbox{border-color:#0000}.cellbox.b-green{border-color:#16a34a}.cellbox.b-orange{border-color:#f97316}.cellbox.b-red{border-color:#dc2626}td.cell .cellbox .cellval{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}td.cell .cellbox .cell-cmt{z-index:1;color:#b91c1c;pointer-events:none;font-size:10px;font-weight:700;line-height:1;position:absolute;top:0;right:2px}table.grid.interactive td.cell{cursor:pointer}table.grid.interactive td.cell:hover{background:#eff6ff}table.grid.interactive td.cell.paint-sel{background:#bfdbfe;box-shadow:inset 0 0 0 2px #3b82f6}tr.addrow td.rowhead{color:#2563eb;font-weight:700}tr.addrow td.addlabel{cursor:pointer}tr.addrow td.addlabel:hover{background:#eff6ff;text-decoration:underline}table.grid.interactive td.rowhead.proc-click{cursor:pointer}table.grid.interactive td.rowhead.proc-click:hover{background:#eff6ff;text-decoration:underline}tr.addrow td.cell:hover:after{content:"+";color:#93c5fd;font-size:18px}#status{min-height:18px;margin-top:10px;font-size:14px}#status.ok{color:#16a34a}#status.err{color:#dc2626}.hint{color:#6b7280;margin:8px 0;font-size:13px}.ctxmenu{z-index:50;background:#fff;border:1px solid #d1d5db;border-radius:6px;min-width:170px;padding:4px;position:fixed;box-shadow:0 6px 20px #0000002e}.ctxitem{text-align:left;cursor:pointer;color:#374151;background:0 0;border:none;border-radius:4px;width:100%;padding:8px 12px;font-size:14px;display:block}.ctxitem:hover{background:#f3f4f6}.ctxitem.danger{color:#b91c1c}.ctxitem.danger:hover{background:#fee2e2}table.overview-grid thead th.ovh-pat{z-index:5;text-align:left;box-sizing:border-box;width:160px;min-width:160px;max-width:160px;left:0;box-shadow:inset -2px 0 #d1d5db}table.overview-grid td.ov-pat{z-index:1;box-sizing:border-box;white-space:normal;text-align:center;vertical-align:middle;cursor:pointer;background:#fff;width:160px;min-width:160px;max-width:160px;padding:6px 8px;font-size:130%;font-weight:700;position:sticky;left:0;box-shadow:inset -2px 0 #d1d5db}table.overview-grid td.ov-pat:hover{background:#eff6ff}table.overview-grid td.cell{vertical-align:top;min-width:132px;padding:2px}table.overview-grid td.cell .cell-icons{flex-wrap:wrap;place-content:center;gap:2px;margin:0 auto;display:flex}table.overview-grid td.cell .cell-icons.rows-1{max-width:128px}table.overview-grid td.cell .cell-icons.rows-2{max-width:98px}table.overview-grid td.cell .cell-icons.rows-3{max-width:73px}table.overview-grid td.cell .cell-icons.rows-1>*{width:24px;height:24px}table.overview-grid td.cell .cell-icons.rows-2>*{width:18px;height:18px}table.overview-grid td.cell .cell-icons.rows-3>*{width:13px;height:13px}table.overview-grid .proc-icon{color:#111827;flex:none;line-height:0;display:block}table.overview-grid .proc-icon svg{width:100%;height:100%;display:block}table.overview-grid .proc-icon.s-pending{color:#111827}table.overview-grid .proc-icon.s-done{color:#16a34a}table.overview-grid .proc-icon.s-due{color:#f59e0b}table.overview-grid .proc-icon.s-overdue{color:#dc2626;animation:1s infinite proc-blink}@keyframes proc-blink{0%,50%{opacity:1}50.01%,to{opacity:.12}}table.overview-grid td.cell .cell-procs{flex-direction:column;gap:2px;display:flex}table.overview-grid td.cell .cell-procs.multi{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2px 6px;display:grid}table.overview-grid td.cell .cell-procs.multi .proc-row{min-width:0}table.overview-grid td.cell .cell-procs .proc-row{align-items:flex-start;gap:4px;line-height:1.15;display:flex}table.overview-grid .cell-procs .proc-icon{width:18px;height:18px}table.overview-grid .cell-procs .proc-val{color:#111827;overflow-wrap:anywhere;white-space:normal;text-align:left;flex:auto;min-width:0;font-size:12px}table.overview-grid .cell-procs .proc-row.s-done .proc-val{color:#16a34a}table.overview-grid .cell-procs .proc-row.s-due .proc-val{color:#f59e0b}table.overview-grid .cell-procs .proc-row.s-overdue .proc-val{color:#dc2626}table.overview-grid .cell-procs .proc-cmt{color:#b91c1c;flex:none;font-size:11px;font-weight:700;line-height:1.15}table.overview-grid td.ov-pat .ov-card{color:#2563eb;font-size:11px;font-weight:600;display:block}table.overview-grid td.ov-pat .ov-nameline{flex-wrap:wrap;justify-content:center;align-items:center;gap:5px;display:flex}table.overview-grid td.ov-pat .ov-name{font-weight:600}table.overview-grid td.ov-pat .ov-sev{border:1px solid #0000004d;border-radius:50%;flex:none;width:13px;height:13px;box-shadow:inset 0 0 0 1px #ffffff8c}table.overview-grid td.ov-pat .ov-species{color:#111827;flex:none;display:inline-flex}table.overview-grid td.ov-pat .ov-species svg{width:1.8em;height:1.8em;display:block}table.overview-grid td.ov-pat.ov-archived,table.overview-grid td.ov-cat.ov-archived{background:#f3f4f6;box-shadow:inset 4px 0 #9ca3af}table.overview-grid td.ov-pat.ov-archived.reason-deceased,table.overview-grid td.ov-cat.ov-archived.reason-deceased{box-shadow:inset 4px 0 #b91c1c}table.overview-grid td.ov-pat.ov-archived .ov-name{color:#6b7280;font-style:italic}table.overview-grid td.ov-pat.ov-archived .ov-card{color:#9ca3af}table.overview-grid td.ov-pat .ov-arch{margin-top:2px;font-size:11px;font-style:normal;font-weight:700;display:block}table.overview-grid td.ov-pat.ov-archived.reason-deceased .ov-arch{color:#b91c1c}table.overview-grid td.ov-pat.ov-archived.reason-discharged .ov-arch{color:#6b7280}table.grid td.cell.ov-gone,table.grid td.cell.ov-pre{background:#e5e7eb}table.grid.interactive td.cell.ov-pre{cursor:default}table.grid.interactive td.cell.ov-pre:hover{background:#e5e7eb}table.grid thead th.col.ov-pre{color:#9ca3af;background:#f3f4f6}table.overview-grid .ov-discharge{box-sizing:border-box;white-space:normal;text-align:center;color:#4b5563;background:#f3f4f6;border:1px solid #d1d5db;border-radius:4px;width:100%;margin-top:3px;padding:6px 4px;font-size:15px;font-weight:700;line-height:1.25;display:block}table.overview-grid .ov-discharge.reason-deceased{color:#b91c1c;background:#fee2e2;border-color:#fca5a5}table.grid thead th.col .th-disch{white-space:normal;margin-top:2px;font-size:11px;font-weight:700;line-height:1.05;display:block}table.grid thead th.col .th-disch.reason-discharged{color:#374151}table.grid thead th.col .th-disch.reason-deceased{color:#b91c1c}table.grid thead th.col.disch-line,table.grid td.cell.disch-line{border-left:3px solid #dc2626}table.grid thead th.col.adm-line,table.grid td.cell.adm-line{border-left:3px solid #16a34a}table.grid thead th.col .th-adm{color:#16a34a;white-space:normal;margin-top:2px;font-size:11px;font-weight:700;line-height:1.05;display:block}table.grid td.cell.now-col{z-index:0;position:relative}.now-line{z-index:0;pointer-events:none;background:#4b5563;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}table.grid td.cell.now-col>:not(.now-line),table.grid thead th.col.now-col>:not(.now-line){z-index:1;position:relative}td.cell.now-past{background:#f3f4f6}table.grid thead th.col.now-past{background:#e9ebee}table.grid.interactive td.cell.now-past:not(.ov-pre):hover{background:#fff}table.overview-grid tr.ov-inactive td.cell{background:#e5e7eb}table.overview-grid tr.ov-inactive .proc-icon{filter:grayscale();opacity:.55}table.overview-grid tr.ov-inactive .proc-row .proc-val{color:#6b7280!important}table.overview-grid tr.ov-inactive .cellbox.bar{color:#4b5563;background:#cbd5e1!important}table.overview-grid .proc-row.clickable{cursor:pointer;border-radius:4px}table.overview-grid .proc-row.clickable:hover{background:#eff6ff;box-shadow:inset 0 0 0 1px #bfdbfe}.quick-pop{z-index:60;background:#fff;border:1px solid #d1d5db;border-radius:8px;min-width:248px;max-width:340px;padding:6px;font-size:13px;position:fixed;box-shadow:0 10px 28px #0003}.quick-pop .qp-head{border-bottom:1px solid #eceff3;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding:2px 4px 6px;display:flex}.quick-pop .qp-title{color:#111827;font-weight:700}.quick-pop .qp-close{cursor:pointer;color:#6b7280;background:0 0;border:none;padding:2px 4px;font-size:15px;line-height:1}.quick-pop .qp-close:hover{color:#111827}.quick-pop .qp-list{flex-direction:column;gap:2px;max-height:340px;display:flex;overflow-y:auto}.quick-pop .qp-row{border-radius:5px;align-items:center;gap:7px;padding:3px 4px;display:flex}.quick-pop .qp-row:hover{background:#f9fafb}.quick-pop .qp-dot{background:#111827;border-radius:50%;flex:none;width:10px;height:10px}.quick-pop .qp-row.s-done .qp-dot{background:#16a34a}.quick-pop .qp-row.s-due .qp-dot{background:#f59e0b}.quick-pop .qp-row.s-overdue .qp-dot{background:#dc2626}.quick-pop .qp-label{text-overflow:ellipsis;white-space:nowrap;color:#111827;flex:auto;min-width:0;overflow:hidden}.quick-pop .qp-unit{color:#6b7280;font-size:11px}.quick-pop .qp-input{border:1px solid #d1d5db;border-radius:4px;flex:0 0 88px;width:88px;padding:3px 6px;font-size:13px}.quick-pop .qp-input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 2px #2563eb33}.quick-pop .qp-row.saved .qp-input{background:#f0fdf4;border-color:#16a34a}.quick-pop .qp-row.save-err .qp-input{background:#fef2f2;border-color:#dc2626}.quick-pop .qp-hint{color:#9ca3af;padding:6px 4px 2px;font-size:11px}.quick-pop .qp-foot{justify-content:flex-end;padding:6px 4px 2px;display:flex}.quick-pop #qp-accept{cursor:pointer;color:#fff;background:#2563eb;border:1px solid #2563eb;border-radius:6px;padding:6px 16px;font-size:14px;font-weight:600}.quick-pop #qp-accept:hover{background:#1d4ed8}table.overview-grid td.ov-cat{z-index:1;box-sizing:border-box;color:#4b5563;vertical-align:middle;background:#eef2f7;width:160px;min-width:160px;max-width:160px;padding:4px 8px 4px 18px;font-size:12px;position:sticky;left:0;box-shadow:inset -2px 0 #d1d5db}table.overview-grid tr.ov-barrow td.cell{vertical-align:middle}table.overview-grid td.ovbar{padding:0}.cellbox.bar{white-space:nowrap;justify-content:flex-start;padding-left:6px;font-size:12px}table.grid td.cell.bar{padding:0}.cellbox.bar .bartext{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.card-no{color:#2563eb;font-weight:600}.modal-overlay{z-index:10;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:8px;width:360px;max-width:92vw;max-height:92vh;padding:20px;overflow:auto;box-shadow:0 10px 30px #0003}.modal.wide{width:480px;max-height:88vh;overflow:auto}.modal h3{margin:0 0 12px}.modal label{margin-top:10px;display:block}.modal select,.modal input,.modal textarea{box-sizing:border-box;width:100%;margin-top:4px;padding:8px;font-size:14px}.modal .when{margin-top:10px;font-size:14px}.modal .frow{gap:12px;display:flex}.modal .frow>div{flex:1}.modal-actions{gap:8px;margin-top:16px;display:flex}.modal-actions button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:8px 14px;font-size:14px}#m-save,#p-save,#pm-save{color:#fff;background:#2563eb;border-color:#2563eb}#m-delete,#pm-delete-proc{color:#b91c1c;background:#fee2e2;border-color:#fecaca;margin-left:auto}#cld-clear{color:#fff;background:#dc2626;border-color:#dc2626}#cld-clear:disabled{cursor:default;background:#fca5a5;border-color:#fca5a5}#m-status,#p-status,#pm-status{min-height:16px;margin-top:10px;font-size:13px}#m-status.err,#p-status.err,#pm-status.err{color:#dc2626}#m-status.ok,#p-status.ok,#pm-status.ok{color:#16a34a}body.archive-mode{background:#f0e9da}body.archive-mode .appbar{border-bottom:3px solid #b45309;padding-bottom:8px}body.archive-mode .appbar h1{color:#7c2d12}body.archive-mode #toolbar{background:#e8dcc4;border:1px solid #d6c3a0;border-radius:6px;padding:8px}body.archive-mode #card{background:#ece2cd;border-color:#d6c3a0}body.archive-mode .grid-wrap{border-color:#d6c3a0}.btn-archive.active{color:#fff;background:#b45309;border-color:#b45309}.btn-archive.active:hover{background:#92400e;border-color:#92400e}.archive-screen{padding:12px}.archive-screen .archive-head{flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:12px;display:flex}.archive-screen h2{color:#7c2d12;margin:0;font-size:18px}#arch-search{background:#fff;border:1px solid #d6c3a0;border-radius:6px;min-width:280px;padding:8px 10px;font-size:14px}table.archive-table{border-collapse:collapse;white-space:normal;background:#fff;width:100%;font-size:14px}table.archive-table th,table.archive-table td{text-align:left;border:1px solid #e7dcc6;padding:8px 10px}table.archive-table thead th{color:#5b4636;background:#e8dcc4;font-weight:700}table.archive-table tbody tr{cursor:pointer}table.archive-table tbody tr:hover{background:#fbf6ec}table.archive-table .reason-deceased{color:#b91c1c;font-weight:700}table.archive-table .reason-discharged{color:#374151}.archive-empty{color:#6b7280;padding:16px}.archive-pager{z-index:5;background:#fff;border:1px solid #d1d5db;border-radius:8px;flex-wrap:wrap;align-items:center;gap:14px;margin-top:10px;padding:10px 12px;display:flex;position:sticky;bottom:0;box-shadow:0 -4px 12px #0000000f}body.archive-mode .archive-pager{background:#e8dcc4;border-color:#d6c3a0}.archive-pager .arch-pager-label{font-weight:600}.archive-pager .arch-pagesizes{gap:6px;display:inline-flex}.archive-pager .arch-size{padding:6px 12px}.archive-pager .arch-pager-count{color:#6b7280}.archive-pager .arch-pager-nav{align-items:center;gap:10px;margin-left:auto;display:inline-flex}.archive-pager .arch-pager-page{text-align:center;min-width:120px}.login-overlay{z-index:100;background:linear-gradient(135deg,#1e3a8a 0%,#2563eb 100%);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-box{background:#fff;border-radius:12px;flex-direction:column;width:340px;max-width:92vw;padding:28px 32px;display:flex;box-shadow:0 20px 50px #00000059}.login-box .login-logo{align-self:center;width:auto;height:56px;margin-bottom:8px}.login-box h2{text-align:center;color:#1e3a8a;margin:0 0 16px;font-size:19px}.login-box label{margin-top:10px;font-size:13px;font-weight:700}.login-box input{box-sizing:border-box;border:1px solid #d1d5db;border-radius:6px;width:100%;margin-top:4px;padding:9px 10px;font-size:15px}.login-box input:focus{border-color:#2563eb;outline:none;box-shadow:0 0 0 2px #2563eb33}.login-box #login-submit{cursor:pointer;color:#fff;background:#2563eb;border:1px solid #2563eb;border-radius:6px;margin-top:18px;padding:10px;font-size:15px;font-weight:600}.login-box #login-submit:hover{background:#1d4ed8}.login-error{color:#dc2626;text-align:center;min-height:18px;margin-top:10px;font-size:13px}.appbar .user-area{align-items:center;gap:10px;margin-left:auto;display:flex}.user-chip{color:#374151;text-align:right;flex-direction:column;font-size:13px;line-height:1.2;display:flex}.user-chip #user-name{font-weight:700}.user-chip .user-role{color:#6b7280;font-size:12px}.appbar-burger{display:none}.appbar-menu{display:contents}#umodal .modal{width:860px;padding:24px 28px}#ueditmodal .modal{width:680px;padding:24px 28px}.u-toolbar{margin:0 0 14px}table.u-table{border-collapse:collapse;white-space:normal;width:100%;font-size:14px}table.u-table th,table.u-table td{text-align:left;border:1px solid #e5e7eb;padding:7px 9px}table.u-table thead th{background:#f3f4f6;font-weight:700}table.u-table .u-permcount{color:#6b7280;white-space:nowrap}table.u-table .u-actions{white-space:nowrap}table.u-table .u-actions button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:5px;padding:4px 10px;font-size:13px}table.u-table .u-actions .u-edit{color:#2563eb;border-color:#2563eb}table.u-table .u-actions .u-edit:hover{background:#eff6ff}table.u-table .u-actions .u-del{color:#b91c1c;border-color:#fecaca}table.u-table .u-actions .u-del:hover{background:#fee2e2}.role-badge{border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.role-badge.role-administrator{color:#6d28d9;background:#ede9fe}.role-badge.role-doctor{color:#15803d;background:#dcfce7}.role-badge.role-assistant{color:#0369a1;background:#e0f2fe}.ue-perms-head{margin-top:14px;font-size:13px;font-weight:700}.ue-perms{border:1px solid #e5e7eb;border-radius:6px;max-height:420px;margin-top:6px;padding:8px 12px;overflow-y:auto}.ue-perm{cursor:pointer;align-items:flex-start;gap:8px;padding:5px 0;font-weight:400;display:flex}.ue-perm input{flex:none;width:auto;margin:2px 0 0}#ue-username:disabled{color:#6b7280;background:#f3f4f6}#ue-save{color:#fff;background:#2563eb;border-color:#2563eb}#u-status,#ue-status{min-height:16px;margin-top:10px;font-size:13px}#u-status.ok,#ue-status.ok{color:#16a34a}#u-status.err,#ue-status.err{color:#dc2626}#catmodal .modal{width:560px}.cat-section{margin-top:16px}.cat-section-head{color:#4338ca;border-bottom:1px solid #e5e7eb;margin-bottom:6px;padding-bottom:4px;font-weight:700}.cat-list{margin:0;padding:0;list-style:none}.cat-item{border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;gap:8px;padding:5px 2px;display:flex}.cat-item-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.cat-builtin{color:#9ca3af;flex:none;font-size:11px}.cat-del{color:#b91c1c;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:5px;flex:none;padding:2px 9px;font-size:13px;line-height:1}.cat-del:hover:not(:disabled){background:#fee2e2}.cat-add-row{gap:8px;margin-top:8px;display:flex}.cat-add-row input{margin-top:0}.cat-add-row .btn-add{flex:none}#cat-status{min-height:16px;margin-top:12px;font-size:13px}#cat-status.ok{color:#16a34a}#cat-status.err{color:#dc2626}.tpl-menu{z-index:30;background:#fff;border:1px solid #d1d5db;border-radius:8px;min-width:240px;max-width:320px;padding:6px;position:fixed;box-shadow:0 10px 30px #0003}.tpl-menu-head{color:#6b7280;padding:4px 8px;font-size:12px;font-weight:700}.tpl-menu-empty{color:#6b7280;padding:8px;font-size:13px}.tpl-menu-item{cursor:pointer;text-align:left;background:#fff;border:none;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:8px 10px;font-size:14px;display:flex}.tpl-menu-item:hover:not(:disabled){background:#eff6ff}.tpl-menu-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.tpl-menu-count{color:#6b7280;flex:none;font-size:12px}.tpl-confirm{max-width:300px;padding:8px}.tpl-confirm-text{font-size:13px;line-height:1.35}.tpl-confirm-actions{gap:8px;margin-top:12px;display:flex}.tpl-confirm-actions button{cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:7px 12px;font-size:13px}.tpl-confirm-actions button:first-child{color:#fff;background:#dc2626;border-color:#dc2626}#tplmodal .modal{width:760px}.tpl-config{gap:16px;margin-top:12px;display:flex}.tpl-list{border-right:1px solid #e5e7eb;flex-direction:column;flex:0 0 220px;gap:4px;padding-right:12px;display:flex}.tpl-list-item{cursor:pointer;text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;font-size:14px;display:flex}.tpl-list-item:hover{background:#f8fafc}.tpl-list-item.active{background:#eff6ff;border-color:#2563eb}.tpl-list-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.tpl-list-count{color:#6b7280;flex:none;font-size:12px}.tpl-add{margin-top:6px}.tpl-editor{flex:auto;min-width:0}.tpl-procs{columns:2;border:1px solid #e5e7eb;border-radius:6px;column-gap:20px;max-height:360px;margin-top:10px;padding:8px 12px;overflow-y:auto}.tpl-cat{break-inside:avoid;margin-bottom:8px}.tpl-cat-head{color:#4338ca;border-bottom:1px solid #eee;margin-bottom:4px;font-size:12px;font-weight:700}.tpl-procs .tpl-proc{cursor:pointer;align-items:center;gap:8px;margin-top:0;padding:3px 0;font-weight:400;display:flex}.tpl-procs .tpl-proc input{flex:none;width:auto;margin:0}.tpl-del-btn{color:#b91c1c;background:#fee2e2;border-color:#fecaca;margin-left:auto}#tpl-status{min-height:16px;margin-top:10px;font-size:13px}#tpl-status.ok{color:#16a34a}#tpl-status.err{color:#dc2626}.modal input:disabled,.modal select:disabled,.modal .datefield-btn:disabled{color:#6b7280;cursor:not-allowed;background:#f3f4f6}.datefield{align-items:center;gap:6px;margin-top:4px;display:flex;position:relative}.datefield-btn{box-sizing:border-box;cursor:pointer;text-align:left;font-variant-numeric:tabular-nums;background:#fff;border:1px solid #d1d5db;border-radius:6px;flex:auto;justify-content:space-between;align-items:center;gap:8px;padding:8px;font-size:14px;display:inline-flex}.datefield-btn .datefield-ph{color:#9ca3af}.datefield-btn .datefield-cal{flex:none;font-size:13px;line-height:1}.datefield-clear{cursor:pointer;color:#6b7280;background:#fff;border:1px solid #d1d5db;border-radius:6px;flex:none;width:26px;height:26px;padding:0;font-size:16px;line-height:1}.datefield-clear:hover{color:#b91c1c;background:#f3f4f6}.datefield .datefield-native{opacity:0;pointer-events:none;border:0;width:1px;height:1px;margin:0;padding:0;position:absolute;bottom:0;left:0}.pmodal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.pmodal-head h3{margin:0}.readmit-toggle{color:#374151;cursor:pointer;white-space:nowrap;align-items:center;gap:6px;margin:0;font-size:13px;display:inline-flex}.readmit-toggle input{flex:none;width:auto;margin:0}.mini-archive{margin-top:12px}.mini-archive-list{border:1px solid #e5e7eb;border-radius:6px;max-height:320px;margin-top:10px;overflow-y:auto}.mini-archive-item{text-align:left;cursor:pointer;background:#fff;border:0;border-bottom:1px solid #f3f4f6;flex-direction:column;gap:2px;width:100%;padding:8px 12px;font-size:14px;display:flex}.mini-archive-item:last-child{border-bottom:0}.mini-archive-item:hover{background:#eff6ff}.mini-archive-sub{color:#6b7280;font-size:12px}.readmit-banner{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 8px;padding:8px 12px;font-size:13px;display:flex}.linkbtn{color:#2563eb;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0;font-size:13px;text-decoration:underline}.field-note{color:#6b7280;margin-top:3px;font-size:11px;display:block}.stay-bar{background:#fff;border:1px solid #d1d5db;border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;padding:8px 12px;display:flex}body.archive-mode .stay-bar{background:#fbf6ec;border-color:#e7dcc6}.stay-bar-label{color:#4b5563;font-size:13px;font-weight:600}.stay-chip{cursor:pointer;font-variant-numeric:tabular-nums;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:999px;padding:5px 10px;font-size:13px}.stay-chip:hover:not(:disabled){background:#eff6ff;border-color:#93c5fd}.stay-chip.active{color:#fff;cursor:default;background:#2563eb;border-color:#2563eb}.stay-chip.current{color:#16a34a;border-color:#16a34a}.stay-chip.current.active{color:#fff;background:#16a34a;border-color:#16a34a}.app-version{z-index:40;pointer-events:none;color:#9ca3af;font-variant-numeric:tabular-nums;background:#ffffffb3;border-radius:6px;padding:1px 6px;font-size:11px;position:fixed;bottom:6px;right:8px}body.archive-mode .app-version{background:#fbf6ecb3}#audit-modal .modal.audit-box{flex-direction:column;width:1040px;max-width:96vw;max-height:88vh;display:flex}.audit-head{align-items:center;gap:12px;margin-bottom:12px;display:flex}.audit-head h3{white-space:nowrap;margin:0}.audit-head #audit-search{flex:auto;width:auto;margin-top:0}.audit-filters{background:#f8fafc;border:1px solid #e5e7eb;border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;padding:8px 10px;display:flex}.audit-filters-label{color:#4b5563;font-size:13px;font-weight:600}.audit-filters .datefield{flex:none;margin-top:0}.audit-filters .datefield-btn{min-width:150px}.audit-filters .btn-archive.active{color:#fff;background:#2563eb;border-color:#2563eb}.audit-range-note{color:#6b7280;font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}.audit-body{border:1px solid #e5e7eb;border-radius:6px;flex:auto;overflow:auto}table.audit-table{width:100%}table.audit-table th{z-index:1;position:sticky;top:0}table.audit-table .audit-time{white-space:nowrap;color:#4b5563;font-variant-numeric:tabular-nums}.audit-act{white-space:nowrap;color:#3730a3;background:#eef2ff;border:1px solid #e0e7ff;border-radius:999px;padding:1px 8px;font-size:12px;display:inline-block}.audit-act.act-login,.audit-act.act-patient_create{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.audit-act.act-login_failed{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.audit-act.act-patient_archive,.audit-act.act-cell_delete,.audit-act.act-procedure_remove{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.audit-pager{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-top:10px;display:flex}#dbmodal .modal.db-box{width:720px;max-width:94vw;max-height:90vh;overflow:auto}.db-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.db-head h3{margin:0}.db-warn{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:6px;margin:10px 0;padding:8px 12px;font-size:13px}.db-section{border-top:1px solid #eee;margin-top:14px;padding-top:12px}.db-section-head{color:#4b5563;margin-bottom:8px;font-weight:700}.db-status{margin-bottom:6px;font-size:14px}.db-section label{margin-top:8px;font-size:14px;display:block}.db-section input{box-sizing:border-box;width:100%;margin-top:4px;padding:8px;font-size:14px}.db-section>button{margin-top:10px}.db-backups{max-height:240px;overflow:auto}.db-backups table.u-table th,.db-backups table.u-table td{padding:5px 8px}.db-nowrap{white-space:nowrap}.db-restore{padding:4px 10px;font-size:13px}.db-danger{border-top-color:#fecaca}#db-status-msg{min-height:16px;margin-top:12px;font-size:13px}#db-status-msg.ok{color:#16a34a}#db-status-msg.err{color:#dc2626}.db-dot{vertical-align:middle;border-radius:50%;width:9px;height:9px;display:inline-block}.db-dot.ok{background:#16a34a}.db-dot.err{background:#dc2626}.db-dot.none{background:#9ca3af}.meta-backup{white-space:nowrap}.maint-overlay{z-index:200;background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@media (width<=1024px){#root{padding:16px 12px}.appbar h1{font-size:22px}}@media (width<=860px){.appbar{flex-wrap:wrap;gap:10px;position:relative}.appbar-burger{cursor:pointer;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:6px;justify-content:center;align-items:center;padding:7px 12px;font-size:18px;line-height:1;display:inline-flex}.appbar-burger:hover{background:#f3f4f6}.appbar-menu{z-index:45;background:#fff;border:1px solid #d1d5db;border-radius:8px;flex-direction:column;gap:6px;min-width:230px;margin-top:4px;padding:8px;display:none;position:absolute;top:100%;right:0;box-shadow:0 10px 30px #0003}.appbar-menu.open{display:flex}.appbar-menu .btn-archive{text-align:left;width:100%}}@media (width<=640px){#root{padding:10px 8px}.appbar{gap:8px}.appbar .brand{flex:auto;gap:8px;min-width:0}.appbar .logo{height:40px}.appbar h1{white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.user-chip{display:none}#toolbar{gap:8px}#toolbar label{width:100%}.ps-wrap{width:100%;display:block}.ps-button{width:100%;min-width:0;max-width:100%}#toolbar .btn-add,#toolbar .btn-archive,#toolbar .btn-restore,#toolbar .btn-delete{flex:auto}#controls{gap:6px}table.grid{font-size:12px}table.overview-grid thead th.ovh-pat,table.overview-grid td.ov-pat{width:120px;min-width:120px;max-width:120px}table.overview-grid td.ov-pat{padding:6px;font-size:115%}th.corner,td.rowhead{width:150px!important;min-width:150px!important;max-width:150px!important}.modal{padding:16px}#umodal .modal,#ueditmodal .modal,#tplmodal .modal,#catmodal .modal,#dbmodal .modal.db-box,#audit-modal .modal.audit-box{width:96vw}.tpl-config{flex-direction:column;gap:12px}.tpl-list{border-bottom:1px solid #e5e7eb;border-right:0;flex:none;padding-bottom:12px;padding-right:0}.tpl-procs{columns:1;max-height:46vh}.ue-perms{max-height:46vh}.modal .frow{flex-direction:column;gap:0}}@media (height<=500px){#root{height:auto;display:block;overflow:visible}.grid-wrap{max-height:78vh}}@media (pointer:coarse){#root{height:auto;display:block;overflow:visible}.grid-wrap{max-height:none;overflow:visible}}.maint-panel{text-align:center;background:#fff;border-radius:10px;max-width:90vw;padding:28px 36px;box-shadow:0 10px 40px #0000004d}.maint-spinner{border:4px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;width:44px;height:44px;margin:0 auto 16px;animation:.9s linear infinite maint-spin}@keyframes maint-spin{to{transform:rotate(360deg)}}.maint-text{color:#111827;font-size:17px;font-weight:600}.maint-sub{color:#6b7280;margin-top:8px;font-size:13px}
