:root{
  --bg:#f4f6f9; --panel:#fff; --ink:#1c2733; --muted:#6b7785;
  --line:#e2e8f0; --brand:#0d6e6e; --brand-d:#0a5757; --accent:#1f7ae0;
  --hi:#c0392b; --lo:#1f6fb2; --radius:10px; --shadow:0 1px 3px rgba(16,24,40,.08);
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45}
button,input,select{font-family:inherit;font-size:14px}

/* Top bar */
.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--panel);
  padding:10px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;color:var(--brand)}
.logo{font-size:20px}
.tabs{display:flex;gap:4px}
.tab{border:0;background:transparent;padding:8px 14px;border-radius:8px;cursor:pointer;color:var(--muted);font-weight:600}
.tab:hover{background:var(--bg)}
.tab.active{background:var(--brand);color:#fff}
.lh-toggle{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted);
  cursor:pointer;white-space:nowrap;margin-left:8px}
.lh-toggle[hidden]{display:none}
.lh-toggle input{accent-color:var(--brand);cursor:pointer}

/* Layout */
.view{display:none;max-width:1080px;margin:20px auto;padding:0 16px}
.view.active{display:block}
/* Age input split into Years / Months / Days */
.age-group{display:flex;gap:4px}
.age-group input{flex:0 0 54px;width:54px;min-width:0;padding:8px 4px;text-align:center;-moz-appearance:textfield;appearance:textfield}
.age-group input::-webkit-outer-spin-button,
.age-group input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px;margin-bottom:18px;box-shadow:var(--shadow)}
.panel h2{margin:0 0 14px;font-size:15px;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-d)}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.panel-head h2{margin:0}
.muted{color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}

