/* Glass interface layer, loaded after style.css and workspace.css.
   Follows Apple's Liquid Glass guidance: translucent material is reserved for the
   navigation/control layer that floats above content; clinical content stays on
   opaque surfaces for legibility. Concentric radii, capsule controls, 44px targets,
   and opaque fallbacks for Reduce Transparency / Increase Contrast. */
:root{
  --radius-shell:24px;--radius-card:20px;--radius-control:12px;--radius-capsule:999px;
  --target:44px;
  --glass-bg:rgba(255,255,255,.62);--glass-border:rgba(255,255,255,.75);--glass-edge:rgba(16,24,40,.08);
  --glass-highlight:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(16,24,40,.04);
  --glass-shadow:0 10px 32px rgba(16,24,40,.08),0 1px 3px rgba(16,24,40,.06);
  --glass-blur:saturate(180%) blur(24px);
  --canvas:radial-gradient(1200px 700px at 8% -10%,#dfeafc 0%,transparent 60%),radial-gradient(900px 600px at 105% 0%,#e6f4ee 0%,transparent 55%),#f2f4f8;
  --card-shadow:0 1px 2px rgba(16,24,40,.04),0 6px 20px rgba(16,24,40,.05);
  --focus:0 0 0 3px color-mix(in srgb,var(--accent) 45%,transparent);
  --ease:cubic-bezier(.2,.8,.2,1);
}
body.dark{
  --glass-bg:rgba(30,34,42,.6);--glass-border:rgba(255,255,255,.1);--glass-edge:rgba(0,0,0,.4);
  --glass-highlight:inset 0 1px 0 rgba(255,255,255,.08);
  --glass-shadow:0 12px 36px rgba(0,0,0,.4);
  --canvas:radial-gradient(1200px 700px at 8% -10%,#1b2a44 0%,transparent 60%),radial-gradient(900px 600px at 105% 0%,#16302a 0%,transparent 55%),#111419;
  --card-shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
}
html{background:#f2f4f8}html:has(body.dark){background:#111419}
body{min-height:100vh;background:var(--canvas);background-attachment:fixed;background-repeat:no-repeat;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI Variable Text","Segoe UI",system-ui,sans-serif;font-size:14px;line-height:1.5}
h1{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;font-size:32px;font-weight:700;letter-spacing:-.6px}
h2{font-size:19px;font-weight:650;letter-spacing:-.3px}

/* Glass material: navigation layer only */
.glass,.sidebar,.toolbar,.section-tabs,dialog{
  background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),var(--glass-shadow)
}

/* Floating sidebar inset from the window edge */
.app{grid-template-columns:260px minmax(0,1fr);background:transparent}
.sidebar{margin:12px 0 12px 12px;height:calc(100vh - 24px);top:12px;border-radius:var(--radius-shell);padding:22px 14px;overflow:auto}
.brand{padding:0 8px}.mark{border-radius:12px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px color-mix(in srgb,var(--accent) 30%,transparent)}
.nav-label{font-size:11px;letter-spacing:.6px;color:var(--muted);text-transform:uppercase}
.nav{min-height:var(--target);border-radius:var(--radius-control);padding:10px 12px;font-size:14px;color:var(--text);gap:12px}
.nav svg{width:20px;height:20px;flex-shrink:0;color:var(--muted)}
@media (hover:hover){.nav:hover{background:color-mix(in srgb,var(--surface) 70%,transparent)}}
.nav.active,.dark .nav.active{background:var(--surface);color:var(--accent);box-shadow:0 1px 2px rgba(16,24,40,.06),0 4px 12px rgba(16,24,40,.06)}
.nav.active svg{color:var(--accent)}
.avatar{text-transform:uppercase}
.review-note{border-bottom:0;border-radius:var(--radius-control);background:color-mix(in srgb,var(--green-soft) 70%,transparent);margin:0 4px 12px}

/* Session: compact once signed in */
body:not(.signed-in) label[for=organization],body:not(.signed-in) #organization{display:none}
.identity-panel select,.identity-panel input{min-height:var(--target);border-radius:var(--radius-control)}
.identity-panel button{min-height:var(--target);border-radius:var(--radius-capsule)}
.session-switch{display:none;width:100%;min-height:var(--target);height:var(--target);align-self:end;margin-top:4px;border-radius:var(--radius-capsule);background:transparent;color:var(--accent);border:1px solid var(--line);font-size:13px;font-weight:600}
body.signed-in .session-switch{display:block}
.session-switch{margin:0 0 4px}

/* Toolbar: floating glass bar with scroll-edge */
main{min-width:0}
main::before{content:"";display:block;position:sticky;top:0;height:12px;z-index:21;background:var(--canvas);background-attachment:fixed}
.toolbar{position:sticky;top:12px;z-index:20;height:56px;margin:0 12px;border-radius:var(--radius-capsule);padding:0 10px 0 22px}
.toolbar-actions{gap:6px}
.icon-button{width:var(--target);height:var(--target)}
@media (hover:hover){.icon-button:hover{background:color-mix(in srgb,var(--surface) 70%,transparent)}}
.demo-chip{border-radius:var(--radius-capsule);padding:6px 12px;font-size:12px;background:var(--amber-soft);color:var(--amber);border-color:transparent}
.content{padding:28px 36px 24px}
.eyebrow{font-size:12px;letter-spacing:.4px}
.permission-line{font-size:13px}.permission-line::first-letter{text-transform:uppercase}
#status{border-radius:var(--radius-control);border:1px solid color-mix(in srgb,var(--accent) 18%,transparent);font-size:14px}

/* Content surfaces stay opaque; concentric radii */
.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--card-shadow)}
.panel .panel,.card .panel{border-radius:calc(var(--radius-card) - 8px);box-shadow:none}
.directory li{min-height:56px}

/* Controls: 44px targets, capsule buttons */
button.primary,button.secondary,.panel button,.directory button{min-height:var(--target);border-radius:var(--radius-capsule);padding:10px 18px;font-size:14px;font-weight:600}
button.primary,.panel button.primary{background:var(--accent);color:#fff;border:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 4px 14px color-mix(in srgb,var(--accent) 28%,transparent)}
@media (hover:hover){button.primary:hover{filter:brightness(1.06)}}
button.secondary{background:var(--surface);border:1px solid var(--line);color:var(--text)}
button{transition:background 180ms var(--ease),transform 180ms var(--ease),box-shadow 180ms var(--ease),filter 180ms var(--ease)}
button:active:not(:disabled){transform:scale(.97)}
input:not([type=checkbox]):not([type=radio]),select,textarea{border-radius:var(--radius-control)}
.fields input,.fields select,.panel>label select,dialog input,dialog select,.search input{min-height:var(--target)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=tab]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--focus)}
input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:20px;height:20px}

/* Segmented controls (existing and generated section tabs) */
.segments{border-radius:var(--radius-capsule);padding:3px;background:color-mix(in srgb,var(--line) 70%,transparent)}
.segments button{border-radius:var(--radius-capsule);min-height:36px;padding:7px 14px;font-size:13px}
.section-tabs{position:relative;display:flex;gap:2px;width:max-content;max-width:100%;overflow-x:auto;margin:0 0 20px;padding:4px;border-radius:var(--radius-capsule);scrollbar-width:none}
.section-tabs::-webkit-scrollbar{display:none}
.section-tabs [role=tab]{min-height:36px;padding:8px 18px;border-radius:var(--radius-capsule);background:transparent;color:var(--muted);font-size:14px;font-weight:600;white-space:nowrap}
@media (hover:hover){.section-tabs [role=tab]:hover{color:var(--text)}}
.section-tabs [role=tab][aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(16,24,40,.08),0 3px 10px rgba(16,24,40,.08)}
.section-tabbed{display:none!important}

/* My Day: patient queue first, then booking, then follow-up worklists */
#schedule-page:not([hidden]){display:flex;flex-direction:column}
#schedule-page>.schedule-workspace{order:1}
#schedule-page>.booking-panel{order:2}
#schedule-page>#document-followup-panel,#schedule-page>#followup-panel{order:3}

/* Sheets */
dialog{border-radius:28px;background:color-mix(in srgb,var(--surface) 96%,transparent)}
dialog::backdrop{background:rgba(16,24,40,.28);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}

/* Tables */
table{font-variant-numeric:tabular-nums}
th{font-size:12px;letter-spacing:.2px}

/* Sign-in page: a floating material card over the canvas, shown until a session exists */
.sign-in-screen{display:none}
body:not(.signed-in) .app{visibility:hidden}
body.auth-ready:not(.signed-in) .app{display:none}
body.auth-ready:not(.signed-in) .sign-in-screen{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:32px 16px}
.sign-in-card{width:min(420px,100%);padding:36px 36px 28px;border-radius:32px;background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),0 30px 80px rgba(16,24,40,.12),0 2px 6px rgba(16,24,40,.06)}
.sign-in-brand{display:flex;align-items:center;gap:12px;margin-bottom:32px}
.sign-in-brand strong{display:block;font-size:16px;font-weight:650}.sign-in-brand small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.sign-in-brand .mark{width:40px;height:40px;font-size:28px}
.sign-in-card h1{font-size:28px;letter-spacing:-.5px;margin:0 0 6px}
.sign-in-card h1:focus{outline:none}
.sign-in-lede{margin:0 0 24px;font-size:14px}
.sign-in-card form{display:flex;flex-direction:column}
.sign-in-card label{font-size:13px;font-weight:600;color:var(--text);margin:0 0 8px}
.sign-in-card input,.sign-in-card select{width:100%;min-height:48px;margin:0 0 18px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;font-size:15px;transition:border-color 160ms var(--ease),box-shadow 160ms var(--ease)}
.sign-in-card input:focus-visible,.sign-in-card select:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus)}
.sign-in-card input[aria-invalid=true]{border-color:#c4321f}
.password-field{position:relative}
.password-field input{padding-right:76px}
.password-field .reveal{position:absolute;right:6px;top:6px;height:36px;min-width:60px;padding:0 12px;border-radius:var(--radius-capsule);background:transparent;color:var(--accent);font-size:13px;font-weight:600}
@media (hover:hover){.password-field .reveal:hover{background:var(--accent-soft)}}
.caps-hint{margin:-10px 0 14px;font-size:12px;color:var(--amber)}
.sign-in-submit{width:100%;min-height:50px!important;margin-top:6px;font-size:16px!important}
.sign-in-submit[aria-busy=true]{opacity:.8;cursor:progress}
.temporary-password{font:600 22px/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em;user-select:all;margin:8px 0;padding:10px 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line, color-mix(in srgb,var(--text) 15%,transparent))}
.sign-in-message{margin:0 0 18px;padding:12px 14px;border-radius:14px;font-size:14px;line-height:1.45;color:var(--text);background:color-mix(in srgb,#c4321f 10%,var(--surface));border:1px solid color-mix(in srgb,#c4321f 30%,transparent)}
#reset-message{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 25%,transparent)}
.link-button{display:flex;align-items:center;justify-content:center;width:max-content;text-decoration:none;margin:16px auto 0;min-height:var(--target);padding:0 12px;background:transparent;color:var(--accent);font-size:14px;font-weight:600;border-radius:var(--radius-capsule)}
@media (hover:hover){.link-button:hover{background:var(--accent-soft)}}
.sign-in-foot{display:flex;align-items:center;justify-content:center;gap:6px;margin:24px 0 0;padding-top:18px;border-top:1px solid var(--line);font-size:12px;text-align:center}
.demo-dot{width:7px;height:7px;border-radius:50%;background:var(--amber);flex-shrink:0}
@media (max-width:480px){.sign-in-card{padding:28px 22px 22px;border-radius:28px}.sign-in-card h1{font-size:26px}}
@media (prefers-reduced-transparency:reduce){.sign-in-card{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}}

/* Patient portal */
.portal main.content{max-width:560px;margin:0 auto;padding:56px 20px 40px}
.portal h1{margin-bottom:6px}.portal main>p{margin-bottom:24px}
.portal .panel{padding:24px}.portal .panel h2{margin-bottom:8px}
.portal .panel label,.portal #patient-workspace label{display:block;font-size:13px;font-weight:600;margin:16px 0}
.portal input,.portal select{display:block;width:100%;margin-top:6px;min-height:var(--target);padding:10px 14px;border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:var(--radius-control);font:inherit}
.portal form button.primary{width:100%;margin-top:8px}
.portal details summary{cursor:pointer;min-height:var(--target);display:flex;align-items:center;font-weight:600}
.portal #patient-status:not(:empty){margin:0 0 16px;padding:12px 14px;border-radius:var(--radius-control);background:var(--accent-soft)}

/* Compact width: bottom tab bar, compact header */
@media (max-width:760px){
  .app{display:block}
  /* backdrop-filter would make the sidebar the containing block of the fixed tab bar */
  .sidebar{position:relative;top:0;height:auto;margin:10px;border-radius:var(--radius-card);padding:14px;background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none}
  .sidebar nav[aria-label="Workspace"]{position:fixed;z-index:40;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));display:flex;justify-content:space-around;gap:2px;margin:0;padding:6px;overflow-x:auto;border-radius:var(--radius-shell);
    background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);box-shadow:var(--glass-highlight),var(--glass-shadow);scrollbar-width:none}
  .sidebar nav[aria-label="Workspace"] .nav{flex:1 0 64px;flex-direction:column;gap:2px;margin:0;padding:6px 4px;min-height:52px;font-size:11px;font-weight:600;justify-content:center;text-align:center;white-space:nowrap}
  .sidebar nav[aria-label="Workspace"] .nav.active{background:color-mix(in srgb,var(--surface) 85%,transparent)}
  .sidebar nav[aria-label="Workspace"] .nav svg{width:22px;height:22px}
  .identity-panel{padding:0;display:flex;flex-direction:column;gap:8px}
  .identity-panel label{margin:4px 0 0}
  .identity-panel #organization{margin-bottom:0}
  @media (hover:none){.nav:hover{background:transparent}}
  main{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  .toolbar{top:8px;margin:0 10px;height:52px}
  .content{padding:20px 14px}
  h1{font-size:28px}
  .page-heading{align-items:stretch}
  .section-tabs{width:100%}
  .section-tabs [role=tab]{flex:1 0 auto;padding:8px 12px}
  .fields{grid-template-columns:1fr}
  dialog{width:100vw;max-width:100vw;margin:auto 0 0;border-radius:28px 28px 0 0}
}

