/* RailDiary 1.1: dark theme. Bootstrap 5.3 handles native controls and
   modal components; these rules cover the existing Figma / journal surfaces.
   Always keep route/transport badge semantics intact. */
:root[data-bs-theme="dark"] {
    --rd-canvas: #111b20;
    --rd-surface: #1c2a30;
    --rd-text: #eaf0ef;
    --rd-muted: #b3c3bf;
    --rd-accent: #83d4c2;
    --rd-accent-strong: #b4ebdb;
    --rd-border: #3c5257;
    --rd-success-bg: #25443b;
    --rd-warn-bg: #4d3d25;
    --rd-warn-text: #f5d08f;
    --rail-ink: #eaf0ef;
    --rail-muted: #b3c3bf;
    --rail-line: #3c5257;
    --rail-blue: #89c9ee;
    --rail-paper: #111b20;
    --journal-green: #83d4c2;
    --journal-dark: #b4ebdb;
    --journal-cream: #111b20;
    --journal-paper: #1c2a30;
    --journal-stroke: #3c5257;
    --journal-muted: #b3c3bf;
    --journal-blue: #89c9ee;
    --bs-body-bg: #111b20;
    --bs-body-color: #eaf0ef;
    --bs-tertiary-bg: #24353c;
    --bs-secondary-bg: #26353c;
    --bs-border-color: #3c5257;
    --bs-link-color-rgb: 131, 212, 194;
}
:root[data-bs-theme="dark"] body {
    color: var(--rd-text);
    background: var(--rd-canvas);
}
:root[data-bs-theme="dark"] a:not(.btn):not(.rd-button):not(.navbar-brand) {
    color: var(--rd-accent);
}
:root[data-bs-theme="dark"] .panel,
:root[data-bs-theme="dark"] .logbook-route-panel,
:root[data-bs-theme="dark"] .footer-bar,
:root[data-bs-theme="dark"] .station-suggestions {
    color: var(--rd-text);
    background: var(--rd-surface);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .brand,
:root[data-bs-theme="dark"] .departure-clock,
:root[data-bs-theme="dark"] .departure-service,
:root[data-bs-theme="dark"] .journal-brand,
:root[data-bs-theme="dark"] .journal-page .page-title,
:root[data-bs-theme="dark"] .journal-editor-page .page-title,
:root[data-bs-theme="dark"] .journal-journey .journal-summary-title strong,
:root[data-bs-theme="dark"] .journal-leg-route,
:root[data-bs-theme="dark"] .journal-mini-service,
:root[data-bs-theme="dark"] .journal-summary-expand,
:root[data-bs-theme="dark"] .logbook-journey > summary.panel-heading strong {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .journal-navbar,
:root[data-bs-theme="dark"] .journal-journey-actions,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-actions {
    color: var(--rd-text);
    background: var(--rd-surface);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .journal-navbar .nav-link {
    color: var(--rd-muted);
}
:root[data-bs-theme="dark"] .journal-navbar .nav-link:hover,
:root[data-bs-theme="dark"] .station-suggestion:hover,
:root[data-bs-theme="dark"] .station-suggestion:focus-visible,
:root[data-bs-theme="dark"] .rd-recent-item summary:hover,
:root[data-bs-theme="dark"] .rd-train-data-accordion > summary:hover {
    color: var(--rd-text);
    background: #273d42;
}
:root[data-bs-theme="dark"] .rd-button-outline,
:root[data-bs-theme="dark"] .rd-button-outline:hover,
:root[data-bs-theme="dark"] .rd-editor .btn-light {
    background: var(--rd-surface);
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-button-outline:hover { color: var(--rd-accent); }
:root[data-bs-theme="dark"] .rd-button-primary,
:root[data-bs-theme="dark"] .rd-editor .btn-primary {
    color: #092b2b;
    --bs-btn-color: #092b2b;
    --bs-btn-hover-color: #092b2b;
}
:root[data-bs-theme="dark"] .rd-home-metric,
:root[data-bs-theme="dark"] .rd-home-panel,
:root[data-bs-theme="dark"] .rd-editor .rd-vehicle-assignment,
:root[data-bs-theme="dark"] .rd-editor-data-content,
:root[data-bs-theme="dark"] .rd-editor .journal-editor-data .panel-body > .border,
:root[data-bs-theme="dark"] .rd-original-content,
:root[data-bs-theme="dark"] .rd-original-not-taken .rd-original-content,
:root[data-bs-theme="dark"] .rd-train-data-accordion,
:root[data-bs-theme="dark"] .journal-editor-data > .panel-body > .border,
:root[data-bs-theme="dark"] .journal-leg-card,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-card-not-taken,
:root[data-bs-theme="dark"] .rd-logbook .journal-leg-card-manual {
    background: var(--rd-surface);
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor-stage,
:root[data-bs-theme="dark"] .rd-original-meta span,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey .journal-summary-expand,
:root[data-bs-theme="dark"] .journal-global-search,
:root[data-bs-theme="dark"] .journal-search,
:root[data-bs-theme="dark"] .journal-planned,
:root[data-bs-theme="dark"] .rd-logbook .journal-search,
:root[data-bs-theme="dark"] .rd-editor-plan-note,
:root[data-bs-theme="dark"] .rd-trassenfinder-stop,
:root[data-bs-theme="dark"] .rd-trassenfinder-waypoint,
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-soll {
    background: #24353b;
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor-stage.active,
:root[data-bs-theme="dark"] .rd-train-data-accordion[open] > summary,
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-ist {
    background: #25463f;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table thead th,
:root[data-bs-theme="dark"] .rd-timetable-table th.rd-timetable-ist {
    background: #2c4746;
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor .form-select,
:root[data-bs-theme="dark"] .rd-editor .form-control,
:root[data-bs-theme="dark"] .journal-filterbar select.form-select,
:root[data-bs-theme="dark"] .journal-global-search input,
:root[data-bs-theme="dark"] .journal-search input,
:root[data-bs-theme="dark"] .rd-logbook .journal-search input,
:root[data-bs-theme="dark"] .station-suggestion,
:root[data-bs-theme="dark"] input:not([type="checkbox"]):not([type="radio"]),
:root[data-bs-theme="dark"] textarea {
    color: var(--rd-text);
    background-color: #1a292f;
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] input::placeholder,
:root[data-bs-theme="dark"] textarea::placeholder,
:root[data-bs-theme="dark"] .journal-search input::placeholder {
    color: #a7bbb5;
    opacity: 1;
}
:root[data-bs-theme="dark"] :is(.form-select,.form-control):disabled,
:root[data-bs-theme="dark"] .rd-editor .form-select:disabled {
    color: #a1b2af;
    background-color: #2a383d;
    opacity: 1;
}
:root[data-bs-theme="dark"] .rd-editor .table,
:root[data-bs-theme="dark"] .rd-timetable-table {
    --bs-table-bg: var(--rd-surface);
    --bs-table-color: var(--rd-text);
    --bs-table-border-color: var(--rd-border);
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .journal-journey-list details.bg-light,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-list details.bg-light,
:root[data-bs-theme="dark"] .rd-editor .bg-light,
:root[data-bs-theme="dark"] .rd-editor .bg-white {
    background: #253940 !important;
    color: var(--rd-text) !important;
}
:root[data-bs-theme="dark"] .rd-editor .text-dark,
:root[data-bs-theme="dark"] .journal-page .text-dark { color: var(--rd-text) !important; }
:root[data-bs-theme="dark"] .rd-editor-tag-muted,
:root[data-bs-theme="dark"] .rd-stage-data-unavailable,
:root[data-bs-theme="dark"] .rd-timetable-indicator-cancelled,
:root[data-bs-theme="dark"] .rd-logbook-leg-status-cancelled {
    color: #c2cecb;
    background: #304049;
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor-tag-planned,
:root[data-bs-theme="dark"] .rd-state-planned,
:root[data-bs-theme="dark"] .journal-state.planned { color: #b0d5f4; background: #294058; }
:root[data-bs-theme="dark"] .rd-editor-tag-complete,
:root[data-bs-theme="dark"] .rd-stage-data-complete,
:root[data-bs-theme="dark"] .rd-state-complete,
:root[data-bs-theme="dark"] .journal-state.completed { color: #a7e6c6; background: #264a3b; }
:root[data-bs-theme="dark"] .rd-editor-tag-delay,
:root[data-bs-theme="dark"] .rd-stage-data-partial,
:root[data-bs-theme="dark"] .rd-state-warning,
:root[data-bs-theme="dark"] .journal-state.warning,
:root[data-bs-theme="dark"] .journal-state.delayed { color: #f5d08f; background: #4d3d25; }
:root[data-bs-theme="dark"] .rd-editor .alert-info,
:root[data-bs-theme="dark"] .rd-editor .alert-success,
:root[data-bs-theme="dark"] .rd-train-data-save-tag,
:root[data-bs-theme="dark"] .rd-timetable-indicator-extra { color: #b0e7d3; background: #25463f; border-color: #3b7063; }
:root[data-bs-theme="dark"] .rd-editor .alert-warning,
:root[data-bs-theme="dark"] .rd-editor-corrected .journal-chain-inline .alert-warning,
:root[data-bs-theme="dark"] .rd-train-data-source-reference { color: #f4d193; background: #4d3d25; border-color: #78613a; }
:root[data-bs-theme="dark"] .rd-editor .alert-danger,
:root[data-bs-theme="dark"] .rd-editor-corrected .journal-chain-inline .alert-danger,
:root[data-bs-theme="dark"] .rd-stage-data-missing { color: #ffb6ad; background: #4b3036; border-color: #864c50; }
:root[data-bs-theme="dark"] .rd-timetable-stop-cancelled > td { color: var(--rd-muted); }
:root[data-bs-theme="dark"] .rd-stats-bar-track { background: #26373b; }
:root[data-bs-theme="dark"] .rd-stats-month-count,
:root[data-bs-theme="dark"] .rd-stats-month-name,
:root[data-bs-theme="dark"] .rd-stats-note { color: var(--rd-muted); }
:root[data-bs-theme="dark"] .rd-map-viewport,
:root[data-bs-theme="dark"] .journal-map-wrap .logbook-route-map,
:root[data-bs-theme="dark"] .logbook-route-map,
:root[data-bs-theme="dark"] .leaflet-container {
    background: #23343b;
}
:root[data-bs-theme="dark"] .leaflet-tile-pane {
    /* Only raster base maps change brightness, not overlay line semantics. */
    filter: grayscale(.25) brightness(.72);
}
:root[data-bs-theme="dark"] .leaflet-popup-content-wrapper,
:root[data-bs-theme="dark"] .leaflet-popup-tip,
:root[data-bs-theme="dark"] .leaflet-control-zoom a {
    background: #24363c;
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .leaflet-control-attribution {
    color: var(--rd-text);
    background: #1c2a30e8;
}
:root[data-bs-theme="dark"] .rd-navbar-toggle { border-color: var(--rd-border); }
:root[data-bs-theme="dark"] .rd-navbar .navbar-toggler-icon {
    filter: invert(1) grayscale(1);
}
:root[data-bs-theme="dark"] .rd-nav-account { color: var(--rd-text); }
:root[data-bs-theme="dark"] #blazor-error-ui {
    background: #523c22;
    color: #f6dfa6;
}
/* Compact light/dark switch and account actions in the shared navigation.
   All styling uses the same Figma tokens in light and dark mode. */
.rd-nav-tools {
    display: flex;
    align-items: center;
    gap: .65rem;
    margin-left: auto;
    flex: 0 0 auto;
    min-width: 0;
}
.rd-nav-theme {
    display: inline-flex;
    align-items: center;
    gap: .15rem;
    padding: .2rem;
    border: 1px solid var(--rd-border);
    border-radius: 999px;
    background: var(--rd-canvas);
    flex: 0 0 auto;
}
.rd-theme-choice {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .38rem;
    min-height: 2rem;
    border: 0;
    border-radius: 999px;
    padding: .3rem .7rem;
    background: transparent;
    color: var(--rd-muted);
    font: inherit;
    font-size: .78rem;
    font-weight: 650;
    line-height: 1;
    cursor: pointer;
    transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}
.rd-theme-choice i { font-size: .86rem; }
.rd-theme-choice:hover { color: var(--rd-text); }
:root[data-bs-theme="light"] .rd-theme-choice[data-raildiary-theme-button="light"],
:root[data-bs-theme="dark"] .rd-theme-choice[data-raildiary-theme-button="dark"] {
    background: var(--rd-surface);
    color: var(--rd-accent-strong);
    box-shadow: 0 1px 4px rgb(0 0 0 / .12);
}
.rd-theme-choice:focus-visible,
.rd-nav-tools a:focus-visible,
.rd-nav-tools button:focus-visible {
    outline: 2px solid var(--rd-accent);
    outline-offset: 3px;
}
.rd-nav-end {
    display: flex;
    align-items: center;
    gap: .45rem;
    width: auto;
    min-width: 0;
}
.rd-nav-tools .rd-nav-login,
.rd-nav-tools .rd-nav-profile,
.rd-nav-tools .rd-nav-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    min-height: 2.4rem;
    padding: .42rem .76rem;
    border: 1px solid var(--rd-border);
    border-radius: .65rem;
    background: var(--rd-surface);
    color: var(--rd-text);
    font-size: .78rem;
    font-weight: 650;
    line-height: 1.15;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}
.rd-nav-tools .rd-nav-login {
    background: var(--rd-accent);
    border-color: var(--rd-accent);
    color: #fff;
}
.rd-nav-tools .rd-nav-login:hover { background: var(--rd-accent-strong); color: #fff; }
.rd-nav-tools .rd-nav-profile {
    background: var(--rd-success-bg);
    border-color: var(--rd-border);
}
.rd-nav-tools .rd-nav-profile span {
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 12ch;
}
.rd-nav-tools .rd-nav-profile:hover,
.rd-nav-tools .rd-nav-action:hover {
    color: var(--rd-accent-strong);
    border-color: var(--rd-accent);
}
.rd-nav-tools .rd-nav-logout { margin: 0; }
.rd-nav-tools .rd-nav-logout-button { font-family: inherit; }
/* Override the broader dark-link rule without modifying other navbar links. */
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-login {
    color: #092b2b;
}
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-login:hover {
    color: #092b2b;
}
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-profile,
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-action {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-profile:hover,
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-tools .rd-nav-action:hover {
    color: var(--rd-accent);
}
/* The signed-in account name is the only menu trigger. */
.rd-nav-account-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    min-height: 2.4rem;
    padding: .4rem .85rem;
    border: 1px solid var(--rd-border);
    border-radius: .7rem;
    background: var(--rd-success-bg);
    color: var(--rd-text);
    font: inherit;
    font-weight: 700;
    font-size: .8rem;
    cursor: pointer;
    white-space: nowrap;
}
.rd-nav-account-trigger:hover,
.rd-nav-account-trigger[aria-expanded="true"] {
    border-color: var(--rd-accent);
    color: var(--rd-accent-strong);
}
.rd-nav-account-trigger i { font-size: 1.1rem; }
.rd-nav-user-dropdown { position: relative; }
.rd-nav-user-menu {
    min-width: 14.5rem;
    padding: .38rem;
    border: 1px solid var(--rd-border);
    border-radius: .75rem;
    background: var(--rd-surface);
    box-shadow: 0 12px 28px rgb(0 0 0 / .12);
}
.rd-nav-user-menu .dropdown-item {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .65rem .75rem;
    border: 0;
    border-radius: .5rem;
    background: transparent;
    color: var(--rd-text);
    font-size: .84rem;
    text-decoration: none;
    white-space: nowrap;
}
.rd-nav-user-menu .dropdown-item i {
    width: 1.1rem;
    text-align: center;
    color: var(--rd-muted);
}
.rd-nav-user-menu .dropdown-item:not(.disabled):hover,
.rd-nav-user-menu .dropdown-item:not(.disabled):focus-visible {
    background: var(--rd-success-bg);
    color: var(--rd-accent-strong);
}
.rd-nav-user-menu .dropdown-item.disabled {
    opacity: .55;
    cursor: not-allowed;
}
.rd-nav-user-menu .dropdown-divider { border-color: var(--rd-border); }
.rd-nav-user-menu form { margin: 0; }
.rd-nav-user-menu button.dropdown-item { width: 100%; text-align: left; cursor: pointer; }
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-account-trigger,
:root[data-bs-theme="dark"] .rd-navbar .rd-nav-user-menu .dropdown-item {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-nav-user-menu .dropdown-item:not(.disabled):hover,
:root[data-bs-theme="dark"] .rd-nav-user-menu .dropdown-item:not(.disabled):focus-visible {
    color: var(--rd-accent);
}
.rd-nav-account-trigger:focus-visible { outline: 2px solid var(--rd-accent); outline-offset: 2px; }
@media (max-width: 1199.98px) {
    .rd-nav-tools {
        margin: .55rem 0 1rem;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: .7rem;
    }
    .rd-nav-end { flex-wrap: wrap; }
}
@media (max-width: 575.98px) {
    .rd-nav-theme { max-width: 100%; }
    .rd-nav-tools .rd-nav-action { padding-inline: .6rem; }
}

/* Blazor page-level surfaces – do not rely on the home dashboard classes.
   Several journal and workflow selectors still hardcode light backgrounds. */
:root[data-bs-theme="dark"] .journal-page,
:root[data-bs-theme="dark"] .journal-editor-page,
:root[data-bs-theme="dark"] .rd-workflow,
:root[data-bs-theme="dark"] .rd-editor,
:root[data-bs-theme="dark"] .rd-logbook,
:root[data-bs-theme="dark"] .rd-statistics {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .journal-page .journal-filterbar,
:root[data-bs-theme="dark"] .journal-page .journal-journey,
:root[data-bs-theme="dark"] .journal-page .journal-journey > summary.journal-journey-summary,
:root[data-bs-theme="dark"] .journal-page .journal-metrics,
:root[data-bs-theme="dark"] .journal-editor-body,
:root[data-bs-theme="dark"] .journal-editor-data,
:root[data-bs-theme="dark"] .journal-chain-inline .modal-content,
:root[data-bs-theme="dark"] .journal-chain-inline .modal-header,
:root[data-bs-theme="dark"] .journal-chain-inline .modal-body,
:root[data-bs-theme="dark"] .journal-chain-inline .modal-footer,
:root[data-bs-theme="dark"] .rd-workflow .panel,
:root[data-bs-theme="dark"] .rd-editor .panel,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-statistics,
:root[data-bs-theme="dark"] .rd-logbook .journal-filterbar,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey > summary.journal-journey-summary,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey > .panel-body,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-side-card,
:root[data-bs-theme="dark"] .rd-logbook .journal-map-wrap,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-actions,
:root[data-bs-theme="dark"] .rd-editor-panel,
:root[data-bs-theme="dark"] .rd-editor-data-panel {
    background: var(--rd-surface);
    border-color: var(--rd-border);
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-workflow .panel-heading,
:root[data-bs-theme="dark"] .rd-workflow .panel-body,
:root[data-bs-theme="dark"] .rd-editor .panel-heading,
:root[data-bs-theme="dark"] .rd-editor .panel-body,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-layout,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-list,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-side,
:root[data-bs-theme="dark"] .rd-editor .rd-editor-corrected,
:root[data-bs-theme="dark"] .rd-editor .rd-editor-data-content,
:root[data-bs-theme="dark"] .rd-editor .rd-editor-stage-select {
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .journal-page .page-title,
:root[data-bs-theme="dark"] .journal-editor-page .page-title,
:root[data-bs-theme="dark"] .rd-logbook-head h1,
:root[data-bs-theme="dark"] .rd-editor-heading h1,
:root[data-bs-theme="dark"] .rd-workflow-heading h1,
:root[data-bs-theme="dark"] .rd-logbook .journal-summary-title strong,
:root[data-bs-theme="dark"] .rd-logbook .journal-leg-route,
:root[data-bs-theme="dark"] .rd-logbook .journal-date-box,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-side h3,
:root[data-bs-theme="dark"] .rd-workflow .panel-heading h2,
:root[data-bs-theme="dark"] .rd-editor .panel-heading h2 {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .journal-page .journal-summary-expand,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey .journal-summary-expand,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey .journal-summary-expand:hover,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-not-taken .rd-logbook-leg-icon,
:root[data-bs-theme="dark"] .rd-editor-stage,
:root[data-bs-theme="dark"] .rd-editor .rd-original-meta span,
:root[data-bs-theme="dark"] .rd-editor .rd-vehicle-assignment,
:root[data-bs-theme="dark"] .rd-train-data-accordion-body,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-waypoint,
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-expand[open],
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-journey-card,
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-soll {
    background: #25373d;
    border-color: var(--rd-border);
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-editor-stage.active,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-accordion[open] > summary,
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-ist {
    background: #28483e;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-logbook .journal-journey[open] {
    border-color: #7bb2a4;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-journey > summary:focus-visible,
:root[data-bs-theme="dark"] .rd-editor .rd-editor-stage:focus-visible {
    outline-color: var(--rd-accent);
}
:root[data-bs-theme="dark"] .rd-logbook .journal-journey .journal-summary-title strong,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey .journal-summary-expand {
    border-color: var(--rd-border) !important;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-search,
:root[data-bs-theme="dark"] .rd-logbook .journal-planned,
:root[data-bs-theme="dark"] .rd-logbook .journal-filterbar select.form-select {
    background: #263940;
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-workflow .form-control,
:root[data-bs-theme="dark"] .rd-workflow .form-select,
:root[data-bs-theme="dark"] .rd-editor .form-control,
:root[data-bs-theme="dark"] .rd-editor .form-select,
:root[data-bs-theme="dark"] .rd-logbook select.form-select,
:root[data-bs-theme="dark"] .rd-statistics select.form-select {
    color: var(--rd-text);
    background-color: #1a292f;
    border-color: var(--rd-border);
    --bs-form-select-bg-img: none;
}
:root[data-bs-theme="dark"] .rd-workflow .form-control:disabled,
:root[data-bs-theme="dark"] .rd-workflow .form-select:disabled,
:root[data-bs-theme="dark"] .rd-editor .form-control:disabled,
:root[data-bs-theme="dark"] .rd-editor .form-select:disabled {
    background-color: #304148;
    color: #b6c5c0;
    opacity: 1;
}
:root[data-bs-theme="dark"] .rd-editor .form-control.is-invalid,
:root[data-bs-theme="dark"] .rd-workflow .form-control.is-invalid,
:root[data-bs-theme="dark"] .rd-editor .form-select.is-invalid,
:root[data-bs-theme="dark"] .rd-workflow .form-select.is-invalid {
    border-color: #e99f9b;
}
:root[data-bs-theme="dark"] .rd-workflow .table,
:root[data-bs-theme="dark"] .rd-editor .table,
:root[data-bs-theme="dark"] .rd-logbook .table,
:root[data-bs-theme="dark"] .journal-leg .table,
:root[data-bs-theme="dark"] .rd-train-data-timetable .table {
    --bs-table-bg: var(--rd-surface);
    --bs-table-color: var(--rd-text);
    --bs-table-striped-bg: #273941;
    --bs-table-striped-color: var(--rd-text);
    --bs-table-border-color: var(--rd-border);
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .table thead,
:root[data-bs-theme="dark"] .journal-leg .table thead {
    --bs-table-bg: #2e4248;
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table thead th,
:root[data-bs-theme="dark"] .rd-timetable-table th.rd-timetable-ist,
:root[data-bs-theme="dark"] .rd-logbook .table thead th {
    background-color: #2e4248;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-soll { background: #263940; }
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-ist { background: #28483e; }
:root[data-bs-theme="dark"] .rd-workflow .bg-light,
:root[data-bs-theme="dark"] .rd-logbook .bg-light,
:root[data-bs-theme="dark"] .journal-journey-list details.bg-light,
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-list details.bg-light,
:root[data-bs-theme="dark"] .rd-editor .bg-light,
:root[data-bs-theme="dark"] .rd-editor .bg-white {
    background: #293d44 !important;
    color: var(--rd-text) !important;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-state.planned { background: #294058; color: #b0d5f4; }
:root[data-bs-theme="dark"] .rd-logbook .journal-state.delayed,
:root[data-bs-theme="dark"] .rd-logbook .journal-state.warning { background: #4d3d25; color: #f5d08f; }
:root[data-bs-theme="dark"] .rd-logbook .journal-state.completed { background: #25463f; color: #ace8d1; }
:root[data-bs-theme="dark"] .rd-editor .rd-editor-tag-muted,
:root[data-bs-theme="dark"] .rd-editor .rd-stage-data-unavailable {
    background: #304049;
    color: #c5d2ce;
}
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-status-manual,
:root[data-bs-theme="dark"] .rd-editor .rd-stage-data-complete {
    background: #264a3b;
    color: #b1e9cf;
}
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-status-cancelled,
:root[data-bs-theme="dark"] .rd-editor .rd-stage-data-missing {
    background: #4a3237;
    color: #ffb6ad;
}
/* Bootstrap native components can be nested in workflow forms, including
   scan/import preview panels and standalone modal dialogs. */
:root[data-bs-theme="dark"] .card,
:root[data-bs-theme="dark"] .list-group-item,
:root[data-bs-theme="dark"] .modal-content,
:root[data-bs-theme="dark"] .modal-header,
:root[data-bs-theme="dark"] .modal-body,
:root[data-bs-theme="dark"] .modal-footer,
:root[data-bs-theme="dark"] .dropdown-menu,
:root[data-bs-theme="dark"] .accordion-item,
:root[data-bs-theme="dark"] .accordion-button,
:root[data-bs-theme="dark"] .offcanvas {
    background-color: var(--rd-surface);
    border-color: var(--rd-border);
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .accordion-button:not(.collapsed) {
    background-color: #29463e;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-workflow .alert-info,
:root[data-bs-theme="dark"] .rd-editor .alert-info,
:root[data-bs-theme="dark"] .alert-info { background-color: #263d43; color: #c4e8ed; border-color: #44656d; }
:root[data-bs-theme="dark"] .rd-workflow .alert-warning,
:root[data-bs-theme="dark"] .rd-editor .alert-warning,
:root[data-bs-theme="dark"] .alert-warning { background-color: #4d3d25; color: #f5d08f; border-color: #78613a; }
:root[data-bs-theme="dark"] .rd-workflow .alert-danger,
:root[data-bs-theme="dark"] .rd-editor .alert-danger,
:root[data-bs-theme="dark"] .alert-danger { background-color: #4a3237; color: #ffc5ba; border-color: #864c50; }
:root[data-bs-theme="dark"] .rd-workflow .alert-success,
:root[data-bs-theme="dark"] .rd-editor .alert-success,
:root[data-bs-theme="dark"] .alert-success { background-color: #25463f; color: #b1e9cf; border-color: #3b7063; }
:root[data-bs-theme="dark"] .rd-workflow .btn-outline-primary,
:root[data-bs-theme="dark"] .rd-editor .btn-outline-primary {
    --bs-btn-color: var(--rd-accent);
    --bs-btn-border-color: #709d92;
    --bs-btn-hover-color: #102b2e;
    --bs-btn-hover-bg: var(--rd-accent);
    --bs-btn-hover-border-color: var(--rd-accent);
}
:root[data-bs-theme="dark"] .rd-workflow .btn-primary,
:root[data-bs-theme="dark"] .rd-editor .btn-primary {
    --bs-btn-bg: var(--rd-accent);
    --bs-btn-color: #102b2e;
    --bs-btn-border-color: var(--rd-accent);
    --bs-btn-hover-bg: var(--rd-accent-strong);
    --bs-btn-hover-color: #102b2e;
    --bs-btn-hover-border-color: var(--rd-accent-strong);
}
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-actions .btn-outline-danger {
    background-color: var(--rd-surface);
    color: #ffb8b2;
    border-color: #ad6766;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-journey-actions .btn-outline-danger:hover {
    background-color: #4a3237;
    color: #ffd7d0;
}
:root[data-bs-theme="dark"] .rd-workflow .text-dark,
:root[data-bs-theme="dark"] .rd-editor .text-dark,
:root[data-bs-theme="dark"] .rd-logbook .text-dark { color: var(--rd-text) !important; }
:root[data-bs-theme="dark"] .rd-workflow .text-muted,
:root[data-bs-theme="dark"] .rd-editor .text-muted,
:root[data-bs-theme="dark"] .rd-logbook .text-muted { color: var(--rd-muted) !important; }


/* RailDiary 1.1 dark-mode contrast audit: explicitly theme nested component
   surfaces. The parent workflow/editor panels were already dark, but these
   child cards hardcode light surfaces in figma-home.css and journal.css.
   Avoid global "all divs" overrides: route badges, status chips, and maps
   carry their own semantic colors. */
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-leg,
:root[data-bs-theme="dark"] .rd-editor .rd-workflow-leg,
:root[data-bs-theme="dark"] .rd-editor-corrected .journal-chain-inline .modal-body > .border,
:root[data-bs-theme="dark"] .rd-editor-corrected .journal-chain-inline .modal-body > .form-check,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .modal-body > .border,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .modal-body > .form-check,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-timetable,
:root[data-bs-theme="dark"] .rd-workflow .rd-train-data-timetable,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-accordion,
:root[data-bs-theme="dark"] .rd-workflow .rd-train-data-accordion {
    background: var(--rd-surface);
    color: var(--rd-text);
    border-color: var(--rd-border) !important;
}
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-leg,
:root[data-bs-theme="dark"] .rd-editor-corrected .journal-chain-inline .modal-body > .border,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .modal-body > .border {
    background: #24353b;
}
/* The initial journey and replacement-leg forms contain controls using
   Bootstrap utility colors. Keep labels and placeholders legible on dark. */
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-leg .form-label,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .form-label,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-timetable .form-label,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-timetable h4,
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-leg strong,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .modal-body > .form-check .form-check-label,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .modal-body > .border strong {
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-workflow .rd-workflow-leg .text-secondary,
:root[data-bs-theme="dark"] .rd-editor .journal-chain-inline .text-secondary,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-timetable .form-text,
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-timetable .rd-train-data-section-heading p {
    color: var(--rd-muted) !important;
}
:root[data-bs-theme="dark"] .rd-editor .rd-train-data-accordion[open] > summary {
    background: #29413f;
    color: var(--rd-text);
}
/* Preserve Soll/Ist distinction without turning the timetable white. */
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table thead th,
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table thead th.rd-timetable-soll,
:root[data-bs-theme="dark"] .rd-workflow .rd-timetable-table thead th {
    background: #30434a;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table thead th.rd-timetable-ist {
    background: #31544c;
    color: #e2f5e9;
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-soll,
:root[data-bs-theme="dark"] .rd-workflow .rd-timetable-table td.rd-timetable-soll {
    background: #23373e;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table td.rd-timetable-ist,
:root[data-bs-theme="dark"] .rd-workflow .rd-timetable-table td.rd-timetable-ist {
    background: #29483e;
    color: var(--rd-text);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-legend-soll,
:root[data-bs-theme="dark"] .rd-workflow .rd-timetable-legend-soll {
    color: #c4d0d0;
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-legend-ist,
:root[data-bs-theme="dark"] .rd-workflow .rd-timetable-legend-ist {
    color: #a5dec5;
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-stop-description {
    color: var(--rd-muted);
}
:root[data-bs-theme="dark"] .rd-editor .rd-timetable-table .form-control.rd-timetable-platform-change {
    color: #ffaaa2;
}
/* The Trassenfinder section includes a <details> wrapper, stop list and
   footer. Each has an explicit light background in the original stylesheet. */
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stops,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stops-list,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-inline-footer,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stops,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stops-list,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-inline-footer {
    background: #20333a;
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stops > summary,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stops > summary,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stop {
    color: var(--rd-text);
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop-excluded,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stop-excluded {
    background: #2a393e;
    color: var(--rd-muted);
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-waypoint,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-waypoint {
    background: #21463c;
    border-left-color: var(--rd-accent);
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-waypoint .rd-trassenfinder-stop-name,
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-waypoint-kind,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-waypoint .rd-trassenfinder-stop-name,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-waypoint-kind {
    color: #aae6ca;
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop .form-control,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stop .form-control {
    color: var(--rd-text);
    background: #162b32;
    border-color: var(--rd-border);
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop .form-control:disabled,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stop .form-control:disabled {
    color: var(--rd-muted);
    background: #33444b;
}
:root[data-bs-theme="dark"] .rd-editor .rd-trassenfinder-stop .is-invalid,
:root[data-bs-theme="dark"] .rd-workflow .rd-trassenfinder-stop .is-invalid {
    background: #442d34;
    border-color: #e99f9b;
}
/* Don't let nested light Bootstrap callouts break the form's dark surface. */
:root[data-bs-theme="dark"] .rd-workflow .bg-info-subtle,
:root[data-bs-theme="dark"] .rd-editor .bg-info-subtle {
    --bs-info-bg-subtle: #23434d;
    --bs-info-text-emphasis: #b8e8f2;
    color: #b8e8f2;
}
:root[data-bs-theme="dark"] .rd-workflow .bg-success-subtle,
:root[data-bs-theme="dark"] .rd-editor .bg-success-subtle {
    --bs-success-bg-subtle: #244638;
    --bs-success-text-emphasis: #b2e8c9;
    color: #b2e8c9;
}
/* Regular editor/card borders stay subtle; validation must remain red. */
:root[data-bs-theme="dark"] .rd-workflow-leg.leg-has-errors,
:root[data-bs-theme="dark"] .rd-editor .leg-has-errors {
    border-color: #e99f9b !important;
}

/* RIS-style punctuality for displayed and editable IST times.
   Only the clock text changes color; the day-offset dropdown and red
   validation borders for inconsistent stop times stay untouched. */
.rd-timetable-table input.form-control.rd-timetable-time-punctual,
.train-timetable td.rd-timetable-time-punctual {
    color: #17783c;
    font-weight: 600;
}
.rd-timetable-table input.form-control.rd-timetable-time-late,
.train-timetable td.rd-timetable-time-late {
    color: #c52c36;
    font-weight: 600;
}
:root[data-bs-theme="dark"] .rd-timetable-table input.form-control.rd-timetable-time-punctual,
:root[data-bs-theme="dark"] .train-timetable td.rd-timetable-time-punctual {
    color: #80dca0;
}
:root[data-bs-theme="dark"] .rd-timetable-table input.form-control.rd-timetable-time-late,
:root[data-bs-theme="dark"] .train-timetable td.rd-timetable-time-late {
    color: #ff8989;
}

/* Explicit GTFS/RIS timetable selection: readable in both themes. */
.rd-gtfs-selected-row > * {
    background-color: #d5ebe4 !important;
    color: #153b31 !important;
}
.rd-gtfs-selected-row .text-secondary {
    color: #3d6259 !important;
}
:root[data-bs-theme="dark"] .rd-gtfs-selected-row > * {
    background-color: #254b46 !important;
    color: #f0faf6 !important;
}
:root[data-bs-theme="dark"] .rd-gtfs-selected-row .text-secondary {
    color: #c1d9d1 !important;
}

/* Reuse the RIS punctuality palette in the compact logbook IST summary.
   Explicit selectors override the muted metadata color without affecting SOLL. */
.rd-logbook .journal-leg-meta .rd-timetable-time-punctual {
    color: #17783c;
    font-weight: 600;
}
.rd-logbook .journal-leg-meta .rd-timetable-time-late {
    color: #c52c36;
    font-weight: 600;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-leg-meta .rd-timetable-time-punctual {
    color: #80dca0;
}
:root[data-bs-theme="dark"] .rd-logbook .journal-leg-meta .rd-timetable-time-late {
    color: #ff8989;
}

/* Timeline symbols retain contrast against the darker logbook surface. */
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-icon {
    background: #32665c;
    color: #f1fbf7;
}
:root[data-bs-theme="dark"] .rd-logbook .rd-logbook-leg-not-taken .rd-logbook-leg-icon {
    background: #34454b;
    color: #afc3c1;
}
