/* =====================================================================
   Intranet KBB Marketing Business - Sistema de diseno v2
   Layout: header superior + sidebar izq (oscuro) + main + sidebar der.
   Paleta inspirada en kbb.com.mx: naranja ambar + slate gris azulado.
   ===================================================================== */

:root {
    /* --- Marca KBB --- */
    --kbb-naranja:        #F39200;
    --kbb-naranja-oscuro: #D67E00;
    --kbb-naranja-claro:  #FBB040;
    --kbb-naranja-soft:   #FFF4E0;
    --kbb-slate:          #54585F;
    --kbb-slate-oscuro:   #3A3D43;
    --kbb-slate-claro:    #7A7E86;

    /* --- Sidebar oscuro (inspirado en el screenshot FMF) --- */
    --sidebar-oscuro:        #1F2630;
    --sidebar-oscuro-suave:  #2A323E;
    --sidebar-oscuro-hover:  #323B49;
    --sidebar-texto:         #C9CFD9;
    --sidebar-texto-suave:   #8A93A1;
    --sidebar-borde:         #2F3845;

    /* --- Sistema (neutros, semánticos) --- */
    --color-fondo:        #EFF1F4;
    --color-superficie:   #FFFFFF;
    --color-superficie-2: #FAFBFC;
    --color-texto:        #1F2937;
    --color-texto-suave:  #6B7280;
    --color-texto-muy-suave: #9CA3AF;
    --color-borde:        #E5E7EB;
    --color-borde-fuerte: #D1D5DB;
    --color-exito:        #10B981;
    --color-exito-soft:   #D1FAE5;
    --color-error:        #DC2626;
    --color-error-soft:   #FEE2E2;
    --color-aviso:        #F59E0B;
    --color-aviso-soft:   #FEF3C7;
    --color-info:         #2563EB;
    --color-info-soft:    #DBEAFE;

    /* --- Tipografia --- */
    --fuente-principal: 'Inter', 'Segoe UI', system-ui, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', Arial, sans-serif;
    --fuente-mono: 'JetBrains Mono', 'Cascadia Code', Consolas, 'Courier New', monospace;

    /* --- Espaciado consistente (escala 4px) --- */
    --espacio-1: 0.25rem;
    --espacio-2: 0.5rem;
    --espacio-3: 0.75rem;
    --espacio-4: 1rem;
    --espacio-5: 1.25rem;
    --espacio-6: 1.5rem;
    --espacio-8: 2rem;
    --espacio-10: 2.5rem;
    --espacio-12: 3rem;

    /* --- Radios --- */
    --radio-sm: 4px;
    --radio: 8px;
    --radio-lg: 12px;
    --radio-xl: 16px;
    --radio-pill: 999px;

    /* --- Sombras --- */
    --sombra-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
    --sombra:    0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04);
    --sombra-md: 0 4px 6px -1px rgba(15, 23, 42, 0.08), 0 2px 4px -2px rgba(15, 23, 42, 0.06);
    --sombra-lg: 0 10px 15px -3px rgba(15, 23, 42, 0.10), 0 4px 6px -4px rgba(15, 23, 42, 0.06);

    /* --- Transiciones --- */
    --transicion-rapida: 120ms ease;
    --transicion: 180ms ease;

    /* --- Layout --- */
    --altura-header:    60px;
    --ancho-sidebar-izq: 290px;
    --ancho-sidebar-izq-colapsado: 100px;
    --ancho-sidebar-der: 270px;

    /* --- Focus accesible --- */
    --focus-ring: 0 0 0 3px rgba(243, 146, 0, 0.35);
}

/* =====================================================================
   Tema oscuro
   Activado via [data-theme="oscuro"] en <html>. Solo se sobrescriben las
   variables de sistema; la paleta de marca y el sidebar permanecen iguales.
   ===================================================================== */
html { color-scheme: light; }
html[data-theme="oscuro"] { color-scheme: dark; }

html[data-theme="oscuro"] {
    --color-fondo:           #0F141B;
    --color-superficie:      #1A2029;
    --color-superficie-2:    #232A35;
    --color-texto:           #E5E7EB;
    --color-texto-suave:     #9CA3AF;
    --color-texto-muy-suave: #6B7280;
    --color-borde:           #2F3845;
    --color-borde-fuerte:    #3A4453;

    /* Variantes "soft" oscurecidas para que sigan contrastando con texto claro */
    --kbb-naranja-soft:      #3A2A14;
    --color-exito-soft:      #0F2E22;
    --color-error-soft:      #3A1414;
    --color-aviso-soft:      #3A2E0F;
    --color-info-soft:       #14213A;

    /* Sombras mas profundas porque el fondo ya es oscuro */
    --sombra-sm: 0 1px 2px rgba(0, 0, 0, 0.40);
    --sombra:    0 1px 3px rgba(0, 0, 0, 0.50), 0 1px 2px rgba(0, 0, 0, 0.40);
    --sombra-md: 0 4px 6px -1px rgba(0, 0, 0, 0.55), 0 2px 4px -2px rgba(0, 0, 0, 0.45);
    --sombra-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.60), 0 4px 6px -4px rgba(0, 0, 0, 0.50);

    --focus-ring: 0 0 0 3px rgba(251, 176, 64, 0.45);
}

/* Enlaces: la variante clara del naranja contrasta mejor sobre fondos oscuros (WCAG AA). */
html[data-theme="oscuro"] a { color: var(--kbb-naranja-claro); }

/* -------------------------------------------------------------------
   OVERRIDES DE CONTRASTE EN MODO OSCURO
   Algunas reglas del CSS usan colores de texto hardcoded para fondos
   "soft" (verde, rojo, ambar, azul claros). En oscuro esos fondos ya
   no son claros — por lo que el texto debe volverse claro tambien.
   ------------------------------------------------------------------- */
