html, body {
    height: 100vh;
    overflow: hidden;
}

/* Radzen dropdown popup above Bootstrap modals */
.rz-popup {
    z-index: 1060 !important;
}

/* ===== Design Tokens ===== */
:root {
    /* --- Radius --- */
    --radius-xs: 4px;
    --radius-sm: 6px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;
    --radius-2xl: 20px;
    --radius-full: 999px;

    /* --- Shadows --- */
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
    --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    --shadow-focus: 0 0 0 3px rgba(13, 72, 112, 0.15);

    /* --- Brand / Primary --- */
    --primary-color: #0d4870;
    --primary-hover: #0a3a5a;
    --primary-light: #d5e9f7;
    --primary-lighter: #e8f2fb;
    --primary-subtle: #f0f6fb;
    --brand-gradient-start: #0D4970;
    --brand-gradient-end: #1a6fa3;

    /* Reusable header gradient (3-stop brand gradient) */
    --header-gradient: linear-gradient(135deg, #0d4870 0%, #155d8f 50%, #1a6da3 100%);
    --primary-icon-bg: linear-gradient(135deg, #e8f2fb 0%, #d5e9f7 100%);
    --details-panel-bg: linear-gradient(180deg, #f0f6fb 0%, var(--bg-body) 40%);
    --details-panel-warm-bg: linear-gradient(180deg, #fffdf5 0%, var(--bg-body) 40%);

    /* --- Semantic status --- */
    --secondary-color: #eaebec;
    --success-bg: #e6f4e6;
    --success-border: #4caf50;
    --success-text: #2e4a1e;
    --warning-bg: #fff2e6;
    --warning-border: #ff9800;
    --warning-text: #5a4209;
    --danger-bg: #ffe6e6;
    --danger-border: #dc3545;
    --danger-text: #8b0000;

    /* --- Surface / Background --- */
    --bg-body: #ffffff;
    --bg-secondary: #f4f4f4;
    --bg-tertiary: #f8fafc;
    --bg-surface: #ffffff;
    --bg-surface-hover: #f3f6fa;
    --bg-surface-active: #e8f2fb;
    --bg-muted: #eaebec;
    --bg-input: #eaeaea;
    --bg-overlay: rgba(0, 0, 0, 0.5);

    /* --- Text --- */
    --text-dark: #333333;
    --text-light: #666666;
    --text-primary: #333333;
    --text-secondary: #666666;
    --text-muted: #8896a6;
    --text-brand: #0D4970;
    --text-on-primary: #ffffff;

    /* --- Borders --- */
    --border-color: #d0d0d0;
    --border-light: #e5e7eb;
    --border-card: #e8ecf0;
    --border-divider: #f0f3f7;
    --border-focus: #0D496F;

    /* --- Card --- */
    --card-bg: #ffffff;
    --card-border: #e8ecf0;

    /* --- Sidebar --- */
    --sidebar-bg: #f4f4f4;
    --sidebar-card-bg: #f8fafc;

    /* --- Scrollbar --- */
    --scrollbar-thumb: #c5cdd6;
    --scrollbar-thumb-hover: #9ba8b4;
    --scrollbar-track: transparent;
}

/* ===== Dark Theme =====
   Modern, organic dark palette with subtle blue undertone.
   Backgrounds use slightly bluish near-blacks (not pure #000) for depth.
   Primary tuned to a softer sky blue for comfortable readability. */
[data-theme="dark"] {
    --primary-color: #6aa9f5;
    --primary-hover: #8cc0fa;
    --primary-light: #1a3252;
    --primary-lighter: #142441;
    --primary-subtle: #0f1a2e;
    --brand-gradient-start: #1d3a66;
    --brand-gradient-end: #2563eb;

    /* Reusable header gradient — softer, more atmospheric in dark */
    --header-gradient: linear-gradient(135deg, #142a4a 0%, #1d3a66 50%, #2151a8 100%);
    --primary-icon-bg: linear-gradient(135deg, #1a3252 0%, #142441 100%);
    --details-panel-bg: linear-gradient(180deg, #11151c 0%, var(--bg-body) 40%);
    --details-panel-warm-bg: linear-gradient(180deg, #1a160e 0%, var(--bg-body) 40%);

    --secondary-color: #232328;
    --success-bg: #0a2e1a;
    --success-border: #34d399;
    --success-text: #86efac;
    --warning-bg: #2e2208;
    --warning-border: #fbbf24;
    --warning-text: #fcd34d;
    --danger-bg: #2e0c0c;
    --danger-border: #f87171;
    --danger-text: #fca5a5;

    /* Backgrounds — warm near-black with subtle blue tint, not flat #000 */
    --bg-body: #0c0d10;
    --bg-secondary: #16171c;
    --bg-tertiary: #191a20;
    --bg-surface: #14151a;
    --bg-surface-hover: #20222a;
    --bg-surface-active: #1a3252;
    --bg-muted: #232428;
    --bg-input: #1a1b21;
    --bg-overlay: rgba(0, 0, 0, 0.72);

    --text-dark: #f4f4f5;
    --text-light: #a1a1aa;
    --text-primary: #e6e7eb;
    --text-secondary: #b0b1b8;
    --text-muted: #71727b;
    --text-brand: #6aa9f5;
    --text-on-primary: #ffffff;

    --border-color: #2a2c33;
    --border-light: #1f2026;
    --border-card: #25272e;
    --border-divider: #20222a;
    --border-focus: #6aa9f5;

    --card-bg: #14151a;
    --card-border: #25272e;

    --sidebar-bg: #0e0f13;
    --sidebar-card-bg: #16171c;

    --scrollbar-thumb: #3a3c44;
    --scrollbar-thumb-hover: #52545d;
    --scrollbar-track: transparent;

    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.45);
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.35);
    --shadow-md: 0 4px 14px rgba(0, 0, 0, 0.5);
    --shadow-lg: 0 10px 20px -3px rgba(0, 0, 0, 0.6), 0 4px 8px -2px rgba(0, 0, 0, 0.4);
    --shadow-xl: 0 20px 32px -8px rgba(0, 0, 0, 0.65), 0 8px 12px -4px rgba(0, 0, 0, 0.45);
    --shadow-focus: 0 0 0 3px rgba(106, 169, 245, 0.22);

    color-scheme: dark;
}

/* ===== Smooth theme transition =====
   Animate background/border/color changes when [data-theme] flips,
   so the switch feels intentional instead of a jarring repaint.
   Excludes layout-affecting properties to avoid animation jank. */
html,
body,
.card,
.card-header,
.card-body,
.modal-content,
.dropdown-menu,
.nav-link,
.list-group-item,
.btn,
.form-control,
.form-select,
.table,
.alert,
.accordion-item,
.accordion-button,
.input-group-text,
.rz-card,
.rz-panel,
.rz-button,
.rz-textbox,
.rz-password,
.rz-inputtext,
.rz-dropdown,
.rz-multiselect,
.rz-datepicker-input,
.rz-popup,
.rz-dialog,
.rz-notification,
.rz-tooltip,
.rz-paginator,
.rz-progressbar,
.rz-state-highlight,
.rz-multiselect-chip,
.rz-datatable,
.rz-datatable-thead > tr > th,
.rz-datatable-tbody > tr,
.theme-toggle-card,
.theme-slider,
.navigation-card,
.logout-card,
.noti-card,
.noti-header,
.noti-item,
.details-panel,
.detail-info-card,
.detail-info-row,
.detail-info-icon,
.detail-input,
.detail-textarea,
.todo-container,
.panel-documents-section,
.panel-document-item,
.btn-doc-upload,
.btn-doc-action,
.route-select-item,
.route-stat-chip,
.route-segment-card,
.route-segment-header,
.transport-type-btn,
.private-notes-container,
.private-note-item,
.private-note-input,
.login-container,
.login-card,
.custom-input {
    transition: background-color 0.28s ease, color 0.28s ease, border-color 0.28s ease, box-shadow 0.28s ease;
}

/* User-toggled override beats prefers-reduced-motion when explicitly switching theme.
   Otherwise respect reduced-motion preferences. */
@media (prefers-reduced-motion: reduce) {
    html, body, .card, .card-header, .card-body, .modal-content,
    .dropdown-menu, .nav-link, .list-group-item, .btn, .form-control,
    .form-select, .table, .alert, .rz-card, .rz-panel, .rz-button,
    .details-panel, .detail-info-card, .login-container, .login-card {
        transition: none;
    }
}

/* Dark theme global overrides */
[data-theme="dark"] body {
    background-color: var(--bg-body);
    color: var(--text-primary);
}

[data-theme="dark"] .bg-light {
    background-color: var(--bg-secondary) !important;
}

[data-theme="dark"] .bg-white {
    background-color: var(--bg-surface) !important;
}

[data-theme="dark"] .text-muted {
    color: var(--text-muted) !important;
}

[data-theme="dark"] .border-end {
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .border-start {
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .border {
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .card {
    background-color: var(--card-bg);
    border-color: var(--card-border);
    color: var(--text-primary);
}

[data-theme="dark"] .card-header {
    background-color: var(--bg-surface) !important;
    border-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .card-body {
    background-color: var(--sidebar-card-bg);
    color: var(--text-primary);
}

[data-theme="dark"] .list-group-item {
    background-color: var(--bg-surface);
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .form-control,
[data-theme="dark"] .form-select {
    background-color: var(--bg-input);
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .form-control:focus,
[data-theme="dark"] .form-select:focus {
    background-color: var(--bg-input);
    color: var(--text-primary);
    border-color: var(--border-focus);
    box-shadow: 0 0 0 0.2rem rgba(91, 155, 213, 0.25);
}

[data-theme="dark"] .form-label {
    color: var(--text-secondary);
}

[data-theme="dark"] .table {
    color: var(--text-primary);
    --bs-table-color: var(--text-primary);
    --bs-table-bg: var(--bg-surface);
    --bs-table-border-color: var(--border-color);
    --bs-table-striped-color: var(--text-primary);
    --bs-table-striped-bg: var(--bg-tertiary);
    --bs-table-hover-color: var(--text-primary);
    --bs-table-hover-bg: var(--bg-surface-hover);
    --bs-table-active-color: var(--text-primary);
    --bs-table-active-bg: var(--bg-surface-active);
}

[data-theme="dark"] .table > :not(caption) > * > * {
    color: var(--text-primary);
    background-color: var(--bg-surface);
    border-bottom-color: var(--border-color);
}

[data-theme="dark"] .modal-content {
    background-color: var(--bg-surface);
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .alert-info {
    background-color: var(--primary-subtle) !important;
    border-color: var(--primary-color) !important;
    color: var(--primary-color) !important;
}

[data-theme="dark"] .dropdown-menu {
    background-color: var(--bg-surface);
    border-color: var(--border-color);
}

[data-theme="dark"] .dropdown-item {
    color: var(--text-primary);
}

[data-theme="dark"] .dropdown-item:hover {
    background-color: var(--bg-surface-hover);
    color: var(--text-primary);
}

/* Dark theme Radzen overrides */
[data-theme="dark"] .rz-textbox,
[data-theme="dark"] .rz-password,
[data-theme="dark"] .rz-inputtext,
[data-theme="dark"] .rz-dropdown,
[data-theme="dark"] .rz-multiselect,
[data-theme="dark"] .rz-datepicker-input {
    background-color: var(--bg-input) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .rz-textbox:focus,
[data-theme="dark"] .rz-password:focus,
[data-theme="dark"] .rz-inputtext:focus {
    border-color: var(--border-focus) !important;
    box-shadow: 0 0 0 0.2rem rgba(91, 155, 213, 0.25) !important;
}

[data-theme="dark"] .rz-datatable .rz-datatable-thead > tr > th {
    background-color: var(--bg-tertiary);
    color: var(--text-secondary);
    border-color: var(--border-color);
}

[data-theme="dark"] .rz-datatable .rz-datatable-tbody > tr {
    background-color: var(--bg-surface);
    color: var(--text-primary);
    border-color: var(--border-color);
}

[data-theme="dark"] .rz-datatable .rz-datatable-tbody > tr:hover {
    background-color: var(--bg-surface-hover);
}

[data-theme="dark"] .rz-popup {
    background-color: var(--bg-surface) !important;
    border-color: var(--border-color) !important;
    color: var(--text-primary) !important;
}

[data-theme="dark"] .rz-dropdown-item {
    color: var(--text-primary) !important;
}

[data-theme="dark"] .rz-dropdown-item:hover {
    background-color: var(--bg-surface-hover) !important;
}

[data-theme="dark"] .rz-panel {
    background-color: var(--bg-surface);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-scheduler {
    background-color: var(--bg-surface);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-button.rz-variant-text {
    color: var(--text-primary);
}

/* Dark: border-bottom on header/sections */
[data-theme="dark"] .border-bottom {
    border-color: var(--border-color) !important;
}

/* Dark: Radzen button base style */
[data-theme="dark"] .rz-button.rz-variant-flat,
[data-theme="dark"] .rz-button.rz-base {
    color: var(--text-primary);
}

/* Dark: Sidebar navigation buttons — muted, not bright */
[data-theme="dark"] .navigation-card .card-body .rz-button {
    color: var(--text-secondary) !important;
    background: transparent !important;
    border: none !important;
    border-radius: 10px !important;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
    position: relative !important;
}

[data-theme="dark"] .navigation-card .card-body .rz-button:hover {
    color: #e2e8f0 !important;
    background: linear-gradient(135deg, rgba(96, 165, 250, 0.1), rgba(37, 99, 235, 0.08)) !important;
    box-shadow: 0 0 12px rgba(96, 165, 250, 0.1), inset 0 0 0 1px rgba(96, 165, 250, 0.15) !important;
    transform: translateX(4px) !important;
}

[data-theme="dark"] .navigation-card .card-body .rz-button:active {
    background: linear-gradient(135deg, rgba(96, 165, 250, 0.18), rgba(37, 99, 235, 0.14)) !important;
    transform: translateX(2px) !important;
    box-shadow: 0 0 8px rgba(96, 165, 250, 0.12), inset 0 0 0 1px rgba(96, 165, 250, 0.2) !important;
}

[data-theme="dark"] .navigation-card .card-body .rz-button .rz-button-icon-left {
    color: var(--text-muted) !important;
    transition: color 0.25s ease, filter 0.25s ease !important;
}

[data-theme="dark"] .navigation-card .card-body .rz-button:hover .rz-button-icon-left {
    color: #60a5fa !important;
    filter: drop-shadow(0 0 4px rgba(96, 165, 250, 0.4)) !important;
}

/* Dark: Sidebar logout button — subtle, not bright */
[data-theme="dark"] .logout-card {
    border-color: var(--border-light) !important;
    background-color: transparent !important;
}

[data-theme="dark"] .logout-card:hover {
    border-color: rgba(248, 113, 113, 0.25) !important;
    background-color: rgba(69, 10, 10, 0.4) !important;
}

[data-theme="dark"] .logout-card .rz-button {
    color: var(--text-secondary) !important;
    background: transparent !important;
}

[data-theme="dark"] .logout-card .rz-button .rz-button-icon-left {
    color: var(--text-muted) !important;
}

[data-theme="dark"] .logout-card:hover .rz-button {
    color: var(--danger-text) !important;
}

[data-theme="dark"] .logout-card:hover .rz-button .rz-button-icon-left {
    color: var(--danger-text) !important;
}

/* Dark: Sidebar navigation card — blend into dark sidebar */
[data-theme="dark"] .navigation-card {
    background: transparent !important;
    border: 1px solid var(--border-light) !important;
    box-shadow: none !important;
}

[data-theme="dark"] .navigation-card .card-body {
    background-color: transparent !important;
}

[data-theme="dark"] .navigation-card .bg-gradient-primary {
    background: linear-gradient(135deg, #1e3a5f 0%, #172554 100%) !important;
}

/* Dark: Sidebar theme toggle — subtle */
[data-theme="dark"] .theme-toggle-card {
    background-color: transparent !important;
    border-color: var(--border-light) !important;
}

[data-theme="dark"] .theme-toggle-label {
    color: var(--text-secondary) !important;
}

/* Dark: Radzen date picker, calendar popup (Radzen 8 — .rz-calendar structure) */
[data-theme="dark"] .rz-datepicker-popup-container {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-calendar,
[data-theme="dark"] .rz-calendar-view-container,
[data-theme="dark"] .rz-calendar-view {
    background-color: var(--card-bg);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-calendar-header {
    background-color: var(--bg-secondary);
    border-bottom-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-calendar-title,
[data-theme="dark"] .rz-calendar-prev .rzi,
[data-theme="dark"] .rz-calendar-next .rzi {
    color: var(--text-primary);
}

[data-theme="dark"] .rz-calendar-view th {
    color: var(--text-muted);
}

[data-theme="dark"] .rz-calendar-view td .rz-state-default {
    color: var(--text-primary);
}

[data-theme="dark"] .rz-calendar-view td .rz-state-default.rz-state-focused,
[data-theme="dark"] .rz-calendar-view td .rz-state-default:hover {
    background-color: var(--bg-surface-hover);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-datepicker-footer {
    background-color: var(--card-bg);
    border-top-color: var(--border-color);
    color: var(--text-primary);
}

/* Dark: accordion, collapse panels */
[data-theme="dark"] .accordion-item {
    background-color: var(--card-bg);
    border-color: var(--border-color);
    color: var(--text-primary);
}

[data-theme="dark"] .accordion-button {
    background-color: var(--bg-surface);
    color: var(--text-primary);
}

[data-theme="dark"] .accordion-button:not(.collapsed) {
    background-color: var(--bg-surface-active);
    color: var(--text-brand);
}

/* Dark: generic white bg overrides for inline styles */
[data-theme="dark"] .p-3,
[data-theme="dark"] .p-4 {
    color: var(--text-primary);
}

/* Dark: overflow panels, detail scroll areas */
[data-theme="dark"] .overflow-auto,
[data-theme="dark"] .overflow-y-auto {
    color: var(--text-primary);
}

/* Dark: h1-h6 headings */
[data-theme="dark"] h1,
[data-theme="dark"] h2,
[data-theme="dark"] h3,
[data-theme="dark"] h4,
[data-theme="dark"] h5,
[data-theme="dark"] h6 {
    color: var(--text-primary);
}

/* Dark: small, label, span text */
[data-theme="dark"] small {
    color: var(--text-muted);
}

[data-theme="dark"] label {
    color: var(--text-secondary);
}

/* Dark: tab/nav pills */
[data-theme="dark"] .nav-link {
    color: var(--text-secondary);
}

[data-theme="dark"] .nav-link.active {
    background-color: var(--primary-color);
    color: var(--text-on-primary);
}

/* Dark: Radzen tooltip */
[data-theme="dark"] .rz-tooltip {
    background-color: var(--bg-surface) !important;
    color: var(--text-primary) !important;
    border: 1px solid var(--border-color) !important;
}

/* Dark: Radzen dialog */
[data-theme="dark"] .rz-dialog {
    background-color: var(--bg-surface);
    color: var(--text-primary);
}

[data-theme="dark"] .rz-dialog-titlebar {
    background-color: var(--bg-tertiary);
    color: var(--text-primary);
    border-color: var(--border-color);
}

/* Dark: general bg-primary override for Bootstrap — keep brand gradient */
[data-theme="dark"] .bg-primary {
    background-color: var(--primary-color) !important;
}

/* Dark: Radzen notification */
[data-theme="dark"] .rz-notification {
    background-color: var(--bg-surface) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

/* Dark: Radzen state overrides */
[data-theme="dark"] .rz-state-highlight {
    background-color: var(--primary-light) !important;
    color: var(--primary-color) !important;
}

[data-theme="dark"] .rz-multiselect-chip {
    background-color: var(--primary-light) !important;
    color: var(--primary-color) !important;
    border-color: var(--border-color) !important;
}

/* Dark: Radzen pager */
[data-theme="dark"] .rz-paginator {
    background-color: var(--bg-surface) !important;
    color: var(--text-primary) !important;
}

/* Dark: progress track */
[data-theme="dark"] .rz-progressbar {
    background-color: var(--bg-muted) !important;
}

/* Dark: dialog detail-value wrappers (used inline as bg #eaeaea) */
[data-theme="dark"] .detail-value {
    background-color: var(--bg-tertiary) !important;
}

/* Dark: inline alert with teal/red accent (used in create dialogs) */
[data-theme="dark"] .alert[style*="#00a99d"] {
    background-color: rgba(0, 169, 157, 0.1) !important;
}

[data-theme="dark"] .alert[style*="#cf5954"] {
    background-color: rgba(207, 89, 84, 0.1) !important;
}

/* Dark: attempt-item cards (EmployeeCard inline) */
[data-theme="dark"] .attempt-item {
    background-color: var(--bg-tertiary) !important;
    border-color: var(--border-color) !important;
}

/* Dark: inline route stat blocks */
[data-theme="dark"] .segment-cost-time {
    border-left-color: var(--border-color) !important;
}

/* Dark: placeholder text for all inputs */
[data-theme="dark"] ::placeholder {
    color: var(--text-muted) !important;
    opacity: 1;
}

[data-theme="dark"] .rz-placeholder {
    color: var(--text-muted) !important;
}

[data-theme="dark"] .rz-multiselect-label {
    color: var(--text-muted) !important;
}

/* Dark: Bootstrap table overrides */
[data-theme="dark"] .table-light {
    --bs-table-bg: var(--bg-tertiary) !important;
    --bs-table-color: var(--text-primary) !important;
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
}

[data-theme="dark"] .table-light th {
    background-color: var(--bg-tertiary) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

[data-theme="dark"] .table-active {
    --bs-table-bg: var(--bg-surface-active) !important;
    --bs-table-color: var(--text-primary) !important;
}

[data-theme="dark"] .table-hover > tbody > tr:hover {
    --bs-table-hover-bg: var(--bg-surface-hover) !important;
    --bs-table-hover-color: var(--text-primary) !important;
}

/* Dark: Bootstrap input-group */
[data-theme="dark"] .input-group-text {
    background-color: var(--bg-input) !important;
    border-color: var(--border-color) !important;
    color: var(--text-secondary) !important;
}

/* Dark: Bootstrap text utilities */
[data-theme="dark"] .text-dark {
    color: var(--text-primary) !important;
}

[data-theme="dark"] .text-primary {
    color: var(--primary-color) !important;
}

/* Dark: Bootstrap form controls */
[data-theme="dark"] .form-check-label {
    color: var(--text-primary);
}

[data-theme="dark"] .form-control-plaintext {
    color: var(--text-primary);
}

/* Dark: Bootstrap container bg */
[data-theme="dark"] .container-fluid {
    color: var(--text-primary);
}

/* ===== Dark: blanket safety nets =====
   Many component-scoped CSS files hardcode the legacy text color #1a2b3c
   and the legacy divider color #f0f3f7. Override them globally so even
   components without explicit dark overrides remain readable. */
[data-theme="dark"] .detail-info-val,
[data-theme="dark"] .detail-input,
[data-theme="dark"] .detail-textarea,
[data-theme="dark"] .todo-text,
[data-theme="dark"] .todo-input,
[data-theme="dark"] .document-name,
[data-theme="dark"] .rename-input,
[data-theme="dark"] .private-note-text,
[data-theme="dark"] .private-note-edit,
[data-theme="dark"] .private-note-input,
[data-theme="dark"] .private-notes-title,
[data-theme="dark"] .waypoint-task-name,
[data-theme="dark"] .route-segment-title,
[data-theme="dark"] .detail-result-text {
    color: var(--text-primary) !important;
}

/* Selection highlight blends with primary in dark */
[data-theme="dark"] ::selection {
    background-color: rgba(106, 169, 245, 0.3);
    color: var(--text-primary);
}

[data-theme="dark"] .drop-zone-text {
    color: var(--text-secondary) !important;
}

[data-theme="dark"] .drop-zone-hint {
    color: var(--text-muted) !important;
}

/* Legacy white-bg utilities that fight dark theme */
[data-theme="dark"] [style*="background-color: #fff"],
[data-theme="dark"] [style*="background: #fff"],
[data-theme="dark"] [style*="background-color:#fff"],
[data-theme="dark"] [style*="background:#fff"] {
    background-color: var(--bg-surface) !important;
    background: var(--bg-surface) !important;
}

/* ===== Dark: detail-panel global overrides =====
   Many board-details components share an identical CSS skeleton with a
   navy-blue gradient header and light-blue accents. Override centrally
   so every panel inherits the modern dark look without per-file edits. */

/* The classic 3-stop navy gradient header used across all *BoardDetails */
[data-theme="dark"] .detail-card-header,
[data-theme="dark"] .route-preview-header {
    background: var(--header-gradient) !important;
    box-shadow: 0 4px 18px rgba(0, 0, 0, 0.45) !important;
}

/* Detail panel root background (light gradient → dark surface) */
[data-theme="dark"] .details-panel {
    background: var(--details-panel-bg);
}

/* Detail-info-icon — pale blue gradient → dark navy */
[data-theme="dark"] .detail-info-icon,
[data-theme="dark"] .document-icon {
    background: var(--primary-icon-bg) !important;
    color: var(--primary-color) !important;
}

/* Generic info card divider (#f0f3f7) reused across many components */
[data-theme="dark"] .detail-info-row,
[data-theme="dark"] .waypoint-task,
[data-theme="dark"] .document-item,
[data-theme="dark"] .panel-document-item,
[data-theme="dark"] .panel-documents-header,
[data-theme="dark"] .panel-upload-progress,
[data-theme="dark"] .documents-list-header {
    border-bottom-color: var(--border-color) !important;
}

[data-theme="dark"] .todo-header,
[data-theme="dark"] .todo-add,
[data-theme="dark"] .todo-actions,
[data-theme="dark"] .todo-item {
    border-color: var(--border-color);
}

/* Hover states that used the legacy bg-tertiary/light blue */
[data-theme="dark"] .todo-item:hover,
[data-theme="dark"] .panel-document-item:hover,
[data-theme="dark"] .document-item:hover,
[data-theme="dark"] .waypoint-task:hover,
[data-theme="dark"] .detail-info-row:hover {
    background-color: var(--bg-surface-hover);
}

/* Document/panel scrollbar custom selectors */
[data-theme="dark"] .details-scroll::-webkit-scrollbar-thumb,
[data-theme="dark"] .panel-documents-body::-webkit-scrollbar-thumb {
    background-color: var(--scrollbar-thumb);
}

[data-theme="dark"] .details-scroll::-webkit-scrollbar-thumb:hover,
[data-theme="dark"] .panel-documents-body::-webkit-scrollbar-thumb:hover {
    background-color: var(--scrollbar-thumb-hover);
}

/* Doc upload/action buttons (typically hardcoded #0d4870) */
[data-theme="dark"] .btn-doc-upload,
[data-theme="dark"] .btn-doc-action {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
    color: var(--primary-color);
}

[data-theme="dark"] .btn-doc-upload:hover,
[data-theme="dark"] .btn-doc-action:hover {
    background: var(--primary-color);
    border-color: var(--primary-color);
    color: var(--text-on-primary);
}

/* Result card gradient (light gray → light navy) */
[data-theme="dark"] .detail-result-card {
    background: var(--bg-tertiary);
    border-color: var(--border-color);
}

/* Status section dropdown */
[data-theme="dark"] .detail-status-section {
    background: var(--bg-surface);
    border-color: var(--border-color);
}

/* Panel documents section */
[data-theme="dark"] .panel-documents-section,
[data-theme="dark"] .documents-list,
[data-theme="dark"] .todo-container,
[data-theme="dark"] .detail-info-card {
    background: var(--bg-surface);
    border-color: var(--border-card);
}

/* ===== Dark: card/board grid common patterns ===== */

/* Project/dash cards — ensure body backgrounds match dark surface */
[data-theme="dark"] .project-card,
[data-theme="dark"] .appeal-card,
[data-theme="dark"] .employee-card,
[data-theme="dark"] .kdp-card,
[data-theme="dark"] .req-card {
    background-color: var(--card-bg);
    border-color: var(--card-border);
    color: var(--text-primary);
}

/* ===== Mobile responsive ===== */
@media (max-width: 768px) {
    .mobile-hidden {
        display: none !important;
    }

    .mobile-full-width {
        width: 100% !important;
    }
}

.btn-new-appeal {
    background-color: var(--bg-body) !important;
    color: var(--primary-color) !important;
    border: 1.5px solid var(--primary-color) !important;
    font-weight: 600;
    border-radius: var(--radius-md) !important;
    box-shadow: var(--shadow-xs);
    transition: all 0.2s ease;
}

.btn-new-appeal:hover {
    background-color: var(--primary-light) !important;
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.btn-new-appeal:active {
    transform: translateY(0);
    box-shadow: var(--shadow-xs);
}

.project-card {
    transition: all 0.3s ease;
    cursor: pointer;
    background-color: var(--card-bg);
    border-color: var(--card-border);
}

    .project-card:hover {
        transform: translateY(-2px);
        box-shadow: var(--shadow-md);
    }

.project-status {
    padding: 4px 12px;
    border-radius: var(--radius-md);
    font-weight: 500;
    font-size: 11px;
}

.status-active {
    background-color: var(--primary-light);
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
}

.status-completed {
    background-color: var(--success-bg);
    border: 1px solid var(--success-border);
    color: var(--success-text);
}

.status-waiting {
    background-color: var(--warning-bg);
    border: 1px solid var(--warning-border);
    color: var(--warning-text);
}

.status-suspended {
    background-color: var(--danger-bg);
    border: 1px solid var(--danger-border);
    color: var(--danger-text);
}

/* ===== Attempt status badges (global) ===== */
.attempt-status-new {
    background-color: #e0e7ff;
    color: #3730a3;
}

.attempt-status-in-progress {
    background-color: #dbeafe;
    color: #1e40af;
}

.attempt-status-employed {
    background-color: #dcfce7;
    color: #166534;
}

.attempt-status-fired {
    background-color: #fee2e2;
    color: #991b1b;
}

.attempt-status-dropped {
    background-color: #fef3c7;
    color: #92400e;
}

[data-theme="dark"] .attempt-status-new {
    background-color: #1e1b4b;
    color: #a5b4fc;
}

[data-theme="dark"] .attempt-status-in-progress {
    background-color: #172554;
    color: #93c5fd;
}

[data-theme="dark"] .attempt-status-employed {
    background-color: #052e16;
    color: #86efac;
}

[data-theme="dark"] .attempt-status-fired {
    background-color: #450a0a;
    color: #fca5a5;
}

[data-theme="dark"] .attempt-status-dropped {
    background-color: #422006;
    color: #fcd34d;
}

/* Mobile details panel */
@media (max-width: 767.98px) {
    .sidebar {
        display: none;
    }

    .projects-grid {
        overflow-x: auto;
    }

    .details-panel {
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        width: 100%;
        z-index: 1050;
        background-color: var(--bg-body);
        box-shadow: -2px 0 5px rgba(0,0,0,0.1);
    }
}

/* Badge styles */
.badge-primary {
    background-color: var(--primary-color) !important;
    color: var(--text-on-primary);
    border: 1px solid var(--primary-color);
}

.badge-success {
    background-color: var(--success-border) !important;
    color: #144214;
    border: 1px solid var(--success-border);
}

.badge-warning {
    background-color: #FFC107 !important;
    color: #856404;
    border: 1px solid #FFC107;
}

.badge-danger {
    background-color: var(--danger-border) !important;
    color: var(--text-on-primary);
    border: 1px solid var(--danger-border);
}

.badge-archived {
    background-color: #78909c !important;
    color: #ffffff;
    border: 1px solid #78909c;
}

[data-theme="dark"] .badge-success {
    color: #e6f4e6;
}

[data-theme="dark"] .badge-warning {
    color: #3a2a00;
}

/* Radzen component overrides */
.rz-card {
    border-radius: var(--radius-lg) !important;
}

[data-theme="dark"] .rz-card.rz-variant-filled {
    background-color: var(--card-bg) !important;
    color: var(--text-primary) !important;
    border-color: var(--border-color) !important;
}

.rz-button {
    border-radius: var(--radius-md) !important;
}

/* Animations */
.fade-in {
    animation: fadeIn 0.3s ease-in;
}

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes rowFlash {
    0% { background-color: rgba(255, 235, 59, 0.00); }
    20% { background-color: rgba(255, 235, 59, 0.60); }
    100% { background-color: rgba(255, 235, 59, 0.00); }
}

.row-flash {
    animation: rowFlash 900ms ease-in-out 1;
    transition: background-color 150ms ease-in-out;
    display: block;
}

/* ===== Responsive adjustments for small monitors ===== */
@media (max-width: 1400px) {
    .details-panel {
        font-size: 0.9rem;
    }

    .details-panel .form-label {
        font-size: 0.82rem;
        margin-bottom: 0.25rem;
    }

    .details-panel .form-control {
        font-size: 0.85rem;
        padding: 0.375rem 0.5rem;
    }

    .details-panel .mb-4 {
        margin-bottom: 0.75rem !important;
    }

    .details-panel .mb-3 {
        margin-bottom: 0.5rem !important;
    }

    .details-panel h4 {
        font-size: 1.1rem;
    }
}

/* ===== Content appearance animations ===== */
.content-appear {
    animation: contentAppear 0.35s ease-out;
}

@keyframes contentAppear {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Page transition wrapper */
.page-transition {
    animation: pageTransition 0.3s ease-out;
}

@keyframes pageTransition {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Small height screens - tighten vertical spacing */
@media (max-height: 768px) {
    .details-panel .mb-4 {
        margin-bottom: 0.5rem !important;
    }

    .details-panel .mb-3 {
        margin-bottom: 0.375rem !important;
    }

    .details-panel .p-3 {
        padding: 0.75rem !important;
    }
}

/* ===== Details panel animation ===== */
.details-panel-wrapper {
    transition: flex 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.3s ease,
                max-width 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    overflow: hidden;
    will-change: flex, opacity, max-width;
}

.details-panel-wrapper.panel-visible {
    flex: 0 0 25%;
    max-width: 25%;
    opacity: 1;
}

.details-panel-wrapper.panel-hidden {
    flex: 0 0 0%;
    max-width: 0%;
    opacity: 0;
    pointer-events: none;
}

/* ===== Panel content change animation ===== */
.panel-content-enter {
    animation: panelContentFadeIn 0.35s cubic-bezier(0.22, 0.61, 0.36, 1);
}

@keyframes panelContentFadeIn {
    0% {
        opacity: 0;
        transform: translateX(16px);
    }
    60% {
        opacity: 1;
    }
    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

.main-content-wrapper {
    transition: flex 0.35s cubic-bezier(0.4, 0, 0.2, 1),
                max-width 0.35s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: flex, max-width;
}

/* ===== Global scrollbar styling ===== */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}

*::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

*::-webkit-scrollbar-track {
    background: var(--scrollbar-track);
}

*::-webkit-scrollbar-thumb {
    background-color: var(--scrollbar-thumb);
    border-radius: var(--radius-full);
}
