/**
 * Estilos personalizados — Sistema de Reservas UNAJ
 * Extensiones sobre Bootstrap 5
 */

/* ================================================================
   DESIGN TOKENS
   ================================================================ */
:root {
    /* Color primario UNAJ */
    --clr-primary:        #1D9E75;
    --clr-primary-dark:   #167a5a;
    --clr-primary-light:  #e8f7f2;
    --clr-primary-subtle: #d1f0e5;

    /* Grises */
    --clr-gray-50:  #f8f9fa;
    --clr-gray-100: #f1f3f5;
    --clr-gray-200: #e9ecef;
    --clr-gray-400: #ced4da;
    --clr-gray-600: #6c757d;
    --clr-gray-800: #343a40;
    --clr-gray-900: #212529;

    /* Semánticos */
    --clr-success: #198754;
    --clr-warning: #e6a817;
    --clr-danger:  #dc3545;
    --clr-info:    #0dcaf0;

    /* Tipografía */
    --font-sans:  'Segoe UI', system-ui, -apple-system, sans-serif;
    --text-xs:    0.75rem;
    --text-sm:    0.8125rem;
    --text-base:  0.9375rem;
    --text-lg:    1.0625rem;

    /* Radios */
    --radius-sm: 0.25rem;
    --radius-md: 0.5rem;
    --radius-lg: 0.75rem;

    /* Sombras planas */
    --shadow-xs: 0 1px 2px rgba(0,0,0,.06);
    --shadow-sm: 0 1px 4px rgba(0,0,0,.08);

    /* Layout sidebar */
    --sidebar-w:           240px;
    --sidebar-w-collapsed: 64px;
    --topbar-h:            52px;
}

/* ================================================================
   BOOTSTRAP OVERRIDES — color primario UNAJ
   ================================================================ */
:root {
    --bs-primary:     #1D9E75;
    --bs-primary-rgb: 29, 158, 117;
    --bs-link-color:       #1D9E75;
    --bs-link-hover-color: #167a5a;
}

.btn-primary {
    --bs-btn-bg:                   #1D9E75;
    --bs-btn-border-color:         #1D9E75;
    --bs-btn-hover-bg:             #167a5a;
    --bs-btn-hover-border-color:   #167a5a;
    --bs-btn-active-bg:            #126649;
    --bs-btn-active-border-color:  #126649;
    --bs-btn-disabled-bg:          #1D9E75;
    --bs-btn-disabled-border-color:#1D9E75;
    --bs-btn-focus-shadow-rgb:     29, 158, 117;
}

.btn-outline-primary {
    --bs-btn-color:              #1D9E75;
    --bs-btn-border-color:       #1D9E75;
    --bs-btn-hover-bg:           #1D9E75;
    --bs-btn-hover-border-color: #1D9E75;
    --bs-btn-active-bg:          #1D9E75;
    --bs-btn-active-border-color:#1D9E75;
    --bs-btn-focus-shadow-rgb:   29, 158, 117;
}

/* ================================================================
   BASE
   ================================================================ */
body {
    font-family: var(--font-sans);
    font-size: var(--text-base);
    color: var(--clr-gray-900);
    background-color: var(--clr-gray-50);
}

/* ================================================================
   APP LAYOUT — sidebar + contenido principal
   ================================================================ */
.app-layout {
    display: flex;
    min-height: 100vh;
}

/* ================================================================
   SIDEBAR
   ================================================================ */
.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: var(--sidebar-w);
    background-color: var(--clr-gray-900);
    color: #fff;
    display: flex;
    flex-direction: column;
    z-index: 1040;
    overflow: hidden;
    transition: width 0.2s ease;
    flex-shrink: 0;
}

/* Estado colapsado — desktop */
.sidebar--collapsed {
    width: var(--sidebar-w-collapsed);
}

/* Cabecera: logo + botón colapsar */
.sidebar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 0.75rem;
    height: var(--topbar-h);
    border-bottom: 1px solid rgba(255,255,255,.08);
    flex-shrink: 0;
}