html[data-theme="oscuro"] .alerta--exito { color: #6EE7B7; border-color: #064E3B; }
html[data-theme="oscuro"] .alerta--error { color: #FCA5A5; border-color: #7F1D1D; }
html[data-theme="oscuro"] .alerta--aviso { color: #FCD34D; border-color: #78350F; }
html[data-theme="oscuro"] .alerta--info  { color: #93C5FD; border-color: #1E3A8A; }

html[data-theme="oscuro"] .badge--activo   { color: #6EE7B7; border-color: #064E3B; }
html[data-theme="oscuro"] .badge--inactivo { color: #FCA5A5; border-color: #7F1D1D; }

html[data-theme="oscuro"] .card-rapida--exito  .card-rapida__icono { color: #6EE7B7; }
html[data-theme="oscuro"] .card-rapida--alerta .card-rapida__icono { color: #FCA5A5; }
html[data-theme="oscuro"] .card-rapida--info   .card-rapida__icono { color: #93C5FD; }
html[data-theme="oscuro"] .card-rapida--aviso  .card-rapida__icono { color: #FCD34D; }

/* Hilo de comentarios del ticket — la burbuja del atendiente usa naranja-soft
   como fondo (oscuro en dark). Forzar texto claro para que se lea. */
html[data-theme="oscuro"] .ticket-comentario--atendiente { color: var(--color-texto); }
html[data-theme="oscuro"] .ticket-comentario--interno    { color: var(--color-texto); }

/* Pills de tipo (Falla / Servicio) en oscuro: ajustar al color claro de la familia. */
html[data-theme="oscuro"] .ticket-tipo-pill--falla    { color: #FCA5A5; }
html[data-theme="oscuro"] .ticket-tipo-pill--servicio { color: #6EE7B7; }

/* Botones tipo "peligro" mantienen contraste explicito en hover. */
html[data-theme="oscuro"] .boton--peligro:hover { background: #DC2626; border-color: #DC2626; color: #fff; }

/* ---------- Botones en tema oscuro ----------
   El estilo base de .boton--secundario usa color: var(--kbb-slate) — un gris
   oscuro fijo que se pierde contra el fondo negro. Igual .boton--enlace usa
   --kbb-naranja-oscuro que no contrasta. Forzamos versiones claras aqui. */
html[data-theme="oscuro"] .boton--secundario {
    color: var(--color-texto);
    border-color: var(--color-borde-fuerte);
}
html[data-theme="oscuro"] .boton--secundario:hover {
    background: var(--color-superficie-2);
    color: #fff;
    border-color: var(--kbb-naranja);
}
html[data-theme="oscuro"] .boton--enlace {
    color: var(--kbb-naranja-claro);
}
html[data-theme="oscuro"] .boton--enlace:hover {
    color: #fff;
}

/* Foco visible: el aro naranja tenue no basta cuando el boton mismo es semi-
   transparente. Reforzamos con borde naranja y sombra mas intensa. */
html[data-theme="oscuro"] .boton:focus-visible,
html[data-theme="oscuro"] a.boton:focus-visible {
    outline: 2px solid var(--kbb-naranja-claro);
    outline-offset: 2px;
}

/* Fix critico: la regla global `html[data-theme=oscuro] a` (especificidad 0,1,2)
   pisa el `color:#fff` heredado por `.boton` (0,1,0), dejando el texto naranja-
   claro sobre fondo naranja del boton primario -> practicamente invisible.
   Se restaura aqui con especificidad 0,2,1 y se cubre tambien .boton--peligro. */
html[data-theme="oscuro"] .boton,
html[data-theme="oscuro"] .boton:hover,
html[data-theme="oscuro"] .boton--peligro,
html[data-theme="oscuro"] .boton--peligro:hover {
    color: #fff;
}

/* Tabs / pestanas activas: el naranja oscuro no lee sobre fondo negro. */
html[data-theme="oscuro"] .tickets-tabs__tab.activo {
    color: var(--kbb-naranja-claro);
}
html[data-theme="oscuro"] .tickets-tabs__tab.activo .tickets-tabs__contador {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-claro);
}

/* Enlaces "sueltos" dentro de tablas y textos: garantizar el color claro
   (algunas reglas mas especificas del CSS lo pisaban). */
html[data-theme="oscuro"] .tabla a,
html[data-theme="oscuro"] .panel a,
html[data-theme="oscuro"] .tarjeta a {
    color: var(--kbb-naranja-claro);
}

/* Defensivo: cualquier <strong>, <th>, <dt> o <h*> que tuviera color heredado
   oscuro hardcoded por especificidad accidental se fuerza a texto claro. */
html[data-theme="oscuro"] strong,
html[data-theme="oscuro"] th,
html[data-theme="oscuro"] dt,
html[data-theme="oscuro"] h1,
html[data-theme="oscuro"] h2,
html[data-theme="oscuro"] h3,
html[data-theme="oscuro"] h4,
html[data-theme="oscuro"] h5,
html[data-theme="oscuro"] h6 {
    color: var(--color-texto);
}

/* Inputs y selects en oscuro: forzar bg superficie y texto claro
   (algunos navegadores aplican estilos UA si no se especifica). */
html[data-theme="oscuro"] input,
html[data-theme="oscuro"] select,
html[data-theme="oscuro"] textarea {
    background-color: var(--color-superficie);
    color: var(--color-texto);
    border-color: var(--color-borde);
}
html[data-theme="oscuro"] input::placeholder,
html[data-theme="oscuro"] textarea::placeholder {
    color: var(--color-texto-muy-suave);
}

/* Toasts de Alertify: por defecto traen su propio CSS desde CDN con tema
   claro. Forzar texto blanco para legibilidad en oscuro. */
html[data-theme="oscuro"] .alertify-notifier .ajs-message {
    color: #fff;
}

/* Transicion suave entre temas. Solo en superficies y texto para evitar repaints excesivos. */
body, .cabecera, .cabecera__menu, .cabecera__avatar-btn, .cabecera__tema-btn,
.capa-principal, .panel, .tarjeta, .pie, main, aside, section, article {
    transition: background-color 200ms ease, color 200ms ease, border-color 200ms ease;
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition: none !important;
        animation-duration: 0.01ms !important;
    }
}

/* =====================================================================
   Reset minimo y base
   ===================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
    margin: 0;
    font-family: var(--fuente-principal);
    font-size: 14.5px;
    line-height: 1.55;
    background: var(--color-fondo);
    color: var(--color-texto);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
img { max-width: 100%; display: block; }
a { color: var(--kbb-naranja-oscuro); text-decoration: none; }
a:hover { text-decoration: underline; }

button:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
    border-color: var(--kbb-naranja);
}

/* =====================================================================
   HEADER SUPERIOR (logo + buscador + perfil)
   ===================================================================== */
.cabecera {
    background: var(--color-superficie);
    border-bottom: 1px solid var(--color-borde);
    height: var(--altura-header);
    display: grid;
    grid-template-columns: var(--ancho-sidebar-izq) 1fr var(--ancho-sidebar-der);
    align-items: center;
    gap: var(--espacio-4);
    padding: 0 var(--espacio-5);
    position: sticky;
    top: 0;
    z-index: 50;
    box-shadow: var(--sombra-sm);
}

/* Contenedor que agrupa hamburguesa + logo en la columna izquierda del header */
.cabecera__izq {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    min-width: 0;
}

.cabecera__hamburger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px; height: 38px;
    background: transparent;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    color: var(--color-texto-suave);
    cursor: pointer;
    flex-shrink: 0;
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida), color var(--transicion-rapida);
}
.cabecera__hamburger:hover {
    background: var(--color-superficie-2);
    border-color: var(--color-borde-fuerte);
    color: var(--kbb-naranja);
}
.cabecera__hamburger svg { width: 20px; height: 20px; }

.cabecera__marca {
    display: flex;
    align-items: center;
    gap: var(--espacio-2);
    min-width: 0;
}
.cabecera__marca img {
    height: 36px;
    width: auto;
}
.cabecera__marca-texto {
    font-weight: 700;
    color: var(--kbb-slate);
    font-size: 0.95rem;
    letter-spacing: -0.01em;
    line-height: 1.1;
}
.cabecera__marca-tagline {
    display: block;
    font-size: 0.68rem;
    color: var(--color-texto-suave);
    font-weight: 500;
    letter-spacing: 0.05em;
}

/* --- Buscador centro --- */
.cabecera__buscador {
    position: relative;
    max-width: 560px;
    width: 100%;
    justify-self: center;
}
.cabecera__buscador input {
    width: 100%;
    height: 40px;
    padding: 0 var(--espacio-4) 0 2.6rem;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-pill);
    background: var(--color-superficie-2);
    font-size: 0.9rem;
    color: var(--color-texto);
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida);
}
.cabecera__buscador input::placeholder { color: var(--color-texto-muy-suave); }
.cabecera__buscador input:focus {
    background: var(--color-superficie);
    border-color: var(--kbb-naranja);
}
.cabecera__buscador-icono {
    position: absolute;
    top: 50%;
    left: var(--espacio-3);
    transform: translateY(-50%);
    width: 18px;
    height: 18px;
    color: var(--color-texto-suave);
    pointer-events: none;
}

.cabecera__resultados {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    box-shadow: var(--sombra-lg);
    max-height: 60vh;
    overflow-y: auto;
    display: none;
    z-index: 100;
}
.cabecera__resultados.visible { display: block; }
.cabecera__resultados-encabezado {
    padding: var(--espacio-3) var(--espacio-4);
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--color-texto-suave);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-bottom: 1px solid var(--color-borde);
}
.cabecera__resultado {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    padding: var(--espacio-3) var(--espacio-4);
    cursor: pointer;
    border-bottom: 1px solid var(--color-borde);
    transition: background var(--transicion-rapida);
}
.cabecera__resultado:last-child { border-bottom: none; }
.cabecera__resultado:hover,
.cabecera__resultado.activo { background: var(--kbb-naranja-soft); }
.cabecera__resultado__foto {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--color-borde);
    flex-shrink: 0;
}
.cabecera__resultado__info { flex: 1; min-width: 0; }
.cabecera__resultado__nombre {
    font-weight: 600;
    color: var(--color-texto);
    font-size: 0.9rem;
    margin: 0 0 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cabecera__resultado__puesto {
    font-size: 0.78rem;
    color: var(--kbb-naranja-oscuro);
    margin: 0 0 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cabecera__resultado__contacto {
    display: flex;
    gap: var(--espacio-3);
    font-size: 0.72rem;
    color: var(--color-texto-suave);
}
.cabecera__resultado__contacto span {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 200px;
}
.cabecera__resultados-vacio {
    padding: var(--espacio-6);
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.9rem;
}

/* --- Sesion derecha (avatar + menu) --- */
.cabecera__sesion {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    position: relative;
    justify-self: end;
}
.cabecera__avatar-btn {
    display: flex;
    align-items: center;
    gap: var(--espacio-2);
    background: transparent;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-pill);
    padding: var(--espacio-1) var(--espacio-3) var(--espacio-1) var(--espacio-1);
    cursor: pointer;
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida);
}
.cabecera__avatar-btn:hover {
    background: var(--color-superficie-2);
    border-color: var(--color-borde-fuerte);
}

/* =====================================================================
   Campana de notificaciones del header
   ===================================================================== */
.cabecera__notif { position: relative; }

.cabecera__notif-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px; height: 38px;
    background: transparent;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-pill);
    color: var(--color-texto-suave);
    cursor: pointer;
    position: relative;
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida), color var(--transicion-rapida);
}
.cabecera__notif-btn:hover {
    background: var(--color-superficie-2);
    border-color: var(--color-borde-fuerte);
    color: var(--kbb-naranja);
}
.cabecera__notif-btn svg { width: 18px; height: 18px; }

.cabecera__notif-badge {
    position: absolute;
    top: -4px; right: -4px;
    min-width: 18px; height: 18px;
    padding: 0 5px;
    background: var(--color-error);
    color: #fff;
    border-radius: var(--radio-pill);
    font-size: 0.68rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 2px solid var(--color-superficie);
    line-height: 1;
}

.cabecera__notif-panel {
    position: absolute;
    top: calc(100% + var(--espacio-2));
    right: 0;
    width: 360px;
    max-width: calc(100vw - 2 * var(--espacio-4));
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-lg);
    box-shadow: var(--sombra-lg);
    z-index: 60;
    max-height: 480px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.cabecera__notif-panel-header {
    padding: var(--espacio-3) var(--espacio-4);
    border-bottom: 1px solid var(--color-borde);
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--color-superficie-2);
}
.cabecera__notif-panel-acciones {
    display: flex;
    gap: var(--espacio-3);
    align-items: center;
}
.link-btn {
    background: none;
    border: none;
    padding: 0;
    color: var(--kbb-naranja-oscuro);
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.link-btn:hover { text-decoration: underline; }

.cabecera__notif-lista {
    list-style: none;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    flex: 1;
}
.cabecera__notif-vacio {
    padding: var(--espacio-6);
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.85rem;
}
.cabecera__notif-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: var(--espacio-3) var(--espacio-4);
    border-bottom: 1px solid var(--color-borde);
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    transition: background var(--transicion-rapida);
}
.cabecera__notif-item:hover { background: var(--color-superficie-2); text-decoration: none; }
.cabecera__notif-item--no-leida { background: color-mix(in srgb, var(--kbb-naranja) 5%, var(--color-superficie)); }
.cabecera__notif-item--no-leida::before {
    content: '';
    position: absolute;
    left: 6px; top: 50%;
    transform: translateY(-50%);
    width: 6px; height: 6px;
    background: var(--kbb-naranja);
    border-radius: 50%;
}
.cabecera__notif-item { position: relative; padding-left: var(--espacio-5); }
.cabecera__notif-item__titulo { font-weight: 600; font-size: 0.88rem; }
.cabecera__notif-item__mensaje { font-size: 0.82rem; color: var(--color-texto-suave); line-height: 1.4; }
.cabecera__notif-item__hace { font-size: 0.72rem; color: var(--color-texto-muy-suave); }

/* Toggle de tema (sol / luna / monitor). Solo se muestra el icono del modo activo. */
.cabecera__tema-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    background: transparent;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-pill);
    color: var(--color-texto-suave);
    cursor: pointer;
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida), color var(--transicion-rapida);
}
.cabecera__tema-btn:hover {
    background: var(--color-superficie-2);
    border-color: var(--color-borde-fuerte);
    color: var(--kbb-naranja);
}
.cabecera__tema-btn .icono-tema {
    display: none;
    width: 18px;
    height: 18px;
}
html[data-tema-pref="claro"]  .cabecera__tema-btn .icono-tema--claro  { display: block; }
html[data-tema-pref="oscuro"] .cabecera__tema-btn .icono-tema--oscuro { display: block; }
.cabecera__avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    object-fit: cover;
}
.cabecera__avatar--iniciales {
    background: var(--kbb-naranja);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 0.82rem;
}
.cabecera__avatar-nombre {
    font-size: 0.85rem;
    color: var(--kbb-slate);
    font-weight: 500;
    max-width: 140px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cabecera__menu {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 250px;
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    box-shadow: var(--sombra-lg);
    padding: var(--espacio-2);
    display: none;
    z-index: 100;
}
.cabecera__menu.visible { display: block; }
.cabecera__menu-header {
    padding: var(--espacio-3);
    border-bottom: 1px solid var(--color-borde);
    margin-bottom: var(--espacio-2);
}
.cabecera__menu-header strong {
    display: block;
    color: var(--color-texto);
    font-size: 0.92rem;
}
.cabecera__menu-header small {
    color: var(--color-texto-suave);
    font-size: 0.78rem;
}
.cabecera__menu a,
.cabecera__menu button {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    width: 100%;
    padding: var(--espacio-2) var(--espacio-3);
    background: transparent;
    border: none;
    border-radius: var(--radio-sm);
    color: var(--color-texto);
    font-size: 0.9rem;
    text-align: left;
    cursor: pointer;
    text-decoration: none;
    transition: background var(--transicion-rapida);
    font-family: var(--fuente-principal);
}
.cabecera__menu a:hover,
.cabecera__menu button:hover {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
    text-decoration: none;
}
.cabecera__menu hr {
    border: none;
    border-top: 1px solid var(--color-borde);
    margin: var(--espacio-2) 0;
}

/* =====================================================================
   LAYOUT TRES COLUMNAS (sidebar izq | central | sidebar der)
   ===================================================================== */
.capa-principal {
    display: grid;
    grid-template-columns: var(--ancho-sidebar-izq) 1fr var(--ancho-sidebar-der);
    gap: 0;
    min-height: calc(100vh - var(--altura-header));
    align-items: stretch;
}

/* =====================================================================
   SIDEBAR IZQUIERDO (oscuro, perfil + nav)
   ===================================================================== */
.sidebar-izq {
    background: var(--sidebar-oscuro);
    color: var(--sidebar-texto);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: var(--altura-header);
    height: calc(100vh - var(--altura-header));
    overflow-y: auto;
}

.sidebar-izq__perfil {
    padding: var(--espacio-6) var(--espacio-4) var(--espacio-4);
    text-align: center;
    border-bottom: 1px solid var(--sidebar-borde);
    background: linear-gradient(180deg, var(--sidebar-oscuro-suave) 0%, var(--sidebar-oscuro) 100%);
}
.sidebar-izq__avatar {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    object-fit: cover;
    margin: 0 auto var(--espacio-3);
    border: 3px solid var(--kbb-naranja);
    box-shadow: 0 0 0 4px rgba(243, 146, 0, 0.15);
    display: block;
}
.sidebar-izq__avatar--iniciales {
    background: var(--kbb-naranja);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 2rem;
    letter-spacing: 1px;
}
.sidebar-izq__nombre {
    margin: 0 0 4px;
    color: #FFFFFF;
    font-size: 0.88rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    word-break: break-word;
}
.sidebar-izq__puesto {
    margin: 0;
    color: var(--sidebar-texto-suave);
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    line-height: 1.3;
}

.sidebar-izq__nav {
    flex: 1;
    padding: var(--espacio-3) 0;
    display: flex;
    flex-direction: column;
}
.sidebar-izq__link {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    padding: var(--espacio-3) var(--espacio-5);
    color: var(--sidebar-texto);
    text-decoration: none;
    font-size: 0.86rem;
    font-weight: 500;
    border-left: 3px solid transparent;
    transition: background var(--transicion-rapida), color var(--transicion-rapida), border-color var(--transicion-rapida);
    background: transparent;
    border-top: none;
    border-right: none;
    border-bottom: none;
    width: 100%;
    cursor: pointer;
    text-align: left;
    font-family: var(--fuente-principal);
}
.sidebar-izq__link svg {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    color: var(--sidebar-texto-suave);
    transition: color var(--transicion-rapida);
}
.sidebar-izq__link:hover {
    background: var(--sidebar-oscuro-hover);
    color: #FFFFFF;
    text-decoration: none;
}
.sidebar-izq__link:hover svg { color: var(--kbb-naranja); }
.sidebar-izq__link.activo {
    background: var(--sidebar-oscuro-hover);
    color: #FFFFFF;
    border-left-color: var(--kbb-naranja);
    font-weight: 600;
}
.sidebar-izq__link.activo svg { color: var(--kbb-naranja); }

.sidebar-izq__pie {
    border-top: 1px solid var(--sidebar-borde);
    padding: var(--espacio-3) 0;
}
.sidebar-izq__pie form { margin: 0; }
.sidebar-izq__link--peligro:hover {
    background: rgba(220, 38, 38, 0.12);
    color: #FCA5A5;
}
.sidebar-izq__link--peligro:hover svg { color: #FCA5A5; }

/* =====================================================================
   CONTENIDO CENTRAL
   ===================================================================== */
.contenido-central {
    padding: var(--espacio-6) var(--espacio-6) var(--espacio-8);
    overflow-x: hidden;
    background: var(--color-fondo);
}

/* =====================================================================
   SIDEBAR DERECHO (companeros)
   ===================================================================== */
.sidebar-der {
    background: var(--color-superficie);
    border-left: 1px solid var(--color-borde);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: var(--altura-header);
    height: calc(100vh - var(--altura-header));
    overflow: hidden;
}
.sidebar-der__cabecera {
    padding: var(--espacio-5) var(--espacio-4) var(--espacio-3);
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--color-borde);
}
.sidebar-der__titulo {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--kbb-slate);
    letter-spacing: -0.01em;
}
.sidebar-der__contador {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
    font-size: 0.72rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: var(--radio-pill);
}

