/* =============================================================
   Digital Ledger — shared design tokens & typography
   Applied via: <link rel="stylesheet" href="…/assets/design-ledger.css">
   Activate theme by setting: <html data-theme="ledger">
   ============================================================= */

@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;0,6..72,700;1,6..72,400&family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Noto+Sans+Thai:wght@300;400;500;600;700&display=swap');

/* ---------- Palette (exposed as CSS vars + daisyUI tokens) ---------- */
[data-theme="ledger"] {
    /* Raw palette — reference from DESIGN.md */
    --ledger-primary:              #000a1e;
    --ledger-primary-container:    #002147;
    --ledger-primary-fixed-dim:    #a3b4d0;
    --ledger-surface:              #f8f9fa;
    --ledger-surface-container-lowest: #ffffff;
    --ledger-surface-container-low:    #f1f3f7;
    --ledger-surface-container:        #e8ecf2;
    --ledger-surface-container-high:   #dde2ea;
    --ledger-surface-container-highest:#d2d8e2;
    --ledger-on-surface:           #191c1d;
    --ledger-on-surface-variant:   #5c6572;
    --ledger-outline:              #c7ccd4;
    --ledger-outline-variant:      #e2e5ea;
    --ledger-secondary-container:  #dbe3ef;
    --ledger-tertiary:             #200003;
    --ledger-error:                #8a1a1a;
    --ledger-success:              #1f5f43;
    --ledger-warning:              #7a5200;
    --ledger-info:                 #1a4a7a;

    /* daisyUI token mapping (muted so role accents read as scholarly, not saccharine) */
    --color-base-100:         var(--ledger-surface-container-lowest);
    --color-base-200:         var(--ledger-surface);
    --color-base-300:         var(--ledger-surface-container-low);
    --color-base-content:     var(--ledger-on-surface);

    --color-primary:          var(--ledger-primary-container);
    --color-primary-content:  #ffffff;

    --color-secondary:        #26415e;
    --color-secondary-content:#ffffff;

    --color-accent:           #4a6b8e;
    --color-accent-content:   #ffffff;

    --color-neutral:          var(--ledger-primary);
    --color-neutral-content:  #ffffff;

    --color-info:             var(--ledger-info);
    --color-info-content:     #ffffff;
    --color-success:          var(--ledger-success);
    --color-success-content:  #ffffff;
    --color-warning:          var(--ledger-warning);
    --color-warning-content:  #ffffff;
    --color-error:            var(--ledger-error);
    --color-error-content:    #ffffff;

    --radius-selector: 0.375rem;  /* md — per DESIGN.md "don't go past xl" */
    --radius-field:    0.375rem;
    --radius-box:      0.5rem;
    --border:          1px;
}

/* ---------- Base typography ---------- */
html[data-theme="ledger"] body,
.ledger-scope {
    font-family: 'Public Sans', 'Noto Sans Thai', 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    color: var(--ledger-on-surface);
    background-color: var(--ledger-surface);
    font-feature-settings: "ss01", "cv11";
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Editorial serif utility classes — opt-in, not forced on every h1 */
.ed-display,
.ed-headline,
.ed-title {
    font-family: 'Newsreader', 'Noto Sans Thai', Georgia, 'Times New Roman', serif;
    color: var(--ledger-on-surface);
}
.ed-display   { font-size: clamp(2rem, 4vw, 3.5rem); line-height: 1.05; letter-spacing: -0.02em; font-weight: 600; }
.ed-headline  { font-size: clamp(1.5rem, 2.5vw, 2rem);  line-height: 1.15; letter-spacing: -0.015em; font-weight: 600; }
.ed-title     { font-size: 1.25rem; line-height: 1.3;   letter-spacing: -0.01em; font-weight: 600; }

.ed-eyebrow {
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--ledger-on-surface-variant);
}

.ed-body-muted { color: var(--ledger-on-surface-variant); }

/* ---------- Sidebar / Drawer polish ---------- */
.ledger-sidebar {
    background-color: var(--ledger-primary);
    color: #e6ecf5;
    min-height: 100vh;
}
.ledger-sidebar .ed-eyebrow { color: rgba(230, 236, 245, 0.55); }

/* Make sidebar nav items span the full width of the sidebar (no horizontal gap on the pill) */
.ledger-sidebar .menu {
    padding-left: 0;
    padding-right: 0;
    width: 100%;
}
.ledger-sidebar .menu > li {
    width: 100%;
}
.ledger-sidebar .menu > li > a,
.ledger-sidebar .menu > li > label,
.ledger-sidebar .menu > li > button {
    color: #cfd6e2;
    border-radius: 0;
    width: 100%;
    padding-left: 1rem;
    padding-right: 1rem;
    transition: background-color .15s ease, color .15s ease;
}
.ledger-sidebar .menu > li > a:hover,
.ledger-sidebar .menu > li > label:hover,
.ledger-sidebar .menu > li > button:hover {
    background-color: rgba(255,255,255,0.06);
    color: #ffffff;
}
.ledger-sidebar .menu > li > a.is-active,
.ledger-sidebar .menu > li > label.is-active {
    background: linear-gradient(135deg, rgba(255,255,255,0.12), rgba(255,255,255,0.04));
    color: #ffffff;
    box-shadow: inset 2px 0 0 0 rgba(163,180,208,0.7);
}
.ledger-sidebar .menu i { width: 1.25rem; text-align: center; }
.ledger-sidebar .divider-ghost {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.14), transparent);
    margin: 0.75rem 0.5rem;
}

/* Icons-only collapsed sidebar on desktop */
.ledger-sidebar[data-collapsed="true"] .nav-label,
.ledger-sidebar[data-collapsed="true"] .brand-text,
.ledger-sidebar[data-collapsed="true"] .sidebar-footer-text {
    display: none;
}
.ledger-sidebar[data-collapsed="true"] {
    width: 4.5rem;
}
.ledger-sidebar {
    width: 16rem;
    transition: width .2s ease;
}
.ledger-sidebar[data-collapsed="true"] .menu > li > a,
.ledger-sidebar[data-collapsed="true"] .menu > li > label {
    justify-content: center;
}

