:root {
    --movilexa-bg: #0b1326;
    --movilexa-surface: #171f33;
    --movilexa-on-surface: #f0f4ff;
    --movilexa-on-surface-variant: #b8c4e8;
    --movilexa-primary: #6366F1;
    --movilexa-cta: #5b5ee8;
    --movilexa-glass-border: rgba(255, 255, 255, 0.12);
    --movilexa-glass-surface: rgba(11, 19, 38, 0.92);
    --movilexa-scrim: rgba(10, 12, 20, 0.78);
    --movilexa-motion-fast: 180ms;
    --movilexa-motion-normal: 280ms;
    --movilexa-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

.movilexa-page-bg {
    min-height: 100vh;
    background: var(--movilexa-bg);
    background-image:
        radial-gradient(ellipse 80% 50% at 50% -20%, rgba(99, 102, 241, 0.35), transparent),
        radial-gradient(ellipse 60% 40% at 100% 100%, rgba(91, 141, 239, 0.12), transparent);
}

.movilexa-portal-banner {
    background: var(--movilexa-glass-surface);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--movilexa-glass-border);
    border-radius: 16px;
    text-align: center;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.movilexa-portal-banner__title {
    font-weight: 800;
    letter-spacing: 0.06em;
    color: var(--movilexa-on-surface);
}

.movilexa-glass-panel {
    background: var(--movilexa-glass-surface) !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--movilexa-glass-border);
    border-radius: 16px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
    transition: border-color var(--movilexa-motion-fast) var(--movilexa-ease);
}

.movilexa-glass-panel:hover {
    border-color: rgba(255, 255, 255, 0.18);
}