.sidebar-der__buscador {
    position: relative;
    padding: var(--espacio-3) var(--espacio-4);
    border-bottom: 1px solid var(--color-borde);
}
.sidebar-der__buscador svg {
    position: absolute;
    top: 50%;
    left: calc(var(--espacio-4) + var(--espacio-2));
    transform: translateY(-50%);
    width: 16px;
    height: 16px;
    color: var(--color-texto-suave);
    pointer-events: none;
}
.sidebar-der__buscador input {
    width: 100%;
    height: 36px;
    padding: 0 var(--espacio-3) 0 2.3rem;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-pill);
    background: var(--color-superficie-2);
    font-size: 0.82rem;
    color: var(--color-texto);
}
.sidebar-der__buscador input::placeholder { color: var(--color-texto-muy-suave); }
.sidebar-der__buscador input:focus {
    border-color: var(--kbb-naranja);
    background: var(--color-superficie);
}

.sidebar-der__lista {
    list-style: none;
    margin: 0;
    padding: var(--espacio-2) 0;
    overflow-y: auto;
    flex: 1;
}
.sidebar-der__item { margin: 0; }
.sidebar-der__enlace {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    padding: var(--espacio-2) var(--espacio-4);
    color: var(--color-texto);
    text-decoration: none;
    transition: background var(--transicion-rapida);
}
.sidebar-der__enlace:hover {
    background: var(--kbb-naranja-soft);
    text-decoration: none;
}
.sidebar-der__avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--color-borde);
    flex-shrink: 0;
    border: 2px solid var(--color-exito);
}
.sidebar-der__avatar--iniciales {
    background: var(--kbb-naranja);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 0.72rem;
    border-color: var(--color-exito);
}
.sidebar-der__texto { flex: 1; min-width: 0; }
.sidebar-der__nombre {
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.25;
}
.sidebar-der__puesto {
    margin: 2px 0 0;
    font-size: 0.72rem;
    color: var(--color-texto-suave);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.2;
}
.sidebar-der__vacio {
    padding: var(--espacio-6) var(--espacio-4);
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.82rem;
    list-style: none;
}

/* =====================================================================
   SIDEBAR DERECHO: CUMPLEANOS
   ===================================================================== */
.cumple-vacio {
    padding: var(--espacio-6) var(--espacio-4);
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.85rem;
}
.cumples-lista {
    list-style: none;
    margin: 0;
    padding: var(--espacio-2) 0;
    overflow-y: auto;
    flex: 1;
}
.cumples-separador {
    padding: var(--espacio-3) var(--espacio-4) var(--espacio-1);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-texto-suave);
    list-style: none;
}
.cumple-item {
    margin: 0;
    position: relative;
}
.cumple-item__enlace {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    padding: var(--espacio-3) var(--espacio-4);
    color: var(--color-texto);
    text-decoration: none;
    transition: background var(--transicion-rapida);
}
.cumple-item__enlace:hover {
    background: var(--kbb-naranja-soft);
    text-decoration: none;
}
.cumple-item__avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--color-borde);
    flex-shrink: 0;
}
.cumple-item__avatar--iniciales {
    background: var(--kbb-naranja);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.82rem;
}
.cumple-item__texto { flex: 1; min-width: 0; }
.cumple-item__nombre {
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.25;
}
.cumple-item__puesto {
    margin: 2px 0 0;
    font-size: 0.72rem;
    color: var(--color-texto-suave);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.2;
}
.cumple-item__etiqueta {
    margin: 4px 0 0;
    font-size: 0.72rem;
    color: var(--color-texto-suave);
    display: flex;
    align-items: center;
    gap: 4px;
}
.cumple-item__chip {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
    padding: 1px 7px;
    border-radius: var(--radio-pill);
    font-size: 0.65rem;
    font-weight: 700;
    margin-left: auto;
}

/* --- Festejado de HOY: animacion + colorido --- */
.cumple-item--hoy {
    background: linear-gradient(90deg, rgba(243,146,0,0.10) 0%, rgba(243,146,0,0.02) 100%);
    border-left: 3px solid var(--kbb-naranja);
    overflow: hidden;
    position: relative;
}
.cumple-item--hoy::before {
    content: "";
    position: absolute;
    top: 0; left: -100%;
    height: 100%;
    width: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent);
    animation: cumple-brillo 3s ease-in-out infinite;
}
@keyframes cumple-brillo {
    0%   { left: -100%; }
    100% { left: 100%; }
}
.cumple-item__avatar--festejo {
    box-shadow: 0 0 0 3px var(--kbb-naranja), 0 0 0 5px var(--kbb-naranja-soft);
    animation: cumple-pulso 2s ease-in-out infinite;
}
@keyframes cumple-pulso {
    0%, 100% { transform: scale(1);   }
    50%      { transform: scale(1.06); }
}
.cumple-item__etiqueta--hoy {
    color: var(--kbb-naranja-oscuro) !important;
    font-weight: 700;
    margin-top: 6px;
}
.cumple-item__etiqueta--hoy svg {
    flex-shrink: 0;
}