.sidebar-brand {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    color: #fff;
    text-decoration: none;
    font-weight: 700;
    font-size: 0.95rem;
    overflow: hidden;
    min-width: 0;
}

.sidebar-brand:hover {
    color: #fff;
    text-decoration: none;
}

.sidebar-brand-icon {
    font-size: 1.4rem;
    flex-shrink: 0;
    color: var(--clr-primary);
    line-height: 1;
}

.sidebar-brand-text {
    white-space: nowrap;
    overflow: hidden;
    transition: opacity 0.15s ease, max-width 0.2s ease;
    max-width: 160px;
}

.sidebar--collapsed .sidebar-brand-text {
    opacity: 0;
    max-width: 0;
}

.sidebar--collapsed .sidebar-header {
    padding: 0 0.5rem;
    justify-content: center;
    gap: 0.25rem;
}

.sidebar--collapsed .sidebar-brand {
    gap: 0;
}

.sidebar--collapsed .sidebar-collapse-btn {
    padding: 0.2rem;
}

/* Botón colapsar */
.sidebar-collapse-btn {
    background: none;
    border: none;
    color: rgba(255,255,255,.45);
    cursor: pointer;
    padding: 0.3rem;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    line-height: 1;
    flex-shrink: 0;
    transition: color 0.15s;
}

.sidebar-collapse-btn:hover {
    color: #fff;
    background-color: rgba(255,255,255,.08);
}

/* Navegación */
.sidebar-nav {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 0.5rem 0;
}

.sidebar-nav::-webkit-scrollbar {
    width: 4px;
}

.sidebar-nav::-webkit-scrollbar-thumb {
    background: rgba(255,255,255,.15);
    border-radius: 2px;
}

.sidebar-nav-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.875rem;
    color: rgba(255,255,255,.65);
    text-decoration: none;
    font-size: var(--text-sm);
    font-weight: 500;
    white-space: nowrap;
    border-radius: var(--radius-sm);
    margin: 0.125rem 0.5rem;
    transition: background-color 0.15s, color 0.15s;
    overflow: hidden;
}

.sidebar-nav-item:hover {
    background-color: rgba(255,255,255,.08);
    color: #fff;
    text-decoration: none;
}

.sidebar-nav-item.active {
    background-color: var(--clr-primary);
    color: #fff;
}

.sidebar-nav-icon {
    font-size: 1.2rem;
    flex-shrink: 0;
    width: 1.25rem;
    text-align: center;
    line-height: 1;
}

.sidebar-nav-label {
    white-space: nowrap;
    overflow: hidden;
    transition: opacity 0.15s ease, max-width 0.2s ease;
    max-width: 160px;
}

.sidebar--collapsed .sidebar-nav-label {
    opacity: 0;
    max-width: 0;
}

/* Centrar iconos en estado colapsado */
.sidebar--collapsed .sidebar-nav-item {
    justify-content: center;
    padding-left: 0;
    padding-right: 0;
    margin-left: 0.25rem;
    margin-right: 0.25rem;
}

/* Pie del sidebar: cerrar sesión */
.sidebar-footer {
    padding: 0.5rem;
    border-top: 1px solid rgba(255,255,255,.08);
    flex-shrink: 0;
}

.sidebar-footer .sidebar-nav-item {
    margin: 0;
    width: 100%;
}

/* ================================================================
   MAIN WRAPPER
   ================================================================ */
.main-wrapper {
    flex: 1;
    margin-left: var(--sidebar-w);
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    transition: margin-left 0.2s ease;
}

.app-layout.sidebar-collapsed .main-wrapper {
    margin-left: var(--sidebar-w-collapsed);
}

/* ================================================================
   TOPBAR — visible solo en móvil
   ================================================================ */
.topbar {
    display: none;
    align-items: center;
    gap: 0.75rem;
    height: var(--topbar-h);
    padding: 0 1rem;
    background-color: #fff;
    border-bottom: 1px solid var(--clr-gray-200);
    box-shadow: var(--shadow-xs);
    position: sticky;
    top: 0;
    z-index: 100;
    flex-shrink: 0;
}