.movilexa-tabular {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.movilexa-kpi--success { border-left: 3px solid #34D399; }
.movilexa-kpi--warning { border-left: 3px solid #FBBF24; }
.movilexa-kpi--trust { border-left: 3px solid #5B8DEF; }
.movilexa-kpi--danger { border-left: 3px solid #F87171; }
.movilexa-kpi--progress { border-left: 3px solid #6366F1; }
.movilexa-kpi--urgency { border-left: 3px solid #F59E0B; }

.movilexa-nav-link.mud-nav-link.active {
    border-left: 3px solid var(--movilexa-cta);
    background: rgba(99, 102, 241, 0.12);
}

.movilexa-map-scrim::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--movilexa-scrim);
    pointer-events: none;
    z-index: 2;
    opacity: 0.35;
}

.movilexa-bottom-sheet {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1000;
    max-height: 45%;
    border-radius: 16px 16px 0 0;
}

.movilexa-dialog-glass .mud-dialog {
    background: var(--movilexa-glass-surface);
    backdrop-filter: blur(16px);
    border: 1px solid var(--movilexa-glass-border);
    border-radius: 16px;
}

.movilexa-chat-bubble {
    background: rgba(23, 31, 51, 0.85);
    border: 1px solid var(--movilexa-glass-border);
    border-radius: 12px;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
}

.movilexa-chat-bubble--outgoing {
    background: rgba(99, 102, 241, 0.18);
    border-color: rgba(99, 102, 241, 0.35);
}

.movilexa-skeleton {
    background: linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(255,255,255,0.10) 50%, rgba(255,255,255,0.04) 75%);
    background-size: 200% 100%;
    animation: movilexa-shimmer 1.2s infinite;
    border-radius: 8px;
}

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

.movilexa-empty-state {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--movilexa-on-surface-variant);
}

.movilexa-ride-card-trust {
    border: 1px solid rgba(91, 141, 239, 0.35);
    border-radius: 12px;
    background: rgba(91, 141, 239, 0.08);
}

.movilexa-search-sheet {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1000;
    max-height: 55%;
    overflow-y: auto;
}

.movilexa-vehicle-chip {
    border: 1px solid var(--movilexa-glass-border);
    background: rgba(23, 31, 51, 0.7);
    border-radius: 999px;
}

.movilexa-vehicle-chip--selected {
    border-color: rgba(99, 102, 241, 0.55);
    box-shadow: 0 0 20px rgba(99, 102, 241, 0.25);
}

.movilexa-search-page {
    position: relative;
    height: calc(100vh - 48px);
    min-height: 24rem;
}

.movilexa-client-shell .mud-main-content {
    background: transparent;
}

.movilexa-admin-layout {
    --movilexa-admin-content-x: 1.25rem;
    --movilexa-admin-content-bottom: 1.5rem;
    --movilexa-admin-content-top: 1.25rem;
}

.movilexa-admin-layout .mud-main-content {
    min-height: 100vh;
    padding-top: calc(var(--mud-appbar-height, 48px) + var(--movilexa-admin-content-top));
    padding-right: var(--movilexa-admin-content-x);
    padding-bottom: var(--movilexa-admin-content-bottom);
    padding-left: var(--movilexa-admin-content-x);
}

.movilexa-admin-layout .mud-main-content.movilexa-admin-content--flush {
    padding: var(--mud-appbar-height, 48px) 0 0;
}

.movilexa-admin-drawer {
    background: var(--movilexa-glass-surface) !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-right: 1px solid var(--movilexa-glass-border) !important;
}

.movilexa-admin-drawer .mud-drawer-header.movilexa-admin-drawer-header {
    padding: calc(var(--mud-appbar-height, 48px) + 1rem) 1.25rem 1.25rem;
    min-height: auto;
    height: auto;
    border-bottom: 1px solid var(--movilexa-glass-border);
    margin-bottom: 0.25rem;
}

.movilexa-admin-drawer-brand {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    width: 100%;
}

.movilexa-admin-drawer-brand__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    border-radius: 12px;
    background: rgba(99, 102, 241, 0.14);
    border: 1px solid rgba(99, 102, 241, 0.28);
    color: var(--movilexa-primary);
}

.movilexa-admin-drawer-brand__text {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
    padding-top: 0.125rem;
}

.movilexa-admin-drawer-brand__title {
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: 0.01em;
    word-break: break-word;
}

.movilexa-admin-drawer-brand__subtitle {
    line-height: 1.4;
}

.movilexa-admin-drawer-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    background: rgba(99, 102, 241, 0.12);
    border: 1px solid rgba(99, 102, 241, 0.28);
    color: var(--movilexa-on-surface-variant);
}

.movilexa-admin-drawer .mud-nav-menu {
    padding: 0.75rem 0.75rem 1.25rem;
}

.movilexa-admin-drawer .movilexa-nav-link.mud-nav-link {
    border-radius: 10px;
    margin-bottom: 0.25rem;
    padding-top: 0.65rem;
    padding-bottom: 0.65rem;
}

.movilexa-page-header {
    row-gap: 0.75rem;
    column-gap: 1rem;
    margin-bottom: 1.75rem;
}

.movilexa-form-section__label {
    display: block;
    letter-spacing: 0.08em;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.movilexa-slug-preview {
    display: flex;
    align-items: flex-start;
    gap: 0.35rem;
    padding: 0.65rem 0.85rem;
    border-radius: 10px;
    background: rgba(99, 102, 241, 0.08);
    border: 1px solid rgba(99, 102, 241, 0.22);
    color: var(--movilexa-on-surface-variant);
}

.movilexa-slug-preview code {
    color: var(--movilexa-on-surface);
}

.movilexa-form-actions {
    border-top: 1px solid var(--movilexa-glass-border);
}

.movilexa-password-rules {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.85rem 1rem;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--movilexa-glass-border);
}

.movilexa-password-rules__title {
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    margin-bottom: 0.25rem;
    color: var(--movilexa-on-surface-variant);
}

.movilexa-password-rules__item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.35;
    transition: color var(--movilexa-motion-fast) var(--movilexa-ease);
}

.movilexa-password-rules__item--met {
    color: #34D399;
}

.movilexa-password-rules__item--pending {
    color: var(--movilexa-on-surface-variant);
}

@media (min-width: 960px) {
    .movilexa-admin-layout {
        --movilexa-admin-content-x: 1.5rem;
        --movilexa-admin-content-top: 1.5rem;
    }
}