/* --- Confeti CSS animado --- */
.cumple-item__confeti {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: hidden;
}
.cumple-item__confeti span {
    position: absolute;
    width: 6px;
    height: 10px;
    border-radius: 1px;
    opacity: 0;
    animation: caer 3.5s linear infinite;
}
.cumple-item__confeti span:nth-child(1) { background: #F39200; left: 10%;  animation-delay: 0s;   transform: rotate(15deg);  }
.cumple-item__confeti span:nth-child(2) { background: #2563EB; left: 30%;  animation-delay: 0.7s; transform: rotate(-25deg); }
.cumple-item__confeti span:nth-child(3) { background: #10B981; left: 50%;  animation-delay: 1.4s; transform: rotate(30deg);  }
.cumple-item__confeti span:nth-child(4) { background: #DC2626; left: 70%;  animation-delay: 0.3s; transform: rotate(-15deg); }
.cumple-item__confeti span:nth-child(5) { background: #FBB040; left: 85%;  animation-delay: 1.0s; transform: rotate(20deg);  }
.cumple-item__confeti span:nth-child(6) { background: #8B5CF6; left: 20%;  animation-delay: 1.8s; transform: rotate(-30deg); }
@keyframes caer {
    0%   { top: -20px; opacity: 0; }
    10%  { opacity: 1; }
    90%  { opacity: 1; }
    100% { top: 110%;  opacity: 0; }
}

/* =====================================================================
   DASHBOARD - Banner principal + cards
   ===================================================================== */
.banner-principal {
    position: relative;
    border-radius: var(--radio-lg);
    overflow: hidden;
    background: linear-gradient(135deg, var(--kbb-naranja) 0%, var(--kbb-naranja-oscuro) 100%);
    color: #fff;
    padding: var(--espacio-10) var(--espacio-8);
    margin-bottom: var(--espacio-6);
    min-height: 260px;
    display: flex;
    align-items: center;
    box-shadow: var(--sombra-md);
}
.banner-principal::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(circle at 80% 20%, rgba(255,255,255,0.15) 0, transparent 40%),
        radial-gradient(circle at 10% 90%, rgba(255,255,255,0.10) 0, transparent 30%);
    pointer-events: none;
}
.banner-principal__contenido {
    position: relative;
    z-index: 1;
    max-width: 540px;
}
.banner-principal__pre {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    opacity: 0.85;
    margin: 0 0 var(--espacio-2);
    font-weight: 600;
}
.banner-principal__titulo {
    margin: 0 0 var(--espacio-3);
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.02em;
}
.banner-principal__bajada {
    margin: 0 0 var(--espacio-5);
    font-size: 1rem;
    opacity: 0.92;
    line-height: 1.4;
    max-width: 460px;
}
.banner-principal__acciones {
    display: flex;
    gap: var(--espacio-3);
    flex-wrap: wrap;
}
.banner-principal__cta {
    background: #fff;
    color: var(--kbb-naranja-oscuro);
    padding: var(--espacio-3) var(--espacio-5);
    border-radius: var(--radio-pill);
    font-weight: 700;
    font-size: 0.86rem;
    text-decoration: none;
    transition: transform var(--transicion-rapida), box-shadow var(--transicion-rapida);
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--espacio-2);
}
.banner-principal__cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(0,0,0,0.18);
    text-decoration: none;
    color: var(--kbb-naranja-oscuro);
}
.banner-principal__cta--secundario {
    background: rgba(255,255,255,0.15);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.4);
}
.banner-principal__cta--secundario:hover { background: rgba(255,255,255,0.25); color: #fff; }

/* Grid de tarjetas debajo del banner */
.dashboard-grid {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: var(--espacio-5);
    margin-bottom: var(--espacio-6);
}
@media (max-width: 1100px) { .dashboard-grid { grid-template-columns: 1fr; } }

.cards-rapidas {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--espacio-4);
}
.card-rapida {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-5);
    box-shadow: var(--sombra-sm);
    position: relative;
    overflow: hidden;
    transition: transform var(--transicion-rapida), box-shadow var(--transicion-rapida);
    text-decoration: none;
    color: var(--color-texto);
    display: block;
}
.card-rapida:hover {
    transform: translateY(-2px);
    box-shadow: var(--sombra-md);
    text-decoration: none;
    color: var(--color-texto);
}
.card-rapida__icono {
    width: 44px;
    height: 44px;
    border-radius: var(--radio);
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--espacio-3);
}
.card-rapida__icono svg { width: 22px; height: 22px; }
.card-rapida__titulo {
    margin: 0 0 var(--espacio-1);
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
}
.card-rapida__bajada {
    margin: 0;
    font-size: 0.82rem;
    color: var(--color-texto-suave);
    line-height: 1.4;
}
.card-rapida__valor {
    font-size: 1.8rem;
    font-weight: 800;
    color: var(--kbb-slate-oscuro);
    line-height: 1;
    margin-top: var(--espacio-3);
    letter-spacing: -0.02em;
}
.card-rapida--alerta { border-left: 3px solid var(--color-error); }
.card-rapida--alerta .card-rapida__icono { background: var(--color-error-soft); color: var(--color-error); }
.card-rapida--info  { border-left: 3px solid var(--color-info); }
.card-rapida--info .card-rapida__icono { background: var(--color-info-soft); color: var(--color-info); }
.card-rapida--exito { border-left: 3px solid var(--color-exito); }
.card-rapida--exito .card-rapida__icono { background: var(--color-exito-soft); color: #065F46; }

/* Widget de calendario / fecha */
.widget-fecha {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    box-shadow: var(--sombra-sm);
    overflow: hidden;
}
.widget-fecha__cabecera {
    background: var(--sidebar-oscuro);
    color: #fff;
    padding: var(--espacio-3) var(--espacio-4);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.widget-fecha__cabecera strong { font-weight: 700; font-size: 0.88rem; }
.widget-fecha__hoy {
    padding: var(--espacio-5) var(--espacio-4);
    text-align: center;
}
.widget-fecha__dia-num {
    font-size: 3rem;
    font-weight: 800;
    color: var(--kbb-naranja);
    line-height: 1;
    letter-spacing: -0.02em;
}
.widget-fecha__dia-semana {
    font-size: 0.9rem;
    color: var(--kbb-slate);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: var(--espacio-2);
    font-weight: 600;
}
.widget-fecha__mes {
    font-size: 0.78rem;
    color: var(--color-texto-suave);
    margin-top: var(--espacio-1);
}

.tablero-trabajo {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-5);
    box-shadow: var(--sombra-sm);
}
.tablero-trabajo__titulo {
    margin: 0 0 var(--espacio-3);
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
.tablero-trabajo__lista {
    list-style: none;
    margin: 0;
    padding: 0;
}
.tablero-trabajo__item {
    padding: var(--espacio-2) 0;
    border-bottom: 1px dashed var(--color-borde);
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    font-size: 0.85rem;
}
.tablero-trabajo__item:last-child { border-bottom: none; }
.tablero-trabajo__punto {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--kbb-naranja);
    flex-shrink: 0;
}
.tablero-trabajo__vacio {
    text-align: center;
    color: var(--color-texto-suave);
    font-size: 0.85rem;
    padding: var(--espacio-5) 0;
}

/* =====================================================================
   PAGINA TITULO
   ===================================================================== */
.pagina-titulo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--espacio-4);
    margin-bottom: var(--espacio-5);
    flex-wrap: wrap;
}
.pagina-titulo h1 {
    font-size: 1.5rem;
    color: var(--kbb-slate-oscuro);
    margin: 0;
    font-weight: 700;
    letter-spacing: -0.01em;
}
.pagina-titulo__subtitulo {
    color: var(--color-texto-suave);
    font-size: 0.88rem;
    margin-top: var(--espacio-1);
}

/* =====================================================================
   TARJETAS GENERICAS
   ===================================================================== */
.tarjeta {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-5);
    margin-bottom: var(--espacio-4);
    box-shadow: var(--sombra-sm);
}
.tarjeta__titulo {
    margin: 0 0 var(--espacio-3);
    font-size: 1rem;
    color: var(--kbb-slate-oscuro);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--espacio-3);
}
.tarjeta__descripcion {
    color: var(--color-texto-suave);
    font-size: 0.85rem;
    margin: -0.25rem 0 var(--espacio-4);
}

/* =====================================================================
   ALERTAS
   ===================================================================== */
.alerta {
    padding: var(--espacio-3) var(--espacio-4);
    border-radius: var(--radio);
    margin-bottom: var(--espacio-4);
    border: 1px solid transparent;
    font-size: 0.88rem;
}
.alerta--exito { background: var(--color-exito-soft); color: #065F46; border-color: #6EE7B7; }
.alerta--error { background: var(--color-error-soft); color: #991B1B; border-color: #FCA5A5; }
.alerta--aviso { background: var(--color-aviso-soft); color: #92400E; border-color: #FCD34D; }
.alerta--info  { background: var(--color-info-soft);  color: #1E40AF; border-color: #93C5FD; }
.alerta ul { margin: var(--espacio-1) 0 0; padding-left: var(--espacio-5); }

/* =====================================================================
   FORMULARIOS
   ===================================================================== */
.formulario { display: grid; gap: var(--espacio-4); }
.formulario-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--espacio-4); }
@media (max-width: 640px) { .formulario-grid-2 { grid-template-columns: 1fr; } }

.formulario label {
    display: block;
    margin-bottom: var(--espacio-1);
    font-weight: 600;
    color: var(--color-texto);
    font-size: 0.82rem;
}
.formulario label .obligatorio { color: var(--color-error); }

.formulario input[type="text"],
.formulario input[type="email"],
.formulario input[type="password"],
.formulario input[type="tel"],
.formulario input[type="date"],
.formulario input[type="number"],
.formulario input[type="search"],
.formulario input[type="url"],
.formulario select,
.formulario textarea {
    width: 100%;
    padding: var(--espacio-2) var(--espacio-3);
    height: 40px;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-sm);
    font-size: 0.92rem;
    font-family: var(--fuente-principal);
    background: var(--color-superficie);
    color: var(--color-texto);
    transition: border-color var(--transicion-rapida), box-shadow var(--transicion-rapida);
}
.formulario textarea {
    height: auto;
    min-height: 100px;
    padding: var(--espacio-3);
    resize: vertical;
}
.formulario input:focus,
.formulario select:focus,
.formulario textarea:focus {
    outline: none;
    border-color: var(--kbb-naranja);
    box-shadow: var(--focus-ring);
}
.formulario .ayuda {
    font-size: 0.76rem;
    color: var(--color-texto-suave);
    margin-top: var(--espacio-1);
}
.formulario .acciones {
    display: flex;
    gap: var(--espacio-3);
    justify-content: flex-end;
    margin-top: var(--espacio-4);
    flex-wrap: wrap;
}

/* =====================================================================
   BOTONES
   ===================================================================== */
.boton {
    background: var(--kbb-naranja);
    color: #fff;
    border: 1px solid var(--kbb-naranja);
    padding: var(--espacio-2) var(--espacio-5);
    border-radius: var(--radio-sm);
    cursor: pointer;
    font-size: 0.88rem;
    font-weight: 600;
    font-family: var(--fuente-principal);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--espacio-2);
    height: 40px;
    transition: background var(--transicion-rapida), border-color var(--transicion-rapida), transform var(--transicion-rapida);
}
.boton:hover { background: var(--kbb-naranja-oscuro); border-color: var(--kbb-naranja-oscuro); text-decoration: none; color: #fff; }
.boton:active { transform: translateY(1px); }
.boton:disabled { opacity: 0.5; cursor: not-allowed; }

.boton--secundario {
    background: transparent;
    color: var(--kbb-slate);
    border-color: var(--color-borde-fuerte);
}
.boton--secundario:hover {
    background: var(--color-superficie-2);
    color: var(--color-texto);
    border-color: var(--color-borde-fuerte);
}
.boton--peligro {
    background: var(--color-error);
    border-color: var(--color-error);
}
.boton--peligro:hover { background: #B91C1C; border-color: #B91C1C; }
.boton--enlace {
    background: transparent;
    color: var(--kbb-naranja-oscuro);
    border: none;
    padding: 0;
    height: auto;
    text-decoration: underline;
    font-weight: 500;
}
.boton--bloque { width: 100%; }
.boton--pequeno { height: 32px; padding: 0 var(--espacio-3); font-size: 0.8rem; }

/* =====================================================================
   TABLAS
   ===================================================================== */
.tabla {
    width: 100%;
    border-collapse: collapse;
    background: var(--color-superficie);
    border-radius: var(--radio);
    overflow: hidden;
    border: 1px solid var(--color-borde);
}
.tabla th, .tabla td {
    padding: var(--espacio-3) var(--espacio-4);
    text-align: left;
    border-bottom: 1px solid var(--color-borde);
}
.tabla th {
    background: var(--color-superficie-2);
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-texto-suave);
}
.tabla tbody tr:last-child td { border-bottom: none; }
.tabla tbody tr:hover { background: var(--color-superficie-2); }

.badge {
    display: inline-flex;
    align-items: center;
    padding: 2px var(--espacio-2);
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: var(--radio-pill);
    background: var(--color-superficie-2);
    color: var(--kbb-slate);
    border: 1px solid var(--color-borde);
}
.badge--activo  { background: var(--color-exito-soft); color: #065F46; border-color: #6EE7B7; }
.badge--inactivo { background: var(--color-error-soft); color: #991B1B; border-color: #FCA5A5; }

/* =====================================================================
   LOGIN Y PANTALLAS PUBLICAS (sin layout principal)
   ===================================================================== */
.contenido-publico {
    min-height: 100vh;
    background: var(--color-fondo);
}

/* --- Layout split: panel visual a la izquierda + formulario a la derecha --- */
.login-split {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--color-superficie);
}

.login-split__visual {
    position: relative;
    background:
        radial-gradient(circle at 75% 25%, rgba(255,255,255,0.16) 0, transparent 40%),
        radial-gradient(circle at 15% 85%, rgba(255,255,255,0.10) 0, transparent 35%),
        linear-gradient(135deg, var(--kbb-naranja) 0%, var(--kbb-naranja-oscuro) 100%);
    color: #fff;
    padding: var(--espacio-12) var(--espacio-10);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    overflow: hidden;
}
.login-split__visual::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        repeating-linear-gradient(45deg, rgba(255,255,255,0.04) 0, rgba(255,255,255,0.04) 2px, transparent 2px, transparent 14px);
    pointer-events: none;
    z-index: 0;
}
.login-split__visual > * { position: relative; z-index: 1; }

.login-split__brand {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
}
.login-split__brand img {
    height: 56px;
    width: auto;
    background: #fff;
    padding: 8px 14px;
    border-radius: var(--radio);
    box-shadow: var(--sombra-md);
}
.login-split__brand-texto {
    font-weight: 800;
    font-size: 1.4rem;
    letter-spacing: -0.01em;
    line-height: 1.1;
}
.login-split__brand-texto small {
    display: block;
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.1em;
    opacity: 0.85;
    margin-top: 4px;
    text-transform: uppercase;
}

.login-split__hero {
    max-width: 480px;
}
.login-split__hero h2 {
    font-size: 2.4rem;
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -0.02em;
    margin: 0 0 var(--espacio-4);
}
.login-split__hero p {
    font-size: 1.02rem;
    line-height: 1.55;
    opacity: 0.92;
    margin: 0 0 var(--espacio-5);
}

.login-split__benefits {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--espacio-3);
}
.login-split__benefits li {
    display: flex;
    align-items: center;
    gap: var(--espacio-3);
    font-size: 0.92rem;
    font-weight: 500;
}
.login-split__check {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255,255,255,0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border: 1px solid rgba(255,255,255,0.3);
}
.login-split__check svg { width: 14px; height: 14px; }