/* ---------- Content surface polish ---------- */
.ledger-topbar {
    background: rgba(248, 249, 250, 0.78);
    -webkit-backdrop-filter: blur(20px);
    backdrop-filter: blur(20px);
    border-bottom: 1px solid var(--ledger-outline-variant);
}

.ledger-brand-text { color: #ffffff; }
.ledger-sidebar-footer {
    color: rgba(230, 236, 245, 0.55);
}

.ledger-card {
    background-color: var(--ledger-surface-container-lowest);
    border-radius: 0.5rem;
    padding: 1.25rem;
}
.ledger-card--data {
    border-radius: 0.375rem;
}

/* Ghost border — felt, not seen */
.ledger-ghost-border {
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.08);
}

/* Ambient shadow for floating elements only */
.ledger-ambient {
    box-shadow: 0 10px 32px rgba(25,28,29,0.06), 0 2px 8px rgba(25,28,29,0.04);
}

/* Logo adjustment */
.ledger-logo {
    max-height: 36px;
    width: auto;
    filter: brightness(0) invert(1);
    opacity: 0.95;
}
.ledger-logo--lg {
    max-height: 56px;
}
.ledger-logo--light {
    filter: none;
}

/* =============================================================
   Component overrides (Digital Ledger)
   Target existing Tailwind utility patterns used across the
   patient/doctor/hospital/admin component JS so that every
   card auto-adopts the scholarly editorial look.
   Scoped to [data-theme="ledger"] to be safe elsewhere.
   ============================================================= */

/* --- Cards: replace white+border+shadow with ledger-card feel --- */
[data-theme="ledger"] .bg-white.rounded-lg.shadow-sm.border.border-gray-200,
[data-theme="ledger"] .ledger-card {
    background-color: var(--ledger-surface-container-lowest);
    border: 0 !important;
    border-radius: 0.5rem !important;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06), 0 1px 2px rgba(25, 28, 29, 0.03) !important;
}

/* --- Tinted section cards (bg-indigo-50, bg-purple-50, bg-blue-50) --- */
[data-theme="ledger"] .tab-panel [class*="bg-indigo-50"],
[data-theme="ledger"] .tab-panel [class*="bg-purple-50"],
[data-theme="ledger"] .tab-panel [class*="bg-blue-50"],
[data-theme="ledger"] .tab-panel [class*="bg-green-50"],
[data-theme="ledger"] .tab-panel [class*="bg-pink-50"],
[data-theme="ledger"] .tab-panel [class*="bg-yellow-50"] {
    background-color: var(--ledger-surface-container) !important;
    border-color: transparent !important;
}

/* --- Inner white rows inside tinted sections (form-style rows) --- */
[data-theme="ledger"] .tab-panel .bg-white.rounded-lg[class*="border-indigo-"],
[data-theme="ledger"] .tab-panel .bg-white.rounded-lg[class*="border-purple-"],
[data-theme="ledger"] .tab-panel .bg-white.rounded-lg[class*="border-blue-"],
[data-theme="ledger"] .tab-panel .bg-white.rounded-lg[class*="border-green-"],
[data-theme="ledger"] .tab-panel .bg-white.rounded-lg[class*="border-pink-"] {
    background-color: var(--ledger-surface-container-lowest) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.08);
}

/* --- Saturated avatar circles/icons in components --- */
[data-theme="ledger"] .tab-panel .bg-indigo-500,
[data-theme="ledger"] .tab-panel .bg-indigo-600,
[data-theme="ledger"] .tab-panel .bg-purple-500,
[data-theme="ledger"] .tab-panel .bg-purple-600,
[data-theme="ledger"] .tab-panel .bg-blue-500,
[data-theme="ledger"] .tab-panel .bg-blue-600,
[data-theme="ledger"] .tab-panel .bg-green-500,
[data-theme="ledger"] .tab-panel .bg-green-600 {
    background-color: var(--ledger-primary-container) !important;
    background-image: linear-gradient(135deg, var(--ledger-primary) 0%, var(--ledger-primary-container) 100%);
    color: var(--ledger-on-primary) !important;
}

/* --- Border-only decorative borders --- */
[data-theme="ledger"] .tab-panel [class*="border-indigo-1"],
[data-theme="ledger"] .tab-panel [class*="border-indigo-2"],
[data-theme="ledger"] .tab-panel [class*="border-purple-1"],
[data-theme="ledger"] .tab-panel [class*="border-purple-2"],
[data-theme="ledger"] .tab-panel [class*="border-blue-1"],
[data-theme="ledger"] .tab-panel [class*="border-blue-2"] {
    border-color: transparent !important;
}

/* --- Dashed empty-state boxes (e.g. COA placeholder) --- */
[data-theme="ledger"] .tab-panel .border-dashed {
    border-color: rgba(0, 33, 71, 0.18) !important;
    background-color: var(--ledger-surface-container-high) !important;
}

/* --- Buttons: outlined refresh/action buttons become ghost-border primary --- */
[data-theme="ledger"] .btn.btn-outline[class*="border-indigo-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-purple-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-blue-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-green-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-red-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-pink-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-yellow-"],
[data-theme="ledger"] .btn.btn-outline[class*="border-orange-"] {
    color: var(--ledger-primary-container) !important;
    background-color: transparent;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.18);
}
[data-theme="ledger"] .btn.btn-outline[class*="border-indigo-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-purple-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-blue-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-green-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-red-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-pink-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-yellow-"]:hover,
[data-theme="ledger"] .btn.btn-outline[class*="border-orange-"]:hover {
    background-color: var(--ledger-surface-container);
    color: var(--ledger-primary) !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.3);
}

