/* ==========================================================================
   DigiHotel - Neumorphic Design System (Soft Tactile Luxury)
   Optimized CSS without excessive !important
   ========================================================================== */

/* ==========================================================================
   0. Local Fonts (Offline Support)
   ========================================================================== */
@font-face {
    font-family: 'Outfit';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url('fonts/outfit-variable.woff2') format('woff2');
}

@font-face {
    font-family: 'Orbitron';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('fonts/orbitron-700.woff') format('woff');
}

/* ==========================================================================
   1. CSS Variables - Light Mode (Default)
   ========================================================================== */
:root {
    /* Surface Colors */
    --neu-surface: #E8EAED;
    --neu-surface-alt: #E0E2E5;

    /* Shadow Colors */
    --neu-shadow-dark: #c8cacd;
    --neu-shadow-light: #ffffff;

    /* Accent Colors */
    --neu-primary: #4361EE;
    --neu-primary-dark: #3a5ad4;
    --neu-primary-light: #5a7af5;

    /* Semantic Colors */
    --neu-success: #2EC4B6;
    --neu-warning: #FF9F1C;
    --neu-error: #EF4444;
    --neu-info: #4361EE;

    /* Text Colors */
    --neu-text-primary: #111827;
    --neu-text-secondary: #374151;
    --neu-text-disabled: #6B7280;
    --neu-text-on-primary: #ffffff;

    /* Color Tinting — backgrounds semánticos para cards */
    --neu-blue-bg: #EEF1FD;
    --neu-blue-text: #2D43A5;
    --neu-teal-bg: #E8F8F6;
    --neu-teal-text: #1A7A70;
    --neu-amber-bg: #FEF3C7;
    --neu-amber-text: #92400E;
    --neu-indigo-bg: #EEF2FF;
    --neu-indigo-text: #3730A3;
    --neu-green-bg: #D1FAE5;
    --neu-green-text: #065F46;
    --neu-red-bg: #FEE2E2;
    --neu-red-text: #991B1B;

    /* Shadows - Precomposed */
    --neu-shadow-raised:
        8px 8px 16px var(--neu-shadow-dark),
        -8px -8px 16px var(--neu-shadow-light);
    --neu-shadow-raised-sm:
        4px 4px 8px var(--neu-shadow-dark),
        -4px -4px 8px var(--neu-shadow-light);
    --neu-shadow-raised-lg:
        12px 12px 24px var(--neu-shadow-dark),
        -12px -12px 24px var(--neu-shadow-light);
    --neu-shadow-inset:
        inset 4px 4px 8px var(--neu-shadow-dark),
        inset -4px -4px 8px var(--neu-shadow-light);
    --neu-shadow-inset-sm:
        inset 2px 2px 4px var(--neu-shadow-dark),
        inset -2px -2px 4px var(--neu-shadow-light);

    /* Border Radius */
    --neu-radius: 16px;
    --neu-radius-sm: 12px;
    --neu-radius-lg: 24px;
    --neu-radius-round: 50%;

    /* Transitions */
    --neu-transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    --neu-transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ==========================================================================
   2. CSS Variables - Dark Mode
   ========================================================================== */
.app-dark-mode {
    --neu-surface: #252542;           /* Surface más clara para cards */
    --neu-surface-alt: #1A1A2E;       /* Background principal */
    --neu-shadow-dark: #12121f;       /* Sombra oscura */
    --neu-shadow-light: #222240;      /* Sombra clara */
    --neu-text-primary: #E8EAED;
    --neu-text-secondary: #9CA3AF;
    --neu-text-muted: #6C757D;
    --neu-text-disabled: #6C757D;

    /* Color Tinting — dark mode */
    --neu-blue-bg: rgba(67, 97, 238, 0.15);
    --neu-blue-text: #93A8F8;
    --neu-teal-bg: rgba(46, 196, 182, 0.15);
    --neu-teal-text: #6EE7D8;
    --neu-amber-bg: rgba(245, 158, 11, 0.15);
    --neu-amber-text: #FCD34D;
    --neu-indigo-bg: rgba(99, 102, 241, 0.15);
    --neu-indigo-text: #A5B4FC;
    --neu-green-bg: rgba(16, 185, 129, 0.12);
    --neu-green-text: #6EE7B7;
    --neu-red-bg: rgba(239, 68, 68, 0.12);
    --neu-red-text: #FCA5A5;

    --neu-shadow-raised:
        8px 8px 16px var(--neu-shadow-dark),
        -8px -8px 16px var(--neu-shadow-light);
    --neu-shadow-raised-sm:
        4px 4px 8px var(--neu-shadow-dark),
        -4px -4px 8px var(--neu-shadow-light);
    --neu-shadow-raised-lg:
        12px 12px 24px var(--neu-shadow-dark),
        -12px -12px 24px var(--neu-shadow-light);
    --neu-shadow-inset:
        inset 4px 4px 8px var(--neu-shadow-dark),
        inset -4px -4px 8px var(--neu-shadow-light);
    --neu-shadow-inset-sm:
        inset 2px 2px 4px var(--neu-shadow-dark),
        inset -2px -2px 4px var(--neu-shadow-light);
}

/* Theme Container Transitions */
.app-dark-mode,
.app-light-mode {
    transition: all 0.3s ease;
}

/* ==========================================================================
   3. Base & Typography
   ========================================================================== */
html, body {
    font-family: 'Outfit', 'Helvetica Neue', Arial, sans-serif;
    background-color: var(--mud-palette-background);
    color: var(--mud-palette-text-primary);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1:focus {
    outline: none;
}

/* ==========================================================================
   4. MudBlazor Layout Components
   ========================================================================== */
body .mud-layout {
    background-color: var(--mud-palette-background);
}

body .mud-main-content {
    background-color: var(--mud-palette-background);
}

/* MudAppBar - Neumorphic Top Bar */
body .mud-appbar.mud-appbar {
    background: var(--mud-palette-appbar-background);
    box-shadow:
        0 4px 12px var(--neu-shadow-dark),
        0 -2px 8px var(--neu-shadow-light);
    border-bottom: none;
    z-index: 1099;
}

/* Drawer sits above appbar to avoid overlap */
body .mud-drawer.mud-drawer {
    z-index: 1200;
}

body .mud-appbar .mud-typography {
    color: var(--neu-text-primary);
    font-weight: 600;
}

body .mud-appbar .mud-icon-button {
    color: var(--neu-text-secondary);
}

body .mud-appbar .mud-icon-button:hover {
    background: var(--neu-shadow-inset-sm);
    border-radius: var(--neu-radius-sm);
}

/* MudDrawer - Blue Gradient Sidebar */
body .mud-drawer.mud-drawer {
    background: linear-gradient(180deg, #4361EE 0%, #3451D1 100%);
    box-shadow: 4px 0 16px rgba(30, 50, 140, 0.3);
    border-right: none;
}

body .mud-drawer-header {
    background: transparent;
    border-bottom: none;
    flex-direction: column;
    align-items: flex-start;
}

body .mud-drawer-header::after {
    content: '';
    display: block;
    position: absolute;
    bottom: 0;
    left: 12px;
    right: 12px;
    height: 1px;
    background: rgba(255,255,255,0.15);
}

body .mud-drawer-header {
    position: relative;
    padding-bottom: 12px;
}

body .mud-drawer-header .mud-typography {
    color: #fff;
    font-weight: 600;
}

/* ==========================================================================
   5. MudCard / MudPaper - Raised Neumorphic
   ========================================================================== */
body .mud-card,
body .mud-paper {
    background-color: var(--mud-palette-surface);
    box-shadow: var(--neu-shadow-raised);
    border-radius: var(--neu-radius);
    border: none;
    transition: var(--neu-transition);
}

body .mud-card:hover,
body .mud-paper:hover {
    transform: translateY(-2px);
    box-shadow: var(--neu-shadow-raised-lg);
}

body .mud-card-header {
    background: transparent;
    border-bottom: 1px solid rgba(0,0,0,0.03);
}

body .mud-card-content {
    padding: 24px;
}

/* Elevation overrides */
body .mud-elevation-0,
body .mud-elevation-1,
body .mud-elevation-2,
body .mud-elevation-3,
body .mud-elevation-4 {
    box-shadow: var(--neu-shadow-raised);
}

/* ==========================================================================
   6. MudButton - Neumorphic Buttons
   ========================================================================== */

/* Primary Button */
body .mud-button-filled.mud-button-filled-primary {
    background: linear-gradient(145deg, var(--neu-primary-light), var(--neu-primary-dark));
    box-shadow:
        6px 6px 14px var(--neu-shadow-dark),
        -6px -6px 14px var(--neu-shadow-light),
        inset 2px 2px 4px rgba(255,255,255,0.25),
        inset -2px -2px 4px rgba(0,0,0,0.15);
    border-radius: var(--neu-radius-sm);
    color: var(--neu-text-on-primary);
    font-weight: 600;
    text-transform: none;
    padding: 10px 24px;
    transition: var(--neu-transition);
}

body .mud-button-filled.mud-button-filled-primary:hover {
    transform: translateY(-2px);
    box-shadow:
        8px 8px 18px var(--neu-shadow-dark),
        -8px -8px 18px var(--neu-shadow-light),
        inset 2px 2px 4px rgba(255,255,255,0.3),
        inset -2px -2px 4px rgba(0,0,0,0.2);
}

body .mud-button-filled.mud-button-filled-primary:active {
    transform: translateY(0);
    box-shadow: var(--neu-shadow-inset);
}

/* Secondary/Default Button */
body .mud-button-filled.mud-button-filled-secondary,
body .mud-button-filled.mud-button-filled-default {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: var(--neu-radius-sm);
    color: var(--neu-text-primary);
    font-weight: 500;
    text-transform: none;
    transition: var(--neu-transition);
}

body .mud-button-filled.mud-button-filled-secondary:hover,
body .mud-button-filled.mud-button-filled-default:hover {
    transform: translateY(-2px);
    box-shadow: var(--neu-shadow-raised);
}

body .mud-button-filled.mud-button-filled-secondary:active,
body .mud-button-filled.mud-button-filled-default:active {
    transform: translateY(0);
    box-shadow: var(--neu-shadow-inset-sm);
}

/* Outlined Button */
body .mud-button-outlined {
    background: var(--neu-surface);
    border: 2px solid var(--neu-primary);
    border-radius: var(--neu-radius-sm);
    color: var(--neu-primary);
    font-weight: 500;
    text-transform: none;
    box-shadow: var(--neu-shadow-raised-sm);
    transition: var(--neu-transition);
}

body .mud-button-outlined:hover {
    background: var(--neu-primary);
    color: var(--neu-text-on-primary);
    transform: translateY(-2px);
}

body .mud-button-outlined:active {
    transform: translateY(0);
    box-shadow: var(--neu-shadow-inset-sm);
}

/* Text Button */
body .mud-button-text {
    border-radius: var(--neu-radius-sm);
    text-transform: none;
    font-weight: 500;
    transition: var(--neu-transition);
}

body .mud-button-text:hover {
    background: rgba(67, 97, 238, 0.08);
}

/* Success Button */
body .mud-button-filled.mud-button-filled-success {
    background: linear-gradient(145deg, #35d4c5, #28b4a7);
    box-shadow: var(--neu-shadow-raised-sm),
        inset 2px 2px 4px rgba(255,255,255,0.25),
        inset -2px -2px 4px rgba(0,0,0,0.15);
}

/* Error Button */
body .mud-button-filled.mud-button-filled-error {
    background: linear-gradient(145deg, #f85a5a, #e03d3d);
    box-shadow: var(--neu-shadow-raised-sm),
        inset 2px 2px 4px rgba(255,255,255,0.25),
        inset -2px -2px 4px rgba(0,0,0,0.15);
}

/* Warning Button */
body .mud-button-filled.mud-button-filled-warning {
    background: linear-gradient(145deg, #ffad33, #e68f19);
    box-shadow: var(--neu-shadow-raised-sm),
        inset 2px 2px 4px rgba(255,255,255,0.25),
        inset -2px -2px 4px rgba(0,0,0,0.15);
}

/* ==========================================================================
   7. MudTextField / MudSelect - Neumorphic Form Fields
   ========================================================================== */
body .mud-input-control {
    transition: var(--neu-transition);
    margin-top: 12px;
}

/* Input element styling - target the actual input element */
body input.mud-input-slot,
body input.mud-input-root {
    background: var(--neu-surface) !important;
    box-shadow: var(--neu-shadow-inset-sm) !important;
    border-radius: var(--neu-radius-sm) !important;
    border: none !important;
    transition: var(--neu-transition);
    min-height: 38px !important;
    height: 38px !important;
    padding: 0 12px !important;
}

/* Override browser autofill background */
body input.mud-input-slot:-webkit-autofill,
body input.mud-input-root:-webkit-autofill,
body input.mud-input-slot:-webkit-autofill:hover,
body input.mud-input-root:-webkit-autofill:hover,
body input.mud-input-slot:-webkit-autofill:focus,
body input.mud-input-root:-webkit-autofill:focus {
    -webkit-box-shadow: var(--neu-shadow-inset-sm), 0 0 0 1000px var(--neu-surface) inset !important;
    -webkit-text-fill-color: var(--neu-text-primary) !important;
    caret-color: var(--neu-text-primary);
}

/* Hidden placeholder divs should remain hidden and unstyled */
body div.mud-input-slot:not(.mud-select-input) {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
}

/* Parent containers for regular inputs should NOT have neumorphic styling */
body *:not(.mud-picker) > .mud-input-control:not(.mud-select) .mud-input-control-input-container {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
}

/* TimePicker / DatePicker - same inset treatment as Select */
body .mud-picker .mud-input-control-input-container {
    background: var(--neu-surface) !important;
    box-shadow: var(--neu-shadow-inset-sm) !important;
    border-radius: var(--neu-radius-sm) !important;
    min-height: 38px !important;
    height: 38px !important;
    padding: 0 !important;
}

body .mud-picker .mud-input-control-input-container > .mud-input {
    padding: 0 12px;
    min-height: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    background: transparent;
}

body .mud-picker .mud-input-control-input-container input.mud-input-slot,
body .mud-picker .mud-input-control-input-container input.mud-input-root {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    height: 38px !important;
    min-height: 38px !important;
}

/* Picker adornment icon - flat inside the inset container */
body .mud-picker .mud-input-adornment .mud-icon-button {
    background: transparent !important;
    box-shadow: none !important;
    color: var(--neu-text-secondary);
}

body .mud-picker .mud-input-adornment .mud-icon-button:hover {
    background: rgba(67, 97, 238, 0.08) !important;
    box-shadow: none !important;
    transform: none;
}

/* Hide MudBlazor default borders - requires !important */
body .mud-input-outlined .mud-input-outlined-border {
    display: none !important;
}

body .mud-input-filled .mud-input-underline::before,
body .mud-input-filled .mud-input-underline::after {
    display: none !important;
}

/* Label styling */
body .mud-input-label {
    color: var(--neu-text-secondary);
    font-weight: 500;
    font-size: 0.8rem;
}

/* Label positioning - requires !important for MudBlazor override */
body .mud-input-label-inputcontrol {
    transform: translateY(-22px) scale(0.85) !important;
}

/* Prevent floating labels from clipping text (neumorphic transform + MudBlazor overflow:hidden) */
body .mud-input-label-outlined.mud-input-label-inputcontrol {
    overflow: visible;
}

/* Focus state */
body .mud-input-control.mud-input-control-focused .mud-input-slot {
    box-shadow:
        var(--neu-shadow-inset-sm),
        0 0 0 2px rgba(67, 97, 238, 0.15);
}

/* Input text */
body .mud-input input,
body .mud-input-slot input {
    color: var(--neu-text-primary);
    padding: 0;
    margin: 0;
    font-size: 16px;
    height: 38px;
    line-height: 38px;
}

/* Select (dropdown) styling - must override general container rules */
body .mud-select .mud-input-control-input-container {
    background: var(--neu-surface) !important;
    box-shadow: var(--neu-shadow-inset-sm) !important;
    border-radius: var(--neu-radius-sm) !important;
    min-height: 38px !important;
    height: 38px !important;
    padding: 0 !important;
}

body .mud-select .mud-input-control-input-container > .mud-input {
    padding: 0 12px;
    min-height: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    background: transparent;
}

/* Prevent double inset shadow: container already has it */
body .mud-select input.mud-input-slot,
body .mud-select input.mud-input-root {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    border-radius: 0 !important;
}

body .mud-select div.mud-input-slot.mud-select-input {
    padding: 0 12px !important;
    margin: 0 !important;
    font-size: 16px;
    background: transparent;
    box-shadow: none;
    height: 38px !important;
    min-height: 38px !important;
    line-height: 38px;
    display: flex;
    align-items: center !important;
    justify-content: flex-start;
}

body .mud-select .mud-select-input .mud-input-slot-inner,
body .mud-select .mud-input-slot .mud-input-slot-inner,
body .mud-select .mud-input-root .mud-input-slot-inner {
    font-size: 16px;
    display: flex !important;
    align-items: center !important;
    height: 38px !important;
    line-height: normal !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* Force vertical centering on all select text elements */
body .mud-select .mud-input-slot > *,
body .mud-select-input > * {
    display: flex;
    align-items: center !important;
}

body .mud-select .mud-input-root-text {
    height: 38px !important;
    display: flex !important;
    align-items: center !important;
}

body .mud-select .mud-input-adornment {
    margin: 0;
    padding: 0 8px;
    height: 38px;
    display: flex;
    align-items: center;
}

/* Textarea element styling */
body textarea.mud-input-slot,
body textarea.mud-input-root {
    background: var(--neu-surface) !important;
    box-shadow: var(--neu-shadow-inset-sm) !important;
    border-radius: var(--neu-radius-sm) !important;
    border: none !important;
    color: var(--neu-text-primary);
    padding: 12px !important;
    font-size: 16px;
    min-height: 120px !important;
    height: auto !important;
    resize: vertical;
}

/* Error state */
body .mud-input-error .mud-input-slot {
    box-shadow:
        var(--neu-shadow-inset-sm),
        0 0 0 2px rgba(239, 68, 68, 0.25);
}

body .mud-input-error .mud-input-label {
    color: var(--neu-error);
}

/* ==========================================================================
   8. MudNavLink - Navigation Items
   ========================================================================== */
body .mud-nav-link {
    border-radius: var(--neu-radius-sm);
    margin: 2px 12px;
    padding: 8px 12px;
    color: rgba(255,255,255,0.75);
    font-weight: 500;
    font-size: 0.9rem;
    transition: var(--neu-transition);
}

body .mud-nav-link .mud-icon-root {
    color: rgba(255,255,255,0.85) !important;
    font-size: 22px !important;
}

body .mud-nav-link:hover {
    background: rgba(255,255,255,0.1);
    box-shadow: none;
    color: #fff;
    transform: translateX(2px);
}

body .mud-nav-link:hover .mud-icon-root {
    color: #fff;
}

/* Active state - Neumorphic elevated on blue sidebar */
body .mud-nav-link.active,
body .mud-navlink-active,
body .mud-drawer .mud-nav-link.active,
body .mud-drawer-content .mud-nav-link.active,
body .mud-navmenu .mud-nav-link.active {
    background: linear-gradient(145deg, #5a7ff2, #3d5de0) !important;
    box-shadow:
        4px 4px 10px rgba(30, 50, 140, 0.4),
        -2px -2px 8px rgba(100, 130, 255, 0.2),
        inset 1px 1px 2px rgba(255,255,255,0.15) !important;
    color: white !important;
    border-radius: 12px;
    border: none !important;
    font-weight: 600;
    transform: translateY(-1px);
    transition: all 0.2s ease;
}

body .mud-nav-link.active:hover,
body .mud-navlink-active:hover,
body .mud-drawer .mud-nav-link.active:hover {
    box-shadow:
        6px 6px 14px rgba(30, 50, 140, 0.45),
        -3px -3px 10px rgba(100, 130, 255, 0.25),
        inset 1px 1px 2px rgba(255,255,255,0.2) !important;
    transform: translateY(-2px);
}

body .mud-nav-link.active .mud-icon-root,
body .mud-navlink-active .mud-icon-root,
body .mud-drawer .mud-nav-link.active .mud-icon-root,
body .mud-drawer-content .mud-nav-link.active .mud-icon-root {
    color: white !important;
}

/* Dark Mode - Drawer reverts to dark surface */
.app-dark-mode .mud-drawer.mud-drawer {
    background: linear-gradient(180deg, #2A2A48 0%, #1A1A2E 100%);
    box-shadow: 4px 0 16px #12121f;
    border-right: 1px solid rgba(255,255,255,0.06);
}

.app-dark-mode .mud-drawer-header::after {
    background: rgba(255,255,255,0.08);
}

/* Dark Mode - Active Nav Item on dark sidebar */
.app-dark-mode .mud-nav-link.active,
.app-dark-mode .mud-navlink-active,
.app-dark-mode .mud-drawer .mud-nav-link.active {
    background: linear-gradient(145deg, #4d6bf5, #3854c9) !important;
    box-shadow:
        4px 4px 10px rgba(0, 0, 0, 0.4),
        -2px -2px 8px rgba(50, 50, 80, 0.2),
        inset 1px 1px 2px rgba(255, 255, 255, 0.15) !important;
    border: none !important;
}

.app-dark-mode .mud-nav-link.active:hover,
.app-dark-mode .mud-drawer .mud-nav-link.active:hover {
    box-shadow:
        6px 6px 14px rgba(0, 0, 0, 0.45),
        -3px -3px 10px rgba(50, 50, 80, 0.25),
        inset 1px 1px 2px rgba(255, 255, 255, 0.2) !important;
}

/* Dark Mode - Nav item hover (non-active) */
.app-dark-mode .mud-nav-link:not(.active):hover {
    background: rgba(255,255,255,0.08);
    box-shadow: none;
}

/* ==========================================================================
   9. MudTable - Inset Container
   ========================================================================== */
body .mud-table {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset);
    border-radius: var(--neu-radius);
}

body .mud-table-container {
    background: transparent;
    border-radius: var(--neu-radius);
    overflow: hidden;
}

/* Table toolbar: auto-height for filter inputs + visual separation */
body .mud-table .mud-toolbar {
    min-height: auto;
    height: auto;
    border-bottom: 1px solid rgba(0,0,0,0.05);
}

body .mud-table-head {
    background: var(--neu-surface-alt);
}

body .mud-table-head th {
    background: transparent;
    color: var(--neu-text-secondary);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    border-bottom: 1px solid rgba(0,0,0,0.05);
}

/* Sort labels inside table headers inherit uppercase from the th */
body .mud-table-head th .mud-table-sort-label,
body .mud-table-head th .mud-button-root.mud-button-text {
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--neu-text-secondary);
}

body .mud-table-body tr {
    background: transparent;
    transition: var(--neu-transition-fast);
}

body .mud-table-body tr:hover {
    background: rgba(67, 97, 238, 0.04);
}

body .mud-table-row td {
    color: var(--neu-text-primary);
    border-bottom: 1px solid rgba(0,0,0,0.03);
}

body .mud-table-pagination {
    background: var(--neu-surface-alt);
    border-top: 1px solid rgba(0,0,0,0.05);
}

/* ==========================================================================
   10. MudChip - Small Raised
   ========================================================================== */
body .mud-chip {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: 20px;
    font-weight: 500;
    transition: var(--neu-transition);
}

body .mud-chip:hover {
    transform: translateY(-1px);
    box-shadow: var(--neu-shadow-raised);
}

body .mud-chip-primary {
    background: var(--neu-primary);
    color: var(--neu-text-on-primary);
}

body .mud-chip-success {
    background: var(--neu-success);
    color: var(--neu-text-on-primary);
}

body .mud-chip-warning {
    background: var(--neu-warning);
    color: var(--neu-text-primary);
}

body .mud-chip-error {
    background: var(--neu-error);
    color: var(--neu-text-on-primary);
}

/* ==========================================================================
   11. MudAvatar - Raised Circle
   ========================================================================== */
body .mud-avatar {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    transition: var(--neu-transition);
}

body .mud-avatar:hover {
    transform: scale(1.05);
}

body .mud-avatar-primary {
    background: linear-gradient(145deg, var(--neu-primary-light), var(--neu-primary-dark));
    color: var(--neu-text-on-primary);
}

/* ==========================================================================
   12. MudTabs
   ========================================================================== */
body .mud-tabs {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset);
    border-radius: var(--neu-radius);
    padding: 8px;
}

body .mud-tab {
    border-radius: var(--neu-radius-sm);
    margin: 0 4px;
    transition: var(--neu-transition);
}

body .mud-tab:hover {
    background: rgba(67, 97, 238, 0.08);
}

body .mud-tab.mud-tab-active {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    color: var(--neu-primary);
    font-weight: 600;
}

body .mud-tabs-toolbar {
    background: transparent;
}

/* ==========================================================================
   13. MudAlert
   ========================================================================== */
body .mud-alert {
    border-radius: var(--neu-radius);
    box-shadow: var(--neu-shadow-raised-sm);
}

body .mud-alert-filled-info {
    background: linear-gradient(145deg, #5a7af5, #3a5ad4);
}

body .mud-alert-filled-success {
    background: linear-gradient(145deg, #35d4c5, #28b4a7);
}

body .mud-alert-filled-warning {
    background: linear-gradient(145deg, #ffad33, #e68f19);
}

body .mud-alert-filled-error {
    background: linear-gradient(145deg, #f85a5a, #e03d3d);
}

body .mud-alert-outlined {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
}

/* ==========================================================================
   14. MudDialog
   ========================================================================== */
body .mud-dialog {
    background: var(--neu-surface);
    box-shadow:
        0 25px 50px -12px rgba(0, 0, 0, 0.25),
        0 0 0 1px rgba(255, 255, 255, 0.1);
    border-radius: var(--neu-radius-lg);
    border: none;
    overflow: hidden;
    min-width: 380px;
}

body .mud-dialog-title {
    background: var(--neu-surface);
    border-bottom: none;
    padding: 24px 24px 8px 24px;
    font-weight: 600;
    font-size: 1.25rem;
    color: var(--neu-text-primary);
}

body .mud-dialog-title .mud-typography {
    font-weight: 600;
    font-size: 1.25rem;
}

body .mud-dialog-content {
    background: var(--neu-surface);
    padding: 16px 24px 24px 24px;
    color: var(--neu-text-secondary);
    font-size: 0.95rem;
    line-height: 1.5;
    overflow: visible;
}

body .mud-dialog-actions {
    background: var(--neu-surface);
    border-top: 1px solid rgba(0, 0, 0, 0.06);
    padding: 16px 24px;
    gap: 12px;
    justify-content: flex-end;
}

/* Dialog cancel button */
body .mud-dialog-actions .mud-button-text {
    background: transparent;
    color: var(--neu-text-secondary);
    font-weight: 500;
    padding: 8px 20px;
    border-radius: var(--neu-radius-sm);
}

body .mud-dialog-actions .mud-button-text:hover {
    background: rgba(0, 0, 0, 0.04);
    color: var(--neu-text-primary);
}

/* Dialog danger button */
body .mud-dialog-actions .mud-button-filled-error,
body .mud-dialog-actions .mud-button-text.mud-error-text {
    background: linear-gradient(145deg, #f87171, #dc2626);
    color: white;
    font-weight: 600;
    padding: 8px 20px;
    border-radius: var(--neu-radius-sm);
    box-shadow: 0 4px 14px rgba(220, 38, 38, 0.35);
    transition: var(--neu-transition);
}

body .mud-dialog-actions .mud-button-filled-error:hover,
body .mud-dialog-actions .mud-button-text.mud-error-text:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(220, 38, 38, 0.45);
}

/* MessageBox buttons */
body .mud-message-box__yes-button {
    background: linear-gradient(145deg, #f87171, #dc2626);
    color: white;
    font-weight: 600;
    padding: 8px 24px;
    border-radius: var(--neu-radius-sm);
    box-shadow: 0 4px 14px rgba(220, 38, 38, 0.35);
    transition: var(--neu-transition);
}

body .mud-message-box__yes-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(220, 38, 38, 0.45);
}

body .mud-message-box__cancel-button {
    background: transparent;
    color: var(--neu-text-secondary);
    font-weight: 500;
    padding: 8px 20px;
}

body .mud-message-box__cancel-button:hover {
    background: rgba(0, 0, 0, 0.04);
    color: var(--neu-text-primary);
}

/* Dialog overlay */
body .mud-overlay.mud-overlay-dialog {
    background: rgba(0, 0, 0, 0.35);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

/* Light backdrop for dialogs - minimal blur */
body .mud-overlay.dialog-backdrop-light,
body .mud-overlay.mud-overlay-dialog.dialog-backdrop-light {
    background: rgba(0, 0, 0, 0.2) !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Non-dialog overlay (menus, selects) */
body .mud-overlay:not(.mud-overlay-dialog) {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: transparent;
}

/* ==========================================================================
   15. MudMenu / MudPopover
   ========================================================================== */
body .mud-popover {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-lg);
    border-radius: var(--neu-radius);
    border: none;
}

body .mud-list-item {
    border-radius: var(--neu-radius-sm);
    margin: 4px 8px;
    transition: var(--neu-transition-fast);
    font-size: 16px;
}

body .mud-list-item .mud-list-item-text {
    font-size: 16px;
}

body .mud-list-item:hover {
    background: rgba(67, 97, 238, 0.08);
}

/* ==========================================================================
   16. MudSnackbar
   ========================================================================== */
body .mud-snackbar {
    box-shadow: var(--neu-shadow-raised-lg);
    border-radius: var(--neu-radius);
    font-weight: 500;
}

body .mud-snackbar-success {
    background: var(--neu-success);
    color: white;
}

body .mud-snackbar-success .mud-snackbar-content-message,
body .mud-snackbar-success .mud-icon-root {
    color: white;
}

body .mud-snackbar-error {
    background: var(--neu-error);
    color: white;
}

body .mud-snackbar-error .mud-snackbar-content-message,
body .mud-snackbar-error .mud-icon-root {
    color: white;
}

body .mud-snackbar-warning {
    background: var(--neu-warning);
    color: var(--neu-text-primary);
}

body .mud-snackbar-warning .mud-snackbar-content-message {
    color: var(--neu-text-primary);
}

body .mud-snackbar-info {
    background: var(--neu-info);
    color: white;
}

body .mud-snackbar-info .mud-snackbar-content-message,
body .mud-snackbar-info .mud-icon-root {
    color: white;
}

/* ==========================================================================
   17. MudProgressLinear / MudProgressCircular
   ========================================================================== */
body .mud-progress-linear {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
    border-radius: 10px;
    overflow: hidden;
}

body .mud-progress-linear-bar {
    background: linear-gradient(90deg, var(--neu-primary-light), var(--neu-primary-dark));
    border-radius: 10px;
}

/* ==========================================================================
   18. MudSwitch / MudCheckbox / MudRadio
   ========================================================================== */
body .mud-switch-track {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
}

body .mud-checked .mud-switch-track {
    background: var(--neu-primary);
    box-shadow: var(--neu-shadow-inset-sm);
}

body .mud-switch-thumb {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
}

body .mud-checkbox .mud-icon-root,
body .mud-radio .mud-icon-root {
    color: var(--neu-text-secondary);
}

body .mud-checkbox.mud-checked .mud-icon-root,
body .mud-radio.mud-checked .mud-icon-root {
    color: var(--neu-primary);
}

/* ==========================================================================
   Celestial Theme Toggle - Neumorphic Day/Night Switch
   ========================================================================== */
.celestial-toggle {
    position: relative;
    width: 56px;
    height: 28px;
    cursor: pointer;
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

/* Track - The Sky */
.celestial-toggle .toggle-track {
    position: absolute;
    inset: 0;
    border-radius: 16px;
    transition: all 0.5s ease;
}

/* Day Sky */
.celestial-toggle.day .toggle-track {
    background: linear-gradient(180deg, #87CEEB 0%, #E0F6FF 50%, #FFF5E6 100%);
    box-shadow:
        inset 4px 4px 8px rgba(135, 180, 200, 0.5),
        inset -4px -4px 8px rgba(255, 255, 255, 0.8),
        0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Night Sky */
.celestial-toggle.night .toggle-track {
    background: linear-gradient(180deg, #0f0c29 0%, #1a1a3e 50%, #24243e 100%);
    box-shadow:
        inset 4px 4px 10px rgba(0, 0, 0, 0.6),
        inset -4px -4px 8px rgba(50, 50, 80, 0.3),
        0 4px 12px rgba(0, 0, 0, 0.3);
}

/* Stars (visible in night mode) */
.celestial-toggle .stars {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 0.5s ease 0.2s;
}

.celestial-toggle.night .stars {
    opacity: 1;
}

.celestial-toggle .star {
    position: absolute;
    width: 2px;
    height: 2px;
    background: #fff;
    border-radius: 50%;
    box-shadow: 0 0 3px 1px rgba(255, 255, 255, 0.6);
    animation: twinkle 2s ease-in-out infinite;
}

.celestial-toggle .star:nth-child(1) {
    top: 5px;
    left: 8px;
    animation-delay: 0s;
}

.celestial-toggle .star:nth-child(2) {
    top: 14px;
    left: 16px;
    width: 2px;
    height: 2px;
    animation-delay: 0.5s;
}

.celestial-toggle .star:nth-child(3) {
    top: 8px;
    left: 24px;
    width: 2px;
    height: 2px;
    animation-delay: 1s;
}

@keyframes twinkle {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.5; transform: scale(0.8); }
}

/* Clouds (visible in day mode) */
.celestial-toggle .clouds {
    position: absolute;
    inset: 0;
    opacity: 1;
    transition: opacity 0.3s ease;
}

.celestial-toggle.night .clouds {
    opacity: 0;
}

.celestial-toggle .cloud {
    position: absolute;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 20px;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

.celestial-toggle .cloud:nth-child(1) {
    width: 10px;
    height: 4px;
    top: 6px;
    left: 6px;
}

.celestial-toggle .cloud:nth-child(2) {
    width: 8px;
    height: 3px;
    top: 16px;
    left: 14px;
}

/* Thumb - The Celestial Body */
.celestial-toggle .toggle-thumb {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
    z-index: 10;
}

.celestial-toggle.night .toggle-thumb {
    left: 31px;
}

/* Sun */
.celestial-toggle .sun {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: linear-gradient(145deg, #FFD93D, #FF9F1C);
    box-shadow:
        0 0 20px rgba(255, 159, 28, 0.6),
        0 0 40px rgba(255, 159, 28, 0.3),
        inset -3px -3px 6px rgba(255, 120, 0, 0.4),
        inset 3px 3px 6px rgba(255, 230, 150, 0.6);
    transition: all 0.5s ease;
    opacity: 1;
    transform: scale(1) rotate(0deg);
}

.celestial-toggle.night .sun {
    opacity: 0;
    transform: scale(0.5) rotate(90deg);
}

/* Sun Rays */
.celestial-toggle .sun-rays {
    position: absolute;
    inset: -2px;
    border-radius: 50%;
    background: transparent;
    box-shadow:
        0 0 0 1px rgba(255, 200, 50, 0.3),
        0 0 0 2px rgba(255, 200, 50, 0.15);
    animation: pulse-rays 2s ease-in-out infinite;
}

@keyframes pulse-rays {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.1); opacity: 0.7; }
}

.celestial-toggle.night .sun-rays {
    animation: none;
    opacity: 0;
}

/* Moon */
.celestial-toggle .moon {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: linear-gradient(145deg, #E8E8E8, #C0C0C0);
    box-shadow:
        0 0 15px rgba(200, 220, 255, 0.5),
        0 0 30px rgba(200, 220, 255, 0.2),
        inset -4px -4px 8px rgba(80, 80, 100, 0.3),
        inset 4px 4px 8px rgba(255, 255, 255, 0.8);
    transition: all 0.5s ease;
    opacity: 0;
    transform: scale(0.5) rotate(-90deg);
}

.celestial-toggle.night .moon {
    opacity: 1;
    transform: scale(1) rotate(0deg);
}

/* Moon Craters */
.celestial-toggle .crater {
    position: absolute;
    background: rgba(150, 150, 170, 0.4);
    border-radius: 50%;
    box-shadow: inset 1px 1px 2px rgba(0, 0, 0, 0.2);
}

.celestial-toggle .crater:nth-child(1) {
    width: 5px;
    height: 5px;
    top: 4px;
    left: 5px;
}

.celestial-toggle .crater:nth-child(2) {
    width: 3px;
    height: 3px;
    top: 12px;
    left: 11px;
}

/* Hover Effect */
.celestial-toggle:hover .toggle-thumb {
    transform: scale(1.08);
}

.celestial-toggle:hover.day .sun {
    box-shadow:
        0 0 25px rgba(255, 159, 28, 0.7),
        0 0 50px rgba(255, 159, 28, 0.4),
        inset -3px -3px 6px rgba(255, 120, 0, 0.4),
        inset 3px 3px 6px rgba(255, 230, 150, 0.6);
}

.celestial-toggle:hover.night .moon {
    box-shadow:
        0 0 20px rgba(200, 220, 255, 0.6),
        0 0 40px rgba(200, 220, 255, 0.3),
        inset -4px -4px 8px rgba(80, 80, 100, 0.3),
        inset 4px 4px 8px rgba(255, 255, 255, 0.8);
}

/* Active/Press Effect */
.celestial-toggle:active .toggle-thumb {
    transform: scale(0.95);
}

/* Neumorphic outer frame */
.celestial-toggle::before {
    content: '';
    position: absolute;
    inset: -2px;
    border-radius: 18px;
    background: var(--neu-surface);
    z-index: -1;
    box-shadow:
        3px 3px 8px var(--neu-shadow-dark),
        -3px -3px 8px var(--neu-shadow-light);
}

/* ==========================================================================
   19. MudDatePicker / MudTimePicker
   ========================================================================== */
body .mud-picker:not(.mud-picker-inline) {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-lg);
    border-radius: var(--neu-radius);
}

body .mud-picker-toolbar {
    background: linear-gradient(145deg, var(--neu-primary-light), var(--neu-primary-dark));
    border-radius: var(--neu-radius) var(--neu-radius) 0 0;
}

body .mud-picker-calendar-day.mud-selected {
    background: var(--neu-primary);
    box-shadow: var(--neu-shadow-raised-sm);
}

/* ==========================================================================
   20. Utility Classes
   ========================================================================== */
.neu-raised {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised);
    border-radius: var(--neu-radius);
    transition: var(--neu-transition);
}

.neu-raised:hover {
    transform: translateY(-2px);
    box-shadow: var(--neu-shadow-raised-lg);
}

.neu-raised-sm {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: var(--neu-radius-sm);
}

.neu-inset {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset);
    border-radius: var(--neu-radius);
}

.neu-inset-sm {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
    border-radius: var(--neu-radius-sm);
}

.neu-pressed,
.neu-raised:active {
    box-shadow: var(--neu-shadow-inset);
    transform: translateY(0);
}

.neu-focus:focus,
.neu-focus:focus-within {
    box-shadow:
        var(--neu-shadow-inset),
        0 0 0 3px rgba(67, 97, 238, 0.25);
    outline: none;
}

/* Gradient backgrounds */
.neu-gradient-primary {
    background: linear-gradient(145deg, var(--neu-primary-light), var(--neu-primary-dark));
    color: var(--neu-text-on-primary);
}

.neu-gradient-success {
    background: linear-gradient(145deg, #35d4c5, #28b4a7);
    color: var(--neu-text-on-primary);
}

.neu-gradient-warning {
    background: linear-gradient(145deg, #ffad33, #e68f19);
    color: var(--neu-text-primary);
}

.neu-gradient-error {
    background: linear-gradient(145deg, #f85a5a, #e03d3d);
    color: var(--neu-text-on-primary);
}

/* Text colors */
.neu-text-primary { color: var(--neu-text-primary); }
.neu-text-secondary { color: var(--neu-text-secondary); }
.neu-text-accent { color: var(--neu-primary); }
.neu-text-success { color: var(--neu-success); }
.neu-text-warning { color: var(--neu-warning); }
.neu-text-error { color: var(--neu-error); }

/* ==========================================================================
   21. Form Validation States
   ========================================================================== */
.valid.modified:not([type=checkbox]) {
    outline: none;
    box-shadow:
        var(--neu-shadow-inset),
        0 0 0 3px rgba(46, 196, 182, 0.25);
}

.invalid {
    outline: none;
    box-shadow:
        var(--neu-shadow-inset),
        0 0 0 3px rgba(239, 68, 68, 0.25);
}

.validation-message {
    color: var(--neu-error);
    font-size: 0.875rem;
    margin-top: 4px;
}

/* ==========================================================================
   22. Blazor Error Boundary
   ========================================================================== */
.blazor-error-boundary {
    background: linear-gradient(145deg, #f85a5a, #e03d3d);
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
    border-radius: var(--neu-radius);
    box-shadow: var(--neu-shadow-raised);
}

.blazor-error-boundary::after {
    content: "Ha ocurrido un error.";
}

/* ==========================================================================
   23. Scrollbar Styling
   ========================================================================== */
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
    border-radius: 10px;
}

::-webkit-scrollbar-thumb {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--neu-primary);
}

/* ==========================================================================
   24. AppBar Select (Hotel Selector)
   ========================================================================== */
body .mud-appbar .mud-select {
    min-width: 200px;
}

body .mud-appbar .mud-select .mud-input-slot {
    background: rgba(0, 0, 0, 0.08);
    box-shadow: var(--neu-shadow-inset-sm);
}

.app-dark-mode .mud-appbar .mud-select .mud-input-slot {
    background: rgba(255, 255, 255, 0.08);
}

/* ==========================================================================
   25. Form Floating Labels
   ========================================================================== */
.darker-border-checkbox.form-check-input {
    border-color: var(--neu-text-disabled);
}

.form-floating > .form-control-plaintext::placeholder,
.form-floating > .form-control::placeholder {
    color: var(--neu-text-secondary);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder,
.form-floating > .form-control:focus::placeholder {
    text-align: start;
}

/* ==========================================================================
   26. Icon Buttons in Cards/Tables
   ========================================================================== */
body .mud-table .mud-icon-button,
body .mud-card .mud-icon-button {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: var(--neu-radius-sm);
    transition: var(--neu-transition);
}

body .mud-table .mud-icon-button:hover,
body .mud-card .mud-icon-button:hover {
    transform: translateY(-2px);
    box-shadow: var(--neu-shadow-raised);
}

body .mud-table .mud-icon-button:active,
body .mud-card .mud-icon-button:active {
    transform: translateY(0);
    box-shadow: var(--neu-shadow-inset-sm);
}

/* ==========================================================================
   27. Responsive Adjustments
   ========================================================================== */
@media (max-width: 600px) {
    :root {
        --neu-radius: 12px;
        --neu-radius-sm: 8px;
        --neu-radius-lg: 16px;
    }

    body .mud-card-content {
        padding: 16px;
    }

    body .mud-nav-link {
        margin: 2px 8px;
        padding: 8px 10px;
    }
}

/* ==========================================================================
   28. Logo Container (Drawer Header)
   ========================================================================== */
.logo-container {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 4px 6px;
}

.logo-icon {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: rgba(255,255,255,0.18);
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
    padding: 4px;
    transition: var(--neu-transition);
    transform: translateY(0);
}

.logo-icon:hover {
    transform: translateY(-3px) scale(1.02);
    background: rgba(255,255,255,0.25);
    box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}

.logo-text {
    font-family: 'Orbitron', sans-serif;
    font-weight: 700;
    font-size: 1.25rem;
    letter-spacing: 0.5px;
    color: #fff;
}

/* Hotel name badge - debajo del logo */
.hotel-name-badge {
    padding: 0 6px 2px;
    width: 100%;
}

.hotel-name-text {
    font-family: 'Outfit', sans-serif;
    font-size: 0.8rem;
    font-weight: 500;
    letter-spacing: 0.3px;
    color: rgba(255,255,255,0.65);
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    max-width: 230px;
}

/* ==========================================================================
   29. Navigation Section Labels
   ========================================================================== */
.nav-section-label {
    font-size: 0.68rem;
    font-weight: 600;
    color: rgba(255,255,255,0.55);
    text-transform: uppercase;
    letter-spacing: 1px;
    padding: 16px 24px 6px;
    white-space: nowrap;
    overflow: hidden;
    transition: opacity 0.2s ease, padding 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ==========================================================================
   30. Hotel Selector in Sidebar
   ========================================================================== */
.hotel-selector {
    margin-top: auto;
    padding: 16px;
    border-top: 1px solid rgba(0,0,0,0.05);
}

.app-dark-mode .hotel-selector {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.hotel-selector-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--neu-text-secondary);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    display: block;
}

.hotel-dropdown {
    background: var(--neu-surface);
}

.hotel-dropdown .mud-input-slot {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset);
    border-radius: var(--neu-radius-sm);
}

/* ==========================================================================
   31. Dashboard Stat Cards
   ========================================================================== */
/* Stat cards — layout horizontal con color tinting */
.stat-card {
    cursor: default;
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    overflow: hidden;
}

/* Barra lateral de color */
.stat-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
    border-radius: 4px 0 0 4px;
}

.stat-card.stat-blue::before  { background: var(--neu-primary); }
.stat-card.stat-amber::before { background: var(--neu-warning); }
.stat-card.stat-teal::before  { background: var(--neu-success); }
.stat-card.stat-indigo::before { background: #6366F1; }

/* Icon con fondo tintado */
.stat-icon {
    width: 46px;
    height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--neu-radius-sm);
    transition: var(--neu-transition);
    flex-shrink: 0;
}

.stat-blue .stat-icon   { background: var(--neu-blue-bg); color: var(--neu-blue-text); }
.stat-amber .stat-icon  { background: var(--neu-amber-bg); color: var(--neu-amber-text); }
.stat-teal .stat-icon   { background: var(--neu-teal-bg); color: var(--neu-teal-text); }
.stat-indigo .stat-icon { background: var(--neu-indigo-bg); color: var(--neu-indigo-text); }

.stat-body { flex: 1; min-width: 0; }

.stat-value {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--neu-text-primary);
}

.stat-label {
    font-size: 0.82rem;
    color: var(--neu-text-secondary);
    font-weight: 500;
}

/* Activity list — check-ins/outs */
.activity-list { display: flex; flex-direction: column; gap: 2px; }

.activity-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 8px;
    border-radius: var(--neu-radius-sm);
    transition: background var(--neu-transition-fast);
}
.activity-row:hover { background: rgba(67, 97, 238, 0.04); }

/* Avatares pequeños con color */
.avatar-sm {
    width: 36px; height: 36px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 600; font-size: 0.72rem; flex-shrink: 0;
}
.avatar-sm.blue   { background: var(--neu-blue-bg); color: var(--neu-blue-text); }
.avatar-sm.teal   { background: var(--neu-teal-bg); color: var(--neu-teal-text); }
.avatar-sm.amber  { background: var(--neu-amber-bg); color: var(--neu-amber-text); }
.avatar-sm.indigo { background: var(--neu-indigo-bg); color: var(--neu-indigo-text); }

.activity-info { flex: 1; min-width: 0; }
.activity-name { display: block; font-weight: 600; font-size: 0.88rem; }
.activity-detail { display: block; font-size: 0.78rem; color: var(--neu-text-secondary); }

/* Badges */
.badge {
    font-size: 0.72rem; font-weight: 600;
    padding: 3px 10px; border-radius: 20px; white-space: nowrap;
}
.badge-pending  { background: var(--neu-amber-bg); color: var(--neu-amber-text); }
.badge-success  { background: var(--neu-green-bg); color: var(--neu-green-text); }

/* Empty state sutil */
.empty-subtle {
    display: flex; align-items: center; gap: 6px;
    font-size: 0.82rem; color: var(--neu-text-disabled);
    padding: 12px 8px;
}

/* ==========================================================================
   31b. Dashboard V2 — KPI Hero, Sparklines, Distribution
   ========================================================================== */

/* Hero KPI card — large donut container */
.kpi-hero-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 240px;
}

.kpi-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--neu-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 4px;
}

/* Donut center overlay */
.donut-container {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.donut-center-label {
    position: absolute;
    display: flex;
    flex-direction: column;
    align-items: center;
    pointer-events: none;
}

.donut-percent {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--neu-text-primary);
    line-height: 1.1;
}

.donut-subtitle {
    font-size: 0.75rem;
    color: var(--neu-text-secondary);
    font-weight: 500;
}

/* KPI metric card with sparkline */
.kpi-metric-card {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-height: 240px;
    justify-content: center;
}

.kpi-metric-value {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.15;
    color: var(--neu-text-primary);
    letter-spacing: -0.01em;
}

.kpi-metric-label {
    font-size: 0.78rem;
    color: var(--neu-text-secondary);
    font-weight: 500;
}

.kpi-spark-period {
    font-size: 0.7rem;
    color: var(--neu-text-secondary);
    opacity: 0.7;
    margin-top: 4px;
}

/* Sparkline wrapper — hides chart axes/legend for compact display */
.kpi-sparkline {
    height: 60px;
    overflow: hidden;
    margin-top: 8px;
}

.kpi-sparkline .mud-chart-legend {
    display: none !important;
}

.kpi-sparkline .mud-chart svg text {
    display: none;
}

.kpi-sparkline .mud-chart svg line {
    display: none;
}

/* Panel header — title + count chip */
.panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

/* Activity row action button alignment */
.activity-row .mud-button-root {
    flex-shrink: 0;
    white-space: nowrap;
}

/* Alert items */
.alert-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border-radius: var(--neu-radius-sm);
    margin-bottom: 6px;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.35;
}

.alert-item.severity-warning {
    background: var(--neu-amber-bg);
    color: var(--neu-amber-text);
}

.alert-item.severity-error {
    background: var(--neu-red-bg);
    color: var(--neu-red-text);
}

.alert-item.severity-info {
    background: var(--neu-blue-bg);
    color: var(--neu-blue-text);
}

/* Distribution bar (Room Type tab) */
.dist-bar-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
}

.dist-bar-label {
    width: 110px;
    font-size: 0.82rem;
    font-weight: 600;
    flex-shrink: 0;
    color: var(--neu-text-primary);
}

.dist-bar-track {
    flex: 1;
    height: 24px;
    background: var(--neu-surface-alt);
    border-radius: 12px;
    overflow: hidden;
    box-shadow: var(--neu-shadow-inset-sm);
}

.dist-bar-fill {
    height: 100%;
    border-radius: 12px;
    background: linear-gradient(90deg, var(--neu-primary), var(--neu-primary-light));
    transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.dist-bar-count {
    width: 70px;
    text-align: right;
    font-size: 0.82rem;
    color: var(--neu-text-secondary);
    font-weight: 500;
    white-space: nowrap;
}

/* Badge additions */
.badge-noshow  { background: var(--neu-red-bg); color: var(--neu-red-text); }
.badge-info    { background: var(--neu-blue-bg); color: var(--neu-blue-text); }

/* Zone section spacing */
.dashboard-zone {
    margin-bottom: 24px;
}

/* Donut arc animation */
.donut-arc {
    animation: donut-fill 1s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

@keyframes donut-fill {
    from { stroke-dasharray: 0 314.159; }
}

.dist-donut {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
}

/* Responsive adjustments */
@media (max-width: 599px) {
    .kpi-hero-card { min-height: auto; padding: 16px 8px; }
    .kpi-metric-card { min-height: auto; }
}

/* Drawer content flex layout */
body .mud-drawer-content {
    display: flex;
    flex-direction: column;
    height: 100%;
}

body .mud-drawer-content > .mud-navmenu {
    flex: 1;
}

/* ==========================================================================
   32. Dark Mode Specific Overrides
   ========================================================================== */

/* Dark Mode - Cards hover glow */
.app-dark-mode .mud-card:hover,
.app-dark-mode .mud-paper:hover {
    box-shadow:
        12px 12px 24px #12121f,
        -12px -12px 24px #222240;
}

/* Dark Mode - Dashboard V2 */
.app-dark-mode .dist-bar-track {
    background: rgba(255, 255, 255, 0.06);
}

.app-dark-mode .alert-item.severity-warning {
    background: rgba(255, 159, 28, 0.12);
    color: #fbbf24;
}

.app-dark-mode .alert-item.severity-error {
    background: rgba(239, 68, 68, 0.12);
    color: #f87171;
}

.app-dark-mode .alert-item.severity-info {
    background: rgba(67, 97, 238, 0.12);
    color: #93a5f6;
}

/* Dark Mode - Table hover */
.app-dark-mode .mud-table-body tr:hover {
    background: rgba(67, 97, 238, 0.08);
}

/* Dark Mode - Scrollbar */
.app-dark-mode ::-webkit-scrollbar-thumb {
    background: #333355;
}

.app-dark-mode ::-webkit-scrollbar-thumb:hover {
    background: var(--neu-primary);
}

/* Dark Mode - Drawer border */
.app-dark-mode .mud-drawer-header::after {
    background: rgba(255, 255, 255, 0.05);
}

/* Dark Mode - Card header border */
.app-dark-mode .mud-card-header {
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

/* Dark Mode - Table header */
.app-dark-mode .mud-table-head th {
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

/* Dark Mode - Table row border */
.app-dark-mode .mud-table-row td {
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

/* ==========================================================================
   33. Contacto row — bottom-aligned Teléfono + Email
   ========================================================================== */

.contacto-row {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-top: 12px;
}

.contacto-row-field {
    flex: 1;
    min-width: 0;
}

/* Strip internal margins so both inputs start at the same top edge */
.contacto-row .telefono-integrated {
    margin-top: 0;
}

.contacto-row .mud-input-control {
    margin-top: 0;
}

@media (max-width: 599.98px) {
    .contacto-row {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }

    .contacto-row .telefono-integrated {
        margin-top: 12px;
    }

    .contacto-row .mud-input-control {
        margin-top: 12px;
    }
}

/* ==========================================================================
   34. Teléfono integrado con selector de país
   ========================================================================== */

.telefono-integrated {
    position: relative;
    margin-top: 12px;
}

.telefono-integrated-input {
    display: flex;
    align-items: center;
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
    border-radius: var(--neu-radius-sm);
    height: 38px;
    overflow: hidden;
    transition: var(--neu-transition);
}

.telefono-integrated-input:focus-within {
    box-shadow:
        var(--neu-shadow-inset-sm),
        0 0 0 2px rgba(67, 97, 238, 0.15);
}

.telefono-pais-btn {
    display: flex;
    align-items: center;
    gap: 4px;
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 0 4px 0 10px;
    height: 100%;
    color: var(--neu-text-primary);
    font-family: inherit;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.15s ease;
    border-radius: var(--neu-radius-sm) 0 0 var(--neu-radius-sm);
}

.telefono-pais-btn:hover {
    background: rgba(67, 97, 238, 0.06);
}

.telefono-pais-flag {
    font-size: 1.25rem;
    line-height: 1;
}

.telefono-pais-code {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--neu-text-secondary);
}

.telefono-pais-arrow {
    color: var(--neu-text-disabled);
    margin-left: -2px;
}

.telefono-divider {
    width: 1px;
    height: 20px;
    background: var(--neu-shadow-dark);
    opacity: 0.5;
    flex-shrink: 0;
}

.telefono-input-field {
    flex: 1;
    min-width: 0;
    border: none;
    background: transparent;
    padding: 0 12px;
    height: 100%;
    color: var(--neu-text-primary);
    font-family: inherit;
    font-size: 16px;
    outline: none;
}

.telefono-input-field::placeholder {
    color: var(--neu-text-disabled);
    font-size: 0.875rem;
}

/* Menu item with selected state */
.telefono-pais-selected {
    background: rgba(67, 97, 238, 0.08) !important;
    font-weight: 600;
}

.telefono-menu-flag {
    font-size: 1.2rem;
    margin-right: 8px;
}

/* ==========================================================================
   35. Telefono label
   ========================================================================== */

.telefono-integrated-label {
    position: absolute;
    top: 0;
    left: 0;
    pointer-events: none;
    font-size: 1rem !important;
    font-weight: 400 !important;
}

/* Dark Mode - Table pagination */
.app-dark-mode .mud-table-pagination {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

/* Dark Mode - Dialog overlay */
.app-dark-mode .mud-overlay.mud-overlay-dialog {
    background: rgba(0, 0, 0, 0.6);
}

/* Dark Mode - Dialog shadow */
.app-dark-mode .mud-dialog {
    box-shadow:
        0 25px 50px -12px rgba(0, 0, 0, 0.5),
        0 0 0 1px rgba(255, 255, 255, 0.05);
}

/* Dark Mode - Dialog actions border */
.app-dark-mode .mud-dialog-actions {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

/* Dark Mode - Activity row hover */
.app-dark-mode .activity-row:hover {
    background: rgba(67, 97, 238, 0.08);
}

/* ==========================================================================
   36. Setup Checklist (Dashboard Onboarding)
   ========================================================================== */
.setup-checklist {
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised);
    border-radius: var(--neu-radius);
    padding: 20px 24px 16px;
    transition: var(--neu-transition);
    border-left: 4px solid var(--neu-primary);
}

.setup-checklist:hover {
    transform: none;
    box-shadow: var(--neu-shadow-raised);
}

.setup-checklist__header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 14px;
}

.setup-checklist__title {
    font-family: 'Outfit', sans-serif;
    font-size: 1.2rem;
    font-weight: 600;
    color: var(--neu-text-primary);
    margin: 0 0 4px;
    line-height: 1.2;
}

.setup-checklist__subtitle {
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--neu-text-secondary);
    letter-spacing: 0.01em;
}

.setup-checklist__close {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: none;
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-raised-sm);
    border-radius: 10px;
    color: var(--neu-text-disabled);
    cursor: pointer;
    transition: var(--neu-transition);
    flex-shrink: 0;
    margin-top: -2px;
}

.setup-checklist__close:hover {
    color: var(--neu-text-secondary);
    transform: translateY(-1px);
    box-shadow: var(--neu-shadow-raised);
}

.setup-checklist__close:active {
    transform: translateY(0);
    box-shadow: var(--neu-shadow-inset-sm);
}

/* Progress bar */
.setup-checklist__progress {
    margin-bottom: 16px;
}

.setup-checklist__progress-track {
    height: 6px;
    background: var(--neu-surface);
    box-shadow: var(--neu-shadow-inset-sm);
    border-radius: 3px;
    overflow: hidden;
}

.setup-checklist__progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--neu-success), #36d9c8);
    border-radius: 3px;
    transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    min-width: 0;
}

/* Checklist items */
.setup-checklist__items {
    display: flex;
    flex-direction: column;
}

.setup-checklist__item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}

.setup-checklist__item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.setup-checklist__item:first-child {
    padding-top: 0;
}

.setup-checklist__icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.setup-checklist__text {
    font-size: 0.95rem;
    color: var(--neu-text-primary);
    font-weight: 400;
}

.setup-checklist__text.is-done {
    color: var(--neu-text-secondary);
    text-decoration: line-through;
}

.setup-checklist__link {
    font-size: 0.95rem;
    font-weight: 500;
    color: var(--neu-primary);
    text-decoration: none;
    transition: var(--neu-transition-fast);
}

.setup-checklist__link:hover {
    color: var(--neu-primary-dark);
    text-decoration: underline;
}

/* Dark mode */
.app-dark-mode .setup-checklist__item {
    border-bottom-color: rgba(255, 255, 255, 0.06);
}

.app-dark-mode .setup-checklist__close {
    box-shadow:
        4px 4px 8px #12121f,
        -4px -4px 8px #222240;
}

.app-dark-mode .setup-checklist__close:hover {
    box-shadow:
        6px 6px 12px #12121f,
        -6px -6px 12px #222240;
}

.app-dark-mode .setup-checklist__close:active {
    box-shadow:
        inset 2px 2px 4px #12121f,
        inset -2px -2px 4px #222240;
}

.app-dark-mode .setup-checklist__link {
    color: var(--neu-primary-light);
}

.app-dark-mode .setup-checklist__link:hover {
    color: #7b94f7;
}

/* ==========================================================================
   37. Login Page
   ========================================================================== */

/* --- Keyframes --- */
@keyframes login-slide-left {
    from { opacity: 0; transform: translateX(-40px); }
    to   { opacity: 1; transform: translateX(0); }
}

@keyframes login-slide-right {
    from { opacity: 0; transform: translateX(40px); }
    to   { opacity: 1; transform: translateX(0); }
}

@keyframes login-fade-up {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes login-float {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-12px); }
}

@keyframes login-pulse-glow {
    0%, 100% { opacity: 0.4; }
    50%      { opacity: 0.7; }
}

@keyframes login-shimmer {
    0%   { background-position: -200% center; }
    100% { background-position: 200% center; }
}

/* --- Full-page wrapper --- */
.login-page {
    display: flex;
    min-height: 100vh;
    min-height: 100dvh;
    font-family: 'Outfit', sans-serif;
    overflow: hidden;
}

/* --- Brand Panel (left) --- */
.login-brand {
    position: relative;
    flex: 0 0 42%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 40px;
    background: linear-gradient(160deg, #0d0d1f 0%, #151535 40%, #1e2154 70%, #2a3580 100%);
    overflow: hidden;
    animation: login-slide-left 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}

/* Geometric grid overlay */
.login-brand::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(67, 97, 238, 0.06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(67, 97, 238, 0.06) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, black, transparent);
    -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, black, transparent);
}

/* Ambient glow orbs */
.login-brand__orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    pointer-events: none;
    animation: login-pulse-glow 6s ease-in-out infinite;
}

.login-brand__orb--1 {
    width: 320px;
    height: 320px;
    top: -80px;
    left: -60px;
    background: rgba(67, 97, 238, 0.3);
    animation-delay: 0s;
}

.login-brand__orb--2 {
    width: 240px;
    height: 240px;
    bottom: -40px;
    right: -40px;
    background: rgba(255, 159, 28, 0.2);
    animation-delay: 3s;
}

.login-brand__orb--3 {
    width: 160px;
    height: 160px;
    top: 50%;
    left: 60%;
    background: rgba(46, 196, 182, 0.15);
    animation-delay: 1.5s;
}

/* Brand content */
.login-brand__content {
    position: relative;
    z-index: 1;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 24px;
}

.login-brand__logo {
    width: 80px;
    height: 80px;
    border-radius: 20px;
    box-shadow:
        0 8px 32px rgba(67, 97, 238, 0.35),
        0 0 0 1px rgba(255, 255, 255, 0.08);
    animation: login-float 5s ease-in-out infinite;
}

.login-brand__name {
    font-family: 'Orbitron', 'Outfit', sans-serif;
    font-size: 2.4rem;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 0.06em;
    line-height: 1;
    margin: 0;
}

.login-brand__tagline {
    font-size: 1rem;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.55);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin: 0;
}

.login-brand__divider {
    width: 48px;
    height: 2px;
    background: linear-gradient(90deg, transparent, rgba(67, 97, 238, 0.6), transparent);
    border: none;
    margin: 0;
}

/* --- Form Panel (right) --- */
.login-form-panel {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px 40px;
    background: #f0f2f5;
    animation: login-slide-right 0.8s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both;
}

.login-form-wrapper {
    width: 100%;
    max-width: 400px;
}

/* Heading area */
.login-form__header {
    margin-bottom: 36px;
    animation: login-fade-up 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.4s both;
}

.login-form__title {
    font-size: 1.75rem;
    font-weight: 700;
    color: #111827;
    margin: 0 0 6px;
    line-height: 1.2;
}

.login-form__subtitle {
    font-size: 0.95rem;
    font-weight: 400;
    color: #6B7280;
    margin: 0;
}

/* Form card */
.login-form__card {
    background: #e8eaed;
    border-radius: 20px;
    padding: 32px 28px;
    box-shadow:
        8px 8px 20px #c8cacd,
        -8px -8px 20px #ffffff;
    animation: login-fade-up 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.55s both;
}

/* ── Login Form Fields (Filled variant, no labels) ── */
.login-form__card .login-field {
    margin-bottom: 16px;
}

.login-form__card .mud-input-control {
    margin-top: 0;
}

/* Filled container: compact, rounded, centered content */
.login-form__card .mud-input-filled {
    background: rgba(0, 0, 0, 0.04);
    border-radius: 12px;
    padding: 0 12px;
    height: 48px;
    display: flex;
    align-items: center;
    transition: background 0.2s ease, box-shadow 0.2s ease;
}

.login-form__card .mud-input-filled:hover {
    background: rgba(0, 0, 0, 0.07);
}

.login-form__card .mud-input-filled.mud-input-focused {
    background: rgba(67, 97, 238, 0.05);
    box-shadow: 0 0 0 2px rgba(67, 97, 238, 0.18);
}

/* Remove the default underline */
.login-form__card .mud-input-filled::before,
.login-form__card .mud-input-filled::after {
    display: none;
}

/* Adornment icon: remove MudBlazor margin-top, vertically center */
.login-form__card .mud-input-adornment.mud-input-adornment-start {
    color: #9ca3af;
    margin: 0 12px 0 0;
    display: flex;
    align-items: center;
    height: auto;
}

/* Input: strip neumorphic styles and filled-variant top padding */
.login-form__card .login-field input.mud-input-slot,
.login-form__card .login-field input.mud-input-root {
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    border-radius: 0 !important;
    height: 48px !important;
    min-height: 48px !important;
    padding: 0 !important;
    font-size: 0.95rem;
    color: #111827;
}

/* Autofill background for login inputs - match filled container color */
.login-form__card .login-field input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 1000px #dfe1e4 inset !important;
    -webkit-text-fill-color: #111827 !important;
    caret-color: #111827;
}

.login-form__welcome {
    font-size: 1.1rem;
    font-weight: 500;
    color: #4361EE;
    margin: 0 0 8px;
}

/* Password strength rules - compact inline chips */
.pwd-rules {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.pwd-rule {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.72rem;
    padding: 2px 8px;
    border-radius: 12px;
    background: rgba(0, 0, 0, 0.06);
    color: #9ca3af;
    transition: all 0.2s ease;
}

.pwd-rule--ok {
    background: rgba(16, 185, 129, 0.1);
    color: #059669;
}

/* Password toggle */
.login-password-toggle {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 20px;
    margin-top: -4px;
}

.login-password-toggle .mud-checkbox .mud-typography {
    font-size: 0.82rem;
    color: #6B7280;
}

/* Submit button enhancement */
.login-form__card .login-submit-btn {
    height: 48px;
    border-radius: 12px;
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
    box-shadow: 0 4px 14px rgba(67, 97, 238, 0.35);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.login-form__card .login-submit-btn:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(67, 97, 238, 0.45);
}

.login-form__card .login-submit-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(67, 97, 238, 0.3);
}

/* Footer */
.login-form__footer {
    text-align: center;
    margin-top: 28px;
    animation: login-fade-up 0.7s cubic-bezier(0.22, 1, 0.36, 1) 0.7s both;
}

.login-form__footer-text {
    font-size: 0.8rem;
    color: #9ca3af;
    letter-spacing: 0.02em;
}

/* --- Responsive --- */
@media (max-width: 900px) {
    .login-page {
        flex-direction: column;
    }

    .login-brand {
        flex: none;
        padding: 40px 24px 32px;
    }

    .login-brand__logo {
        width: 56px;
        height: 56px;
        border-radius: 14px;
    }

    .login-brand__name {
        font-size: 1.6rem;
    }

    .login-brand__tagline {
        font-size: 0.8rem;
    }

    .login-brand__divider {
        display: none;
    }

    .login-brand__content {
        gap: 12px;
    }

    .login-form-panel {
        padding: 32px 20px 48px;
    }
}

@media (max-width: 480px) {
    .login-form__card {
        padding: 24px 20px;
    }
}

/* ==========================================================================
   Mini Drawer — Rail Navigation (collapsed icons only)
   ========================================================================== */

/* Smooth width transition for the drawer */
body .mud-drawer.mud-drawer {
    transition: width 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    overflow-x: hidden;
}

/* Transition for main content margin to follow drawer */
body .mud-main-content {
    transition: padding-left 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* --- Collapsed state (mini rail) --- */

/* Hide logo text */
.mud-drawer--closed .logo-text {
    opacity: 0;
    width: 0;
    overflow: hidden;
    transition: opacity 0.12s ease, width 0.2s ease;
}

/* Hide hotel name badge */
.mud-drawer--closed .hotel-name-badge {
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    padding: 0;
    margin: 0;
    transition: opacity 0.12s ease, max-height 0.2s ease;
}

/* Hide section labels */
.mud-drawer--closed .nav-section-label {
    opacity: 0;
    padding-top: 8px;
    padding-bottom: 0;
    font-size: 0;
    line-height: 0;
}

/* Center the logo container */
.mud-drawer--closed .logo-container {
    justify-content: center;
    gap: 0;
    padding: 4px 0;
}

/* Center drawer header */
.mud-drawer--closed .mud-drawer-header {
    padding: 12px 4px 8px;
    align-items: center;
}

/* Nav links — center icons, tighten spacing */
.mud-drawer--closed .mud-nav-link {
    justify-content: center;
    margin: 2px 8px;
    padding: 10px 0;
}

/* Hide nav link text in collapsed state */
.mud-drawer--closed .mud-nav-link .mud-nav-link-text {
    opacity: 0;
    width: 0;
    overflow: hidden;
    transition: opacity 0.12s ease;
}

/* NavGroup header (Catálogos) — center icon */
.mud-drawer--closed .mud-nav-group > .mud-nav-link {
    justify-content: center;
    padding: 10px 0;
    margin: 2px 8px;
}

.mud-drawer--closed .mud-nav-group > .mud-nav-link .mud-nav-link-text {
    opacity: 0;
    width: 0;
    overflow: hidden;
}

/* Hide the expand arrow in collapsed state */
.mud-drawer--closed .mud-nav-group > .mud-nav-link .mud-nav-link-expand-icon {
    display: none;
}

/* Hide NavGroup children in collapsed state */
.mud-drawer--closed .mud-nav-group .mud-collapse-container {
    display: none;
}

/* --- Open state (expanded) — smooth reveal --- */

.mud-drawer--open .logo-text {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

.mud-drawer--open .hotel-name-badge {
    opacity: 1;
    max-height: 60px;
    transition: opacity 0.25s ease 0.1s, max-height 0.25s ease;
}

.mud-drawer--open .nav-section-label {
    opacity: 1;
    transition: opacity 0.25s ease 0.1s;
}

.mud-drawer--open .mud-nav-link .mud-nav-link-text {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

.mud-drawer--open .mud-nav-group > .mud-nav-link .mud-nav-link-text {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

/* --- Tooltip hint on hover for collapsed icons --- */
.mud-drawer--closed .mud-nav-link:hover {
    position: relative;
}

/* ==========================================================================
   Drawer Footer (user info + turno + version)
   ========================================================================== */

/* Flex layout: nav scrolls, footer sticks to bottom */
body .mud-drawer-content {
    display: flex;
    flex-direction: column;
    overflow-x: hidden;
}

body .mud-drawer-content > .mud-navmenu {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
}

.drawer-footer {
    padding: 8px 12px 12px;
    flex-shrink: 0;
    overflow: hidden;
}

.drawer-footer-divider {
    height: 1px;
    background: rgba(255, 255, 255, 0.15);
    margin: 0 0 10px;
}

/* --- User row: avatar + name/email --- */
.drawer-footer-user {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 4px;
    margin-bottom: 6px;
}

.drawer-footer-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.18);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    flex-shrink: 0;
}

.drawer-footer-info {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
}

.drawer-footer-name {
    color: rgba(255, 255, 255, 0.95);
    font-size: 0.82rem;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.drawer-footer-email {
    color: rgba(255, 255, 255, 0.5);
    font-size: 0.7rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* --- Version --- */
.drawer-footer-version {
    text-align: center;
    color: rgba(255, 255, 255, 0.3);
    font-size: 0.65rem;
    padding-top: 4px;
    white-space: nowrap;
    overflow: hidden;
}

/* --- Collapsed (mini) drawer --- */
.mud-drawer--closed .drawer-footer-info,
.mud-drawer--closed .drawer-footer-version {
    opacity: 0;
    width: 0;
    overflow: hidden;
    transition: opacity 0.12s ease;
}

.mud-drawer--closed .drawer-footer-divider {
    margin: 0 0 8px;
}

.mud-drawer--closed .drawer-footer-user {
    justify-content: center;
    gap: 0;
}

/* --- Open drawer transitions --- */
.mud-drawer--open .drawer-footer-info,
.mud-drawer--open .drawer-footer-version {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

/* --- Dark mode --- */
.app-dark-mode .drawer-footer-avatar {
    background: rgba(67, 97, 238, 0.35);
}

.app-dark-mode .drawer-footer-divider {
    background: rgba(255, 255, 255, 0.08);
}

/* --- CajaSession badge in drawer footer --- */
.drawer-footer-caja {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    margin-bottom: 4px;
    border-radius: 8px;
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    cursor: pointer;
    transition: background 0.15s ease;
}

.drawer-footer-caja--abierta {
    background: rgba(16, 185, 129, 0.18);
}

.drawer-footer-caja--cerrada {
    background: rgba(239, 68, 68, 0.18);
}

.drawer-footer-caja:hover {
    filter: brightness(1.15);
}

.drawer-footer-caja .mud-icon-root {
    font-size: 15px;
    opacity: 0.85;
    flex-shrink: 0;
}

.mud-drawer--closed .drawer-footer-caja span {
    opacity: 0;
    width: 0;
    overflow: hidden;
    transition: opacity 0.12s ease;
}

.mud-drawer--closed .drawer-footer-caja {
    justify-content: center;
    padding: 6px 4px;
    background: transparent;
}

.mud-drawer--open .drawer-footer-caja span {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

/* --- Fecha de trabajo del hotel (independiente del badge de caja) --- */
.drawer-footer-fecha {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    margin-bottom: 4px;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.06);
    color: rgba(255, 255, 255, 0.8);
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
}

.drawer-footer-fecha .mud-icon-root {
    font-size: 15px;
    opacity: 0.85;
    flex-shrink: 0;
}

.mud-drawer--closed .drawer-footer-fecha span {
    opacity: 0;
    width: 0;
    overflow: hidden;
    transition: opacity 0.12s ease;
}

.mud-drawer--closed .drawer-footer-fecha {
    justify-content: center;
    padding: 6px 4px;
    background: transparent;
}

.mud-drawer--open .drawer-footer-fecha span {
    opacity: 1;
    width: auto;
    transition: opacity 0.25s ease 0.1s;
}

/* --- CajaSession banner in main content --- */
.caja-banner {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.08), rgba(239, 68, 68, 0.03));
    border-left: 4px solid #EF4444;
    padding: 14px 20px;
    margin: 8px 16px 0;
    border-radius: 10px;
}

.caja-banner__content {
    display: flex;
    align-items: center;
    gap: 14px;
}

.caja-banner__icon {
    color: #EF4444;
}

.caja-banner__text {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.caja-banner__title {
    font-weight: 600;
    color: #991B1B;
    font-size: 0.95rem;
}

.caja-banner__subtitle {
    font-size: 0.8rem;
    color: #6B7280;
}

.app-dark-mode .caja-banner {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.15), rgba(239, 68, 68, 0.05));
    border-left-color: #F87171;
}

.app-dark-mode .caja-banner__title {
    color: #FCA5A5;
}

.app-dark-mode .caja-banner__subtitle {
    color: #CBD5E1;
}

/* Desfase banner (INV-FT05) — dos variantes: amarillo (desfase 1) y rojo (desfase >= 2) */
.desfase-banner {
    padding: 14px 20px;
    margin: 8px 16px 0;
    border-radius: 10px;
    border-left: 4px solid;
}

.desfase-banner__content {
    display: flex;
    align-items: center;
    gap: 14px;
}

.desfase-banner__text {
    display: flex;
    flex-direction: column;
    flex: 1;
}

.desfase-banner__title {
    font-weight: 600;
    font-size: 0.95rem;
}

.desfase-banner__subtitle {
    font-size: 0.8rem;
    color: #6B7280;
}

.desfase-banner--amarillo {
    background: linear-gradient(135deg, rgba(255, 159, 28, 0.08), rgba(255, 159, 28, 0.03));
    border-left-color: #FF9F1C;
}
.desfase-banner--amarillo .desfase-banner__title { color: #92400E; }
.desfase-banner--amarillo .desfase-banner__icon { color: #FF9F1C; }

.desfase-banner--rojo {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.08), rgba(239, 68, 68, 0.03));
    border-left-color: #EF4444;
}
.desfase-banner--rojo .desfase-banner__title { color: #991B1B; }
.desfase-banner--rojo .desfase-banner__icon { color: #EF4444; }

.app-dark-mode .desfase-banner--amarillo {
    background: linear-gradient(135deg, rgba(255, 159, 28, 0.15), rgba(255, 159, 28, 0.05));
    border-left-color: #FBBF24;
}
.app-dark-mode .desfase-banner--amarillo .desfase-banner__title { color: #FCD34D; }

.app-dark-mode .desfase-banner--rojo {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.15), rgba(239, 68, 68, 0.05));
    border-left-color: #F87171;
}
.app-dark-mode .desfase-banner--rojo .desfase-banner__title { color: #FCA5A5; }

.app-dark-mode .desfase-banner__subtitle { color: #CBD5E1; }

/* ==========================================================================
   33. Reservaciones Table — Row Highlights
   ========================================================================== */
/* Arrival today: subtle blue left accent + tinted background */
tr.resv-row-arrival-today > td:first-child {
    box-shadow: inset 3px 0 0 var(--neu-primary);
}
tr.resv-row-arrival-today {
    background: rgba(67, 97, 238, 0.04);
}
tr.resv-row-arrival-today:hover {
    background: rgba(67, 97, 238, 0.08) !important;
}

/* Departure today: amber accent */
tr.resv-row-departure-today > td:first-child {
    box-shadow: inset 3px 0 0 var(--neu-warning);
}
tr.resv-row-departure-today {
    background: rgba(255, 159, 28, 0.04);
}
tr.resv-row-departure-today:hover {
    background: rgba(255, 159, 28, 0.08) !important;
}

/* Overdue: red accent for past-due confirmations */
tr.resv-row-overdue > td:first-child {
    box-shadow: inset 3px 0 0 #EF4444;
}
tr.resv-row-overdue {
    background: rgba(239, 68, 68, 0.04);
}
tr.resv-row-overdue:hover {
    background: rgba(239, 68, 68, 0.08) !important;
}

/* Dark mode variants */
.app-dark-mode tr.resv-row-arrival-today {
    background: rgba(67, 97, 238, 0.08);
}
.app-dark-mode tr.resv-row-arrival-today:hover {
    background: rgba(67, 97, 238, 0.14) !important;
}
.app-dark-mode tr.resv-row-departure-today {
    background: rgba(255, 159, 28, 0.08);
}
.app-dark-mode tr.resv-row-departure-today:hover {
    background: rgba(255, 159, 28, 0.14) !important;
}
.app-dark-mode tr.resv-row-overdue {
    background: rgba(239, 68, 68, 0.08);
}
.app-dark-mode tr.resv-row-overdue:hover {
    background: rgba(239, 68, 68, 0.14) !important;
}