.login-split__footer {
    font-size: 0.78rem;
    opacity: 0.75;
    line-height: 1.4;
}

/* --- Lado derecho: formulario --- */
.login-split__form {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--espacio-10) var(--espacio-8);
    background: var(--color-superficie);
}
.login-split__form-inner {
    width: 100%;
    max-width: 400px;
}
.login-split__form-inner h1 {
    font-size: 1.6rem;
    color: var(--kbb-slate-oscuro);
    margin: 0 0 var(--espacio-2);
    font-weight: 800;
    letter-spacing: -0.02em;
}
.login-split__form-inner > p.bajada {
    color: var(--color-texto-suave);
    font-size: 0.92rem;
    margin: 0 0 var(--espacio-6);
}

/* Pantalla centrada simple (para vistas como invitacion/establecer cuando no aplique split) */
.login-pantalla {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: var(--espacio-6);
    background: linear-gradient(135deg, #FFF4E0 0%, #F5F6F8 60%, #FFFFFF 100%);
}
.login-contenedor {
    width: 100%;
    max-width: 460px;
    background: var(--color-superficie);
    padding: var(--espacio-8);
    border-radius: var(--radio-lg);
    box-shadow: var(--sombra-lg);
    border: 1px solid var(--color-borde);
}
.login-logo { text-align: center; margin-bottom: var(--espacio-6); }
.login-logo img { height: 60px; margin: 0 auto var(--espacio-3); }
.login-logo h1 { font-size: 1.15rem; color: var(--kbb-slate-oscuro); margin: 0; font-weight: 700; }
.login-logo p { color: var(--color-texto-suave); font-size: 0.85rem; margin: var(--espacio-1) 0 0; }

/* =====================================================================
   TOAST STACK (alertas flotantes en pantallas publicas)
   ===================================================================== */
.toast-stack {
    position: fixed;
    top: var(--espacio-4);
    right: var(--espacio-4);
    z-index: 200;
    width: min(380px, calc(100vw - 2rem));
    display: flex;
    flex-direction: column;
    gap: var(--espacio-2);
    pointer-events: none;
}
.toast-stack .alerta {
    margin: 0;
    box-shadow: var(--sombra-lg);
    pointer-events: auto;
}

/* =====================================================================
   CAMPO PASSWORD CON TOGGLE OJO
   ===================================================================== */
.campo-password {
    position: relative;
    display: block;
}
.campo-password input[type="password"],
.campo-password input[type="text"] {
    padding-right: 2.75rem;
    width: 100%;
}
.campo-password__toggle {
    position: absolute;
    top: 50%;
    right: var(--espacio-2);
    transform: translateY(-50%);
    background: transparent;
    border: none;
    color: var(--color-texto-suave);
    padding: var(--espacio-1);
    cursor: pointer;
    width: 32px;
    height: 32px;
    border-radius: var(--radio-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--transicion-rapida), color var(--transicion-rapida);
}
.campo-password__toggle svg { width: 18px; height: 18px; }
.campo-password__toggle:hover {
    color: var(--kbb-naranja-oscuro);
    background: var(--kbb-naranja-soft);
}
.campo-password__toggle[aria-pressed="true"] {
    color: var(--kbb-naranja-oscuro);
}

/* =====================================================================
   RESPONSIVE LOGIN
   ===================================================================== */
@media (max-width: 900px) {
    .login-split { grid-template-columns: 1fr; }
    .login-split__visual {
        padding: var(--espacio-6) var(--espacio-5);
        min-height: auto;
        gap: var(--espacio-5);
    }
    .login-split__hero h2 { font-size: 1.6rem; }
    .login-split__hero p { font-size: 0.92rem; }
    .login-split__benefits li { font-size: 0.85rem; }
    .login-split__form { padding: var(--espacio-6) var(--espacio-5); }
}

/* =====================================================================
   PERFIL DE USUARIO
   ===================================================================== */
.perfil-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: var(--espacio-6);
}
@media (max-width: 900px) { .perfil-grid { grid-template-columns: 1fr; } }

.perfil-tarjeta-avatar {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-6);
    text-align: center;
    box-shadow: var(--sombra-sm);
    height: fit-content;
}
.perfil-avatar-grande {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    object-fit: cover;
    margin: 0 auto var(--espacio-4);
    background: var(--kbb-naranja);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3.2rem;
    font-weight: 700;
    border: 4px solid var(--color-superficie);
    box-shadow: var(--sombra-md), 0 0 0 4px var(--kbb-naranja-soft);
}
.perfil-nombre {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
    margin: 0 0 var(--espacio-1);
}
.perfil-puesto {
    color: var(--kbb-naranja-oscuro);
    font-size: 0.9rem;
    font-weight: 600;
    margin: 0 0 var(--espacio-2);
}
.perfil-departamento {
    color: var(--color-texto-suave);
    font-size: 0.82rem;
}

.perfil-foto-control {
    margin-top: var(--espacio-5);
    padding-top: var(--espacio-4);
    border-top: 1px solid var(--color-borde);
}
.perfil-foto-control input[type="file"] {
    width: 100%;
    font-size: 0.82rem;
    margin-bottom: var(--espacio-3);
}
.perfil-foto-control input[type="file"]::file-selector-button {
    background: var(--color-superficie-2);
    border: 1px solid var(--color-borde-fuerte);
    color: var(--kbb-slate);
    padding: var(--espacio-2) var(--espacio-3);
    border-radius: var(--radio-sm);
    font-family: var(--fuente-principal);
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    margin-right: var(--espacio-3);
}
.perfil-foto-control input[type="file"]::file-selector-button:hover {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
}
.perfil-foto-preview {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    object-fit: cover;
    margin: 0 auto var(--espacio-3);
    border: 2px dashed var(--kbb-naranja);
    padding: 4px;
    display: none;
}
.perfil-foto-preview.visible { display: block; }

/* =====================================================================
   EMPTY STATES
   ===================================================================== */
.estado-vacio {
    text-align: center;
    padding: var(--espacio-12) var(--espacio-6);
    color: var(--color-texto-suave);
}
.estado-vacio__icono {
    font-size: 3rem;
    margin-bottom: var(--espacio-3);
    opacity: 0.4;
}
.estado-vacio__titulo {
    color: var(--color-texto);
    font-weight: 600;
    font-size: 1rem;
    margin: 0 0 var(--espacio-2);
}

/* =====================================================================
   FOOTER
   ===================================================================== */
.pie {
    text-align: center;
    padding: var(--espacio-4) var(--espacio-4);
    color: var(--color-texto-suave);
    font-size: 0.78rem;
    border-top: 1px solid var(--color-borde);
    background: var(--color-superficie);
}
.pie a { color: var(--kbb-naranja-oscuro); }

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media (max-width: 1200px) {
    :root { --ancho-sidebar-der: 240px; }
}
@media (max-width: 1024px) {
    .capa-principal { grid-template-columns: var(--ancho-sidebar-izq) 1fr; }
    .cabecera { grid-template-columns: var(--ancho-sidebar-izq) 1fr auto; }
    .sidebar-der { display: none; }
}
@media (max-width: 768px) {
    :root { --ancho-sidebar-izq: 64px; }
    .capa-principal { grid-template-columns: 64px 1fr; }
    .cabecera { grid-template-columns: 64px 1fr auto; padding: 0 var(--espacio-3); }
    .cabecera__marca-texto, .cabecera__avatar-nombre { display: none; }
    .sidebar-izq__perfil { padding: var(--espacio-3) var(--espacio-2); }
    .sidebar-izq__avatar { width: 40px; height: 40px; font-size: 1rem; }
    .sidebar-izq__nombre, .sidebar-izq__puesto { display: none; }
    .sidebar-izq__link span { display: none; }
    .sidebar-izq__link { justify-content: center; padding: var(--espacio-3); }
    .contenido-central { padding: var(--espacio-4); }
    .banner-principal { padding: var(--espacio-6); min-height: 200px; }
    .banner-principal__titulo { font-size: 1.6rem; }
}

/* =====================================================================
   CARRUSEL DE COMUNICADOS (dashboard)
   ===================================================================== */