/* Forms */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.grid label,.grid .col2{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.col2{grid-column:span 2}
.grid .mode-hidden{display:none}   /* modality/type are set by the X-Ray/USG/Histopath/Cytology tabs */
.grid input,.grid select{padding:8px 10px;border:1px solid var(--line);border-radius:7px;color:var(--ink);font-weight:400}
.grid input.locked{background:#eef3f3;font-weight:700;color:var(--brand-d);cursor:not-allowed}
.grid input:focus,.grid select:focus{outline:0;border-color:var(--brand)}

/* Registration: Select Tests + Receipt side by side */
#view-entry{max-width:1360px}
.reg-cols{display:grid;grid-template-columns:1.15fr 1fr;gap:18px;align-items:start}
.reg-cols .panel{margin-bottom:0}
@media(max-width:1100px){.reg-cols{grid-template-columns:1fr}#view-entry{max-width:1080px}}

/* Picker */
.picker-controls{display:flex;gap:10px;margin-bottom:10px}
.picker-controls input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:8px}
.picker-controls select{padding:9px 12px;border:1px solid var(--line);border-radius:8px;min-width:170px}
.catalog-list{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.cat-item{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.cat-item:last-child{border-bottom:0}
.cat-item:hover{background:#f0fbfa}
.cat-item.added{opacity:.5}
.cat-item .ci-main{display:flex;flex-direction:column}
.cat-item .ci-name{font-weight:600}
.cat-item .ci-meta{font-size:11px;color:var(--muted)}
.tag{font-size:10px;background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:1px 8px;color:var(--muted)}
.tag.panel{background:#eef6ff;border-color:#cfe3fb;color:var(--accent)}

/* Results */
.results-area{display:flex;flex-direction:column;gap:14px}
.empty{color:var(--muted);text-align:center;padding:24px 0}
.test-card{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.test-card-head{display:flex;align-items:center;justify-content:space-between;background:#f7fafa;
  padding:8px 12px;border-bottom:1px solid var(--line)}
.test-card-head .tc-title{font-weight:700;color:var(--brand-d)}
.test-card-head .tc-grp{font-size:11px;color:var(--muted);margin-left:8px}
.remove-x{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:18px;line-height:1;padding:0 4px}
.remove-x:hover{color:var(--hi)}
.param-row{display:grid;grid-template-columns:1.6fr 1fr .8fr 1.6fr;gap:10px;align-items:center;
  padding:7px 12px;border-bottom:1px solid var(--line)}
.param-row:last-child{border-bottom:0}
.param-row .pname{font-weight:600}
.param-row .val-wrap{display:flex;align-items:center;gap:2px;min-width:0}
.param-row .val-wrap .val{flex:1;min-width:0}
.param-row .val{padding:6px 9px;border:1px solid var(--line);border-radius:6px;width:100%;font-family:inherit;font-size:inherit;background:#fff}
.param-row select.val{cursor:pointer}
.param-row .val.flag-H{border-color:var(--hi);background:#fdf0ee}
.param-row .val.flag-L{border-color:var(--lo);background:#eef5fb}
.param-row .unit{color:var(--muted);font-size:12px}
.param-row .normal{color:var(--muted);font-size:11px;white-space:pre-line}
.flagbadge{font-weight:700;margin-left:6px}
.flag-H .flagbadge,.fb-H{color:var(--hi)}
.flag-L .flagbadge,.fb-L{color:var(--lo)}
.row-head{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);
  padding:6px 12px;background:#fbfcfd;border-bottom:1px solid var(--line)}

/* Billing bar */
.bill-bar{margin-top:14px;border-top:1px dashed var(--line);padding-top:14px}
.bill-fields{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.bill-fields label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.bill-fields input{padding:8px 10px;border:1px solid var(--line);border-radius:7px;width:130px;font-weight:600;color:var(--ink)}
.bill-fields input[readonly]{background:#f7fafa}
#b_net{color:var(--brand-d);font-size:16px}

/* Buttons */
.actions{display:flex;gap:8px}
.btn{border:1px solid var(--line);background:#fff;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;color:var(--ink)}
.btn:hover{background:var(--bg)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-d)}
.btn.ghost{color:var(--muted)}

/* Modality buttons (Enter Results for multi-modality patients) */
.modality-bar{display:flex;flex-wrap:wrap;gap:10px}
.modality-bar .mod-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;
  border:1px solid var(--brand);background:#eef6f6;color:var(--brand-d);border-radius:9px;
  padding:10px 16px;cursor:pointer;font-weight:700;min-width:150px}
.modality-bar .mod-btn:not([disabled]):hover{background:var(--brand);color:#fff}
.modality-bar .mod-btn .mod-sub{font-size:11px;font-weight:400;opacity:.85}
.modality-bar .mod-btn[disabled]{border-color:var(--line);background:#f4f6f9;color:var(--muted);cursor:not-allowed;opacity:.6}

/* Receipt list (Registration view) — tests + charges only */
.rc-list{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.rc-row{display:grid;grid-template-columns:36px 1fr 110px 32px;gap:10px;align-items:center;
  padding:8px 12px;border-bottom:1px solid var(--line)}
.rc-row:last-child{border-bottom:0}
.rc-head{background:#f7fafa;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}
.rc-name{font-weight:600}
.rc-amt{text-align:right;font-weight:700}

/* Patient search */
.search-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:12px}
.search-filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.search-filters input{padding:8px 10px;border:1px solid var(--line);border-radius:7px;min-width:150px}
.search-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-left:auto}
.search-actions input{min-width:180px}
.search-count{margin-bottom:8px;font-size:12px}
.si-tests{font-size:12px;color:var(--ink);min-width:0;line-height:1.35}
.si-tests-lbl{font-weight:700;color:var(--muted);font-size:11px}
/* Explicit lifecycle wording per row, alongside (not instead of) the card's
   background colour — Awaiting Sample Collection / Awaiting Entry / Awaiting
   Approval / Approved / Printed. */
.si-status-label{display:block;margin-top:3px;font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}
.si-status-pending{color:var(--muted)}
.si-status-saved{color:#a3406b}
.si-status-approved{color:#1a5c2a}
.si-status-printed{color:#1c4a7a}
.si-check-placeholder{display:block;width:16px}
/* Urgent registration */
.centre-reg-tag{font-size:12px;font-weight:700;color:var(--brand-d);background:#eef6f6;border:1px solid #cfe3e3;border-radius:12px;padding:3px 12px}
.f-urgent-btn{border-color:#f3b9b9;color:#c00}
.f-urgent-btn.active{background:#fff0f0;border-color:#c00;font-weight:700;box-shadow:0 0 0 2px #f3b9b9}
.urgent-label{display:flex;align-items:center;gap:8px;font-weight:600;color:#c00;cursor:pointer}
.urgent-time-inp{width:110px;padding:6px 8px;border:1px solid #f3b9b9;border-radius:6px}
.si-urgent{color:#c00!important;font-weight:700}
.si-amt-due{font-size:12px;font-weight:700;color:#a40000;background:#fff0f0;border:1px solid #f3b9b9;border-radius:6px;padding:5px 10px;white-space:nowrap}
/* TAT status dot */
.si-tat-dot{font-size:14px;line-height:1;margin-right:6px;vertical-align:middle;cursor:help}
.si-tat-dot.tat-green{color:#19a35a}
.si-tat-dot.tat-yellow{color:#e0a800}
.si-tat-dot.tat-red{color:#d32020}
.si-tat-legend{font-size:11px;color:var(--muted);margin:0 0 10px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.si-tat-legend .si-tat-dot{margin-right:0}
.si-critical-tag{font-size:11px;font-weight:700;color:#7b0000;background:#ffe0e0;border:1px solid #e88;
  border-radius:10px;padding:1px 8px;margin-left:6px;vertical-align:middle;animation:crit-blink 1.4s ease-in-out infinite}
@keyframes crit-blink{0%,100%{opacity:1}50%{opacity:.5}}
.si-critical-name{color:#7b0000!important}
.ep-crits{display:flex;flex-direction:column;gap:4px}
.ep-crit-lo,.ep-crit-hi{padding:5px 7px;border:1px solid #f3b9b9;border-radius:6px;font-size:12px;background:#fff8f8;width:100%;box-sizing:border-box}
.ep-crit-lo:focus,.ep-crit-hi:focus{outline:0;border-color:#c00}
.si-urgent-tag{font-size:11px;font-weight:700;color:#c00;background:#fff0f0;border:1px solid #f3b9b9;
  border-radius:10px;padding:1px 8px;margin-left:6px;vertical-align:middle}

/* Saved list */
/* Patient Search sticky header */
.ps-panel{display:flex;flex-direction:column;max-height:calc(100vh - 70px);overflow:hidden}
.ps-sticky-head{position:sticky;top:0;z-index:10;background:var(--panel);padding-bottom:4px;border-bottom:1px solid var(--line);margin-bottom:10px;flex-shrink:0}
#savedList{overflow-y:auto;flex:1;padding-right:2px}
.saved-list{display:flex;flex-direction:column;gap:8px}
/* Grid columns: [checkbox] [patient info] [tests] [row actions] */
.saved-item{display:grid;grid-template-columns:24px minmax(0,1.5fr) minmax(0,1.4fr) auto;
  align-items:center;gap:6px 14px;padding:10px 14px;border:1px solid var(--line);border-radius:8px}
.saved-item .si-info{min-width:0}
.saved-item .si-name{font-weight:700}
.saved-item .si-meta{font-size:12px;color:var(--muted)}
.si-rep-id{font-weight:800;color:var(--ink)}
.si-check{width:17px;height:17px;cursor:pointer;margin:0}
/* Common-action toolbar */
.si-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;
  background:var(--panel);border:1px solid var(--line);border-radius:8px}
.si-selall{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;cursor:pointer}
.si-selcount{font-size:12px}
.si-toolbar-actions{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.si-list-head{display:grid;grid-template-columns:24px minmax(0,1.5fr) minmax(0,1.4fr) auto;gap:14px;
  padding:0 14px 4px;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
/* Patient-search status colours */
.saved-item.si-st-pending{background:#fff;border-color:var(--line)}
.saved-item.si-st-saved{background:#fde4ee;border-color:#f3b9d1}      /* saved, not approved */
.saved-item.si-st-approved{background:#e4f7e8;border-color:#aee0ba}   /* all results approved */
.saved-item.si-st-printed{background:#e4f0fb;border-color:#b3d3f1}    /* report printed */
.saved-item .actions{justify-content:flex-end;flex-wrap:wrap}
@media(max-width:760px){
  .saved-item{grid-template-columns:22px 1fr auto}
  .saved-item .si-tests{grid-column:2 / -1}
  .si-list-head{display:none}
}
.si-legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.si-leg{font:inherit;font-size:11px;font-weight:600;color:var(--ink);padding:4px 12px;border-radius:14px;
  border:1px solid var(--line);cursor:pointer;transition:box-shadow .12s,transform .12s;user-select:none}
.si-leg:hover{box-shadow:0 1px 4px rgba(0,0,0,.12)}
.si-leg.active{box-shadow:0 0 0 2px var(--brand);font-weight:700}
.si-leg.si-leg-all{background:#f1f4f4;border-color:var(--line)}
.si-leg.si-st-pending{background:#fff;border-color:var(--line)}
.si-leg.si-st-saved{background:#fde4ee;border-color:#f3b9d1}
.si-leg.si-st-approved{background:#e4f7e8;border-color:#aee0ba}
.si-leg.si-st-printed{background:#e4f0fb;border-color:#b3d3f1}

/* Imaging template picker */
.tmpl-bar{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-top:12px;
  padding-top:12px;border-top:1px dashed var(--line)}
.tmpl-label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted);flex:1;min-width:240px}
.tmpl-label select{padding:8px 10px;border:1px solid var(--line);border-radius:7px;color:var(--ink)}
.tmpl-hint{font-size:11px;flex-basis:100%}

/* Rich-text editor (imaging) */
.rte-toolbar{display:flex;flex-wrap:wrap;gap:4px;align-items:center;border:1px solid var(--line);
  border-radius:8px 8px 0 0;padding:6px 8px;background:#f7fafa;margin-top:4px}
.rte-toolbar button{border:1px solid transparent;background:transparent;padding:5px 9px;border-radius:6px;
  cursor:pointer;font-size:14px;color:var(--ink);min-width:32px}
.rte-toolbar button:hover{background:#fff;border-color:var(--line)}
.rte-toolbar .sep{width:1px;height:20px;background:var(--line);margin:0 4px}
.rte-toolbar select.rte-font-family,.rte-toolbar select.rte-font-size{border:1px solid var(--line);
  background:#fff;border-radius:6px;padding:4px 6px;font-size:12.5px;color:var(--ink);cursor:pointer}
.rte-toolbar select.rte-font-family{max-width:130px}
.rte-toolbar select.rte-font-size{max-width:70px}
.rte-label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--brand-d);margin:14px 0 4px}
.rte{border:1px solid var(--line);border-radius:0 0 8px 8px;padding:12px 14px;min-height:240px;
  background:#fff;font-family:Verdana,Geneva,sans-serif;font-size:12px;line-height:1.6;outline:none}
.rte.rte-sm{min-height:90px;border-radius:8px;margin-top:0}
.rte:focus{border-color:var(--brand)}
.rte:empty:before{content:attr(data-placeholder);color:var(--muted)}
.rte h3{margin:.4em 0;font-size:15px}
.rte ul,.rte ol{margin:.3em 0;padding-left:1.6em}

/* Format editor — tests linked to a saved format */
.fmt-linked{margin:14px 0}
.fmt-linked>label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--brand-d);margin-bottom:6px}
.fmt-linked .hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);font-size:11px}
.fmt-linked #fmt_test_search{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:7px;margin-bottom:6px;font-size:13px}
.fmt-test-checklist{max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:#fff}
.fmt-test-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px;cursor:pointer}
.fmt-test-row input{margin:0}

/* Catalog editor */
.ef-sub{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-d);margin:18px 0 6px}
.ep-head,.ep-row{display:grid;grid-template-columns:1.4fr .9fr 1.8fr .9fr .9fr 34px;gap:10px;align-items:start}
.ep-head{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:0 0 4px}
.ep-row{margin-bottom:8px}
.ep-row input,.ep-row textarea{padding:7px 9px;border:1px solid var(--line);border-radius:6px;width:100%;font-family:inherit;font-size:13px}
.ep-row textarea{resize:vertical;min-height:36px;line-height:1.3}
.ep-row .ep-del{align-self:center}
.ep-row-actions{display:flex;flex-direction:column;align-items:center;gap:2px}
.ep-row-actions .ep-move{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:4px;
  width:22px;height:18px;line-height:1;font-size:10px;cursor:pointer;padding:0}
.ep-row-actions .ep-move:hover{color:var(--brand-d);border-color:var(--brand)}
.ep-row-actions .ep-move:disabled{opacity:.3;cursor:default}
.ep-row-actions .ep-move:disabled:hover{color:var(--muted);border-color:var(--line)}
.ep-name-wrap{display:flex;flex-direction:column;gap:4px}
.ep-ptype-toggle{display:flex;gap:3px}
.ep-ptype-btn{font-size:9px;font-weight:700;padding:2px 6px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--muted);cursor:pointer;line-height:1.3}
.ep-ptype-btn.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.ep-ptype-btn:hover:not(.active){border-color:var(--brand);color:var(--brand-d)}
.ep-text-header .ep-ptype-toggle{flex:0 0 auto}
.ep-options-row{grid-column:1/-1;margin-top:-2px;font-size:12px}
.ep-suggest-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:2px}
.ep-suggest-row input{font-size:12px}
.ep-suggest-low{border-left:3px solid var(--lo)!important}
.ep-suggest-high{border-left:3px solid var(--hi)!important}
/* Age/sex reference range grid */
.ep-ranges{display:flex;flex-direction:column;gap:4px}
.ep-ranges input{padding:5px 8px;border:1px solid var(--line);border-radius:5px;font-size:12px;font-family:inherit;width:100%}
.ep-ranges input::placeholder{color:var(--muted);font-size:11px}
.ep-ranges input.ep-range-child{border-left:3px solid #f59e0b}
.ep-ranges input.ep-range-male{border-left:3px solid #3b82f6}
.ep-ranges input.ep-range-female{border-left:3px solid #ec4899}
#ef_addparam{margin-top:2px}
.ef-note{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted);margin-top:16px}
.ef-note #ef_note{width:100%;min-height:120px;padding:10px 12px;border:1.5px solid var(--line);border-radius:7px;
  font-family:inherit;font-size:13.5px;line-height:1.5;box-sizing:border-box;font-weight:400;color:var(--ink)}
.ef-note #ef_note:focus{outline:0;border-color:var(--brand)}
.ef-actions{margin-top:18px;justify-content:flex-end}
#ef_delete{color:var(--hi);border-color:#f0c9c4;margin-right:auto}
#ef_delete:hover{background:#fdf0ee}
.ef-param-actions{display:flex;gap:8px;margin-top:4px}
.ep-row.has-formula .ep-name{border-color:var(--brand);background:#f0f7f7}

/* Computed (formula) result fields + tag */
.fx-tag{display:inline-block;font-style:italic;font-weight:700;color:var(--brand-d);background:#e7f1f1;border-radius:4px;padding:0 5px;margin-left:4px;font-size:11px}
input.val-formula{background:#f0f7f7;color:var(--brand-d);font-weight:600}

/* Formula editor — compact floating, draggable panel */
.fx-float{position:fixed;z-index:400;width:340px;max-width:94vw;max-height:82vh;display:flex;flex-direction:column;
  background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 14px 48px rgba(16,24,40,.32)}
.fx-float-head{display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:move;
  padding:10px 12px;background:var(--brand-d);color:#fff;border-radius:12px 12px 0 0;user-select:none}
.fx-float-title{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-float-x{background:transparent;border:none;color:#fff;font-size:20px;line-height:1;cursor:pointer;padding:0 4px;opacity:.85}
.fx-float-x:hover{opacity:1}
.fx-float-body{padding:12px;overflow-y:auto}
.fx-float-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 12px;border-top:1px solid var(--border)}
#dcFloat{width:460px;z-index:950}
.dc-chart-preview{overflow-x:auto;text-align:center;background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px}
.dc-chart-preview svg{max-width:100%;height:auto}
.dc-include-label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;margin-top:10px;cursor:pointer}
.dc-include-label input{width:15px;height:15px;cursor:pointer;accent-color:var(--primary)}
.dc-trend-btn{padding:2px 6px;font-size:12px;line-height:1;margin-left:6px;vertical-align:middle}
.dc-trend-attached{background:#eaf6f0;border-color:var(--brand)}
.rep-delta-chart{margin:10px 0;padding:8px 10px;border:1px solid #ccc;border-radius:4px;background:#fafafa;text-align:center}
.rep-delta-chart-title{font-family:Verdana,Geneva,sans-serif;font-size:11px;font-weight:700;color:var(--brand-d);margin-bottom:4px;text-align:left}
.rep-delta-chart svg{max-width:100%;height:auto}
.fx-params{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.fx-row{display:flex;flex-direction:column;gap:3px;background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:7px 9px}
.fx-row-name{font-size:12px;font-weight:700;color:var(--brand-d)}
.fx-input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px}
.fx-preview{font-size:11px;color:var(--muted);min-height:13px}
.fx-vars{border-top:1px dashed var(--line);padding-top:10px}
.fx-vars-head{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:5px}
.fx-var-list{display:flex;flex-wrap:wrap;gap:5px}
.fx-var{font-size:11px;padding:3px 8px;border:1px solid var(--brand);background:#fff;color:var(--brand-d);border-radius:14px;cursor:pointer}
.fx-var:hover{background:var(--brand);color:#fff}
.fx-other-row select{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-family:inherit;font-size:12px;width:100%;margin-bottom:8px}
#view-editor h3{margin:0}

/* Logo upload (settings) */
.logo-row{display:flex;gap:18px;align-items:center;margin-top:16px;flex-wrap:wrap}
.logo-preview{width:90px;height:90px;border:1px dashed var(--line);border-radius:10px;display:flex;
  align-items:center;justify-content:center;overflow:hidden;background:#fafbfc;flex:none;text-align:center;padding:4px}
.logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
.logo-preview .muted{font-size:10px}
.logo-controls{display:flex;flex-direction:column;gap:6px}
.logo-label{font-size:12px;font-weight:600;color:var(--muted);display:flex;flex-direction:column;gap:4px}

/* Modal + settle-payment */
.modal-overlay{position:fixed;inset:0;background:rgba(16,24,40,.5);display:flex;align-items:center;justify-content:center;z-index:200}
.modal-overlay[hidden]{display:none}   /* override the flex display when hidden */
.modal-box{background:#fff;border-radius:12px;padding:20px 22px;max-width:420px;width:92%;box-shadow:0 10px 40px rgba(16,24,40,.25)}
.modal-box h3{margin:0 0 2px;color:var(--brand-d);font-size:16px}
.pay-name{font-weight:600;margin-bottom:12px}
.pay-grid{display:grid;grid-template-columns:1fr auto;gap:4px 16px;font-size:14px;border-top:1px solid var(--line);padding-top:10px}
.pay-grid span:nth-child(even){text-align:right;font-weight:600}
.pay-grid .pay-due{color:var(--hi);font-weight:700;font-size:15px}
.pay-input{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted);margin-top:14px}
.pay-input input{padding:9px 11px;border:1px solid var(--line);border-radius:7px;font-size:15px;font-weight:700}
.si-pay{font-size:11px;font-weight:700;margin-left:6px}
.si-pay.due{color:var(--hi)}
.si-pay.paid{color:#1c8a4d}
.si-pay.credit{color:#7c4dbb}
.credit-label{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}

/* Toast */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(60px);
  background:var(--ink);color:#fff;padding:10px 18px;border-radius:8px;opacity:0;transition:.3s;z-index:100}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media(max-width:760px){.grid{grid-template-columns:1fr 1fr}.col2{grid-column:span 2}
  .param-row{grid-template-columns:1fr 1fr;gap:6px}.tabs .tab{padding:8px 10px}}

/* ---------- PRINT / REPORT ---------- */
#printRoot{display:none}
.report{font-family:Verdana,Geneva,sans-serif;color:#000;background:#fff}
.rep-header{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px double #000;padding-bottom:8px}
.rep-lab h1{margin:0;font-size:24px;color:var(--brand-d);letter-spacing:.5px}
.rep-lab .rep-tag{font-size:12px;font-style:italic;color:#444}
.rep-lab .rep-addr{font-size:12px;margin-top:4px}
.rep-logo{font-size:46px}
.rep-logo img{height:70px;width:auto;max-width:120px;object-fit:contain;vertical-align:middle}
.rep-pt{display:grid;grid-template-columns:1fr 1fr;gap:2px 30px;margin:12px 0;
  font-family:Verdana,Geneva,sans-serif;font-size:12px;font-weight:700}
.rep-pt div{border-bottom:1px dotted #aaa;padding:3px 0;display:flex}
.rep-pt b{min-width:120px;display:inline-block}
/* The verify/status QR lives INSIDE the patient cluster (not the letterhead area)
   so it still shows on pre-printed stationery and with a custom letterhead image —
   both of which hide .rep-header/.rcpt-header entirely. On the receipt (no
   "Approved By" concept) it's a fixed corner; on reports it sits right next to
   the Approved By line(s) it verifies — same layout with or without letterhead,
   since the cluster's own content never differs between the two. */
.pt-qr{text-align:center;font-size:9px;color:#444;line-height:1.15;font-weight:400}
.pt-qr-img{width:15mm;height:15mm;margin:0 auto 2px}
.pt-qr-img svg{width:100%;height:100%;display:block}
.rcpt-meta.has-qr{position:relative;padding-right:60px}
.rcpt-meta.has-qr .pt-qr{position:absolute;top:0;right:0}
.rep-pt-appr{grid-column:1/-1;display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-top:2px}
.rep-pt-appr-text{flex:1;min-width:0}
.rep-pt-appr-text div{border-bottom:1px dotted #aaa;padding:3px 0;display:flex}
/* Histo/Cyto's Sample Id / Specimen line (rep-pt's own specimen-identity variant,
   distinct from the shared patient-info block above it) — own font, not part of
   the "patient details" bold-everything rule above (identifies the specimen, not the patient). */
.rep-sample-pt{font-family:Verdana,Geneva,sans-serif;font-size:12px;font-weight:400}
.rep-title{font-family:Verdana,Geneva,sans-serif;text-align:center;font-weight:700;font-size:12px;text-decoration:underline;margin:6px 0 10px}
.rep-critical-banner{text-align:center;font-weight:700;font-size:13px;color:#7b0000;background:#ffe0e0;border:2px solid #c00;border-radius:6px;padding:8px 14px;margin:0 0 10px;letter-spacing:.03em}
.rep-group{margin-top:14px}
.rep-group-name{font-family:Verdana,Geneva,sans-serif;font-weight:700;font-size:12px;background:#eef3f3;padding:3px 8px;border-left:4px solid var(--brand);text-transform:uppercase}
table.rep-table{width:100%;border-collapse:collapse;font-family:Verdana,Geneva,sans-serif;font-size:12px;margin-top:4px;font-variant-numeric:tabular-nums}
table.rep-table th{text-align:left;border-bottom:1.5px solid #000;padding:4px 8px;font-size:12px}
table.rep-table td{padding:3px 8px;vertical-align:top}
table.rep-table .c-val{font-size:13.5px;font-weight:400}
table.rep-table .c-val.fb-H,table.rep-table .c-val.fb-L{font-weight:700;color:var(--hi)}
table.rep-table .c-unit,table.rep-table .c-norm{color:#333;font-size:11px}
table.rep-table .c-norm{white-space:pre-line}
table.rep-table .panel-name td{font-weight:700;padding-top:8px}
.rep-note{font-size:11px;font-style:italic;color:#444;margin:2px 8px 0;white-space:pre-line}
.rep-test-meta{font-size:10.5px;font-style:italic;font-weight:400;color:#555;margin-top:2px}
.rep-typedby{font-size:10.5px;color:#666;margin-top:16px}
.rep-doctor-suggest{margin-top:14px;padding:8px 10px;border:1px solid #b8d8f5;background:#f6fafe;border-radius:4px;
  font-family:Verdana,Geneva,sans-serif;font-size:12px}
.rds-text{white-space:pre-line;margin-top:4px}
.rds-disclaimer{font-size:10px;font-style:italic;color:#555;margin-top:6px;line-height:1.4}
.rep-foot{margin-top:40px;display:flex;justify-content:space-between;align-items:flex-end}
.rep-sign{text-align:center;font-size:12px}
.rep-sign .sign-line{border-top:1px solid #000;padding-top:3px;margin-top:28px;min-width:170px}
.rep-end{text-align:center;font-size:11px;color:#555;margin-top:24px;border-top:1px solid #ccc;padding-top:6px}

/* Imaging report (print) */
.imgrep{font-family:Verdana,Geneva,sans-serif;color:#000;background:#fff}
.imgrep .rep-study{font-family:Verdana,Geneva,sans-serif;text-align:center;font-weight:700;font-size:12px;text-decoration:underline;margin:10px 0}
.imgrep .img-section-h{font-family:Verdana,Geneva,sans-serif;font-weight:700;font-size:12px;letter-spacing:.03em;margin:14px 0 4px;border-bottom:1px solid #999;padding-bottom:2px}
.imgrep .img-body{font-family:Verdana,Geneva,sans-serif;font-size:12px;line-height:1.65}
.imgrep .img-body ul,.imgrep .img-body ol{margin:.3em 0;padding-left:1.7em}
.imgrep .img-body h3{font-size:12px;margin:.5em 0}

/* Receipt */
.receipt{font-family:Verdana,Geneva,sans-serif;color:#000;background:#fff;max-width:148mm;margin:0 auto}
.rcpt-header{text-align:center;border-bottom:2px solid #000;padding-bottom:6px}
.rcpt-header h1{margin:0;font-size:20px;color:var(--brand-d)}
.rcpt-header .rcpt-tag{font-size:11px;font-style:italic;color:#444}
.rcpt-header .rcpt-addr{font-size:11px;margin-top:3px}
.rcpt-title{text-align:center;font-weight:700;font-size:13px;letter-spacing:.08em;margin:8px 0;text-transform:uppercase}
.rcpt-meta{display:grid;grid-template-columns:1fr 1fr;gap:1px 20px;font-size:12px;margin-bottom:8px}
.rcpt-meta div{padding:2px 0}
.rcpt-meta b{display:inline-block;min-width:90px}
table.rcpt-table{width:100%;border-collapse:collapse;font-size:12px}
table.rcpt-table th{text-align:left;border-top:1px solid #000;border-bottom:1px solid #000;padding:4px 6px}
table.rcpt-table td{padding:3px 6px;border-bottom:1px dotted #bbb}
table.rcpt-table .num{text-align:right;white-space:nowrap}
.rcpt-totals{margin-top:6px;margin-left:auto;width:60%;font-size:12px}
.rcpt-totals div{display:flex;justify-content:space-between;padding:2px 6px}
.rcpt-totals .grand{font-weight:700;font-size:14px;border-top:1.5px solid #000;border-bottom:1.5px solid #000;margin-top:3px;padding:5px 6px;color:var(--brand-d)}
.rcpt-words{font-size:11px;font-style:italic;margin-top:6px}
.rcpt-foot{margin-top:24px;display:flex;justify-content:space-between;align-items:flex-end;font-size:11px}
.rcpt-foot .sign-line{border-top:1px solid #000;padding-top:3px;margin-top:30px;min-width:150px;text-align:center}
.rcpt-portal{margin-top:14px;border:1px dashed #888;border-radius:6px;padding:8px 12px;font-size:11px;background:#fafafa}
.rcpt-portal-title{font-weight:700;margin-bottom:3px}
.rcpt-portal-row{margin:1px 0}
.rcpt-end{text-align:center;font-size:10px;color:#555;margin-top:14px;border-top:1px solid #ccc;padding-top:5px}

/* Without letterhead: hide the lab header (top space handled by Paged.js @page margin). */
.report.no-letterhead .rep-header,
.receipt.no-letterhead .rcpt-header,
.receipt.no-letterhead .rcpt-end{display:none}

/* Paginated print: fixed A4 page frames, each with a footer (report no. + page n/total).
   The lab header shows once on page 1; the footer repeats on every page. */
#pagedHost{display:none}
.mp-page{width:210mm;min-height:297mm;box-sizing:border-box;position:relative;
  page-break-after:always;padding:12mm 14mm 18mm;overflow:hidden;background:#fff}
.mp-page.mp-nolh{padding-top:43mm}
.mp-page:last-child{page-break-after:auto}
.mp-page .report{padding:0}
.mp-sig{position:absolute;left:14mm;right:14mm;bottom:12mm}
/* Fallback for the rare page whose content still overflows the budget (an indivisible
   block taller than one page) — sits right after the content instead of pinned to the
   physical bottom margin, so it can never overlap the text above it. */
.mp-sig-flow{position:static;left:auto;right:auto;bottom:auto;margin-top:28px;border-top:1px solid #ccc;padding-top:10px}
.mp-sig-row{display:flex;justify-content:space-between;align-items:flex-end}
.mp-sig-end{text-align:center;font-size:11px;color:#555;margin-top:6px;border-top:1px solid #ccc;padding-top:6px}
.mp-foot{position:absolute;left:14mm;right:14mm;bottom:4mm;display:flex;justify-content:space-between;align-items:center;
  font-family:Verdana,Geneva,sans-serif;font-size:10px;color:#444;border-top:1px solid #ccc;padding-top:3px}
/* Fallback for a page whose content still overflows the budget — same reasoning as
   .mp-sig-flow: an absolute "bottom:4mm" anchors to the (possibly too-tall) page box,
   which can land it on the wrong physical sheet. Flow placement keeps it right after
   the signatures, guaranteed on the correct page. */
.mp-foot-flow{position:relative;left:auto;right:auto;bottom:auto;margin-top:10px}
.mp-foot-mid{position:absolute;left:50%;top:3px;transform:translateX(-50%);white-space:nowrap}
/* Only affect layout during actual printing — never the on-screen app. */
@media print{
  #pagedHost{display:block}
  body.printing-paged #printRoot{display:none !important}
}

@media print{
  .no-print,.topbar,.view,#toast{display:none !important}
  #printRoot{display:block}
  body{background:#fff}
  @page{size:A4;margin:14mm}
  .report,.receipt{width:100%}
}

/* Management tables (Doctors, Staff) */
.mgmt-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}
.mgmt-table th{text-align:left;padding:7px 10px;border-bottom:2px solid var(--border);color:var(--muted);font-weight:600;white-space:nowrap}
.mgmt-table td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.mgmt-table tbody tr:hover{background:var(--bg)}
.mgmt-table .act-cell{white-space:nowrap;text-align:right}
.mgmt-table .act-cell button{margin-left:6px}
.center{text-align:center}
.badge{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--accent,#e8f0ff);color:var(--primary,#2563eb);font-size:11px;font-weight:600;white-space:nowrap}

/* Collapsible panels (Doctors / Staff) */
.collapsible-panel{padding:0}
.collapse-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;
  background:none;border:none;padding:16px 20px;cursor:pointer;font-size:15px;font-weight:600;
  color:var(--text);text-align:left;border-radius:10px}
.collapse-toggle:hover{background:var(--bg)}
.collapse-toggle[aria-expanded="true"] .collapse-arrow{transform:rotate(90deg)}
.collapse-arrow{transition:transform .2s;font-size:12px;color:var(--muted)}
.collapse-body{padding:0 20px 18px}
.detail-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:16px;margin-top:4px}

/* Password field with show/hide toggle */
.pwd-label{display:flex;flex-direction:column;gap:4px}
.pwd-wrap{display:flex;gap:4px;align-items:center}
.pwd-wrap input{flex:1;min-width:0}
.pwd-eye{padding:4px 8px;font-size:14px;line-height:1}

/* Letterhead image upload section */
.lhimg-row{margin-top:18px;border-top:1px solid var(--border);padding-top:16px}
.lhimg-label-row{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}
.lhimg-heading{font-weight:600;font-size:14px}
.lhimg-body{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.lhimg-preview-wrap{flex:1;min-width:200px;border:1px dashed var(--border);border-radius:6px;padding:8px;background:var(--bg);min-height:60px;display:flex;align-items:center;justify-content:center}
.lhimg-preview{max-width:100%;max-height:120px;object-fit:contain;border-radius:4px}
.lhimg-none{font-size:12px;text-align:center}
.lhimg-controls{display:flex;flex-direction:column;gap:8px;flex-shrink:0}
/* Full-width letterhead image in printed report */
.rep-lhimg{width:100%;display:block;margin-bottom:6px}
.report.has-lhimg .rep-header,.receipt.has-lhimg .rcpt-header{display:none}

/* Result type selector in editor */
.rtype-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin-bottom:14px}
.rtype-label{font-weight:600;font-size:13px;white-space:nowrap}
.rtype-opt{display:flex;align-items:flex-start;gap:6px;cursor:pointer;font-size:13px}
.rtype-hint{color:var(--muted);font-size:11px}
/* New test type picker modal */
.rtype-card{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border);border-radius:8px;padding:12px 14px;cursor:pointer}
.rtype-card:has(input:checked){border-color:var(--primary);background:var(--bg)}
/* Text-type result entry */
.text-param-section{margin:8px 0;border:1px solid var(--border);border-radius:6px;overflow:hidden}
.text-param-label{background:var(--bg);padding:5px 10px;font-weight:600;font-size:12px;border-bottom:1px solid var(--border)}
.text-param-rte{min-height:60px;padding:8px 10px;outline:none;font-family:Verdana,Geneva,sans-serif;font-size:12px;line-height:1.5}
.text-param-rte:focus{background:#fafcff}
.text-param-pick{width:100%;border:0;border-bottom:1px solid var(--border);background:var(--bg);
  padding:5px 10px;font-size:12px;color:var(--ink);cursor:pointer}
.tc-text-badge{background:#e8f4ff;color:#1d6fc4;font-size:11px;border-radius:4px;padding:2px 6px;margin-left:6px}
/* Text report print blocks */
.rep-text-block{margin:10px 0;padding:8px 0;border-top:1px solid #ddd;font-family:Verdana,Geneva,sans-serif;font-size:12px}
.rep-text-name{font-weight:700;font-size:12px;margin-bottom:6px;text-transform:uppercase;letter-spacing:.4px}
.rep-text-section{margin-bottom:8px}
.rep-text-section-label{font-weight:600;font-size:12px;margin-bottom:3px;color:#333}
.rep-text-content{font-size:12px;line-height:1.6;padding-left:4px}

/* Text-type param rows in editor */
.ep-row-text{display:flex;flex-direction:column;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px}
.ep-text-header{display:flex;gap:8px;align-items:center}
.ep-text-header .ep-name{flex:1}
.ep-template{width:100%;box-sizing:border-box;resize:vertical;font-family:inherit;font-size:13px;line-height:1.5;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text)}
.ep-template:focus{outline:none;border-color:var(--primary)}
.ep-template::placeholder{color:var(--muted)}

/* Package Master */
.cat-pkg{border-left:3px solid #7c4dff}
.pkg-layout{display:flex;gap:16px;margin-top:14px;align-items:flex-start}
.pkg-picker-col{flex:1;min-width:220px;border:1px solid var(--border);border-radius:8px;padding:12px}
.pkg-selected-col{flex:1;min-width:200px;border:1px solid var(--border);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px}
.pkg-picker-list{max-height:320px;overflow-y:auto;margin-top:8px;border:1px solid var(--border);border-radius:6px}
.pkg-test-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--border);font-size:13px;gap:8px;transition:background .12s}
.pkg-test-item:last-child{border-bottom:none}
.pkg-test-item:hover{background:var(--bg)}
.pkg-test-item.pkg-added{background:#f0fbf0}
.pkg-tag-added{background:#d4f7d4;color:#1a6b1a}
.pkg-selected-list{flex:1;border:1px solid var(--border);border-radius:6px;overflow-y:auto;max-height:260px}
.pkg-sel-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-bottom:1px solid var(--border);font-size:13px}
.pkg-sel-item:last-child{border-bottom:none}
.pkg-rm{background:none;border:none;cursor:pointer;font-size:16px;color:var(--muted);line-height:1;padding:0 4px}
.pkg-rm:hover{color:#c00}
.pkg-total-row{font-size:13px;padding:6px 0 0;border-top:1px solid var(--border);text-align:right}
.picker-controls{display:flex;gap:8px}
.picker-controls input{flex:1;min-width:0}
.picker-controls select{width:130px;flex-shrink:0}
@media(max-width:600px){.pkg-layout{flex-direction:column}}

/* Package Master — card list in #pkgMasterPanel */
.pkg-list-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;margin-bottom:10px;background:#fff}
.pkg-list-card:hover{border-color:var(--primary);background:#f7f4ff}
.pkg-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.pkg-card-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pkg-card-name{font-weight:700;font-size:14px;color:var(--text)}
.pkg-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.pkg-badge-code{background:#ede9ff;color:#5b21b6;border-radius:4px;padding:1px 7px;font-weight:600;font-size:11px}
.pkg-meta-item{font-size:12px}
.pkg-meta-sep{opacity:.4}
.pkg-card-tests{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.pkg-test-chip{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:2px 9px;font-size:11px;color:var(--text)}
.pkg-card-actions{flex-shrink:0;display:flex;align-items:center;padding-top:2px}
.pkg-edit-btn{min-width:70px}

/* Required field marker and error highlight */
.req-star{color:#c00;font-weight:700;margin:0 3px 0 2px;font-size:13px}
.input-error{border-color:#c00 !important;background:#fff5f5 !important;box-shadow:0 0 0 2px rgba(200,0,0,.18) !important;animation:shake .25s ease}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

/* ===== ACCOUNTS VIEW ===== */
/* Filter bar */
/* ---------- Admin Dashboard ---------- */
.dash-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.dash-filter-bar label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.dash-filter-bar input[type="date"]{height:34px;padding:0 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text)}
.dash-quick{display:flex;gap:6px;flex-wrap:wrap}
.dash-quick .btn{font-size:12px;padding:6px 10px}
.dash-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.dash-kpi{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 12px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow);border-left:4px solid var(--border)}
.dash-kpi-val{font-size:21px;font-weight:800;color:var(--text);line-height:1.1}
.dash-kpi-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.dash-kpi.k-teal{border-left-color:#2f6f6f}.dash-kpi.k-teal .dash-kpi-val{color:#2f6f6f}
.dash-kpi.k-green{border-left-color:#16a34a}.dash-kpi.k-green .dash-kpi-val{color:#16a34a}
.dash-kpi.k-red{border-left-color:#dc2626}.dash-kpi.k-red .dash-kpi-val{color:#dc2626}
.dash-kpi.k-amber{border-left-color:#d97706}.dash-kpi.k-amber .dash-kpi-val{color:#d97706}
.dash-kpi.k-blue{border-left-color:#1d6fc4}.dash-kpi.k-blue .dash-kpi-val{color:#1d6fc4}
.dash-kpi.k-grey{border-left-color:#64748b}.dash-kpi.k-grey .dash-kpi-val{color:#475569}
.dash-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.dash-card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 16px;box-shadow:var(--shadow);margin-bottom:14px}
.dash-card-h{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-d)}
.dash-bar-row{display:grid;grid-template-columns:130px 1fr 120px;gap:10px;align-items:center;margin-bottom:7px;font-size:12px}
.dash-bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);font-weight:500}
.dash-bar-track{background:var(--row-alt,#eef2f2);border-radius:5px;height:16px;overflow:hidden}
.dash-bar-fill{display:block;height:100%;border-radius:5px;min-width:2px;transition:width .3s}
.dash-bar-val{text-align:right;font-weight:600;color:var(--muted);white-space:nowrap}
.dash-status-row{display:flex;gap:10px}
.dash-status{flex:1;border-radius:8px;padding:12px 8px;text-align:center;font-size:12px;font-weight:600;color:#fff}
.dash-status span{display:block;font-size:24px;font-weight:800;line-height:1.1;margin-bottom:2px}
.dash-status.s-paid{background:#16a34a}.dash-status.s-partial{background:#d97706}.dash-status.s-pending{background:#dc2626}
.dash-collect-note{margin-top:12px;font-size:12px;color:var(--muted)}
@media(max-width:760px){.dash-kpi-grid{grid-template-columns:repeat(2,1fr)}.dash-grid2{grid-template-columns:1fr}}

.acc-filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.acc-filter-bar label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.acc-filter-bar input[type="date"],.acc-filter-bar select{height:34px;padding:0 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text)}
.acc-due-lbl{flex-direction:row !important;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--text) !important;cursor:pointer}
.acc-due-lbl input{width:15px;height:15px;cursor:pointer}

/* Stats bar */
.acc-stats{display:flex;flex-wrap:wrap;gap:0;margin:0 0 12px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff}
.acc-stat{flex:1;min-width:110px;display:flex;flex-direction:column;align-items:center;padding:12px 10px;border-right:1px solid var(--border)}
.acc-stat:last-child{border-right:none}
.acc-stat-label{font-size:11px;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.acc-stat-val{font-size:18px;font-weight:700;color:var(--text)}
.acc-stat-disc .acc-stat-val{color:#d97706}
.acc-stat-net .acc-stat-val{color:#1d6fc4}
.acc-stat-rcvd .acc-stat-val{color:#16a34a}
.acc-stat-due .acc-stat-val{color:#c00}

/* Toolbar */
.acc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.acc-view-btns{display:flex;gap:6px}
.acc-view-btns .btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.acc-toolbar-right{display:flex;gap:8px}

/* Shared table wrap */
.acc-table-wrap{overflow-x:auto;padding-bottom:40px}

/* Detail view cards */
.acc-detail-card{margin-bottom:0;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.acc-detail-card+.acc-detail-card{margin-top:14px;border-top:2px solid var(--brand-d)}
.acc-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;background:var(--bg);border-bottom:1px solid var(--border)}
.acc-serial{font-weight:700;color:var(--muted);min-width:20px}
.acc-pname{font-weight:700;font-size:14px;color:var(--text);flex:1;min-width:120px}
.acc-pill{background:#fff;border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:12px;color:var(--muted)}
.acc-mode-pill{background:#eef6f6;border-color:#cfe3e3;color:var(--brand-d);font-weight:600}
/* Doctor business & incentive */
.db-incentive-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;padding:10px 12px;background:#f6f9f9;border:1px solid var(--line);border-radius:8px}
.db-incentive-bar .db-inc-title{font-weight:700;font-size:13px;color:var(--brand-d)}
.db-incentive-bar label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.db-pct{width:64px;padding:6px 8px;border:1px solid var(--line);border-radius:6px;text-align:center}
.db-cat-table{margin-bottom:10px}
.db-payout{font-size:14px;padding:8px 12px;background:#eef7f0;border:1px solid #cfe7d6;border-radius:8px;color:#185c33}
.db-detail{margin-top:12px}
.db-detail summary{cursor:pointer;font-weight:600;color:var(--brand-d);margin-bottom:8px}
.acc-cat-chip{background:#ede9ff;color:#5b21b6;border-radius:12px;padding:2px 9px;font-size:11px;font-weight:600}

/* Item table inside detail card */
.acc-item-table{width:100%;border-collapse:collapse;font-size:13px}
.acc-item-table th{background:var(--bg);padding:6px 10px;text-align:left;font-size:11px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border)}
.acc-item-table th.num,.acc-item-table td.num{text-align:right}
.acc-item-row td{padding:7px 10px;border-bottom:1px solid var(--border)}
.acc-item-row:last-child td{border-bottom:none}
.acc-item-name{min-width:180px}
.acc-total-row td{padding:8px 10px;background:#f9f9f9;border-top:2px solid var(--border)}
/* Grouped patient detail view */
.acc-patient-summary{display:flex;flex-wrap:wrap;gap:6px 22px;padding:9px 14px;background:#e8f3ef;border-top:2px solid var(--brand-d);font-size:13px}

/* Summary table */
.acc-table{width:100%;border-collapse:collapse;font-size:13px}
.acc-table th{background:var(--bg);padding:8px 10px;text-align:left;font-size:11px;font-weight:600;color:var(--muted);border-bottom:2px solid var(--border);white-space:nowrap}
.acc-table th.num,.acc-table td.num{text-align:right}
.acc-table td{padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}
.acc-table tbody tr:hover{background:var(--bg)}
.acc-row-due{background:#fff8f8}
.acc-grand-total td{background:#f0f4ff;padding:9px 10px;border-top:2px solid var(--border);font-size:13px}

/* Highlight cells */
.acc-disc-cell{color:#d97706}
.acc-due-cell{color:#c00;font-weight:600}

/* Status badges */
.acc-badge{display:inline-block;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;letter-spacing:.4px}
.acc-paid{background:#d4f7d4;color:#166534}
.acc-partial{background:#fef3c7;color:#92400e}
.acc-pending{background:#fee2e2;color:#991b1b}
.acc-settle-btn{margin-left:auto;font-size:12px;padding:3px 10px}

/* TAT report status badges */
.tat-badge{display:inline-block;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;letter-spacing:.4px;white-space:nowrap}
.tat-within{background:#d4f7d4;color:#166534}
.tat-out{background:#fee2e2;color:#991b1b}
.tat-pending{background:#fef3c7;color:#92400e}
.tat-na{background:#e5e7eb;color:#4b5563}

@media print {
  .acc-stats,.acc-toolbar,.acc-filter-bar{display:none}
  .acc-detail-card{break-inside:avoid;page-break-inside:avoid}
}

/* Accounts print output (renders into #printRoot) */
.acc-print-wrap{font-family:Arial,sans-serif;font-size:12px;color:#000;padding:8px 0}
.acc-print-hdr{text-align:center;border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:10px}
.acc-print-labname{font-size:18px;font-weight:700;letter-spacing:.5px}
.acc-print-tagline{font-size:12px;color:#444;margin-top:2px}
.acc-print-title{font-size:14px;font-weight:700;margin-top:6px;text-transform:uppercase;letter-spacing:1px}
.acc-print-filterline{font-size:11px;color:#555;margin-top:4px}
.acc-print-stats{display:flex;flex-wrap:wrap;gap:14px;padding:7px 0;border-bottom:1px solid #ccc;margin-bottom:10px;font-size:12px}
.acc-print-stats span{white-space:nowrap}
.acc-print-table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:6px}
.acc-print-table th{background:#f0f0f0;border:1px solid #ccc;padding:4px 6px;text-align:left;font-weight:700}
.acc-print-table td{border:1px solid #ccc;padding:4px 6px}
.acc-print-card{margin-bottom:12px;page-break-inside:avoid}
.acc-print-card-head{background:#f5f5f5;padding:5px 8px;font-size:12px;border:1px solid #ccc;border-bottom:none}
.acc-pi-name{min-width:160px}

/* ===== LOGIN SCREEN ===== */
.login-screen{position:fixed;inset:0;z-index:9999;background:linear-gradient(135deg,#1a237e 0%,#283593 50%,#0d47a1 100%);display:flex;align-items:center;justify-content:center}
.login-screen[hidden]{display:none}
.login-box{background:#fff;border-radius:16px;padding:40px 36px 32px;width:360px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;align-items:center;gap:10px}
.login-icon{font-size:42px;line-height:1}
.login-icon img{height:64px;width:auto;max-width:200px;object-fit:contain;vertical-align:middle}
.login-appname{margin:0;font-size:24px;font-weight:800;letter-spacing:1.5px;color:#1a237e;text-align:center}
.login-regline{font-size:12px;color:#666;text-align:center;margin-bottom:6px}
.login-fields{width:100%;display:flex;flex-direction:column;gap:12px;margin-top:4px}
.login-fields label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#555}
.login-fields input{height:38px;padding:0 12px;border:1px solid #d0d5dd;border-radius:8px;font-size:14px;width:100%;box-sizing:border-box}
.login-fields input:focus{outline:none;border-color:#1a237e;box-shadow:0 0 0 3px rgba(26,35,126,.12)}
.login-fields .pwd-wrap{position:relative;display:flex}
.login-fields .pwd-wrap input{flex:1;border-radius:8px 0 0 8px}
.login-fields .pwd-eye{border-radius:0 8px 8px 0;height:38px;border:1px solid #d0d5dd;border-left:none;background:#f7f7f7}
.login-err{width:100%;background:#fee2e2;color:#991b1b;border-radius:6px;padding:8px 12px;font-size:13px;text-align:center;margin-top:2px}
.login-btn{width:100%;height:42px;font-size:15px;font-weight:700;margin-top:6px;border-radius:8px;letter-spacing:.5px}
/* Centre dropdown on the login form */
.login-fields select{height:38px;padding:0 12px;border:1px solid #d0d5dd;border-radius:8px;font-size:14px;width:100%;box-sizing:border-box;background:#fff}
.login-fields select:focus{outline:none;border-color:#1a237e;box-shadow:0 0 0 3px rgba(26,35,126,.12)}
/* Scanned document attachments (registration) */
.attach-row{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.attach-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.attach-title{font-size:13px;font-weight:700;color:var(--ink)}
.attach-upload-btn{cursor:pointer;font-size:13px}
.attach-list{display:flex;flex-wrap:wrap;gap:10px}
.attach-empty{font-size:12px;color:var(--muted)}
.attach-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;background:var(--row-alt);max-width:280px}
.attach-thumb{width:34px;height:34px;object-fit:cover;border-radius:5px;border:1px solid var(--line);flex-shrink:0}
.attach-ficon{font-size:24px;width:34px;text-align:center;flex-shrink:0}
.attach-name{font-size:12px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:60px}
.attach-view{font-size:11px;padding:3px 8px;flex-shrink:0}
.attach-rm{flex-shrink:0}
/* Scanned documents viewer (Patient Search → Docs) */
.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;padding:16px}
.docs-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;cursor:pointer;background:#fff;display:flex;flex-direction:column;transition:box-shadow .15s,border-color .15s}
.docs-card:hover{border-color:var(--brand);box-shadow:0 4px 14px rgba(16,24,40,.12)}
.docs-thumb{width:100%;height:130px;object-fit:cover;background:#f1f3f5;display:block}
.docs-thumb-file{display:flex;align-items:center;justify-content:center;font-size:48px}
.docs-name{padding:8px 10px 2px;font-size:12px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.docs-open{padding:0 10px 9px;font-size:11px;color:var(--brand)}
/* Topbar right side */
.topbar-right{display:flex;align-items:center;gap:10px;margin-left:auto}
.user-badge{background:var(--brand);color:#fff;border-radius:12px;padding:3px 10px;font-size:12px;font-weight:600;white-space:nowrap}
.logout-btn{background:transparent;color:var(--brand);border-color:var(--brand);font-size:12px;padding:4px 12px}
.logout-btn:hover{background:var(--brand);color:#fff}

/* ===== STAFF RIGHTS CHECKBOXES ===== */
.rights-section{margin-top:14px;border-top:1px solid var(--border);padding-top:12px}
.rights-heading{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px}
.rights-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}
.rights-item{display:flex;align-items:flex-start;gap:7px;font-size:13px;font-weight:400;color:var(--text);cursor:pointer;line-height:1.4}
.rights-item input[type="checkbox"]{margin-top:2px;width:15px;height:15px;cursor:pointer;accent-color:var(--primary);flex-shrink:0}
.sd-active-label,.cef-active-label,.ep-active-label{display:flex;align-items:center;gap:7px;font-weight:600;cursor:pointer}
.sd-active-label input,.cef-active-label input,.ep-active-label input{width:15px;height:15px;cursor:pointer;accent-color:var(--primary)}
.inactive-badge{background:#fdecea;color:#c0392b;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;
  border-radius:4px;padding:2px 6px;margin-left:6px}

/* ===== ACTIVITY LOG ===== */
.log-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0 14px;border-bottom:1px solid var(--border);margin-bottom:12px}
.log-toolbar select,.log-toolbar input[type="date"]{height:34px;padding:0 8px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text)}
.log-toolbar label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);font-weight:500}
.log-table-wrap{overflow-x:auto;max-height:420px;overflow-y:auto;border:1px solid var(--border);border-radius:8px}
.log-table{width:100%;border-collapse:collapse;font-size:13px}
.log-table thead th{position:sticky;top:0;background:var(--surface2,#f4f5f7);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:9px 12px;border-bottom:2px solid var(--border);text-align:left;white-space:nowrap}
.log-table tbody tr{border-bottom:1px solid var(--border)}
.log-table tbody tr:last-child{border-bottom:none}
.log-table tbody tr:hover{background:#f9fafb}
.log-table td{padding:8px 12px;vertical-align:top}
.log-ts{white-space:nowrap;min-width:120px}
.log-ts .log-date{display:block;font-weight:600;color:var(--text)}
.log-ts .log-time{display:block;font-size:11px;color:var(--muted)}
.log-name{font-weight:600;color:var(--text);min-width:110px}
.log-role{color:var(--muted);font-size:12px;min-width:90px}
.log-action{font-weight:600;color:var(--primary);min-width:140px}
.log-detail{color:var(--text);max-width:260px;word-break:break-word}

/* ===== SAMPLE COLLECTION MODAL ===== */
.btn-sample{background:#e8f5e9;color:#2e7d32;border-color:#a5d6a7}
.btn-sample:hover{background:#c8e6c9}
.scm-mhdr{padding:16px 20px 10px;border-bottom:1px solid var(--border)}
.scm-patinfo{font-size:12px;color:var(--muted);margin-top:4px}
.scm-global-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#f8f9fa;border-bottom:1px solid var(--border);flex-wrap:wrap}
.scm-glabel{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;font-weight:500}
.scm-def-inp{width:52px;height:28px;padding:0 6px;border:1px solid var(--border);border-radius:5px;font-size:13px;text-align:center}
.scm-list{overflow-y:auto;flex:1;padding:6px 0}
.scm-group{border-bottom:1px solid var(--border)}
.scm-group:last-child{border-bottom:none}
.scm-group-hdr{padding:8px 16px 4px;background:#f4f5f7}
.scm-group-chk-wrap{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);cursor:pointer}
.scm-group-chk-wrap input[type="checkbox"]{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}
.scm-group-tests{padding:4px 0}
.scm-test-row{display:flex;align-items:center;gap:8px;padding:6px 16px 6px 28px;border-bottom:1px solid #f0f0f0;flex-wrap:wrap}
.scm-test-row:last-child{border-bottom:none}
.scm-test-row:hover{background:#fafbff}
.scm-test-chk-wrap{display:flex;align-items:center;gap:8px;flex:1;min-width:180px;cursor:pointer}
.scm-test-chk-wrap input[type="checkbox"]{width:15px;height:15px;accent-color:var(--primary);cursor:pointer;flex-shrink:0}
.scm-test-nm{font-size:13px;color:var(--text)}
.scm-suffix-wrap{display:flex;gap:6px;margin-left:4px}
.scm-suffix-lbl{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:700;color:#1565c0;background:#e3f2fd;border:1px solid #90caf9;border-radius:4px;padding:2px 7px;cursor:pointer;white-space:nowrap}
.scm-suffix-lbl input[type="checkbox"]{width:13px;height:13px;accent-color:#1565c0;cursor:pointer}
.scm-copies-wrap{display:flex;align-items:center;gap:5px;margin-left:auto;white-space:nowrap}
.scm-copies{width:48px;height:28px;padding:0 6px;border:1px solid var(--border);border-radius:5px;font-size:13px;text-align:center}
.scm-copies-lbl{font-size:11px;color:var(--muted)}
.scm-mfoot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:#fff}

/* ===== SAMPLE COLLECTION VIEW ===== */
.sc-ftabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:12px;margin-top:8px}
.sc-ftab{background:none;border:none;border-bottom:2px solid transparent;padding:8px 18px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;margin-bottom:-2px;transition:color .15s,border-color .15s}
.sc-ftab:hover{color:var(--primary)}
.sc-ftab.active{color:var(--primary);border-bottom-color:var(--primary)}
.sc-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.sc-item{background:#fff;border:1px solid var(--border);border-radius:10px;padding:14px 16px;display:flex;align-items:flex-start;gap:12px;justify-content:space-between}
.sc-item-done{border-left:4px solid #4caf50;background:#f9fff9}
.sc-item-info{flex:1;min-width:0}
.sc-item-name{font-size:14px;font-weight:700;color:var(--text)}
.sc-item-tests{font-size:12px;color:var(--muted);margin-top:4px;word-break:break-word}
.sc-item-reg{font-size:11px;color:#bbb;margin-top:3px}
.sc-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}
.sc-status{font-size:11px;font-weight:600;padding:3px 8px;border-radius:10px;white-space:nowrap}
.sc-done{background:#e8f5e9;color:#2e7d32}
.sc-pending{background:#fff8e1;color:#f57f17}
.sc-collected-lbl{font-weight:600;color:#2e7d32}
.sc-uncollected-lbl{color:#bbb}
/* Collection modal extras */
.scm-dt-bar{padding:10px 20px;background:#f0f4ff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.scm-dt-label{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}
.scm-dt-inp{height:32px;padding:0 10px;border:1px solid var(--border);border-radius:6px;font-size:13px}
.scm-saved-badge{font-size:11px;background:#e8f5e9;color:#2e7d32;border:1px solid #a5d6a7;border-radius:10px;padding:3px 10px;font-weight:600}

/* ===== SAMPLE COLLECTION STANDALONE BUTTON ===== */
.sc-top-btn{background:#e8f5e9;color:#2e7d32;border:1.5px solid #a5d6a7;font-weight:700;font-size:12px;padding:5px 13px;border-radius:6px;white-space:nowrap;margin:0 6px;flex-shrink:0}
.sc-top-btn:hover{background:#c8e6c9;border-color:#81c784}
.sc-top-btn-active{background:#2e7d32;color:#fff;border-color:#2e7d32}
.sc-top-btn-active:hover{background:#1b5e20}

/* Sample Collection tab — visually distinct from regular tabs */
.tab-sc{color:#2e7d32;font-weight:700;border-bottom-color:#a5d6a7}
.tab-sc:hover{background:#f1f8f2;color:#1b5e20}
.tab-sc.active{color:#2e7d32;background:#e8f5e9;border-bottom-color:#2e7d32}
.sc-partial{background:#fff8e1;color:#e65100}
.sc-item-partial{border-left:4px solid #ff9800;background:#fffde7}

/* ===== RESULT ENTRY MODAL ===== */
/* ===== RESULT ENTRY MODAL ===== */
.re-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:900;display:flex;align-items:center;justify-content:center;padding:20px;transition:padding .15s}
.re-overlay[hidden]{display:none}
.re-overlay.re-maximized{padding:0}
.re-panel{background:#fff;border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.22);width:100%;max-width:820px;height:88vh;display:flex;flex-direction:column;transition:height .15s,max-width .15s,border-radius .15s}
.re-overlay.re-maximized .re-panel{height:100vh;max-width:100%;border-radius:0}
.re-overlay.re-maximized .re-head{border-radius:0}
.re-overlay.re-maximized .re-foot{border-radius:0}
.re-head{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--brand);border-radius:12px 12px 0 0;flex-shrink:0}
.re-head-btns{display:flex;align-items:center;gap:8px}
.re-title{font-size:16px;font-weight:700;color:#fff}
.re-max-btn{background:rgba(255,255,255,.2);border:none;color:#fff;width:28px;height:28px;border-radius:4px;cursor:pointer;font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center}
.re-max-btn:hover{background:rgba(255,255,255,.35)}
.re-close{background:rgba(255,255,255,.2);border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center}
.re-close:hover{background:rgba(255,255,255,.35)}
.re-patient-bar{background:#f0f4ff;border-bottom:1px solid var(--line);padding:10px 20px;flex-shrink:0}
.re-modality-bar{padding:10px 20px;border-bottom:1px solid var(--line);background:#f8fffe;flex-shrink:0}
.re-modality-bar[hidden]{display:none}
.re-pi-name{font-size:15px;font-weight:700;color:var(--ink)}
.re-pi-meta{font-weight:400;color:var(--muted);font-size:13px}
.re-pi-details{font-size:12px;color:var(--muted);margin-top:2px}
.re-body{flex:1;min-height:0;overflow-y:scroll;padding:16px 20px}
.re-body>.test-card{margin-bottom:14px}
.re-body>.test-card:last-child{margin-bottom:0}
.re-foot{padding:12px 20px;border-top:1px solid var(--line);background:#fafafa;display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-radius:0 0 12px 12px;flex-shrink:0}
.re-status-msg{font-size:12px;color:var(--muted);margin-left:4px}
.re-foot-sep{flex:1}
.re-appr-btn{font-size:12px;height:30px;padding:0 10px;border-color:var(--brand-d);color:var(--brand-d)}
.re-appr-btn:hover{background:rgba(10,87,87,.07)}
.re-appr-btn.re-appr-done{background:#f0fdf4;color:#166534;border-color:#bbf7d0}
.re-appr-bar{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px}
.re-appr-chip{display:inline-flex;align-items:center;gap:4px;border-radius:10px;padding:2px 10px;font-size:11px;font-weight:600;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}
.re-appr-chip.pending{background:#f8f8f8;color:var(--muted);border-color:var(--line)}
.re-rte-section{margin-bottom:14px}
.re-photo-tool{margin:14px 0 4px;padding:12px;border:1px dashed var(--line);border-radius:8px;background:#fafcfc}
.re-photo-tool .re-add-photo{display:inline-block;cursor:pointer}
.re-rte-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-d);margin-bottom:4px}
.re-rte-ed{border:1px solid var(--line);border-radius:6px;padding:10px 12px;min-height:80px;font-family:Verdana,Geneva,sans-serif;font-size:12px;line-height:1.6;outline:none;background:#fff}
.re-rte-ed:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(31,122,224,.12)}
.re-field-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:13px}
.re-field-label{font-weight:600;color:var(--muted);min-width:100px}
.re-field-val{color:var(--ink)}
.re-field-booked{background:#eef6f6;border:1px solid #cfe3e3;border-radius:7px;padding:6px 10px;margin:-2px -2px 12px}
.re-tmpl-bar{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.re-tmpl-sel{flex:1;min-width:200px;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:6px;font-size:13px}

/* ===== EDIT PATIENT DETAILS MODAL ===== */
.ed-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:910;display:flex;align-items:center;justify-content:center;padding:20px}
.ed-overlay[hidden]{display:none}
#shareModal{display:flex}
#shareModal[hidden]{display:none}
.ed-panel{background:#fff;border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.22);width:100%;max-width:560px;display:flex;flex-direction:column}
.ed-head{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--accent);border-radius:12px 12px 0 0;flex-shrink:0}
.ed-title{font-size:15px;font-weight:700;color:#fff}
.ed-close{background:rgba(255,255,255,.2);border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.ed-close:hover{background:rgba(255,255,255,.35)}
.ed-body{padding:18px 20px;overflow-y:auto;max-height:70vh}
.ed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.ed-grid label{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:var(--muted);gap:4px}
.ed-grid input,.ed-grid select{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:#fff;font-family:inherit;color:var(--ink)}
.ed-grid input:focus,.ed-grid select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(31,122,224,.12)}
.ed-foot{padding:12px 20px;border-top:1px solid var(--line);background:#fafafa;display:flex;align-items:center;gap:10px;border-radius:0 0 12px 12px}
.ed-status{font-size:12px;color:var(--muted);margin-left:4px}

/* ===== EDIT BILL (Lab Settings) ===== */
.eb-search-row{display:flex;gap:8px;margin-bottom:14px}
.eb-search-row input{flex:1;height:36px;padding:0 12px;border:1px solid var(--line);border-radius:6px;font-size:14px;font-family:inherit;color:var(--ink)}
.eb-search-row input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(31,122,224,.12)}
.eb-pat-info{background:#f0f4ff;border-radius:6px;padding:10px 14px;margin-bottom:12px;font-size:13px;color:var(--ink)}
.eb-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:12px}
.eb-table thead th{text-align:left;padding:7px 8px;border-bottom:2px solid var(--line);font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.eb-th-num{text-align:right!important}
.eb-table td{padding:4px 8px;border-bottom:1px solid #eee;vertical-align:middle}
.eb-td-num{text-align:right;width:120px}
.eb-td-del{width:36px;text-align:center}
.eb-inp{width:100%;border:1px solid transparent;border-radius:4px;padding:4px 6px;font-size:13px;font-family:inherit;color:var(--ink);background:transparent}
.eb-inp:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 2px rgba(31,122,224,.10)}
.eb-item-charge{text-align:right}
.eb-del{padding:3px 8px;font-size:12px;color:#c00;border-color:transparent}
.eb-del:hover{background:#ffeaea;border-color:#c00}
.eb-foot-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--line)}
.eb-disc-inp{width:90px;height:30px;padding:0 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-family:inherit;text-align:right}
.eb-totals{font-size:13px;color:var(--muted);font-weight:500;margin-left:auto}
/* ===== DIGITAL SIGNATURES (Lab Settings) ===== */
.sig-row{display:flex;gap:24px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);flex-wrap:wrap}
.sig-block{flex:1;min-width:240px}
.sig-block-title{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.sig-body{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.sig-preview-wrap{width:200px;min-height:70px;border:1px dashed var(--line);border-radius:6px;padding:8px;background:var(--bg);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sig-preview{max-width:100%;max-height:80px;object-fit:contain}
.sig-none{font-size:11px;text-align:center;color:var(--muted)}
.sig-controls{display:flex;flex-direction:column;gap:8px}
/* Signature on printed report */
.rep-sig-img{display:block;max-width:160px;max-height:64px;object-fit:contain;margin:0 auto 2px}
.eb-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--brand-d);margin:0 0 8px;padding-bottom:4px;border-bottom:2px solid var(--line)}
.eb-pat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:14px}
.eb-pat-grid label{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:var(--muted);gap:4px}
.eb-pat-grid input,.eb-pat-grid select{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-family:inherit;color:var(--ink);background:#fff}
.eb-pat-grid input:focus,.eb-pat-grid select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(31,122,224,.12)}
.panels-config{margin:24px 0 16px;padding:16px;background:var(--row-alt);border-radius:10px;border:1px solid var(--line)}
.panels-config-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}
.panels-config-title{font-size:14px;font-weight:700;color:var(--ink)}
.panels-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;min-height:28px}
.panel-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--brand);color:#fff;border-radius:20px;font-size:12px;font-weight:600}
.panel-tag-rm{background:none;border:none;color:#fff;cursor:pointer;font-size:14px;line-height:1;padding:0 0 0 2px;opacity:.8}
.panel-tag-rm:hover{opacity:1}
.panels-add-row{display:flex;gap:8px}
.panels-add-row input{flex:1;padding:7px 10px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:inherit}
/* Rate List nav button */
.rl-nav-btn{margin-left:8px;font-size:12px;padding:5px 12px;align-self:center}
/* Rate List modal */
.rl-modal-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px rgba(16,24,40,.25);display:flex;flex-direction:column;width:96vw;max-width:1100px;max-height:90vh;overflow:hidden}
.rl-modal-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);flex-shrink:0}
.rl-modal-head h3{margin:0;flex:1;font-size:17px;color:var(--brand-d)}
.rl-head-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rl-panel-label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--muted)}
.rl-panel-label select,.rl-panel-label input{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-family:inherit}
.rl-empty{text-align:center;color:var(--muted);padding:18px;font-style:italic}
.rl-body{overflow-y:auto;flex:1;padding:0}
.rl-table{width:100%;border-collapse:collapse;font-size:13px}
.rl-table thead th{position:sticky;top:0;background:var(--brand-d);color:#fff;padding:9px 12px;text-align:left;font-weight:600;white-space:nowrap}
.rl-table tbody td{padding:7px 12px;border-bottom:1px solid var(--line)}
.rl-table tbody tr:hover td{background:var(--row-alt)}
.rl-group-row td{background:#e8f0fe!important;font-weight:700;font-size:12px;color:var(--brand-d);padding:6px 12px;text-transform:uppercase;letter-spacing:.4px}
.rl-num{color:var(--muted);font-size:11px;width:36px}
.rl-name{font-weight:600}
.rl-amt{text-align:right;font-weight:700;color:var(--brand-d);white-space:nowrap;width:80px}
/* Panel rates in test editor */
.pr-section{margin:12px 0 6px;padding:12px 14px;background:var(--row-alt);border-radius:8px;border:1px solid var(--line)}
.pr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:8px}
.pr-grid label{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:var(--muted);gap:3px}
.pr-grid input{padding:6px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px}
/* Centres */
.centre-card{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:10px;background:#fff}
.centre-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.centre-name{font-size:15px;font-weight:700;color:var(--brand-d)}
.centre-main-badge{display:inline-block;background:var(--brand);color:#fff;font-size:10px;font-weight:700;padding:1px 7px;border-radius:10px;vertical-align:middle;margin-left:6px;text-transform:uppercase;letter-spacing:.4px}
.centre-card-actions{display:flex;gap:6px;flex-shrink:0}
.centre-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--muted);margin-top:2px}
.centre-edit-form{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
/* Centre editor grid */
.cef-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:12px}
.cef-grid label{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:var(--muted);gap:3px}
.cef-grid input{padding:7px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px;font-family:inherit}
/* Centre staff assignment */
.cef-staff-section{margin-bottom:8px}
.cef-staff-label{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.4px}
.cef-staff-grid{display:flex;flex-wrap:wrap;gap:8px}
.cef-staff-item{display:flex;align-items:center;gap:5px;font-size:13px;background:var(--row-alt);padding:5px 10px;border-radius:20px;cursor:pointer;border:1px solid var(--line)}
.cef-staff-item input{cursor:pointer}
/* Centre rate input */
.crt-inp{width:100%;padding:5px 8px;border:1px solid var(--line);border-radius:5px;font-size:13px;font-family:inherit}

/* ---------- Report Photo Attachments (imaging / pathology views) ---------- */
.photo-attach-wrap{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.photo-attach-list{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0;min-height:28px;align-items:flex-start}
.photo-empty-hint{font-size:12px;color:var(--muted);align-self:center}
.photo-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;width:88px}
.photo-thumb{width:88px;height:54px;object-fit:cover;border:1px solid var(--border);border-radius:4px;cursor:pointer}
.photo-name{font-size:10px;color:var(--muted);width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.photo-rm{position:absolute;top:-6px;right:-6px;font-size:9px;padding:1px 5px;line-height:1.4;border-radius:50%}
.photo-add-btn{cursor:pointer;display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:13px}

/* ---------- Report Photo Grid — screen preview ---------- */
.rep-photo-grid{display:flex;flex-wrap:wrap;gap:6mm;margin:6mm 0}
.rep-photo-cell{width:5cm;height:3cm;overflow:hidden;border:0.5pt solid #bbb;background:#f5f5f5;flex-shrink:0}
.rep-photo-img{width:5cm;height:3cm;object-fit:cover;display:block}

/* ---------- Inline images inserted into RTE (graphs, photos) ---------- */
.rte img{max-width:100%;height:auto;display:inline-block;vertical-align:middle;margin:4px 2px;border:1px solid var(--border);border-radius:3px;cursor:pointer}
@media print{.rte img{max-width:100%;border:none}}

/* Images in printed lab text-report sections.
   max-height:190mm applies on screen too so printPaged() measures the correct height
   and never allocates more than one page worth of budget to a single image block. */
.rep-text-content img{
  display:block;
  max-width:100%;
  max-height:190mm;
  width:auto;
  height:auto;
  margin:6px 0;
}
@media print{
  .rep-text-content img{
    max-width:182mm;   /* 210mm page − 14mm padding × 2 */
    max-height:190mm;  /* fits within one page content area with margins + header + footer */
    width:auto;
    height:auto;
    display:block;
    break-inside:avoid;
    page-break-inside:avoid;
  }
}

/* ---------- Report Photo Grid — print (exact cm sizing) ---------- */
@media print{
  .rep-photo-grid{display:flex;flex-wrap:wrap;gap:4mm;margin:4mm 0;break-inside:avoid;page-break-inside:avoid}
  .rep-photo-cell{width:5cm;height:3cm;overflow:hidden;border:0.5pt solid #999;flex-shrink:0}
  .rep-photo-img{width:5cm;height:3cm;object-fit:cover;display:block}
}

/* ---- New Patient toggle + Patient UID (registration) ---- */
.np-check{display:flex;align-items:center;gap:6px;font-weight:600;align-self:end;padding-bottom:8px}
.np-check input{width:16px;height:16px}
.uid-row{display:flex;gap:6px;align-items:stretch}
.uid-row input{flex:1;min-width:0;text-transform:uppercase;letter-spacing:.5px;font-weight:600}
.uid-row input[readonly]{background:#f2f5f5;color:#33403f}
.uid-row .btn{white-space:nowrap;padding:6px 12px}
label#p_uid_wrap.uid-existing input{background:#fff;border-color:var(--accent,#2f7d6f)}

/* ---- Delta check ---- */
.deltabadge{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;color:#7a2e00;
  background:#ffe9d6;border:1px solid #f4b982;border-radius:9px;padding:0 6px;vertical-align:middle;cursor:help}
input.val.delta-breach{border-color:#e07b00 !important;background:#fff6ec;box-shadow:0 0 0 2px rgba(224,123,0,.15)}
.re-delta-note{margin:8px 2px 0;padding:8px 12px;border-radius:8px;background:#fff3e6;border:1px solid #f4b982;
  color:#7a2e00;font-size:13px;font-weight:700}
.doctor-suggest-box{margin:10px 2px 0;padding:10px 12px;border-radius:8px;background:#f0f7ff;border:1px solid #b8d8f5}
.dsb-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;color:var(--brand-d);margin-bottom:6px}
#dsb_text{width:100%;min-height:64px;resize:vertical;padding:7px 9px;border:1px solid var(--line);border-radius:6px;
  font-family:inherit;font-size:13px;box-sizing:border-box}
.dsb-include-label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink);
  cursor:pointer;margin-top:8px}
.dsb-include-label input{width:15px;height:15px;cursor:pointer;accent-color:var(--primary)}
.dsb-disclaimer{font-size:11px;font-style:italic;color:#555;margin-top:6px;line-height:1.4}
/* editor delta config column */
.ep-delta{display:flex;flex-direction:column;gap:4px}
.ep-delta input{width:100%}

/* ---- RCV calculator (Edit Tests) ---- */
.rcv-box{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px;padding:10px 12px;
  background:#eef6f4;border:1px solid #bcdcd5;border-radius:8px;font-size:13px}
.rcv-box .rcv-title{font-weight:800;color:#1a5c4e}
.rcv-box label{display:flex;align-items:center;gap:4px;font-weight:600}
.rcv-box input,.rcv-box select{padding:5px 7px;border:1px solid var(--line);border-radius:6px;font:inherit;width:74px}
.rcv-box .rcv-out{margin-left:auto;font-weight:700}
.rcv-box .rcv-out b{color:#7a2e00;background:#ffe9d6;border:1px solid #f4b982;border-radius:8px;padding:1px 8px}
.rcv-box .rcv-hint{flex-basis:100%;font-size:11px;color:var(--muted);font-weight:400}

/* editable field inside the Enter Results modal (e.g. Sample Id) */
.re-field-input{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:13px}

/* ---- Diagnosis search results ---- */
.diag-table td{vertical-align:top}
.diag-row{cursor:pointer}
.diag-row:hover{background:#eef6f4}
.diag-op{white-space:pre-line;max-width:420px;font-size:12px}
.diag-op mark{background:#fff3a3;padding:0 1px}

/* ==================== Quality Control (Levey-Jennings) ==================== */
.qc-bar,.qc-entry-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:8px 0}
.qc-bar label,.qc-entry-bar label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600}
.qc-bar select,.qc-bar input,.qc-entry-bar input{padding:7px 9px;border:1px solid var(--line);border-radius:6px;font:inherit}
.qc-entry-bar{background:#eef6f4;border:1px solid #bcdcd5;border-radius:8px;padding:8px 12px}
.qc-entry-label{font-weight:800;color:#1a5c4e;align-self:center}
.qc-stats{display:flex;flex-wrap:wrap;gap:16px;margin:6px 0 10px;font-size:13px}
.qc-stat b{color:var(--brand,#1a237e);margin-right:4px}
.qc-stat i{font-size:10px;font-style:normal;padding:0 5px;border-radius:8px;margin-left:3px}
.qc-assigned{background:#e4f7e8;color:#185c33;border:1px solid #aee0ba}
.qc-calc{background:#fff0e0;color:#8a4b00;border:1px solid #f2c48c}
.qc-unit{color:var(--muted);font-weight:600}
.qc-chart{margin:6px 0}
.lj-svg{width:100%;height:auto;background:#fff;border:1px solid var(--line);border-radius:8px}
.lj-band{fill:#eaf5ef}
.lj-mean{stroke:#1a5c4e;stroke-width:1.5}
.lj-1s{stroke:#c9d6d3;stroke-width:1}
.lj-2s{stroke:#e0a53c;stroke-width:1;stroke-dasharray:5 4}
.lj-3s{stroke:#d23b3b;stroke-width:1;stroke-dasharray:5 4}
.lj-line{fill:none;stroke:#3763b0;stroke-width:1.3}
.lj-pt-ok{fill:#2f7d6f;stroke:#fff;stroke-width:1}
.lj-pt-warn{fill:#e0a53c;stroke:#fff;stroke-width:1}
.lj-pt-rej{fill:#d23b3b;stroke:#fff;stroke-width:1.3}
.lj-axis-lbl{font-size:10px;fill:#5a6a67;font-weight:700}
.lj-axis-val{font-size:10px;fill:#98a4a1}
.lj-xlbl{font-size:10px;fill:#5a6a67;text-anchor:middle}
.lj-ytitle{font-size:11px;fill:#5a6a67;text-anchor:middle;font-weight:700}
.qc-flags{margin:8px 0}
.qc-flags-title{font-weight:800;color:#8a2b00;margin-bottom:4px}
.qc-flags-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.qc-flag{font-size:12px;padding:2px 8px;border-radius:8px;font-weight:700}
.qc-flag-rej{background:#ffe3e3;color:#a40000;border:1px solid #f3a8a8}
.qc-flag-warn{background:#fff3d6;color:#7a5200;border:1px solid #f0c977}
.qc-flags-ok{font-size:13px;font-weight:700;color:#185c33;background:#e4f7e8;border:1px solid #aee0ba;border-radius:8px;padding:6px 12px;display:inline-block}
.qc-table-wrap{margin-top:10px;max-height:260px;overflow:auto}
.qc-table{width:100%;border-collapse:collapse;font-size:13px}
.qc-table th,.qc-table td{border:1px solid var(--line);padding:5px 9px;text-align:left}
.qc-table th{background:#eef2f2}
.qc-z-warn{color:#8a5200;font-weight:700}
.qc-z-rej{color:#a40000;font-weight:800}
/* QC control modal */
.qc-ctrl-box{max-width:560px}
.qc-ctrl-body{padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.qc-ctrl-field{display:flex;flex-direction:column;gap:3px;font-weight:600;font-size:13px}
.qc-ctrl-field input{padding:8px 10px;border:1px solid var(--line);border-radius:6px}
.qc-levels-head,.qc-level-row{display:grid;grid-template-columns:1.1fr 1fr .9fr .9fr 32px;gap:8px;align-items:center}
.qc-levels-head{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700}
.qc-level-row input{padding:7px 9px;border:1px solid var(--line);border-radius:6px;width:100%}
.qc-ctrl-actions{display:flex;justify-content:space-between;margin-top:8px}

/* ---- Signatory approval categories (Lab Settings) ---- */
.sig-cats-wrap{display:flex;flex-direction:column;gap:5px;margin-top:4px}
.sig-cats-title{font-size:13px;font-weight:600}
.sig-cats-title small{font-weight:400;color:var(--muted)}
.sig-cats{display:flex;flex-wrap:wrap;gap:6px 14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg,#fafbfb)}
.sig-cat-item{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:500;white-space:nowrap}
.sig-cat-item input{width:14px;height:14px}

/* ---- Patient Search: category label chip (lab / imaging / pathology row) ---- */
.si-cat-lbl{font-weight:700;font-size:11px;padding:1px 6px;border-radius:8px;margin-right:5px;white-space:nowrap}
.si-cat-lab{background:#e7f0ff;color:#123a86}
.si-cat-img{background:#eee8fb;color:#4a2b86}
.si-cat-path{background:#fdeede;color:#8a4b00}
.saved-item .actions .btn{white-space:nowrap}

/* ---- QR verification stamp — top of the report/receipt, beside the logo ---- */
.rep-logo-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}
.rep-qr{text-align:center;font-size:9px;color:#444;line-height:1.2}
.rep-qr-img{width:15mm;height:15mm;margin:0 auto 2px}
.rep-qr-img svg{width:100%;height:100%;display:block}
.rcpt-head-row{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.rcpt-header{flex:1}
.rcpt-qr{text-align:center;font-size:9px;color:#444;line-height:1.15;flex:0 0 auto}
.rcpt-qr-img{width:13mm;height:13mm;margin:0 auto 2px}
.rcpt-qr-img svg{width:100%;height:100%;display:block}