/* --- Headings: soften colored heading icons to one scholarly tone --- */
[data-theme="ledger"] h1 i[class*="text-indigo-"],
[data-theme="ledger"] h1 i[class*="text-purple-"],
[data-theme="ledger"] h1 i[class*="text-blue-"],
[data-theme="ledger"] h1 i[class*="text-green-"],
[data-theme="ledger"] h2 i[class*="text-indigo-"],
[data-theme="ledger"] h2 i[class*="text-purple-"],
[data-theme="ledger"] h2 i[class*="text-blue-"],
[data-theme="ledger"] h2 i[class*="text-green-"],
[data-theme="ledger"] h3 i[class*="text-indigo-"],
[data-theme="ledger"] h3 i[class*="text-purple-"],
[data-theme="ledger"] h3 i[class*="text-blue-"],
[data-theme="ledger"] h3 i[class*="text-green-"] {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] h1.text-xl,
[data-theme="ledger"] h2.text-xl,
[data-theme="ledger"] h3.text-xl,
[data-theme="ledger"] h1.text-2xl,
[data-theme="ledger"] h2.text-2xl,
[data-theme="ledger"] h3.text-2xl {
    font-family: 'Newsreader', 'Noto Sans Thai', Georgia, serif;
    letter-spacing: -0.01em;
    font-weight: 600;
    color: var(--ledger-on-surface);
}

/* --- Text accents inside cards: neutralize saturated palette --- */
[data-theme="ledger"] .tab-panel .text-indigo-500,
[data-theme="ledger"] .tab-panel .text-indigo-600,
[data-theme="ledger"] .tab-panel .text-indigo-700,
[data-theme="ledger"] .tab-panel .text-purple-500,
[data-theme="ledger"] .tab-panel .text-purple-600,
[data-theme="ledger"] .tab-panel .text-purple-700,
[data-theme="ledger"] .tab-panel .text-blue-500,
[data-theme="ledger"] .tab-panel .text-blue-600,
[data-theme="ledger"] .tab-panel .text-blue-700 {
    color: var(--ledger-primary-container);
}
[data-theme="ledger"] .tab-panel .text-indigo-300,
[data-theme="ledger"] .tab-panel .text-indigo-400,
[data-theme="ledger"] .tab-panel .text-purple-300,
[data-theme="ledger"] .tab-panel .text-purple-400,
[data-theme="ledger"] .tab-panel .text-blue-300,
[data-theme="ledger"] .tab-panel .text-blue-400 {
    color: var(--ledger-primary-fixed-dim);
}

/* --- Colored background bubbles (avatar circles, stat chips) --- */
[data-theme="ledger"] .tab-panel .bg-indigo-100,
[data-theme="ledger"] .tab-panel .bg-purple-100,
[data-theme="ledger"] .tab-panel .bg-blue-100 {
    background-color: var(--ledger-secondary-container) !important;
}
[data-theme="ledger"] .tab-panel .bg-indigo-100.text-indigo-600,
[data-theme="ledger"] .tab-panel .bg-purple-100.text-purple-600,
[data-theme="ledger"] .tab-panel .bg-blue-100.text-blue-600 {
    color: var(--ledger-primary-container) !important;
}

/* --- DaisyUI stat cards: align to ledger look --- */
[data-theme="ledger"] .tab-panel .stats {
    background-color: var(--ledger-surface-container-lowest) !important;
    border-radius: 0.5rem;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06), 0 1px 2px rgba(25, 28, 29, 0.03);
}
[data-theme="ledger"] .tab-panel .stat-value {
    font-family: 'Newsreader', 'Noto Sans Thai', Georgia, serif;
    color: var(--ledger-primary-container) !important;
    letter-spacing: -0.02em;
}
[data-theme="ledger"] .tab-panel .stat-figure {
    color: var(--ledger-primary-container) !important;
    opacity: 0.8;
}

/* --- Inputs: ghost border on focus per DESIGN.md --- */
[data-theme="ledger"] .input,
[data-theme="ledger"] .select,
[data-theme="ledger"] .textarea {
    background-color: var(--ledger-surface-container-high);
    border-color: transparent;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.08);
    transition: background-color .15s ease, box-shadow .15s ease;
}
[data-theme="ledger"] .input:focus,
[data-theme="ledger"] .select:focus,
[data-theme="ledger"] .textarea:focus {
    background-color: var(--ledger-surface-container-lowest);
    outline: none;
    box-shadow: inset 0 0 0 2px rgba(0, 33, 71, 0.4);
}

/* --- Table polish (data-heavy scholarly feel) --- */
[data-theme="ledger"] .table {
    background-color: var(--ledger-surface-container-lowest);
}
[data-theme="ledger"] .table thead th {
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--ledger-on-surface-variant);
    background-color: var(--ledger-surface-container-low);
    border-bottom: 1px solid var(--ledger-outline-variant);
}
[data-theme="ledger"] .table tbody tr {
    border-bottom: 1px solid var(--ledger-outline-variant);
}

/* --- Language switcher active state (scholarly, no neon) --- */
[data-theme="ledger"] [data-plang-btn].is-active {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
    font-weight: 600;
}

/* --- Responsive safety rails --- */
@media (max-width: 640px) {
    [data-theme="ledger"] .ed-display  { font-size: 1.75rem; }
    [data-theme="ledger"] .ed-headline { font-size: 1.375rem; }
    [data-theme="ledger"] .ed-title    { font-size: 1.05rem; }
    [data-theme="ledger"] .tab-panel .stats { display: flex; flex-direction: column; }
    [data-theme="ledger"] .tab-panel .stats .stat { border-left: 0; border-top: 1px solid var(--ledger-outline-variant); }
    [data-theme="ledger"] .tab-panel .stats .stat:first-child { border-top: 0; }
    [data-theme="ledger"] main .max-w-7xl { padding-left: 1rem; padding-right: 1rem; }
    [data-theme="ledger"] .ledger-card { padding: 1rem !important; }
}
@media (max-width: 480px) {
    [data-theme="ledger"] .btn { font-size: 0.8rem; }
    [data-theme="ledger"] .btn-sm { font-size: 0.72rem; padding: 0 0.6rem; }
    /* Stack refresh-button heading rows */
    [data-theme="ledger"] .tab-panel .flex.flex-wrap.items-center.justify-between { gap: 0.75rem; }
}