.carrusel {
    position: relative;
    width: 100%;
    height: 320px;
    border-radius: var(--radio-lg);
    overflow: hidden;
    box-shadow: var(--sombra-md);
    background: var(--sidebar-oscuro);
}
.carrusel__slides {
    position: relative;
    width: 100%;
    height: 100%;
}
.carrusel__slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 600ms ease;
    text-decoration: none;
    color: #fff;
    pointer-events: none;
    display: block;
}
.carrusel__slide.activo { opacity: 1; pointer-events: auto; }
.carrusel__imagen {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
}
.carrusel__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.5) 50%, rgba(0,0,0,0.25) 100%);
}
.carrusel__contenido {
    position: relative;
    z-index: 2;
    padding: var(--espacio-8);
    max-width: 700px;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}
.carrusel__chip {
    display: inline-block;
    align-self: flex-start;
    padding: 4px 12px;
    border-radius: var(--radio-pill);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: var(--espacio-3);
}
.carrusel__titulo {
    margin: 0 0 var(--espacio-3);
    font-size: 1.85rem;
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.02em;
    text-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.carrusel__resumen {
    margin: 0 0 var(--espacio-3);
    font-size: 1rem;
    line-height: 1.5;
    opacity: 0.95;
    text-shadow: 0 1px 4px rgba(0,0,0,0.4);
}
.carrusel__pie {
    margin: 0;
    font-size: 0.82rem;
    opacity: 0.85;
}
.carrusel__pie-cta { color: var(--kbb-naranja-claro); font-weight: 600; margin-left: var(--espacio-2); }

.carrusel__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px; height: 44px;
    background: rgba(0,0,0,0.4);
    border: 1px solid rgba(255,255,255,0.25);
    color: #fff;
    border-radius: 50%;
    font-size: 1.8rem;
    line-height: 1;
    cursor: pointer;
    z-index: 3;
    display: flex; align-items: center; justify-content: center;
    transition: background var(--transicion-rapida);
}
.carrusel__nav:hover { background: rgba(0,0,0,0.7); }
.carrusel__nav--prev { left: var(--espacio-4); }
.carrusel__nav--next { right: var(--espacio-4); }

.carrusel__indicadores {
    position: absolute;
    bottom: var(--espacio-4);
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: var(--espacio-2);
    z-index: 3;
}
.carrusel__indicador {
    width: 32px; height: 4px;
    background: rgba(255,255,255,0.35);
    border: none;
    border-radius: 2px;
    cursor: pointer;
    transition: background var(--transicion-rapida);
}
.carrusel__indicador.activo { background: #fff; }
.carrusel__indicador:hover { background: rgba(255,255,255,0.6); }

@media (max-width: 768px) {
    .carrusel { height: 240px; }
    .carrusel__contenido { padding: var(--espacio-5); }
    .carrusel__titulo { font-size: 1.3rem; }
    .carrusel__resumen { font-size: 0.88rem; }
    .carrusel__nav { width: 36px; height: 36px; }
}

/* =====================================================================
   CARGAS OPERATIVAS (tarjetas)
   ===================================================================== */
.cargas-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--espacio-4);
}
.carga-tarjeta {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-4);
    box-shadow: var(--sombra-sm);
    display: flex;
    flex-direction: column;
    gap: var(--espacio-3);
    transition: transform var(--transicion-rapida), box-shadow var(--transicion-rapida);
}
.carga-tarjeta:hover {
    transform: translateY(-2px);
    box-shadow: var(--sombra-md);
}
.carga-tarjeta__cabecera {
    display: flex;
    align-items: center;
    gap: var(--espacio-2);
}
.carga-tarjeta__logo {
    width: 40px; height: 40px;
    object-fit: contain;
    border-radius: var(--radio-sm);
    background: #fff;
    border: 1px solid var(--color-borde);
    flex-shrink: 0;
}
.carga-tarjeta__logo--iniciales {
    color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 0.78rem;
    border: none;
}
.carga-tarjeta__cliente { flex: 1; min-width: 0; }
.carga-tarjeta__cliente-nombre {
    margin: 0; font-size: 0.85rem; font-weight: 700;
    color: var(--kbb-slate-oscuro);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.carga-tarjeta__cliente-sector {
    margin: 0; font-size: 0.7rem; color: var(--color-texto-suave);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.carga-tarjeta__chip {
    padding: 3px 10px;
    border-radius: var(--radio-pill);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.carga-tarjeta__titulo {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-texto);
    line-height: 1.3;
}
.carga-tarjeta__bloqueo {
    margin: 0;
    padding: var(--espacio-2);
    background: var(--color-error-soft);
    border-left: 3px solid var(--color-error);
    border-radius: var(--radio-sm);
    font-size: 0.78rem;
    color: #991B1B;
}
.carga-tarjeta__avance {
    display: flex;
    align-items: center;
    gap: var(--espacio-2);
}
.carga-tarjeta__avance-barra {
    flex: 1;
    height: 6px;
    background: var(--color-borde);
    border-radius: var(--radio-pill);
    overflow: hidden;
}
.carga-tarjeta__avance-relleno {
    height: 100%;
    border-radius: var(--radio-pill);
    transition: width 600ms ease;
}
.carga-tarjeta__avance-pct {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color-texto-suave);
    min-width: 36px;
    text-align: right;
}
.carga-tarjeta__pie {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--espacio-2);
    font-size: 0.72rem;
    color: var(--color-texto-suave);
    flex-wrap: wrap;
    padding-top: var(--espacio-2);
    border-top: 1px solid var(--color-borde);
}
.carga-tarjeta__avatar {
    width: 22px; height: 22px;
    border-radius: 50%;
    object-fit: cover;
    display: inline-block;
    vertical-align: middle;
}
.carga-tarjeta__avatar--iniciales {
    background: var(--kbb-naranja);
    color: #fff;
    font-size: 0.62rem;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.carga-tarjeta__autor { font-weight: 600; color: var(--color-texto); }
.carga-tarjeta__abrir { color: var(--kbb-naranja-oscuro); font-weight: 600; }
.carga-tarjeta__abrir:hover { text-decoration: underline; }

.pulso {
    display: inline-block;
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--color-exito);
    margin-left: 6px;
    animation: pulso-anim 1.5s ease-in-out infinite;
}
@keyframes pulso-anim {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16,185,129,0.4); }
    50%      { box-shadow: 0 0 0 8px rgba(16,185,129,0); }
}
.filtro-seguimiento {
    height: 36px;
    padding: 0 0.6rem;
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-sm);
    font-size: 0.85rem;
    background: var(--color-superficie);
    color: var(--color-texto);
    font-family: var(--fuente-principal);
}

/* =====================================================================
   CLIENTES (CRM)
   ===================================================================== */
.clientes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: var(--espacio-4);
}
.cliente-tarjeta {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    padding: var(--espacio-4);
    box-shadow: var(--sombra-sm);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    transition: transform var(--transicion-rapida), box-shadow var(--transicion-rapida);
}
.cliente-tarjeta:hover {
    transform: translateY(-2px);
    box-shadow: var(--sombra-md);
}
.cliente-tarjeta--inactivo { opacity: 0.55; }
.cliente-tarjeta__logo-wrap {
    width: 100%;
    height: 80px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: var(--espacio-3);
}
.cliente-tarjeta__logo {
    max-width: 120px;
    max-height: 70px;
    object-fit: contain;
}
.cliente-tarjeta__logo--iniciales {
    width: 70px; height: 70px;
    border-radius: var(--radio);
    color: #fff;
    font-weight: 700;
    font-size: 1.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
    max-width: none;
    max-height: none;
}
.cliente-tarjeta__nombre {
    margin: 0 0 var(--espacio-1);
    font-size: 1rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
}
.cliente-tarjeta__sector {
    margin: 0 0 var(--espacio-2);
    font-size: 0.78rem;
    color: var(--kbb-naranja-oscuro);
    font-weight: 500;
}
.cliente-tarjeta__contacto {
    margin: 0;
    font-size: 0.78rem;
    color: var(--color-texto-suave);
    display: flex;
    align-items: center;
    gap: 4px;
    justify-content: center;
}
.cliente-tarjeta__acciones {
    margin-top: var(--espacio-3);
    padding-top: var(--espacio-3);
    border-top: 1px solid var(--color-borde);
    width: 100%;
}

/* =====================================================================
   COMUNICADOS
   ===================================================================== */
.comunicados-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--espacio-4);
}
.comunicado-tarjeta {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    overflow: hidden;
    box-shadow: var(--sombra-sm);
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    transition: transform var(--transicion-rapida), box-shadow var(--transicion-rapida);
}
.comunicado-tarjeta:hover {
    transform: translateY(-2px);
    box-shadow: var(--sombra-md);
    text-decoration: none;
    color: inherit;
}
.comunicado-tarjeta--nuevo { border-left: 4px solid var(--kbb-naranja); }
.comunicado-tarjeta__imagen {
    width: 100%;
    height: 140px;
    background-size: cover;
    background-position: center;
    background-color: var(--color-superficie-2);
}
.comunicado-tarjeta__imagen--sin {
    display: flex;
    align-items: center;
    justify-content: center;
}
.comunicado-tarjeta__cuerpo {
    padding: var(--espacio-4);
    flex: 1;
    display: flex;
    flex-direction: column;
}
.comunicado-tarjeta__titulo {
    margin: 0 0 var(--espacio-2);
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--kbb-slate-oscuro);
    line-height: 1.3;
}
.comunicado-tarjeta__resumen {
    margin: 0 0 var(--espacio-3);
    font-size: 0.85rem;
    color: var(--color-texto-suave);
    line-height: 1.5;
    flex: 1;
}
.comunicado-tarjeta__pie { margin: 0; font-size: 0.72rem; }

.comunicado-articulo {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    overflow: hidden;
    box-shadow: var(--sombra-sm);
    max-width: 880px;
    margin: 0 auto;
}
.comunicado-articulo__banner {
    height: 280px;
    background-size: cover;
    background-position: center;
}
.comunicado-articulo__banner--solido {
    display: flex; align-items: center; justify-content: center;
}
.comunicado-articulo__cuerpo {
    padding: var(--espacio-8);
}
.comunicado-articulo__contenido {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--color-texto);
}
.comunicado-articulo__contenido p { margin: 0 0 1rem; }
.comunicado-articulo__contenido h2 { margin: 1.5rem 0 0.75rem; color: var(--kbb-slate-oscuro); }
.comunicado-articulo__contenido h3 { margin: 1.25rem 0 0.5rem; color: var(--kbb-slate-oscuro); }
.comunicado-articulo__contenido ul,
.comunicado-articulo__contenido ol { margin: 0 0 1rem; padding-left: 1.5rem; }
.comunicado-articulo__contenido a { color: var(--kbb-naranja-oscuro); text-decoration: underline; }

/* =====================================================================
   MODAL GENERICO
   ===================================================================== */