.topbar-toggle-btn {
    background: none;
    border: none;
    padding: 0.35rem;
    cursor: pointer;
    color: var(--clr-gray-800);
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    line-height: 1;
    flex-shrink: 0;
}

.topbar-toggle-btn:hover {
    background-color: var(--clr-gray-100);
}

.topbar-title {
    font-weight: 600;
    font-size: var(--text-base);
    color: var(--clr-gray-900);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ================================================================
   MAIN CONTENT
   ================================================================ */
.main-content {
    flex: 1;
    padding: 1.5rem;
    min-width: 0;
}

/* ================================================================
   OVERLAY — móvil
   ================================================================ */
.sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 1039;
}

.sidebar-overlay.active {
    display: block;
}

/* ================================================================
   FOOTER
   ================================================================ */
.app-footer {
    background-color: #fff;
    border-top: 1px solid var(--clr-gray-200);
    padding: 0.875rem 1.5rem;
    color: var(--clr-gray-600);
    font-size: var(--text-sm);
    text-align: center;
    flex-shrink: 0;
}

/* ================================================================
   RESPONSIVE — MÓVIL (< 992px)
   ================================================================ */
@media (max-width: 991.98px) {
    .topbar {
        display: flex;
    }

    .sidebar {
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        /* El ancho siempre es el completo en móvil */
        width: var(--sidebar-w) !important;
    }

    .sidebar.sidebar--open {
        transform: translateX(0);
    }

    .sidebar-collapse-btn {
        display: none;
    }

    .main-wrapper {
        margin-left: 0 !important;
    }

    .main-content {
        padding: 1rem;
    }
}

/* ================================================================
   BADGES DE ESTADO DE RESERVAS
   ================================================================ */
.estado-badge {
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: 0.02em;
    border-radius: var(--radius-sm);
}

.estado-badge.estado-pendiente-pago {
    background-color: #fff3cd !important;
    color: #664d03;
}

.estado-badge.estado-confirmada {
    background-color: #d1e7dd !important;
    color: #0f5132;
}

.estado-badge.estado-en-uso {
    background-color: #cff4fc !important;
    color: #055160;
}

.estado-badge.estado-activa {
    background-color: #cff4fc !important;
    color: #055160;
}

/* Especificidad mayor (3 clases) para superar bg-info !important de Bootstrap */
.badge.estado-badge.estado-activa {
    background-color: #cff4fc !important;
    color: #055160 !important;
}

.estado-badge.estado-cerrada {
    background-color: var(--clr-gray-200) !important;
    color: var(--clr-gray-800);
}

.estado-badge.estado-anulada {
    background-color: #f8d7da !important;
    color: #842029;
}

.estado-badge.estado-suspendida {
    background-color: #f8d7da !important;
    color: #842029;
}

.bg-orange {
    background-color: #fd7e14 !important;
    color: #fff !important;
}

/* ================================================================
   TABLAS DE RESERVAS
   ================================================================ */
.tabla-reservas {
    font-size: var(--text-sm);
}

.tabla-reservas thead th {
    background-color: var(--clr-gray-50);
    border-bottom-width: 2px;
    white-space: nowrap;
    font-weight: 600;
    color: var(--clr-gray-800);
}

.tabla-reservas tbody tr:hover {
    background-color: var(--clr-primary-light);
}

.tabla-reservas .col-monto {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

@media (max-width: 767.98px) {
    .tabla-reservas {
        font-size: var(--text-xs);
    }
}

/* ================================================================
   CALENDARIO MENSUAL (CSS Grid)
   ================================================================ */
.cal-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 2px;
    background-color: var(--clr-gray-200);
    border: 1px solid var(--clr-gray-200);
    border-radius: var(--radius-md);
    overflow: hidden;
    width: 100%;
}

.cal-grid .cal-cabecera {
    background-color: var(--clr-primary);
    color: #fff;
    font-size: var(--text-xs);
    font-weight: 600;
    text-align: center;
    padding: 0.5rem 0.25rem;
}

