.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

.blazor-error-boundary::after {
    content: "An error has occurred."
}

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

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

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

.auth-wrap {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}

.auth-card {
    width: 100%;
    max-width: 520px;
    border-radius: 16px;
}

/* Filtro solo en teselas Search (tema oscuro). Dashboard usa basemap Oscuro. */
.movexa-theme-dark .movexa-search-page .leaflet-tile-pane {
    filter: brightness(0.72) contrast(1.15) saturate(0.65);
}

.movexa-theme-light .movexa-search-page .leaflet-tile-pane,
.movexa-theme-dark .movexa-dashboard-map-body .leaflet-tile-pane,
.movexa-theme-light .movexa-dashboard-map-body .leaflet-tile-pane {
    filter: none;
}

.movexa-search-page .leaflet-container,
.movexa-dashboard-map-body .leaflet-container {
    filter: none;
}

.movexa-dashboard-map-layer path.movexa-traccar-pin,
.leaflet-container path.movexa-traccar-pin {
    pointer-events: auto !important;
    cursor: pointer;
}

/* Ruta delicada: widths vía CSS vars; dash con periodo fijo 30 (animación sin salto) */
.movexa-dashboard path.movexa-route-flow:not(.movexa-route-flow--traveled):not(.movexa-route-flow--scar):not(.movexa-route-flow--ghost):not(.movexa-route-flow--dual-plan):not(.movexa-route-flow--chip-done):not(.movexa-route-flow--uber-done) {
    stroke: var(--mx-route-flow-color, #22d3ee) !important;
    stroke-opacity: 1 !important;
    stroke-width: var(--mx-route-flow-w, 3px) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
    fill: none !important;
    stroke-dasharray: 16 14 !important;
    animation: movexa-route-flow 1.2s linear infinite;
    will-change: stroke-dashoffset;
}

.movexa-dashboard path.movexa-route-flow--estimate {
    stroke-dasharray: 14 16 !important;
    animation-duration: 1.5s;
}

/* Ya recorrido / cicatriz / ghost: sin animación del flow genérico */
.movexa-dashboard path.movexa-route-flow--traveled,
.movexa-dashboard path.movexa-route-flow--scar,
.movexa-dashboard path.movexa-route-flow--ghost,
.movexa-dashboard path.movexa-route-flow--dual-plan,
.movexa-dashboard path.movexa-route-flow--chip-done,
.movexa-dashboard path.movexa-route-flow--uber-done {
    stroke-dasharray: none !important;
    animation: none !important;
    will-change: auto;
}

.movexa-dashboard path.movexa-route-flow--scar,
.movexa-dashboard path.movexa-route-flow--chip-done {
    stroke-opacity: 0.28 !important;
}

.movexa-dashboard path.movexa-route-flow--ghost {
    stroke: #64748b !important;
    stroke-opacity: 0.35 !important;
    stroke-dasharray: 6 10 !important;
    animation: none !important;
}

.movexa-dashboard path.movexa-route-flow--ghost-active {
    stroke-width: var(--mx-route-flow-w-active, 5px) !important;
}

.movexa-dashboard path.movexa-route-flow--ant {
    stroke-dasharray: 8 14 !important;
    animation: movexa-route-flow 0.9s linear infinite;
}

.movexa-dashboard path.movexa-route-casing--traveled {
    stroke: #334155 !important;
    stroke-opacity: 0.55 !important;
    stroke-width: var(--mx-route-casing-w-traveled, 6px) !important;
}

.movexa-dashboard path.movexa-route-casing--ghost {
    stroke-opacity: 0.25 !important;
}

.movexa-dashboard .movexa-route-driver-halo {
    pointer-events: none;
}

.movexa-dashboard .movexa-route-progress-chip-wrap {
    background: transparent !important;
    border: none !important;
}

.movexa-dashboard .movexa-route-progress-chip {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: #f8fafc;
    background: rgba(15, 23, 42, 0.82);
    border: 1px solid rgba(148, 163, 184, 0.45);
    border-radius: 6px;
    padding: 0.15rem 0.4rem;
    white-space: nowrap;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
    pointer-events: none;
}

.movexa-dashboard path.movexa-route-flow--remaining {
    stroke: var(--mx-route-flow-color, #22d3ee) !important;
    stroke-opacity: 1 !important;
}

.movexa-dashboard path.movexa-route-casing {
    stroke: #0b1220 !important;
    stroke-opacity: var(--mx-route-casing-opacity, 0.85) !important;
    stroke-width: var(--mx-route-casing-w, 7px) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
    fill: none !important;
    stroke-dasharray: none !important;
    animation: none !important;
}

.movexa-dashboard path.movexa-route-base {
    stroke: #4338ca !important;
    stroke-opacity: 0.9 !important;
    stroke-width: var(--mx-route-base-w, 5px) !important;
    stroke-linecap: round !important;
    stroke-linejoin: round !important;
    fill: none !important;
    stroke-dasharray: none !important;
    animation: none !important;
}

/* Periodo = 16+14 = 30 */
@keyframes movexa-route-flow {
    from {
        stroke-dashoffset: 0;
    }
    to {
        stroke-dashoffset: -30;
    }
}

@media (prefers-reduced-motion: reduce) {
    .movexa-dashboard path.movexa-route-flow:not(.movexa-route-flow--traveled):not(.movexa-route-flow--scar):not(.movexa-route-flow--ghost):not(.movexa-route-flow--dual-plan):not(.movexa-route-flow--chip-done):not(.movexa-route-flow--uber-done) {
        animation: none !important;
        stroke: var(--mx-route-flow-color, #22d3ee) !important;
        stroke-width: var(--mx-route-flow-w, 3px) !important;
    }
}

/* Marcadores de flota — pulso sincronizado con zoom (sin transform en SVG) */
.movexa-dashboard .movexa-marker-core {
    animation: movexa-marker-core 2.1s ease-in-out infinite;
    animation-delay: var(--mx-delay, 0s);
}

@keyframes movexa-marker-core {
    0%, 100% {
        opacity: 1;
        stroke-width: 2;
        stroke-opacity: 0.95;
        filter:
            drop-shadow(0 0 6px color-mix(in srgb, var(--mx-color, #22c55e) 75%, transparent))
            drop-shadow(0 0 14px color-mix(in srgb, var(--mx-color, #22c55e) 40%, transparent));
    }

    50% {
        opacity: 0.78;
        stroke-width: 6;
        stroke-opacity: 0.35;
        filter:
            drop-shadow(0 0 12px color-mix(in srgb, var(--mx-color, #22c55e) 95%, transparent))
            drop-shadow(0 0 28px color-mix(in srgb, var(--mx-color, #22c55e) 65%, transparent))
            drop-shadow(0 0 44px color-mix(in srgb, var(--mx-color, #22c55e) 35%, transparent));
    }
}

.leaflet-tooltip.movexa-fare-sim-tip {
    font-size: 0.7rem;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: 4px;
}

.movexa-create-ride-map-host {
    border-radius: 12px;
    overflow: hidden;
}

.movexa-create-ride-pin-wrap {
    background: transparent;
    border: none;
}

.movexa-create-ride-pin {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    border: 2px solid #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
    cursor: grab;
}

.movexa-create-ride-pin--pickup {
    background: #34d399;
}

.movexa-create-ride-pin--dest {
    background: #6366f1;
}

.movexa-create-ride-pin:active {
    cursor: grabbing;
}

.movexa-zone-map-host {
    border-radius: 12px;
    overflow: hidden;
}

.movexa-zone-vertex {
    width: 16px !important;
    height: 16px !important;
    margin-left: -8px !important;
    margin-top: -8px !important;
    border-radius: 50%;
    background: #6366f1;
    border: 2px solid #ffffff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
    cursor: grab;
}

.movexa-zone-vertex:active {
    cursor: grabbing;
}

.movexa-file-pick {
    position: relative;
    display: inline-flex;
    align-items: center;
    cursor: pointer;
}

.movexa-file-pick__input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 1;
}

.movexa-file-pick .mud-button-root {
    pointer-events: none;
    padding: 0.35rem 0.85rem;
    border-radius: 4px;
    font-size: 0.8125rem;
    text-transform: none;
    letter-spacing: normal;
}

.movexa-color-swatch {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 8px;
    border: 1px solid var(--movexa-glass-border, rgba(15, 23, 42, 0.18));
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15);
    background-image: linear-gradient(45deg, #555 25%, transparent 25%),
        linear-gradient(-45deg, #555 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, #555 75%),
        linear-gradient(-45deg, transparent 75%, #555 75%);
    background-size: 10px 10px;
    background-position: 0 0, 0 5px, 5px -5px, -5px 0;
}

.movexa-color-swatch--lg {
    width: 52px;
    height: 52px;
    border-radius: 12px;
}

.movexa-brand-studio {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

@media (min-width: 1100px) {
    .movexa-brand-studio {
        grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
        gap: 1.5rem;
    }

    .movexa-brand-studio__preview {
        position: sticky;
        top: calc(var(--mud-appbar-height, 48px) + 1rem);
    }
}

.movexa-brand-studio__editor {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.movexa-brand-card {
    padding: 1.15rem 1.25rem 1.25rem;
    border-radius: 16px;
    border: 1px solid var(--movexa-glass-border);
    background: var(--movexa-glass-surface);
    box-shadow: inset 0 1px 0 var(--movexa-glass-inset, rgba(255, 255, 255, 0.04));
}

.movexa-brand-card--compact {
    padding-bottom: 1rem;
}

.movexa-brand-card__head {
    margin-bottom: 1rem;
}

.movexa-brand-card__eyebrow {
    letter-spacing: 0.08em;
    display: block;
    margin-bottom: 0.15rem;
}

.movexa-brand-card__title {
    font-weight: 700;
    margin-bottom: 0.2rem;
}

.movexa-theme-picker {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

.movexa-theme-option {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    text-align: left;
    padding: 0.75rem 0.85rem;
    border-radius: 12px;
    border: 1px solid var(--movexa-glass-border);
    background: var(--movexa-muted-fill);
    color: inherit;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
    font: inherit;
}

.movexa-theme-option:hover {
    border-color: var(--movexa-glass-hover-border, rgba(99, 102, 241, 0.45));
}

.movexa-theme-option--active {
    border-color: var(--mud-palette-primary, #6366f1);
    box-shadow: 0 0 0 1px var(--mud-palette-primary, #6366f1);
    background: rgba(99, 102, 241, 0.08);
}

.movexa-theme-option__swatch {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 10px;
    flex-shrink: 0;
    border: 1px solid var(--movexa-glass-border);
}

.movexa-theme-option__swatch--dark {
    background:
        linear-gradient(145deg, #171f33 55%, #0b1326 55%);
}

.movexa-theme-option__swatch--light {
    background:
        linear-gradient(145deg, #ffffff 55%, #f0f4ff 55%);
}

.movexa-theme-option__copy {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.movexa-theme-option__copy strong {
    font-size: 0.9rem;
    font-weight: 700;
}

.movexa-theme-option__copy small {
    font-size: 0.72rem;
    line-height: 1.3;
    color: var(--movexa-on-surface-variant);
}

.movexa-brand-colors {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}

@media (min-width: 720px) {
    .movexa-brand-colors {
        grid-template-columns: 1fr 1fr;
        gap: 1rem;
    }
}

.movexa-brand-color-block {
    min-width: 0;
    padding: 0.85rem;
    border-radius: 12px;
    border: 1px solid var(--movexa-glass-border);
    background: var(--movexa-muted-fill);
}

.movexa-brand-color-block__meta {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 0.75rem;
}

.movexa-brand-color-block__info {
    min-width: 0;
}

.movexa-brand-hex {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    padding: 0.15rem 0.45rem;
    border-radius: 6px;
    background: var(--movexa-downloads-bg, rgba(0, 0, 0, 0.08));
    border: 1px solid var(--movexa-glass-border);
}

.movexa-brand-color-picker {
    max-width: 100%;
}

.movexa-brand-color-picker .mud-picker-static {
    background: transparent;
    width: 100% !important;
    max-width: 100%;
}

.movexa-brand-color-picker .mud-picker-container,
.movexa-brand-color-picker .mud-colorpicker {
    width: 100%;
    max-width: 100%;
}

.movexa-brand-logo {
    display: grid;
    grid-template-columns: minmax(120px, 160px) minmax(0, 1fr);
    gap: 1rem;
    align-items: stretch;
}

@media (max-width: 600px) {
    .movexa-brand-logo {
        grid-template-columns: 1fr;
    }

    .movexa-theme-picker {
        grid-template-columns: 1fr;
    }
}

.movexa-brand-logo__frame {
    min-height: 7.5rem;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.75rem;
}

.movexa-brand-logo__img {
    max-height: 72px;
    max-width: 100%;
    object-fit: contain;
}

.movexa-brand-logo__actions {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    justify-content: center;
}

.movexa-brand-surfaces {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.movexa-brand-surface-chip {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    border: 1px solid var(--movexa-glass-border);
    background: var(--movexa-muted-fill);
    color: var(--movexa-on-surface-variant);
}

.movexa-brand-studio__save {
    display: flex;
    justify-content: flex-start;
    padding-top: 0.25rem;
}

.movexa-brand-preview-panel {
    border-radius: 18px;
    padding: 1rem;
    overflow: hidden;
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.18);
}

.movexa-brand-preview-panel__label {
    display: block;
    letter-spacing: 0.08em;
    margin-bottom: 0.75rem;
}

.movexa-brand-preview__bar {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.7rem 0.85rem;
    border-radius: 12px;
    margin-bottom: 0.85rem;
}

.movexa-brand-preview__logo {
    height: 28px;
    width: auto;
    object-fit: contain;
}

.movexa-brand-preview__mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 8px;
    font-size: 0.65rem;
    font-weight: 800;
}

.movexa-brand-preview__title {
    font-weight: 700;
    font-size: 0.95rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.movexa-brand-preview__body {
    display: grid;
    grid-template-columns: 5.5rem minmax(0, 1fr);
    gap: 0.65rem;
    min-height: 11rem;
}

.movexa-brand-preview__rail {
    border-radius: 12px;
    border: 1px solid;
    padding: 0.55rem 0.4rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.movexa-brand-preview__nav {
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.4rem 0.45rem;
    border-radius: 8px;
}

.movexa-brand-preview__nav--active {
    border-left: 3px solid;
}

.movexa-brand-preview__content {
    border-radius: 12px;
    padding: 0.15rem 0.1rem;
}

.movexa-brand-preview__headline {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
}

.movexa-brand-preview__sub {
    margin: 0.2rem 0 0.85rem;
    font-size: 0.78rem;
}

.movexa-brand-preview__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.85rem;
}

.movexa-brand-preview__cta {
    display: inline-block;
    padding: 0.45rem 1rem;
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.875rem;
}

.movexa-brand-preview__chip {
    display: inline-block;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    border: 1.5px solid;
    font-size: 0.8rem;
    font-weight: 600;
}

.movexa-brand-preview__email {
    position: relative;
    border-radius: 10px;
    border: 1px solid;
    padding: 0.85rem 0.75rem 0.75rem;
    font-size: 0.72rem;
    overflow: hidden;
}

.movexa-brand-preview__email-bar {
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 4px;
}

.movexa-brand-preview__email-accent {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
}

/* Wide tables in MudDialog: always-visible horizontal scrollbar + sticky Acciones */
.mud-dialog .mud-dialog-content {
    max-width: 100%;
    overflow-x: hidden;
}

.movexa-dialog-table-scroll {
    width: 100%;
    max-width: 100%;
    /* Keep BOTH scrollbars inside the dialog content (above Cerrar). */
    max-height: min(48vh, calc(100vh - 320px));
    overflow-x: scroll;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-gutter: stable both-edges;
    padding-bottom: 2px;
    margin-bottom: 8px;
    border-bottom: 1px solid var(--mud-palette-lines-default, rgba(128, 128, 128, 0.25));
    /*
     * Use Mud palette vars that exist in light AND dark (background-grey does NOT).
     * Dialogs portal outside .movexa-theme-*; html color-scheme is synced from layout.
     */
    scrollbar-width: auto;
    scrollbar-color: var(--mud-palette-text-disabled, #94a3b8)
        var(--mud-palette-surface, #e2e8f0);
}

.movexa-dialog-table-scroll::-webkit-scrollbar {
    height: 14px;
    width: 14px;
    display: block;
}

.movexa-dialog-table-scroll::-webkit-scrollbar-track {
    background: var(--mud-palette-surface, #e2e8f0);
    border-radius: 8px;
    border: 1px solid var(--mud-palette-lines-default, rgba(128, 128, 128, 0.2));
}

.movexa-dialog-table-scroll::-webkit-scrollbar-thumb {
    background: var(--mud-palette-text-disabled, #64748b);
    border-radius: 8px;
    border: 3px solid var(--mud-palette-surface, #e2e8f0);
    min-width: 48px;
}

.movexa-dialog-table-scroll::-webkit-scrollbar-thumb:hover {
    background: var(--mud-palette-text-secondary, #475569);
}

.movexa-dialog-table-scroll::-webkit-scrollbar-corner {
    background: var(--mud-palette-surface, #e2e8f0);
}

.movexa-dialog-table-scroll .mud-table,
.movexa-dialog-table-scroll .mud-table-container,
.movexa-dialog-table-scroll .mud-table-root {
    width: max-content !important;
    max-width: none !important;
    min-width: 1100px;
}

/* MudTable's own container must not clip / hide the dialog scrollbar */
.movexa-dialog-table-scroll .mud-table-container {
    overflow: visible !important;
}

.movexa-dialog-table-scroll .mud-table-root {
    table-layout: auto;
}

.movexa-dialog-table-scroll .mud-table-cell,
.movexa-dialog-table-scroll .mud-table-root th,
.movexa-dialog-table-scroll .mud-table-root td {
    white-space: nowrap;
}

/* Long addresses must not stretch the dialog table (full text stays in title). */
.movexa-dialog-table-scroll th.movexa-address-cell,
.movexa-dialog-table-scroll td.movexa-address-cell {
    width: 240px;
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.movexa-passenger-name-link,
.movexa-driver-name-link {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: 600;
    color: var(--mud-palette-primary);
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.movexa-passenger-name-link:hover,
.movexa-passenger-name-link:focus-visible,
.movexa-driver-name-link:hover,
.movexa-driver-name-link:focus-visible {
    text-decoration: underline;
}

.movexa-passenger-name-link:disabled,
.movexa-driver-name-link:disabled {
    cursor: wait;
    opacity: 0.7;
}

.movexa-sticky-actions {
    position: sticky !important;
    right: 0;
    z-index: 2;
    background: var(--mud-palette-surface) !important;
    box-shadow: -8px 0 10px -8px rgba(0, 0, 0, 0.45);
    white-space: nowrap;
}

th.movexa-sticky-actions {
    z-index: 3;
}

/* Viajes programados — cards en < Md (sustituye el sm-table genérico de Mud) */
.movexa-scheduled-ride-cards {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.movexa-scheduled-ride-card {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding: 0.85rem 1rem;
    border-radius: 12px;
    border: 1px solid var(--mud-palette-lines-default, rgba(128, 128, 128, 0.22));
    background: var(--mud-palette-surface, #fff);
}

.movexa-scheduled-ride-card__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.movexa-scheduled-ride-card__when {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
}

.movexa-scheduled-ride-card__date {
    font-weight: 600;
    font-size: 0.95rem;
    line-height: 1.25;
    font-variant-numeric: tabular-nums;
}

.movexa-scheduled-ride-card__badges {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.movexa-scheduled-ride-card__price {
    flex-shrink: 0;
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.25;
    white-space: nowrap;
}

.movexa-scheduled-ride-card__who {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem;
    margin: 0;
    font-size: 0.875rem;
    line-height: 1.35;
    color: var(--mud-palette-text-primary);
}

.movexa-scheduled-ride-card__dot {
    color: var(--mud-palette-text-secondary);
}

.movexa-scheduled-ride-card__route {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.55rem 0.65rem;
    border-radius: 8px;
    background: var(--mud-palette-background-gray, rgba(0, 0, 0, 0.03));
}

.movexa-scheduled-ride-card__stop {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.movexa-scheduled-ride-card__label {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.movexa-scheduled-ride-card__address {
    font-size: 0.85rem;
    line-height: 1.35;
    text-align: left;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.movexa-scheduled-ride-card__meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 0.75rem;
    margin: 0;
}

.movexa-scheduled-ride-card__meta > div {
    min-width: 0;
}

.movexa-scheduled-ride-card__meta > div:last-child:nth-child(odd) {
    grid-column: 1 / -1;
}

.movexa-scheduled-ride-card__meta dt {
    margin: 0;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.movexa-scheduled-ride-card__meta dd {
    margin: 0.1rem 0 0;
    font-size: 0.85rem;
    line-height: 1.3;
}

.movexa-scheduled-ride-card__actions {
    display: flex;
    justify-content: flex-end;
    padding-top: 0.15rem;
    border-top: 1px solid var(--mud-palette-lines-default, rgba(128, 128, 128, 0.18));
}

.movexa-scheduled-ride-card__actions .d-flex {
    justify-content: flex-end;
}