.modal-fondo {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(4px);
    z-index: 300;
    display: none;
    align-items: center;
    justify-content: center;
    padding: var(--espacio-4);
}
.modal-fondo.visible { display: flex; }
.modal-caja {
    background: var(--color-superficie);
    border-radius: var(--radio-lg);
    padding: var(--espacio-6);
    max-width: 560px;
    width: 100%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: var(--sombra-lg);
    position: relative;
}
.modal-cerrar {
    position: absolute;
    top: var(--espacio-3);
    right: var(--espacio-3);
    background: transparent;
    border: none;
    font-size: 1.6rem;
    line-height: 1;
    color: var(--color-texto-suave);
    cursor: pointer;
    width: 32px; height: 32px;
    border-radius: 50%;
}
.modal-cerrar:hover { background: var(--color-superficie-2); }

/* =====================================================================
   UTILIDADES
   ===================================================================== */
.flex { display: flex; }
.flex-col { display: flex; flex-direction: column; }
.gap-2 { gap: var(--espacio-2); }
.gap-3 { gap: var(--espacio-3); }
.gap-4 { gap: var(--espacio-4); }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.text-suave { color: var(--color-texto-suave); }
.mt-4 { margin-top: var(--espacio-4); }
.mb-4 { margin-bottom: var(--espacio-4); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

/* =====================================================================
   MODULO TICKETS (mesa de ayuda)
   ===================================================================== */

/* --- Utilidades menores reutilizables --- */
.panel {
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-lg);
    padding: var(--espacio-5);
    box-shadow: var(--sombra-sm);
}
.panel--vacio {
    text-align: center;
    color: var(--color-texto-suave);
    padding: var(--espacio-8);
}
.text-muted { color: var(--color-texto-suave); }
.requerido, .obligatorio { color: var(--color-error); margin-left: 2px; }
.form-error {
    color: var(--color-error);
    font-size: 0.82rem;
    margin: var(--espacio-1) 0 0;
}
.campo { display: flex; flex-direction: column; gap: var(--espacio-1); margin-bottom: var(--espacio-4); }
.campo-label, .campo__label {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--color-texto);
}
.campo__ayuda, .campo-ayuda {
    font-size: 0.78rem;
    color: var(--color-texto-suave);
    margin: var(--espacio-1) 0 0;
}
.campo-input, .campo__input {
    width: 100%;
    padding: var(--espacio-2) var(--espacio-3);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
    background: var(--color-superficie);
    color: var(--color-texto);
    font-family: inherit;
    font-size: 0.92rem;
    transition: border-color var(--transicion-rapida), box-shadow var(--transicion-rapida);
}
.campo-input:focus, .campo__input:focus {
    outline: none;
    border-color: var(--kbb-naranja);
    box-shadow: var(--focus-ring);
}
.campo-input--inline, .campo__input--inline { width: auto; min-width: 280px; }
.campo-input--file, .campo__input--file { padding: var(--espacio-2); background: var(--color-superficie-2); }
.campo-check { display: inline-flex; align-items: center; gap: var(--espacio-2); font-size: 0.88rem; }

.boton--ghost,
.boton--secundario { /* alias visual cuando se quiere un boton "fantasma" */ }
.boton--block { width: 100%; }
.boton-icono {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px; height: 32px;
    border-radius: var(--radio);
    color: var(--color-texto-suave);
    background: var(--color-superficie-2);
    border: 1px solid var(--color-borde);
    text-decoration: none;
    transition: background var(--transicion-rapida), color var(--transicion-rapida);
}
.boton-icono:hover { background: var(--kbb-naranja); color: #fff; text-decoration: none; }

/* --- Selector visual Falla vs Servicio (formulario) --- */
.ticket-form { padding: var(--espacio-6); }
.ticket-form__tipo {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--espacio-3);
    border: none;
    padding: 0;
    margin: 0 0 var(--espacio-5);
}
.ticket-form__tipo-opcion {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--espacio-2);
    padding: var(--espacio-5);
    border: 2px solid var(--color-borde);
    border-radius: var(--radio-lg);
    cursor: pointer;
    transition: border-color var(--transicion-rapida), background var(--transicion-rapida);
    position: relative;
}
.ticket-form__tipo-opcion input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.ticket-form__tipo-icono {
    width: 44px; height: 44px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
    background: var(--color-superficie-2);
}
.ticket-form__tipo-icono svg { width: 24px; height: 24px; }
.ticket-form__tipo-titulo { font-weight: 700; font-size: 1.05rem; color: var(--color-texto); }
.ticket-form__tipo-bajada { font-size: 0.85rem; color: var(--color-texto-suave); }

.ticket-form__tipo-opcion:has(input:checked) { background: var(--color-superficie-2); }
.ticket-form__tipo-opcion--falla:has(input:checked) {
    border-color: var(--color-error);
}
.ticket-form__tipo-opcion--falla:has(input:checked) .ticket-form__tipo-icono {
    background: var(--color-error-soft); color: var(--color-error);
}
.ticket-form__tipo-opcion--servicio:has(input:checked) {
    border-color: var(--color-exito);
}
.ticket-form__tipo-opcion--servicio:has(input:checked) .ticket-form__tipo-icono {
    background: var(--color-exito-soft); color: var(--color-exito);
}

.ticket-form__grid {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: var(--espacio-4);
}
@media (max-width: 640px) { .ticket-form__grid { grid-template-columns: 1fr; } }

.ticket-form__acciones {
    display: flex;
    justify-content: flex-end;
    gap: var(--espacio-3);
    margin-top: var(--espacio-5);
    border-top: 1px solid var(--color-borde);
    padding-top: var(--espacio-4);
}

/* --- Tabs Abiertos / En espera / Cerrados --- */
.tickets-tabs {
    display: flex;
    gap: var(--espacio-1);
    margin-bottom: var(--espacio-4);
    border-bottom: 2px solid var(--color-borde);
}
.tickets-tabs__tab {
    padding: var(--espacio-3) var(--espacio-5);
    color: var(--color-texto-suave);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    display: inline-flex;
    align-items: center;
    gap: var(--espacio-2);
    transition: color var(--transicion-rapida), border-color var(--transicion-rapida);
}
.tickets-tabs__tab:hover { color: var(--color-texto); text-decoration: none; }
.tickets-tabs__tab.activo {
    color: var(--kbb-naranja-oscuro);
    border-bottom-color: var(--kbb-naranja);
}
.tickets-tabs__contador {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    padding: 0 var(--espacio-2);
    height: 22px;
    border-radius: var(--radio-pill);
    background: var(--color-superficie-2);
    color: var(--color-texto-suave);
    font-size: 0.78rem;
    font-weight: 700;
}
.tickets-tabs__tab.activo .tickets-tabs__contador {
    background: var(--kbb-naranja-soft);
    color: var(--kbb-naranja-oscuro);
}

/* --- Busqueda inline (bandeja admin) --- */
.tickets-busqueda { display: flex; gap: var(--espacio-2); align-items: center; }

/* --- Tabla de tickets (estilo seguimiento.png) --- */
.tickets-tabla { padding: 0; overflow-x: auto; }
.tickets-tabla table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}
.tickets-tabla thead th {
    text-align: left;
    padding: var(--espacio-3) var(--espacio-4);
    background: var(--color-superficie-2);
    color: var(--color-texto-suave);
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom: 1px solid var(--color-borde);
}
.tickets-tabla tbody td {
    padding: var(--espacio-3) var(--espacio-4);
    border-bottom: 1px solid var(--color-borde);
    vertical-align: middle;
}
.tickets-tabla tbody tr:hover { background: var(--color-superficie-2); }
.tickets-tabla__folio { font-weight: 700; color: var(--kbb-naranja-oscuro); }
.tickets-tabla__acciones { text-align: right; white-space: nowrap; }
.tickets-tabla__resumen-fila td {
    padding-top: 0;
    border-bottom: 1px solid var(--color-borde);
}
.tickets-tabla__resumen {
    color: var(--color-texto-suave);
    font-size: 0.82rem;
    margin: 0;
}

.tickets-paginacion { margin-top: var(--espacio-4); }

/* --- Pills de tipo (Falla / Servicio) --- */
.ticket-tipo-pill {
    display: inline-flex;
    align-items: center;
    padding: 2px var(--espacio-2);
    border-radius: var(--radio-pill);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.ticket-tipo-pill--falla {
    background: var(--color-error-soft);
    color: #991B1B;
}
.ticket-tipo-pill--servicio {
    background: var(--color-exito-soft);
    color: #065F46;
}

/* --- Badge de estatus (color dinamico via --c) --- */
.ticket-estatus {
    display: inline-flex;
    align-items: center;
    padding: 4px var(--espacio-3);
    border-radius: var(--radio-pill);
    background: color-mix(in srgb, var(--c) 14%, transparent);
    color: var(--c);
    border: 1px solid color-mix(in srgb, var(--c) 30%, transparent);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.ticket-prioridad {
    display: inline-flex;
    align-items: center;
    color: var(--c);
    font-size: 0.82rem;
    font-weight: 600;
}

/* --- Detalle del ticket (2 columnas) --- */
.ticket-detalle {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: var(--espacio-5);
}
@media (max-width: 960px) { .ticket-detalle { grid-template-columns: 1fr; } }

.ticket-detalle__principal { display: flex; flex-direction: column; gap: var(--espacio-4); }
.ticket-detalle__lateral   { display: flex; flex-direction: column; gap: var(--espacio-4); }
.ticket-detalle__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--espacio-3);
    margin-bottom: var(--espacio-4);
}
.ticket-detalle__titulo {
    font-size: 1.05rem;
    font-weight: 700;
    margin: 0 0 var(--espacio-3);
}
.ticket-detalle__subtitulo {
    font-size: 0.9rem;
    font-weight: 700;
    margin: var(--espacio-3) 0 var(--espacio-2);
    color: var(--color-texto);
}
.ticket-detalle__descripcion {
    white-space: pre-wrap;
    line-height: 1.6;
    margin: 0 0 var(--espacio-4);
}
.ticket-detalle__campos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--espacio-3);
    margin: 0;
}
.ticket-detalle__campos dt {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-texto-suave);
}
.ticket-detalle__campos dd { margin: 0; font-weight: 600; }
.ticket-detalle__adjuntos { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--espacio-2); }
.ticket-detalle__adjuntos li {
    display: flex;
    flex-direction: column;
    padding: var(--espacio-2) var(--espacio-3);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio);
}
.ticket-detalle__adjuntos a {
    display: inline-flex;
    align-items: center;
    gap: var(--espacio-2);
    font-weight: 600;
}
.ticket-detalle__adjuntos small { color: var(--color-texto-suave); }

/* --- Hilo de comentarios --- */
.ticket-comentarios {
    display: flex;
    flex-direction: column;
    gap: var(--espacio-3);
    margin-bottom: var(--espacio-4);
}
.ticket-comentario {
    padding: var(--espacio-3) var(--espacio-4);
    border-radius: var(--radio-lg);
    border: 1px solid var(--color-borde);
    background: var(--color-superficie-2);
    max-width: 85%;
}
.ticket-comentario--solicitante { align-self: flex-start; }
.ticket-comentario--atendiente {
    align-self: flex-end;
    background: var(--kbb-naranja-soft);
    border-color: var(--kbb-naranja-claro);
}
.ticket-comentario--interno {
    background: var(--color-aviso-soft);
    border-color: var(--color-aviso);
}
.ticket-comentario__cabecera {
    display: flex;
    align-items: center;
    gap: var(--espacio-2);
    margin-bottom: var(--espacio-1);
    font-size: 0.82rem;
}
.ticket-comentario__fecha { color: var(--color-texto-suave); }
.ticket-comentario__chip {
    margin-left: auto;
    padding: 1px var(--espacio-2);
    background: var(--color-aviso);
    color: #fff;
    border-radius: var(--radio-pill);
    font-size: 0.7rem;
    font-weight: 700;
}
.ticket-comentario p { margin: 0; line-height: 1.5; white-space: pre-wrap; }