.cal-celda {
    background-color: #fff;
    min-height: 90px;
    padding: 0.35rem;
    vertical-align: top;
    font-size: 0.8rem;
    min-width: 0;
    overflow: hidden;
}

.cal-celda.cal-hoy {
    background-color: var(--clr-primary-light);
    outline: 2px solid var(--clr-primary);
    outline-offset: -2px;
}

.cal-celda.cal-otro-mes {
    background-color: var(--clr-gray-50);
    color: var(--clr-gray-400);
}

.cal-celda .cal-dia-num {
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.cal-evento {
    display: block;
    font-size: 11px;
    line-height: 1.15;
    padding: 1px 4px;
    margin-bottom: 2px;
    border-radius: 2px;
    background-color: var(--clr-primary);
    color: #fff;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-height: 18px;
    max-width: 100%;
}

.cal-evento:hover {
    color: #fff;
    opacity: 0.9;
}

.cal-evento.estado-pendiente-pago { background-color: #ffc107; color: #000; }
.cal-evento.estado-confirmada     { background-color: #198754; color: #fff; }
.cal-evento.estado-en-uso,
.cal-evento.estado-activa         { background-color: #0d6efd; color: #fff; }
.cal-evento.estado-cerrada        { background-color: #198754; color: #fff; }
.cal-evento.estado-anulada,
.cal-evento.estado-suspendida     { background-color: var(--clr-danger); color: #fff; }

/* ----------------------------------------------------------------
   Calendario DESKTOP PEQUEÑO (992px - 1199px) — sidebar abierto
   ---------------------------------------------------------------- */
@media (min-width: 992px) and (max-width: 1199.98px) {
    .cal-celda {
        min-height: 75px;
        padding: 0.3rem;
    }

    .cal-evento {
        font-size: 10px;
    }
}

/* ----------------------------------------------------------------
   Calendario TABLET (768px - 991px) — ajustes responsivos
   ---------------------------------------------------------------- */
@media (min-width: 768px) and (max-width: 991.98px) {
    .cal-celda {
        min-height: 60px;
        padding: 0.2rem;
    }

    .cal-grid .cal-cabecera {
        font-size: 0.65rem;
        padding: 0.35rem 0.15rem;
    }

    .cal-celda .cal-dia-num {
        font-size: 0.75rem;
        margin-bottom: 0.1rem;
    }

    .cal-evento {
        font-size: 9px;
        padding: 1px 2px;
        margin-bottom: 1px;
        max-height: 15px;
    }

    .cal-evento-movilidad {
        font-size: 8px;
    }
}

/* ----------------------------------------------------------------
   Calendario MÓVIL (estilo Google Calendar) — pantallas < 768px
   ---------------------------------------------------------------- */
@media (max-width: 767.98px) {
    #panel-mensual {
        padding-left: 0 !important;
        padding-right: 0 !important;
        overflow-x: hidden !important;
    }

    #cal-grid {
        width: 100% !important;
        max-width: 100% !important;
        overflow: hidden !important;
        padding: 0 !important;
        margin: 0 !important;
        box-sizing: border-box !important;
    }

    html body div.container div#panel-mensual div.cal-grid,
    div#panel-mensual div.cal-grid,
    #panel-mensual .cal-grid,
    #cal-grid > div.cal-grid {
        display: grid !important;
        grid-template-columns: repeat(7, minmax(0, 1fr)) !important;
        grid-template-rows: auto !important;
        gap: 0 !important;
        background-color: #e5e7eb !important;
        border: none !important;
        border-radius: 0 !important;
        overflow: hidden !important;
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-cabecera,
    div#panel-mensual div.cal-grid > div.cal-cabecera,
    #panel-mensual .cal-grid > .cal-cabecera {
        background-color: var(--clr-primary-dark) !important;
        color: #fff !important;
        font-size: 11px !important;
        font-weight: 600 !important;
        text-align: center !important;
        padding: 4px 0 !important;
        text-transform: uppercase !important;
        min-width: 0 !important;
        max-width: 100% !important;
        overflow: hidden !important;
        white-space: nowrap !important;
        box-sizing: border-box !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-celda,
    div#panel-mensual div.cal-grid > div.cal-celda,
    #panel-mensual .cal-grid > .cal-celda {
        min-height: 60px !important;
        height: auto !important;
        padding: 2px !important;
        border: 1px solid #e5e7eb !important;
        background-color: #fff !important;
        vertical-align: top !important;
        outline: none !important;
        min-width: 0 !important;
        max-width: 100% !important;
        overflow: hidden !important;
        box-sizing: border-box !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-celda.cal-otro-mes,
    div#panel-mensual div.cal-grid > div.cal-celda.cal-otro-mes,
    #panel-mensual .cal-grid > .cal-celda.cal-otro-mes {
        opacity: 0.35 !important;
        background-color: #f9fafb !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-celda.cal-hoy,
    div#panel-mensual div.cal-grid > div.cal-celda.cal-hoy,
    #panel-mensual .cal-grid > .cal-celda.cal-hoy {
        outline: none !important;
        background-color: #fff !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-celda > div.cal-dia-num,
    div#panel-mensual div.cal-grid > div.cal-celda > div.cal-dia-num,
    #panel-mensual .cal-grid > .cal-celda > .cal-dia-num {
        display: none !important;
    }

    html body div.container div#panel-mensual div.cal-grid > div.cal-celda > a.cal-evento,
    div#panel-mensual div.cal-grid > div.cal-celda > a.cal-evento,
    #panel-mensual .cal-grid > .cal-celda > .cal-evento {
        display: none !important;
    }

    #cal-grid .cal-dia-numero {
        font-size: 13px !important;
        width: 24px !important;
        height: 24px !important;
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        border-radius: 50% !important;
        margin: 2px auto 2px 2px !important;
        cursor: pointer !important;
    }

    #cal-grid .cal-dia-numero.hoy {
        background: var(--clr-primary) !important;
        color: white !important;
    }

    #cal-grid .cal-evento-movil {
        display: block !important;
        font-size: 9px !important;
        line-height: 14px !important;
        height: 14px !important;
        border-radius: 4px !important;
        padding: 0 3px !important;
        margin-bottom: 1px !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
        color: white !important;
        cursor: pointer !important;
        text-decoration: none !important;
        max-width: 100% !important;
    }

    #cal-grid .cal-mas-eventos {
        font-size: 10px !important;
        color: var(--clr-primary) !important;
        cursor: pointer !important;
        padding-left: 4px !important;
        font-weight: 600 !important;
    }

    #cal-titulo-mes {
        font-size: 1.2rem !important;
    }

    #cal-titulo-principal {
        font-size: 1.1rem;
    }

    .nav-tabs {
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
    }

    .nav-tabs .nav-link {
        white-space: nowrap;
        font-size: 0.85rem;
        padding: 0.5rem 0.75rem;
    }
}

