/* Self-hosted webfonts (not Google Fonts CDN) — the CDN can be slow or
   blocked on some hospital/ISP networks, which silently falls back to plain
   system fonts with no error. Hosting the files ourselves guarantees they
   load, and it's what actually fixes that "plain text" look reliably. */
@font-face{
  font-family:'Libre Franklin';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/libre-franklin-latin-600-normal.woff2') format('woff2');
}
@font-face{
  font-family:'Libre Franklin';font-style:normal;font-weight:700;font-display:swap;
  src:url('fonts/libre-franklin-latin-700-normal.woff2') format('woff2');
}
@font-face{
  font-family:'Libre Franklin';font-style:normal;font-weight:800;font-display:swap;
  src:url('fonts/libre-franklin-latin-800-normal.woff2') format('woff2');
}
@font-face{
  font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2');
}
@font-face{
  font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/ibm-plex-sans-latin-500-normal.woff2') format('woff2');
}
@font-face{
  font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/ibm-plex-sans-latin-600-normal.woff2') format('woff2');
}

:root{
  --navy:#0f2a52;
  --navy-dark:#081a35;
  --navy-tint:#eef2f9;
  --gold:#c1922c;
  --gold-pale:#ffd670;
  --paper:#f4f6f9;
  --card:#ffffff;
  --line:#dbe1ea;
  --ink:#1c2938;
  --muted:#5b6b7f;
  --accent:#2454c7;
  --good:#16794f;
  --warn:#b45309;
  --bad:#b91c1c;
  --font-head:"Libre Franklin",Georgia,"Segoe UI",Tahoma,Arial,sans-serif;
  --font-body:"IBM Plex Sans","Segoe UI",Tahoma,Arial,sans-serif;
  --shadow-card:0 1px 2px rgba(8,26,53,.06), 0 10px 24px -14px rgba(8,26,53,.28);
  font-size:15px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:var(--font-body);
  background:var(--paper);
  color:var(--ink);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;}
input[type="checkbox"],input[type="radio"]{accent-color:var(--accent);}
/* Safety net so every heading gets the deliberate display typeface even
   outside .pagehead h1 / .card h2 (which still override size below) — no
   heading anywhere should fall back to plain inherited body text. */
h1,h2,h3,h4{
  font-family:var(--font-head);
  font-weight:700;
  line-height:1.3;
  color:var(--navy-dark);
  margin:0 0 10px;
}
p{line-height:1.55;}
a{color:var(--accent);text-decoration:none;}
a:hover{text-decoration:underline;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;}
}

