/* ============================================================
   OptimizeMyHealth — clinical theme
   Teal/navy palette, sidebar app shell, soft cards & tables
   (look & feel adapted from the PatientMgmt house style)

   Every colour is a token on :root so the dark palette below is a
   pure token swap. Add new colours as tokens, not literals, and give
   each one a dark counterpart in the [data-bs-theme="dark"] block.
   ============================================================ */

:root {
  /* brand */
  --omh-teal: #0f766e;          /* solid fills (buttons) */
  --omh-teal-dark: #115e59;
  --omh-teal-darker: #134e4a;
  --omh-accent: #0f766e;        /* links, icons, accent text */
  --omh-accent-hover: #115e59;
  --omh-teal-soft: #ccfbf1;
  --omh-teal-soft-fg: #0f766e;
  --omh-navy: #0f2e3d;          /* headings */

  /* surfaces & text */
  --omh-ink: #15293b;
  --omh-muted: #64748b;
  --omh-label: #46627a;         /* form labels, table headers, dt */
  --omh-bg: #f2f6f9;
  --omh-card: #ffffff;
  --omh-surface-2: #f7fafc;     /* card headers, <pre>, slots */
  --omh-surface-3: #f0f5f9;     /* table headers */
  --omh-topbar-bg: rgba(255, 255, 255, .85);
  --omh-line: #e3eaf1;
  --omh-line-soft: #eef3f8;     /* table row dividers */
  --omh-row-hover: #f3fbfa;
  --omh-radius: 0.9rem;
  --omh-shadow: 0 1px 2px rgba(15, 46, 61, .05), 0 8px 24px -12px rgba(15, 46, 61, .18);
  --omh-sidebar-w: 252px;

  /* sidebar — dark in both themes, deeper when the page is dark */
  --omh-sidebar-grad: linear-gradient(180deg, #0f2e3d 0%, #123a4c 60%, #14424f 100%);
  --omh-sidebar-fg: #d6e4ec;
  --omh-sidebar-item: #c2d7e1;
  --omh-sidebar-dim: #7da6b6;
  --omh-sidebar-brand-sub: #9fc1cf;

  /* controls */
  --omh-input-border: #d4dfe9;
  --omh-focus-border: #2dd4bf;
  --omh-focus-ring: rgba(45, 212, 191, .22);
  --omh-code: #0e7490;
  --omh-danger: #b91c1c;
  --omh-danger-soft: #fef2f2;
  --omh-drop-target: #eef9f7;
  --omh-alerting-border: #fecaca;
  --omh-table-color: var(--bs-emphasis-color);

  /* outline buttons keep their own tinted borders, distinct from input borders */
  --omh-outline-primary-border: #b9dedb;
  --omh-outline-danger-border: #f1c6c6;
  --omh-outline-secondary-fg: #5b7287;
  --omh-outline-secondary-border: #cfdae4;
  --omh-outline-secondary-hover-bg: #eef3f8;
  --omh-outline-secondary-hover-fg: #33495e;

  /* soft tints — icon chips */
  --tint-teal-bg: #ccfbf1;    --tint-teal-fg: #0f766e;
  --tint-blue-bg: #e0f2fe;    --tint-blue-fg: #0369a1;
  --tint-red-bg: #fee2e2;     --tint-red-fg: #b91c1c;
  --tint-amber-bg: #fef3c7;   --tint-amber-fg: #b45309;
  --tint-indigo-bg: #e0e7ff;  --tint-indigo-fg: #4338ca;
  --tint-slate-bg: #e2e8f0;   --tint-slate-fg: #475569;
  --tint-green-bg: #d1fae5;   --tint-green-fg: #047857;

  /* badges (soft pills) */
  --badge-secondary-bg: #e8eef4;  --badge-secondary-fg: #475569;
  --badge-success-bg: #d1fae5;    --badge-success-fg: #047857;
  --badge-danger-bg: #fee2e2;     --badge-danger-fg: #b91c1c;
  --badge-warning-bg: #fef3c7;    --badge-warning-fg: #92400e;
  --badge-primary-bg: #cffafe;    --badge-primary-fg: #0e7490;
  --badge-info-bg: #e0f2fe;       --badge-info-fg: #0369a1;
  --badge-dark-bg: #cbd5e1;       --badge-dark-fg: #1e293b;

  /* alerts */
  --alert-success-bg: #ecfdf5;  --alert-success-fg: #065f46;
  --alert-danger-bg: #fef2f2;   --alert-danger-fg: #991b1b;
  --alert-info-bg: #eff8ff;     --alert-info-fg: #075985;
  --alert-warning-bg: #fffbeb;  --alert-warning-fg: #92400e;

  /* table row states */
  --row-danger-bg: #fff1f2;
  --row-warning-bg: #fffbeb;
}

[data-bs-theme="dark"] {
  /* solid brand fills stay as-is: a lighter teal would drop white button text
     below 4.5:1. Only the accent used for text/icons is lightened. */
  --omh-accent: #5eead4;
  --omh-accent-hover: #99f6e4;
  --omh-teal-soft: rgba(45, 212, 191, .16);
  --omh-teal-soft-fg: #5eead4;
  --omh-navy: #e6f1f7;

  --omh-ink: #dbe6ee;
  --omh-muted: #93a7b8;
  --omh-label: #a8bccb;
  --omh-bg: #0b1620;
  --omh-card: #12212c;
  --omh-surface-2: #172935;
  --omh-surface-3: #1a2e3b;
  --omh-topbar-bg: rgba(18, 33, 44, .85);
  --omh-line: #263b4a;
  --omh-line-soft: #1f313e;
  --omh-row-hover: #1a2d38;
  --omh-shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 8px 24px -12px rgba(0, 0, 0, .7);

  /* Map Bootstrap's own theme tokens onto the palette above, so every Bootstrap
     component (cards, dropdowns, inputs, modals, list groups) picks up this
     navy-tinted surface set instead of Bootstrap's default neutral greys.

     --bs-body-bg is deliberately the *card* colour, not the page colour: every
     raised Bootstrap component derives its background from it
     (--bs-card-bg, --bs-dropdown-bg, --bs-modal-bg, … all default to it), and
     body's own background is set from --omh-bg further down. That mirrors light
     mode, where --bs-body-bg is white while the page itself is grey. */
  --bs-body-bg: var(--omh-card);
  --bs-body-color: var(--omh-ink);
  --bs-body-color-rgb: 219, 230, 238;   /* keep in step with --omh-ink */
  --bs-emphasis-color: var(--omh-navy);
  --bs-border-color: var(--omh-line);
  --bs-secondary-bg: var(--omh-surface-2);
  --bs-tertiary-bg: var(--omh-surface-3);

  --omh-sidebar-grad: linear-gradient(180deg, #08121a 0%, #0c1c26 60%, #0e242e 100%);
  --omh-sidebar-fg: #c7d8e3;
  --omh-sidebar-item: #a9c1cf;
  --omh-sidebar-dim: #6b8b9c;
  --omh-sidebar-brand-sub: #86adbd;

  --omh-input-border: #2f4757;
  --omh-focus-border: #2dd4bf;
  --omh-focus-ring: rgba(45, 212, 191, .28);
  --omh-code: #67e8f9;
  --omh-danger: #fca5a5;
  --omh-danger-soft: rgba(239, 68, 68, .16);
  --omh-drop-target: rgba(45, 212, 191, .14);
  --omh-alerting-border: rgba(248, 113, 113, .38);
  --omh-table-color: var(--omh-ink);

  --omh-outline-primary-border: rgba(45, 212, 191, .32);
  --omh-outline-danger-border: rgba(248, 113, 113, .35);
  --omh-outline-secondary-fg: #a8bccb;
  --omh-outline-secondary-border: #2f4757;
  --omh-outline-secondary-hover-bg: #1f313e;
  --omh-outline-secondary-hover-fg: #dbe6ee;

  --tint-teal-bg: rgba(45, 212, 191, .16);     --tint-teal-fg: #5eead4;
  --tint-blue-bg: rgba(56, 189, 248, .16);     --tint-blue-fg: #7dd3fc;
  --tint-red-bg: rgba(248, 113, 113, .16);     --tint-red-fg: #fca5a5;
  --tint-amber-bg: rgba(251, 191, 36, .16);    --tint-amber-fg: #fcd34d;
  --tint-indigo-bg: rgba(129, 140, 248, .18);  --tint-indigo-fg: #a5b4fc;
  --tint-slate-bg: rgba(148, 163, 184, .18);   --tint-slate-fg: #cbd5e1;
  --tint-green-bg: rgba(52, 211, 153, .16);    --tint-green-fg: #6ee7b7;

  --badge-secondary-bg: rgba(148, 163, 184, .20);  --badge-secondary-fg: #cbd5e1;
  --badge-success-bg: rgba(52, 211, 153, .18);     --badge-success-fg: #6ee7b7;
  --badge-danger-bg: rgba(248, 113, 113, .18);     --badge-danger-fg: #fca5a5;
  --badge-warning-bg: rgba(251, 191, 36, .18);     --badge-warning-fg: #fcd34d;
  --badge-primary-bg: rgba(34, 211, 238, .18);     --badge-primary-fg: #67e8f9;
  --badge-info-bg: rgba(56, 189, 248, .18);        --badge-info-fg: #7dd3fc;
  --badge-dark-bg: rgba(203, 213, 225, .22);       --badge-dark-fg: #e2e8f0;

  --alert-success-bg: rgba(16, 185, 129, .13);  --alert-success-fg: #6ee7b7;
  --alert-danger-bg: rgba(239, 68, 68, .13);    --alert-danger-fg: #fca5a5;
  --alert-info-bg: rgba(56, 189, 248, .13);     --alert-info-fg: #7dd3fc;
  --alert-warning-bg: rgba(245, 158, 11, .13);  --alert-warning-fg: #fcd34d;

  --row-danger-bg: rgba(239, 68, 68, .12);
  --row-warning-bg: rgba(245, 158, 11, .12);
}

html { font-size: 15px; height: 100%; }

body {
  background: var(--omh-bg);
  color: var(--omh-ink);
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  min-height: 100vh;
}

a { color: var(--omh-accent); }
a:hover { color: var(--omh-accent-hover); }

h1 { font-size: 1.45rem; font-weight: 700; letter-spacing: -.01em; color: var(--omh-navy); }
h5 { font-weight: 650; color: var(--omh-navy); }

/* ---------------- app shell ---------------- */

.omh-shell { display: flex; min-height: 100vh; }

.omh-sidebar {
  width: var(--omh-sidebar-w);
  flex-shrink: 0;
  background: var(--omh-sidebar-grad);
  color: var(--omh-sidebar-fg);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  padding: 1.1rem .9rem;
  /* Not overflow-y:auto — the account dropup at the bottom has to escape the
     sidebar box. Scrolling lives on .omh-nav instead. */
}

.omh-brand {
  display: flex; align-items: center; gap: .6rem;
  color: #fff; text-decoration: none;
  font-weight: 800; font-size: 1.06rem; letter-spacing: -.01em;
  padding: .35rem .55rem 1.1rem;
}
.omh-brand:hover { color: #fff; }
.omh-brand .omh-logo {
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, #14b8a6, #0ea5e9);
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1.15rem;
  box-shadow: 0 6px 16px -6px rgba(20, 184, 166, .65);
}
.omh-brand small { display: block; font-size: .62rem; font-weight: 500; color: var(--omh-sidebar-brand-sub); letter-spacing: .08em; text-transform: uppercase; }

.omh-nav { display: flex; flex-direction: column; gap: .15rem; flex-grow: 1; min-height: 0; overflow-y: auto; }
.omh-nav .nav-section {
  font-size: .64rem; letter-spacing: .12em; text-transform: uppercase;
  color: var(--omh-sidebar-dim); padding: .9rem .6rem .35rem; font-weight: 600;
}
.omh-nav a {
  display: flex; align-items: center; gap: .65rem;
  color: var(--omh-sidebar-item); text-decoration: none;
  padding: .52rem .65rem; border-radius: .6rem;
  font-size: .92rem; font-weight: 500;
  transition: background .15s ease, color .15s ease;
}
.omh-nav a i { font-size: 1.02rem; width: 1.25rem; text-align: center; opacity: .85; }
.omh-nav a:hover { background: rgba(255, 255, 255, .07); color: #fff; }
.omh-nav a.active {
  background: linear-gradient(90deg, rgba(20, 184, 166, .28), rgba(20, 184, 166, .10));
  color: #fff; font-weight: 600;
  box-shadow: inset 3px 0 0 #2dd4bf;
}

.omh-sidebar-footer { font-size: .7rem; color: var(--omh-sidebar-dim); padding: .75rem .6rem 0; border-top: 1px solid rgba(255,255,255,.08); }

/* ---------------- sidebar account (bottom-left) ---------------- */

.omh-account { margin-top: .8rem; flex-shrink: 0; }
.omh-account-toggle {
  display: flex; align-items: center; gap: .6rem; width: 100%;
  padding: .45rem .55rem; border-radius: .7rem; text-align: left;
  border: 1px solid rgba(255, 255, 255, .10);
  background: rgba(255, 255, 255, .05);
  color: var(--omh-sidebar-fg);
  transition: background .15s ease, border-color .15s ease;
}
.omh-account-toggle:hover { background: rgba(255, 255, 255, .10); border-color: rgba(255, 255, 255, .18); }
.omh-account-toggle:focus-visible { outline: 0; box-shadow: 0 0 0 .22rem var(--omh-focus-ring); }
.omh-account-toggle .bi-chevron-expand { margin-left: auto; font-size: .78rem; color: var(--omh-sidebar-dim); }
.omh-avatar {
  width: 34px; height: 34px; border-radius: 50%;
  background: linear-gradient(135deg, #0ea5e9, #14b8a6);
  color: #fff; font-weight: 700; font-size: .85rem;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.omh-account-id { min-width: 0; }
.omh-account-id .name, .omh-account-id .role {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.omh-account-id .name { font-size: .82rem; font-weight: 600; color: #fff; line-height: 1.15; }
.omh-account-id .role { font-size: .68rem; color: var(--omh-sidebar-dim); }

/* data-bs-display="static" keeps Popper out of it, so the menu stays anchored to
   the toggle while the nav scrolls. Bootstrap's own .dropup rules are gated on the
   [data-bs-popper] attribute Popper would have added, so open upwards by hand. */
.omh-account-menu {
  --bs-dropdown-min-width: 100%;
  font-size: .88rem;
  top: auto; bottom: 100%;
  margin-top: 0; margin-bottom: .45rem;
}
.omh-account-menu-head { padding: .35rem 1rem .45rem; }
.omh-account-menu-head .name { display: block; font-weight: 650; color: var(--omh-navy); }
.omh-account-menu-head .role { display: block; font-size: .75rem; color: var(--omh-muted); }
.omh-account-menu .dropdown-item { display: flex; align-items: center; gap: .55rem; }
.omh-account-menu .dropdown-item .bi-check2 { margin-left: auto; opacity: 0; }
.omh-account-menu .dropdown-item[aria-checked="true"] { color: var(--omh-accent); font-weight: 600; }
.omh-account-menu .dropdown-item[aria-checked="true"] .bi-check2 { opacity: 1; }
.omh-account-menu form { margin: 0; }
.omh-account-signout:hover { color: var(--omh-danger); background: var(--omh-danger-soft); }

/* ---------------- topbar + content ---------------- */

.omh-main { flex-grow: 1; min-width: 0; display: flex; flex-direction: column; }

.omh-topbar {
  background: var(--omh-topbar-bg);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--omh-line);
  padding: .65rem 1.6rem;
  display: flex; align-items: center; justify-content: space-between;
  position: sticky; top: 0; z-index: 1020;
}
.omh-topbar .omh-env {
  font-size: .72rem; font-weight: 600; color: var(--omh-teal-soft-fg);
  background: var(--omh-teal-soft); border-radius: 99px; padding: .25rem .7rem;
}
.omh-content { padding: 1.6rem 1.6rem 2.2rem; max-width: 1320px; width: 100%; }

.omh-footer { margin-top: auto; padding: .9rem 1.6rem; font-size: .76rem; color: var(--omh-muted); border-top: 1px solid var(--omh-line); }

/* ---------------- appearance switcher ---------------- */

.omh-theme-toggle {
  border: 1px solid var(--omh-line);
  background: var(--omh-card);
  color: var(--omh-muted);
  border-radius: .6rem;
  padding: .3rem .55rem;
  font-size: 1rem; line-height: 1;
  display: inline-flex; align-items: center;
}
.omh-theme-toggle:hover { color: var(--omh-accent); border-color: var(--omh-focus-border); }
.omh-theme-toggle:focus-visible { outline: 0; box-shadow: 0 0 0 .22rem var(--omh-focus-ring); }
.omh-theme-menu { --bs-dropdown-min-width: 10.5rem; font-size: .88rem; }
.omh-theme-menu .dropdown-item { display: flex; align-items: center; gap: .55rem; }
.omh-theme-menu .dropdown-item .bi-check2 { margin-left: auto; opacity: 0; }
.omh-theme-menu .dropdown-item[aria-checked="true"] { color: var(--omh-accent); font-weight: 600; }
.omh-theme-menu .dropdown-item[aria-checked="true"] .bi-check2 { opacity: 1; }
/* the auth shell has no topbar — float the switcher in the corner instead */
.omh-auth .omh-theme-switch { position: fixed; top: 1rem; right: 1rem; z-index: 1030; }

/* ---------------- auth (login) shell ---------------- */

.omh-auth {
  min-height: 100vh;
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(20, 184, 166, .18), transparent 60%),
    radial-gradient(700px 460px at -10% 110%, rgba(14, 165, 233, .15), transparent 60%),
    var(--omh-bg);
  padding: 2rem 1rem;
}
.omh-auth-card {
  width: 100%; max-width: 880px;
  background: var(--omh-card); border-radius: 1.25rem;
  box-shadow: var(--omh-shadow); padding: 2.2rem 2.4rem;
}
.omh-auth-card h1 { font-size: 1.3rem; }
.omh-auth-brand { display: flex; align-items: center; gap: .7rem; margin-bottom: 1.4rem; }
.omh-auth-logo {
  width: 42px; height: 42px; border-radius: 12px;
  background: linear-gradient(135deg, #14b8a6, #0ea5e9);
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1.3rem;
}
.omh-auth-title { font-weight: 800; font-size: 1.1rem; color: var(--omh-navy); }
.omh-auth-sub { font-size: .7rem; color: var(--omh-muted); letter-spacing: .08em; text-transform: uppercase; }

/* ---------------- cards & stat tiles ---------------- */

.card {
  border: 1px solid var(--omh-line);
  border-radius: var(--omh-radius);
  box-shadow: var(--omh-shadow);
}
.card-header { background: var(--omh-surface-2); border-bottom: 1px solid var(--omh-line); font-weight: 650; color: var(--omh-navy); }

.omh-stat {
  background: var(--omh-card);
  border: 1px solid var(--omh-line);
  border-radius: var(--omh-radius);
  box-shadow: var(--omh-shadow);
  padding: 1rem 1.1rem;
  display: flex; align-items: center; gap: .9rem;
  height: 100%;
  transition: transform .15s ease, box-shadow .15s ease;
}
.omh-stat:hover { transform: translateY(-2px); }
.omh-stat .icon {
  width: 44px; height: 44px; border-radius: .8rem; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1.25rem;
}
.omh-stat .value { font-size: 1.55rem; font-weight: 750; line-height: 1; color: var(--omh-navy); }
.omh-stat .label { font-size: .78rem; color: var(--omh-muted); text-decoration: none; display: block; margin-top: .2rem; }
.omh-stat .label:hover { color: var(--omh-accent); }
.omh-stat.alerting { border-color: var(--omh-alerting-border); }
.omh-stat.alerting .value { color: var(--omh-danger); }

.tint-teal   { background: var(--tint-teal-bg);   color: var(--tint-teal-fg); }
.tint-blue   { background: var(--tint-blue-bg);   color: var(--tint-blue-fg); }
.tint-red    { background: var(--tint-red-bg);    color: var(--tint-red-fg); }
.tint-amber  { background: var(--tint-amber-bg);  color: var(--tint-amber-fg); }
.tint-indigo { background: var(--tint-indigo-bg); color: var(--tint-indigo-fg); }
.tint-slate  { background: var(--tint-slate-bg);  color: var(--tint-slate-fg); }
.tint-green  { background: var(--tint-green-bg);  color: var(--tint-green-fg); }

/* ---------------- tables ---------------- */

.table {
  background: var(--omh-card);
  border-collapse: separate; border-spacing: 0;
  border-radius: var(--omh-radius);
  box-shadow: var(--omh-shadow);
  overflow: hidden;
  font-size: .9rem;
  --bs-table-bg: var(--omh-card);
  --bs-table-color: var(--omh-table-color);
  --bs-table-striped-bg: var(--omh-surface-2);
  --bs-table-striped-color: var(--omh-table-color);
}
.table thead th {
  background: var(--omh-surface-3);
  color: var(--omh-label);
  font-size: .72rem; text-transform: uppercase; letter-spacing: .06em;
  font-weight: 650;
  border-bottom: 1px solid var(--omh-line);
  padding: .7rem .85rem;
  white-space: nowrap;
}
.table thead th:first-child { border-top-left-radius: var(--omh-radius); }
.table thead th:last-child { border-top-right-radius: var(--omh-radius); }
.table tbody td { padding: .62rem .85rem; border-bottom: 1px solid var(--omh-line-soft); vertical-align: middle; }
.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: var(--omh-row-hover); }
/* Bootstrap's row variants force a near-black text colour, which is unreadable
   on the translucent dark tints — pin both to the themed table colour. */
.table .table-danger td { background: var(--row-danger-bg); color: var(--omh-table-color); }
.table .table-warning td { background: var(--row-warning-bg); color: var(--omh-table-color); }

code { color: var(--omh-code); font-size: .82em; }

/* ---------------- badges (soft pills) ---------------- */

.badge {
  border-radius: 99px;
  font-weight: 600;
  padding: .38em .8em;
  font-size: .72em;
  letter-spacing: .02em;
}
.badge.bg-secondary { background: var(--badge-secondary-bg) !important; color: var(--badge-secondary-fg); }
.badge.bg-success   { background: var(--badge-success-bg) !important;   color: var(--badge-success-fg); }
.badge.bg-danger    { background: var(--badge-danger-bg) !important;    color: var(--badge-danger-fg); }
.badge.bg-warning   { background: var(--badge-warning-bg) !important;   color: var(--badge-warning-fg); }
.badge.bg-primary   { background: var(--badge-primary-bg) !important;   color: var(--badge-primary-fg); }
.badge.bg-info      { background: var(--badge-info-bg) !important;      color: var(--badge-info-fg); }
.badge.bg-dark      { background: var(--badge-dark-bg) !important;      color: var(--badge-dark-fg); }

/* ---------------- buttons & forms ---------------- */

.btn { border-radius: .65rem; font-weight: 600; font-size: .9rem; padding: .46rem 1rem; }

.btn-primary {
  --bs-btn-bg: var(--omh-teal); --bs-btn-border-color: var(--omh-teal);
  --bs-btn-hover-bg: var(--omh-teal-dark); --bs-btn-hover-border-color: var(--omh-teal-dark);
  --bs-btn-active-bg: var(--omh-teal-darker); --bs-btn-active-border-color: var(--omh-teal-darker);
  --bs-btn-disabled-bg: #99b8b5; --bs-btn-disabled-border-color: #99b8b5;
  --bs-btn-focus-shadow-rgb: 15, 118, 110;
  box-shadow: 0 6px 14px -6px rgba(15, 118, 110, .55);
}
.btn-outline-primary {
  --bs-btn-color: var(--omh-accent); --bs-btn-border-color: var(--omh-outline-primary-border);
  --bs-btn-hover-bg: var(--omh-teal); --bs-btn-hover-border-color: var(--omh-teal);
  --bs-btn-active-bg: var(--omh-teal-dark); --bs-btn-active-border-color: var(--omh-teal-dark);
  --bs-btn-focus-shadow-rgb: 15, 118, 110;
}
.btn-success {
  --bs-btn-bg: #059669; --bs-btn-border-color: #059669;
  --bs-btn-hover-bg: #047857; --bs-btn-hover-border-color: #047857;
  box-shadow: 0 6px 14px -6px rgba(5, 150, 105, .5);
}
.btn-danger {
  --bs-btn-bg: #dc2626; --bs-btn-border-color: #dc2626;
  --bs-btn-hover-bg: #b91c1c; --bs-btn-hover-border-color: #b91c1c;
}
.btn-outline-secondary { --bs-btn-color: var(--omh-outline-secondary-fg); --bs-btn-border-color: var(--omh-outline-secondary-border); --bs-btn-hover-bg: var(--omh-outline-secondary-hover-bg); --bs-btn-hover-color: var(--omh-outline-secondary-hover-fg); --bs-btn-hover-border-color: var(--omh-outline-secondary-border); }
.btn-outline-danger { --bs-btn-color: var(--omh-danger); --bs-btn-border-color: var(--omh-outline-danger-border); --bs-btn-hover-bg: #dc2626; --bs-btn-hover-border-color: #dc2626; }
.btn-sm { padding: .3rem .65rem; font-size: .8rem; }

.form-control, .form-select {
  border-radius: .65rem;
  border-color: var(--omh-input-border);
  padding: .5rem .8rem;
  font-size: .92rem;
}
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: var(--omh-focus-border);
  box-shadow: 0 0 0 .22rem var(--omh-focus-ring);
}
.form-check-input:checked { background-color: var(--omh-teal); border-color: var(--omh-teal); }
.form-label { font-size: .8rem; font-weight: 600; color: var(--omh-label); margin-bottom: .3rem; }
.text-danger { color: var(--omh-danger) !important; }
.text-teal { color: var(--omh-accent) !important; }

/* ---------------- alerts ---------------- */

.alert { border: 0; border-radius: var(--omh-radius); box-shadow: var(--omh-shadow); font-size: .92rem; }
.alert-success { background: var(--alert-success-bg); color: var(--alert-success-fg); box-shadow: inset 4px 0 0 #10b981, var(--omh-shadow); }
.alert-danger  { background: var(--alert-danger-bg);  color: var(--alert-danger-fg);  box-shadow: inset 4px 0 0 #ef4444, var(--omh-shadow); }
.alert-info    { background: var(--alert-info-bg);    color: var(--alert-info-fg);    box-shadow: inset 4px 0 0 #38bdf8, var(--omh-shadow); }
.alert-warning { background: var(--alert-warning-bg); color: var(--alert-warning-fg); box-shadow: inset 4px 0 0 #f59e0b, var(--omh-shadow); }

pre { border-radius: .75rem; }
/* JSON / free-text dumps — surface tint that follows the theme */
.omh-pre { background: var(--omh-surface-2); color: var(--omh-ink); }

dl.row dt { font-size: .78rem; font-weight: 650; color: var(--omh-label); text-transform: uppercase; letter-spacing: .04em; }
dl.row dd { font-size: .92rem; }

/* ---------------- section heading ---------------- */
.omh-page-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.3rem; }
.omh-page-head .subtitle { font-size: .85rem; color: var(--omh-muted); }

/* ---------------- patient flags ---------------- */
.omh-flag { display:inline-flex; align-items:center; gap:.3rem; font-size:.72rem; font-weight:600; padding:.2rem .55rem; border-radius:99px; }

/* ---------------- schedule board ---------------- */
.omh-slot { border-left: 3px solid var(--omh-teal); background: var(--omh-surface-2); border-radius:.5rem; padding:.5rem .7rem; margin-bottom:.4rem; }
.omh-slot.status-Cancelled { border-left-color: var(--omh-danger); opacity:.6; }
.omh-slot.status-NoShow { border-left-color: var(--omh-danger); }
.omh-slot.status-Completed { border-left-color:#047857; }
.omh-slot.status-Arrived, .omh-slot.status-InProgress { border-left-color:#0369a1; }
.omh-daycol.omh-drop-active { background: var(--omh-drop-target); }

/* ---------------- timeline (audit / addendums) ---------------- */
.omh-timeline { list-style:none; padding-left:0; margin:0; }
.omh-timeline li { padding:.5rem 0 .5rem 1.2rem; border-left:2px solid var(--omh-line); position:relative; }
.omh-timeline li::before { content:''; position:absolute; left:-6px; top:.9rem; width:10px; height:10px; border-radius:50%; background:var(--omh-accent); }

/* ---------------- responsive ---------------- */

@media (max-width: 991.98px) {
  .omh-sidebar { position: fixed; z-index: 1045; left: calc(-1 * var(--omh-sidebar-w) - 10px); transition: left .2s ease; box-shadow: 0 0 40px rgba(0,0,0,.35); }
  .omh-sidebar.open { left: 0; }
  .omh-content { padding: 1rem; }
}

.omh-menu-toggle { border: 1px solid var(--omh-line); background: var(--omh-card); border-radius: .6rem; padding: .3rem .6rem; color: var(--omh-navy); }
@media (min-width: 992px) { .omh-menu-toggle { display: none; } }

/* ---------------- print ---------------- */
/* statements, receipts and the daily schedule always print on white paper */
@media print {
  html { color-scheme: light; }
  body, .omh-content, .card, .table, .omh-pre { background: #fff !important; color: #15293b !important; }
  .omh-sidebar, .omh-topbar, .omh-footer, .omh-theme-switch { display: none !important; }
}