/* ================================================================
   EQUIPOS ADICIONALES (formulario reserva)
   ================================================================ */
.equipos-seccion-body {
    color: var(--clr-gray-900);
}

.equipos-vacio-msg {
    font-size: var(--text-sm);
    color: var(--clr-gray-600) !important;
}

.equipo-card {
    background-color: #fff;
    border: 1px solid var(--clr-gray-200);
    border-radius: var(--radius-md);
    color: var(--clr-gray-900);
    height: 100%;
    transition: border-color 0.15s ease-in-out, background-color 0.15s ease-in-out,
        box-shadow 0.15s ease-in-out;
}

.equipo-card:hover {
    border-color: var(--clr-gray-400);
}

.equipo-card--selected {
    border-color: var(--clr-primary);
    background-color: var(--clr-primary-light);
    box-shadow: 0 0 0 1px rgba(29, 158, 117, 0.25);
}

.equipo-card-inner {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
}

.equipo-card-checkbox {
    flex-shrink: 0;
    width: 1.1em;
    height: 1.1em;
    margin: 0.15rem 0 0;
    cursor: pointer;
}

.equipo-card-content {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
    flex: 1;
}

.equipo-card-nombre {
    display: block;
    font-weight: 600;
    font-size: var(--text-sm);
    line-height: 1.35;
    color: var(--clr-gray-900);
}

