:root{--ink:#173d3d;--muted:#6a8082;--teal:#087b75;--teal-dark:#086861;--bg:#f4f8f7;--paper:#fff;--stroke:#dbe6e5;--shadow:0 10px 35px rgba(19,57,57,.045);--warn:#fffbeb}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;font-size:14px;line-height:1.5}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:30px;letter-spacing:-.8px;margin:7px 0 5px;line-height:1.16}h2{font-size:17px;letter-spacing:-.3px;margin:0 0 15px}h3{font-size:14px;margin:20px 0 8px}p{margin:8px 0 14px}.muted{color:var(--muted)}.small{font-size:12px}.topbar{background:#fff;border-bottom:1px solid var(--stroke);position:sticky;top:0;z-index:20}.top-inner{max-width:1500px;margin:auto;min-height:77px;display:flex;align-items:center;gap:30px;padding:10px 32px}.brand{display:flex;align-items:center;gap:10px;min-width:205px;color:var(--ink)}.brand:hover{text-decoration:none}.brand-logo{display:grid;place-items:center;background:var(--teal);color:#fff;border-radius:12px;width:43px;height:43px;font-size:22px}.brand b{font-size:15px;letter-spacing:1.8px}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.25px}nav{display:flex;align-items:center;flex:1;gap:6px;flex-wrap:wrap}nav a{padding:10px 12px;color:var(--ink);font-weight:600;border-radius:8px}nav a:hover{background:#e9f4f1;text-decoration:none}.userbar{display:flex;align-items:center;gap:12px;white-space:nowrap}.user-chip{background:#eff5f4;color:#426b6a;padding:7px 11px;border-radius:7px;font-size:12px}.nav-logout{background:none;border:none;color:var(--muted);font-weight:600;cursor:pointer}.shell{max-width:1500px;margin:0 auto;padding:34px 32px 80px;min-height:calc(100vh - 140px)}.footer{text-align:center;color:#95a5a4;padding:20px;font-size:11px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:1.7px;color:var(--teal)}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.heading-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.heading-actions form{display:inline}.panel{background:var(--paper);border:1px solid var(--stroke);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.panel.pad{padding:25px}.section-header{padding:22px 24px 6px;display:flex;align-items:center;justify-content:space-between;gap:15px}.section-header h2{margin:0}.section-header.flush{padding:0 0 15px}.btn{display:inline-flex;justify-content:center;align-items:center;gap:7px;border-radius:8px;padding:10px 15px;font-size:13px;font-weight:700;cursor:pointer;text-decoration:none;border:1px solid transparent;font-family:inherit;white-space:nowrap}.btn:hover{text-decoration:none;filter:brightness(.96)}.btn.primary{background:var(--teal);color:#fff}.btn.secondary{background:#f0f7f6;border-color:#cde3df;color:var(--teal-dark)}.btn.quiet{background:transparent;border-color:#dee9e7;color:#67807e}.btn.tiny{font-size:11px;padding:7px 10px}.btn.full{width:100%}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px;margin-bottom:25px}.stat{background:#fff;border:1px solid var(--stroke);border-radius:13px;padding:19px 23px;box-shadow:var(--shadow)}.stat span{display:block;color:var(--muted);font-size:12px;font-weight:600}.stat strong{display:block;font-size:31px;margin-top:8px;line-height:1}.table-wrap{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:630px}thead{background:#f7faf9}th{text-align:left;color:#758b8a;font-size:11px;text-transform:uppercase;letter-spacing:.8px;padding:15px 18px;font-weight:700}td{padding:16px 18px;border-top:1px solid #edf2f1;vertical-align:middle}td small{display:block;font-size:11px;color:var(--muted);margin-top:4px;max-width:220px}td.actions{display:flex;flex-wrap:wrap;gap:5px}td.actions form{display:inline}.table-link{font-weight:700;color:var(--ink)}.tag{background:#f0f4f4;border-radius:6px;padding:5px 8px;color:#567572;font-size:10px;letter-spacing:.2px;font-weight:800;white-space:nowrap}.tag.danger{background:#fff0e8;color:#bb4c25}.tag.status-waiting{background:#fff4df;color:#987322}.tag.status-in_consultation{background:#e9f0ff;color:#2d60a4}.tag.status-completed{background:#e0f6eb;color:#19734b}.tag.status-cancelled{background:#f1f1f1;color:#777}.empty{padding:35px 20px;text-align:center;color:var(--muted)}.form-panel{max-width:1000px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid .wide{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:7px;margin:0 0 14px}.field label{font-size:12px;font-weight:750;color:#405e5d}.control{width:100%;min-height:40px;padding:10px 11px;border-radius:8px;border:1px solid #cfdfdd;background:#fff;color:var(--ink);font:inherit;outline:none}.control:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(8,123,117,.12)}textarea.control{resize:vertical;min-height:78px}.form-actions{display:flex;gap:10px;align-items:center;margin-top:16px;flex-wrap:wrap}.search-form{display:flex;gap:12px}.search-form input{flex:1}.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:20px;align-items:start}.column-stack{display:flex;flex-direction:column;gap:20px;min-width:0}.info-list{display:grid;grid-template-columns:150px 1fr;gap:10px 12px}.info-list dt{color:var(--muted);font-size:12px}.info-list dd{margin:0;white-space:pre-wrap}.list-lines{padding:8px 20px 16px}.line-item{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 5px;border-bottom:1px solid #eaf0ee}.line-item:last-child{border:0}.line-item small{color:var(--muted);font-size:12px;display:block;margin-top:3px}.visit-link{color:var(--ink)}.visit-link:hover{background:#f7faf9;text-decoration:none}
/* Patient history: always show clinician attribution as separate metadata.
   Do not strike or hide the clinician's name for superseded signed notes. */
.visit-history-details{flex:1 1 auto;min-width:0}
.visit-history-details>.visit-link{display:block;max-width:100%}
.visit-attribution{display:flex;align-items:baseline;gap:5px;flex-wrap:wrap;margin-top:7px;font-size:12px;line-height:1.5;color:#24564e;overflow-wrap:anywhere}
.visit-attribution-label{font-weight:600}
.visit-attribution-name{font-weight:700}
.callout{padding:14px;border-radius:9px;background:#f2f7f6;font-size:12px}.callout.warning{background:var(--warn);color:#6e5c25}.callout.success{background:#e7f6ed;color:#236947}.preline{white-space:pre-wrap}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 318px;align-items:start;gap:20px}.editor-layout .panel.pad{padding:24px}.note-field textarea{min-height:105px}.phrase-panel{position:sticky;top:96px;padding-bottom:20px;max-height:calc(100vh - 110px);overflow:auto}.pad-sides{padding:0 20px}.phrase-categories{display:flex;gap:7px;flex-wrap:wrap;padding:14px 20px;border-bottom:1px solid #edf2f0}.category-btn{background:#f2f7f5;color:#55716e;border:1px solid #dbe8e5;border-radius:7px;padding:6px 8px;cursor:pointer;font:600 11px inherit}.category-btn.active{background:var(--teal);border-color:var(--teal);color:white}.phrases{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding-top:17px}.phrase-chip{border:1px solid #dce9e6;background:#fbfefd;border-radius:7px;text-align:left;padding:9px 10px;font:inherit;color:#3e6662;cursor:pointer}.phrase-chip:hover{border-color:var(--teal);background:#edf8f5}.phrase-bottom{padding:18px 20px 4px;font-weight:700;font-size:12px}.finalize{border-color:#b5d9d2}.read-page{max-width:1000px}.record-section{border-bottom:1px solid #edf2f0;padding:10px 0}.record-section h3{color:#507573;margin:5px 0}.record-section p{white-space:normal}.record-section:last-child{border-bottom:none}.billing-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}.dispense-form{display:flex;align-items:center;gap:5px}.qty-control{max-width:70px;min-height:32px;padding:6px}.summary .money-row{display:flex;justify-content:space-between;gap:10px;padding:10px 0;color:#587473;border-bottom:1px solid #edf3f1}.money-row strong{color:#234e4b}.total-row{display:flex;flex-direction:column;gap:4px;margin:20px 0;font-weight:700}.total-row strong{font-size:31px;letter-spacing:-.8px;color:var(--teal)}.payment-form{border-top:1px solid #e3ebea;margin-top:20px;padding-top:18px}.hint{font-size:11px;color:#78908e;padding-bottom:12px}.alert{padding:12px 15px;border-radius:8px;background:#e4f5ee;color:#12623e;margin:10px 0;font-weight:600}.alert.error{background:#ffeded;color:#ac3b34}.alerts{margin-bottom:17px}.error-text{color:#b94442;font-size:12px}.login-wrap{display:grid;place-items:center;min-height:60vh}.login-panel{width:min(100%,445px);padding:42px}.login-panel h1{font-size:32px;margin:12px 0}.login-panel .field{margin-top:20px}.fineprint{font-size:11px;color:#8ba09e;margin-top:20px}@media(max-width:1120px){.top-inner{gap:14px}.user-chip{display:none}nav a{padding:8px}.editor-layout{grid-template-columns:minmax(0,1fr) 260px}.billing-layout{grid-template-columns:minmax(0,1fr) 290px}}@media(max-width:850px){.top-inner{align-items:flex-start;flex-wrap:wrap;padding:12px 17px}.brand{min-width:auto}nav{order:3;width:100%}.shell{padding:22px 15px 60px}.heading-row{align-items:flex-start;flex-direction:column}.stats{gap:9px}.stat{padding:14px}.stat strong{font-size:24px}.two-col,.editor-layout,.billing-layout{grid-template-columns:1fr}.phrase-panel{position:static;max-height:none}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.search-form{flex-direction:column}}@media print{html{background:white}body{font-size:12px}.no-print,.topbar,.footer,.heading-actions,.payment-form,.dispense-form button,.btn,.hint{display:none!important}.shell{padding:0;max-width:none}.billing-layout,.two-col{display:block}.panel{box-shadow:none;border:none;border-radius:0}.section-header{padding-left:0}.billing-layout>.column-stack{margin-bottom:20px}.table-wrap{overflow:visible}table{min-width:0}td,th{padding:8px}.summary{border-top:2px solid #333}.heading-row{margin-bottom:10px}}

.date-picker{display:flex;align-items:center;gap:8px;margin-top:15px}.date-picker .control{max-width:165px}.phrase-chip[hidden]{display:none!important}

/* v0.3 — accessible search-as-you-type and clinical autocomplete */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.live-search-results{margin-top:13px;border:1px solid var(--stroke);border-radius:10px;background:#fff;overflow:hidden;color:var(--muted)}
.live-search-results[hidden],.note-suggestions[hidden],.phrase-item[hidden]{display:none!important}
.live-search-list{max-height:360px;overflow:auto}
.live-search-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 15px;border-bottom:1px solid #edf2f1;color:var(--ink)}
.live-search-item:last-child{border-bottom:none}
.live-search-item:hover,.live-search-item:focus{background:#edf8f5;text-decoration:none}
.live-search-item strong{font-size:13px}.live-search-item span{font-size:11px;color:var(--muted);text-align:right}
.note-autocomplete-anchor{position:relative}
.note-suggestions{position:relative;margin-top:-5px;border:1px solid var(--teal);background:#fff;border-radius:8px;box-shadow:0 12px 24px rgba(12,78,72,.14);z-index:12;max-height:210px;overflow-y:auto}
.suggestion-row{display:block;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid #f1f5f4;padding:10px 13px;color:var(--ink);font:inherit;cursor:pointer}
.suggestion-row:hover,.suggestion-row.selected{background:#eaf7f3;color:var(--teal-dark)}
.phrase-item{display:flex;gap:6px;align-items:stretch;width:100%}
.phrase-item .phrase-chip{flex:1;min-width:0;display:flex;justify-content:space-between;align-items:center;gap:6px}
.phrase-item .phrase-chip b{font-size:15px;color:var(--teal)}
.phrase-negative{flex:0 0 40px;border:1px solid #ead4ca;border-radius:7px;background:#fff7f3;color:#9b5032;font-weight:700;font-size:11px;font-family:inherit;cursor:pointer}
.phrase-negative:hover{background:#ffede5}
@media(max-width:850px){.live-search-item{align-items:flex-start;flex-direction:column;gap:2px}.live-search-item span{text-align:left}}

/* v0.4 clinical-record hierarchy, editable demographic header and print output */
.clinical-visit-head{border-color:#b9d9d4}
.clinical-datetime{font-size:12px;color:#415f5c;text-align:left;margin-bottom:14px}
.clinical-patient-name{font-size:23px;margin:0 0 10px}
.clinical-patient-details{display:flex;gap:8px 25px;flex-wrap:wrap;font-size:13px;margin:0 0 17px}
.clinical-history p{font-size:13px;line-height:1.65;margin:7px 0;white-space:normal}
.clinical-history p b{display:inline-block;min-width:42px;color:#285e59}
.clinical-divider{border:0;border-top:2px solid #7caaa4;margin:18px 0 14px}
.demographic-edit{padding:10px 0 0}
.demographic-edit summary{font-weight:700;font-size:13px;cursor:pointer;color:var(--teal)}
.demographic-edit[open] summary{margin-bottom:8px}
.demographic-edit form{border-top:1px solid #e4eeec;padding-top:17px;margin-top:12px}
.plan-fieldset{border:1px solid #d8e7e3;border-radius:9px;padding:14px;margin:8px 0 0}
.plan-fieldset legend{font-size:14px;font-weight:800;color:#285e59;padding:0 8px}
.clinical-printable .record-section{padding:9px 0 12px}
.clinical-printable .record-section h3{font-size:14px;font-weight:800;margin:5px 0;color:#285e59}
.clinical-printable .record-section p{font-size:13px;line-height:1.55;margin:5px 0;white-space:normal}
.clinical-signed-note{border-top:1px solid #dbe5e3;padding-top:16px}
@media print{
  .clinical-printable{padding:0!important}
  .clinical-patient-name{font-size:18px}
  .clinical-datetime{font-size:12px}
  .clinical-printable .record-section{break-inside:avoid}
  .clinical-visit-head,.phrase-panel{display:none!important}
}

/* v0.5: professional signed record preview and printed A4 pages */
.clinical-printable {box-sizing:border-box;width:min(100%,900px);margin:0 auto;padding:37px 48px 40px;background:#fff;color:#233b39;}
.record-letterhead{padding:0;margin:0;}
.record-topline{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:21px;color:#334f4c;}
.record-topline .clinical-datetime{margin:0;font-size:12px;font-weight:700;white-space:nowrap;}
.record-clinic-name{font-size:13px;letter-spacing:.08em;font-weight:800;color:#1f726e;text-align:right;}
.record-clinic-name small{display:block;font-size:9px;letter-spacing:.1em;font-weight:600;color:#607a78;}
.clinical-printable .clinical-patient-name{font-size:22px;line-height:1.25;letter-spacing:0;margin:0 0 9px;}
.clinical-printable .clinical-patient-details{margin:0 0 12px;display:flex;gap:5px 22px;flex-wrap:wrap;font-size:12px;line-height:1.5;}
.clinical-printable .clinical-history p{margin:3px 0;font-size:12px;line-height:1.5;}
.clinical-printable .clinical-divider{border:0;border-top:1px solid #789d98;margin:17px 0 13px;}
.clinical-printable .record-section{border:0;padding:0;margin:0 0 13px;break-inside:avoid;}
.clinical-printable .record-section h3{font-size:11.5px;font-weight:800;letter-spacing:.025em;line-height:1.5;color:#1d5d58;margin:0 0 2px;}
.clinical-printable .record-section p{font-size:12px;line-height:1.5;margin:0 0 3px;overflow-wrap:anywhere;}
.record-signature{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;border-top:1px solid #bfd2cf;margin-top:25px;padding-top:13px;font-size:11px;color:#526965;break-inside:avoid;}
.record-signature b{display:block;font-size:12px;color:#274946;}
.record-signature span{display:block;}
.record-status{font-size:9px;font-weight:800;letter-spacing:.07em;white-space:nowrap;}

/* Doctor-specific templates and consultation phrase navigation */
.phrase-panel{padding:0;overflow:hidden;display:flex;flex-direction:column;position:sticky;top:92px;height:min(790px,calc(100vh - 110px));max-height:calc(100vh - 110px);}
.phrase-panel-header{padding:16px 16px 10px;flex-shrink:0;}
.phrase-panel-header h2{margin:0 0 12px;font-size:18px;}
.phrase-panel-header label{display:block;margin-bottom:4px;}
.phrase-panel-header .control{font-size:12px;margin-bottom:9px;}
.phrase-panel-header p{line-height:1.5;margin:4px 0;}
.phrase-nav-tabs{display:flex;gap:5px;overflow-x:auto;padding:9px 12px;flex-shrink:0;scrollbar-width:thin;border-top:1px solid #e4eeec;border-bottom:1px solid #e4eeec;}
.phrase-tab{border:1px solid #dbe7e4;background:#f3f8f7;cursor:pointer;color:#426b66;border-radius:7px;padding:8px 10px;font-size:11px;font-weight:700;white-space:nowrap;}
.phrase-tab.active,.phrase-tab:hover{background:#087b75;color:#fff;border-color:#087b75;}
.phrase-scroller{position:relative;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:0 14px 15px;min-height:120px;scrollbar-width:thin;}
.phrase-group{padding:15px 0 6px;scroll-margin-top:12px;}
.phrase-group h3{font-size:13px;color:#245b56;border-bottom:1px solid #e2ebe9;padding:0 0 6px;margin:0 0 9px;}
.phrase-group-grid{display:grid;grid-template-columns:1fr;gap:7px;}
.phrase-group-grid .phrase-item{margin:0;min-width:0;}
.phrase-group-grid .phrase-chip{font-size:12px;min-width:0;}
.phrase-bottom{display:flex;flex-direction:column;gap:4px;border-top:1px solid #e4eeec;padding:12px 16px;flex-shrink:0;background:#fff;}

.phrase-template-toolbar{margin-bottom:18px;}
.template-selector{display:grid;grid-template-columns:minmax(200px,1fr) minmax(310px,1.5fr);gap:18px;align-items:end;}
.template-action{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap;}
.template-action .field{flex:1;min-width:160px;}
.template-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;}
.btn.danger{color:#af453c;}
.phrase-edit-heading{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:15px;}
.phrase-edit-heading .field{width:min(440px,100%);}
.phrase-editor-tabs{display:flex;gap:7px;overflow-x:auto;position:sticky;top:72px;z-index:3;padding:12px 0;background:#fff;border-bottom:1px solid #dce8e5;scrollbar-width:thin;}
.phrase-edit-tab{border:1px solid #d4e5e1;background:#f4faf8;color:#28645e;border-radius:7px;padding:9px 11px;font-weight:700;cursor:pointer;font-size:12px;white-space:nowrap;}
.phrase-edit-tab.active,.phrase-edit-tab:hover{background:#087b75;color:#fff;}
.phrase-grid-section{padding:20px 0 17px;border-bottom:1px solid #e2ecea;scroll-margin-top:137px;}
.grid-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:9px;flex-wrap:wrap;}
.grid-section-head h2{font-size:16px;margin:0;}
.phrase-spreadsheet-wrap{overflow-x:auto;border:1px solid #dbe7e4;border-radius:9px;margin-bottom:10px;}
.phrase-spreadsheet{min-width:730px;font-size:12px;}
.phrase-spreadsheet th{padding:9px 5px;text-transform:none;font-size:11px;text-align:center;}
.phrase-spreadsheet td{padding:4px 3px;border:1px solid #e7efed;}
.phrase-spreadsheet th:not(.row-number){width:23%;}
.phrase-spreadsheet td.row-number,.phrase-spreadsheet th.row-number{width:29px;text-align:center;padding:0 4px;color:#78928f;font-size:11px;}
.phrase-cell{border:1px solid transparent;border-radius:4px;font:inherit;font-size:12px;width:100%;min-width:100px;padding:9px 7px;background:white;}
.phrase-cell:focus{border-color:#087b75;outline:2px solid #b0d7d0;background:#f7fffd;}
.phrase-cell::placeholder{color:#abbeb9;}
.phrase-row-actions{white-space:nowrap;text-align:center;}
.phrase-row-actions button{border:0;background:#f1f7f5;color:#4d6c68;border-radius:4px;margin:1px;padding:6px;cursor:pointer;min-width:25px;}
.phrase-row-actions button:hover{background:#d9eee8;}
.phrase-row-actions button.row-remove{color:#a8413d;}
.phrase-save-bottom{padding-top:18px;}
#phrase-unsaved-indicator.unsaved{color:#9d4a25;font-weight:700;}
@media(max-width:850px){
 .clinical-printable{padding:23px 18px;}
 .phrase-panel{position:static;height:480px;max-height:480px;}
 .template-selector{grid-template-columns:1fr;}
 .record-topline{flex-wrap:wrap;}
 .phrase-editor-tabs{top:0;}
 .phrase-grid-section{scroll-margin-top:66px;}
}
@page{size:A4;margin:17mm 19mm;}
@media print{
 html,body{background:#fff!important;margin:0!important;padding:0!important;color:#000!important;}
 .shell{padding:0!important;margin:0!important;width:auto!important;max-width:100%!important;}
 .clinical-printable{border:0!important;box-shadow:none!important;border-radius:0!important;max-width:none!important;width:100%!important;min-width:0!important;margin:0!important;padding:2mm 2mm 0!important;color:#182522!important;}
 .record-topline{margin-bottom:14px!important;}
 .record-clinic-name{color:#333!important;}
 .clinical-printable .clinical-patient-name{font-size:17px!important;}
 .clinical-printable .clinical-patient-details,.clinical-printable .clinical-history p{font-size:10.5px!important;}
 .clinical-printable .clinical-divider{margin:10px 0 10px!important;border-color:#444!important;}
 .clinical-printable .record-section{margin:0 0 9px!important;padding:0!important;border:0!important;}
 .clinical-printable .record-section h3{margin:0 0 2px!important;font-size:11px!important;color:#161f1e!important;}
 .clinical-printable .record-section p{font-size:10.5px!important;line-height:1.4!important;margin:0 0 2px!important;}
 .record-signature{margin-top:15px!important;padding-top:9px!important;border-color:#777!important;}
 .clinical-printable *{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}
/* Phrases remain in the clinician's chosen spreadsheet row/column order. */
.editor-layout{grid-template-columns:minmax(0,1fr) 374px;}
.phrase-group-grid{display:flex;flex-direction:column;gap:7px;}
.phrase-group-grid .phrase-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:6px;border-radius:7px;background:#f7faf9;border:1px solid #edf2f0;}
.phrase-group-grid .phrase-slot{min-width:0;}
.phrase-group-grid .phrase-item{height:100%;}
.phrase-group-grid .phrase-chip{width:100%;min-width:0;padding:7px 6px;font-size:11px;line-height:1.3;word-break:break-word;white-space:normal;}
.phrase-group-grid .phrase-negative{flex:0 0 29px;font-size:10px;}
@media(max-width:1120px){.editor-layout{grid-template-columns:minmax(0,1fr) 300px;}}
@media(max-width:850px){.editor-layout{grid-template-columns:1fr;}}
@media print{
 .clinical-printable .record-section p{font-size:13.3px!important;line-height:1.47!important;}
 .clinical-printable .record-section h3{font-size:13.3px!important;}
 .clinical-printable .clinical-patient-name{font-size:20px!important;}
 .clinical-printable .clinical-patient-details,.clinical-printable .clinical-history p{font-size:12.5px!important;}
}

/* v0.6: prescription drafting, stock availability and flexible checkout */
.rx-management{border-left:4px solid #18877f;}
.rx-management .medicine-lookup{position:relative;margin:16px 0;max-width:760px;}
.rx-in-stock{background:#e9f8ec;color:#176336;}
.stock-flag{display:inline-block;margin-left:7px;padding:2px 6px;border-radius:4px;background:#dbf4e0;color:#14602c;font-size:10px;font-weight:750;}
.stock-out{display:inline-block;margin-left:7px;padding:2px 6px;border-radius:4px;background:#f2f4f5;color:#737b7a;font-size:10px;}
.phrase-chip.stock-available,.suggestion-row.stock-available,.medicine-option.stock-available{background:#e7f8e9!important;color:#135f30!important;border-color:#b1dabc!important;}
.phrase-chip.stock-unavailable,.suggestion-row.stock-unavailable,.medicine-option.stock-unavailable{color:#67727a;}
.medicine-search-results{position:absolute;top:calc(100% - 12px);z-index:21;width:100%;background:#fff;border:1px solid #bad6cf;border-radius:8px;box-shadow:0 7px 20px #183a3525;max-height:290px;overflow-y:auto;}
.medicine-option{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;gap:15px;padding:10px 12px;cursor:pointer;border:0;border-bottom:1px solid #e0e9e6;background:#fff;font-size:13px;}
.medicine-option.current,.medicine-option:hover{outline:2px solid #439d87;outline-offset:-2px;}
.medicine-option small{font-size:11px;white-space:nowrap;}
.bill-med-form{display:grid;grid-template-columns:70px 100px auto;gap:7px;align-items:center;min-width:235px;}
.bill-med-form input{min-width:0;width:100%;padding:8px 6px;}
.bill-med-read{display:grid;grid-template-columns:70px 100px;gap:8px;}
.inline-credit-form{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px;}
.inline-credit-form .control{max-width:400px;}
.credit-profile-notice{border-left:4px solid #df9f3d;margin:0 0 20px;background:#fffdf8;}
.credit-profile-notice h2{color:#7e541b;}
.credit-mini-list{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:13px;}
.credit-checkbox{display:flex;gap:8px;align-items:flex-start;font-size:12px;margin:15px 0;line-height:1.5;}
.credit-checkbox input{margin-top:2px;}
.invoice-summary{position:sticky;top:95px;}
.manual-item-form{margin-top:14px;align-items:end;}
.manual-item-form button{align-self:end;}
@media(max-width:760px){.bill-med-form{grid-template-columns:58px 85px auto;min-width:210px;}.invoice-summary{position:static;}}

/* v0.6: reserved letterhead area and guaranteed horizontal print margins.
   In Chrome/Edge Print, choose Margins: Default (do not override with Custom). */
@page{size:A4 portrait;margin:39mm 24mm 19mm 24mm;}
@media print{
  html,body{width:100%!important;overflow:visible!important;}
  .shell{padding:0!important;max-width:none!important;margin:0!important;}
  .clinical-printable{
    width:100%!important;max-width:none!important;min-width:0!important;
    margin:0!important;padding:0!important;border:0!important;
    border-radius:0!important;box-shadow:none!important;
    box-sizing:border-box!important;
  }
  .record-topline{margin-bottom:16px!important;}
  .record-letterhead{margin:0!important;}
  .record-section{break-inside:avoid;}
  .billing-layout{display:block!important;}
  .billing-layout .column-stack{display:block!important;}
  .billing-layout .panel{break-inside:avoid;box-shadow:none!important;}
  .bill-med-form,.manual-item-form,.credit-checkbox,.payment-form{display:none!important;}
  .invoice-summary{position:static!important;}
}
.bill-item-edit{display:grid;grid-template-columns:2fr 80px 100px auto;gap:8px;align-items:center;}
.bill-item-edit .control{min-width:0;}
@media(max-width:640px){.bill-item-edit{grid-template-columns:1fr 70px 80px auto;gap:4px;}}

.phrase-name-only{flex:0 0 auto;background:#f0f5f4;color:#3c5f5b;font-size:10px;border:1px solid #d9e7e2;border-radius:4px;cursor:pointer;padding:4px;}
.phrase-name-only:hover{background:#dceddf;}
/* v0.7 private autosaved draft and simplified prescription editor */
.save-state {font-weight:600;font-size:.91rem}
.save-state[data-state="saving"] {color:#926900}
.save-state[data-state="ok"] {color:#16744e}
.save-state[data-state="error"] {color:#b42626}
#rx-match-status {margin:.5rem 0;line-height:1.45}
#rx-match-status[data-state="warning"] {color:#a26500;font-weight:600}
#rx-match-status[data-state="ok"] {color:#16744e}
.rx-free-text textarea {min-height:120px;font-family:inherit;line-height:1.65}
.phrase-chip[data-section="rx"].stock-available,.suggestion-row.stock-available {background:#e3f5e8;border-color:#a0d6b0;color:#126036}
.phrase-chip[data-section="rx"].stock-unavailable {background:#fafafa}
.autosave-actions {padding-top:12px}

.rx-draft-preview {display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.rx-preview-line {max-width:100%;border:1px solid #d5dad9;padding:5px 9px;border-radius:7px;font-size:.84rem;overflow-wrap:anywhere}
.rx-preview-line.stock-available {background:#e1f5e9;border-color:#82c6a1;color:#075c39}
.rx-preview-line.stock-unavailable {background:#fff5e7;border-color:#e7c99d}

/* v0.8: safer generic/brand medicine reconciliation. */
.rx-link-cell{min-width:235px}.rx-link-cell .control{min-width:230px;max-width:310px;font-size:12px}
.stock-text-green{color:#16875d}.rx-match-row{border:1px solid var(--border,#d9e2e8);padding:10px;border-radius:8px;margin:7px 0}
.rx-match-row.stock-available{background:#eefaf3;border-color:#b4ddc6}.rx-match-row.stock-warning{background:#fff8e8;border-color:#e7cf91}
.rx-match-row .rx-match-choices{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;align-items:center}
.rx-match-choices select{width:min(100%,400px)}.rx-match-row small{display:block;margin-top:3px}
.rx-confirm-btn{white-space:nowrap}.rx-match-row strong{word-break:break-word}

/* v0.9: quiet, single-field prescription stock colouring (no match cards). */
.rx-colour-editor{position:relative;width:100%;isolation:isolate;}
.rx-colour-editor .rx-colour-mirror{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  background:#fff;color:var(--ink);box-sizing:border-box;
  overflow:hidden;white-space:pre-wrap;overflow-wrap:break-word;
}
.rx-colour-editor .rx-colour-content{white-space:pre-wrap;overflow-wrap:break-word;}
.rx-colour-editor .rx-instock-line{color:#127045;}
.rx-colour-editor .rx-outstock-line{color:#b4232e;font-weight:600;}
.suggestion-row.stock-unavailable,.phrase-chip[data-section="rx"].stock-unavailable{color:#ac202b!important;background:#fff0f0!important;border-color:#edb4b9!important;}
.rx-quantity-preview{margin:.6rem 0 0;padding:.6rem .8rem;border:1px solid #d3dfda;border-radius:8px;background:#fafdfb;font-size:.85rem;}
.rx-quantity-row{padding:.25rem 0;border-top:1px solid #edf0ef;}

.rx-colour-editor .rx-plain-line{color:var(--ink);}
.rx-colour-editor textarea.rx-colour-input{
  position:relative;z-index:1;background:transparent;
  color:transparent;-webkit-text-fill-color:transparent;
  caret-color:var(--ink);resize:vertical;
}
.rx-colour-editor textarea.rx-colour-input::placeholder{
  color:#78908e;-webkit-text-fill-color:#78908e;
}
.rx-colour-editor textarea.rx-colour-input::selection{background:rgba(8,123,117,.22);}
@media (forced-colors:active){
 .rx-colour-editor .rx-colour-mirror{display:none}
 .rx-colour-editor textarea.rx-colour-input{color:CanvasText;-webkit-text-fill-color:CanvasText;background:Canvas}
}
@media print{
 .rx-colour-editor .rx-colour-mirror{display:none}
 .rx-colour-editor textarea.rx-colour-input{color:#111;-webkit-text-fill-color:#111}
}


/* v0.10: compact consultation sidebar, correctly sized Rx and header-only cloud state. */
/* Do not let the application's global nav{flex:1} expand the phrase tabs. */
.editor-layout .phrase-panel {
  position:sticky;top:85px;
  height:calc(100dvh - 97px);max-height:calc(100dvh - 97px);
  min-height:310px;padding:0;overflow:hidden;
  display:flex;flex-direction:column;
}
.editor-layout .phrase-panel-header {flex:0 0 auto;padding:12px 12px 7px;}
.editor-layout .phrase-panel-header h2 {font-size:16px;margin:0 0 7px;}
.editor-layout .phrase-panel-header label {margin:0 0 2px;font-size:11px;}
.editor-layout .phrase-panel-header .control {min-height:35px;padding:5px 9px;margin:0;font-size:12px;}
.editor-layout nav.phrase-nav-tabs {
  flex:0 0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:4px;padding:7px 10px;align-items:stretch;justify-content:stretch;
  border-top:1px solid #e4eeec;border-bottom:1px solid #e4eeec;
  overflow:visible;
}
.editor-layout .phrase-nav-tabs .phrase-tab {min-width:0;padding:6px 2px;font-size:10px;text-align:center;white-space:nowrap;}
.editor-layout .phrase-scroller {
  flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;
  padding:0 10px 12px;overscroll-behavior:contain;
}
.editor-layout .phrase-group {padding:10px 0 3px;}
.editor-layout .phrase-group h3 {margin:0 0 6px;padding-bottom:4px;}
.editor-layout .phrase-group-grid {gap:4px;}
.editor-layout .phrase-group-grid .phrase-row {padding:4px;gap:4px;}
.editor-layout .phrase-group-grid .phrase-chip {padding:6px 5px;}
/* Fieldsets and their children must not shrink to the native textarea's cols width. */
#visit-editor .plan-fieldset {width:100%;min-width:0;max-width:100%;}
#visit-editor .rx-free-text {width:100%;min-width:0;max-width:100%;}
#visit-editor .rx-free-text > textarea,
#visit-editor .rx-free-text .rx-colour-editor,
#visit-editor .rx-free-text .rx-colour-editor textarea {
  display:block;width:100%!important;max-width:100%;min-width:0;box-sizing:border-box;
}
#visit-editor .rx-free-text .rx-colour-editor {align-self:stretch;}
/* Cloud sync marker only appears on an unsigned clinical visit, beside username. */
.cloud-sync-indicator[hidden] {display:none!important;}
.cloud-sync-indicator {
  flex:0 0 23px;display:inline-grid;place-items:center;
  width:23px;height:23px;border-radius:50%;color:#fff;
  font-size:16px;font-weight:800;line-height:1;
  cursor:help;
}
.cloud-sync-indicator[data-state="synced"] {background:#167946;}
.cloud-sync-indicator[data-state="unsynced"] {background:#c33636;}
@media (max-width:1120px){
  .topbar .userbar .user-chip {display:inline-flex;padding:6px 8px;max-width:130px;overflow:hidden;text-overflow:ellipsis;}
}
@media (max-width:850px){
  .editor-layout .phrase-panel {position:static;height:min(70dvh,690px);max-height:min(70dvh,690px);min-height:320px;}
  .editor-layout nav.phrase-nav-tabs {grid-template-columns:repeat(4,minmax(0,1fr));}
}
@media print {.cloud-sync-indicator{display:none!important;}}

/* v0.11 - instant dispensing saves and print-only documents */
.bill-save-status{margin:4px 24px 12px;padding:9px 12px;border-radius:7px;font-size:12px;font-weight:650;color:#587471;background:#f2f7f6;}
.bill-save-status[data-state="saving"]{color:#835d12;background:#fff7df;}
.bill-save-status[data-state="error"]{color:#b52b28;background:#ffeded;}
.bill-save-status[data-state="saved"]{color:#126947;background:#e8f8ee;}
.bill-autosave-input{max-width:135px;min-width:70px;font-variant-numeric:tabular-nums;}
.print-toolbar{display:flex;justify-content:flex-end;gap:10px;margin-bottom:20px;}
.billing-print-document{max-width:820px;margin:0 auto;background:#fff;padding:36px 44px;min-height:420px;border:1px solid var(--stroke);border-radius:12px;color:#222;}
.billing-print-heading{display:flex;justify-content:space-between;gap:18px;padding-bottom:18px;border-bottom:2px solid #184f4a;}
.billing-print-heading h1{font-size:24px;letter-spacing:.6px;margin:0 0 3px;color:#164d48;}
.billing-print-heading b{font-size:12px;}.billing-print-heading p{font-size:11px;margin:5px 0;color:#526360;}
.billing-print-reference{text-align:right;}.billing-print-reference>b{font-size:13px;letter-spacing:.7px;}
.billing-print-patient{display:grid;grid-template-columns:1.5fr .65fr 1fr;gap:12px;padding:17px 0;border-bottom:1px solid #dee7e5;margin-bottom:18px;}
.billing-print-patient>div{font-size:12px;}.billing-print-patient b{display:block;color:#6a7775;font-size:10px;text-transform:uppercase;letter-spacing:.5px;}
.billing-print-document h2{font-size:14px;margin:18px 0 10px;}
.billing-print-table{width:100%;min-width:0;border-collapse:collapse;font-size:11px;}
.billing-print-table th{text-align:left;color:#405d58;padding:8px;border-bottom:1px solid #a8bcba;background:#f5f8f7;}
.billing-print-table td{padding:8px;border-bottom:1px solid #e5eceb;}
.billing-print-table td small{font-size:10px;max-width:none;margin-top:3px;}
.billing-print-table .print-num{text-align:right;white-space:nowrap;}
.billing-print-totals{margin:16px 0 20px auto;max-width:350px;}
.billing-print-totals>div{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:11px;}
.billing-print-totals>.billing-print-emphasis{padding:9px 0;border-top:1px solid #8aa4a1;font-size:13px;}
.billing-print-claim{min-height:100px;margin:34px 0 22px;}
.billing-print-claim p{font-size:14px;white-space:pre-wrap;}
.billing-print-claim-total{border-top:2px solid #355c56;border-bottom:2px solid #355c56;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;margin:20px 0 34px;font-size:16px;}
.billing-print-claim-total strong{font-size:25px;color:#154a43;}
.billing-print-footer{font-size:10px;color:#777;border-top:1px solid #d3dfdb;margin-top:38px;padding-top:12px;text-align:center;}
.print-footnote{font-size:10px;color:#666;}
.label-review{max-width:1000px;margin:0 auto 26px;}
.label-review-row{border-top:1px solid #e1ebea;padding:19px 0;display:flex;flex-direction:column;gap:5px;}
.label-review-row .muted{display:block;}
.label-review-row label{font-weight:700;font-size:12px;}
.label-print-buttons{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0;}
.medicine-label-sheet{display:grid;grid-template-columns:repeat(2,86mm);gap:6mm;justify-content:center;align-content:start;background:#fff;padding:15px;}
.medicine-cover-label{border:1px solid #aaa;background:#fff;width:86mm;min-height:51mm;padding:4mm;display:flex;flex-direction:column;gap:2mm;color:#111;break-inside:avoid;overflow-wrap:anywhere;}
.cover-label-brand{font-weight:800;letter-spacing:.8px;font-size:11px;border-bottom:1px solid #777;padding-bottom:3px;}
.cover-label-brand span{font-size:8px;letter-spacing:.3px;}
.cover-label-patient{display:flex;justify-content:space-between;gap:7px;font-size:10px;}
.cover-label-patient strong{font-weight:750;}
.cover-label-medicine{font-size:11px;line-height:1.2;}
.cover-label-directions{font-size:10px;line-height:1.32;flex:1;white-space:normal;}
.cover-label-bottom{font-size:8px;color:#555;border-top:1px solid #ddd;padding-top:3px;}
.medicine-label-sheet.single-label-layout{grid-template-columns:80mm;}
.medicine-label-sheet.single-label-layout .medicine-cover-label{width:80mm;min-height:55mm;}
@media(max-width:700px){.billing-print-document{padding:20px 15px}.billing-print-patient{grid-template-columns:1fr 1fr}.medicine-label-sheet{grid-template-columns:1fr;justify-items:center}.billing-print-claim-total{flex-direction:column;align-items:flex-start;}}
@media print{
  .billing-print-document{border:0!important;box-shadow:none!important;border-radius:0!important;max-width:none!important;margin:0!important;padding:0!important;min-height:0!important;}
  .billing-print-heading,.billing-print-totals,.billing-print-patient{break-inside:avoid;}
  .billing-print-table{min-width:0!important;}
  .billing-print-table tr{break-inside:avoid;}
  .label-review,.print-toolbar{display:none!important;}
  .medicine-label-sheet{padding:0!important;background:#fff!important;gap:6mm!important;}
  .medicine-label-sheet.single-label-layout{display:block!important;}
  .single-label-layout .medicine-cover-label{width:80mm!important;min-height:55mm!important;max-height:55mm;page-break-after:always;margin:0;}
  .sheet-label-layout .medicine-cover-label{width:86mm!important;min-height:51mm;}
  .medicine-cover-label{border:1px solid #666!important;}
}
@media print{
  .single-label-layout .medicine-cover-label:last-child{break-after:auto;page-break-after:auto;}
}
/* v0.12 — staff counter POS */
.pos-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(410px,0.95fr);gap:20px;align-items:start}
.pos-cart-panel{position:sticky;top:95px;max-height:calc(100vh - 115px);overflow:auto}
.pos-catalogue{max-height:60vh;overflow-y:auto;display:flex;flex-direction:column;gap:7px}
.pos-product{border:1px solid #d9e7e4;background:#f8fcfa;border-radius:9px;padding:12px;display:flex;justify-content:space-between;align-items:center;text-align:left;gap:10px;cursor:pointer;color:var(--ink);font:inherit}
.pos-product:hover{border-color:#087b75;background:#ecf8f5}.pos-product small{display:block;margin-top:4px}
.pos-cart-line{border-bottom:1px solid #e1ebea;padding:10px 0;display:grid;grid-template-columns:minmax(100px,1fr) 67px 95px 93px auto;gap:7px;align-items:center}
.pos-cart-description b,.pos-cart-description small{display:block;overflow-wrap:anywhere}.pos-cart-description small{font-size:10px}
.pos-cart-line .control{padding:7px;min-height:34px;font-size:12px}.pos-cart-line strong{font-size:12px;text-align:right}
.pos-money-row{display:flex;justify-content:space-between;gap:20px;padding:8px 0;border-bottom:1px solid #edf2f0}.pos-money-row.strong{font-weight:800;font-size:18px;color:#125c56}
.pos-payment-row{display:grid;grid-template-columns:115px minmax(80px,1fr) minmax(80px,1fr) auto;gap:7px;margin:8px 0}.pos-payment-row .control{min-width:0}
.pos-patient-results{display:flex;flex-direction:column}.pos-patient-option{text-align:left;border:1px solid #e5ecea;background:#f5faf8;padding:8px;cursor:pointer;border-radius:5px;color:var(--ink)}
#pos-feedback:not(:empty){margin:10px 0;padding:10px;border-radius:7px;background:#fff1e7;color:#8e3b22}
.pos-receipt{max-width:810px;margin:0 auto}.pos-receipt-narrow{max-width:320px}.pos-receipt-head{display:flex;align-items:center;flex-direction:column;gap:3px;padding-bottom:15px;border-bottom:1px solid #b9c8c5}.pos-receipt-head small{font-size:11px;color:#5e7371}.pos-receipt-table{min-width:0}.pos-receipt-table th,.pos-receipt-table td{padding:8px 6px;font-size:12px}.pos-receipt-thanks{text-align:center;margin-top:20px}.pos-collect{max-width:810px;margin:22px auto}
@media(max-width:1000px){.pos-layout{grid-template-columns:1fr}.pos-cart-panel{position:static;max-height:none}.pos-cart-line{grid-template-columns:minmax(120px,1fr) 65px 88px 85px auto}}
@media(max-width:580px){.pos-cart-line{grid-template-columns:1fr 65px 75px auto}.pos-cart-line .pos-cart-description{grid-column:1/-1}.pos-payment-row{grid-template-columns:1fr 1fr}.pos-payment-row .pos-payment-ref{grid-column:1/2}}
@media print{
 .pos-receipt{box-shadow:none!important;border:0!important;padding:0!important;margin:0!important;max-width:none!important}.pos-receipt-table{width:100%;min-width:0!important}
 .pos-receipt-narrow{width:76mm!important;max-width:76mm!important;margin:0!important;font-size:10px!important}.pos-receipt-narrow .pos-receipt-table th,.pos-receipt-narrow .pos-receipt-table td{font-size:9px!important;padding:3px 1px!important}
 .pos-receipt-narrow .pos-money-row{font-size:10px!important;padding:3px 0!important}.pos-receipt-narrow .pos-receipt-head{font-size:10px!important}
}

/* v0.13 unified billing: responsive, separated payment allocation */
.payment-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0 22px}
.payment-mode-grid .field{min-width:0}
.payment-buttons .btn{flex:0 0 auto}
.stock-expired{color:#b42318}
@media(max-width:700px){.payment-mode-grid{grid-template-columns:1fr}}
@media print{.payment-buttons{display:none!important}}

/* v0.14: compact, editable universal stock and report navigation */
.stock-entry-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.stock-find-wrap { max-width: 540px; position: relative; margin-bottom: 18px; }
.stock-live-results { position: absolute; z-index: 35; width: 100%; max-height: 320px;
  overflow-y: auto; background: white; border: 1px solid #c8d8d4; box-shadow: 0 12px 24px #122a241c;
  border-radius: 10px; }
.stock-live-results[hidden] {display: none;}
.stock-suggest-option { display: flex; flex-direction: column; gap: 3px; padding: 9px 12px;
  color: #153a31; text-decoration: none; border-bottom: 1px solid #e6f0ec; }
.stock-suggest-option:hover, .stock-suggest-option.is-active { background: #ebf6f2; }
.stock-suggest-option small { color: #62766e; }
.stock-editor-table { min-width: 1030px; }
.stock-editor-table .control { width: 100%; min-width: 86px; padding: 8px; font-size: 13px; }
.stock-editor-table td:nth-child(1) {min-width: 44px;text-align:center;}
.stock-editor-table td:nth-child(2) {min-width: 150px;}
.stock-editor-table td:nth-child(3) {min-width: 200px;}
.stock-editor-table td:nth-child(4) {min-width: 95px;}
.stock-editor-table td:nth-child(7) {min-width: 155px;}
.stock-editor-table td:last-child {min-width:150px;}
.stock-row-actions {display:flex;gap:6px;align-items:center;flex-wrap:nowrap;}
/* Add/Edit stock: errors are visible even when the full catalogue is long. */
.stock-form-error-summary {background:#fff5f2;border:1px solid #dc8373;border-left:4px solid #b9372e;color:#822a24;border-radius:9px;padding:12px 16px;margin:0 0 18px;scroll-margin-top:90px}
.stock-form-error-summary strong {display:block;margin-bottom:7px}
.stock-form-error-summary ul {margin:5px 0 0;padding-left:22px}
.stock-form-error-summary a {color:#802c24;text-decoration:underline;font-weight:600}
.stock-field-invalid .control,.stock-field-invalid input,.stock-field-invalid select {border-color:#ca5749;box-shadow:0 0 0 1px #ca574940}
.stock-field-error {display:block;color:#a13229;font-weight:600;line-height:1.5;margin-top:4px}

.stock-bulk-toolbar {display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 15px;}
.stock-bulk-toolbar form {margin:0;}
.stock-bulk-toolbar .btn:disabled {opacity:.5;cursor:not-allowed;}
.stock-page-controls {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0;}
.stock-page-size {display:flex;align-items:center;gap:8px;}
.stock-page-size label {font-size:13px;font-weight:600;white-space:nowrap;}
.stock-page-size .control {min-width:72px;width:auto;padding:6px;}
.stock-page-buttons {display:flex;gap:7px;align-items:center;flex-wrap:wrap;}
.stock-editor-table input.stock-select-row,.stock-editor-table #stock-select-all {width:16px;height:16px;cursor:pointer;}
#stock-filter-error:not(:empty) {padding:9px;border-left:3px solid #c96c46;background:#fff6f3;white-space:pre-line;scroll-margin-top:90px;}
.stock-editor-table tr:has(.stock-select-row:checked){background:#f0f9f6;}
.stock-editor-table tr.selected-row {background: #edf8f4;}
.stock-editor-table td {vertical-align: top;}
.stock-warning {display: block;color: #ae5932; margin-top: 4px;}
.insight-date-form {display:flex;gap:12px;align-items:end;flex-wrap:wrap;}
.insight-date-form .field {flex:1 1 130px;max-width:220px;}
.insight-stats {grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));}
@media(max-width:600px){.insight-date-form .btn {flex:1 1 auto;}}

/* v0.15 — queue calendar, recent patients, paste sheet and editable print banks */
.queue-controls{margin-bottom:16px}.queue-control-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:10px}
.queue-period-nav,.queue-calendar-nav{display:flex;align-items:center;gap:12px}.queue-period-nav strong{font-size:14px}.queue-date-form{display:flex;align-items:end;flex-wrap:wrap;gap:12px}
.queue-date-form .field{min-width:155px;max-width:220px}.queue-date-form .field[hidden]{display:none!important}
.queue-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(230px,0.7fr);gap:18px;margin-bottom:20px;align-items:start}
.queue-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calendar-weekday{text-align:center;color:#6c8781;font-size:11px;font-weight:800;padding:7px 3px}
.calendar-day{min-height:72px;border:1px solid #dfebe7;border-radius:8px;padding:7px 5px;display:flex;flex-direction:column;align-items:start;gap:3px;text-decoration:none;color:#28584f;background:#fff}
.calendar-day:hover{background:#eaf6f2}.calendar-day.calendar-selected{border-color:#009488;background:#ecf9f5}.calendar-day.calendar-today .calendar-day-number{background:#087b75;color:white;border-radius:50%;padding:2px 6px}
.calendar-day.calendar-outside{opacity:.38}.calendar-day-number{font-size:12px;font-weight:800}.calendar-day small{font-size:9px;line-height:1.1;color:#506a64}
.calendar-day .cal-done{color:#177446}.calendar-day .cal-cancel{color:#b13b31}.calendar-day .cal-future{font-weight:700;color:#147a73}
.recent-list{max-height:415px;overflow:auto;display:flex;flex-direction:column;gap:5px}.recent-patient-row{border-bottom:1px solid #ecf2ef;padding:9px 4px;display:flex;flex-direction:column;text-decoration:none;color:#234c45;gap:4px}.recent-patient-row:hover{background:#f0f8f4}.recent-patient-row b{font-size:12px}.recent-patient-row small{color:#78918a;font-size:10px}
.stock-paste-wrap{margin:15px 0;max-height:430px;overflow:auto}.stock-paste-sheet{min-width:980px}.stock-paste-sheet td{padding:2px 3px!important}.stock-paste-sheet th{font-size:11px!important}.stock-paste-sheet input.control{min-width:112px;width:100%;font-size:12px;padding:6px}.stock-paste-sheet td:first-child{min-width:35px;text-align:center;color:#78918a}.stock-paste-sheet th:nth-child(2),.stock-paste-sheet th:nth-child(3){min-width:180px}
.import-preview{border-top:1px solid #dce9e4;margin-top:22px;padding-top:18px}.import-preview form{margin:14px 0}
.settings-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.settings-layout>.panel{min-width:0}
.settings-layout .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:13px}.settings-layout .form-grid>.btn{justify-self:start;align-self:end}
.settings-password{margin-top:20px;padding-top:14px;border-top:1px solid #e3ede9}.settings-password summary{font-weight:700;cursor:pointer;color:#246258}.settings-password input{display:block;max-width:440px;width:100%;padding:8px;margin-top:6px}
.bank-list{margin-top:14px;display:flex;flex-wrap:wrap;gap:9px}.bank-item{border:1px solid #daeae5;border-radius:7px;padding:9px 12px}.bank-item small{display:block;margin-top:3px}
.preset-select{margin-top:18px;display:flex;align-items:end;gap:10px;flex-wrap:wrap}.preset-select label{width:100%}.preset-select select{max-width:430px}
.print-branding-logo{width:48px;height:48px;object-fit:contain;vertical-align:middle;margin-right:9px}.print-logo-inline{max-width:28mm;max-height:19mm;object-fit:contain}
@media(max-width:900px){.queue-dashboard-grid,.settings-layout{grid-template-columns:1fr}}@media(max-width:580px){.calendar-day{min-height:61px;padding:4px 2px}.calendar-day small{font-size:8px}.queue-calendar-grid{gap:2px}.queue-period-nav{gap:6px}.queue-period-nav strong{font-size:12px}}

.queue-pagination{display:flex;gap:12px;justify-content:center;align-items:center;padding:14px;}

/* v0.17 - streamlined payment, with a prominent accurate remaining amount */
.payment-total-banner{padding:18px 20px;margin-bottom:20px;background:#f0f8f6;border:1px solid #cce2da;border-radius:12px;display:flex;flex-direction:column;gap:5px;}
.payment-total-banner span{font-size:13px;color:#466d65;font-weight:700;}
.payment-total-banner strong{font-size:32px;line-height:1.25;color:#165c50;}
.payment-total-banner small{color:#607b76;}
.payment-quick-buttons{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 22px;}
.payment-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;}
.payment-remaining{font-size:17px;padding:12px 16px;border-radius:10px;background:#e6f4ec;color:#1b694c;margin:6px 0 10px;}
.payment-remaining.payment-overpaid{background:#fff0ee;color:#a22b2b;}
@media(max-width:700px){.payment-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.payment-total-banner strong{font-size:25px;}}
@media(max-width:420px){.payment-mode-grid{grid-template-columns:1fr;}}

/* v0.18: structured prescription rows. */
.rx-table-section{min-width:0;width:100%;margin-top:1rem}
.rx-grid-scroll{width:100%;overflow-x:auto;overflow-y:visible;margin:.6rem 0}
.rx-grid-table{table-layout:fixed;width:100%;border-collapse:separate;border-spacing:0 5px;min-width:620px}
.rx-grid-table th{text-align:left;font-size:.8rem;color:var(--muted,#64748b);padding:.35rem .3rem}
.rx-grid-table th:first-child{width:38%}
.rx-grid-table th:nth-child(2){width:20%}.rx-grid-table th:nth-child(3){width:19%}.rx-grid-table th:nth-child(4){width:17%}.rx-grid-table th:last-child{width:6%}
.rx-grid-table td{padding:.15rem .2rem;vertical-align:top;position:relative}
.rx-grid-input{width:100%;min-width:0;box-sizing:border-box}
.rx-grid-input.rx-in-stock{background:#edf9ef;color:#146b37;border-color:#6aab7c}
.rx-grid-input.rx-not-available{background:#fff0f0;color:#ab2929;border-color:#d6aaaa}
.rx-row-remove{padding:.45rem .6rem}
.rx-table-suggestions{position:absolute;z-index:100;background:white;border:1px solid #a8b6c2;border-radius:8px;box-shadow:0 6px 16px #12283b20;top:calc(100% - 3px);left:0;min-width:260px;max-width:min(440px,95vw);max-height:240px;overflow:auto}
.rx-table-suggestions[hidden]{display:none}
.rx-table-suggestion{padding:9px 11px;width:100%;display:block;border:0;background:white;text-align:left;cursor:pointer;font-size:.88rem}
.rx-table-suggestion:hover,.rx-table-suggestion.active{background:#edf3f7}
.rx-table-suggestion.available{color:#13733a}.rx-table-suggestion.unavailable{color:#ad2929}
.rx-help{display:block;max-width:850px;margin:.35rem 0 .7rem}

.rx-table-suggestions{position:fixed;z-index:9999;box-sizing:border-box}
/* v0.19: mobile-first bill builder; no horizontal overflow except long data tables. */
.bill-create-people,.bill-discount-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.bill-create-item-grid{display:grid;grid-template-columns:minmax(190px,3fr) minmax(100px,1fr) minmax(80px,.7fr) minmax(115px,1.2fr) auto;gap:10px;align-items:end}
.bill-create-item-grid .field{min-width:0;position:relative}
.bill-create-item-grid .pos-catalogue{position:absolute;z-index:35;top:100%;left:0;max-height:245px;overflow-y:auto;min-width:min(390px,90vw);max-width:95vw;background:#fff;border-radius:7px;box-shadow:0 9px 22px #24403633}
.bill-create-item-grid .pos-patient-option{display:block;width:100%;text-align:left;padding:9px 12px;background:#fff;border:0;border-bottom:1px solid #e5ece9;cursor:pointer}
.bill-create-item-grid .pos-patient-option.active,.bill-create-item-grid .pos-patient-option:hover{background:#eaf6f0}.bill-create-item-grid .pos-patient-option.unavailable{color:#bb2c29;cursor:not-allowed}
.bill-final-actions{display:grid;gap:10px;margin-top:17px}.credit-choice-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:7px 0;border-bottom:1px solid #edf2ef}.credit-choice-row label{font-size:13px;flex:1}.credit-choice-row input{width:135px;max-width:40%}
.bill-item-single-row{display:flex;flex-wrap:nowrap;align-items:center;gap:5px}.bill-item-single-row input[name="description"]{flex:3;min-width:100px}.bill-item-single-row input[name="quantity"]{flex:1;min-width:65px}.bill-item-single-row input[name="unit_price"]{flex:1;min-width:85px}
.permission-people{display:grid;gap:8px}.permission-user-row{display:flex;gap:15px;align-items:center;flex-wrap:wrap;border-bottom:1px solid #e8efeb;padding:9px 4px}.permission-user-row>b{min-width:120px}.permission-user-row label{display:flex;gap:5px;align-items:center;font-size:13px}
@media(max-width:880px){.bill-create-item-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.bill-create-item-grid .pos-add-search{grid-column:1/-1}.bill-create-item-grid>.btn{grid-column:1/-1;justify-self:stretch}}
@media(max-width:650px){.bill-create-people,.bill-discount-row{grid-template-columns:1fr}.bill-create-item-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bill-create-item-grid>.btn{grid-column:1/-1}.bill-create-item-grid .pos-add-search{grid-column:1/-1}.shell,.panel.pad{max-width:100%;box-sizing:border-box}.heading-row,.heading-actions{flex-wrap:wrap}.heading-actions a,.heading-actions button{max-width:100%;white-space:normal}.topbar .top-inner{flex-wrap:wrap}.topbar nav{display:flex;overflow-x:auto;width:100%;gap:7px;scrollbar-width:thin}.topbar nav a{white-space:nowrap}.billing-layout{grid-template-columns:1fr!important}.bill-item-single-row{min-width:440px}}

/* Patient registration: keep prefix immediately beside the patient's name. */
.patient-name-grid{display:grid;grid-template-columns:minmax(115px,150px) minmax(0,1fr);gap:1rem;align-items:end}
.patient-name-grid .field{min-width:0}
.patient-guardian-section{padding:1rem 0;margin-top:1rem;border-top:1px solid var(--border,#dde3e8)}
.patient-guardian-section h2{display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
@media(max-width:480px){.patient-name-grid{grid-template-columns:110px minmax(0,1fr);gap:.5rem}}

/* v0.24: distinct line totals in editable manual billing rows. */
.manual-bill-lines td{vertical-align:middle}
.manual-bill-lines td:nth-child(2){min-width:85px}
.manual-bill-lines td:nth-child(3){min-width:105px}
.manual-bill-lines td:nth-child(4){min-width:115px;white-space:nowrap}
.manual-bill-lines input.control{width:100%;min-width:75px;box-sizing:border-box}
.manual-line-total-preview{display:block;border:1px solid #dbe6e2;background:#f4f8f6;padding:10px 12px;border-radius:8px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:110px}
.manual-line-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.manual-line-actions form{margin:0}
@media(max-width:680px){.manual-bill-lines{min-width:650px}.manual-line-total-preview{padding:8px;min-width:94px}}

/* Change 7: printable post-payment confirmation; reuse official bill documents. */
.bill-confirmation-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0 20px}
.bill-confirmation-preview{max-width:960px;margin:0 auto 30px}
.bill-confirmation-preview .billing-print-document,
.bill-confirmation-preview .pos-receipt{box-sizing:border-box}
@media print{
 .bill-confirmation-actions{display:none!important}
 .bill-confirmation-preview{max-width:none!important;margin:0!important}
 .bill-confirmation-preview .billing-print-document,
 .bill-confirmation-preview .pos-receipt{box-shadow:none!important;border:0!important;margin:0!important;max-width:none!important}
}


/* OsoHealth — private clinical photography and print placement. */
.clinical-image-strip{margin:8px 0 20px;padding:12px;background:#f8fbfa;border:1px solid #dbe7e5;border-radius:10px}
.clinical-photo-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.clinical-photo-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:10px;margin-top:10px}
.clinical-photo-cards:empty{display:none}
.clinical-photo-card{min-width:0;background:#fff;border:1px solid #dce6e4;border-radius:9px;overflow:hidden}
.clinical-photo-card>img{width:100%;height:126px;object-fit:cover;display:block;background:#f5f7f7}
.clinical-photo-card>div{padding:10px;display:grid;gap:5px;overflow-wrap:anywhere}
.clinical-photo-card b{font-size:12px}
.clinical-photo-size{display:block;font-size:11px}
.clinical-photo-actions{display:flex;gap:6px;flex-wrap:wrap}
.clinical-photo-dialog{width:min(780px,calc(100vw - 28px));max-height:90vh;overflow-y:auto;padding:20px;border:1px solid #d6e4e1;border-radius:14px;box-shadow:0 20px 80px #183c3c3b;color:#173d3d}
.clinical-photo-dialog::backdrop{background:#1026249e}
.clinical-photo-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.clinical-photo-canvas-wrap{background:#102c2a;border-radius:9px;padding:7px;display:flex;justify-content:center;overflow:hidden;margin:10px 0}
#clinical-photo-canvas{display:block;max-width:100%;height:auto;touch-action:none;cursor:grab;user-select:none}
#clinical-photo-canvas:active{cursor:grabbing}
.clinical-photo-dialog .form-grid{margin:10px 0}
.clinical-photo-dialog input[type="range"]{width:100%}
.clinical-record-images{display:grid;gap:10px;margin:10px 0 13px}
.clinical-record-image{max-width:100%;margin:0;break-inside:avoid;page-break-inside:avoid;overflow-wrap:anywhere}
.clinical-record-image[data-align="left"]{margin-left:0;margin-right:auto}
.clinical-record-image[data-align="center"]{margin-left:auto;margin-right:auto}
.clinical-record-image[data-align="right"]{margin-left:auto;margin-right:0}
.clinical-record-image img{display:block;width:100%;height:auto;max-height:440px;object-fit:contain;border-radius:5px}
.clinical-record-image figcaption{font-size:11px;color:#334d4a;line-height:1.4;margin:5px 0 0}
@media(max-width:680px){.clinical-photo-dialog{padding:12px}.clinical-photo-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media print{
 .clinical-record-images{gap:3mm;margin:2mm 0 3mm}
 .clinical-record-image img{max-height:125mm;border-radius:0}
 .clinical-record-image figcaption{font-size:9pt;color:#111}
 .clinical-photo-dialog,.clinical-image-strip{display:none!important}
}

/* Compact reference for management medication abbreviations. */
.management-abbreviations{margin:10px 0 12px;border:1px solid #d9e7e4;border-radius:8px;padding:8px 12px}
.management-abbreviations summary{cursor:pointer;font-size:13px;font-weight:600}
.management-abbreviation-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:12px}
.management-abbreviation-groups h4{margin:0 0 6px;font-size:13px}
.management-abbreviation-groups table{font-size:11px;width:100%;border-collapse:collapse}
.management-abbreviation-groups th,.management-abbreviation-groups td{padding:5px;border-bottom:1px solid #edf0ef;text-align:left;vertical-align:top}
.management-abbreviation-groups th{font-weight:600;min-width:65px;overflow-wrap:anywhere}
.management-abbreviation-groups small{display:block;margin-top:3px}

/* Focus the clinician on the source prescription after choosing Review/Change. */
textarea.allergy-review-focus{outline:3px solid #b45309;outline-offset:2px;background-color:#fffbeb}