.ticket-comentario-form { display: flex; flex-direction: column; gap: var(--espacio-3); }
.ticket-comentario-form__acciones {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--espacio-3);
}

/* --- Estrellas de calificacion --- */
.ticket-estrellas {
    display: inline-flex;
    flex-direction: row-reverse;
    gap: 2px;
    margin-bottom: var(--espacio-3);
    font-size: 1.6rem;
    color: var(--color-borde);
}
.ticket-estrellas label { cursor: pointer; }
.ticket-estrellas input { position: absolute; opacity: 0; pointer-events: none; }
.ticket-estrellas label:hover,
.ticket-estrellas label:hover ~ label,
.ticket-estrellas input:checked ~ label { color: var(--kbb-naranja); }
.ticket-estrellas-resultado { font-size: 1.4rem; color: var(--color-borde); margin: 0 0 var(--espacio-2); }
.ticket-estrellas-resultado .lleno { color: var(--kbb-naranja); }

/* --- Timeline lateral --- */
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline__item {
    position: relative;
    padding-left: var(--espacio-5);
    padding-bottom: var(--espacio-3);
    border-left: 1px solid var(--color-borde);
}
.timeline__item:last-child { border-left-color: transparent; }
.timeline__punto {
    position: absolute;
    left: -5px;
    top: 4px;
    width: 9px; height: 9px;
    border-radius: 50%;
    background: var(--kbb-naranja);
    border: 2px solid var(--color-superficie);
}
.timeline__descripcion { margin: 0; font-size: 0.85rem; font-weight: 600; }
.timeline__meta { color: var(--color-texto-suave); font-size: 0.75rem; }

/* --- Acciones cabecera del detalle --- */
.ticket-detalle__acciones-cabecera { display: flex; gap: var(--espacio-2); }

/* =====================================================================
   Dashboard — secciones de KPIs y feed equipo
   ===================================================================== */
.dashboard-seccion__cabecera { margin-bottom: var(--espacio-3); }
.dashboard-seccion__titulo {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 var(--espacio-1);
    color: var(--color-texto);
}
.dashboard-seccion__bajada {
    color: var(--color-texto-suave);
    font-size: 0.9rem;
    margin: 0;
}

.feed-equipo {
    list-style: none;
    margin: 0;
    padding: 0;
    background: var(--color-superficie);
    border: 1px solid var(--color-borde);
    border-radius: var(--radio-lg);
    overflow: hidden;
}
.feed-equipo__item {
    display: flex;
    gap: var(--espacio-4);
    padding: var(--espacio-4);
    border-bottom: 1px solid var(--color-borde);
}
.feed-equipo__item:last-child { border-bottom: none; }
.feed-equipo__avatar {
    flex: 0 0 40px;
    width: 40px; height: 40px;
    border-radius: 50%;
    background: var(--c);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.88rem;
}
.feed-equipo__cuerpo { flex: 1; min-width: 0; }
.feed-equipo__nombre { margin: 0 0 var(--espacio-1); font-size: 0.9rem; }
.feed-equipo__tarea {
    display: block;
    font-weight: 600;
    margin-bottom: var(--espacio-2);
    color: var(--color-texto);
}
.feed-equipo__tarea:hover { color: var(--kbb-naranja-oscuro); }
.feed-equipo__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--espacio-2);
    align-items: center;
    font-size: 0.78rem;
}
.feed-equipo__cliente {
    display: inline-flex;
    align-items: center;
    padding: 2px var(--espacio-2);
    border-radius: var(--radio-pill);
    background: color-mix(in srgb, var(--c) 14%, transparent);
    color: var(--c);
    font-weight: 600;
}

/* =====================================================================
   Sidebar colapsado (hamburguesa)
   Cuando html[data-sidebar="colapsado"] se reduce el ancho de la columna
   y se ocultan textos del sidebar y de la marca, dejando solo iconos.
   ===================================================================== */
html[data-sidebar="colapsado"] {
    --ancho-sidebar-izq: var(--ancho-sidebar-izq-colapsado);
}

/* Marca del header: solo el logo cuando esta colapsado */
html[data-sidebar="colapsado"] .cabecera__marca-texto { display: none; }

/* Sidebar: ocultar textos del perfil y de los links, mantener iconos */
html[data-sidebar="colapsado"] .sidebar-izq__perfil {
    padding: var(--espacio-3) var(--espacio-2);
}
html[data-sidebar="colapsado"] .sidebar-izq__avatar {
    width: 40px;
    height: 40px;
    font-size: 1rem;
    border-width: 2px;
    box-shadow: 0 0 0 2px rgba(243, 146, 0, 0.2);
}
html[data-sidebar="colapsado"] .sidebar-izq__perfil-info { display: none; }

html[data-sidebar="colapsado"] .sidebar-izq__link {
    padding: var(--espacio-3) 0;
    justify-content: center;
    gap: 0;
    border-left-width: 0;
    border-right: 3px solid transparent;
    position: relative;
}
html[data-sidebar="colapsado"] .sidebar-izq__link.activo {
    border-left-width: 0;
    border-right-color: var(--kbb-naranja);
}
html[data-sidebar="colapsado"] .sidebar-izq__link span:not(.sr-only) { display: none; }

/* Tooltip nativo via title (lo agrega el JS). Tambien efecto hover suave */
html[data-sidebar="colapsado"] .sidebar-izq__link:hover { background: var(--sidebar-oscuro-hover); }

/* En la pantalla muy pequena, override de media query existente sigue mandando
   (64px), asi que esto no rompe responsive. */


/* =====================================================================
   Tablero "Trabajando ahora" (asistencias) — tarjetas con avatar y pulso
   ===================================================================== */
.ahora-avatar {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    object-fit: cover;
    display: block;
    border: 3px solid var(--color-superficie);
    box-shadow: var(--sombra-sm);
}
.ahora-avatar--iniciales {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 1.5rem;
    letter-spacing: .05em;
}

/* Punto pulsante que indica "en vivo" */
.ahora-pulso {
    position: absolute;
    bottom: 2px;
    right: 2px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 2px solid var(--color-superficie);
    animation: ahora-pulso-anim 2s infinite;
}
@keyframes ahora-pulso-anim {
    0%   { box-shadow: 0 0 0 0 rgba(16, 185, 129, .6); }
    70%  { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); }
    100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}
@media (prefers-reduced-motion: reduce) {
    .ahora-pulso { animation: none; }
}

.ahora-tarjeta__notas {
    margin: 0;
    font-size: .78rem;
    color: var(--color-texto-suave);
    font-style: italic;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* =====================================================================
   INPUTS GLOBALES — estilo consistente sin depender de .formulario
   Aplica a todos los <input type=text|email|...>, <select> y <textarea>
   sueltos (por ejemplo dentro de tarjetas de asistencias, filtros, etc.)
   Los estilos dentro de .formulario mantienen su especificidad.
   ===================================================================== */
input:not([type]):not(.boton),
input[type="text"]:not(.boton),
input[type="email"]:not(.boton),
input[type="password"]:not(.boton),
input[type="tel"]:not(.boton),
input[type="url"]:not(.boton),
input[type="search"]:not(.boton),
input[type="number"]:not(.boton),
input[type="date"]:not(.boton),
input[type="datetime-local"]:not(.boton),
input[type="time"]:not(.boton),
input[type="month"]:not(.boton),
select:not(.boton),
textarea:not(.boton) {
    width: 100%;
    min-height: 40px;
    padding: 0.55rem 0.85rem;
    border: 1px solid var(--color-borde-fuerte, var(--color-borde));
    border-radius: 8px;
    background: var(--color-superficie);
    color: var(--color-texto);
    font-family: inherit;
    font-size: 0.92rem;
    line-height: 1.4;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04);
    transition: border-color 150ms ease, box-shadow 150ms ease, background 150ms ease;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}

textarea:not(.boton) {
    min-height: 90px;
    padding: 0.7rem 0.85rem;
    resize: vertical;
    line-height: 1.5;
}

/* El <select> pierde el chevron nativo con appearance:none — lo re-pintamos con SVG inline */
select:not(.boton) {
    padding-right: 2.5rem;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
    background-repeat: no-repeat;
    background-position: right 0.9rem center;
    background-size: 12px;
}

/* File input mantiene su look nativo — solo un contenedor consistente */
input[type="file"]:not(.boton) {
    width: 100%;
    padding: 0.55rem 0.85rem;
    border: 1px dashed var(--color-borde-fuerte, var(--color-borde));
    border-radius: 8px;
    background: var(--color-superficie);
    color: var(--color-texto);
    font-size: 0.88rem;
    cursor: pointer;
}
input[type="file"]:not(.boton):hover {
    border-color: var(--kbb-naranja);
    background: var(--color-superficie-2, var(--color-superficie));
}

/* Placeholder mas tenue */
input:not(.boton)::placeholder,
textarea:not(.boton)::placeholder {
    color: var(--color-texto-muy-suave, #9CA3AF);
    opacity: 1;
}

/* Hover: borde un poco mas visible */
input:not(.boton):hover:not(:focus):not(:disabled),
select:not(.boton):hover:not(:focus):not(:disabled),
textarea:not(.boton):hover:not(:focus):not(:disabled) {
    border-color: var(--color-texto-suave, #6B7280);
}

/* Focus: aro naranja con leve elevacion */
input:not(.boton):focus,
select:not(.boton):focus,
textarea:not(.boton):focus {
    outline: none;
    border-color: var(--kbb-naranja);
    box-shadow: 0 0 0 3px rgba(243, 146, 0, 0.18),
                inset 0 1px 2px rgba(0, 0, 0, 0.04);
    background: var(--color-superficie);
}

/* Estado disabled/readonly */
input:not(.boton):disabled,
select:not(.boton):disabled,
textarea:not(.boton):disabled,
input:not(.boton)[readonly],
textarea:not(.boton)[readonly] {
    background: var(--color-superficie-2, #F3F4F6);
    color: var(--color-texto-suave, #6B7280);
    cursor: not-allowed;
    opacity: 0.85;
}

/* Errores (Blade agrega @error) */
input:not(.boton).is-invalid,
select:not(.boton).is-invalid,
textarea:not(.boton).is-invalid {
    border-color: var(--color-error);
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.15);
}

/* Etiquetas <label> por si van sueltas (sin wrapper .campo o .formulario) */
label {
    display: inline-block;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--color-texto);
    margin-bottom: 0.35rem;
}

/* En oscuro: el chevron del select con stroke claro para que se vea */
html[data-theme="oscuro"] select:not(.boton) {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23A0AEC0' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
}