/* =============================================================
   Cross-page overrides
   Handles index.html (home), login/register, wizard, and the
   doctor/hospital/admin dashboards without structural rewrites.
   ============================================================= */

/* --- Body base swap --- */
[data-theme="ledger"] body {
    background-color: var(--ledger-surface) !important;
}

/* --- Navbar (daisyUI .navbar) --- */
[data-theme="ledger"] .navbar {
    background-color: var(--ledger-surface-container-lowest) !important;
    border-bottom: 1px solid var(--ledger-outline-variant);
    box-shadow: none !important;
}
[data-theme="ledger"] .navbar .btn-ghost:hover {
    background-color: var(--ledger-surface-container);
}

/* --- Card/surface patterns used in index.html, login, wizard, dashboards --- */
[data-theme="ledger"] .bg-white,
[data-theme="ledger"] .bg-base-100 {
    background-color: var(--ledger-surface-container-lowest) !important;
}
[data-theme="ledger"] .bg-slate-50,
[data-theme="ledger"] .bg-gray-50,
[data-theme="ledger"] .bg-base-200 {
    background-color: var(--ledger-surface) !important;
}
[data-theme="ledger"] .bg-slate-800 {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
}

/* --- Shadow softening (no drop-shadows per DESIGN.md §4) --- */
[data-theme="ledger"] .shadow-sm,
[data-theme="ledger"] .shadow,
[data-theme="ledger"] .shadow-md,
[data-theme="ledger"] .shadow-lg,
[data-theme="ledger"] .shadow-xl,
[data-theme="ledger"] .shadow-2xl {
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06), 0 1px 2px rgba(25, 28, 29, 0.03) !important;
}
[data-theme="ledger"] .card.shadow-2xl {
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.08), 0 4px 24px rgba(25, 28, 29, 0.04) !important;
}

/* --- Solid role-color backgrounds on circle badges (hero icons, avatars) --- */
[data-theme="ledger"] .bg-blue-600,
[data-theme="ledger"] .bg-blue-500,
[data-theme="ledger"] .bg-blue-700,
[data-theme="ledger"] .bg-sky-600,
[data-theme="ledger"] .bg-primary,
[data-theme="ledger"] .bg-success,
[data-theme="ledger"] .bg-error,
[data-theme="ledger"] .bg-secondary {
    background-color: var(--ledger-primary-container) !important;
    background-image: linear-gradient(135deg, var(--ledger-primary) 0%, var(--ledger-primary-container) 100%);
    color: var(--ledger-on-primary, #fff) !important;
}

/* --- Soft tinted role backgrounds --- */
[data-theme="ledger"] .bg-blue-50,
[data-theme="ledger"] .bg-blue-100,
[data-theme="ledger"] .bg-sky-50,
[data-theme="ledger"] .bg-sky-100,
[data-theme="ledger"] .bg-slate-50 {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
}

/* --- Role-colored text accents (home page, login) --- */
[data-theme="ledger"] .text-blue-400,
[data-theme="ledger"] .text-blue-500,
[data-theme="ledger"] .text-blue-600,
[data-theme="ledger"] .text-blue-700,
[data-theme="ledger"] .text-sky-600,
[data-theme="ledger"] .text-primary,
[data-theme="ledger"] .text-success,
[data-theme="ledger"] .text-error {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .text-slate-300,
[data-theme="ledger"] .text-slate-400,
[data-theme="ledger"] .text-slate-500,
[data-theme="ledger"] .text-slate-600,
[data-theme="ledger"] .text-gray-400,
[data-theme="ledger"] .text-gray-500,
[data-theme="ledger"] .text-gray-600 {
    color: var(--ledger-on-surface-variant) !important;
}
[data-theme="ledger"] .text-slate-700,
[data-theme="ledger"] .text-slate-800,
[data-theme="ledger"] .text-slate-900,
[data-theme="ledger"] .text-gray-700,
[data-theme="ledger"] .text-gray-800,
[data-theme="ledger"] .text-gray-900,
[data-theme="ledger"] .text-base-content {
    color: var(--ledger-on-surface) !important;
}

/* --- Solid brand buttons (login, home, wizard) --- */
[data-theme="ledger"] .btn.bg-blue-600,
[data-theme="ledger"] .btn.bg-blue-700,
[data-theme="ledger"] .btn-primary,
[data-theme="ledger"] .btn.btn-primary,
[data-theme="ledger"] .btn.bg-brand-purple,
[data-theme="ledger"] .btn.bg-brand-purple-dark {
    background-color: var(--ledger-primary-container) !important;
    background-image: linear-gradient(135deg, var(--ledger-primary) 0%, var(--ledger-primary-container) 100%) !important;
    color: #fff !important;
    border-color: transparent !important;
}
[data-theme="ledger"] .btn.bg-blue-600:hover,
[data-theme="ledger"] .btn.bg-brand-purple:hover,
[data-theme="ledger"] .btn-primary:hover {
    background-image: linear-gradient(135deg, var(--ledger-primary-container) 0%, var(--ledger-primary) 100%) !important;
    filter: brightness(1.1);
}

/* --- Ghost/outline secondary buttons --- */
[data-theme="ledger"] .btn.btn-outline,
[data-theme="ledger"] .btn.btn-outline.border-slate-300 {
    background-color: transparent;
    color: var(--ledger-on-surface) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.18) !important;
}
[data-theme="ledger"] .btn.btn-outline:hover {
    background-color: var(--ledger-surface-container) !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.3) !important;
}