.equipo-card-tarifa {
    display: block;
    font-size: 0.875rem;
    line-height: 1.3;
    color: var(--clr-gray-600) !important;
}

/* ================================================================
   DASHBOARD — KPI cards
   ================================================================ */
.kpi-card--primary {
    border-top: 3px solid var(--clr-primary);
}

.kpi-card--danger {
    border-top: 3px solid var(--clr-danger);
}

.kpi-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.kpi-value {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    color: var(--clr-gray-900);
    margin-bottom: 0.2rem;
}

.kpi-value--money {
    font-size: 1.4rem;
}

.kpi-label {
    font-size: var(--text-sm);
    color: var(--clr-gray-600);
    font-weight: 500;
}

.kpi-icon {
    font-size: 3rem;
    line-height: 1;
    flex-shrink: 0;
    color: var(--clr-gray-900);
    opacity: 0.15;
}

/* ================================================================
   DASHBOARD — Alert cards (borde izquierdo de acento)
   ================================================================ */
.dash-alert-danger {
    border-left: 3px solid var(--clr-danger);
}

.dash-alert-warning {
    border-left: 3px solid var(--clr-warning);
}

/* ================================================================
   TIMELINE — Historial de estados (reservas/detalle.php)
   ================================================================ */
.timeline {
    position: relative;
}

.timeline-item {
    position: relative;
    padding-left: 1.75rem;
    padding-bottom: 1.25rem;
}

.timeline-item:last-child {
    padding-bottom: 0;
}

.timeline-item:not(:last-child)::before {
    content: '';
    position: absolute;
    left: 0.3125rem;
    top: 1rem;
    bottom: 0;
    width: 2px;
    background-color: var(--clr-gray-200);
}

.timeline-dot {
    position: absolute;
    left: 0;
    top: 0.2rem;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background-color: var(--clr-gray-300);
}

.timeline-item--current .timeline-dot {
    background-color: var(--clr-primary);
    animation: pulse-dot 2s ease-in-out infinite;
    transform-origin: center;
}

@keyframes pulse-dot {
    0%, 100% { transform: scale(1); }
    50%       { transform: scale(1.2); }
}

.timeline-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    line-height: 1.3;
}

.timeline-time {
    font-size: var(--text-sm);
    color: var(--clr-gray-600);
    white-space: nowrap;
}

.timeline-creation {
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
    color: var(--clr-gray-600);
    white-space: nowrap;
}

.timeline-motivo {
    margin-top: 0.2rem;
    font-size: var(--text-sm);
    color: var(--clr-gray-600);
}

/* ================================================================
   BADGES DE ESTADO DE AMBIENTES
   ================================================================ */
.estado-badge-amb {
    font-size: var(--text-xs);
    font-weight: 600;
    letter-spacing: 0.02em;
    border-radius: var(--radius-sm);
}

.estado-activo-amb {
    background-color: var(--clr-primary-light) !important;
    color: var(--clr-primary-dark);
}

.estado-inactivo-amb {
    background-color: var(--clr-gray-200) !important;
    color: var(--clr-gray-700);
}

.estado-mantenim-amb {
    background-color: #fff3cd !important;
    color: #664d03;
}

.estado-desconocido-amb {
    background-color: var(--clr-gray-200) !important;
    color: var(--clr-gray-600);
}

/* ================================================================
   SELECTOR ASISTIDO DE HORAS
   ================================================================ */
.btn-toggle-custom-time {
    font-size: 0.78rem;
    color: var(--clr-primary);
    transition: color var(--transition-fast);
}

.btn-toggle-custom-time:hover {
    color: var(--clr-primary-dark);
    text-decoration: underline !important;
}

.time-select-wrapper select.form-select {
    font-weight: 500;
    cursor: pointer;
}

.time-select-wrapper select.form-select option {
    padding: 6px 10px;
}

.time-custom-wrapper input[type="time"] {
    font-weight: 500;
}