/* ---------- Start / login screen ---------- */
#root.login-screen{
  min-height:100vh;
  display:flex;flex-direction:column;
  background:
    radial-gradient(circle at 18px 18px, rgba(255,255,255,.05) 1px, transparent 1.6px) 0 0/36px 36px,
    linear-gradient(160deg,var(--navy-dark),var(--navy) 62%,#12356b);
}
.login-wrap{width:100%;flex:1;display:flex;align-items:center;justify-content:center;padding:20px;}
.login-card{
  background:#fff;
  border-radius:16px;
  border-top:4px solid var(--gold);
  padding:36px 36px 30px;
  width:378px;max-width:100%;
  box-shadow:0 30px 70px -20px rgba(3,12,28,.55);
  display:flex;flex-direction:column;align-items:center;
  animation:login-card-in .5s cubic-bezier(.16,1,.3,1) both;
}
@keyframes login-card-in{
  from{opacity:0;transform:translateY(14px) scale(.98);}
  to{opacity:1;transform:translateY(0) scale(1);}
}
.login-logo{height:72px;margin-bottom:16px;}
.login-title{
  font-family:var(--font-head);
  font-size:17px;font-weight:800;letter-spacing:.005em;
  color:var(--navy-dark);text-align:center;line-height:1.35;
}
.login-title-rule{width:40px;height:3px;border-radius:2px;margin:12px 0 0;background:linear-gradient(90deg,var(--gold),var(--gold-pale));}
.login-sub{font-size:12.5px;color:var(--muted);margin:10px 0 20px;text-align:center;}
.login-card .field{width:100%;}
.login-card input{width:100%;}
.login-card button{width:100%;margin-top:8px;padding:12px;font-size:14px;}
.login-error{
  width:100%;background:#fbe9e9;color:var(--bad);border-radius:8px;padding:10px 13px;font-size:12.5px;margin-bottom:14px;
  border-left:3px solid var(--bad);
}
.session-info{font-size:11px;color:#9db3d6;display:flex;flex-direction:column;gap:6px;margin-bottom:8px;}
.session-info button{padding:4px 8px;font-size:11px;}
.role-select-card{width:432px;}
.role-tile-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;margin-top:8px;
}
.role-tile{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:22px 10px 18px;border:1px solid var(--line);border-radius:14px;background:#fbfcff;
  font-family:inherit;cursor:pointer;
  transition:border-color .15s ease, background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.role-tile:hover{border-color:var(--gold);background:#fffdf6;transform:translateY(-2px);box-shadow:0 10px 22px -12px rgba(8,26,53,.35);}
.role-tile-icon{
  font-size:22px;line-height:1;
  width:44px;height:44px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--navy-tint);
}
.role-tile:hover .role-tile-icon{background:linear-gradient(135deg,var(--gold-pale),var(--gold));}
.role-tile-label{font-family:var(--font-head);font-size:13.5px;font-weight:700;color:var(--navy-dark);}
.login-other-link{
  display:block;margin-top:18px;font-size:12px;color:var(--accent);text-align:center;text-decoration:none;width:100%;
}
.login-other-link:hover{text-decoration:underline;}

.app{
  display:flex;
  flex-direction:column;
  min-height:100vh;
}
/* Sidebar is now a horizontal, swipeable top tab bar at every screen width —
   brand row, then a horizontally scrolling nav strip with a sliding active
   indicator, then a compact account row. See the min-width:700px block below
   for the extra breathing room desktop/tablet widths can afford. */
.sidebar{
  width:100%;
  background:var(--navy-dark);
  color:#eaf0fb;
  flex-shrink:0;
  padding:0;
  display:flex;
  flex-direction:column;
  position:sticky;
  top:0;
  z-index:40;
  box-shadow:0 2px 10px rgba(0,0,0,.18);
}
.brand{
  padding:10px 16px 8px;
  border-bottom:none;
  margin-bottom:0;
  display:flex;
  align-items:center;
  gap:10px;
}
.brand-logo-wrap{
  height:32px;width:32px;flex-shrink:0;
  border-radius:8px;
  background:#fff;
  display:flex;align-items:center;justify-content:center;
  padding:3px;
  box-shadow:0 1px 3px rgba(0,0,0,.25);
}
.brand-logo{max-height:100%;max-width:100%;object-fit:contain;display:block;}
.brand-text{min-width:0;}
.brand-title{font-family:var(--font-head);font-weight:700;font-size:15px;line-height:1.3;}
.brand-sub{font-size:11.5px;color:#9db3d6;margin-top:4px;display:none;}
.navlist{
  display:flex;
  flex-direction:row;
  position:relative;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  -ms-overflow-style:none;
  border-top:1px solid rgba(255,255,255,.12);
  border-bottom:1px solid rgba(255,255,255,.12);
  cursor:grab;
}
.navlist.dragging{cursor:grabbing;user-select:none;}
.navlist.dragging .navitem{pointer-events:none;}
.navlist::-webkit-scrollbar{display:none;}
.navitem{
  flex:0 0 auto;
  white-space:nowrap;
  padding:13px 16px;
  cursor:pointer;
  font-family:var(--font-head);
  font-size:13.5px;
  color:#c7d4ea;
  border-left:none;
  border-bottom:3px solid transparent;
  user-select:none;
  scroll-snap-align:start;
}
.navitem:hover{background:rgba(255,255,255,.06);}
.navitem.active{
  background:rgba(255,255,255,.1);
  color:#fff;
  border-bottom-color:transparent; /* the sliding .nav-indicator draws the underline instead */
  font-weight:600;
}
.nav-indicator{
  display:block;
  position:absolute;
  left:0;
  bottom:-1px;
  height:3px;
  background:linear-gradient(90deg,var(--gold),var(--gold-pale));
  border-radius:3px 3px 0 0;
  pointer-events:none;
  transition:left .28s cubic-bezier(.4,0,.2,1), width .28s cubic-bezier(.4,0,.2,1);
}
.sidebar-foot{
  margin-top:0;
  padding:8px 16px;
  font-size:10.5px;
  color:#6f84a8;
  border-top:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.session-info{
  flex-direction:row;
  align-items:center;
  gap:10px;
  margin-bottom:0;
  flex:1;
  min-width:0;
}
.sidebar-user{min-width:0;flex:1;}
.sidebar-user > div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.main{flex:1;padding:16px 14px 50px;}

/* Persistent copyright/credit footer — the app shell appends this after
   .main on every tab (render() runs it for every navigation), and the login
   screen gets a dark-background variant, so the same line is present on
   every page instead of only inside the sidebar's account row. */
.app-footer{
  padding:16px 16px 22px;
  text-align:center;
  border-top:1px solid var(--line);
  background:var(--card);
}
.app-footer-copyright{font-size:11px;color:var(--muted);}
.app-footer-credit{
  font-family:var(--font-head);
  font-size:12.5px;font-weight:700;letter-spacing:.01em;
  color:var(--navy-dark);
  margin-top:3px;
}
.login-footer{padding:18px 20px 24px;text-align:center;}
.login-footer .app-footer-copyright{color:#9db3d6;}
.login-footer .app-footer-credit{color:var(--accent);text-shadow:0 1px 3px rgba(0,0,0,.35);}

/* Tablet/desktop widths keep the same horizontal sliding-tab nav, just with
   more breathing room and the branding text that narrow phones hide. */
@media(min-width:700px){
  .brand{padding:14px 22px 12px;gap:12px;}
  .brand-logo-wrap{height:40px;width:40px;border-radius:9px;}
  .brand-title{font-size:16px;}
  .brand-sub{display:block;}
  .navitem{padding:14px 20px;}
  .sidebar-foot{padding:10px 22px;}
  .main{padding:26px 34px 60px;max-width:1180px;}
}

#splash{
  position:fixed;inset:0;z-index:999;
  background:#ffffff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:var(--navy-dark);transition:opacity .35s ease;
}
#splash .splash-logos{display:flex;align-items:center;gap:26px;margin-bottom:20px;}
#splash .splash-logos img{height:130px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.15));}
#splash .splash-title{font-family:var(--font-head);font-size:22px;font-weight:700;letter-spacing:.02em;text-align:center;padding:0 20px;color:var(--navy-dark);}
#splash .splash-sub{font-size:12.5px;color:var(--muted);margin-top:8px;letter-spacing:.08em;text-transform:uppercase;}
#splash .splash-footer{
  position:absolute;bottom:26px;
  font-family:var(--font-head);
  font-size:16px;font-weight:800;letter-spacing:.02em;
  color:var(--navy);
}
.pagehead{margin-bottom:26px;}
.pagehead h1{
  font-family:var(--font-head);
  font-size:21px;font-weight:800;letter-spacing:.002em;
  margin:0 0 9px;color:var(--navy-dark);
  padding-bottom:11px;
  border-bottom:1px solid var(--line);
  position:relative;
}
.pagehead h1::after{
  content:"";position:absolute;left:0;bottom:-1px;width:38px;height:3px;border-radius:2px;
  background:linear-gradient(90deg,var(--navy),var(--gold));
}
.pagehead p{margin:9px 0 0;color:var(--muted);font-size:13px;}
.card{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:12px;
  padding:20px 22px;
  margin-bottom:18px;
  box-shadow:var(--shadow-card);
}
.card h2{
  font-family:var(--font-head);
  font-size:14.5px;font-weight:700;
  margin:0 0 14px;color:var(--navy-dark);
}
.row{display:flex;gap:12px;flex-wrap:wrap;}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;}
.field label{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;}
.field input, .field select{
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:7px;
  font-size:13.5px;
  min-width:160px;
  background:#fff;
  color:var(--ink);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.field input:focus, .field select:focus{
  outline:none;
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(36,84,199,.15);
}
button{
  font-family:var(--font-head);
  font-size:13px;
  font-weight:600;
  border-radius:8px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--navy-dark);
  padding:9px 16px;
  cursor:pointer;
  transition:background .15s ease, border-color .15s ease, transform .12s ease, box-shadow .15s ease;
}
button:hover{background:#eef2f8;}
button.primary{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:0 1px 2px rgba(8,26,53,.15);}
button.primary:hover{background:var(--navy-dark);transform:translateY(-1px);box-shadow:0 6px 14px -6px rgba(8,26,53,.45);}
button.primary:active{transform:translateY(0);}
button.ghost{border-color:transparent;background:transparent;color:var(--accent);padding:6px 8px;}
button.ghost:hover{background:rgba(36,84,199,.08);}
button.danger{color:var(--bad);border-color:#eecdcd;}
button.danger:hover{background:#fdf1f1;}
button:disabled{opacity:.45;cursor:not-allowed;transform:none !important;box-shadow:none !important;}
table.grid{
  width:100%;
  border-collapse:collapse;
  font-size:13px;
  /* Wide tables (Users, Security events, Medicine Records, etc.) scroll
     horizontally within their own box on narrow screens instead of
     forcing the whole page sideways — this is what actually makes those
     admin screens usable on a phone. Rows/cells keep their normal table
     layout; only the outer <table> box becomes a scroll container. */
  display:block;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  max-width:100%;
}
/* For a table that also carries its own min-width (so its columns never
   get too cramped to read, e.g. security-event-table) that min-width
   would win over the max-width above and push past its container —
   wrap it in this instead of relying on the table's own overflow. */
.table-scroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;}
table.grid th{
  text-align:left;
  font-size:10.5px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--navy-dark);
  background:var(--navy-tint);
  border-bottom:1px solid var(--line);
  padding:9px 10px;
}
table.grid th:first-child{border-radius:6px 0 0 0;}
table.grid th:last-child{border-radius:0 6px 0 0;}
table.grid td{padding:9px 10px;border-bottom:1px solid #eef1f6;}
table.grid tr:hover td{background:#f7f9fc;}
table.grid tr.family-start td{border-top:2px solid var(--line);}
.patient-name-link{color:var(--accent);font-weight:600;text-decoration:none;}
.patient-name-link:hover{text-decoration:underline;}
.badge{display:inline-block;padding:2px 9px;border-radius:100px;font-size:11px;font-weight:700;letter-spacing:.01em;}
.badge.ok{background:#e5f6ee;color:var(--good);}
.badge.warn{background:#fdf1e3;color:var(--warn);}
.badge.bad{background:#fbe9e9;color:var(--bad);}
.drop{
  border:2px dashed var(--line);
  border-radius:10px;
  padding:36px 20px;
  text-align:center;
  color:var(--muted);
  background:#fafcff;
  cursor:pointer;
}
.drop.drag{border-color:var(--accent);background:#eef4ff;}
.drop input{display:none;}
.small{font-size:12px;color:var(--muted);}
.tag{
  display:inline-flex;align-items:center;gap:5px;
  background:#eef2f8;border-radius:6px;padding:3px 9px;font-size:12px;color:var(--navy-dark);
}
.samplelist{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
.samplerow{
  display:flex;align-items:center;justify-content:space-between;
  border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:#fff;
}
.samplerow.active{border-color:var(--accent);box-shadow:0 0 0 2px rgba(37,99,235,.15);}
.samplerow .who{font-weight:600;font-size:13.5px;}
.samplerow .meta{font-size:11.5px;color:var(--muted);}
.editor-panel{
  border:1px solid var(--accent);
  border-radius:8px;
  background:#f7faff;
  padding:16px;
  margin:-2px 0 6px;
}
.typegrid{display:grid;grid-template-columns:repeat(auto-fill, minmax(180px,1fr));gap:10px;}
.typebtn{
  padding:16px 14px;text-align:left;font-size:13.5px;font-weight:700;
  border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--navy-dark);
}
.typebtn:hover{border-color:var(--accent);background:#f2f7ff;}
.toolbar{display:flex;gap:10px;margin:14px 0;flex-wrap:wrap;align-items:center;}
.searchbox{flex:1;min-width:180px;}
.searchbox input{width:100%;}
.modal-backdrop{
  position:fixed;inset:0;background:rgba(10,18,32,.45);
  display:flex;align-items:center;justify-content:center;z-index:50;
}
.modal{
  background:#fff;border-radius:12px;padding:22px 24px;width:420px;max-width:92vw;
  box-shadow:0 20px 60px rgba(0,0,0,.25);
}
.modal.wide{width:1080px;}
.modal h3{margin:0 0 14px;font-size:15px;}
.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;}
.family-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:4px;}
.family-rows-head{
  display:grid;grid-template-columns:78px 105px 1.2fr 150px 85px 90px .9fr 1fr 70px;gap:8px;
  font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:0 2px;margin-bottom:4px;
  min-width:760px;
}
.family-rows{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;margin-bottom:10px;min-width:760px;}
.family-row{
  display:grid;grid-template-columns:78px 105px 1.2fr 150px 85px 90px .9fr 1fr 70px;gap:8px;align-items:center;
}
.family-row select, .family-row input{
  padding:7px 8px;border:1px solid var(--line);border-radius:6px;font-size:12.5px;width:100%;
}
.family-row-dob{display:flex;flex-direction:column;gap:2px;}
.family-row-dob input{width:100%;}
.family-row-dob span{font-size:10.5px;color:var(--muted);}
.hint{font-size:12px;color:var(--muted);margin-top:6px;}
.queue-dept-list{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}
.queue-dept-chip{display:flex;align-items:center;gap:8px;padding:5px 6px 5px 12px;background:#f5f7fb;border:1px solid var(--line);border-radius:100px;font-size:13px;font-weight:600;color:var(--navy-dark);}
.queue-dept-chip button{font-size:11px;padding:3px 9px;}
.unmapped{
  background:#fdf1e3;border:1px solid #f3d9ad;border-radius:8px;padding:12px 14px;margin-top:10px;font-size:12.5px;
}
.patientpicker{position:relative;display:inline-block;min-width:260px;margin:6px 8px 6px 0;vertical-align:top;}
.patientpicker input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:6px;font-size:13px;}
.picker-results{
  position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;
  background:#fff;border:1px solid var(--line);border-radius:8px;
  box-shadow:0 8px 22px rgba(20,30,50,.15);max-height:220px;overflow-y:auto;
}
.picker-row{padding:8px 12px;font-size:13px;cursor:pointer;}
.picker-results-static{margin-top:10px;max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;}
.picker-row-static{padding:9px 12px;font-size:13px;cursor:pointer;border-bottom:1px solid #eef1f6;}
.picker-row-static:hover{background:#eef4ff;}
.picker-row-static:last-child{border-bottom:none;}
.picker-row:hover{background:#eef4ff;}
.picker-empty{padding:8px 12px;font-size:12.5px;color:var(--muted);}

.selected-patient-box{
  margin-top:12px;padding:12px 16px;background:linear-gradient(135deg,#eef4ff,#f7faff);
  border:1px solid #d7e3fb;border-radius:10px;
}
.selected-patient-name{font-family:var(--font-head);font-size:22px;font-weight:800;color:var(--navy-dark);line-height:1.2;}
.selected-patient-sub{margin-top:4px;}

.bed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:10px;}
.bed-tile{
  border-radius:9px;padding:14px 8px;text-align:center;cursor:pointer;border:1px solid rgba(0,0,0,.08);
  color:#fff;font-size:12px;
}
.bed-tile .bed-number{font-weight:800;font-size:15px;}
.bed-tile .bed-status-label{font-size:10.5px;margin-top:4px;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bed-vacant{background:#9aa5b1;}
.bed-mild{background:#16794f;}
.bed-moderate{background:#fde68a;color:#713f12;}
.bed-severe{background:#b91c1c;}

.rx-item-row{
  display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid #eef1f6;flex-wrap:wrap;
}
.rx-item-name{font-weight:600;font-size:13px;min-width:180px;}
.rx-item-dose{display:flex;align-items:center;gap:4px;font-size:11.5px;}
.rx-item-dose input{width:44px;}
.rx-item-dur{display:flex;gap:4px;align-items:center;}
.rx-item-dur input{width:55px;}
.rx-item-meal{display:flex;gap:10px;font-size:11.5px;}
.rx-item-meal label{display:flex;align-items:center;gap:3px;}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;}

/* ---------- Report sheet (letterhead) ---------- */
.sheet-wrap{background:#e8ecf3;padding:22px;border-radius:10px;overflow:auto;}
.sheet{
  width:794px;
  min-height:1000px;
  background:#fff;
  margin:0 auto;
  padding:34px 42px 50px;
  box-shadow:0 2px 10px rgba(0,0,0,.12);
  font-family:"Times New Roman",Georgia,serif;
  color:#000;
}
.sheet-header{
  display:flex;align-items:center;justify-content:center;gap:18px;
  border-bottom:2px solid #000;padding-bottom:10px;margin-bottom:14px;
}
.sheet-header img{height:64px;}
.sheet-header .htext{text-align:center;}
.sheet-header .htext .h1{font-size:25px;font-weight:800;letter-spacing:.02em;}
.sheet-header .htext .h2{font-size:17px;font-weight:600;margin-top:4px;}
.sheet-patient{
  display:grid;grid-template-columns:1fr 1fr;gap:2px 24px;font-size:13px;margin-bottom:10px;
}
.sheet-patient .pf{display:flex;gap:6px;}
.sheet-patient .pf b{font-weight:700;}
.sheet-patient input, .sheet-patient select{
  font-family:inherit;font-size:13px;border:none;border-bottom:1px dotted #888;background:transparent;
  padding:0 2px;min-width:110px;
}
.sheet-title{
  text-align:center;font-weight:700;font-size:15px;margin:12px 0 2px;letter-spacing:.03em;
}
.sheet-note{text-align:center;font-size:11.5px;font-style:italic;margin-bottom:10px;}
.sheet table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:4px;}
.sheet table th{
  border:1px solid #000;padding:5px 8px;background:#eef1f6;font-weight:700;text-align:left;
}
.sheet table td{border:1px solid #000;padding:5px 8px;}
.sheet .section-row td{background:#f4f4f4;font-weight:700;font-style:italic;}
.sheet .result-input{
  width:90px;border:none;border-bottom:1px solid #999;font-family:inherit;font-size:12.5px;background:transparent;
  padding:1px 2px;
}
.sheet .arrow{font-weight:700;margin-left:4px;}
.sheet table.summary-table{font-size:10.5px;}
.sheet table.summary-table th, .sheet table.summary-table td{padding:4px 6px;}
.sheet table.summary-table td.summary-results{max-width:260px;}
.sheet .arrow.up{color:#b91c1c;}
.sheet .arrow.down{color:#1d4ed8;}
.sheet-footer{margin-top:90px;display:flex;justify-content:space-between;font-size:13px;padding:0 10px;}
.sheet-footer .sig{text-align:center;}
.sheet-footer .line{margin-bottom:2px;}

@media print{
  body *{visibility:hidden;}
  .sheet-wrap, .sheet-wrap *{visibility:visible;}
  .sheet-wrap{position:absolute;left:0;top:0;padding:0;background:#fff;border-radius:0;}
  .sheet{box-shadow:none;margin:0;width:210mm;min-height:297mm;padding:14mm 16mm;}
  .rx-wrap, .rx-wrap *{visibility:visible;}
  .rx-wrap{position:absolute;left:0;top:0;padding:0;background:#fff;border-radius:0;}
  .rx-sheet{box-shadow:none;margin:0;width:148mm;min-height:210mm;padding:10mm 12mm;page:rxpage;}
  @page{size:A4;margin:0;}
  @page rxpage{size:148mm 210mm;margin:0;}
}

/* ---------- Prescription (professional letterhead pad) ---------- */
.rx-wrap{background:#e8ecf3;padding:22px;border-radius:10px;overflow:auto;}
.rx-sheet{
  position:relative;
  width:440px;
  max-width:100%;
  min-height:600px;
  background:#fff;
  margin:0 auto;
  padding:20px 24px 0;
  box-shadow:0 2px 10px rgba(0,0,0,.12);
  font-family:var(--font-body);
  color:#1a1a2e;
  display:flex;flex-direction:column;
  border:1px solid var(--line);
  box-sizing:border-box;
}
.rx-watermark{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  pointer-events:none;overflow:hidden;z-index:0;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;
}
.rx-watermark img{width:260px;opacity:.05;}
.rx-head, .rx-rule, .rx-refrow, .rx-patient-bar, .rx-vitals, .rx-body, .rx-tests, .rx-footer, .rx-bottom-strip{position:relative;z-index:1;}
.rx-head{display:flex;align-items:center;justify-content:center;gap:14px;}
.rx-logo{height:44px;}
.rx-head-text{text-align:center;}
.rx-hospital{font-size:19px;font-weight:800;color:var(--navy-dark);letter-spacing:.01em;}
.rx-sub{font-size:11px;color:var(--muted);margin-top:1px;text-transform:uppercase;letter-spacing:.08em;}
.rx-doctitle{font-size:10.5px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.14em;margin-top:4px;}
.rx-rule{height:2px;background:linear-gradient(90deg,var(--navy-dark),var(--accent));margin:10px 0;border-radius:2px;}
.rx-refrow{display:flex;justify-content:space-between;font-size:10.5px;color:var(--muted);font-weight:600;letter-spacing:.02em;margin-bottom:10px;}
.rx-barcode-wrap{display:flex;justify-content:center;margin-bottom:10px;}
.rx-barcode-wrap svg{max-width:100%;}
.rx-patient-bar{background:#f5f7fb;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px;}
.rx-patient-name-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.rx-patient-name{font-size:18px;font-weight:800;color:var(--navy-dark);line-height:1.15;}
.rx-badge{display:inline-block;padding:2px 10px;border-radius:100px;font-size:10.5px;font-weight:700;white-space:nowrap;}
.rx-badge.ok{background:#e5f6ee;color:var(--good);}
.rx-badge.bad{background:#fbe9e9;color:var(--bad);}
.rx-info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 10px;margin-top:8px;}
.rx-info-field{display:flex;flex-direction:column;gap:1px;}
.rx-info-label{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;}
.rx-info-field b{font-size:12px;color:#1a1a2e;font-weight:700;}
.rx-vitals{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
.rx-vital-chip{font-size:10.5px;color:#444;padding:3px 9px;background:#f5f7fb;border:1px solid var(--line);border-radius:100px;}
.rx-vital-chip b{color:var(--navy-dark);}
.rx-body{display:flex;gap:12px;flex:1;align-items:flex-start;}
.rx-symbol-badge{
  width:34px;height:34px;border-radius:8px;border:1.5px solid var(--navy-dark);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;
}
.rx-symbol-badge span{font-size:20px;font-family:Georgia,serif;color:var(--navy-dark);line-height:1;}
.rx-meds-table{width:100%;border-collapse:collapse;font-size:11.5px;table-layout:fixed;}
.rx-meds-table th:first-child, .rx-meds-table td:first-child{width:18px;}
.rx-meds-table th:nth-child(3), .rx-meds-table td:nth-child(3){width:36px;}
.rx-meds-table td:nth-child(3){white-space:nowrap;}
.rx-meds-table th:nth-child(4), .rx-meds-table td:nth-child(4){width:58px;}
.rx-meds-table td:nth-child(4){white-space:nowrap;}
.rx-meds-table th:nth-child(5), .rx-meds-table td:nth-child(5){width:62px;}
.rx-meds-table th{
  text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);
  padding:0 4px 6px;border-bottom:1.5px solid var(--navy-dark);font-weight:700;line-height:1.25;
}
.rx-meds-table td{padding:7px 4px;border-bottom:1px dashed var(--line);vertical-align:top;word-break:break-word;}
.rx-meds-table tr:last-child td{border-bottom:none;}
.rx-med-name-cell{font-weight:700;color:#1a1a2e;}
.rx-nostock-flag{display:inline-block;margin-left:7px;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#b91c1c;border:1px solid #b91c1c;border-radius:4px;padding:1px 5px;vertical-align:middle;}
.rx-continuous-legend{font-size:9.5px;color:var(--muted);margin-top:6px;font-style:italic;}
.rx-tests{font-size:11.5px;margin:14px 0;padding:8px 12px;background:#f5f7fb;border:1px solid var(--line);border-radius:8px;}
.rx-tests b{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);}
.rx-tests > div{margin-top:3px;color:#1a1a2e;}
.rx-footer{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:auto;padding-top:40px;padding-bottom:14px;}
.rx-footer-note{font-size:9px;color:var(--muted);max-width:180px;line-height:1.4;}
.rx-sig-block{text-align:center;}
.rx-sig-line{border-top:1px solid #333;width:160px;margin-bottom:4px;}
.rx-sig-name{font-size:12.5px;font-weight:700;color:var(--navy-dark);}
.rx-sig-role{font-size:9.5px;color:var(--muted);margin-top:1px;}
.rx-bottom-strip{
  text-align:center;font-size:9px;color:var(--muted);letter-spacing:.04em;
  border-top:1px solid var(--line);padding:8px 0;position:relative;z-index:1;
}
@media(max-width:480px){
  .rx-info-grid{grid-template-columns:repeat(2,1fr);}
  .rx-footer{flex-direction:column;align-items:flex-start;gap:16px;}
  .rx-sig-block{align-self:flex-end;}
}


/* Patient portal summary counters */
.stat{padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;}
.stat b{font-family:var(--font-head);font-size:18px;color:var(--navy-dark);}
.stat span{color:var(--muted);}
button.stat-link{
  cursor:pointer;text-align:left;
  transition:border-color .15s ease, background .15s ease, transform .12s ease;
}
button.stat-link:hover{border-color:var(--accent);background:var(--navy-tint);transform:translateY(-1px);}


/* Profile and patient photos */
.profile-avatar{
  width:52px;height:52px;border-radius:50%;object-fit:cover;display:inline-flex;
  align-items:center;justify-content:center;flex:0 0 auto;border:1px solid var(--line);
  background:#eef2f8;color:var(--navy-dark);font-weight:800;text-transform:uppercase;
}
.profile-avatar-placeholder{font-size:15px;user-select:none;}
.profile-avatar.avatar-xs{width:34px;height:34px;font-size:10px;border-color:rgba(255,255,255,.25);}
.profile-avatar.avatar-sm{width:42px;height:42px;font-size:12px;}
.profile-avatar.avatar-lg{width:76px;height:76px;font-size:20px;}
.profile-avatar.avatar-xl{width:120px;height:120px;font-size:30px;}
.profile-photo-editor{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:8px 0 14px;}
.photo-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.patient-detail-head{align-items:center;}
.patient-detail-head h2{flex:1;min-width:220px;}
.family-photo-editor{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:70px;}
button.photo-mini-btn{font-size:10px;padding:2px 4px;line-height:1.15;}
.sidebar-user{display:flex;align-items:center;gap:8px;line-height:1.25;}
.sidebar-user .profile-avatar-placeholder{background:rgba(255,255,255,.12);color:#fff;}

@media(max-width:900px){
  .modal.wide{width:96vw;overflow-x:auto;}
  .family-rows-head,.family-row{min-width:1020px;}
}


.rx-pharmacy-choice{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--navy-dark);margin-right:6px;}
.rx-pharmacy-choice input{width:auto;margin:0;}
.rx-print-host{position:fixed;left:-10000px;top:0;z-index:-1;}
@media print{
  .rx-print-host{position:absolute;left:0;top:0;z-index:auto;}
}

/* ---------- Bed Management full-screen ward view ---------- */
.bed-view-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;}
.bed-fullscreen-hint{margin-top:4px;}
.bed-management-view:fullscreen{
  background:#f5f7fb;
  padding:22px 26px;
  margin:0;
  border:0;
  border-radius:0;
  width:100vw;
  height:100vh;
  overflow:auto;
}
.bed-management-view:fullscreen .bed-view-header{position:sticky;top:-22px;z-index:5;background:#f5f7fb;padding:20px 0 12px;}
.bed-management-view:fullscreen .bed-grid{grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:14px;}
.bed-management-view:fullscreen .bed-tile{min-height:92px;display:flex;flex-direction:column;justify-content:center;padding:18px 10px;box-shadow:0 2px 7px rgba(0,0,0,.1);}
.bed-management-view:fullscreen .bed-tile .bed-number{font-size:20px;}
.bed-management-view:fullscreen .bed-tile .bed-status-label{font-size:12px;margin-top:7px;}

/* ---------- Keyboard-first prescription entry ---------- */
.rx-keyboard-help{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 12px;padding:9px 11px;background:#f3f6fb;border:1px solid var(--line);border-radius:8px;font-size:11.5px;color:var(--muted);}
.rx-keyboard-help kbd{font:inherit;font-weight:700;color:var(--navy-dark);background:#fff;border:1px solid #cfd6e3;border-bottom-width:2px;border-radius:4px;padding:2px 5px;}
.picker-row-static.keyboard-active{background:#dfeaff;outline:2px solid #7ea4e8;outline-offset:-2px;}
.rx-item-row:focus-within{background:#f8faff;}
.rx-test-chip{display:inline-flex;align-items:center;gap:5px;margin-bottom:5px;}
.rx-test-chip button{border:0;background:transparent;color:inherit;font-weight:800;cursor:pointer;padding:0 2px;line-height:1;}
.rx-test-chip button:focus{outline:2px solid #7ea4e8;border-radius:3px;}

/* Current patient vitals: deliberately compact and immediately beneath name. */
.patient-vitals-panel{margin:8px 0 10px;padding:10px 12px;border:1px solid #dbe4f0;border-radius:10px;background:#f8fbff;}
.patient-vitals-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:7px;}
.patient-vitals-grid{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:8px;align-items:end;}
.patient-vitals-grid .field{margin:0;}
.patient-vitals-grid label{font-size:11px;margin-bottom:3px;}
.patient-vitals-grid input{padding:7px 8px;min-width:0;}
.patient-vitals-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;}
.patient-vitals-save{padding:7px 12px;}
.patient-vitals-status{font-weight:700;}
.rx-patient-heading{display:flex;align-items:center;gap:10px;margin:2px 0 8px;padding:0 2px;}
.rx-top-vitals{margin-top:0;margin-bottom:8px;}
@media(max-width:1050px){.patient-vitals-grid{grid-template-columns:repeat(3,minmax(110px,1fr));}}
@media(max-width:650px){.patient-vitals-grid{grid-template-columns:repeat(2,minmax(100px,1fr));}}

/* ---------- Improved Token Queue ---------- */
.queue-controls-card{padding-top:10px;padding-bottom:10px;}
.queue-filter-field{min-width:150px;margin-bottom:0;}
.queue-filter-field select{min-width:150px;}
.queue-filter-search{flex:1;min-width:220px;margin-bottom:0;}
.queue-filter-search input{width:100%;}
.queue-auto-refresh{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-weight:600;white-space:nowrap;}
.queue-auto-refresh input{width:auto;}
.queue-issue-grid{display:grid;grid-template-columns:minmax(300px,2fr) repeat(3,minmax(145px,1fr));gap:12px;align-items:start;}
.queue-patient-picker{position:relative;}
.queue-patient-results{max-height:190px;margin-top:2px;}
.queue-selected-patient{min-height:17px;}
.queue-selected-ok{color:var(--good);font-weight:700;}
.queue-stats{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;margin:0 0 18px;}
.queue-stats .stat{display:flex;align-items:baseline;gap:6px;}
.queue-display-board{background:var(--navy-dark);color:#fff;border-radius:12px;padding:16px 18px;margin-bottom:18px;box-shadow:0 8px 28px rgba(8,26,53,.14);}
.queue-board-top{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:10px;margin-bottom:12px;}
.queue-board-hospital{font-size:16px;font-weight:800;}
.queue-display-board .small{color:#aebed8;}
.queue-display-board .queue-fullscreen-btn{color:#fff;border:1px solid rgba(255,255,255,.25);}
.queue-board-body{display:grid;grid-template-columns:1.05fr 1fr;gap:18px;}
.queue-board-section h3{font-size:11px;letter-spacing:.11em;margin:0 0 10px;color:#aebed8;}
.queue-now-card{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:10px;background:rgba(255,255,255,.1);margin-bottom:8px;}
.queue-now-card-recalled{background:rgba(255,196,0,.22);box-shadow:0 0 0 2px rgba(255,196,0,.6);animation:queue-recall-pulse 1.4s ease-in-out 3;}
@keyframes queue-recall-pulse{0%,100%{box-shadow:0 0 0 2px rgba(255,196,0,.6);}50%{box-shadow:0 0 0 6px rgba(255,196,0,.25);}}
.queue-now-number{font-family:var(--font-head);font-size:34px;font-weight:900;min-width:62px;text-align:center;color:var(--gold-pale);}
.queue-now-meta{display:flex;flex-direction:column;gap:3px;min-width:0;}
.queue-now-meta b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.queue-now-meta span:not(.badge){font-size:11px;color:#bdc9dd;}
.queue-next-row{display:grid;grid-template-columns:26px 55px minmax(120px,1fr) minmax(90px,.8fr) auto;gap:8px;align-items:center;padding:8px 9px;border-bottom:1px solid rgba(255,255,255,.11);font-size:12px;}
.queue-next-pos{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.13);font-size:10px;}
.queue-board-empty{padding:24px 10px;color:#aebed8;text-align:center;border:1px dashed rgba(255,255,255,.2);border-radius:8px;}
.queue-table-wrap{overflow-x:auto;}
.queue-grid{min-width:950px;}
.queue-token-cell{font-size:16px;font-weight:900;color:var(--navy-dark);}
.queue-actions{white-space:nowrap;}
.queue-serving-row td{background:#fff8e7;}
.queue-serving-row:hover td{background:#fff4d5!important;}
.queue-display-board:fullscreen{width:100vw;height:100vh;border-radius:0;margin:0;padding:36px 44px;overflow:auto;background:var(--navy-dark);}
.queue-display-board:fullscreen .queue-board-top{padding-bottom:22px;margin-bottom:26px;}
.queue-display-board:fullscreen .queue-board-hospital{font-size:28px;}
.queue-display-board:fullscreen .queue-board-top .small{font-size:16px;}
.queue-display-board:fullscreen .queue-board-body{gap:36px;}
.queue-display-board:fullscreen .queue-board-section h3{font-size:18px;margin-bottom:18px;}
.queue-display-board:fullscreen .queue-now-card{padding:22px 24px;margin-bottom:14px;}
.queue-display-board:fullscreen .queue-now-number{font-size:64px;min-width:110px;}
.queue-display-board:fullscreen .queue-now-meta b{font-size:23px;}
.queue-display-board:fullscreen .queue-now-meta span:not(.badge){font-size:17px;}
.queue-display-board:fullscreen .queue-next-row{grid-template-columns:42px 88px minmax(190px,1fr) minmax(140px,.8fr) auto;padding:15px 12px;font-size:20px;}
.queue-display-board:fullscreen .queue-next-pos{width:34px;height:34px;font-size:14px;}
.queue-display-board:fullscreen .badge{font-size:14px;padding:5px 10px;}
@media(max-width:1000px){
  .queue-issue-grid{grid-template-columns:1fr 1fr;}
  .queue-patient-picker{grid-column:1/-1;}
}
@media(max-width:720px){
  .queue-stats{grid-template-columns:1fr 1fr;}
  .queue-board-body{grid-template-columns:1fr;}
  .queue-issue-grid{grid-template-columns:1fr;}
  .queue-patient-picker{grid-column:auto;}
}

/* ---------- Bed Management 2.0 ---------- */
.bed-setup-card{padding:14px 16px;}
.bed-setup-head{display:flex;align-items:center;justify-content:space-between;gap:14px;}
.bed-setup-head strong{font-size:14px;color:var(--navy-dark);}
.bed-setup-body{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.bed-setup-block{background:#f8faff;border:1px solid #e5eaf2;border-radius:10px;padding:14px;}
.bed-setup-block h3{margin:0 0 10px;font-size:13.5px;color:var(--navy-dark);}
.bed-setup-block .primary{margin-top:10px;}

.bed-management-view{padding:18px;overflow:hidden;}
.bed-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.bed-last-updated{white-space:nowrap;margin-right:4px;}
.bed-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;margin:4px 0 14px;}
.bed-stat-card{position:relative;overflow:hidden;background:#f8faff;border:1px solid #e1e7f0;border-radius:11px;padding:12px 14px;min-height:86px;}
.bed-stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#7890af;}
.bed-stat-card.occupied:before{background:var(--accent);}
.bed-stat-card.vacant:before{background:#16a36a;}
.bed-stat-card.severe:before{background:#c62828;}
.bed-stat-value{font-family:var(--font-head);font-size:26px;line-height:1;font-weight:800;color:var(--navy-dark);margin-bottom:6px;}
.bed-stat-label{font-size:12.5px;font-weight:700;color:#34465f;}

.bed-filterbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px;background:#f5f7fb;border:1px solid #e0e6ef;border-radius:10px;margin-bottom:15px;}
.bed-filterbar select{min-width:150px;}
.bed-search-wrap{display:flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);border-radius:7px;padding-left:9px;min-width:280px;flex:1;}
.bed-search-wrap:focus-within{border-color:#7aa0de;box-shadow:0 0 0 2px rgba(37,99,235,.1);}
.bed-search-input{border:0!important;box-shadow:none!important;outline:none!important;width:100%;min-width:180px;}
.bed-auto-refresh{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:#40516a;white-space:nowrap;}
.bed-auto-refresh input{width:auto;}

.bed-board-wrap{display:flex;flex-direction:column;gap:16px;}
.bed-ward-section{border:1px solid #e1e6ee;border-radius:12px;padding:13px;background:#fbfcfe;}
.bed-ward-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:11px;}
.bed-ward-head h3{margin:0 0 2px;font-size:14.5px;color:var(--navy-dark);}
.bed-occupancy-track{width:150px;max-width:28%;height:7px;border-radius:999px;background:#e3e8ef;overflow:hidden;flex-shrink:0;}
.bed-occupancy-track span{display:block;height:100%;background:var(--accent);border-radius:inherit;}

.bed-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:11px;}
.bed-tile{position:relative;text-align:left;min-height:142px;padding:12px;border-radius:11px;color:#fff;transition:transform .12s ease,box-shadow .12s ease;box-shadow:0 1px 3px rgba(0,0,0,.12);}
.bed-tile:hover,.bed-tile:focus{transform:translateY(-2px);box-shadow:0 7px 16px rgba(12,24,48,.18);outline:2px solid rgba(37,99,235,.35);outline-offset:2px;}
.bed-tile-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.bed-tile .bed-number{font-size:16px;line-height:1.15;}
.bed-status-pill{display:inline-flex;margin-top:6px;border-radius:999px;padding:3px 7px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.24);font-size:9px;font-weight:800;letter-spacing:.07em;}
.bed-quick-btn{border:0;background:rgba(255,255,255,.18);color:#fff;border-radius:7px;padding:2px 8px;font-size:15px;line-height:20px;cursor:pointer;}
.bed-quick-btn:hover{background:rgba(255,255,255,.3);}
.bed-patient-line{display:flex;align-items:center;gap:9px;margin-top:10px;min-width:0;}
.profile-avatar.bed-avatar{width:34px;height:34px;min-width:34px;font-size:11px;border:2px solid rgba(255,255,255,.55);}
.bed-patient-copy{min-width:0;}
.bed-patient-name{font-size:13.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bed-meta{font-size:10.5px;opacity:.88;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bed-diagnosis{margin-top:9px;font-size:10.5px;line-height:1.3;padding-top:8px;border-top:1px solid rgba(255,255,255,.18);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bed-footer-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;font-size:9.5px;opacity:.85;}
.bed-footer-meta span:last-child{max-width:58%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;}
.bed-vacant-copy{font-size:12px;font-weight:700;margin-top:18px;opacity:.95;}
.bed-vacant{background:linear-gradient(145deg,#788696,#94a1af);}
.bed-mild{background:linear-gradient(145deg,#116a47,#168b5b);}
.bed-moderate{background:linear-gradient(145deg,#fde68a,#fff3b0);color:#713f12;}
.bed-moderate .bed-status-pill{background:rgba(113,63,18,.12);border:1px solid rgba(113,63,18,.28);}
.bed-moderate .bed-diagnosis{border-top:1px solid rgba(113,63,18,.22);}
.bed-moderate .bed-avatar{border-color:rgba(113,63,18,.4);}
.bed-severe{background:linear-gradient(145deg,#991b1b,#c52a2a);}

.bed-compact-mode .bed-grid{grid-template-columns:repeat(auto-fill,minmax(115px,1fr));gap:8px;}
.bed-compact-mode .bed-tile{min-height:86px;padding:10px;}
.bed-compact-mode .bed-patient-line{margin-top:7px;}
.bed-compact-mode .bed-patient-name{font-size:12px;}
.bed-compact-mode .bed-status-pill{margin-top:4px;}
.bed-compact-mode .bed-avatar{display:none;}
.bed-compact-mode .bed-meta{font-size:9.5px;}

.bed-empty-state{display:flex;min-height:180px;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px dashed #cbd4e1;border-radius:12px;background:#f9fbfd;color:#52637a;text-align:center;}
.bed-empty-icon{font-size:34px;color:#8a9bb1;margin-bottom:3px;}
.bed-actions-modal{max-width:520px;}
.bed-action-patient{display:flex;align-items:center;gap:10px;background:#f6f8fc;border:1px solid #e2e7ef;border-radius:9px;padding:10px;margin-bottom:12px;}
.bed-action-inline{display:flex;gap:8px;align-items:center;}
.bed-action-inline select{flex:1;}
.bed-assignment-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f2f7ff;border:1px solid #dce8f8;border-radius:8px;padding:10px 12px;margin-bottom:12px;}
.bed-selected-person{display:flex;align-items:center;gap:10px;}

.bed-management-view:fullscreen{background:#eef2f7;padding:16px 20px;}
.bed-management-view:fullscreen .bed-view-header{top:-16px;background:#eef2f7;padding:14px 0 10px;}
.bed-management-view:fullscreen .bed-stat-grid{grid-template-columns:repeat(4,1fr);}
.bed-management-view:fullscreen .bed-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:11px;}
.bed-management-view:fullscreen .bed-tile{min-height:135px;padding:12px;}
.bed-management-view:fullscreen.bed-compact-mode .bed-grid{grid-template-columns:repeat(auto-fill,minmax(125px,1fr));}
.bed-management-view:fullscreen.bed-compact-mode .bed-tile{min-height:88px;}

@media(max-width:900px){
  .bed-stat-grid{grid-template-columns:1fr 1fr;}
  .bed-setup-body{grid-template-columns:1fr;}
  .bed-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
  .bed-search-wrap{min-width:100%;}
  .bed-filterbar select{flex:1;min-width:130px;}
  .bed-view-header{align-items:flex-start;flex-direction:column;}
  .bed-header-actions{justify-content:flex-start;}
}
.bed-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:10px;color:#52627a;}
.bed-legend>span{display:flex;align-items:center;gap:4px;white-space:nowrap;}
.bed-legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#8794a3;}
.bed-legend-dot.vacant{background:#8794a3}.bed-legend-dot.mild{background:#168b5b}.bed-legend-dot.moderate{background:#fde68a}.bed-legend-dot.severe{background:#c52a2a}

/* Full-system backup & restore */
.backup-security-note{display:flex;gap:5px;align-items:flex-start;margin:-5px 0 18px;padding:11px 13px;border:1px solid #f1d08a;background:#fff9e9;border-radius:9px;color:#654814;font-size:12.5px;line-height:1.45;}
.backup-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:stretch;}
.backup-card{display:flex;flex-direction:column;min-height:295px;}
.backup-card-title{font-size:17px;font-weight:800;color:var(--navy-dark);margin-bottom:8px;}
.backup-card>p{font-size:12.5px;line-height:1.55;color:#53627a;margin:0 0 16px;}
.backup-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:3px 0 16px;}
.backup-stat{background:#f5f7fb;border:1px solid #e3e8ef;border-radius:8px;padding:10px;text-align:center;}
.backup-stat b{display:block;font-family:var(--font-head);font-size:17px;color:var(--navy-dark);margin-bottom:2px;}
.backup-stat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:700;}
.backup-primary{align-self:flex-start;margin-top:auto;}
button.danger.backup-primary{background:#fff3f3;border-color:#e4b4b4;color:#9b1c1c;}
button.danger.backup-primary:hover{background:#fde7e7;}
.backup-status{margin-top:10px;line-height:1.45;min-height:34px;}
.backup-file-input{display:block;width:100%;box-sizing:border-box;border:1px dashed #b9c5d5;background:#f8fafc;border-radius:8px;padding:11px;margin:2px 0 10px;}
.backup-file-info{border:1px solid #e2e7ef;background:#f7f9fc;border-radius:8px;padding:10px 12px;margin-bottom:14px;min-height:44px;box-sizing:border-box;color:#34465f;font-size:12.5px;}
.backup-file-info b{display:block;margin-bottom:3px;word-break:break-all;}
.backup-table-card{margin-top:0;}
.backup-table-list{overflow:auto;max-height:430px;border:1px solid #e4e8ee;border-radius:8px;}
.backup-inventory-table{width:100%;border-collapse:collapse;font-size:12px;}
.backup-inventory-table th{position:sticky;top:0;background:#f3f6fa;text-align:left;padding:8px 10px;border-bottom:1px solid #dce3ec;color:#52627a;font-size:10px;text-transform:uppercase;letter-spacing:.04em;}
.backup-inventory-table td{padding:8px 10px;border-bottom:1px solid #eef1f5;}
.backup-inventory-table tr:last-child td{border-bottom:0;}
.backup-inventory-table td:nth-child(2),.backup-inventory-table td:nth-child(3){text-align:right;font-variant-numeric:tabular-nums;}
@media(max-width:900px){.backup-action-grid{grid-template-columns:1fr}.backup-card{min-height:0}.backup-stats{grid-template-columns:1fr 1fr 1fr}}

/* Doctor prescription medicine search: keep live stock status visible at a glance. */
.picker-row-static{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.rx-item-name .badge{vertical-align:middle;font-weight:700;}

/* Duty roster 2.0: colleague swap workflow */
.roster-page .pagehead{margin-bottom:14px;}
.roster-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;}
.roster-summary-card{background:#fff;border:1px solid #e1e7ef;border-radius:10px;padding:13px 15px;box-shadow:0 1px 2px rgba(18,38,63,.04);}
.roster-summary-card span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.045em;color:#6a788e;font-weight:800;margin-bottom:4px;}
.roster-summary-card b{display:block;font-family:var(--font-head);font-size:24px;line-height:1;color:var(--navy-dark);}
.roster-card-title-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px;}
.roster-card-title-row h2{margin-bottom:3px;}
.roster-card-title-row p{margin:0;}
.roster-add-fields{align-items:end;}
.roster-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 0 12px;border-bottom:1px solid #edf0f4;margin-bottom:8px;}
.roster-search{flex:1;min-width:220px;}
.roster-search input{width:100%;}
.roster-table-wrap{overflow:auto;}
.roster-grid{min-width:760px;}
.roster-grid tr.roster-my-row td{background:#f1f7ff;}
.roster-grid tr.roster-my-row:hover td{background:#e9f3ff;}
.roster-mine-dot{color:#2563a6;font-size:10px;margin-right:6px;vertical-align:1px;}
.roster-you-badge{margin-left:7px;font-size:8px;}
.roster-actions{white-space:nowrap;}
.smallbtn{font-size:10.5px;padding:6px 8px;margin-right:4px;}
.roster-empty{border:1px dashed #cbd5e1;background:#f8fafc;color:#617087;border-radius:9px;padding:18px;text-align:center;font-size:12px;line-height:1.5;}
.roster-swap-modal{max-width:580px;}
.swap-own-duty{background:#eef6ff;border:1px solid #d6e7fa;border-radius:9px;padding:11px 13px;margin-bottom:13px;}
.swap-own-duty b{display:block;margin:3px 0;color:#193956;}
.swap-target-preview{display:flex;flex-direction:column;gap:3px;background:#f7f9fc;border:1px solid #e3e8ef;border-radius:8px;padding:9px 11px;margin:-2px 0 12px;min-height:50px;}
.swap-target-preview b{color:#243b55;font-size:12.5px;}
.swap-target-preview span:last-child{color:#59708a;margin-top:3px;}
.swap-request-list{display:flex;flex-direction:column;gap:9px;}
.swap-request-card{border:1px solid #e1e6ee;border-radius:10px;padding:12px 13px;background:#fff;}
.swap-request-card.incoming{border-color:#b9d7f5;background:#f7fbff;box-shadow:inset 3px 0 #3978b9;}
.swap-request-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px;}
.swap-request-head b{color:#223b55;font-size:13px;}
.swap-duty-pair{display:grid;grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr);gap:8px;align-items:center;}
.swap-duty-leg{display:flex;flex-direction:column;gap:2px;background:#f6f8fb;border:1px solid #e6eaf0;border-radius:8px;padding:9px 10px;min-width:0;}
.swap-duty-leg span{font-size:9.5px;color:#6f7d90;text-transform:uppercase;letter-spacing:.035em;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.swap-duty-leg b{font-size:12px;color:#273f59;}
.swap-duty-leg small{font-size:10px;color:#65748a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.swap-arrow{text-align:center;font-size:19px;color:#5d7592;font-weight:800;}
.swap-reason{margin-top:8px;font-size:11px;color:#53657c;background:#fafbfc;border-radius:6px;padding:7px 9px;}
.swap-request-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap;margin-top:10px;padding-top:9px;border-top:1px solid #edf0f4;}
@media(max-width:900px){.roster-summary-grid{grid-template-columns:1fr 1fr}.roster-add-fields{display:grid;grid-template-columns:1fr 1fr}.swap-duty-pair{grid-template-columns:1fr}.swap-arrow{transform:rotate(90deg)}.roster-toolbar .checkline{font-size:11px}}

/* Compact keyboard dose entry */
.rx-item-quick{display:flex;align-items:center;gap:6px;white-space:nowrap}
.rx-quick-dose{width:92px;min-width:92px;font-weight:700;letter-spacing:.04em;text-align:center}
.rx-quick-dose:focus{outline:3px solid rgba(36,84,199,.22);border-color:var(--accent)}
.rx-quick-dose.input-error{border-color:#dc2626;background:#fff1f2}
@media (max-width:900px){.rx-item-quick{width:100%}.rx-quick-dose{width:120px}}

/* ---------- Patient Profile 2.0 ---------- */
.patient-profile-page{padding:18px;}
.patient-profile-hero{
  display:grid;grid-template-columns:170px minmax(0,1fr);gap:22px;align-items:stretch;
  padding:18px;border:1px solid #dbe4f0;border-radius:16px;background:linear-gradient(135deg,#f8fbff,#fff);
  margin-bottom:12px;
}
.patient-profile-photo-col{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:4px 8px;border-right:1px solid var(--line);}
.profile-avatar.avatar-profile{width:132px;height:132px;font-size:32px;border-width:2px;box-shadow:0 4px 14px rgba(22,43,77,.12);}
.patient-photo-main-btn{width:100%;max-width:132px;padding:6px 8px;font-size:11px;}
.patient-profile-identity{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:16px;}
.patient-profile-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}
.patient-profile-name{margin:0 0 7px;font-size:28px;line-height:1.12;color:var(--navy-dark);}
.patient-profile-badges,.rx-patient-heading-badges{display:flex;gap:6px;flex-wrap:wrap;}
.patient-profile-head-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end;}
.patient-profile-facts{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr));gap:9px;}
.patient-profile-fact{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;min-width:0;}
.patient-profile-fact-label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:3px;}
.patient-profile-fact b{font-size:13px;overflow-wrap:anywhere;}
.patient-family-strip{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fbfcff;}
.patient-family-strip-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:9px;}
.patient-family-strip-items{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;}
button.patient-family-person{display:flex;align-items:center;gap:8px;min-width:175px;text-align:left;border:1px solid var(--line);background:#fff;color:inherit;border-radius:10px;padding:7px 9px;}
button.patient-family-person:hover{border-color:#9bb7e5;background:#f5f9ff;}
button.patient-family-person.selected{border-color:#6e98dc;background:#eaf2ff;box-shadow:inset 0 0 0 1px #6e98dc;}
.patient-family-person-text{display:flex;min-width:0;flex-direction:column;line-height:1.15;}
.patient-family-person-text b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:105px;}
.patient-family-person-text small{font-size:10.5px;color:var(--muted);margin-top:3px;}
.patient-history-overview{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:9px;margin:12px 0;}
.patient-overview-stat{padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff;display:flex;flex-direction:column;gap:3px;}
.patient-overview-stat b{font-family:var(--font-head);font-size:18px;color:var(--navy-dark);}
.patient-overview-stat span{font-size:11px;color:var(--muted);}
.patient-bed-summary{margin:12px 0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fbfcff;}
.patient-picker-photo-row{display:flex;align-items:center;gap:9px;}
.patient-picker-photo-text{display:flex;flex-direction:column;min-width:0;}
.patient-picker-photo-text b{font-size:12.5px;}
.rx-patient-heading-prominent{padding:12px 14px;border:1px solid #dbe4f0;border-radius:12px;background:#f8fbff;align-items:center;}
.rx-patient-photo-col{display:flex;flex-direction:column;align-items:center;gap:4px;flex:0 0 auto;}
.rx-patient-heading-info{min-width:0;display:flex;flex-direction:column;gap:6px;}
.rx-patient-heading-prominent .profile-avatar.avatar-lg{width:84px;height:84px;font-size:21px;border-width:2px;}
@media(max-width:850px){
  .patient-profile-hero{grid-template-columns:1fr;}
  .patient-profile-photo-col{border-right:0;border-bottom:1px solid var(--line);padding-bottom:14px;}
  .patient-profile-facts{grid-template-columns:repeat(2,minmax(120px,1fr));}
  .patient-history-overview{grid-template-columns:repeat(2,minmax(120px,1fr));}
}
@media(max-width:520px){
  .patient-profile-facts,.patient-history-overview{grid-template-columns:1fr 1fr;}
  .patient-profile-title-row{flex-direction:column;}
  .patient-profile-head-actions{justify-content:flex-start;}
  .rx-patient-heading-prominent{align-items:flex-start;}
}

/* ---------- Expanded investigation picker ---------- */
.rx-tests-card .hint{margin-top:-4px;margin-bottom:12px;}
.rx-test-picker-row{display:grid;grid-template-columns:minmax(260px,1fr) 210px auto;gap:10px;align-items:end;}
.rx-test-search-field,.rx-test-category-field{margin:0;}
.rx-test-custom-action{padding-bottom:1px;}
.rx-test-custom-action button{white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis;}
.rx-test-results{max-height:300px;overflow:auto;margin-top:8px;border-radius:9px;}
.rx-test-results .picker-row-static{display:flex;justify-content:space-between;gap:12px;align-items:center;}
.rx-test-results .picker-main{font-weight:700;min-width:0;}
.rx-test-results .picker-empty{padding:10px 12px;border:1px dashed var(--line);border-radius:8px;background:#fbfcfe;color:var(--muted);}
.rx-test-chip{display:inline-flex;align-items:center;gap:2px;margin-bottom:6px;}
.rx-custom-test-mark{opacity:.7;font-size:9px;}
@media(max-width:900px){
  .rx-test-picker-row{grid-template-columns:1fr 180px;}
  .rx-test-custom-action{grid-column:1/-1;}
}
@media(max-width:600px){.rx-test-picker-row{grid-template-columns:1fr;}.rx-test-custom-action{grid-column:auto;}}

/* Audit Log 2.0 */
.audit-stats{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;margin:0 0 14px;}
.audit-stat{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:11px;background:#fff;padding:12px 14px;display:flex;flex-direction:column;gap:4px;}
.audit-stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#718096;}
.audit-stat.today:before{background:var(--accent)}.audit-stat.day:before{background:#4f46e5}.audit-stat.users:before{background:#059669}.audit-stat.critical:before{background:#c62828}
.audit-stat b{font-family:var(--font-head);font-size:23px;color:var(--navy-dark);line-height:1}.audit-stat span{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.audit-filter-card{padding-bottom:13px}.audit-filter-grid{display:grid;grid-template-columns:minmax(250px,2fr) repeat(3,minmax(145px,1fr));gap:10px;align-items:end}.audit-filter-row{display:flex;flex-wrap:wrap;gap:9px;align-items:end;margin-top:10px}.audit-filter-field{display:flex;flex-direction:column;gap:4px;min-width:135px}.audit-filter-field label{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:800}.audit-filter-field input,.audit-filter-field select{width:100%}.audit-filter-search{min-width:250px}.audit-preset{white-space:nowrap}.audit-filter-status{margin-left:auto;padding:8px 0}
.audit-results-card{padding-top:10px}.audit-table-wrap{overflow:auto}.audit-table{min-width:1050px}.audit-row{cursor:pointer;outline:none}.audit-row:hover td,.audit-row:focus td{background:#eef4ff!important}.audit-row:focus{box-shadow:inset 3px 0 0 var(--accent)}.audit-when{white-space:nowrap;width:155px}.audit-action-cell{display:flex;align-items:center;gap:6px;min-width:180px}.audit-code{margin-top:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}.audit-summary-cell{min-width:290px;line-height:1.42}.audit-target{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;max-width:140px;overflow:hidden;text-overflow:ellipsis}.audit-pager{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px}.audit-pager-buttons{display:flex;gap:6px}.audit-empty{min-height:180px;border:1px dashed var(--line);border-radius:10px;background:#fafcff;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;color:var(--muted)}
.audit-detail-modal{max-height:90vh;overflow:auto}.audit-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}.audit-detail-title{font-size:20px;font-weight:800;color:var(--navy-dark);margin-bottom:4px}.audit-detail-badges{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.audit-summary-box{border-left:4px solid var(--accent);background:#f5f8fe;border-radius:8px;padding:12px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:5px;line-height:1.45}.audit-detail-meta{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:8px;margin-bottom:18px}.audit-meta-item{background:#fafbfc;border:1px solid #e7ebf1;border-radius:8px;padding:9px 10px;min-width:0}.audit-meta-item span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;font-weight:800;letter-spacing:.04em;margin-bottom:3px}.audit-meta-item b{font-size:11.5px;word-break:break-word}.audit-detail-section-title{border-top:1px solid var(--line);padding-top:14px!important;margin-top:3px!important}.audit-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:8px}.audit-detail-item{border:1px solid #e7ebf1;border-radius:8px;padding:9px 10px;min-width:0}.audit-detail-item>span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;font-weight:800;letter-spacing:.04em;margin-bottom:4px}.audit-detail-item>b{font-size:12px;word-break:break-word}.audit-json{margin:0;white-space:pre-wrap;word-break:break-word;background:#f6f8fb;border-radius:6px;padding:8px;font-size:10px;line-height:1.4;max-height:250px;overflow:auto}
@media(max-width:1050px){.audit-stats{grid-template-columns:repeat(3,1fr)}.audit-filter-grid{grid-template-columns:1fr 1fr}.audit-detail-meta{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.audit-stats{grid-template-columns:1fr 1fr}.audit-filter-grid{grid-template-columns:1fr}.audit-filter-row{align-items:stretch}.audit-filter-field{flex:1 1 45%}.audit-filter-status{width:100%;margin-left:0}.audit-detail-head{flex-direction:column}.audit-detail-badges{justify-content:flex-start}.audit-detail-meta,.audit-detail-grid{grid-template-columns:1fr}.audit-pager{flex-direction:column;align-items:flex-start}}

/* ---------- Patient details 3.0: organized clinical profile ---------- */
.patient-profile-page{padding:0;margin-top:2px;}
.patient-profile-topbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:0 0 12px;padding:0 2px;
}
.patient-profile-top-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.patient-back-btn{font-weight:700;padding-left:0;}
.patient-profile-shell{
  display:grid;grid-template-columns:210px minmax(0,1fr);gap:0;
  background:#fff;border:1px solid var(--line);border-radius:16px;
  box-shadow:0 5px 18px rgba(15,42,82,.06);overflow:hidden;margin-bottom:14px;
}
.patient-profile-side{
  padding:20px 18px;background:linear-gradient(180deg,#f4f8ff 0%,#fbfdff 100%);
  border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:12px;
}
.patient-profile-photo-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;}
.profile-avatar.avatar-profile{width:144px;height:144px;border-radius:18px;font-size:34px;border:3px solid #fff;box-shadow:0 5px 18px rgba(15,42,82,.14);}
.patient-photo-status{font-size:10.5px;font-weight:700;border-radius:100px;padding:4px 8px;}
.patient-photo-status.has-photo{background:#e5f6ee;color:var(--good);}
.patient-photo-status.missing-photo{background:#fdf1e3;color:var(--warn);}
.patient-photo-actions{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;border-top:1px solid #e3eaf4;padding-top:8px;}
.patient-photo-action{font-size:11px;padding:5px 7px;}
.patient-profile-side-meta{width:100%;display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding-top:5px;border-top:1px solid #e3eaf4;align-items:baseline;}
.patient-side-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}
.patient-profile-side-meta>b{font-size:12px;text-align:right;color:var(--navy-dark);}
.patient-login-pill{grid-column:1/-1;margin-top:7px;padding:8px 9px;border-radius:8px;background:#e7f5ee;color:var(--good);display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:10.5px;}
.patient-login-pill b{font-size:11px;overflow-wrap:anywhere;text-align:right;}
.patient-login-pill.locked{background:#fbe9e9;color:var(--bad);}
.patient-login-pill.muted{background:#edf1f6;color:var(--muted);justify-content:center;}
.patient-profile-main{padding:22px 24px 24px;min-width:0;}
.patient-profile-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px;}
.patient-profile-eyebrow{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700;margin-bottom:4px;}
.patient-profile-name{font-size:28px;margin:0 0 8px;line-height:1.1;color:var(--navy-dark);}
.patient-profile-badges{display:flex;gap:5px;flex-wrap:wrap;}
.patient-profile-main .patient-vitals-panel{
  margin:12px 0 16px;padding:14px 15px;border:1px solid #ccd9ec;border-radius:12px;background:#f7faff;
}
.patient-profile-main .patient-vitals-title{margin-bottom:10px;}
.patient-profile-main .patient-vitals-title b{font-size:13px;color:var(--navy-dark);}
.patient-profile-main .patient-vitals-title .small{font-size:10.5px;}
.patient-profile-main .patient-vitals-grid{grid-template-columns:repeat(3,minmax(120px,1fr));gap:9px;}
.patient-profile-main .patient-vitals-grid .field{background:#fff;border:1px solid #e0e7f0;border-radius:9px;padding:8px;margin:0;}
.patient-profile-main .patient-vitals-grid label{font-size:10px;letter-spacing:.02em;}
.patient-profile-main .patient-vitals-grid input{width:100%;min-width:0;border:0;border-bottom:1px solid #d6deea;border-radius:0;padding:5px 2px;background:transparent;font-size:14px;font-weight:700;}
.patient-profile-main .patient-vitals-grid input:focus{outline:0;border-bottom-color:var(--accent);box-shadow:0 1px 0 var(--accent);}
.patient-profile-main .patient-vitals-actions{margin-top:10px;padding-top:9px;border-top:1px solid #dce5f2;}
.patient-profile-main .patient-vitals-actions .hint{font-size:10.5px;color:var(--muted);}
.patient-demographics-section{padding-top:3px;}
.patient-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.patient-section-title>b{font-size:13px;color:var(--navy-dark);}
.patient-section-title .small{font-size:10.5px;}
.patient-profile-facts{grid-template-columns:repeat(3,minmax(120px,1fr));gap:8px;}
.patient-profile-fact{padding:9px 10px;background:#fbfcfe;border-color:#e4e9f0;}
.patient-profile-fact-label{font-size:9.5px;margin-bottom:4px;}
.patient-profile-fact b{font-size:12.5px;font-weight:700;}
.patient-section-card,.patient-family-strip{
  background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin:0 0 14px;
  box-shadow:0 3px 12px rgba(15,42,82,.035);
}
.patient-history-summary-card{padding-bottom:15px;}
.patient-history-overview{margin:0;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;}
.patient-overview-stat{padding:11px 12px;background:#f9fbfe;border-color:#e2e8f0;}
.patient-overview-stat b{font-size:17px;line-height:1.1;}
.patient-family-strip{background:#fff;}
.patient-family-strip-head{margin-bottom:10px;}
.patient-family-strip-head b{font-size:13px;color:var(--navy-dark);}
button.patient-family-person{min-width:165px;padding:8px 9px;border-radius:9px;background:#fbfcfe;}
button.patient-family-person.selected{background:#eaf2ff;}
.patient-bed-summary{background:#fff;margin:0 0 14px;padding:14px 16px;}
.patient-history-heading{display:flex;align-items:center;gap:8px;margin:20px 0 8px;padding:0 2px;}
.patient-history-heading h2{font-size:15px;margin:0;color:var(--navy-dark);}
.patient-history-heading .badge{background:#e9eef7;color:var(--navy);}
.patient-profile-page table.grid{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;}
.patient-profile-page table.grid th{background:#f8fafc;padding:9px 10px;}
.patient-profile-page table.grid td{padding:10px;vertical-align:top;}

@media(max-width:980px){
  .patient-profile-shell{grid-template-columns:180px minmax(0,1fr);}
  .profile-avatar.avatar-profile{width:122px;height:122px;}
  .patient-profile-main{padding:18px;}
}
@media(max-width:780px){
  .patient-profile-shell{grid-template-columns:1fr;}
  .patient-profile-side{border-right:0;border-bottom:1px solid var(--line);padding:16px;}
  .patient-profile-side-meta{max-width:360px;}
  .patient-profile-main .patient-vitals-grid,.patient-profile-facts{grid-template-columns:repeat(2,minmax(120px,1fr));}
  .patient-history-overview{grid-template-columns:repeat(2,minmax(120px,1fr));}
}
@media(max-width:560px){
  .patient-profile-topbar{align-items:flex-start;}
  .patient-profile-top-actions{justify-content:flex-end;}
  .patient-profile-main{padding:15px 13px;}
  .patient-profile-name{font-size:24px;}
  .patient-profile-main .patient-vitals-grid{grid-template-columns:1fr 1fr;}
  .patient-profile-facts{grid-template-columns:1fr 1fr;}
  .patient-history-overview{grid-template-columns:1fr 1fr;}
  .patient-section-title{align-items:flex-start;flex-direction:column;gap:2px;}
}

/* Security Center */
.security-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}
.security-stat{background:var(--card,#fff);border:1px solid var(--border,#dfe5ea);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:4px}
.security-stat b{font-family:var(--font-head);font-size:1.65rem;line-height:1}.security-stat span{font-size:.82rem;color:var(--muted,#667085)}
.security-filters{display:grid;grid-template-columns:minmax(220px,1fr) 220px 170px auto;gap:10px;align-items:end;margin-bottom:14px}
.security-event-table td{vertical-align:top}.security-event-table td:nth-child(1){white-space:nowrap}.security-event-table td:nth-child(4){font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}
@media (max-width:900px){.security-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.security-filters{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.security-stats,.security-filters{grid-template-columns:1fr}.security-event-table{min-width:760px}}

/* ---------- Dispense queue (organized layout) ---------- */
.dq-card{margin-bottom:16px;}
.dq-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:10px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--line);}
.dq-head-name{font-weight:700;font-size:16px;color:var(--navy-dark);}
.dq-head-meta{font-size:12px;color:var(--muted);margin-top:2px;}
.dq-head-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.dq-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.dq-table th{
  text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
  padding:0 8px 8px;border-bottom:1.5px solid var(--navy-dark);font-weight:700;
}
.dq-table td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top;}
.dq-table tr:last-child td{border-bottom:none;}
.dq-med-name{font-weight:700;color:#1a1a2e;}
.dq-med-dose{font-size:11px;color:var(--muted);margin-top:1px;}
.dq-history{font-size:10.5px;color:var(--muted);margin-top:4px;}
.dq-history.emph{font-weight:700;color:#444;}
.dq-select{min-width:230px;max-width:100%;}
.dq-stockline{font-size:10.5px;color:var(--muted);margin-top:4px;}
.dq-subline{font-size:10.5px;margin-top:2px;}
.dq-subline.emph{font-weight:700;}
.dq-qty-input{width:72px;}
.dq-progress{font-size:11px;}
.dq-progress b{color:var(--navy-dark);}
.dq-empty{padding:30px;text-align:center;color:var(--muted);}
.dq-history-section{margin-top:20px;}
.dq-history-toggle{
  background:none;border:1px solid var(--line);border-radius:8px;padding:8px 14px;font-size:12.5px;
  font-weight:600;color:var(--navy-dark);cursor:pointer;
}
.dq-history-list{margin-top:10px;}
.dq-history-row{
  display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 14px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:#fafbfd;
}
.dq-history-row .dq-hr-left{font-size:12.5px;}
.dq-history-row .dq-hr-left b{color:var(--navy-dark);}
.dq-history-row .dq-hr-note{font-size:11px;color:var(--muted);margin-top:2px;font-style:italic;}
.dq-track-card-wrap{margin-bottom:16px;}
.dq-track-result{margin-top:10px;}
.dq-track-card{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fafbfd;}
.dq-track-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;}
.dq-track-serial{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:700;color:var(--navy-dark);letter-spacing:.02em;}
.dq-track-meta{font-size:12px;color:var(--muted);margin-top:2px;}
@media(max-width:800px){
  .dq-table tr:first-child{display:none;}
  .dq-table tr{display:block;border-bottom:1px solid var(--line);padding:10px 0;}
  .dq-table td{display:block;border:none;padding:4px 0;}
}

/* ---------- Toast notifications ---------- */
.toast-stack{
  position:fixed;bottom:16px;right:16px;z-index:99999;
  display:flex;flex-direction:column;gap:8px;align-items:flex-end;max-width:380px;
}
.toast{
  font-family:var(--font-body);
  background:var(--navy-dark);color:#fff;
  border-left:4px solid var(--good);
  border-radius:8px;padding:11px 16px;font-size:13px;font-weight:500;line-height:1.4;
  box-shadow:0 10px 26px -8px rgba(3,12,28,.55);cursor:pointer;
  animation:toast-in .25s cubic-bezier(.16,1,.3,1) both;
}
.toast-error{border-left-color:#ff8a80;}
@keyframes toast-in{
  from{opacity:0;transform:translateY(8px);}
  to{opacity:1;transform:translateY(0);}
}
.error-banner{
  position:fixed;bottom:16px;right:16px;max-width:360px;z-index:99999;
  font-family:var(--font-body);
  background:var(--navy-dark);color:#fff;
  border-left:4px solid #ff8a80;
  border-radius:8px;padding:14px 16px;font-size:13px;
  box-shadow:0 10px 26px -8px rgba(3,12,28,.55);
  animation:toast-in .25s cubic-bezier(.16,1,.3,1) both;
}
.error-banner-text{margin-bottom:10px;line-height:1.45;}
.error-banner-actions{display:flex;gap:8px;}
.error-banner-actions button{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff;}
.error-banner-actions button:hover{background:rgba(255,255,255,.18);}

/* ---------- Medicine ready-for-pickup board ---------- */
.ready-board-body{padding:6px 4px 4px;}
.ready-board-grid{display:flex;flex-wrap:wrap;gap:14px;}
.ready-chip{
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.22);
  border-radius:12px;
  padding:14px 20px;
  text-align:center;
  min-width:76px;
}
.ready-chip-number{font-family:var(--font-head);font-size:30px;font-weight:800;color:#fff;line-height:1;}
.ready-chip-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:#aebed8;margin-top:4px;}

/* ---------- Tables with an action button: real mobile card reflow ---------- */
/* The generic table.grid "scrolls within its box" fix is fine for tables
   that are just data to read, but any table ending in an action button
   (View, Edit, Delete, Approve, ...) has a sharper problem: enough
   preceding columns/content pushes that button far enough right that
   scrolling to find it is impractical on a phone — effectively invisible,
   not just inconvenient. rx-history-table was the original, narrower fix
   for prescription lists specifically; mobile-card-table is the same
   treatment generalized to every other table with this shape (Users,
   Approvals, Wards, Test Orders, Patient search results, Security's
   blocked-users list, Saved Reports, Pharmacy Inventory, the patient
   portal's Test Records list, the staff Token Queue, and Duty Roster). Below 700px, reflow each row into a
   self-contained card instead, so the action button is always right there
   with no scrolling needed. */
@media(max-width:700px){
  table.rx-history-table tr, table.mobile-card-table tr{
    display:block;border:1px solid var(--line);border-radius:10px;
    padding:10px 12px;margin-bottom:10px;background:#fff;box-shadow:var(--shadow-card);
  }
  table.rx-history-table tr:first-child, table.mobile-card-table tr:first-child{display:none;}
  table.rx-history-table td, table.mobile-card-table td{display:block;border:none;padding:3px 0;font-size:13px;}
  table.rx-history-table td:first-child, table.mobile-card-table td:first-child{font-weight:700;font-size:14px;color:var(--navy-dark);}
  table.rx-history-table td:last-child{padding-top:8px;}
  table.rx-history-table td:last-child button{width:100%;}
  /* Several of these tables can have anywhere from one to five action
     buttons in the last cell (Users, Approvals, Test Orders, ...) — a
     wrapping flex group handles that range much better than forcing every
     button to full width regardless of how many there are. */
  table.mobile-card-table td:last-child{padding-top:8px;display:flex;flex-wrap:wrap;gap:6px;}
  /* These two specific action cells force nowrap at desktop width so their
     buttons sit tidily on one line within a normal table row — but that
     same nowrap would otherwise fight the flex-wrap above once the row
     becomes a stacked card, so it's lifted here. */
  table.mobile-card-table .queue-actions, table.mobile-card-table .roster-actions{white-space:normal;}
  /* .queue-grid and .roster-grid each carry their own min-width for the
     normal (unstacked) table layout — same conflict as
     security-event-table's min-width from earlier: min-width wins over
     table.grid's own max-width:100% in CSS's own conflict resolution, so
     without this override these two would still be forced to their full
     desktop width even after being reflowed into cards. The other 9 tables
     above only ever had the plain 'grid' class, so this conflict is
     specific to just these two. */
  table.mobile-card-table.queue-grid{min-width:0;}
  table.mobile-card-table.roster-grid{min-width:0;}
  table.mobile-card-table.roster-grid{min-width:0;}
}