/* --- Button contrast safety net (no dark-on-dark / light-on-light) --- */
[data-theme="ledger"] .btn.btn-success,
[data-theme="ledger"] .btn.btn-error,
[data-theme="ledger"] .btn.btn-info,
[data-theme="ledger"] .btn.btn-warning,
[data-theme="ledger"] .btn.btn-neutral,
[data-theme="ledger"] .btn.btn-accent,
[data-theme="ledger"] .btn.btn-secondary {
    color: #fff !important;
}
[data-theme="ledger"] .btn.btn-outline.btn-success,
[data-theme="ledger"] .btn.btn-outline.btn-error,
[data-theme="ledger"] .btn.btn-outline.btn-info,
[data-theme="ledger"] .btn.btn-outline.btn-warning,
[data-theme="ledger"] .btn.btn-outline.btn-neutral,
[data-theme="ledger"] .btn.btn-outline.btn-accent,
[data-theme="ledger"] .btn.btn-outline.btn-secondary {
    color: var(--ledger-on-surface) !important;
    background-color: transparent !important;
}
[data-theme="ledger"] .btn.btn-ghost:not(.text-white) {
    color: var(--ledger-on-surface);
}
[data-theme="ledger"] .alert .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-indigo-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-indigo-7"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-blue-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-blue-7"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-purple-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-blue"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-indigo"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-purple"] .btn.btn-ghost {
    color: #fff !important;
}

/* --- Badges (soft + variants used by dashboards) --- */
[data-theme="ledger"] .badge {
    background-color: var(--ledger-secondary-container);
    color: var(--ledger-primary);
    border: 0;
    font-weight: 600;
    letter-spacing: 0.04em;
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
}
[data-theme="ledger"] .badge.bg-blue-100,
[data-theme="ledger"] .badge.bg-blue-50 {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
    border: 0 !important;
}
[data-theme="ledger"] .badge-soft,
[data-theme="ledger"] .badge-success,
[data-theme="ledger"] .badge-secondary,
[data-theme="ledger"] .badge-error,
[data-theme="ledger"] .badge-info,
[data-theme="ledger"] .badge-warning {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
}

/* --- daisyUI .tab / .tabs-box (used by doctor/hospital/admin) --- */
[data-theme="ledger"] .tabs.tabs-box {
    background-color: var(--ledger-surface-container-lowest) !important;
    border: 0 !important;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06);
    padding: 0.25rem;
    border-radius: 0.5rem;
}
[data-theme="ledger"] .tabs .tab {
    color: var(--ledger-on-surface-variant) !important;
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
    font-weight: 500;
    border-radius: 0.375rem !important;
    transition: background-color .15s ease, color .15s ease;
}
[data-theme="ledger"] .tabs .tab:hover {
    color: var(--ledger-on-surface) !important;
    background-color: var(--ledger-surface-container-low);
}
[data-theme="ledger"] .tabs .tab:checked,
[data-theme="ledger"] .tabs .tab.tab-active,
[data-theme="ledger"] .tabs .tab[aria-selected="true"] {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
    box-shadow: none !important;
}
/* daisyUI radio-as-tab shows checked via :checked on input */
[data-theme="ledger"] .tabs input.tab:checked {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
    --tab-border-color: transparent !important;
}

/* --- Loading spinner color --- */
[data-theme="ledger"] .loading.loading-spinner {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .text-success,
[data-theme="ledger"] .text-error,
[data-theme="ledger"] .text-secondary {
    color: var(--ledger-primary-container) !important;
}

/* --- Register pages: brand-purple / brand-dark / hero-pattern --- */
[data-theme="ledger"] .text-brand-purple,
[data-theme="ledger"] .text-brand-dark,
[data-theme="ledger"] .text-brand-dark-light {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .bg-brand-purple,
[data-theme="ledger"] .bg-brand-purple-light,
[data-theme="ledger"] .bg-brand-purple-dark {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
}
[data-theme="ledger"] .hero-pattern {
    background-image: radial-gradient(var(--ledger-primary-container) 0.5px, transparent 0.5px) !important;
    opacity: 0.04 !important;
}

/* --- Register form inputs (input-bordered with brand colors) --- */
[data-theme="ledger"] .input.input-bordered,
[data-theme="ledger"] .textarea.textarea-bordered,
[data-theme="ledger"] .select.select-bordered {
    background-color: var(--ledger-surface-container-high) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] .input.input-bordered:focus,
[data-theme="ledger"] .textarea.textarea-bordered:focus,
[data-theme="ledger"] .select.select-bordered:focus {
    outline: none;
    background-color: var(--ledger-surface-container-lowest) !important;
    box-shadow: inset 0 0 0 2px rgba(0, 33, 71, 0.4);
}
/* daisyUI 5 wrapped inputs with <label class="input ..."> */
[data-theme="ledger"] label.input,
[data-theme="ledger"] label.input-bordered {
    background-color: var(--ledger-surface-container-high) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] label.input:focus-within {
    background-color: var(--ledger-surface-container-lowest) !important;
    box-shadow: inset 0 0 0 2px rgba(0, 33, 71, 0.4);
}

/* --- Hero illustration circle (home page) --- */
[data-theme="ledger"] .hero .bg-blue-50 {
    background-color: var(--ledger-secondary-container) !important;
}

/* --- Alerts --- */
[data-theme="ledger"] .alert {
    background-color: var(--ledger-surface-container) !important;
    color: var(--ledger-on-surface) !important;
    border: 0 !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] .alert.bg-red-50,
[data-theme="ledger"] .alert.alert-error,
[data-theme="ledger"] .bg-red-50 {
    background-color: rgba(138, 26, 26, 0.06) !important;
    color: var(--ledger-error) !important;
    box-shadow: inset 0 0 0 1px rgba(138, 26, 26, 0.2);
}

/* --- Footer (slate-800) --- */
[data-theme="ledger"] .footer {
    background-color: var(--ledger-primary-container) !important;
    color: var(--ledger-primary-fixed-dim) !important;
}
[data-theme="ledger"] .footer a {
    color: var(--ledger-primary-fixed-dim) !important;
}
[data-theme="ledger"] .footer a:hover {
    color: #fff !important;
}

/* --- Wizard stats --- */
[data-theme="ledger"] .stats {
    background-color: var(--ledger-surface-container-lowest) !important;
    border: 0 !important;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06) !important;
}
[data-theme="ledger"] .stat-value { color: var(--ledger-primary-container) !important; }
[data-theme="ledger"] .stat-figure { color: var(--ledger-primary-container) !important; opacity: 0.75; }

/* --- divider --- */
[data-theme="ledger"] .divider {
    color: var(--ledger-on-surface-variant) !important;
}
[data-theme="ledger"] .divider::before,
[data-theme="ledger"] .divider::after {
    background-color: var(--ledger-outline-variant) !important;
}

/* --- Shared language switcher (shared-lang.js slot) --- */
[data-theme="ledger"] #vh-lang-switcher .btn,
[data-theme="ledger"] #vh-lang-switcher button {
    background-color: transparent;
    color: var(--ledger-on-surface);
    border: 0;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.12);
    font-weight: 500;
}
[data-theme="ledger"] #vh-lang-switcher .is-active {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
    font-weight: 600;
}