/* Accessibility preferences */
@media (prefers-reduced-transparency:reduce){
  .glass,.sidebar,.toolbar,.section-tabs,dialog,.sidebar nav[aria-label="Workspace"]{background:var(--surface)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
}
body.reduce-transparency .sidebar,body.reduce-transparency .toolbar,body.reduce-transparency .section-tabs,body.reduce-transparency dialog,body.reduce-transparency .sidebar nav[aria-label="Workspace"]{background:var(--surface)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
@media (prefers-contrast:more){
  :root{--line:#8a93a3;--muted:#454c57}
  body.dark{--line:#7d8796;--muted:#d0d6df}
  .sidebar,.toolbar,.section-tabs,dialog,.card,.panel{border-color:var(--text);background:var(--surface)}
  .nav.active,.section-tabs [aria-selected=true]{outline:2px solid var(--accent)}
}
@media (forced-colors:active){
  .sidebar,.toolbar,.section-tabs,dialog,.card,.panel{border:1px solid CanvasText}
  .section-tabs [aria-selected=true],.nav.active{outline:2px solid Highlight}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  button:active:not(:disabled){transform:none}
}
@media print{
  body{background:#fff}
  .sidebar,.toolbar,.section-tabs{display:none!important}
  .card,.panel{box-shadow:none}
}

/* Consultation sections: more than five segments, so a single-line scrollable strip */
.consult-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;max-width:100%;justify-content:flex-start}
.consult-tabs::-webkit-scrollbar{display:none}
.consult-tabs button{white-space:nowrap;flex:0 0 auto}

/* Admin grids (dropdown lists, input fields) scroll sideways instead of widening the page. */
.panel form > table.data-table{display:block;max-width:100%;overflow-x:auto;white-space:nowrap}
.panel form > table.data-table input[type=text]{min-width:9rem}

/* Simple administrator screens: one list, one editor, plain words. */
.admin-panel .admin-controls{display:flex;flex-wrap:wrap;gap:16px}
.admin-panel .admin-controls .admin-field{flex:1 1 220px}
.admin-field{display:block;font-size:12px;margin:14px 0}
.admin-field small{display:block;margin:4px 0 6px}
.admin-field input:not([type=checkbox]),.admin-field select{display:block;width:100%;margin-top:8px}
.admin-list{display:flex;flex-direction:column;gap:8px;margin:14px 0}
.admin-row{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:10px 12px}
.admin-row-hidden{opacity:.65}
.admin-row-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.admin-row-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.admin-row-tags{display:flex;gap:6px;flex-wrap:wrap}
.admin-row-actions{display:flex;gap:6px}
.admin-row-actions button{font-size:11px;padding:7px 10px}
.pill{display:inline-block;font-size:11px;line-height:1;padding:5px 8px;border-radius:999px;background:var(--line);color:var(--muted)}
.pill-warn{background:rgba(214,120,0,.14);color:#9a5300}
.pill-info{background:rgba(0,113,227,.12);color:var(--accent,#0071e3)}
.pill-muted{background:var(--line);color:var(--muted)}
.admin-editor{margin-top:12px;padding:12px 14px;border-top:1px solid var(--line)}
.admin-flags{display:flex;gap:18px;flex-wrap:wrap;margin:10px 0 14px}
.toggle{display:flex;flex-direction:column;gap:4px;font-size:13px}
.toggle input{margin-right:8px}
.toggle-locked{opacity:.7}
.import-steps{margin-top:18px}
.import-steps summary{cursor:pointer;font-weight:600}
.import-steps ol{padding-left:20px;line-height:1.8}
.import-steps li{margin:10px 0}
.import-steps button{margin:4px 6px 4px 0}
.admin-adder{display:flex;gap:8px;align-items:center;margin:12px 0}
.admin-adder input{flex:1 1 240px}

/* Patient page: the directory uses the full width; registration and details open in a popup. */
.patient-grid{grid-template-columns:minmax(0,1fr)}
.patient-sheet{width:min(920px,94vw);max-height:92vh;overflow:auto;padding:0}
.patient-sheet .registration{padding:0 0 24px}
.patient-sheet .sheet-heading{position:sticky;top:0;z-index:2;background:var(--surface);padding:22px 25px 14px;margin:0;border-bottom:1px solid var(--line)}
.patient-sheet .sheet-heading .muted{margin:6px 0 0}
.patient-sheet .sheet-actions{display:flex;align-items:center;gap:8px}
.patient-sheet .sheet-status{margin:14px 25px 0;font-size:13px;padding:10px 14px;border-radius:11px;background:var(--accent-soft)}
.patient-sheet .sheet-status:empty{display:none}
.patient-sheet .form-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.patient-sheet input[type=checkbox]{width:auto;min-height:0;margin:0 8px 0 0}
.patient-sheet label{font-size:12px}

/* Messages: a short-lived notification in the top corner instead of a permanent banner (click to dismiss). */
#status{position:fixed;top:18px;right:18px;z-index:60;max-width:min(420px,calc(100vw - 32px));margin:0;box-shadow:0 12px 40px #0002;cursor:pointer;opacity:0;transform:translateY(-8px);transition:opacity .2s,transform .2s;pointer-events:none}
#status.show{opacity:1;transform:none;pointer-events:auto}

/* App shell: top bar (clinic on the left; Home, appearance and profile on the right) and a tab row
   for the workspace pages. Replaces the former left sidebar. */
.app{display:block;min-height:100vh}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 28px;background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--line)}
.topbar .brand{display:flex;align-items:center;gap:12px;min-width:0;padding:0}
.topbar .brand .mark{width:42px;height:42px;font-size:28px}
#clinic-name{display:block;font-size:18px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#clinic-location{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.theme-switch{display:flex;gap:2px;padding:3px;border-radius:var(--radius-capsule);background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid var(--line)}
.theme-switch button{width:36px;height:36px;min-height:0;padding:0;border-radius:var(--radius-capsule);display:grid;place-items:center;background:transparent;color:var(--muted);box-shadow:none}
.theme-switch button svg,#home svg{width:19px;height:19px}
.theme-switch button[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px rgba(16,24,40,.12)}
.profile-menu{position:relative}
.avatar-button{width:var(--target);height:var(--target);min-height:0;padding:0;border-radius:50%;background:transparent;display:grid;place-items:center;box-shadow:none}
.avatar{overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.menu{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:290px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 50px rgba(16,24,40,.22)}
.menu-head{display:flex;gap:12px;align-items:center;padding:6px 8px 12px;margin-bottom:6px;border-bottom:1px solid var(--line)}
.menu-head strong{display:block;font-size:14px}
.menu-head small{display:block;margin-top:3px;color:var(--muted);font-size:12px;text-transform:capitalize}
.menu-item{display:block;width:100%;min-height:var(--target);padding:10px 12px;border-radius:10px;background:transparent;color:var(--text);font-size:14px;font-weight:500;text-align:left;box-shadow:none}
.menu-item:hover,.menu-item:focus-visible{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.menu .identity-panel{padding:2px 8px 8px}
.menu .identity-panel label{margin-top:4px}
.menu .review-note{margin:8px 0 0}
.tabbar{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:10px 24px;border-bottom:1px solid var(--line)}
.tabbar::-webkit-scrollbar{display:none}
.tabbar .nav{width:auto;flex:0 0 auto;margin:0;min-height:40px;padding:8px 16px;border-radius:var(--radius-capsule);white-space:nowrap;font-size:14px}
body:not(.signed-in) .tabbar,body:not(.signed-in) .topbar-actions>:not(.theme-switch){display:none}
.profile-sheet{width:min(520px,94vw)}
.profile-photo{display:flex;align-items:center;gap:20px;margin:6px 0 18px}
.avatar-large{width:92px;height:92px;font-size:28px}
.profile-photo .muted{margin:8px 0 0}
.profile-photo button,.file-button{display:inline-flex;align-items:center;min-height:40px;margin:0 8px 0 0;padding:8px 14px;border-radius:var(--radius-capsule);font-size:13px;cursor:pointer}
.file-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.file-button:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.profile-details{display:grid;grid-template-columns:max-content 1fr;gap:10px 20px;margin:0;padding-top:16px;border-top:1px solid var(--line)}
.profile-details dt{color:var(--muted);font-size:12px;align-self:center}
.profile-details dd{margin:0;font-size:14px;overflow-wrap:anywhere}
.profile-details dd:nth-of-type(3){text-transform:capitalize}
@media (max-width:650px){
  .topbar{padding:10px 14px;gap:10px}
  .topbar .demo-chip,#clinic-location{display:none}
  #clinic-name{font-size:16px;max-width:38vw}
  .theme-switch button{width:32px;height:32px}
  .tabbar{padding:8px 10px}
  .tabbar .nav{padding:8px 12px;font-size:13px}
  .menu{width:min(290px,calc(100vw - 28px))}
}
/* Notifications sit below the top bar so they never cover Home, appearance or the profile. */
#status{top:84px}
@media (max-width:650px){#status{top:70px}}

/* Appointments tab: booking panel heading with the New Patient button on the right, and its doctor/date row. */
.booking-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.booking-heading h2{margin:0}
.directory .section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.booking-heading [data-action=new-patient],.directory [data-action=new-patient]{min-height:var(--target);padding:10px 18px;border-radius:var(--radius-capsule);white-space:nowrap}
.booking-filters{margin:10px 0 4px}

/* Appointment slots: one colour per state, with a legend. */
.slot-legend{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 10px}
.slot-key{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:var(--radius-capsule)}
.slots .slot,.slot-key{border:1px solid transparent}
.slots .slot{font-variant-numeric:tabular-nums}
.slot-available{background:#e7f5ec!important;color:#1d6b3a!important;border-color:#a9dbb9!important}
.slot-selected{background:#0b63ce!important;color:#fff!important;border-color:#0b63ce!important;box-shadow:0 0 0 3px rgba(11,99,206,.25)}
.slot-booked{background:#fdecec!important;color:#a12828!important;border-color:#f3b8b8!important;text-decoration:line-through}
.slot-unavailable{background:#eef0f3!important;color:#7a8291!important;border-color:#d9dde3!important}
.slots .slot:disabled{opacity:1;cursor:not-allowed}
.slots .slot-available:not(:disabled):hover{background:#d3eedd!important}
.slot-gap{display:inline-flex;align-items:center;font-style:italic}
.slot-key.slot-booked{text-decoration:none}
.slot-action{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.slot-action span{font-size:13px;color:var(--muted)}
.dark .slot-available{background:#16382a!important;color:#9fe0b8!important;border-color:#2d6a4a!important}
.dark .slot-booked{background:#3d1d22!important;color:#f2a9a9!important;border-color:#6e3038!important}
.dark .slot-unavailable{background:#262c36!important;color:#9aa3b2!important;border-color:#3a4250!important}

/* Prepare Patient form: compact, colour-coded sections (reason, vitals, allergies, medicines) and AI markers. */
#preparation-sheet{width:min(1040px,95vw);max-height:94vh;overflow:auto;padding-top:18px}
#preparation-sheet h2{margin:0 0 2px}
#preparation-sheet>.muted,#preparation-sheet>.rx-help{margin:0 0 4px;font-size:12px}
.prep-form{--prep-reason:#2563eb;--prep-vitals:#0d9488;--prep-allergy:#dc2626;--prep-meds:#7c3aed;display:flex;flex-direction:column;gap:10px;margin:8px 0 10px}
body.dark .prep-form{--prep-reason:#60a5fa;--prep-vitals:#2dd4bf;--prep-allergy:#f87171;--prep-meds:#a78bfa}
.prep-section{--tone:var(--accent);border:1px solid color-mix(in srgb,var(--tone) 28%,var(--line));border-left:4px solid var(--tone);border-radius:12px;padding:8px 12px 10px;background:color-mix(in srgb,var(--tone) 5%,var(--surface))}
.prep-reason{--tone:var(--prep-reason)}
.prep-vitals{--tone:var(--prep-vitals)}
.prep-allergy{--tone:var(--prep-allergy)}
.prep-meds{--tone:var(--prep-meds)}
.prep-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 6px}
.prep-head h3{margin:0;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--tone)}
.prep-help{font-size:12px;color:var(--muted)}
.prep-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px 10px}
.prep-field{display:flex;flex-direction:column;gap:3px;position:relative;margin:0}
.prep-label{font-size:11px;font-weight:600;color:var(--muted)}
#preparation-sheet .prep-form input:not([type=checkbox]):not([type=radio]):not([type=file]),#preparation-sheet .prep-form textarea{min-height:34px;height:34px;padding:5px 8px;margin:0;font-size:14px}
#preparation-sheet .prep-form textarea{width:100%;height:auto;resize:vertical;min-height:0}
#preparation-sheet .prep-field{display:flex;margin:0}
#preparation-sheet .prep-form .file-button{display:inline-flex;margin:0;position:relative;overflow:hidden}
#preparation-sheet .prep-form .file-button input{width:1px;height:1px;min-height:0;padding:0;border:0}
.prep-input{display:flex;align-items:center;gap:4px}
.prep-input input{flex:1 1 auto;min-width:0;width:100%;font-weight:600}
.prep-unit{font-size:11px;color:var(--muted);white-space:nowrap}
.prep-bp-field{grid-column:span 2}
.prep-bp input{flex:1 1 4em;width:4em}
.prep-slash{color:var(--muted);font-size:16px}
.prep-bmi{display:flex;align-items:center;justify-content:center;min-height:34px;border-radius:var(--radius-control);font-size:16px;font-weight:700;background:color-mix(in srgb,var(--line) 14%,var(--surface))}
.prep-bmi[data-band=normal]{background:color-mix(in srgb,#16a34a 16%,var(--surface));color:#15803d}
.prep-bmi[data-band=low],.prep-bmi[data-band=high]{background:color-mix(in srgb,#d97706 18%,var(--surface));color:#b45309}
.prep-bmi[data-band=very-high]{background:color-mix(in srgb,#dc2626 16%,var(--surface));color:#b91c1c}
body.dark .prep-bmi[data-band]{color:var(--text)}
.prep-medicines{display:flex;flex-direction:column;gap:4px}
.prep-empty{margin:2px 0;font-size:12px}
.prep-med-row{display:grid;grid-template-columns:1.8fr .9fr 1fr 1.2fr 1.15fr 1.15fr 1.2fr 32px;gap:6px;align-items:center;position:relative}
.prep-med-row input{width:100%;min-width:0}
.prep-med-row select{width:100%;min-width:0;height:34px;min-height:34px;padding:5px 8px;border-radius:10px;font-size:14px}
.prep-med-head span{font-size:11px;font-weight:600;color:var(--muted)}
.prep-med-actions{display:flex;gap:6px;margin-left:auto}
button.prep-small,.prep-form .file-button.prep-small,.prep-assist button.prep-small{min-height:30px;padding:4px 12px;margin:0;font-size:12px;font-weight:600}
button.prep-remove{width:32px;height:32px;min-height:32px;padding:0;font-size:18px}
.prep-assist{display:flex;flex-direction:column;gap:6px}
.prep-assist-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.prep-assist button.prep-mic,.prep-assist button.prep-stop{min-height:36px;padding:6px 16px;font-size:14px}
.prep-assist button.prep-stop{background:#dc2626}
.prep-assist-status{font-size:12px;color:var(--muted);flex:1 1 220px}
.prep-transcript{border:1px dashed color-mix(in srgb,var(--prep-reason) 40%,var(--line));border-radius:10px;padding:6px 10px;font-size:12px;background:color-mix(in srgb,var(--prep-reason) 4%,var(--surface))}
.prep-transcript strong{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--prep-reason)}
.prep-transcript p{margin:2px 0 0;white-space:pre-wrap}
.prep-ai-warnings{margin:0;padding-left:18px;font-size:12px;color:#9a5300}
body.dark .prep-ai-warnings{color:#fbbf24}
/* Filled from a recording: no marking. Only a value the recording was not sure of is outlined amber, with "Verify". */
input.ai-uncertain,textarea.ai-uncertain,.prep-med-row.ai-uncertain input{border-color:#d68400!important;background:color-mix(in srgb,#d68400 9%,var(--bg))!important}
.prep-field[data-ai]::after,.prep-med-row[data-ai]::after{content:attr(data-ai);position:absolute;top:0;right:0;font-size:10px;font-weight:700;color:#0b63ce}
.prep-wide[data-ai]::after{top:-16px}
.prep-med-row[data-ai]::after{top:-13px}
#preparation-sheet .sheet-footer{position:sticky;bottom:-1px;background:var(--surface);padding-top:8px}
@media (max-width:650px){
  .prep-bp-field{grid-column:1/-1}
  .prep-med-row{grid-template-columns:1fr 1fr;padding:6px;border:1px solid var(--line);border-radius:10px}
  .prep-med-head{display:none}
  .prep-med-actions{margin-left:0}
}
/* Shared dictation bar: one entry per recording with Play and transcript. */
.prep-recordings{display:flex;flex-direction:column;gap:6px}
.prep-recordings:empty{display:none}
.prep-recording-head{display:flex;align-items:center;gap:8px}
.prep-recording-head strong{flex:1}
input.ai-changed,select.ai-changed,textarea.ai-changed{border-color:#7c3aed!important;background:color-mix(in srgb,#7c3aed 8%,var(--bg))!important}
/* New Patient Registration: the same compact, colour-coded cards as Prepare Patient. */
.reg-form{--prep-comm:#d97706;--prep-extra:#64748b}
body.dark .reg-form{--prep-comm:#fbbf24;--prep-extra:#94a3b8}
.prep-comm{--tone:var(--prep-comm)}
.prep-extra{--tone:var(--prep-extra)}
#patient-dialog .reg-form{margin:6px 0 12px}
#patient-dialog .reg-form h3{border:0;padding:0;margin:0;font-size:13px}
#patient-dialog .reg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px 12px}
#patient-dialog .reg-grid label{display:flex;flex-direction:column;gap:3px;margin:0;position:relative;font-size:11px;font-weight:600;color:var(--muted)}
#patient-dialog .reg-grid label.check{flex-direction:row;align-items:center;gap:6px;color:var(--text);font-weight:500}
#patient-dialog .reg-grid .reg-wide{grid-column:span 2}
#patient-dialog .reg-grid input:not([type=checkbox]),#patient-dialog .reg-grid select,#patient-dialog .reg-grid textarea{min-height:34px;margin:0;padding:5px 8px;font-size:14px;color:var(--text)}
#patient-dialog .reg-grid textarea{min-height:0;resize:vertical}
#patient-dialog .prep-head .check{display:flex;align-items:center;gap:6px;margin:0 0 0 auto;font-size:12px}
#patient-dialog .reg-assist{margin:12px 0 4px}
.reg-form label[data-ai]::after{content:attr(data-ai);position:absolute;top:0;right:0;font-size:10px;font-weight:700;color:#0b63ce}
.reg-form label.reg-missing{color:#b91c1c}
.reg-form label.reg-missing input,.reg-form label.reg-missing select,.reg-form label.reg-missing textarea{border-color:#dc2626!important;background:color-mix(in srgb,#dc2626 7%,var(--bg))!important}
.reg-form label.reg-missing:not([data-ai])::after{content:'Needed';position:absolute;top:0;right:0;font-size:10px;font-weight:700;color:#dc2626}
body.dark .reg-form label.reg-missing{color:#f87171}
@media (max-width:650px){#patient-dialog .reg-grid .reg-wide{grid-column:1/-1}}
/* Registration labels can be long: the AI / Needed badge sits on the field's top edge instead of beside the label. */
#patient-dialog .reg-form label[data-ai]::after,#patient-dialog .reg-form label.reg-missing:not([data-ai])::after{top:27px;right:8px;padding:0 4px;line-height:14px;border-radius:6px;background:var(--surface)}
#patient-dialog .reg-form label:has(select)[data-ai]::after,#patient-dialog .reg-form label:has(select).reg-missing:not([data-ai])::after{right:30px}
#patient-dialog .reg-form label:has(input[type=date])[data-ai]::after,#patient-dialog .reg-form label:has(input[type=date]).reg-missing:not([data-ai])::after{right:36px}
/* Weekly Availability: day chips, time lists, slot chips and a colour-coded month calendar. */
#availability-editor .avail-form{margin:10px 0 0}
#availability-editor .prep-help{font-size:12px}
#availability-editor button.prep-small,#availability-editor .prep-assist button.prep-small{min-height:30px;padding:4px 12px;margin:0;font-size:12px;font-weight:600}
#availability-editor button.primary:not(.prep-small){min-height:38px;padding:8px 18px}
#availability-editor select,#availability-editor input[type=date]{min-height:34px;height:34px;padding:4px 8px;margin:0;font-size:14px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--bg);color:var(--text);width:auto}
.avail-days{display:flex;align-items:center;gap:6px;flex-wrap:wrap;position:relative;margin:2px 0 8px}
.avail-days>.prep-label{min-width:136px}
.avail-chip{position:relative;display:inline-flex;margin:0;cursor:pointer}
.avail-chip input{position:absolute;opacity:0;width:1px;height:1px}
.avail-chip span{display:inline-flex;align-items:center;justify-content:center;min-width:52px;min-height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-capsule);font-size:13px;font-weight:600;background:var(--surface);color:var(--text);transition:background 150ms var(--ease)}
.avail-chip input:checked+span{background:var(--tone,var(--accent));border-color:var(--tone,var(--accent));color:#fff}
.avail-chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.avail-offdays .avail-chip input:checked+span{background:#64748b;border-color:#64748b}
.avail-quick{display:flex;gap:6px;margin-left:auto}
.avail-days.ai-filled .avail-chip input:checked+span{box-shadow:0 0 0 2px color-mix(in srgb,#0b63ce 45%,transparent)}
.avail-days[data-ai]::after{content:attr(data-ai);position:absolute;top:-12px;right:0;font-size:10px;font-weight:700;color:#0b63ce}
.avail-presets{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.avail-presets>.prep-label{min-width:136px}
.avail-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}
.avail-range .prep-input{gap:6px;flex-wrap:wrap}
#availability-editor .avail-range select{flex:0 0 112px;width:112px}
#availability-editor .avail-range input[type=date]{flex:0 0 148px;width:148px}
.avail-slot{grid-column:1/-1}
.avail-slot .avail-days{margin:0}
.avail-slot .avail-chip span{min-width:64px}
.avail-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.avail-busy{opacity:.6;pointer-events:none}
.avail-cal-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.avail-cal-head strong{min-width:130px;text-align:center}
#availability-editor .avail-cal-head .icon-button{width:32px;height:32px;min-height:32px;padding:0;font-size:18px}
.avail-legend{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto;font-size:11px;color:var(--muted)}
.avail-key{display:inline-flex;align-items:center;gap:4px}
.avail-key::before{content:'';width:12px;height:12px;border-radius:4px;border:1px solid var(--line);background:var(--cell)}
.avail-cal-wrap{display:grid;grid-template-columns:minmax(280px,420px) 1fr;gap:14px;align-items:start}
.avail-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.avail-dow{font-size:11px;font-weight:700;text-align:center;color:var(--muted)}
.avail-working{--cell:color-mix(in srgb,#16a34a 20%,var(--surface))}
.avail-special{--cell:color-mix(in srgb,#d97706 24%,var(--surface))}
.avail-leave{--cell:color-mix(in srgb,#dc2626 22%,var(--surface))}
.avail-off{--cell:color-mix(in srgb,#64748b 22%,var(--surface))}
.avail-none{--cell:var(--surface)}
#availability-editor button.avail-day{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:44px;height:44px;padding:0;margin:0;border-radius:10px;border:1px solid var(--line);background:var(--cell);color:var(--text);font-size:13px;font-weight:600;box-shadow:none}
.avail-day small{font-size:9px;font-weight:700;line-height:1;text-transform:uppercase;letter-spacing:.03em}
.avail-day.avail-leave small{color:#b91c1c}
body.dark .avail-day.avail-leave small{color:#fca5a5}
.avail-day.avail-past{opacity:.45}
#availability-editor .avail-day.avail-today{border:2px solid var(--accent)}
#availability-editor .avail-day.avail-selected{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 55%,transparent)}
.avail-detail{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}
.avail-state{display:inline-block;margin:6px 0 0;padding:3px 10px;border-radius:var(--radius-capsule);background:var(--cell);font-size:13px;font-weight:600}
.avail-leave-row{margin-top:10px}
.avail-cal-side .prep-input{flex-wrap:wrap}
@media (max-width:760px){
  .avail-cal-wrap{grid-template-columns:1fr}
  .avail-days>.prep-label,.avail-presets>.prep-label{min-width:100%}
  .avail-quick{margin-left:0}
}
/* Session and break on/off ticks: unticked ranges are greyed and ignored when saving. */
#availability-editor .avail-toggle{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:12px;font-weight:700;color:var(--text);cursor:pointer}
#availability-editor .avail-toggle input{width:18px;height:18px;margin:0}
#availability-editor .avail-range-off select{opacity:.4}
#availability-editor .avail-range-off .avail-toggle span{color:var(--muted);text-decoration:line-through}
/* Today's date sits in the top bar instead of a page heading. */
.topbar-date{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;padding:6px 10px;border-radius:var(--radius-capsule);background:color-mix(in srgb,var(--line) 14%,transparent)}
.content>p#status:empty+#workspace{margin-top:0}
/* Availability tab: tighter so the hours and the calendar need less scrolling. */
#availability-page>#availability-editor{padding-top:14px}
#availability-editor>.booking-filters{margin:0 0 6px;grid-template-columns:minmax(200px,280px)}
#availability-editor>.booking-filters label{margin:0}
#availability-editor .avail-form{margin:0}
#availability-editor .avail-slot{grid-column:auto}
#availability-editor button.avail-day{min-height:36px;height:36px}
#availability-editor .avail-days{margin:0 0 6px}
#availability-editor .avail-presets{margin:2px 0 6px}
#availability-editor .avail-actions{margin-top:6px}
#availability-editor .prep-assist-controls>.booking-filters{display:flex;margin:0 8px 0 0}
#availability-editor .prep-assist-controls>.booking-filters label{display:flex;align-items:center;gap:8px;margin:0;font-size:12px;font-weight:600}
#availability-editor .avail-slot{grid-column:span 2}
#availability-editor .avail-slot .avail-chip span{min-width:56px;padding:0 8px}
#availability-editor button.avail-day{min-height:32px;height:32px}
#availability-editor .avail-calendar{gap:3px}
@media (max-width:760px){#availability-editor .avail-slot{grid-column:1/-1}}
/* Selected-date detail: date on its own line, then a status badge and time chips that wrap instead of overlapping. */
#availability-editor .avail-detail{display:flex;flex-direction:column;gap:8px}
#availability-editor .avail-detail-date{display:block;font-size:14px}
#availability-editor .avail-state-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#availability-editor .avail-state{display:inline-flex;align-items:center;margin:0;padding:3px 10px;line-height:1.4;white-space:nowrap}
#availability-editor .avail-time{display:inline-flex;align-items:center;padding:3px 10px;border:1px solid var(--line);border-radius:var(--radius-capsule);font-size:12px;font-weight:600;line-height:1.4;white-space:nowrap;background:var(--surface)}
#availability-editor .avail-break-time{color:var(--muted);border-style:dashed}
#availability-editor .avail-detail .avail-actions{margin-top:0}
/* Room between the Quick fill buttons and the session times below. */
#availability-editor .avail-presets{margin:4px 0 14px}
/* Today (blue outline and label) and the selected date or leave range (violet) look different. */
.avail-form{--avail-select:#7c3aed}
body.dark .avail-form{--avail-select:#a78bfa}
#availability-editor .avail-day.avail-today{border:2px solid var(--accent);box-shadow:none}
#availability-editor .avail-day .avail-today-label{color:var(--accent)}
#availability-editor .avail-day.avail-in-range{border:2px solid var(--avail-select)}
#availability-editor .avail-day.avail-selected{border:2px solid var(--avail-select);box-shadow:0 0 0 3px color-mix(in srgb,var(--avail-select) 35%,transparent)}
#availability-editor .avail-day.avail-today.avail-selected{border-color:var(--avail-select);outline:2px solid var(--accent);outline-offset:1px}
.avail-key-today::before{background:var(--surface);border:2px solid var(--accent)}
.avail-key-selected::before{background:var(--surface);border:2px solid var(--avail-select)}
/* Consultation: one page of colour-coded cards, compact fields, dictation bar and AI markers. */
#consultation .consult-cards{--prep-comm:#d97706;--prep-extra:#64748b;display:flex;flex-direction:column;gap:10px}
body.dark #consultation .consult-cards{--prep-comm:#fbbf24;--prep-extra:#94a3b8}
#consultation #plan-section.consult-cards{margin-top:10px}
#consultation .consult-cards label.consult-field{display:flex;flex-direction:column;gap:3px;margin:0 0 8px;position:relative;font-size:12px;font-weight:600;color:var(--muted)}
#consultation .consult-cards label.consult-field:last-child{margin-bottom:0}
#consultation .consult-cards textarea{min-height:56px;margin:0;padding:7px 10px;line-height:1.5;font-size:14px;color:var(--text)}
#consultation .consult-cards input:not([type=checkbox]):not([type=radio]),#consultation .consult-cards select{min-height:34px;height:34px;margin:0;padding:5px 8px;font-size:14px}
#consultation .consult-cards .prep-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}
#consultation .consult-cards .prep-field{margin:0;font-size:11px}
#consultation .consult-cards .prep-input input{font-weight:600}
#consultation .consult-plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
#consultation .consult-plan-grid label.consult-field:first-child{grid-column:1/-1}
#consultation .consult-plan-grid label.consult-field{margin:0}
#consultation .consult-followup{display:grid;grid-template-columns:180px 1fr;gap:12px;margin-top:8px}
#consultation .consult-care-context{margin-top:8px;font-size:13px}
#consultation .consult-care-context summary{cursor:pointer;font-weight:600;color:var(--muted)}
#consultation .specialty-panel{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
#consultation .specialty-panel h3{margin:0 0 4px;font-size:13px}
#consultation .specialty-panel>label{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:12px}
#consultation .specialty-panel>label select{width:auto}
#consultation .specialty-panel>.muted{margin:0 0 6px;font-size:11px}
#consultation .specialty-panel .fields{grid-template-columns:1fr 1fr;gap:8px 12px}
#consultation .specialty-field label{display:flex;flex-direction:column;gap:3px;margin:0;position:relative;font-size:12px;font-weight:600;color:var(--muted)}
#consultation .specialty-field textarea{min-height:48px}
#consultation .specialty-sharing{display:flex;align-items:center;gap:6px;margin:3px 0 0;font-size:11px;font-weight:400}
#consultation .consult-cards label[data-ai]::after{content:attr(data-ai);position:absolute;top:0;right:0;font-size:10px;font-weight:700;color:#0b63ce}
#consultation .consult-scribe{margin:0 0 2px}
/* Patient background: past data listed separately in the side panel. */
#consult-background{display:flex;flex-direction:column;gap:8px;margin:12px 0}
#consult-background .detail-label{margin:0}
.consult-bg{border:1px solid var(--line);border-left:4px solid var(--tone,var(--line));border-radius:10px;padding:8px 10px;background:color-mix(in srgb,var(--tone,var(--line)) 5%,var(--surface))}
.consult-bg-allergy{--tone:#dc2626}
.consult-bg-meds{--tone:#7c3aed}
.consult-bg-history{--tone:#2563eb}
body.dark .consult-bg-allergy{--tone:#f87171}
body.dark .consult-bg-meds{--tone:#a78bfa}
body.dark .consult-bg-history{--tone:#60a5fa}
.consult-bg h4{margin:0 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--tone)}
.consult-bg ul{margin:0;padding-left:16px;font-size:12px;line-height:1.5}
.consult-bg li small{display:block;color:var(--muted)}
.consult-bg .muted{margin:0;font-size:12px}
.consult-bg-sub{margin:6px 0 2px;font-size:11px;font-weight:700;color:var(--muted)}
@media (max-width:760px){#consultation .consult-plan-grid,#consultation .specialty-panel .fields,#consultation .consult-followup{grid-template-columns:1fr}}
/* Consultation as a full page: the whole window, header and footer pinned, side panel and form scroll together. */
#consultation.consultation-sheet,#consultation.consultation-sheet.reports-mode{width:100vw;max-width:100vw;height:100vh;height:100dvh;max-height:none;margin:0;inset:0;border-radius:0;padding:0 24px;border:0}
#consultation .sheet-heading{position:sticky;top:0;z-index:3;background:var(--surface);padding:12px 0 10px;margin:0}
#consultation .sheet-heading h2{font-size:22px;margin:2px 0 0}
#consultation .sheet-heading p{margin:4px 0 0;font-size:13px}
#consultation .consult-layout{grid-template-columns:320px minmax(0,1fr);gap:20px;margin-top:12px}
#consultation .consult-context{padding-right:16px;align-self:start;position:sticky;top:84px;max-height:calc(100dvh - 160px);overflow:auto}
#consultation .consult-tabs{top:74px;margin-bottom:12px}
#consultation #consult-status:empty{display:none}
#consultation>.sheet-footer{bottom:0;margin-top:12px;padding:10px 0 12px}
#consult-context:empty{display:none}
#consult-context .pharmacy-status{margin:0 0 8px}
/* Side panel: vitals, allergies, current medicines, past medical history. */
#consultation .consult-side{display:flex;flex-direction:column;gap:8px}
#consultation .consult-recorded{margin:-2px 0 6px;font-size:11px;font-weight:600;color:var(--muted)}
#consultation .consult-vitals{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}
#consultation .consult-vitals .consult-vital-wide{grid-column:1/-1}
#consultation .consult-side .prep-field{margin:0;position:relative}
#consultation .consult-side input:not([type=checkbox]):not([type=radio]),#consultation .consult-side select{min-height:30px;height:30px;margin:0;padding:3px 6px;font-size:13px;font-weight:600}
#consultation .consult-side .prep-bmi{min-height:30px;font-size:14px}
#consultation .consult-side .prep-bp input{width:3.6em;flex:1 1 3.6em}
#consultation .consult-side textarea{min-height:64px;margin:0;padding:6px 8px;font-size:13px}
.consult-bg-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:2px}
.consult-bg-head h4{margin:0}
#consultation .consult-bg-head button.prep-small{min-height:24px;padding:2px 10px;font-size:11px}
.consult-bg-editor{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.consult-bg-editor label.consult-field{margin:0;font-size:11px}
#consultation .consult-bg-editor .allergy-records,#consultation .consult-bg-editor section{font-size:12px}
#consultation .consult-side label[data-ai]::after{content:attr(data-ai);position:absolute;top:0;right:0;font-size:10px;font-weight:700;color:#0b63ce}
/* Main area cards. */
#consultation .prep-head label{display:inline-flex;align-items:center;gap:6px;margin:0 0 0 auto;font-size:12px;font-weight:600;color:var(--muted)}
#consultation .prep-head label select{width:auto;min-height:30px;height:30px;padding:2px 8px}
#consultation .specialty-panel{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
#consultation .specialty-panel .fields{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 12px}
#consultation .specialty-field{position:relative}
#consultation .specialty-field.specialty-short textarea,#consultation .specialty-field.specialty-short input{min-height:34px}
#consultation .specialty-sharing{position:absolute;top:0;right:0;margin:0;font-size:10px;color:var(--muted);gap:4px}
#consultation .specialty-sharing input{width:14px;height:14px}

#consultation .consult-plan-three{grid-template-columns:1fr 180px 1fr}
#consultation .consult-plan-three label.consult-field:first-child{grid-column:auto}
#consultation .consult-plan-grid{margin-top:8px}
/* Care advice context: compact rows. */
.care-rows{display:grid;grid-template-columns:1fr;gap:4px}
.care-row{display:grid;grid-template-columns:200px minmax(0,1fr) 170px;gap:8px;align-items:center}
.care-row label{margin:0}
.care-row-item{display:contents}
.care-row-title{font-size:12px;font-weight:600;color:var(--text)}
#consultation .care-row select{min-height:32px;height:32px;padding:2px 6px;font-size:12px}
#consultation .consult-cards .care-advice-help,#consultation .prep-allergy>section>.muted{margin:0 0 6px;font-size:11px}
/* Diet & lifestyle advice. */
.consult-advice-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 6px}
#consultation .consult-advice-tools button.prep-small{min-height:32px}
.consult-advice-notes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.consult-advice-notes:empty{display:none}
.consult-advice-notes>div{border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:12px;background:var(--surface)}
.consult-advice-notes ul{margin:4px 0 0;padding-left:16px}
.consult-advice-cautions{border-color:color-mix(in srgb,#d97706 45%,var(--line))!important}
.consult-advice-cautions strong{color:#b45309}
body.dark .consult-advice-cautions strong{color:#fbbf24}
@media (max-width:900px){
  #consultation .consult-layout{grid-template-columns:1fr}
  #consultation .consult-context{position:static;max-height:none;padding-right:0}
  .care-row{grid-template-columns:1fr}
  #consultation .consult-plan-three,.consult-advice-notes{grid-template-columns:1fr}
}
#consultation.consultation-sheet,#consultation.consultation-sheet.reports-mode{width:100%;max-width:none;height:100%;max-height:none;box-sizing:border-box}
#consultation .specialty-field>label:first-child{padding-right:112px}
#consultation .specialty-field>label.specialty-sharing{position:absolute;top:0;right:0;display:inline-flex;flex-direction:row;align-items:center;gap:4px;margin:0;padding:0;font-size:10px;font-weight:600;color:var(--muted)}
#consultation .consult-tabs{background:var(--surface);z-index:2;box-shadow:0 6px 10px -8px rgba(16,24,40,.25)}
/* Tabs: a count of items; bold until looked at. */
#consultation .consult-tabs button{font-weight:500}
#consultation .consult-tabs button.tab-unreviewed{font-weight:800;color:var(--text)}
/* Specialty details: optional, added one by one. */
.specialty-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
#consultation button.specialty-chip{min-height:26px;padding:2px 10px;font-size:12px;font-weight:600;border:1px dashed var(--line);border-radius:var(--radius-capsule);background:var(--surface);color:var(--muted)}
#consultation button.specialty-chip:hover{color:var(--text);border-style:solid}
#consultation .specialty-share{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:12px;color:var(--muted)}
#consultation .specialty-panel>.fields:not(:has(.specialty-field:not([hidden]))){display:none}
/* Plan: medicines prescribed and orders side by side. */
.consult-plan-lists{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.consult-plan-box{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface)}
.consult-plan-box h4{margin:0;font-size:12px;color:var(--muted)}
.consult-plan-box ul,.consult-bg ul{margin:4px 0 0;padding-left:16px;font-size:13px;line-height:1.5}
#consultation button.consult-outline{min-height:24px;padding:2px 10px;font-size:11px;margin-left:auto}
#consultation button.consult-link{align-self:flex-start;min-height:0;margin-top:8px;padding:0;border:0;background:none;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer}
#consultation .prep-section[hidden]{display:none}
/* Table popup for allergies, medicines, past history and orders. */
dialog.table-editor{width:min(860px,96vw);padding:16px 18px}
.table-editor-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.table-editor-head h2{margin:0;font-size:18px}
.table-editor-table{width:100%;border-collapse:collapse}
.table-editor-table th{text-align:left;font-size:11px;font-weight:700;color:var(--muted);padding:4px}
.table-editor-table td{padding:3px 4px}
.table-editor-table input,.table-editor-table select{width:100%;min-height:34px;height:34px;margin:0;padding:4px 8px;font-size:14px}
.table-editor-empty td{color:var(--muted);font-size:13px;padding:8px 4px}
.table-editor-footer{display:flex;align-items:center;gap:8px;margin-top:12px}
.table-editor-spacer{flex:1}
/* Review & sign: the prescription as the patient gets it, editable in place. */
dialog.sign-preview{width:min(920px,96vw);max-height:94vh;padding:0;overflow:auto;background:var(--bg)}
.rxp-paper{margin:16px;padding:22px 26px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--card-shadow)}
.rxp-top{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--accent);padding-bottom:8px}
.rxp-top>div{display:flex;flex-direction:column}
.rxp-clinic{font-size:20px}
.rxp-doctor,.rxp-date{font-size:13px;color:var(--muted)}
.rxp-patient{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;margin:10px 0 4px;font-size:14px}
.rxp-patient strong{font-size:16px}
.rxp-vitals{color:var(--muted);font-size:13px}
.rxp-allergies{margin:6px 0;padding:6px 10px;border-radius:8px;background:color-mix(in srgb,#dc2626 9%,var(--surface));color:#b91c1c;font-weight:600;font-size:13px}
body.dark .rxp-allergies{color:#fca5a5}
.rxp-part{margin-top:12px}
.rxp-part h3{margin:0 0 4px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}
.rxp-text{width:100%;min-height:38px;resize:vertical;border:1px dashed transparent;border-radius:8px;padding:4px 6px;font:inherit;font-size:14px;line-height:1.5;background:transparent;color:var(--text)}
.rxp-text:hover,.rxp-text:focus{border-color:var(--line);background:var(--bg)}
.rxp-scroll{overflow-x:auto}
.rxp-table{width:100%;border-collapse:collapse;font-size:13px}
.rxp-table th{text-align:left;font-size:11px;color:var(--muted);padding:4px;border-bottom:1px solid var(--line)}
.rxp-table td{padding:3px}
.rxp-table input,.rxp-table select,.rxp-order input,.rxp-order select,.rxp-follow input{min-height:30px;height:30px;padding:2px 6px;font-size:13px;margin:0;width:100%}
.rxp-table td:nth-child(1) input{min-width:140px}
.rxp-table td:nth-child(6) input,.rxp-table td:nth-child(7) input{width:60px}
.rxp-orders{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}
.rxp-order{display:grid;grid-template-columns:130px 1fr 1fr 32px;gap:6px;align-items:center}
.rxp-follow{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:13px}
.rxp-follow input{width:170px}
.rxp-sign{margin:18px 0 0;text-align:right;font-weight:600}
.rxp-missing{border-color:#dc2626!important;background:color-mix(in srgb,#dc2626 7%,var(--bg))!important}
.rxp-footer{position:sticky;bottom:0;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;background:var(--surface);border-top:1px solid var(--line)}
.rxp-footer .check{flex:1 1 320px;margin:0;font-size:13px}
.rxp-status{flex:1 1 100%;margin:0;font-size:13px;color:#b45309}
.rxp-status:empty{display:none}
.rxp-buttons{display:flex;gap:8px;margin-left:auto}
.rxp-done-box{flex:1}
.rxp-done-box h3{margin:0 0 6px;color:#15803d}
.rxp-done-box ul{margin:0 0 8px;padding-left:18px;font-size:14px}
@media (max-width:760px){.consult-plan-lists,.rxp-order{grid-template-columns:1fr}}
#consultation .consult-cards textarea,#consultation .consult-side textarea{field-sizing:content;max-height:360px;overflow-x:hidden}
.rxp-follow select{width:auto;min-height:30px;height:30px;padding:2px 8px;font-size:13px}
/* Medications tab: prescribe today, current, past and DME. */
.meds-panel{display:flex;flex-direction:column;gap:10px}
.meds-panel .prep-head .meds-add{margin-left:auto}
#consultation .meds-panel button.prep-small{min-height:28px;padding:3px 10px;font-size:12px}
.meds-table-wrap{overflow-x:auto}
.meds-table{width:100%;border-collapse:collapse;font-size:13px}
.meds-table th{text-align:left;font-size:11px;font-weight:700;color:var(--muted);padding:4px 6px;border-bottom:1px solid var(--line)}
.meds-table td{padding:5px 6px;border-bottom:1px solid color-mix(in srgb,var(--line) 50%,transparent);vertical-align:middle}
.meds-new{display:inline-block;padding:1px 8px;border-radius:var(--radius-capsule);background:color-mix(in srgb,#16a34a 16%,var(--surface));color:#15803d;font-size:11px;font-weight:700}
body.dark .meds-new{color:#86efac}
.rx-end{display:block;margin-top:2px;font-size:11px;color:var(--muted)}
#consultation #rx-section{margin:0}
/* Reports: two groups of ribbon labels. */
.report-groups{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.report-group{border:1px solid var(--line);border-left:4px solid var(--tone);border-radius:12px;padding:8px 12px;background:color-mix(in srgb,var(--tone) 4%,var(--surface))}
.report-imaging{--tone:#0d9488}
.report-lab{--tone:#7c3aed}
.report-group-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.report-group-head h3{margin:0;font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--tone)}
.report-ribbon{display:flex;align-items:center;gap:10px;margin:6px 0;padding:8px 12px;border:1px solid var(--line);border-left:4px solid var(--tone);border-radius:999px 10px 10px 999px;background:var(--surface);cursor:pointer}
.report-ribbon:hover,.report-ribbon:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--tone) 40%,transparent);outline:none}
.report-ribbon-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.report-ribbon-main strong{font-size:14px}
.report-ribbon-facts{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted)}
.report-chip{padding:0 8px;border-radius:var(--radius-capsule);background:color-mix(in srgb,var(--tone) 14%,var(--surface));color:var(--text);font-weight:600}
.report-included{background:color-mix(in srgb,#2563eb 16%,var(--surface))}
.report-ok{color:#15803d;font-weight:600}
.report-wait{color:#b45309;font-weight:700}
body.dark .report-ok{color:#86efac}
body.dark .report-wait{color:#fbbf24}
dialog.report-details{width:min(640px,94vw);padding:16px 18px}
.report-facts{display:grid;grid-template-columns:160px 1fr;gap:6px 12px;margin:8px 0;font-size:14px}
.report-facts dt{font-weight:700;color:var(--muted);font-size:12px}
.report-facts dd{margin:0;white-space:pre-wrap}
/* Checks before signing. */
dialog.signoff-checks{width:min(720px,94vw);padding:16px 18px}
.signoff-section{border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin:8px 0}
.signoff-flagged{border-color:color-mix(in srgb,#d97706 55%,var(--line));background:color-mix(in srgb,#d97706 6%,var(--surface))}
.signoff-clean{background:color-mix(in srgb,#16a34a 5%,var(--surface))}
.signoff-title{display:flex;align-items:baseline;gap:10px}
.signoff-ok{margin:4px 0 0;color:#15803d;font-weight:600;font-size:13px}
body.dark .signoff-ok{color:#86efac}
.signoff-flag{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.signoff-flag p{margin:0 0 4px;font-size:13px}
.signoff-done p{color:var(--muted)}
.signoff-note{font-weight:600;color:#15803d}
.signoff-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.signoff-actions input{flex:1 1 220px;min-height:30px;height:30px;padding:2px 8px;font-size:13px;margin:0}
.signoff-actions button.prep-small{min-height:30px;padding:3px 10px;font-size:12px}
/* Long dictation: floating Stop button with a level meter; the form is locked while the last part is filled in. */
.consult-mic-float{position:fixed;right:28px;bottom:84px;z-index:20;display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:8px 18px;border:0;border-radius:var(--radius-capsule);background:#dc2626;color:#fff;font-size:14px;font-weight:700;box-shadow:0 10px 30px rgba(220,38,38,.35);cursor:pointer}
.consult-mic-float[hidden]{display:none}
.consult-mic-stop{font-size:16px}
.consult-mic-quiet{font-size:11px;font-weight:600;opacity:.85}
.consult-mic-level{width:46px;height:6px;border-radius:3px;background:linear-gradient(90deg,#fff calc(var(--level,0)*100%),rgba(255,255,255,.3) 0)}
/* Dictation: the form is locked (greyed, controls disabled) while the AI fills it in; a note with Cancel stays live. */
.dictation-locked{position:relative}
.dictation-locked > :not(.dictation-lock-note){opacity:.55;filter:saturate(.6);transition:opacity .15s}
.dictation-lock-note{position:fixed;left:50%;top:45%;transform:translate(-50%,-50%);z-index:30;display:flex;align-items:center;gap:14px;padding:14px 18px 14px 22px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--card-shadow);font-weight:700;color:var(--text)}
/* The AI's version offered beside a field the user typed themselves. */
.ai-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin-top:4px;padding:5px 8px;border-radius:8px;border:1px dashed color-mix(in srgb,#7c3aed 45%,var(--line));background:color-mix(in srgb,#7c3aed 7%,var(--surface));font-size:12px;font-weight:400;color:var(--text)}
.ai-suggest-label{font-weight:700;color:#6d28d9}
body.dark .ai-suggest-label{color:#c4b5fd}
.ai-suggest-value{flex:1 1 200px;white-space:pre-wrap}
.ai-suggest .prep-small{min-height:26px;padding:2px 10px;font-size:12px}
dialog.signoff-checks{width:min(980px,96vw)}
.signoff-table{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0}
.signoff-table th,.signoff-table td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.signoff-table th{font-size:12px;color:var(--muted);font-weight:600}
.signoff-table tr.signoff-flagged td{background:color-mix(in srgb,#d97706 6%,var(--surface))}
.signoff-table tr.signoff-clean td{background:color-mix(in srgb,#16a34a 4%,var(--surface))}
.signoff-table .check{display:flex;gap:6px;align-items:center;margin:2px 0}
.signoff-status{min-width:9rem}
.signoff-status.signoff-wait,.signoff-wait{color:#b45309;font-weight:600}
body.dark .signoff-wait{color:#fcd34d}
.signoff-status.signoff-ok{margin:0}
.orders-panel .section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.orders-actions{display:flex;flex-wrap:wrap;gap:6px}
.orders-status{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:color-mix(in srgb,var(--muted) 14%,var(--surface))}
.orders-sent{background:color-mix(in srgb,#2563eb 14%,var(--surface));color:#1d4ed8}
.orders-accepted{background:color-mix(in srgb,#7c3aed 14%,var(--surface));color:#6d28d9}
.orders-completed{background:color-mix(in srgb,#16a34a 14%,var(--surface));color:#15803d}
.orders-outside{background:color-mix(in srgb,#d97706 16%,var(--surface));color:#b45309}
body.dark .orders-sent{color:#93c5fd}body.dark .orders-accepted{color:#c4b5fd}body.dark .orders-completed{color:#86efac}body.dark .orders-outside{color:#fcd34d}
.orders-panel td small{display:block;margin-top:2px}
.order-routing-panel table{width:100%}
.order-routing-panel select{min-width:10rem}
.order-routing-panel .primary{margin-top:10px}
.pharmacy-supply-pair{display:flex;gap:6px;align-items:center}
.pharmacy-supply-pair input{width:5.5rem}
.pharmacy-supply-pair input[list],.pharmacy-supply-pair select{width:7rem}
/* Medicine tables keep every column readable and scroll sideways on narrow screens. */
.rxp-table.rxp-meds,.rx-editor table{min-width:900px}
.rxp-meds input[type=date],.rx-editor input[type=date]{min-width:8.6rem}
.rxp-meds select,.rx-editor select{min-width:6.5rem}
.rxp-meds input[data-key=frequency],.rx-editor input[data-rx-key=frequency]{min-width:8rem}
.rxp-meds input[type=number],.rx-editor input[type=number]{min-width:4rem}
.rxp-meds input[data-key=strength],.rx-editor input[data-rx-key=strength]{min-width:5.5rem}
.rxp-meds input[type=checkbox],.rx-editor input[type=checkbox]{width:18px;height:18px;min-height:0}
#consultation .consult-advice-grid{grid-template-columns:1fr}
/* Reports tab: one toolbar line, an Other documents strip, structured details in the popup. */
.report-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:0 0 4px}
.report-other{--tone:#64748b}
.report-abnormal{background:color-mix(in srgb,#dc2626 14%,var(--surface));color:#b91c1c}
body.dark .report-abnormal{color:#fca5a5}
.report-include{font-size:12px;white-space:nowrap;display:flex;gap:4px;align-items:center}
dialog.report-details{width:min(820px,96vw);max-height:92vh;overflow:auto}
dialog.report-details .table-editor-head{gap:10px;align-items:center}
dialog.report-details .table-editor-head h2{margin:0 0 4px}
.report-subhead{margin:14px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent)}
.report-results{width:100%;font-size:13px}
.report-results td,.report-results th{padding:4px 8px}
.report-results .report-flagged td{background:color-mix(in srgb,#dc2626 7%,var(--surface))}
.report-results .report-flagged .report-value{color:#b91c1c;font-weight:700}
body.dark .report-results .report-flagged .report-value{color:#fca5a5}
.report-ai-note{margin:6px 0;padding:6px 10px;border-radius:8px;font-size:12px;background:color-mix(in srgb,#7c3aed 9%,var(--surface));color:var(--text)}
.report-warning{margin:6px 0;font-size:12px;color:#b45309}
.notice-warning{margin:8px 0;padding:10px 12px;border-radius:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;font-size:13px}
body.dark .notice-warning{background:rgba(251,146,60,.12);border-color:rgba(251,146,60,.35);color:#fdba74}
.report-edit-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 12px}
.report-edit-fields label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--muted)}
.report-edit .report-results input,.report-edit .report-results select{min-height:30px;height:30px;padding:2px 6px;font-size:13px;margin:0;width:100%}
/* Tool settings → AI connections */
dialog.ai-conn-dialog{width:min(760px,96vw);max-height:92vh;overflow:auto}
.ai-conn-form{display:flex;flex-direction:column;gap:10px}
.ai-conn-field{display:flex;flex-direction:column;gap:4px}
.ai-conn-field small{font-size:12px}
.ai-conn-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px 12px}
.ai-conn-group[hidden]{display:none}
.ai-conn-models{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px 12px}
.ai-conn-panel td{white-space:pre-line}
/* Consultation: the live transcript box (final words in black, the sentence being spoken in grey). */
.consult-live{margin:8px 0;padding:10px 12px;max-height:180px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:14px;line-height:1.55}
.consult-live[hidden]{display:none}
.consult-live-head{display:block;margin:6px 0 2px;font-size:12px;color:var(--muted)}
.consult-live-head:first-child{margin-top:0}
.consult-live-text{margin:0}
.consult-live-final{color:var(--text)}
.consult-live-interim{color:var(--muted);font-style:italic}
/* Recordings as buttons; transcripts in a tray that stays closed until opened. */
.recording-tray{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.recording-tray[hidden]{display:none}
.recording-buttons{display:flex;flex-wrap:wrap;gap:6px}
.recording-button{border-radius:var(--radius-capsule);font-weight:600}
.transcript-tray{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.transcript-summary{cursor:pointer;padding:6px 12px;font-size:13px;font-weight:600;color:var(--muted);list-style:none;user-select:none}
.transcript-summary::-webkit-details-marker{display:none}
.transcript-summary::before{content:'▸ ';display:inline-block}
.transcript-tray[open] .transcript-summary::before{content:'▾ '}
.transcript-body{max-height:220px;overflow-y:auto;padding:0 12px 10px;display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.55}
.transcript-label{display:block;font-size:12px;color:var(--muted)}
.transcript-text{margin:0;white-space:pre-wrap}
/* Care advice context: only the items discussed are shown; the rest are added from a short list. */
.care-row[hidden],.care-add[hidden]{display:none}
.care-add{display:block;margin-top:6px}
.care-add select{max-width:280px;min-height:32px;font-size:13px}
/* Consultation sheet: History (past medical, surgical and social), when reported. */
.rxp-history{display:grid;grid-template-columns:200px 1fr;gap:4px 12px;margin:0;font-size:14px}
.rxp-history dt{font-weight:700;color:var(--muted);font-size:12px}
.rxp-history dd{margin:0;white-space:pre-line}
/* Consultation · Examination: indigo card; rows coloured by finding (grey until filled, green normal, amber finding,
   blue dashed edge while it is still the AI's entry). Icons and words carry the meaning too, not colour alone. */
.prep-exam{--tone:#4f46e5}
body.dark .prep-exam{--tone:#818cf8}
.exam-grid{display:grid;grid-template-columns:1fr;gap:10px}
.exam-card{border:1px solid color-mix(in srgb,var(--tone) 22%,var(--line));border-radius:10px;background:var(--surface);padding:8px 10px}
.exam-card-head{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.exam-card-head h4{margin:0;font-size:13px;font-weight:700;color:var(--tone)}
.exam-card-icon{color:var(--tone);font-size:14px}
.exam-rows{display:flex;flex-direction:column}
.exam-row{display:grid;grid-template-columns:minmax(110px,170px) minmax(0,1fr) auto 28px;gap:8px;align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.exam-row:first-child{border-top:0}
.exam-name{font-size:13px;font-weight:600;color:var(--text)}
.exam-name input{width:100%;min-height:30px;height:30px;font-size:13px;padding:2px 8px;margin:0}
.exam-box{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-height:32px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
#consultation .exam-box input{flex:1;min-width:120px;border:0!important;background:transparent!important;box-shadow:none!important;height:30px;min-height:30px;padding:0;margin:0;font-size:14px;outline:none}
.exam-mark{font-weight:700;min-width:10px}
.exam-row.is-empty .exam-box{border-style:dashed;background:color-mix(in srgb,var(--line) 22%,var(--surface))}
.exam-row.is-normal .exam-box{border-color:color-mix(in srgb,#16a34a 45%,var(--line));background:color-mix(in srgb,#16a34a 8%,var(--surface))}
.exam-row.is-normal .exam-mark{color:#15803d}
.exam-row.is-finding .exam-box{border-color:color-mix(in srgb,#d97706 50%,var(--line));border-left:3px solid #d97706;border-radius:0 8px 8px 0;background:color-mix(in srgb,#d97706 9%,var(--surface))}
.exam-row.is-finding .exam-mark{color:#b45309}
.exam-row.is-ai .exam-box{outline:1px dashed #2563eb;outline-offset:1px}
.exam-ai{font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:color-mix(in srgb,#2563eb 14%,var(--surface));color:#1d4ed8;white-space:nowrap}
.exam-ai[hidden]{display:none}
.exam-row.is-uncertain .exam-ai{background:color-mix(in srgb,#d68400 16%,var(--surface));color:#b45309}
.exam-normal{min-height:30px;padding:2px 10px;font-size:12px}
.exam-normal.on{background:color-mix(in srgb,#16a34a 14%,var(--surface));color:#15803d;border-color:color-mix(in srgb,#16a34a 45%,var(--line))}
.exam-remove{width:28px;height:28px}
.exam-empty{margin:2px 0 4px;font-size:13px;color:var(--muted)}
.exam-empty[hidden]{display:none}
.exam-add{display:block;margin-top:6px}
.exam-add select{max-width:260px;min-height:32px;font-size:13px}
.exam-box .ai-suggest{flex-basis:100%;margin:2px 0 6px}
body.dark .exam-row.is-normal .exam-mark,body.dark .exam-normal.on{color:#86efac}
body.dark .exam-row.is-finding .exam-mark{color:#fcd34d}
body.dark .exam-ai{color:#93c5fd}
@media (max-width:760px){.exam-row{grid-template-columns:minmax(0,1fr) auto 28px}.exam-name{grid-column:1/-1}}
/* Patient app: the finalized consultation sheet, section by section as signed. */
.signed-sheet{display:flex;flex-direction:column;gap:12px;margin:12px 0}
.signed-sheet-part h4{margin:0 0 4px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}
.signed-sheet-text{margin:0;white-space:pre-line}
.signed-sheet-rows{display:grid;grid-template-columns:200px 1fr;gap:4px 12px;margin:0}
.signed-sheet-rows dt{font-size:12px;font-weight:700;color:var(--muted)}
.signed-sheet-rows dd{margin:0;white-space:pre-line}
@media (max-width:640px){.signed-sheet-rows{grid-template-columns:1fr}.signed-sheet-rows dd{margin-bottom:6px}}
.ai-conn-languages{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:4px 12px;padding-left:24px}
.ai-conn-languages[hidden]{display:none}
/* Printing in the patient's language: Noto Sans for each Indian script (served by this app). */
@font-face{font-family:'AIOS Devanagari';src:url('/fonts/NotoSansDevanagari.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Tamil';src:url('/fonts/NotoSansTamil.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Telugu';src:url('/fonts/NotoSansTelugu.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Bengali';src:url('/fonts/NotoSansBengali.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Kannada';src:url('/fonts/NotoSansKannada.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Malayalam';src:url('/fonts/NotoSansMalayalam.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Gujarati';src:url('/fonts/NotoSansGujarati.ttf') format('truetype');font-display:swap}
@font-face{font-family:'AIOS Gurmukhi';src:url('/fonts/NotoSansGurmukhi.ttf') format('truetype');font-display:swap}
.print-copy{font-family:Arial,'AIOS Devanagari',sans-serif;color:#111;background:#fff;max-width:800px;margin:0 auto}
.print-copy:lang(hi),.print-copy:lang(mr){font-family:Arial,'AIOS Devanagari',sans-serif}
.print-copy:lang(ta){font-family:Arial,'AIOS Tamil',sans-serif}
.print-copy:lang(te){font-family:Arial,'AIOS Telugu',sans-serif}
.print-copy:lang(bn){font-family:Arial,'AIOS Bengali',sans-serif}
.print-copy:lang(kn){font-family:Arial,'AIOS Kannada',sans-serif}
.print-copy:lang(ml){font-family:Arial,'AIOS Malayalam',sans-serif}
.print-copy:lang(gu){font-family:Arial,'AIOS Gujarati',sans-serif}
.print-copy:lang(pa){font-family:Arial,'AIOS Gurmukhi',sans-serif}
/* A bill printed in the patient's language uses the script font, whatever the bill template's Latin font. */
.bill-document:lang(hi),.bill-document:lang(hi) :is(h1,p,.care-table){font-family:Arial,'AIOS Devanagari',sans-serif!important}
.bill-document:lang(mr),.bill-document:lang(mr) :is(h1,p,.care-table){font-family:Arial,'AIOS Devanagari',sans-serif!important}
.bill-document:lang(ta),.bill-document:lang(ta) :is(h1,p,.care-table){font-family:Arial,'AIOS Tamil',sans-serif!important}
.bill-document:lang(te),.bill-document:lang(te) :is(h1,p,.care-table){font-family:Arial,'AIOS Telugu',sans-serif!important}
.bill-document:lang(bn),.bill-document:lang(bn) :is(h1,p,.care-table){font-family:Arial,'AIOS Bengali',sans-serif!important}
.bill-document:lang(kn),.bill-document:lang(kn) :is(h1,p,.care-table){font-family:Arial,'AIOS Kannada',sans-serif!important}
.bill-document:lang(ml),.bill-document:lang(ml) :is(h1,p,.care-table){font-family:Arial,'AIOS Malayalam',sans-serif!important}
.bill-document:lang(gu),.bill-document:lang(gu) :is(h1,p,.care-table){font-family:Arial,'AIOS Gujarati',sans-serif!important}
.bill-document:lang(pa),.bill-document:lang(pa) :is(h1,p,.care-table){font-family:Arial,'AIOS Gurmukhi',sans-serif!important}
/* The Patient queue and brief below Book an Appointment on the Appointments tab. */
#appointments-page>.schedule-workspace{margin-top:18px}
/* Reception's print list in the patient's details. */
.print-copies{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.print-copies h3{margin:12px 0 6px;font-size:14px}
.print-copies ul{list-style:none;margin:0;padding:0}
.print-copies li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 0;border-bottom:1px solid var(--line)}
.print-copies li>span{flex:1;min-width:180px}
.print-copies li button{padding:5px 10px;font-size:13px}
.print-original img{max-width:100%;height:auto}
.print-copy-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-bottom:2px solid #0b63ce;padding-bottom:8px;margin-bottom:10px}
.print-copy-head h1{margin:0;font-size:20px}
.print-copy-head p{margin:2px 0 0;font-size:12px;color:#444}
.print-copy-meta{font-size:13px;margin:0 0 8px}
.print-copy section{margin:10px 0;break-inside:avoid}
.print-copy h2{margin:0 0 4px;font-size:13px;color:#0b63ce;letter-spacing:.02em}
.print-copy p{margin:0;font-size:13px;line-height:1.6;white-space:pre-line}
.print-copy dl{display:grid;grid-template-columns:190px 1fr;gap:3px 12px;margin:0;font-size:13px}
.print-copy dt{font-weight:700;color:#333}
.print-copy dd{margin:0;white-space:pre-line}
.print-copy table{width:100%;border-collapse:collapse;font-size:12px}
.print-copy th,.print-copy td{border:1px solid #ccc;padding:5px 6px;text-align:left;vertical-align:top}
.print-copy th{background:#f2f2f2}
.print-copy-sign{margin-top:16px;padding-top:8px;border-top:1px solid #ccc;font-size:12px}
.print-copy-footer{margin-top:8px;font-size:11px;color:#444;font-style:italic}
dialog.print-choice{width:min(440px,94vw);padding:16px 18px}
.print-choice-options{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.print-choice-options label{display:flex;gap:8px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.print-choice-options label:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
/* Appointments board: doctors side by side, time down the side; five columns fit, more scroll sideways. */
.board-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0}
.board-toolbar>button{min-height:38px}
.board-toolbar input[type=search]{flex:1 1 200px;min-width:160px}
.board-toolbar #board-date{width:auto}
.board-next{margin-left:auto}
.board-chooser{position:relative}
.board-chooser>summary{list-style:none;cursor:pointer;padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface,#fff);white-space:nowrap}
.board-chooser>summary::after{content:' ▾'}
.board-chooser-menu{position:absolute;z-index:20;right:0;top:calc(100% + 6px);min-width:260px;max-height:340px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface,#fff);box-shadow:var(--card-shadow);display:grid;gap:6px}
.board-chooser-menu label{display:flex;align-items:center;gap:8px;font-size:13px;margin:0}
.board-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.board-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);margin-bottom:8px}
.board-key::before{content:'';display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-2px;border:1px solid var(--line)}
.board-key-free::before{background:#e7f5ec;border-color:#a9dbb9}
.board-key-booked::before{background:#eef0f3}
.board-key-off::before{background:repeating-linear-gradient(135deg,#eef0f3 0 3px,#fff 3px 6px)}
.board-key-selected::before{background:#0b63ce;border-color:#0b63ce}
.board-scroll{overflow:auto;max-height:620px;border:1px solid var(--line);border-radius:var(--radius-control)}
.board{display:grid;grid-template-columns:64px repeat(var(--board-columns),minmax(150px,1fr));gap:4px;padding:4px;min-width:100%}
.board.board-wide{grid-template-columns:64px repeat(var(--board-columns),max(150px,calc((100% - 64px - 24px) / 5)))}
.board-corner,.board .board-head{position:sticky;top:0;z-index:3;background:var(--surface,#fff)}
.board-corner{left:0;z-index:4;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--muted)}
.board .board-head{display:flex;gap:10px;align-items:center;text-align:left;padding:10px;border:1px solid var(--line);border-radius:var(--radius-control);min-height:auto}
.board .board-head.is-queue{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent)}
.board .board-avatar{flex:none;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;background:#e8f0fd;color:#0b4fa8}
.board .board-head-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.board .board-head-text strong{font-size:14px;line-height:1.25;overflow-wrap:anywhere}
.board .board-specialty{font-size:12px;color:var(--muted)}
.board .board-badge{align-self:flex-start;font-size:11px;padding:2px 8px;border-radius:var(--radius-capsule);margin-top:2px}
.board .board-badge-free{background:#e7f5ec;color:#1d6b3a}
.board .board-badge-full,.board .board-badge-unset{background:#eef0f3;color:#5b6472}
.board .board-badge-leave{background:#fdf1dc;color:#8a5a00}
.board-time{position:sticky;left:0;z-index:2;background:var(--surface,#fff);font-size:12px;color:var(--muted);display:flex;align-items:flex-start;justify-content:center;padding-top:8px;font-variant-numeric:tabular-nums}
.board .board-cell{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:6px 10px;border-radius:10px;border:1px solid transparent;font-size:12px;text-align:left;min-height:40px;white-space:pre-line;font-variant-numeric:tabular-nums}
.board .board-cell strong{font-size:13px}
.board .board-cell-time{font-weight:600}
.board .board-cell-meta{color:var(--muted);font-size:11px}
.board button.board-cell{cursor:pointer;width:100%;height:100%}
.board .board-free{background:#e7f5ec;color:#1d6b3a;border-color:#a9dbb9}
.board .board-free:hover{background:#d3eedd}
.board .board-free:disabled{cursor:default}
.board .board-selected{background:#0b63ce;color:#fff;border-color:#0b63ce;box-shadow:0 0 0 3px rgba(11,99,206,.25)}
.board .board-booked{background:#eef0f3;color:#2b3340;border-color:#d9dde3}
.board .board-booked:hover{border-color:#aab3c2}
.board .board-status-arrived,.board .board-status-ready{box-shadow:inset 3px 0 0 #1d6b3a}
.board .board-status-in_consultation{box-shadow:inset 3px 0 0 #0b63ce}
.board .board-off{background:repeating-linear-gradient(135deg,#f3f4f7 0 6px,#fafbfc 6px 12px);color:#8a92a0;border-color:#e3e6eb}
.board-empty{padding:24px;text-align:center;color:var(--muted)}
.board-side{position:sticky;top:12px;display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface,#fff)}
.board-side #booking-fields{display:grid;gap:10px}
.board-side #booking-fields label{display:grid;gap:6px}
.board-selection{display:grid;gap:3px;padding:12px;border-radius:var(--radius-control);background:#eef4fd}
.board-selection-label{font-size:12px;color:#0b4fa8}
.board-selection strong{font-size:15px}
.board-selection .link-button{justify-self:start;padding:0;min-height:auto;border:0;background:none;color:var(--accent);text-decoration:underline;font-size:13px}
.board-selection p{margin:0}
.board-side #board-confirm{width:100%;min-height:var(--target)}
.board-recheck{margin:-6px 0 0;font-size:12px;text-align:center}
@media (max-width:1100px){.board-layout{grid-template-columns:minmax(0,1fr)}.board-side{position:static}}
@media (max-width:700px){.board{grid-template-columns:56px repeat(var(--board-columns),minmax(78vw,1fr))}.board-next{margin-left:0}}
.dark .board .board-free{background:#16382a;color:#9fe0b8;border-color:#2d6a4a}
.dark .board .board-booked{background:#262c36;color:#d5dae3;border-color:#3a4250}
.dark .board .board-off{background:repeating-linear-gradient(135deg,#1f242c 0 6px,#232932 6px 12px);color:#8a93a3;border-color:#323945}
.dark .board .board-badge-free{background:#16382a;color:#9fe0b8}
.dark .board .board-badge-full,.dark .board .board-badge-unset{background:#262c36;color:#aab3c2}
.dark .board .board-badge-leave{background:#3a2e14;color:#f0c674}
.dark .board .board-avatar{background:#1d2c45;color:#9cc2f7}
.dark .board-selection{background:#1a2638}
.dark .board-corner,.dark .board .board-head,.dark .board-time,.dark .board-side,.dark .board-chooser>summary,.dark .board-chooser-menu{background:#1b2028}
.board-toolbar input,.board-side input,.board-side select{min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--surface,#fff);color:inherit;font:inherit;width:100%;box-sizing:border-box}
.board-toolbar #board-date{width:auto}
.board-side #booking-fields label{font-size:13px;font-weight:600}
.board-side #booking-patient-search{margin-bottom:6px}
.board-side #walk-in-actions{display:grid;gap:6px}
.board-side #walk-in-actions[hidden]{display:none}
.panel .board-side #walk-in{width:100%;border-radius:var(--radius-control)}
.board .board-cell{overflow:hidden}
.board-main{min-width:0}
/* Sheet headers: date with the doctor's name below it, on the right (preview, print and PDF match). */
.print-copy-when{text-align:right}
.print-copy-when p{margin:0;font-size:13px}
.rxp-when{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
.rxp-hpi{margin:0;white-space:pre-line}
/* No grey band under a short sheet: the preview is white to the bottom, and so is the printed page. */
dialog.sign-preview,dialog.report-preview{background:var(--surface,#fff)}
dialog.sign-preview .rxp-paper{border:0;box-shadow:none}
@media print{html,body{background:#fff!important;background-image:none!important}}
.board-chooser-menu label{align-items:flex-start}
.board-chooser-menu label input{margin-top:3px}
.board-chooser-name{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.board-chooser-name strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-chooser-name span{font-size:12px;color:var(--muted)}
.board-chooser-menu input[type=checkbox]{width:16px;height:16px;min-height:0;min-width:0;padding:0;flex:none;margin:3px 0 0}
/* Clinic letterhead (all clinic documents): logo left, clinic centred, document details right; navy and teal
   rules; the patient and date under them. Navy #14325C and teal #0E7C7B follow the clinic's logo. */
.letterhead{--lh-navy:#14325C;--lh-teal:#0E7C7B;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;margin:0 0 6px;color:#1d2433}
.letterhead .letterhead-logo{justify-self:start;min-width:0}
.letterhead .letterhead-logo img{display:block;height:78px;width:auto;max-width:150px;object-fit:contain}
.letterhead .letterhead-clinic{text-align:center;min-width:0}
.letterhead .letterhead-name{font-family:Georgia,'Times New Roman',serif;font-size:22px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--lh-navy);white-space:nowrap;margin:0;line-height:1.25}
.letterhead .letterhead-tagline{font-size:11px;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--lh-teal);white-space:nowrap;margin:3px 0 5px;line-height:1.3}
.letterhead .letterhead-line{font-size:11.5px;color:#5b6575;margin:0;line-height:1.45;white-space:normal}
.letterhead .letterhead-details{justify-self:end;text-align:right;display:flex;flex-direction:column;gap:1px;font-size:12px;color:#5b6575;min-width:0}
.letterhead .letterhead-lead{font-size:14px;color:var(--lh-navy)}
.letterhead .letterhead-rule{grid-column:1/-1;height:4px;border-top:3px solid var(--lh-navy);border-bottom:1px solid var(--lh-teal);margin-top:4px}
.letterhead-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;margin:6px 0 10px;color:#1d2433}
.letterhead-meta .letterhead-date{margin-left:auto;text-align:right;color:#5b6575}
/* Section headings on clinic documents take the letterhead's teal. */
.print-copy h2,.rxp-paper .rxp-part>h3{color:#0E7C7B}
@media print{.letterhead,.letterhead *{-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-report .letterhead .letterhead-name{font-size:22px;color:#14325C}.print-report .letterhead .letterhead-line{font-size:11.5px;color:#5b6575}.print-report .letterhead .letterhead-tagline{font-size:11px;color:#0E7C7B}}
@media (max-width:640px){.letterhead:not(.pdf-host .letterhead){grid-template-columns:1fr;justify-items:center;text-align:center}.letterhead:not(.pdf-host .letterhead) .letterhead-logo,.letterhead:not(.pdf-host .letterhead) .letterhead-details{justify-self:center;text-align:center}.letterhead:not(.pdf-host .letterhead) .letterhead-name{white-space:normal}}
/* The only mark left on a filled field: "Verify", for a value the recording was not sure of (amber, small). */
[data-ai]::after{color:#8a5a00!important;background:#fdf1dc;padding:0 6px!important;border-radius:999px;line-height:15px}
.dark [data-ai]::after,body.dark [data-ai]::after{color:#f0c674!important;background:#3a2e14}
.exam-ai{background:#fdf1dc!important;color:#8a5a00!important;cursor:pointer}
body.dark .exam-ai{background:#3a2e14!important;color:#f0c674!important}
.ai-suggest{border-color:var(--line)!important;background:color-mix(in srgb,#0b63ce 5%,var(--surface))!important}
.ai-suggest-label{color:#0b4fa8!important}
/* The AI assistance statement: one small line at the foot of a document AI helped draft. */
.print-copy-ai,.rxp-ai{font-size:11px;color:#5b6575;margin:4px 0 0;font-style:italic}
.verify-list{list-style:none;margin:8px 0 12px;padding:0;display:grid;gap:6px}
.verify-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid #f0d9a8;border-radius:10px;background:#fffaf0}
.verify-list li>span{flex:1 1 220px}
.verify-list li.is-done{border-color:var(--line);background:transparent;opacity:.75}

/* My Day at a glance: one sentence, the next patient, the token track and a few tiles.
   Colours: green fine, amber keep an eye on it, red act now, blue information. */
:root{--day-red:#b42318;--day-red-soft:#fdecea}
body.dark{--day-red:#f3a29b;--day-red-soft:#4a2522}
.my-day{display:grid;gap:18px;margin-bottom:22px}
.my-day[hidden]{display:none}
.day-say-main{font-size:22px;font-weight:650;letter-spacing:-.4px;color:var(--text);line-height:1.3}
.day-say-sub{font-size:14px;margin-top:4px}
.day-next{display:flex;align-items:center;gap:16px;padding:16px 18px;background:var(--surface);border:2px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:var(--radius-card);box-shadow:var(--card-shadow)}
.day-token-big{flex:0 0 auto;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}
.day-token-big .day-icon svg{width:26px;height:26px}
.day-next-who{flex:1;min-width:0;display:grid;gap:3px}
.day-next-who strong{font-size:18px;font-weight:650}
.day-next .primary{font-size:14px;min-height:46px;padding:12px 20px;white-space:nowrap}
.day-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.day-chip{display:inline-flex;align-items:center;font-size:12px;font-weight:600;padding:4px 10px;border-radius:var(--radius-capsule);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.day-good{background:var(--green-soft);color:var(--green)}
.day-watch{background:var(--amber-soft);color:var(--amber)}
.day-act{background:var(--day-red-soft);color:var(--day-red)}
.day-info{background:var(--accent-soft);color:var(--accent)}
.day-plain{background:var(--bg);color:var(--muted);border:1px solid var(--line)}
.day-muted{font-size:12px;color:var(--muted)}
.day-section{display:grid;gap:8px}
.day-section:empty{display:none}
.day-heading{font-size:13px;font-weight:650;color:var(--muted)}
.day-track{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.day-lane{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:10px;min-height:96px}
.day-lane-mine{border:2px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent-soft) 55%,var(--surface))}
.day-lane-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:650;color:var(--muted);margin-bottom:8px}
.day-lane-mine .day-lane-head{color:var(--accent)}
.day-lane-count{font-variant-numeric:tabular-nums;background:var(--bg);border-radius:var(--radius-capsule);padding:1px 8px}
.day-lane-tokens{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.day-lane-empty{color:var(--muted);font-size:12px}
.day-token,.day-key-token{width:36px;height:36px;border-radius:50%;display:inline-grid;place-items:center;font-size:13px;font-weight:650;background:var(--surface);color:var(--text);border:1.5px solid color-mix(in srgb,var(--text) 22%,transparent);padding:0;font-variant-numeric:tabular-nums}
.day-token:hover{background:var(--accent-soft)}
.day-token-time{border-radius:10px;width:auto;min-width:46px;padding:0 6px;font-size:11px;font-weight:600;color:var(--muted);border-style:dashed}
.day-token-late{border:2.5px solid var(--day-red);color:var(--day-red)}
.day-key{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:11px;color:var(--muted)}
.day-key-token{width:24px;height:24px;font-size:10px}
.day-key-token.day-token-time{width:auto;min-width:38px;height:24px}
.day-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.day-tile{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:16px}
.day-tile-text{flex:1;min-width:0;display:grid;gap:2px}
.day-tile-text strong{font-size:14px;font-weight:600}
.day-tile .secondary{min-height:36px;padding:8px 14px;white-space:nowrap}
.day-icon{display:inline-grid;place-items:center}
.day-icon svg{width:22px;height:22px}
.day-tile>.day-icon{flex:0 0 auto;width:38px;height:38px;border-radius:12px;background:var(--bg);color:var(--muted)}
.day-tile-good>.day-icon{background:var(--green-soft);color:var(--green)}
.day-tile-watch>.day-icon{background:var(--amber-soft);color:var(--amber)}
.day-tile-act>.day-icon{background:var(--day-red-soft);color:var(--day-red)}
.day-tile-info>.day-icon{background:var(--accent-soft);color:var(--accent)}
.day-tile-act{border-color:color-mix(in srgb,var(--day-red) 40%,var(--line))}
.pharmacy-day{margin-bottom:18px}
@media (max-width:860px){.day-track{grid-template-columns:repeat(2,minmax(0,1fr))}.day-lane:last-child{grid-column:1/-1}}
@media (max-width:560px){.day-next{flex-wrap:wrap}.day-next .primary{width:100%}.day-say-main{font-size:19px}}

/* Patients: rows that say who and what is happening today, filter chips, and the patient card with one timeline */
.dir-filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 22px 14px}
.dir-filters[hidden]{display:none}
.dir-filters .dir-filter,.directory .dir-filter{min-height:34px;padding:6px 14px;border-radius:var(--radius-capsule);font-size:13px;font-weight:600;background:var(--bg);color:var(--muted);border:1px solid var(--line)}
.dir-filters .dir-filter.is-on,.directory .dir-filter.is-on{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.directory li.dir-row{align-items:center;gap:14px}
.dir-avatar{flex:0 0 auto;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-size:14px;font-weight:650;background:var(--bg);color:var(--muted);text-transform:uppercase;font-variant-numeric:tabular-nums}
.dir-avatar-token{background:var(--accent-soft);color:var(--accent);font-size:16px}
.dir-who{flex:1;min-width:0;display:grid;gap:2px}
.dir-who strong{font-size:15px;font-weight:650}
.dir-who .day-chips{margin-top:4px;align-items:center}
.dir-when{margin-left:2px}
.directory li.dir-row.selected{background:var(--selection)}
.dir-empty{color:var(--muted);font-size:13px}
.profile-card{display:grid;gap:14px;margin-bottom:18px}
.profile-head{display:flex;align-items:center;gap:16px;padding:16px 18px;background:var(--surface);border:2px solid color-mix(in srgb,var(--accent) 50%,transparent);border-radius:var(--radius-card)}
.profile-avatar{width:60px;height:60px;font-size:20px}
.profile-who{flex:1;min-width:0;display:grid;gap:3px}
.profile-who strong{font-size:20px;font-weight:650}
.profile-head .primary{white-space:nowrap}
.profile-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.profile-tile{display:grid;gap:2px;padding:10px 14px;background:var(--bg);border-radius:14px}
.profile-tile strong{font-size:15px;font-weight:600}
.profile-missing{align-items:center}
.profile-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.profile-group{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.profile-group h4{font-size:12px;font-weight:650;color:var(--muted);margin:0 0 6px}
.profile-group dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:13px}
.profile-group dt{color:var(--muted)}
.profile-group dd{margin:0;overflow-wrap:anywhere}
.patient-timeline{display:grid;gap:8px;margin:6px 0 18px}
.patient-timeline .dir-filters{margin:0}
.timeline-list{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line);display:grid;gap:4px}
.timeline-item{position:relative;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0 8px 6px}
.timeline-item::before{content:"";position:absolute;left:-22px;top:15px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--muted)}
.timeline-visit::before{border-color:var(--accent)}
.timeline-bill::before{border-color:var(--amber)}
.timeline-report::before{border-color:var(--green)}
.timeline-text{flex:1 1 240px;min-width:0;display:grid;gap:2px}
.timeline-text strong{font-size:14px;font-weight:600}
.timeline-actions{display:flex;gap:6px;flex-wrap:wrap}
.timeline-actions .secondary{min-height:34px;padding:6px 12px}
.timeline-empty{padding:6px 0}
@media (max-width:560px){.profile-head{flex-wrap:wrap}.profile-head .primary{width:100%}.dir-filters{margin:0 12px 12px}}
.directory li.dir-row>.dir-avatar{flex:0 0 42px}
.registration .profile-card,.registration .patient-timeline{padding:0 25px}
/* The doctor's Health Summary on the patient card */
.health-summary{display:grid;gap:10px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--day-red) 25%,var(--line));border-radius:var(--radius-card);background:var(--surface)}
.health-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.health-head h4{font-size:15px;font-weight:650;margin:0}
.health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}
.health-box{display:grid;gap:6px;align-content:start;padding:10px 12px;border-radius:14px;background:var(--bg);font-size:13px}
.health-box h5{font-size:12px;font-weight:650;color:var(--muted);margin:0}
.health-list{margin:0;padding-left:18px;display:grid;gap:2px}
.health-trend{display:flex;align-items:flex-end;gap:6px;height:50px}
.health-bar{width:16px;border-radius:4px 4px 0 0;background:var(--green)}
.health-bar.is-high{background:var(--day-red)}
.health-high{color:var(--day-red);font-weight:600;font-size:12px}
.health-locked{padding:10px 14px;border:1px dashed var(--line);border-radius:14px}
/* Charges and billing settings (Clinic Admin) */
.charge-add{margin:10px 0 14px;border:1px solid var(--line);border-radius:14px;padding:10px 14px;background:var(--surface)}
.charge-add summary{cursor:pointer;font-weight:600;color:var(--accent)}
.charge-form{display:grid;gap:8px;margin:10px 0}
.charge-editor{width:min(760px,94vw)}
.fee-collection{border:1px solid var(--line);border-radius:14px;padding:8px 14px;margin:10px 0;display:flex;flex-wrap:wrap;gap:6px 18px}
.fee-collection legend{font-size:12px;font-weight:650;color:var(--muted);padding:0 4px}
.bill-title{text-align:center;font-weight:700;letter-spacing:.6px;font-size:15px;margin:8px 0 2px}
.bill-gstin{text-align:center;font-size:12px;margin:0 0 6px}
.bill-words{font-weight:600;margin-top:6px}
.bill-signatory{text-align:right;white-space:pre-line;margin-top:18px}
/* What a visit is billed for (doctor during the visit, reception in the Patient Brief) */
.visit-services{display:grid;gap:8px;margin:14px 0;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.visit-services h3{font-size:14px;margin:0}
.visit-charge-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.visit-charge{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line)}
.visit-charge>span:first-child{flex:1 1 200px;font-weight:600}
.visit-charge-amount{font-variant-numeric:tabular-nums}
.visit-charge.is-billed{opacity:.7}
.visit-charge-free{color:var(--green);font-weight:600}
.visit-charge-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.visit-charge-add select{flex:1 1 220px;min-height:38px}
.visit-charge-add input{width:70px;min-height:38px}
/* Dispensing: amount given (pre-filled with the prescribed amount), bill as, optional reason */
.dispense-line{display:grid;gap:6px;min-width:180px}
.dispense-line select,.dispense-line input{min-height:36px}
.dispense-note[hidden]{display:none}
/* Orders: the clinic's work by patient (tick, bill as, optional comment, Sample Collected / Done) */
.order-card{display:grid;gap:6px;margin:12px 0;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.order-card h3{font-size:15px;margin:0 0 4px}
.order-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.order-test{flex:1 1 240px;font-weight:600}
.order-line select{min-height:34px;max-width:280px}
.order-line input[type=text]{min-height:34px;flex:1 1 180px}
.orders-collected{background:var(--accent-soft);color:var(--accent)}
.history-card{margin:12px 0;padding:14px 16px;border:1px solid var(--border,rgba(15,23,42,.1));border-radius:14px;background:var(--surface,#fff)}
.history-card .care-table{margin-top:8px}
.history-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.history-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center}
.history-actions input{flex:1 1 200px}
.chip{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.chip-ok{background:var(--green-soft,#e7f7ee);color:var(--green,#15803d)}
.chip-info{background:var(--accent-soft,#e9f2ff);color:var(--accent,#2563eb)}
.chip-warn{background:var(--amber-soft,#fff4e0);color:var(--amber,#b45309)}
.chip-muted{background:rgba(100,116,139,.12);color:var(--muted,#64748b)}
.preview-impact{margin:6px 0 12px;padding-left:20px}
.preview-impact li{margin:4px 0}
.includes-editor{margin-top:12px}
.include-row{display:flex;gap:8px;align-items:center;margin:6px 0}
.include-row select{flex:1 1 auto}
.include-row input{width:80px}
.dash-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:12px}
.dash-custom{display:inline-flex;gap:6px;align-items:center}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:12px 0}
.dash-tile{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--border,rgba(15,23,42,.1));border-radius:14px;background:var(--surface,#fff)}
.dash-tile-head{display:flex;justify-content:space-between;align-items:center}
.dash-label{font-size:13px;color:var(--muted,#64748b)}
.dash-value{font-size:24px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
.dash-info{border:0;background:transparent;cursor:pointer;color:var(--muted,#64748b);font-size:14px;padding:2px 4px}
.dash-formula{font-size:12px;color:var(--muted,#64748b);margin:0}
.dash-tile .chip{align-self:flex-start}
.dash-alerts{list-style:none;padding:0;margin:8px 0;display:grid;gap:6px}
.dash-alert{padding:8px 12px;border-radius:10px;font-size:13px;background:var(--amber-soft,#fff4e0);color:var(--amber,#9a3412)}
.dash-alert.dash-bad{background:rgba(220,38,38,.1);color:#b91c1c}
.dash-section .care-table{margin-bottom:10px}

/* Day Close: the summary tiles (Billing page). */
.day-close-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin:10px 0}
.day-close-summary .tile{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border:1px solid var(--line);border-radius:10px}
.day-close-summary .tile strong{font-size:1.05rem}
#day-close .table-wrap{overflow-x:auto}