/* --- Doctor/hospital/admin dashboards: wrap body in subtle ambient --- */
[data-theme="ledger"] body.min-h-screen.bg-base-200 {
    background-color: var(--ledger-surface) !important;
}

/* --- Card border softening (register pages use border border-base-content/5) --- */
[data-theme="ledger"] .card.border,
[data-theme="ledger"] .border-base-content\/5,
[data-theme="ledger"] .border-base-300,
[data-theme="ledger"] .border-gray-200,
[data-theme="ledger"] .border-gray-300,
[data-theme="ledger"] .border-slate-200,
[data-theme="ledger"] .border-slate-300 {
    border-color: var(--ledger-outline-variant) !important;
}

/* --- Links --- */
[data-theme="ledger"] .link,
[data-theme="ledger"] a.link,
[data-theme="ledger"] .text-brand-purple.link {
    color: var(--ledger-primary-container) !important;
}

/* --- Session-expired modal (doctor/admin dashboards) --- */
[data-theme="ledger"] .modal-box.bg-white {
    background-color: var(--ledger-surface-container-lowest) !important;
}
[data-theme="ledger"] .modal-box .text-red-600 {
    color: var(--ledger-error) !important;
}


/* =============================================================
   Cross-page overrides
   Handles index.html (home), login/register, wizard, and the
   doctor/hospital/admin dashboards without structural rewrites.
   ============================================================= */

/* --- Body base swap --- */
[data-theme="ledger"] body {
    background-color: var(--ledger-surface) !important;
}

/* --- Navbar (daisyUI .navbar) --- */
[data-theme="ledger"] .navbar {
    background-color: var(--ledger-surface-container-lowest) !important;
    border-bottom: 1px solid var(--ledger-outline-variant);
    box-shadow: none !important;
}
[data-theme="ledger"] .navbar .btn-ghost:hover {
    background-color: var(--ledger-surface-container);
}

/* --- Card/surface patterns used in index.html, login, wizard, dashboards --- */
[data-theme="ledger"] .bg-white,
[data-theme="ledger"] .bg-base-100 {
    background-color: var(--ledger-surface-container-lowest) !important;
}
[data-theme="ledger"] .bg-slate-50,
[data-theme="ledger"] .bg-gray-50,
[data-theme="ledger"] .bg-base-200 {
    background-color: var(--ledger-surface) !important;
}
[data-theme="ledger"] .bg-slate-800 {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
}

/* --- Shadow softening (no drop-shadows per DESIGN.md §4) --- */
[data-theme="ledger"] .shadow-sm,
[data-theme="ledger"] .shadow,
[data-theme="ledger"] .shadow-md,
[data-theme="ledger"] .shadow-lg,
[data-theme="ledger"] .shadow-xl,
[data-theme="ledger"] .shadow-2xl {
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06), 0 1px 2px rgba(25, 28, 29, 0.03) !important;
}
[data-theme="ledger"] .card.shadow-2xl {
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.08), 0 4px 24px rgba(25, 28, 29, 0.04) !important;
}

/* --- Solid role-color backgrounds on circle badges (hero icons, avatars) --- */
[data-theme="ledger"] .bg-blue-600,
[data-theme="ledger"] .bg-blue-500,
[data-theme="ledger"] .bg-blue-700,
[data-theme="ledger"] .bg-sky-600,
[data-theme="ledger"] .bg-primary,
[data-theme="ledger"] .bg-success,
[data-theme="ledger"] .bg-error,
[data-theme="ledger"] .bg-secondary {
    background-color: var(--ledger-primary-container) !important;
    background-image: linear-gradient(135deg, var(--ledger-primary) 0%, var(--ledger-primary-container) 100%);
    color: var(--ledger-on-primary, #fff) !important;
}

/* --- Soft tinted role backgrounds --- */
[data-theme="ledger"] .bg-blue-50,
[data-theme="ledger"] .bg-blue-100,
[data-theme="ledger"] .bg-sky-50,
[data-theme="ledger"] .bg-sky-100,
[data-theme="ledger"] .bg-slate-50 {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
}

/* --- Role-colored text accents (home page, login) --- */
[data-theme="ledger"] .text-blue-400,
[data-theme="ledger"] .text-blue-500,
[data-theme="ledger"] .text-blue-600,
[data-theme="ledger"] .text-blue-700,
[data-theme="ledger"] .text-sky-600,
[data-theme="ledger"] .text-primary,
[data-theme="ledger"] .text-success,
[data-theme="ledger"] .text-error {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .text-slate-300,
[data-theme="ledger"] .text-slate-400,
[data-theme="ledger"] .text-slate-500,
[data-theme="ledger"] .text-slate-600,
[data-theme="ledger"] .text-gray-400,
[data-theme="ledger"] .text-gray-500,
[data-theme="ledger"] .text-gray-600 {
    color: var(--ledger-on-surface-variant) !important;
}
[data-theme="ledger"] .text-slate-700,
[data-theme="ledger"] .text-slate-800,
[data-theme="ledger"] .text-slate-900,
[data-theme="ledger"] .text-gray-700,
[data-theme="ledger"] .text-gray-800,
[data-theme="ledger"] .text-gray-900,
[data-theme="ledger"] .text-base-content {
    color: var(--ledger-on-surface) !important;
}

/* --- Solid brand buttons (login, home, wizard) --- */
[data-theme="ledger"] .btn.bg-blue-600,
[data-theme="ledger"] .btn.bg-blue-700,
[data-theme="ledger"] .btn-primary,
[data-theme="ledger"] .btn.btn-primary,
[data-theme="ledger"] .btn.bg-brand-purple,
[data-theme="ledger"] .btn.bg-brand-purple-dark {
    background-color: var(--ledger-primary-container) !important;
    background-image: linear-gradient(135deg, var(--ledger-primary) 0%, var(--ledger-primary-container) 100%) !important;
    color: #fff !important;
    border-color: transparent !important;
}
[data-theme="ledger"] .btn.bg-blue-600:hover,
[data-theme="ledger"] .btn.bg-brand-purple:hover,
[data-theme="ledger"] .btn-primary:hover {
    background-image: linear-gradient(135deg, var(--ledger-primary-container) 0%, var(--ledger-primary) 100%) !important;
    filter: brightness(1.1);
}

/* --- Ghost/outline secondary buttons --- */
[data-theme="ledger"] .btn.btn-outline,
[data-theme="ledger"] .btn.btn-outline.border-slate-300 {
    background-color: transparent;
    color: var(--ledger-on-surface) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.18) !important;
}
[data-theme="ledger"] .btn.btn-outline:hover {
    background-color: var(--ledger-surface-container) !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.3) !important;
}

/* --- Button contrast safety net (no dark-on-dark / light-on-light) --- */
[data-theme="ledger"] .btn.btn-success,
[data-theme="ledger"] .btn.btn-error,
[data-theme="ledger"] .btn.btn-info,
[data-theme="ledger"] .btn.btn-warning,
[data-theme="ledger"] .btn.btn-neutral,
[data-theme="ledger"] .btn.btn-accent,
[data-theme="ledger"] .btn.btn-secondary {
    color: #fff !important;
}
[data-theme="ledger"] .btn.btn-outline.btn-success,
[data-theme="ledger"] .btn.btn-outline.btn-error,
[data-theme="ledger"] .btn.btn-outline.btn-info,
[data-theme="ledger"] .btn.btn-outline.btn-warning,
[data-theme="ledger"] .btn.btn-outline.btn-neutral,
[data-theme="ledger"] .btn.btn-outline.btn-accent,
[data-theme="ledger"] .btn.btn-outline.btn-secondary {
    color: var(--ledger-on-surface) !important;
    background-color: transparent !important;
}
[data-theme="ledger"] .btn.btn-ghost:not(.text-white) {
    color: var(--ledger-on-surface);
}
[data-theme="ledger"] .alert .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-indigo-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-indigo-7"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-blue-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-blue-7"] .btn.btn-ghost,
[data-theme="ledger"] [class*="bg-purple-6"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-blue"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-indigo"] .btn.btn-ghost,
[data-theme="ledger"] [class*="from-purple"] .btn.btn-ghost {
    color: #fff !important;
}

/* --- Badges (soft + variants used by dashboards) --- */
[data-theme="ledger"] .badge {
    background-color: var(--ledger-secondary-container);
    color: var(--ledger-primary);
    border: 0;
    font-weight: 600;
    letter-spacing: 0.04em;
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
}
[data-theme="ledger"] .badge.bg-blue-100,
[data-theme="ledger"] .badge.bg-blue-50 {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
    border: 0 !important;
}
[data-theme="ledger"] .badge-soft,
[data-theme="ledger"] .badge-success,
[data-theme="ledger"] .badge-secondary,
[data-theme="ledger"] .badge-error,
[data-theme="ledger"] .badge-info,
[data-theme="ledger"] .badge-warning {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
}

/* --- daisyUI .tab / .tabs-box (used by doctor/hospital/admin) --- */
[data-theme="ledger"] .tabs.tabs-box {
    background-color: var(--ledger-surface-container-lowest) !important;
    border: 0 !important;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06);
    padding: 0.25rem;
    border-radius: 0.5rem;
}
[data-theme="ledger"] .tabs .tab {
    color: var(--ledger-on-surface-variant) !important;
    font-family: 'Public Sans', 'Noto Sans Thai', sans-serif;
    font-weight: 500;
    border-radius: 0.375rem !important;
    transition: background-color .15s ease, color .15s ease;
}
[data-theme="ledger"] .tabs .tab:hover {
    color: var(--ledger-on-surface) !important;
    background-color: var(--ledger-surface-container-low);
}
[data-theme="ledger"] .tabs .tab:checked,
[data-theme="ledger"] .tabs .tab.tab-active,
[data-theme="ledger"] .tabs .tab[aria-selected="true"] {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
    box-shadow: none !important;
}
/* daisyUI radio-as-tab shows checked via :checked on input */
[data-theme="ledger"] .tabs input.tab:checked {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
    --tab-border-color: transparent !important;
}

/* --- Loading spinner color --- */
[data-theme="ledger"] .loading.loading-spinner {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .text-success,
[data-theme="ledger"] .text-error,
[data-theme="ledger"] .text-secondary {
    color: var(--ledger-primary-container) !important;
}

/* --- Register pages: brand-purple / brand-dark / hero-pattern --- */
[data-theme="ledger"] .text-brand-purple,
[data-theme="ledger"] .text-brand-dark,
[data-theme="ledger"] .text-brand-dark-light {
    color: var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .bg-brand-purple,
[data-theme="ledger"] .bg-brand-purple-light,
[data-theme="ledger"] .bg-brand-purple-dark {
    background-color: var(--ledger-primary-container) !important;
    color: #fff !important;
}
[data-theme="ledger"] .hero-pattern {
    background-image: radial-gradient(var(--ledger-primary-container) 0.5px, transparent 0.5px) !important;
    opacity: 0.04 !important;
}

/* --- Register form inputs (input-bordered with brand colors) --- */
[data-theme="ledger"] .input.input-bordered,
[data-theme="ledger"] .textarea.textarea-bordered,
[data-theme="ledger"] .select.select-bordered {
    background-color: var(--ledger-surface-container-high) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] .input.input-bordered:focus,
[data-theme="ledger"] .textarea.textarea-bordered:focus,
[data-theme="ledger"] .select.select-bordered:focus {
    outline: none;
    background-color: var(--ledger-surface-container-lowest) !important;
    box-shadow: inset 0 0 0 2px rgba(0, 33, 71, 0.4);
}
/* daisyUI 5 wrapped inputs with <label class="input ..."> */
[data-theme="ledger"] label.input,
[data-theme="ledger"] label.input-bordered {
    background-color: var(--ledger-surface-container-high) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] label.input:focus-within {
    background-color: var(--ledger-surface-container-lowest) !important;
    box-shadow: inset 0 0 0 2px rgba(0, 33, 71, 0.4);
}

/* --- Hero illustration circle (home page) --- */
[data-theme="ledger"] .hero .bg-blue-50 {
    background-color: var(--ledger-secondary-container) !important;
}

/* --- Alerts --- */
[data-theme="ledger"] .alert {
    background-color: var(--ledger-surface-container) !important;
    color: var(--ledger-on-surface) !important;
    border: 0 !important;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.1);
}
[data-theme="ledger"] .alert.bg-red-50,
[data-theme="ledger"] .alert.alert-error,
[data-theme="ledger"] .bg-red-50 {
    background-color: rgba(138, 26, 26, 0.06) !important;
    color: var(--ledger-error) !important;
    box-shadow: inset 0 0 0 1px rgba(138, 26, 26, 0.2);
}

/* --- Footer (slate-800) --- */
[data-theme="ledger"] .footer {
    background-color: var(--ledger-primary-container) !important;
    color: var(--ledger-primary-fixed-dim) !important;
}
[data-theme="ledger"] .footer a {
    color: var(--ledger-primary-fixed-dim) !important;
}
[data-theme="ledger"] .footer a:hover {
    color: #fff !important;
}

/* --- Wizard stats --- */
[data-theme="ledger"] .stats {
    background-color: var(--ledger-surface-container-lowest) !important;
    border: 0 !important;
    box-shadow: 0 0 0 1px rgba(0, 33, 71, 0.06) !important;
}
[data-theme="ledger"] .stat-value { color: var(--ledger-primary-container) !important; }
[data-theme="ledger"] .stat-figure { color: var(--ledger-primary-container) !important; opacity: 0.75; }

/* --- divider --- */
[data-theme="ledger"] .divider {
    color: var(--ledger-on-surface-variant) !important;
}
[data-theme="ledger"] .divider::before,
[data-theme="ledger"] .divider::after {
    background-color: var(--ledger-outline-variant) !important;
}

/* --- Shared language switcher (shared-lang.js slot) --- */
[data-theme="ledger"] #vh-lang-switcher .btn,
[data-theme="ledger"] #vh-lang-switcher button {
    background-color: transparent;
    color: var(--ledger-on-surface);
    border: 0;
    box-shadow: inset 0 0 0 1px rgba(0, 33, 71, 0.12);
    font-weight: 500;
}
[data-theme="ledger"] #vh-lang-switcher .is-active {
    background-color: var(--ledger-secondary-container) !important;
    color: var(--ledger-primary) !important;
    font-weight: 600;
}

/* --- Doctor/hospital/admin dashboards: wrap body in subtle ambient --- */
[data-theme="ledger"] body.min-h-screen.bg-base-200 {
    background-color: var(--ledger-surface) !important;
}

/* --- Card border softening (register pages use border border-base-content/5) --- */
[data-theme="ledger"] .card.border,
[data-theme="ledger"] .border-base-content\/5,
[data-theme="ledger"] .border-base-300,
[data-theme="ledger"] .border-gray-200,
[data-theme="ledger"] .border-gray-300,
[data-theme="ledger"] .border-slate-200,
[data-theme="ledger"] .border-slate-300 {
    border-color: var(--ledger-outline-variant) !important;
}

/* --- Links --- */
[data-theme="ledger"] .link,
[data-theme="ledger"] a.link,
[data-theme="ledger"] .text-brand-purple.link {
    color: var(--ledger-primary-container) !important;
}

/* --- Session-expired modal (doctor/admin dashboards) --- */
[data-theme="ledger"] .modal-box.bg-white {
    background-color: var(--ledger-surface-container-lowest) !important;
}
[data-theme="ledger"] .modal-box .text-red-600 {
    color: var(--ledger-error) !important;
}


/* --- btn-primary + btn-outline combined ---
   Without this rule, .btn-primary's solid navy background bleeds in (via !important)
   while .btn-outline's dark text color also wins (also !important), producing
   "View"-style buttons with dark text on a dark navy fill (blended/illegible).
   Force the combination to render as a true outline (transparent bg, navy text/border). */
[data-theme="ledger"] .btn.btn-primary.btn-outline,
[data-theme="ledger"] .btn.btn-outline.btn-primary {
    background-color: transparent !important;
    background-image: none !important;
    color: var(--ledger-primary-container) !important;
    border-color: transparent !important;
    box-shadow: inset 0 0 0 1px var(--ledger-primary-container) !important;
}
[data-theme="ledger"] .btn.btn-primary.btn-outline:hover,
[data-theme="ledger"] .btn.btn-outline.btn-primary:hover {
    background-color: var(--ledger-primary-container) !important;
    background-image: none !important;
    color: #fff !important;
    box-shadow: inset 0 0 0 1px var(--ledger-primary-container) !important;
    filter: none;
}
