/* =========================================================
   SAN CAYETANO - PLATAFORMA MUNICIPAL
   Coop GENEOS Lta.

   ÍNDICE DE SECCIONES
   ─────────────────────────────────────────────────────────
   01. Design tokens / variables globales
   02. Reset / base
   03. Layout de plataforma (shell, header, sidebar, nav)
   04. Componentes generales (botones, cards, forms, tablas)
   05. Auth / login municipal y ciudadano
   06. Mis Gestiones / panel admin de gestiones
   07. App Ciudadana
   08. Dashboard / Centro de Operaciones
   09. Utilidades
   10. Legacy activo (clases viejas todavía en uso)
   11. Responsive general

   REGLAS PARA DEVS:
   ─────────────────────────────────────────────────────────
   - Usar siempre variables --sc-* para colores, radios y sombras.
   - Nunca usar background:#fff o background:white — usar var(--sc-white).
   - Nuevos componentes van en sección 04 si son generales,
     en 07 si son exclusivos de la App Ciudadana,
     en 08 si son del Dashboard.
   - No agregar estilos a la sección 10 (Legacy). Si algo
     del legacy todavía se usa, migrarlo a su sección correcta.
========================================================= */

/* =========================================================
   01. DESIGN TOKENS / VARIABLES
========================================================= */

:root {
    /* Marca */
    --sc-green: #097009;
    --sc-green-dark: #023003;
    --sc-green-soft: #0b6b31;
    --sc-green-superblack: #002e13;
    --sc-green-light: #eef8f1;


    /* Isologo SC */
    --sc-sky: #028dc3;
    --sc-sky-dark: #0e648b;
    --sc-sky-darker: #112235;
    --sc-yellow: #f9ae23;
    --sc-yellow-dark: #f1851c;
    --sc-yellow-darker: #b97c11;
    --sc-apple-green:#80a22e;
    --sc-apple-green-dark:#536e29;
    --sc-apple-green-darker:#2b391b;
    --sc-admin-black: #0c0c0c;
    --sc-admin-gray: #2d2d2d;


    --sc-blue: #1594c9;
    --sc-orange: #f97316;
    --sc-red: #dc3545;
    --sc-purple: #7e57c2;
    --sc-purble-dark:#6f58a1;
    --sc-cyan: #19b9d2;
    --sc-teal: #00796b;

    /* Neutros */
    --sc-white: #ffffff;
    --sc-bg: #f5f7f9;
    --sc-card-bg: #ffffff;
    --sc-text: #1f2933;
    --sc-muted: #6b7280;
    --sc-border: #dfe5e8;
    --sc-border-dark: rgba(255, 255, 255, .30);

    /* Layout */
    --sc-header-gradient: linear-gradient(90deg, var(--sc-green-dark), var(--sc-green));
    --sc-sidebar-width: 86px;
    --sc-sidebar-expanded-width: 270px;
    --sc-header-height: 92px;
    --sc-header-mobile-height: 82px;
    --sc-bottom-nav-height: 82px;

    /* Radios */
    --sc-radius-sm: 10px;
    --sc-radius-md: 14px;
    --sc-radius-lg: 18px;
    --sc-radius-xl: 22px;
    --sc-radius-pill: 999px;

    /* Sombras */
    --sc-shadow-soft: 0 4px 18px rgba(15, 23, 42, .10);
    --sc-shadow-card: 0 10px 15px -3px rgba(0, 0, 0, .10);
    --sc-shadow-lg: 0 14px 36px rgba(15, 23, 42, .14);

    /* Capas z-index
       Regla: siempre usar estas variables, nunca números directos.
       ─────────────────────────────────────────────────────────────
       --sc-z-base      elementos con position relative/absolute dentro de un componente
       --sc-z-sticky    navs y headers sticky dentro de la página
       --sc-z-header    header principal de la plataforma
       --sc-z-overlay   overlay/backdrop semitransparente detrás de sidebars y modales
       --sc-z-sidebar   sidebar de navegación
       --sc-z-nav       bottom nav y elementos de navegación fija
       --sc-z-modal     modales y diálogos de confirmación
       --sc-z-preview   herramientas de desarrollo (preview móvil, devtools internos)
    */
    --sc-z-base:    1;
    --sc-z-sticky:  20;
    --sc-z-header:  1100;
    --sc-z-overlay: 1200;
    --sc-z-sidebar: 1300;
    --sc-z-nav:     1300;
    --sc-z-modal:   1400;
    --sc-z-preview: 9000;

    /* Escala tipográfica
       Regla: usar siempre estas variables para font-size.
       ─────────────────────────────────────────────────────────────
       --sc-text-xs    etiquetas, badges, timestamps, captions
       --sc-text-sm    texto de apoyo, subtítulos, helper text
       --sc-text-base  texto de cuerpo estándar
       --sc-text-md    texto de interfaz (labels, botones)
       --sc-text-lg    títulos de card, sección
       --sc-text-xl    títulos de página secundaria
       --sc-text-2xl   títulos de página principal, hero
       --sc-text-3xl   títulos hero grandes
    */
    --sc-text-xs:   .75rem;
    --sc-text-sm:   .875rem;
    --sc-text-base: 1rem;
    --sc-text-md:   1.05rem;
    --sc-text-lg:   1.25rem;
    --sc-text-xl:   1.5rem;
    --sc-text-2xl:  2rem;
    --sc-text-3xl:  2.5rem;

    /* Pesos tipográficos
       --sc-weight-normal   texto de cuerpo
       --sc-weight-medium   énfasis suave
       --sc-weight-bold     texto importante, labels
       --sc-weight-black    títulos, botones, números KPI
    */
    --sc-weight-normal: 500;
    --sc-weight-medium: 600;
    --sc-weight-bold:   700;
    --sc-weight-black:  900;

    /* Colores de estado para texto sobre fondos claros */
    --sc-warning-text:  #9a6700;
    --sc-danger-text:   #9f3446;
    --sc-success-text:  #0f6b35;

    /* Colores pastel 
       ────────────────────────────────────────────────────────────────────── */
    --sc-green-pastel:        #dcfce7;
    --sc-green-pastel-bg:     #f0fdf4;
    --sc-green-pastel-text:   var(--sc-green);

    --sc-blue-pastel:         #dbeafe;
    --sc-blue-pastel-bg:      #eff6ff;
    --sc-blue-pastel-text:    var(--sc-blue);

    --sc-orange-pastel:       #ffedd5;
    --sc-orange-pastel-bg:    #fff7ed;
    --sc-orange-pastel-text:  var(--sc-orange);

    --sc-gray-pastel:         #e5e7eb;
    --sc-gray-pastel-bg:      #f9fafb;
    --sc-gray-pastel-text:    #909090;

    --sc-violet-pastel:       #f3e8ff;
    --sc-violet-pastel-bg:    #faf5ff;
    --sc-violet-pastel-text:  #7e22ce;

    --sc-red-pastel:          #fde2e2;
    --sc-red-pastel-bg:       #fef2f2;
    --sc-red-pastel-text:     var(--sc-red);

    /* Amber — versión oscura del amarillo para contrastar sobre pastel claro */
    --sc-amber:               #f6aa1c;
    --sc-amber-dark:          #d78c01;
    --sc-yellow-pastel:       #fef3c7;
    --sc-yellow-pastel-bg:    #fffbeb;
    --sc-yellow-pastel-text:  #f39e00;

    /* Alias usados por .bg-soft-green/.bg-soft-blue/.bg-soft-red y otros
       componentes de estado (case-next-status-row, status-progress, etc.):
       antes no estaban definidos y el fondo quedaba transparente. Se
       reutilizan los tokens pastel ya existentes, sin crear colores nuevos. */
    --sc-bg-green-soft:       var(--sc-green-pastel);
    --sc-bg-blue-soft:        var(--sc-blue-pastel);
    --sc-bg-red-soft:         var(--sc-red-pastel);

    /* Prioridades / urgencias */
    --sc-priority-low: var(--sc-green);
    --sc-priority-low-bg: var(--sc-green-light);

    --sc-priority-medium: var(--sc-yellow);
    --sc-priority-medium-bg: #fff8e6;

    --sc-priority-high: #f97316;
    --sc-priority-high-bg: #fff3e8;

    /* Colores de estado de gestión — sistema unificado
       Cada estado tiene: bg (fondo suave), text (texto), dot (punto sólido)
       ─────────────────────────────────────────────────────────────────────
       Usados en .status-*, .status-dot-*, .citizen-status-*
    */
    --sc-status-registrado-bg:   #f0f0f0;
    --sc-status-registrado-text: #555555;
    --sc-status-registrado-dot:  #909090;

    --sc-status-analisis-bg:     #fff3cd;
    --sc-status-analisis-text:   #9a6700;
    --sc-status-analisis-dot:    #f6aa1c;

    --sc-status-programada-bg:   #fff0e6;
    --sc-status-programada-text: #c45000;
    --sc-status-programada-dot:  #f97316;

    --sc-status-ejecucion-bg:    #dff3ff;
    --sc-status-ejecucion-text:  #0c6fa8;
    --sc-status-ejecucion-dot:   #1594c9;

    --sc-status-finalizada-bg:   #dff4e7;
    --sc-status-finalizada-text: #0f6b35;
    --sc-status-finalizada-dot:  #097009;

    --sc-status-rechazada-bg:    #fde1e4;
    --sc-status-rechazada-text:  #9f3446;
    --sc-status-rechazada-dot:   #dc3545;

    --sc-status-reabierta-bg:    #f0e6ff;
    --sc-status-reabierta-text:  #6b21a8;
    --sc-status-reabierta-dot:   #7e22ce;

    /* Defaults del theming por rol (fallback = verde institucional,
    usado también para Ciudadano o cualquier vista sin rol asignado) */
    --sc-role-sidebar-bg: var(--sc-green-superblack);
    --sc-role-sidebar-active: var(--sc-green);
}


/* ── Overrides por rol ────────────────────────────────────────────────── */

body[data-role="SECR"] {
    --sc-role-sidebar-bg: var(--sc-sky-darker);       /* #112235 */
    --sc-role-sidebar-active: var(--sc-sky);          /* #028dc3 */
}

body[data-role="FUNC"] {
    --sc-role-sidebar-bg: var(--sc-apple-green-darker); /* #2b391b */
    --sc-role-sidebar-active: var(--sc-apple-green);  /* #80a22e */
}

body[data-role="OPER"] {
    --sc-role-sidebar-bg: var(--sc-yellow-darker);    /* #b97c11 */
    --sc-role-sidebar-active: var(--sc-yellow);       /* reusa tu --sc-yellow ajustado al isologo */
}

body[data-role="ADMIN"] {
    --sc-role-sidebar-bg: var(--sc-admin-black);      /* #0c0c0c */
    --sc-role-sidebar-active: var(--sc-admin-gray);   /* #2d2d2d */
}


/* =========================================================
   02. RESET / BASE
========================================================= */

body {
    margin: 0;
    background-color: var(--sc-bg);
    font-family: 'Montserrat', sans-serif;
    color: var(--sc-text);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

a {
    text-decoration: none;
}

img {
    max-width: 100%;
}

/* =========================================================
   03. PLATFORM LAYOUT
   Header / Sidebar / Bottom nav
========================================================= */

.platform-layout {
    min-height: 100vh;
    background: var(--sc-bg);
    font-family: 'Montserrat', sans-serif;
    color: var(--sc-text);
}

.platform-shell {
    min-height: 0;
}

.platform-main {
    padding-top: var(--sc-header-height);
    padding-left: var(--sc-sidebar-width);
    min-height: 100vh;
}

.platform-content {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding: 32px 36px 56px;
}

@media (max-width: 991px){
    .platform-content{
        padding: 24px 20px 40px;
    }
}

.platform-header {
    position: fixed;
    top: 0;
    left: var(--sc-sidebar-width);
    right: 0;
    height: var(--sc-header-height);
    z-index: var(--sc-z-header);
    background: var(--sc-white);
    border-bottom: 1px solid color-mix(in srgb, var(--sc-role-sidebar-bg) 14%, transparent);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
    color: var(--sc-white);
    display: flex;
    align-items: center;
}

.platform-header-inner {
    width: 100%;
    padding: 0 34px;
    display: flex;
    align-items: center;
    gap: 34px;
}

.platform-brand {
    display: flex;
    align-items: center;
    min-width: 260px;
    flex-shrink: 0;
}

.platform-logo {
    height: 32px;
    width: auto;
    display: block;
}





.platform-title {
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-right: auto;
    min-width: 0;
}

.platform-title-main {
    color: var(--sc-text-dark, #1a1a1a);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    line-height: 1.05;
    text-transform: uppercase;
    white-space: nowrap;
}

.platform-title-sub {
    color: var(--sc-text-dark, #1a1a1a);
    opacity: .6;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-normal);
    white-space: nowrap;
}

.platform-header-actions {
    display: flex;
    align-items: center;
    gap: 22px;
    margin-left: auto;
}

.platform-notification-btn,
.platform-logout-btn,
.platform-menu-btn {
    border: 0;
    background: transparent;
    color: var(--sc-role-sidebar-bg);
    padding: 0;
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.platform-notification-btn {
    width: 44px;
    height: 44px;
    font-size:var(--sc-text-xl);
}

.platform-badge {
    position: absolute;
    top: 1px;
    right: 0;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: var(--sc-radius-pill);
    background: var(--sc-yellow);
    color: var(--sc-white);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    display: flex;
    align-items: center;
    justify-content: center;
}

.platform-user-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--sc-role-sidebar-bg), var(--sc-role-sidebar-active));
    border: none;
    color: var(--sc-white);
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.platform-logout-btn {
    font-size:var(--sc-text-lg);
}

.platform-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    bottom: 0;
    width: var(--sc-sidebar-width);
    z-index: var(--sc-z-sidebar);
    background: var(--sc-role-sidebar-bg);
    color: var(--sc-white);
    display: flex;
    flex-direction: column;
    transition: width .24s ease;
    overflow: hidden;
}

.platform-sidebar:hover {
    width: var(--sc-sidebar-expanded-width);
}

.platform-sidebar-top {
    height: var(--sc-header-height);
    display: flex;
    align-items: center;
    justify-content: center;
}

.platform-sidebar-menu-btn {
    border: 0;
    background: transparent;
    color: var(--sc-white);
    font-size:var(--sc-text-xl);
    padding: 0;
}

.platform-sidebar-nav {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 22px 0;
}

.platform-sidebar-link,
.platform-sidebar-form button {
    width: 100%;
    min-height: 58px;
    border: 0;
    background: transparent;
    color: var(--sc-white);
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 0 28px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
    text-decoration: none;
    white-space: nowrap;
    opacity: .88;
    position: relative;
}

.platform-sidebar-link i,
.platform-sidebar-form button i {
    width: 30px;
    min-width: 30px;
    font-size:var(--sc-text-xl);
    line-height: 1;
}

.platform-sidebar-link span,
.platform-sidebar-form button span {
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity .18s ease, transform .18s ease;
}

.platform-sidebar:hover .platform-sidebar-link span,
.platform-sidebar:hover .platform-sidebar-form button span {
    opacity: 1;
    transform: translateX(0);
}

.platform-sidebar-link:hover,
.platform-sidebar-link.active,
.platform-sidebar-form button:hover {
    color: var(--sc-white);
    background: color-mix(in srgb, var(--sc-role-sidebar-active) 22%, transparent);
    opacity: 1;
}

.platform-sidebar-link.active::after {
    content: "";
    position: absolute;
    right: 18px;
    width: 4px;
    height: 22px;
    border-radius: var(--sc-radius-pill);
    background: var(--sc-role-sidebar-active);
}

.platform-sidebar-bottom {
    margin-top: auto;
    padding-bottom: 22px;
}

.platform-bottom-nav {
    display: none;
}

@media (max-width: 991px) {
    .platform-main {
        padding-top: var(--sc-header-mobile-height);
        padding-left: 0;
        padding-bottom: var(--sc-bottom-nav-height);
    }

    .platform-header {
        left: 0;
        height: var(--sc-header-mobile-height);
    }

    .platform-header-inner {
        padding: 0 18px;
        gap: 14px;
    }

    .platform-brand {
        min-width: auto;
        max-width: none;
        margin-right: 8px;
    }

    .platform-header-logo-full {
        display: none;
    }

    .platform-header-logo-mini {
        display: block;
        height: 36px;
        width: auto;
    }

    .platform-logo {
        height: 44px;
    }

    .platform-title {
        flex: 1;
        min-width: 0;
    }

    .platform-title-main {
        font-size:var(--sc-text-sm);
        line-height: 1.05;
        font-weight:var(--sc-weight-black);
        white-space: normal;
        overflow: visible;
        text-overflow: unset;
    }

    .platform-operations .platform-title-main {
        font-size:var(--sc-text-sm);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .platform-title-sub {
        display: block;
        font-size: 0;
        font-weight:var(--sc-weight-normal);
        letter-spacing: .14em;
        text-transform: uppercase;
        opacity: .78;
    }

    .platform-title-sub::before {
        content: "San Cayetano";
        font-size:var(--sc-text-xs);
        letter-spacing: .15em;
    }

    .platform-notification-btn {
        display: none;
    }

    .platform-user-avatar,
    .platform-logout-btn {
        display: inline-flex;
    }

    .platform-menu-btn {
        display: inline-flex;
        font-size:var(--sc-text-xl);
    }

    .platform-sidebar{
    width:min(82vw,320px);
    transform:translateX(-100%);
    transition:transform .24s ease;
    overflow:hidden;
    }

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

    .platform-sidebar:hover{
        width:min(82vw,320px);
    }

    /* Middle nav scrolls on its own; the bottom actions (Cerrar sesión / Ayuda)
       stay pinned and fully visible below it instead of requiring a scroll. */
    .platform-sidebar-nav:not(.platform-sidebar-bottom){
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    .platform-sidebar-bottom{
        flex: 0 0 auto;
        border-top: 1px solid rgba(255,255,255,.14);
        padding-top: 10px;
        padding-bottom: calc(16px + env(safe-area-inset-bottom));
    }

    .platform-sidebar-link span,
    .platform-sidebar-form button span{
        opacity:1;
        transform:none;
    }

    .platform-sidebar-overlay{
        position:fixed;
        inset:0;
        background:rgba(0,0,0,.35);
        z-index:var(--sc-z-overlay);
        display:none;
    }

    .platform-sidebar-overlay.is-open{
        display:block;
    }

    .platform-sidebar-link span,
    .platform-sidebar-form button span {
        opacity: 1;
        transform: none;
    }

    .platform-bottom-nav {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        height: var(--sc-bottom-nav-height);
        z-index: var(--sc-z-nav);
        background: var(--sc-white);
        border-top: 1px solid var(--sc-border);
        box-shadow: 0 -8px 24px color-mix(in srgb, var(--sc-text) 10%, transparent);
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        align-items: center;
    }

    .platform-bottom-link {
        color: var(--sc-muted);
        text-decoration: none;
        font-size:var(--sc-text-xs);
        font-weight:var(--sc-weight-black);
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 5px;
        position: relative;
    }

    .platform-bottom-link i {
        font-size:var(--sc-text-xl);
    }

    .platform-bottom-link.active {
        color: var(--sc-green-dark);
    }

    .platform-bottom-link-featured {
        width: 66px;
        height: 66px;
        border-radius: 50%;
        background: var(--sc-green-dark);
        color: var(--sc-white);
        display: flex;
        align-items: center;
        justify-content: center;
        margin: -34px auto 0;
        box-shadow: 0 8px 22px color-mix(in srgb, var(--sc-green-dark) 32%, transparent);
    }

    .platform-bottom-link-featured i {
        font-size:var(--sc-text-2xl);
    }

    .platform-bottom-link-featured span {
        display: none;
    }

    .platform-content {
        padding: 22px 16px 34px;
    }
}

@media (min-width: 992px) {
    .platform-menu-btn {
        display: none;
    }

    .platform-sidebar {
        transform: none;
    }

    .platform-sidebar:hover {
        width: var(--sc-sidebar-expanded-width);
    }

    .platform-sidebar:hover .platform-sidebar-link span,
    .platform-sidebar:hover .platform-sidebar-form button span {
        opacity: 1;
        transform: translateX(0);
    }

    .platform-sidebar-overlay {
        display: none !important;
    }
}

/* =========================================================
   04. COMPONENTES GENERALES
   Botones / Cards / Formularios / Tabs / Tablas / Acciones
========================================================= */

/* 04.01 BOTONES */

.btn,
.platform-btn{
    min-height:44px;
    border-radius:var(--sc-radius-pill);
    font-weight:var(--sc-weight-bold);
    padding:.75rem 1.5rem;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.5rem;
    transition:all .2s ease;
    text-decoration:none;
    line-height:1;
    border:1px solid transparent;
    box-shadow:none;
}

.btn:hover,
.platform-btn:hover{
    text-decoration:none;
}

.platform-btn i,
.btn i{
    color:inherit;
}

/* Botón deshabilitado (ej. "Cambiar de estado" en un estado terminal como
   Finalizada/Rechazada, que no tiene más transiciones posibles): se
   muestra igual que el resto de los botones de la fila, pero apagado y
   sin acción, en vez de desaparecer. */
.platform-btn:disabled,
.platform-btn[disabled]{
    opacity:.5;
    cursor:not-allowed;
    pointer-events:none;
}

/* .platform-btn-xs — faltaba en el sistema, se usaba en dashboard.html
   por todos lados pero nunca se había definido (por eso salía gigante) */
.platform-btn-xs{
    min-height: 30px !important;
    padding: 5px 12px !important;
    font-size: var(--sc-text-xs) !important;
    gap: 4px !important;
}

.platform-btn-xs i{
    font-size: .75rem;
}

/* Primario */

.platform-btn-primary,
.btn-primary{
    background:var(--sc-role-sidebar-bg);
    border-color:var(--sc-role-sidebar-bg);
    color:#fff;
    min-height:44px!important;
}

.platform-btn-primary:hover,
.btn-primary:hover{
    background:var(--sc-role-sidebar-active);
    border-color:var(--sc-role-sidebar-active);
    color:#fff;
    box-shadow:0 6px 18px rgba(2,48,3,.28);
    transform:translateY(-2px);
}

/* Outline principal */

.platform-btn-outline-primary,
.btn-outline-primary{
    background:var(--sc-white);
    border-color:var(--sc-role-sidebar-bg, var(--sc-green));
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
}

.platform-btn-outline-primary:hover,
.btn-outline-primary:hover{
    background:color-mix(in srgb, var(--sc-role-sidebar-bg, var(--sc-green)) 10%, white);
    border-color:var(--sc-role-sidebar-active, var(--sc-green-dark));
    color:var(--sc-role-sidebar-active, var(--sc-green-dark));
    box-shadow:0 6px 18px rgba(2,48,3,.18);
    transform:translateY(-2px);
}


/* Botón chico neutro */
.platform-btn-outline-muted,
a.platform-btn-outline-muted{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    color:var(--sc-green-dark);
}

.platform-btn-outline-muted:hover,
a.platform-btn-outline-muted:hover{
    background:var(--sc-green-light);
    border-color:var(--sc-green-dark);
    color:var(--sc-green-dark);
    box-shadow:0 6px 18px rgba(2,48,3,.18);
    transform:translateY(-2px);
}

/* Evita azul Bootstrap/link en botones outline y neutros */
.activity-header a.platform-btn:not(.platform-btn-primary):not(.platform-btn-danger),
.platform-form-card a.platform-btn:not(.platform-btn-primary):not(.platform-btn-danger){
    color:var(--sc-green-dark);
}

.activity-header a.platform-btn:not(.platform-btn-primary):not(.platform-btn-danger):hover,
.platform-form-card a.platform-btn:not(.platform-btn-primary):not(.platform-btn-danger):hover{
    color:var(--sc-green-dark);
}


.platform-link-action{
    min-height:52px;
    padding:.75rem 1rem;
    border:0;
    background:transparent;
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:.5rem;
    text-decoration:none;
}

.platform-link-action:hover{
    color:var(--sc-green);
    text-decoration:none;
}


/* 04.02 CARDS */

.platform-card,
.platform-form-card{
    background:var(--sc-card-bg);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    padding:32px;
    box-shadow:var(--sc-shadow-card);
}

.platform-card-soft{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    padding:24px;
    box-shadow:var(--sc-shadow-soft);
}

.card{
    border-radius:.75rem;
    transition:transform .2s ease, box-shadow .2s ease;
}

.card:hover{
    transform:translateY(-2px);
    box-shadow:var(--sc-shadow-card);
}

@media(max-width:768px){
    .platform-card,
    .platform-form-card{
        padding:24px;
    }
}

/* ================================================================
   PLATFORM ACTION CARD — componente unificado para acciones
   ================================================================ */

.platform-action-card {
    display: grid;
    grid-template-columns: 56px 1fr 24px;
    align-items: center;
    gap: 16px;
    padding: 20px;
    border-radius: var(--sc-radius-xl);
    text-decoration: none;
    color: #fff;
    transition: opacity .15s, transform .15s;
    border: none;
}
.platform-action-card:hover {
    opacity: .92;
    transform: translateY(-2px);
    color: #fff;
}
.platform-action-card h3 {
    margin: 0 0 4px;
    font-size: var(--sc-text-base);
    font-weight: var(--sc-weight-black);
    color: #fff;
}
.platform-action-card p {
    margin: 0;
    font-size: var(--sc-text-sm);
    color: rgba(255,255,255,.85);
}
.platform-action-card > .bi-chevron-right {
    color: rgba(255,255,255,.7);
    font-size: 1.1rem;
    justify-self: end;
}

/* Ícono circular */
.platform-action-icon {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: rgba(255,255,255,.2);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    color: #fff;
    flex-shrink: 0;
}

/* Variantes de color */
.platform-action-card--green  { background: var(--sc-green); }
.platform-action-card--blue   { background: var(--sc-blue); }
.platform-action-card--orange { background: var(--sc-orange); }
.platform-action-card--yellow { background: var(--sc-yellow); }

/* Variantes de color del ícono — pisa el fondo/color neutro de línea 1565 */
.platform-action-icon--green  { background: var(--sc-green-pastel)  !important; color: var(--sc-green)  !important; }
.platform-action-icon--blue   { background: var(--sc-blue-pastel)   !important; color: var(--sc-blue)   !important; }
.platform-action-icon--orange { background: var(--sc-orange-pastel) !important; color: var(--sc-orange) !important; }
.platform-action-icon--yellow { background: var(--sc-yellow-pastel) !important; color: var(--sc-yellow-dark) !important; }

/* ================================================================
   KPI CARD en grilla ciudadana — las stat cards de "Mis gestiones"
   usan kpi_card.html que ya existe, solo necesitamos la grilla
   ================================================================ */

.citizen-kpi-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

.citizen-action-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

@media (max-width: 767px) {
    .citizen-action-grid {
        grid-template-columns: 1fr;
    }
    .citizen-kpi-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}


/* 04.03 FORMULARIOS */

.platform-form-group{
    margin-bottom:28px;
}

.platform-form-label{
    display:block;
    margin-bottom:10px;
    color:var(--sc-green-dark);
    letter-spacing:.02em;
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
}

.platform-input,
.platform-textarea{
    width:100%;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-lg);
    background:var(--sc-white);
    color:var(--sc-text);
    font-size:var(--sc-text-base);
    outline:none;
}

.platform-input{
    height:54px;
    padding:0 16px;
}

.platform-textarea{
    min-height:180px;
    padding:18px;
    resize:vertical;
}

.platform-input:focus,
.platform-textarea:focus{
    border-color:var(--sc-green);
    box-shadow:0 0 0 4px color-mix(in srgb, var(--sc-green) 12%, transparent);
}

.platform-input.is-readonly{
    background:var(--sc-green-light);
    color:var(--sc-text);
    font-weight:var(--sc-weight-black);
    cursor:not-allowed;
}

.platform-form-row{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:20px;
}

.platform-form-actions{
    margin-top:34px;
    display:flex;
    justify-content:space-between;
    gap:14px;
}

.platform-field-help,
.citizen-field-help{
    display:block;
    margin-top:8px;
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
}

@media(max-width:768px){
    .platform-form-row{
        grid-template-columns:1fr;
    }

    .platform-form-actions{
        flex-direction:column-reverse;
    }

    .platform-form-actions .btn,
    .platform-form-actions .platform-btn{
        width:100%;
    }
}

/* 04.04 RADIOS */

.platform-radio-group{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:12px;
}

.platform-radio-card{
    min-height:74px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-lg);
    background:var(--sc-white);
    padding:14px 16px;
    display:grid;
    grid-template-columns:22px 1fr;
    column-gap:10px;
    align-items:center;
    cursor:pointer;
}

.platform-radio-card input{
    margin:0;
    grid-row:1 / 3;
}

.platform-radio-card strong,
.platform-radio-card span{
    display:block;
}

.platform-radio-card strong{
    margin:0;
    color:var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
}

.platform-radio-card span{
    margin:2px 0 0;
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.platform-radio-card:hover{
    border-color:var(--sc-green);
}

.platform-radio-card:has(input:checked){
    border-color:var(--sc-green);
    background:var(--sc-green-light);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--sc-green) 10%, transparent);
}

.platform-radio-card.urgency-low input{
    accent-color:var(--sc-priority-low);
}

.platform-radio-card.urgency-low:has(input:checked){
    border-color:var(--sc-priority-low);
    background:var(--sc-priority-low-bg);
}

.platform-radio-card.urgency-medium input{
    accent-color:var(--sc-priority-medium);
}

.platform-radio-card.urgency-medium:has(input:checked){
    border-color:var(--sc-priority-medium);
    background:var(--sc-priority-medium-bg);
}

.platform-radio-card.urgency-high input{
    accent-color:var(--sc-priority-high);
}

.platform-radio-card.urgency-high:has(input:checked){
    border-color:var(--sc-priority-high);
    background:var(--sc-priority-high-bg);
}

@media(max-width:768px){
    .platform-radio-group{
        grid-template-columns:1fr;
    }

    .platform-radio-card{
        min-height:62px;
        padding:12px 14px;
    }
}

/* 04.05 PAGE HEAD */

.platform-page-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:2rem;
}

.platform-page-head h1{
    margin:4px 0 8px;
    color:var(--sc-text);
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
}

.platform-page-head p{
    margin:0;
    color:var(--sc-muted);
}

.platform-page-head .platform-btn{
    flex-shrink:0;
}

@media(max-width:768px){
    .platform-page-head{
        flex-direction:column;
    }
}

/* ── Header SancApp citizen ─────────────────────────── */
.citizen-brand {
    display: flex;
    align-items: center;
    text-decoration: none;
}
.citizen-header-logo-full {
    height: 44px;
    width: auto;
    display: block;
}
.citizen-header-logo-mini {
    height: 36px;
    width: auto;
    display: none;
}
.platform-header-spacer {
    flex: 1;
}
/* En mobile: mostrar solo el ícono del logo */
@media (max-width: 767px) {
    .citizen-header-logo-full { display: none; }
    .citizen-header-logo-mini { display: block; }
}

/* 04.06 TABS */

.platform-page-narrow,
.citizen-profile-page{
    width:100%;
    max-width:1120px;
    margin:0 auto;
    padding-bottom:96px;
}

.platform-tabs,
.citizen-profile-nav{
    position:sticky;
    top:calc(var(--sc-header-height) + 12px);
    z-index:var(--sc-z-sticky);
    display:grid;
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:10px;
    margin:18px 0 22px;
    padding:8px;
    border-radius:var(--sc-radius-pill);
    background:color-mix(in srgb, var(--sc-bg) 82%, transparent);
    backdrop-filter:blur(10px);
}

.platform-tab,
.citizen-profile-nav-btn{
    min-height:48px;
    padding:0 16px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-pill);
    background:var(--sc-white);
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-bold);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
}

.platform-tab.is-active,
.citizen-profile-nav-btn.is-active{
    background:var(--sc-green-dark);
    border-color:var(--sc-green-dark);
    color:var(--sc-white);
}

.platform-tab-panel,
.citizen-profile-tab-panel,
.citizen-family-panel{
    display:none;
}

.platform-tab-panel.is-active,
.citizen-profile-tab-panel.is-active,
.citizen-family-panel.is-active{
    display:block;
}

@media(max-width:768px){
    .platform-tabs,
    .citizen-profile-nav{
        top:calc(var(--sc-header-mobile-height) + 8px);
        display:flex;
        overflow-x:auto;
        border-radius:var(--sc-radius-xl);
        scrollbar-width:none;
        gap:6px;
        padding:6px;
        background: var(--sc-bg);
        backdrop-filter: none;
    }
    .platform-tabs::-webkit-scrollbar,
    .citizen-profile-nav::-webkit-scrollbar{
        display:none;
    }
    .platform-tab,
    .citizen-profile-nav-btn{
        flex:1 1 0;
        min-width:100px;
        min-height:56px;
        font-size:var(--sc-text-xs);
        flex-direction:column;
        gap:4px;
        padding:8px 10px;
    }
    .platform-tab i,
    .citizen-profile-nav-btn i{
        font-size:1.1rem;
    }

    .platform-tabs,
    .citizen-profile-nav {
        background: var(--sc-bg);
        backdrop-filter: none;
    }
}

/* 04.07 TABLAS */

.platform-table-wrap{
    width:100%;
}

.platform-table{
    width:100%;
}

.platform-table th{
    padding:1rem;
    color:var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    border-bottom:1px solid var(--sc-border);
}

.platform-table td{
    padding:1rem;
    vertical-align:middle;
}

.platform-table tbody tr:nth-child(odd){
    background:var(--sc-white);
}

.platform-table tbody tr:nth-child(even){
    background:var(--sc-bg);
}

.platform-table tbody tr:hover{
    background:var(--sc-green-light);
}

.platform-table-actions{
    display:flex;
    justify-content:flex-end;
    align-items:center;
    gap:.45rem;
}

.platform-icon-action{
    width:38px;
    height:38px;
    border:1px solid var(--sc-border);
    border-radius:50%;
    background:var(--sc-white);
    color:var(--sc-green-dark);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-size:var(--sc-text-md);
}

.platform-icon-action:hover{
    background:var(--sc-green-light);
    border-color:var(--sc-green-dark);
    color:var(--sc-green-dark);
}

.platform-actions-menu{
    border:1px solid var(--sc-border);
    border-radius:14px;
    padding:.45rem;
    box-shadow:var(--sc-shadow-card);
}

.platform-actions-menu .dropdown-item{
    border-radius:10px;
    font-weight:var(--sc-weight-bold);
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.65rem .75rem;
}

.platform-actions-menu .dropdown-item i{
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
}

/* Badge de TIPO de gestión (Reclamo/Solicitud) en la card de Información:
   usa el color del ROL del usuario logueado -- no varía según el tipo de
   gestión (eso ya se distingue con el texto "Reclamo"/"Solicitud"). */
.case-detail-role-badge{
    background:color-mix(in srgb, var(--sc-role-sidebar-bg, var(--sc-green)) 12%, white);
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
}

@media(max-width:768px){
    .platform-table thead{
        display:none;
    }

    .platform-table,
    .platform-table tbody,
    .platform-table tr,
    .platform-table td{
        display:block;
        width:100%;
    }

    .platform-table tr{
        padding:1rem 1.1rem;
        background:var(--sc-white);
    }

    .platform-table tbody tr:nth-child(even){
        background:var(--sc-bg);
    }

    .platform-table td{
        display:block;
        padding:.6rem 0;
        border:none;
        overflow-wrap:break-word;
        word-break:break-word;
    }

    .platform-table td:not(:last-child){
        border-bottom:1px solid rgba(0,0,0,.07);
    }

    .platform-table td::before{
        content:attr(data-label);
        display:block;
        margin-bottom:.3rem;
        color:var(--sc-muted);
        font-weight:var(--sc-weight-black);
        font-size:var(--sc-text-xs);
        text-transform:uppercase;
        letter-spacing:.05em;
    }

    .platform-table-actions{
        justify-content:flex-start;
    }
}

/* 04.08 SUMMARY / READONLY */

.platform-summary-list{
    display:grid;
    gap:22px;
}

.platform-summary-list > div{
    border-bottom:1px solid var(--sc-border);
    padding-bottom:18px;
}

.platform-summary-list > div:last-child{
    border-bottom:0;
}

.platform-summary-list strong{
    display:block;
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-bold);
    margin-bottom:6px;
}

.platform-summary-list p{
    margin:0;
    color:var(--sc-text);
    font-weight:var(--sc-weight-medium);
}

.platform-summary-list small{
    color:var(--sc-muted);
}

.platform-readonly-grid,
.citizen-readonly-grid{
    display:grid;
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:12px;
}

.platform-readonly-item,
.citizen-readonly-grid div{
    background:var(--sc-green-light);
    border-radius:var(--sc-radius-lg);
    padding:14px 16px;
}

.platform-readonly-item span,
.citizen-readonly-grid span{
    display:block;
    color:var(--sc-muted);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
}

.platform-readonly-item strong,
.citizen-readonly-grid strong{
    display:block;
    margin-top:4px;
    color:var(--sc-text);
    font-weight:var(--sc-weight-black);
}

@media(max-width:991px){
    .platform-readonly-grid,
    .citizen-readonly-grid{
        grid-template-columns:repeat(2, minmax(0, 1fr));
    }
}

@media(max-width:575px){
    .platform-readonly-grid,
    .citizen-readonly-grid{
        grid-template-columns:1fr;
    }
}

/* 04.09 EMPTY STATES */

.platform-empty-state{
    grid-column:1 / -1;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    background:var(--sc-bg);
    padding:30px;
    text-align:center;
    color:var(--sc-muted);
}

.platform-empty-state i{
    display:block;
    margin-bottom:10px;
    color:var(--sc-green-dark);
    font-size:var(--sc-text-2xl);
}

.platform-empty-state strong{
    display:block;
    margin-bottom:6px;
    color:var(--sc-text);
    font-weight:var(--sc-weight-black);
}

/* 04.10 ACTION CARDS */

.platform-action-grid,
.citizen-quick-grid,
.platform-area-grid{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:16px;
}

/* platform-area-card y platform-category-card — cards de plataforma COM */
.platform-area-card,
.platform-category-card{
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    background:var(--sc-white);
    color:var(--sc-text);
    text-decoration:none;
    transition:all .2s ease;
    padding:16px 18px;
    display:grid;
    grid-template-columns:1fr 20px;
    gap:8px;
    align-items:center;
}

.platform-area-card{
    padding:22px;
    display:grid;
    grid-template-columns:56px minmax(0, 1fr) 22px;
    gap:16px;
    align-items:center;
    box-shadow:var(--sc-shadow-soft);
}

.platform-area-card:hover,
.platform-category-card:hover{
    border-color:var(--sc-green);
    background:var(--sc-green-light);
    color:var(--sc-text);
    transform:translateY(-2px);
}

.platform-action-icon,
.citizen-quick-icon,
.platform-area-icon{
    width:56px;
    height:56px;
    border-radius:var(--sc-radius-lg);
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:var(--sc-text-xl);
}

.platform-area-card strong{
    margin:0 0 6px;
    color:var(--sc-text);
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
}

.platform-area-card span{
    margin:0;
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.platform-area-card > i{
    color:var(--sc-green-dark);
}

.platform-category-grid{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:12px;
}



.platform-category-card strong,
.platform-category-card span{
    display:block;
}

.platform-category-card strong{
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
}

.platform-category-card span{
    margin-top:4px;
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.platform-category-card i{
    color:var(--sc-green-dark);
}

@media(max-width:991px){
    .platform-action-grid,
    .citizen-quick-grid,
    .platform-area-grid{
        grid-template-columns:1fr;
    }
}

@media(max-width:768px){
    .platform-category-grid{
        grid-template-columns:1fr;
    }
}

/* 04.11 UPLOADS */

.platform-file-input{
    display:none;
}

.platform-upload-box{
    min-height:160px;
    border:2px dashed var(--sc-border);
    border-radius:var(--sc-radius-xl);
    background:var(--sc-bg);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:10px;
    padding:24px;
    cursor:pointer;
    text-align:center;
    transition:all .2s ease;
}

.platform-upload-box:hover{
    border-color:var(--sc-green);
    background:var(--sc-green-light);
}

.platform-upload-box i{
    color:var(--sc-green-dark);
    font-size:var(--sc-text-2xl);
}

.platform-upload-box strong{
    color:var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.platform-upload-box span{
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.platform-upload-box-secondary{
    min-height:120px;
}

.platform-upload-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1.5rem;
}

.platform-upload-preview{
    display:flex;
    flex-wrap:wrap;
    gap:1rem;
    margin-top:1rem;
}

.platform-thumb-card{
    width:140px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-lg);
    overflow:hidden;
    background:var(--sc-white);
}

.platform-thumb-image-wrap{
    width:100%;
    height:110px;
    overflow:hidden;
}

.platform-thumb-image-wrap img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
}

.platform-thumb-remove{
    width:100%;
    border:0;
    border-top:1px solid var(--sc-border);
    background:var(--sc-white);
    color:var(--sc-red);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    padding:9px 6px;
}

.platform-file-preview{
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-lg);
    padding:14px;
    display:grid;
    grid-template-columns:32px 1fr 32px;
    gap:10px;
    align-items:center;
    background:var(--sc-white);
}

.platform-file-preview i{
    color:var(--sc-red);
    font-size:var(--sc-text-xl);
}

.platform-file-preview span{
    color:var(--sc-text);
    font-weight:var(--sc-weight-bold);
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

@media(max-width:768px){
    .platform-upload-grid{
        grid-template-columns:1fr;
    }
}

/* 04.12 NOTAS / CHIPS */

.platform-info-note,
.citizen-info-note{
    margin:22px 0;
    padding:14px 16px;
    border-radius:var(--sc-radius-lg);
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    display:flex;
    gap:10px;
    align-items:center;
}

.platform-chip-list,
.citizen-tags{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:10px;
}

.platform-chip,
.citizen-tags span{
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    border-radius:var(--sc-radius-pill);
    padding:5px 10px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
}

/* 04.13 SEARCH */

.platform-search-field{
    position:relative;
    display:flex;
    align-items:center;
}

.platform-search-field > i{
    position:absolute;
    left:16px;
    z-index:var(--sc-z-base);
    color:var(--sc-muted);
    font-size:var(--sc-text-lg);
}

.platform-search-field .platform-input{
    padding-left:46px;
    padding-right:56px;
}

.platform-search-field button{
    position:absolute;
    right:8px;
    width:42px;
    height:42px;
    border:0;
    border-radius:var(--sc-radius-pill);
    background:var(--sc-green-dark);
    color:var(--sc-white);
    display:inline-flex;
    align-items:center;
    justify-content:center;
}

.platform-search-field button:hover{
    background:var(--sc-green);
}

.platform-search-suggestions{
    display:none;
    margin-top:8px;
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-lg);
    box-shadow:var(--sc-shadow-card);
    overflow:hidden;
}

.platform-search-suggestions.show{
    display:block;
}

.platform-search-suggestion{
    width:100%;
    border:0;
    background:var(--sc-white);
    padding:12px 16px;
    text-align:left;
    color:var(--sc-text);
    font-weight:var(--sc-weight-medium);
}

.platform-search-suggestion:hover{
    background:var(--sc-green-light);
}

/* 04.14 FLUJOS */

:root{
    --flow-reclamo:var(--sc-orange);
    --flow-solicitud:var(--sc-blue);
    --flow-tramite:var(--sc-green);
}

.platform-flow-reclamo{
    --flow-color:var(--sc-green-dark);
    --flow-color-hover:var(--sc-green);
    --flow-color-light:var(--sc-green-light);
}

.platform-flow-solicitud{
    --flow-color:var(--sc-blue);
    --flow-color-hover:#0e82b0;
    --flow-color-light:rgba(21,148,201,.10);
}

.platform-flow-reclamo .platform-form-label,
.platform-flow-solicitud .platform-form-label{
    color:var(--flow-color);
}

.platform-flow-reclamo .platform-selected-card,
.platform-flow-solicitud .platform-selected-card{
    background:var(--flow-color-light);
    border-color:color-mix(in srgb, var(--flow-color) 28%, var(--sc-border));
}

.platform-flow-reclamo .platform-selected-card i,
.platform-flow-solicitud .platform-selected-card i{
    color:var(--flow-color);
}

.flow-title{
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform:uppercase;
    letter-spacing:.08em;
}

.flow-title.reclamo{
    color:var(--flow-reclamo);
}

.flow-title.solicitud{
    color:var(--flow-solicitud);
}

.flow-title.tramite{
    color:var(--flow-tramite);
}

/* =========================================================
   04.14 FLUJOS / STEP PAGES
========================================================= */

.platform-step-page,
.platform-step-page-wide{
    width:100%;
    max-width:1120px;
    margin:0 auto;
    padding:34px 20px 90px;
}

.platform-step-page{
    max-width:960px;
}

.platform-step-head{
    width:100%;
    margin:0 0 26px;
    display:grid;
    grid-template-columns:44px minmax(0, 1fr);
    align-items:start;
    gap:18px;
}

.platform-step-title{
    text-align:left;
}

.platform-step-title h1{
    margin:4px 0 0;
    color:var(--sc-text);
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    line-height:1.15;
}

.platform-step-page > .platform-form-card,
.platform-step-page-wide > .platform-form-card{
    width:100%;
}

.platform-step-page > .platform-form-card{
    max-width:860px;
    margin:0 auto;
}

.platform-step-page-wide > .platform-form-card{
    max-width:1120px;
    margin:0 auto;
}

.platform-back-btn{
    width:44px;
    height:44px;
    border:1px solid var(--sc-border);
    border-radius:14px;
    background:var(--sc-white);
    color:var(--sc-green-dark);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    font-size:var(--sc-text-md);
    box-shadow:var(--sc-shadow-soft);
}

.platform-back-inline{
    min-height:42px;
    margin:0 0 22px;
    padding:0;
    border:0;
    background:transparent;
    color:var(--sc-green-dark);
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-weight:var(--sc-weight-black);
}

.platform-back-inline:hover,
.platform-back-btn:hover{
    color:var(--sc-green);
}

.platform-categories-step .platform-section-title{
    margin-bottom:18px;
}

@media(max-width:768px){
    .platform-step-page,
    .platform-step-page-wide{
        padding:26px 16px 90px;
    }

    .platform-step-title h1{
        font-size:var(--sc-text-xl);
    }
}

/* =========================================================
   TÍTULOS DE SECCIÓN
========================================================= */

.platform-section-title{
    margin:0;
    color:var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    line-height:1.1;
    padding-bottom: 16px;
}

.platform-section-subtitle{
    margin-top:.5rem;
    color:var(--sc-muted);
    font-size:var(--sc-text-base);
}

.platform-card-title{
    margin:0;
    color:var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
}

@media(max-width:768px){

    .platform-section-title{
        font-size:var(--sc-text-xl);
    }

}



/* NOTA DE LIMPIEZA:
   Se eliminó el bloque duplicado "TABLAS GENERALES" porque
   repetía .platform-table, .platform-table-actions,
   .platform-icon-action y responsive mobile ya definidos
   en 04.07 TABLAS.
*/

/* =========================================================
   10. LEGACY ACTIVO / TEMPLATE-SPECIFIC
   ---------------------------------------------------------
   Desde acá quedan estilos que todavía pueden depender de
   templates actuales. No agregar parches nuevos acá.

   Revisar por template y migrar progresivamente a:
   - .platform-btn
   - .platform-card / .platform-form-card
   - .platform-tabs / .platform-tab
   - .platform-table
   - .activity-badge
   - .platform-input / .platform-form-group

   Cuando un template ya use componentes genéricos, borrar
   su bloque legacy correspondiente.
========================================================= */

/* =========================================================
   10. LOGIN MUNICIPAL
   ========================================================= */

body:not(.authenticated) {
    background: #ffffff !important;
}

body:not(.authenticated) main.container {
    max-width: 100%;
    padding: 0;
    margin: 0 !important;
}

body:not(.authenticated) 

.login-page-wrapper {
    min-height: calc(100vh - 240px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 80px 20px 20px;
    position: relative;
    z-index: var(--sc-z-base);
}

.login-card-municipal {
    width: 100%;
    max-width: 520px;
    background:var(--sc-white);
    border-radius: 22px;
    padding: 45px;
    box-shadow: 0 15px 40px rgba(15,23,42,.08);
    position: relative;
    z-index: var(--sc-z-base);
}

.login-card-municipal .text-center {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.login-logo {
    height: 55px;
    width: auto;
    display: block;
    margin: 0 auto 24px;
}

.login-title {
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    color: var(--sc-green);
    line-height: 1.15;
    margin-bottom: 10px;
    text-align: center;
}

.login-subtitle {
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    margin-bottom: 35px;
    text-align: center;
}

.login-btn {
    width: 100%;
    min-height: 58px;
    border: none;
    border-radius: 999px;
    background: var(--sc-green);
    color: #fff;
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
    letter-spacing: .3px;
    cursor: pointer;
    transition: all .2s ease;
}

.login-btn:hover {
    background: var(--sc-green-dark);
    color: #fff;
    box-shadow:0 6px 18px rgba(2,48,3,.28);
    transform:translateY(-2px);
}

.login-landscape {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: 320px;
    background-image: url("../img/background-login.png");
    background-repeat: no-repeat;
    background-position: center bottom;
    background-size: 100% auto;
    z-index: var(--sc-z-base);
    pointer-events: none;
}

.login-links {
    margin-top: 26px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: center;
}

.login-link {
    color: var(--sc-green-dark);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
    text-decoration: none;
}

.login-link:hover {
    color: var(--sc-green);
    text-decoration: underline;
}

.login-link-help {
    font-size:var(--sc-text-sm);
    color: var(--sc-muted);
}

.login-form-help {
    margin: 0 0 14px;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    text-align: center;
}
/* =========================================================
   ACCESOS RÁPIDOS / ACTION CARDS
========================================================= */

.citizen-quick-grid{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:18px;
}

.citizen-quick-card{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    padding:22px;
    min-height:132px;
    display:grid;
    grid-template-columns:58px minmax(0, 1fr) 22px;
    gap:16px;
    align-items:center;
    color:var(--sc-text);
    box-shadow:var(--sc-shadow-soft);
    transition:all .2s ease;
}

.citizen-quick-card:hover{
    transform:translateY(-2px);
    box-shadow:var(--sc-shadow-card);
    border-color:var(--sc-green);
    color:var(--sc-text);
}

.citizen-quick-icon{
    width:58px;
    height:58px;
    border-radius:18px;
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:var(--sc-text-xl);
}

.citizen-quick-card h3{
    margin:0 0 6px;
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
}

.citizen-quick-card p{
    margin:0;
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
    line-height:1.35;
}

.citizen-quick-card > i{
    color:var(--sc-green-dark);
    font-size:var(--sc-text-lg);
}

@media (max-width:991px){
    .citizen-quick-grid{
        grid-template-columns:1fr;
    }
}

@media (max-width:575px){
    .citizen-quick-card{
        grid-template-columns:50px minmax(0, 1fr) 18px;
        padding:18px;
        min-height:auto;
    }

    .citizen-quick-icon{
        width:50px;
        height:50px;
        border-radius:16px;
    }
}

/* =========================================================
   MIS TURNOS - CARDS TIPO TURNERO
========================================================= */

.turnos-card-list{
    display:flex;
    flex-direction:column;
    gap:18px;
}

.turno-card{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    padding:26px;
    box-shadow:var(--sc-shadow-soft);
    display:grid;
    grid-template-columns:96px minmax(0, 1fr) auto;
    gap:24px;
    align-items:center;
}

.turno-date{
    min-height:100px;
    border-radius:var(--sc-radius-xl);
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
}

.turno-date strong{
    font-size:var(--sc-text-2xl);
    line-height:1;
    font-weight:var(--sc-weight-black);
}

.turno-date span{
    margin-top:6px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform:uppercase;
}

.turno-info h3{
    margin:0 0 6px;
    color:var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
}

.turno-info p{
    margin:0 0 12px;
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
}

.turno-meta{
    display:flex;
    flex-wrap:wrap;
    gap:12px 18px;
}

.turno-meta span{
    color:var(--sc-muted);
    font-weight:var(--sc-weight-bold);
    font-size:var(--sc-text-sm);
}

.turno-meta i{
    color:var(--sc-green-dark);
    margin-right:5px;
}

.turno-status{
    display:flex;
    align-items:center;
    gap:14px;
    flex-wrap:wrap;
    justify-content:flex-end;
}

@media (max-width:768px){
    .turno-card{
        grid-template-columns:1fr;
    }

    .turno-date{
        width:96px;
    }

    .turno-status{
        justify-content:flex-start;
    }
}

/* APP MODAL — modales de confirmación y cancelación */
.app-modal{
    position:fixed;
    inset:0;
    z-index:var(--sc-z-modal);
    display:none;
    align-items:center;
    justify-content:center;
    padding:24px;
}

.app-modal.is-open{
    display:flex;
}

.app-modal-backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,23,42,.62);
    backdrop-filter:blur(4px);
}

.app-modal-dialog{
    position:relative;
    z-index:var(--sc-z-base);
    width:100%;
    max-width:560px;
    background:var(--sc-white);
    border-radius:28px;
    padding:32px;
    box-shadow:0 24px 70px rgba(0,0,0,.28);
}

.app-modal-close{
    position:absolute;
    top:18px;
    right:18px;
    width:42px;
    height:42px;
    border:0;
    border-radius:50%;
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
}

.app-modal-head h3{
    margin:8px 0;
    font-size:var(--sc-text-xl);
    font-weight:var(--sc-weight-black);
}

.app-modal-eyebrow{
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    text-transform:uppercase;
    font-size:var(--sc-text-sm);
}

.app-modal-row{
    background:var(--sc-green-light);
    border-radius:16px;
    padding:14px 16px;
    display:flex;
    justify-content:space-between;
    gap:16px;
    margin-bottom:10px;
}

.app-modal-actions{
    margin-top:22px;
    display:flex;
    justify-content:flex-end;
    gap:12px;
}

/* OBTENER TURNO — página de reserva de turnos */
.app-booking-page{
    max-width:1120px;
    margin:0 auto;
}

.app-filter-card{
    margin-top:26px;
}

.app-filter-grid{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:22px 28px;
    align-items:end;
}

.turno-radio-row{
    min-height:54px;
    display:flex;
    align-items:center;
    gap:18px;
}

.turno-radio-row label{
    display:flex;
    align-items:center;
    gap:8px;
    font-weight:var(--sc-weight-black);
    color:var(--sc-muted);
}

.turno-radio-row input{
    width:20px;
    height:20px;
    accent-color:var(--sc-green-dark);
}

.turno-filter-actions{
    display:flex;
    align-items:center;
    gap:18px;
}

.turno-clear-link{
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
}

.turno-results-head{
    margin:32px 0 18px;
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:20px;
}

.turno-results-head h2{
    margin:0;
    font-size:var(--sc-text-xl);
    font-weight:var(--sc-weight-black);
}

.turno-results-head p{
    margin:0;
    color:var(--sc-muted);
}

.turno-schedule-day-header{
    display:flex;
    align-items:center;
    gap:14px;
    margin-bottom:14px;
}

.turno-icon-box{
    width:54px;
    height:54px;
    border-radius:18px;
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:var(--sc-text-xl);
}

.turno-schedule-card{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    box-shadow:var(--sc-shadow-soft);
    overflow:hidden;
}

.turno-schedule-row{
    display:grid;
    grid-template-columns:minmax(280px,.85fr) minmax(280px,1fr) 180px;
    align-items:center;
}

.turno-professional,
.turno-time-picker,
.turno-schedule-action{
    min-height:122px;
    padding:24px 28px;
    display:flex;
    align-items:center;
}

.turno-professional{
    gap:16px;
}

.turno-time-picker{
    flex-direction:column;
    align-items:flex-start;
    justify-content:center;
    border-left:1px solid var(--sc-border);
}

.turno-schedule-action{
    justify-content:center;
    border-left:1px solid var(--sc-border);
}

.turno-avatar{
    width:64px;
    height:64px;
    border-radius:50%;
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    display:flex;
    align-items:center;
    justify-content:center;
    font-weight:var(--sc-weight-black);
}

.turno-professional h4{
    margin:0 0 4px;
    font-weight:var(--sc-weight-black);
}

.turno-professional p{
    margin:0 0 8px;
    color:var(--sc-muted);
}

.turno-tag-list{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
}

.turno-tag-list span{
    padding:5px 10px;
    border-radius:999px;
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
}

.turno-time-picker > span{
    margin-bottom:10px;
    color:var(--sc-muted);
    font-weight:var(--sc-weight-black);
}

.turno-time-list{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}

.turno-time-btn{
    min-height:42px;
    padding:0 18px;
    border-radius:999px;
    border:1px solid var(--sc-border);
    background:var(--sc-white);
    color:var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
}

.turno-time-btn.is-selected,
.turno-time-btn:hover{
    background:var(--sc-green-dark);
    color:#fff;
}

.turno-help-row{
    margin-top:28px;
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    box-shadow:var(--sc-shadow-soft);
    padding:24px;
    display:grid;
    grid-template-columns:56px 1fr auto;
    gap:18px;
    align-items:center;
}

@media(max-width:1199px){
    .app-filter-grid{
        grid-template-columns:1fr 1fr;
    }

    .turno-schedule-row{
        grid-template-columns:1fr;
    }

    .turno-time-picker,
    .turno-schedule-action{
        border-left:0;
        border-top:1px solid var(--sc-border);
    }
}

@media(max-width:768px){
    .app-filter-grid,
    .turno-help-row{
        grid-template-columns:1fr;
    }
}

/* =========================================================
   TURNERO - BOTONES APP Y CONFIRMACIÓN
========================================================= */

.app-btn{
    min-height: 52px;
    border-radius: var(--sc-radius-pill);
    padding: .78rem 1.55rem;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    font-weight:var(--sc-weight-black);
    text-decoration: none;
    cursor: pointer;
    transition: all .2s ease;
    font-family: inherit;
    font-size:var(--sc-text-sm);
}

.app-btn-primary{
    background: var(--sc-green);
    border-color: var(--sc-green);
    color: #fff;
}

.app-btn-primary:hover{
    background: var(--sc-green-dark);
    border-color: var(--sc-green-dark);
    color: #fff;
    box-shadow:0 6px 18px rgba(2,48,3,.28);
    transform:translateY(-2px);
}

.app-btn-outline{
    background:var(--sc-white);
    border-color: var(--sc-green-dark);
    color: var(--sc-green-dark);
}

.app-btn-outline:hover{
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    box-shadow:0 6px 18px rgba(2,48,3,.18);
    transform:translateY(-2px);
}

.app-btn-danger-soft{
    background: #fff1f2;
    border-color: #f0a8b5;
    color:var(--sc-danger-text);
}

.app-btn-danger-soft:hover{
    background:var(--sc-bg-red-soft);
    color:var(--sc-danger-text);
}

.app-btn-fixed{
    min-width: 180px;
}

/* Modal actions */
.app-modal-actions{
    margin-top: 24px;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.app-modal-actions .app-btn{
    min-width: 130px;
}

/* Confirmación */
.app-page{
    width: 100%;
    max-width: 980px;
    margin: 0 auto;
    padding: 42px 0 80px;
}

.app-confirm-card{
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 32px;
    padding: 56px 48px;
    box-shadow: var(--sc-shadow-lg);
    text-align: center;
}

.app-confirm-icon{
    width: 86px;
    height: 86px;
    border-radius: 28px;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-2xl);
    margin-bottom: 24px;
}

.app-confirm-card h1{
    margin: 0 0 12px;
    font-size:var(--sc-text-3xl);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.app-confirm-text{
    margin: 0 0 30px;
    color: var(--sc-muted);
    font-size:var(--sc-text-md);
}

.app-confirm-summary{
    max-width: 720px;
    margin: 0 auto 32px;
    padding: 24px;
    border-radius: 22px;
    background: var(--sc-green-light);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.app-confirm-summary strong{
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.app-confirm-summary span{
    color: var(--sc-muted);
    font-weight:var(--sc-weight-black);
}

.app-actions-center{
    display: flex;
    justify-content: center;
    gap: 14px;
    flex-wrap: wrap;
}

/* Mobile */
@media(max-width: 768px){
    .app-page{
        padding: 24px 0 90px;
    }

    .app-confirm-card{
        padding: 34px 22px;
        border-radius: 26px;
    }

    .app-confirm-card h1{
        font-size:var(--sc-text-2xl);
    }

    .app-actions-center,
    .app-modal-actions{
        flex-direction: column;
        align-items: stretch;
    }

    .app-btn,
    .app-btn-fixed{
        width: 100%;
    }
}

/* =========================================================
   AJUSTES TURNERO SALUD - FILTROS / AYUDA
========================================================= */

/* Desktop: filtro más compacto */
@media (min-width: 992px){
    .app-filter-card{
        padding: 26px 32px;
    }

    .app-filter-grid{
        grid-template-columns: 1fr 1fr 1fr;
        gap: 18px 28px;
    }

    .app-filter-card .platform-form-group{
        margin-bottom: 0;
    }

    .app-filter-card .platform-input{
        height: 48px;
    }

    .turno-radio-row{
        min-height: 48px;
    }

    .turno-filter-actions{
        align-self: end;
        justify-content: flex-start;
        min-height: 48px;
    }

    .turno-filter-actions .platform-btn{
        min-height: 48px;
        padding-inline: 1.8rem;
    }
}

/* Mobile: filtros comprimidos tipo Viento Sur */
@media (max-width: 768px){
    .app-filter-card{
        padding: 20px;
        margin-top: 20px;
    }

    .app-filter-grid{
        gap: 14px;
    }

    .app-filter-card .platform-form-group{
        margin-bottom: 0;
    }

    .app-filter-card .platform-form-label{
        font-size:var(--sc-text-sm);
        margin-bottom: 7px;
    }

    .app-filter-card .platform-input{
        height: 46px;
        border-radius: 16px;
        font-size:var(--sc-text-sm);
    }

    .turno-radio-row{
        min-height: auto;
        flex-direction: row;
        gap: 16px;
    }

    .turno-radio-row label{
        font-size:var(--sc-text-sm);
    }

    .turno-radio-row input{
        width: 17px;
        height: 17px;
    }

    .turno-filter-actions{
        margin-top: 2px;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .turno-filter-actions .platform-btn{
        width: auto;
        min-height: 44px;
        padding: .6rem 1.3rem;
    }
}

/* WhatsApp ayuda más visible */
.turno-help-icon{
    width: 54px;
    height: 54px;
    border-radius: 18px;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-xl);
}

.turno-help-icon i{
    font-size:var(--sc-text-xl);
}

@media (max-width: 768px){
    .turno-help-row{
        grid-template-columns: 54px 1fr;
        padding: 22px;
    }

    .turno-help-row .platform-btn{
        grid-column: 1 / -1;
        width: 100%;
    }
}

/* =========================================================
   PERFIL / TABS / VÍNCULOS
   Componentes genéricos + compatibilidad App Ciudadana
========================================================= */

/* Página */
.platform-page-narrow,
.citizen-profile-page {
    width: 100%;
    max-width: 1120px;
    margin: 0 auto;
    padding-bottom: 96px;
}

.platform-page-title,
.citizen-profile-page h1 {
    margin: 4px 0 8px;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.platform-page-description,
.citizen-profile-page p {
    color: var(--sc-muted);
}

/* Cards */
.platform-card,
.citizen-profile-card {
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    padding: 28px;
    box-shadow: var(--sc-shadow-soft);
    margin-top: 24px;
}

.platform-card-section,
.citizen-inline-form {
    margin-top: 24px;
    padding-top: 24px;
    border-top: 1px solid var(--sc-border);
}

/* Subtítulos dentro de cards */
.platform-subsection-head,
.citizen-subsection-head {
    margin: 24px 0 18px;
}

.platform-subsection-head h2,
.citizen-subsection-head h2 {
    margin: 0 0 4px;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.platform-subsection-head p,
.citizen-subsection-head p {
    margin: 0;
    color: var(--sc-muted);
}

/* Tabs sticky genéricas */
.platform-tab-panel,
.citizen-profile-tab-panel,
.citizen-family-panel {
    display: none;
}

.platform-tab-panel.is-active,
.citizen-profile-tab-panel.is-active,
.citizen-family-panel.is-active {
    display: block;
}

/* Perfil / identidad */
.platform-profile-top,
.citizen-profile-top {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 28px;
    align-items: start;
}

.platform-profile-photo,
.citizen-profile-photo {
    text-align: center;
}

.platform-photo-preview,
.citizen-photo-preview {
    width: 112px;
    height: 112px;
    border-radius: 50%;
    margin: 0 auto 12px;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.platform-photo-preview img,
.citizen-photo-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.platform-photo-preview i,
.citizen-photo-preview i {
    font-size:var(--sc-text-3xl);
}

.platform-profile-photo label,
.citizen-profile-photo label {
    color: var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    cursor: pointer;
}

.platform-profile-photo input,
.citizen-profile-photo input {
    display: none;
}

/* Grillas de lectura */
.platform-readonly-grid,
.citizen-readonly-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.platform-readonly-item,
.citizen-readonly-grid div {
    background: var(--sc-green-light);
    border-radius: var(--sc-radius-lg);
    padding: 14px 16px;
}

.platform-readonly-item span,
.citizen-readonly-grid span {
    display: block;
    color: var(--sc-muted);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
}

.platform-readonly-item strong,
.citizen-readonly-grid strong {
    display: block;
    margin-top: 4px;
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

/* Notas */
.platform-info-note,
.citizen-info-note {
    margin: 22px 0;
    padding: 14px 16px;
    border-radius: var(--sc-radius-lg);
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    display: flex;
    gap: 10px;
    align-items: center;
}

/* Inputs bloqueados y ayuda */
.platform-input.is-readonly {
    background: var(--sc-green-light);
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    cursor: not-allowed;
}

.platform-field-help,
.citizen-field-help {
    display: block;
    margin-top: 8px;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
}

/* Cards de vínculo / resumen */
.platform-summary-grid,
.citizen-property-grid,
.citizen-family-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 18px;
}

.platform-summary-card,
.citizen-property-card,
.citizen-family-card {
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    background: var(--sc-white);
    padding: 18px;
    display: grid;
    grid-template-columns: 52px 1fr;
    gap: 14px;
    align-items: center;
}

.platform-summary-icon,
.citizen-property-icon,
.citizen-family-avatar {
    width: 52px;
    height: 52px;
    border-radius: 18px;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-xl);
}

.platform-summary-card h3,
.citizen-property-card h3,
.citizen-family-card h3 {
    margin: 0 0 4px;
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
}

.platform-summary-card p,
.citizen-property-card p,
.citizen-family-card p {
    margin: 0;
    font-size:var(--sc-text-sm);
}

/* Chips */
.platform-chip-list,
.citizen-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}

.platform-chip,
.citizen-tags span {
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    border-radius: var(--sc-radius-pill);
    padding: 5px 10px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
}

/* Pestañas secundarias */
.platform-pill-tabs,
.citizen-family-tabs {
    display: inline-flex;
    margin-top: 28px;
    padding: 5px;
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-pill);
    background: var(--sc-green-light);
}

.platform-pill-tab,
.citizen-family-tab {
    border: 0;
    background: transparent;
    border-radius: var(--sc-radius-pill);
    padding: 10px 18px;
    color: var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
}

.platform-pill-tab.is-active,
.citizen-family-tab.is-active {
    background: var(--sc-green-dark);
    color: var(--sc-white);
}

/* Permisos / checks */
.platform-check-grid,
.citizen-permission-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
}

.platform-check-card,
.citizen-permission-grid label {
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    padding: 14px 16px;
    background: var(--sc-white);
    display: flex;
    gap: 10px;
    align-items: center;
    font-weight:var(--sc-weight-black);
}

.platform-check-card input,
.citizen-permission-grid input {
    accent-color: var(--sc-green-dark);
}

@media (max-width: 991px) {
    .platform-tabs,
    .citizen-profile-nav {
        top: calc(var(--sc-header-mobile-height) + 8px);
        grid-template-columns: repeat(4, 1fr);
        border-radius: var(--sc-radius-lg);
        overflow-x: auto;
    }

    .platform-tab,
    .citizen-profile-nav-btn {
        min-height: 54px;
        padding: 0 10px;
        flex-direction: column;
        gap: 3px;
        font-size:var(--sc-text-xs);
    }

    .platform-tab i,
    .citizen-profile-nav-btn i {
        font-size:var(--sc-text-lg);
    }
}

@media (max-width: 768px) {
    .platform-card,
    .citizen-profile-card {
        padding: 20px;
    }

    .platform-profile-top,
    .citizen-profile-top {
        grid-template-columns: 1fr;
    }

    .platform-readonly-grid,
    .citizen-readonly-grid,
    .platform-summary-grid,
    .citizen-property-grid,
    .citizen-family-grid,
    .platform-check-grid,
    .citizen-permission-grid {
        grid-template-columns: 1fr;
    }

    .platform-pill-tabs,
    .citizen-family-tabs {
        width: 100%;
        display: grid;
        grid-template-columns: 1fr;
        border-radius: var(--sc-radius-lg);
    }

    .platform-pill-tab,
    .citizen-family-tab {
        width: 100%;
    }
}


/* =========================================================
   08. DASHBOARD - CENTRO DE OPERACIONES
   ========================================================= */

.operation-dashboard {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding-bottom: 40px;
}

.dashboard-hero {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    align-items: center;
    margin-bottom: 26px;
}







.dashboard-date-card {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 14px;
    padding: 18px 24px;
    display: flex;
    align-items: center;
    gap: 24px;
    box-shadow: var(--sc-shadow-soft);
}

.date-item,
.weather-item {
    display: flex;
    align-items: center;
    gap: 12px;
    font-weight:var(--sc-weight-bold);
    color: var(--sc-text);
}

.date-item {
    padding-right: 0;
    border-right: 0;
}

.date-item i {
    color: var(--sc-green);
    font-size:var(--sc-text-lg);
}

.weather-item i {
    color: var(--sc-yellow);
    font-size:var(--sc-text-xl);
}

.weather-item span {
    display: block;
    font-size:var(--sc-text-sm);
    color: var(--sc-muted);
    font-weight:var(--sc-weight-normal);
}

.dashboard-filters {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-bottom: 24px;
}

.dashboard-filters .form-control {
    max-width: 180px;
    min-height: 44px;
    border-radius: 10px;
}

.dashboard-hero-compact{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:24px;
    margin-bottom:18px;
}

.dashboard-hero-actions{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:12px;
    flex-wrap:wrap;
    padding-top:8px;
}

@media(max-width:991px){
    .dashboard-hero-compact{
        display:block;
    }

    .dashboard-hero-actions{
        margin-top:18px;
        display:grid;
        grid-template-columns:1fr 1fr;
        gap:10px;
    }

    .dashboard-hero-actions .platform-btn{
        width:100%;
        min-height:48px;
        padding:.7rem 1rem;
        font-size:var(--sc-text-sm);
    }

    .dashboard-hero-actions .platform-btn:nth-child(3){
        grid-column:1 / -1;
    }
}

@media(max-width:768px){

    .dashboard-hero-compact .d-flex{
        display:grid !important;
        grid-template-columns:1fr 1fr;
        gap:10px;
        width:100%;
    }

    .dashboard-hero-compact .platform-btn{
        width:100%;
        min-height:48px;
        padding:.7rem 1rem;
        font-size:var(--sc-text-sm);
    }

    .dashboard-hero-compact .platform-btn:nth-child(3){
        grid-column:1 / -1;
    }

    /* Bandeja de Gestiones/Reclamos/Solicitudes: "Mapa operativo" ya está
       siempre accesible desde el tab "Mapa" de la barra inferior — en mobile
       mostrarlo también acá como botón grande es redundante y le da a esta
       fila un peso visual innecesario. Se deja sólo "Crear tarea". */
    .gestiones-hero-actions .platform-btn-outline-primary{
        display:none;
    }

    .gestiones-hero-actions{
        grid-template-columns:1fr !important;
    }

    .dashboard-filters-compact{
        display:grid;
        grid-template-columns:1fr 1fr;
        gap:10px;
    }

    .dashboard-filters-compact .form-control,
    .dashboard-filters-compact .platform-btn,
    .dashboard-filters-compact .btn{
        width:100%;
        min-height:48px;
    }

    .dashboard-filters-compact button[type="submit"],
    .dashboard-filters-compact a{
        grid-column:auto;
    }
}

.dashboard-filters{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr)) auto auto;
    gap:1rem;
    align-items:center;
}



@media (max-width:991px){

    .dashboard-filters{
        grid-template-columns:1fr;
    }

    .dashboard-filters .platform-btn{
        width:100%;
    }
}

/* KPIs */

/* ══════════════════════════════════════════════════════════════════════
   BARRA DE FILTROS · Bandeja de Gestiones/Reclamos/Solicitudes
   Buscador + botón "Filtrar" siempre visibles; los campos de filtro viven
   en un panel superpuesto (overlay), no empujan el contenido hacia abajo.
   Clases propias: no reutiliza .dashboard-filters porque esa la comparten
   otras pantallas.
   ══════════════════════════════════════════════════════════════════════ */

.gestiones-filter-bar{
    display:flex;
    flex-direction:column;
    gap:16px;
}

.gestiones-filter-toolbar{
    display:flex;
    align-items:center;
    gap:12px;
}

.gestiones-filter-trigger{
    position:relative;
    display:inline-flex;
    align-items:center;
    gap:8px;
    flex:0 0 auto;
    min-height:48px;
    padding:0 20px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-sm);
    background:var(--sc-white);
    color:var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
    cursor:pointer;
    white-space:nowrap;
}

.gestiones-filter-trigger:hover{
    border-color:var(--sc-green);
    color:var(--sc-green-dark);
}

.gestiones-filter-trigger-dot{
    position:absolute;
    top:8px;
    right:10px;
    width:8px;
    height:8px;
    border-radius:50%;
    background:var(--sc-yellow);
}

.gestiones-filter-search{
    position:relative;
    flex:1 1 auto;
}

.gestiones-filter-search i{
    position:absolute;
    left:16px;
    top:50%;
    transform:translateY(-50%);
    color:var(--sc-muted);
    font-size:var(--sc-text-md);
    pointer-events:none;
}

.gestiones-filter-search input{
    width:100%;
    min-height:48px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-sm);
    padding:0 16px 0 44px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-normal);
    color:var(--sc-text);
    background:var(--sc-white);
}

/* Panel superpuesto — cubre el contenido en vez de empujarlo. */
.gestiones-filter-overlay{
    position:fixed;
    inset:0;
    z-index:1050;
    display:flex;
    justify-content:flex-end;
    background:rgba(10,20,15,.45);
}

.gestiones-filter-panel{
    width:100%;
    max-width:420px;
    height:100%;
    background:var(--sc-white);
    box-shadow:var(--sc-shadow-card);
    display:flex;
    flex-direction:column;
    overflow-y:auto;
}

.gestiones-filter-panel-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:20px 24px;
    border-bottom:1px solid var(--sc-border);
    flex:0 0 auto;
}

.gestiones-filter-panel-header h3{
    margin:0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
}

.gestiones-filter-panel-close{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:36px;
    height:36px;
    border:none;
    border-radius:50%;
    background:var(--sc-bg);
    color:var(--sc-text);
    flex:0 0 auto;
}

.gestiones-filter-panel-close:hover{
    background:var(--sc-green-light);
    color:var(--sc-green-dark);
}

.gestiones-filter-row{
    display:flex;
    flex-direction:column;
    gap:18px;
    padding:24px;
    flex:1 1 auto;
}

.gestiones-filter-field{
    display:flex;
    flex-direction:column;
    gap:6px;
}

.gestiones-filter-field label{
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
    letter-spacing:.06em;
    text-transform:uppercase;
    color:var(--sc-muted);
}

.gestiones-filter-field .form-control{
    width:100%;
    min-height:44px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-sm);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
    color:var(--sc-text);
}

.gestiones-filter-field input[type="date"].form-control{
    color:var(--sc-text);
}

.gestiones-filter-panel-footer{
    display:flex;
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    padding:16px 24px;
    border-top:1px solid var(--sc-border);
    flex:0 0 auto;
}

.gestiones-filter-panel-footer .platform-btn{
    width:100%;
    justify-content:center;
}

@media (max-width:575px){
    .gestiones-filter-panel{
        max-width:100%;
    }
}

@media (max-width:767px){
    .gestiones-filter-trigger-label{
        display:none;
    }

    .gestiones-filter-trigger{
        padding:0 14px;
    }
}

/* Control "Ordenar por" — fila de resultados */

.gestiones-sort-control{
    display:flex;
    align-items:center;
    gap:8px;
}

.gestiones-sort-control label{
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
    letter-spacing:.05em;
    text-transform:uppercase;
    color:var(--sc-muted);
    white-space:nowrap;
}

.gestiones-sort-control select{
    min-height:38px;
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-sm);
    padding:0 10px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
    color:var(--sc-text);
    background:var(--sc-white);
}

@media (max-width:767px){
    .gestiones-activity-header{
        flex-wrap:wrap;
    }

    .gestiones-sort-control{
        width:100%;
    }

    .gestiones-sort-control select{
        flex:1 1 auto;
        min-height:44px;
    }
}

/* Filas expandibles — Bandeja de Gestiones/Reclamos/Solicitudes en mobile:
   colapsadas muestran ID en una columna y Área/Estado apilados en una
   segunda columna a la derecha, para que entren ~10 gestiones en una
   pantalla sin scroll; el resto se revela con la flecha, cada campo
   ocupando su propia línea debajo. */

.gestiones-row-toggle-cell{
    display:none;
}

@media (max-width:767px){

    .platform-table td.gestiones-td-hidden{
        display:none;
    }

    .platform-table tr{
        position:relative;
        padding-right:3.2rem;
    }

    /* ID en una columna angosta a la izquierda; Área y Estado apilados en
       una segunda columna a la derecha (grid, no flex, para poder ubicar
       dos celdas del <tr> una debajo de la otra sin envolverlas en un
       contenedor extra). El resto de los campos (visibles al expandir la
       fila) ocupan todo el ancho, cada uno en su propia fila del grid. */
    #gestiones-table-wrap .platform-table tr{
        display:grid;
        grid-template-columns:min-content 1fr;
        align-items:center;
        column-gap:14px;
        row-gap:.35rem;
    }

    #gestiones-table-wrap .platform-table td{
        grid-column:1 / -1;
        min-width:0;
    }

    #gestiones-table-wrap .platform-table td[data-label="ID"]{
        grid-column:1;
        grid-row:1 / 3;
        align-self:center;
    }

    #gestiones-table-wrap .platform-table td[data-label="Área"]{
        grid-column:2;
        grid-row:1;
        align-self:end;
    }

    #gestiones-table-wrap .platform-table td[data-label="Estado"]{
        grid-column:2;
        grid-row:2;
        align-self:start;
    }

    #gestiones-table-wrap .platform-table td[data-label="ID"],
    #gestiones-table-wrap .platform-table td[data-label="Área"],
    #gestiones-table-wrap .platform-table td[data-label="Estado"]{
        border-bottom:none;
        padding-bottom:0;
    }

    #gestiones-table-wrap .platform-table td[data-label="ID"] strong{
        font-size:var(--sc-text-sm);
        white-space:nowrap;
    }

    .gestiones-row-toggle-cell{
        display:block;
        position:absolute;
        top:.85rem;
        right:1.1rem;
    }

    .gestiones-row-toggle{
        width:34px;
        height:34px;
        border-radius:50%;
        border:1px solid var(--sc-border);
        background:var(--sc-white);
        color:var(--sc-muted);
        display:flex;
        align-items:center;
        justify-content:center;
    }

    .gestiones-row-toggle i{
        transition:transform .2s ease;
    }

    .gestiones-row-toggle i.is-open{
        transform:rotate(180deg);
    }
}

/* KPIs */

.kpi-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 24px;
}

.kpi-card {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 14px;
    box-shadow: var(--sc-shadow-soft);
    text-decoration: none;
    cursor: pointer;
    color: inherit;
    transition: transform .2s ease, box-shadow .2s ease;
}

.kpi-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--sc-shadow-card);
}

.kpi-card-clean {
    min-height: 132px;
    padding: 16px 14px;
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    grid-template-rows: 40px 44px 24px;
    column-gap: 12px;
    row-gap: 2px;
    align-items: center;
    overflow: hidden;
}

.kpi-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: white;
    font-size:var(--sc-text-lg);
    flex-shrink: 0;
}

.kpi-card-clean .kpi-icon {
    grid-column: 1;
    grid-row: 1 / 4;
}

.kpi-label {
    grid-column: 2;
    grid-row: 1;
    min-height: 40px;
    display: flex;
    align-items: flex-end;
    color: var(--sc-text);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    line-height: 1.08;
    margin: 0;
}

.kpi-number {
    grid-column: 2;
    grid-row: 2;
    display: flex;
    align-items: center;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    line-height: 1;
    color: var(--sc-text);
    margin: 0;
}

.kpi-caption {
    grid-column: 2;
    grid-row: 3;
    min-height: 24px;
    display: flex;
    align-items: flex-start;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    line-height: 1.1;
    margin: 0;
}

/* kpi-* — colores de ícono alineados con el sistema de estado --sc-status-* */
.kpi-teal   { background: var(--sc-status-registrado-dot); }  /* iniciadas — gris */
.kpi-yellow { background: var(--sc-status-analisis-dot); }    /* en análisis — amarillo */
.kpi-orange { background: var(--sc-status-programada-dot); }  /* programadas — naranja */
.kpi-cyan   { background: var(--sc-status-ejecucion-dot); }   /* en ejecución — azul */
.kpi-green  { background: var(--sc-status-finalizada-dot); }  /* finalizadas — verde */
.kpi-violet { background: var(--sc-status-reabierta-dot); }   /* reabiertas — violeta */
.kpi-red    { background: var(--sc-status-rechazada-dot); }   /* rechazadas — rojo */
.kpi-purple { background: var(--sc-purple); }                 /* genérico — violeta Bootstrap */
.kpi-blue   { background: var(--sc-blue); }                   /* genérico — azul */


/* ── kpi-card-pastel — variante para App Ciudadana ────────────────────────
   Ícono circular pastel a la izquierda, número + label a la derecha,
   "Ver detalles" abajo ocupando todo el ancho (layout de 2 columnas).
   Usar con: {% include "components/kpi_card.html" with extra_class="kpi-card-pastel kpi-pastel-green" ... %}
   ────────────────────────────────────────────────────────────────────────── */

/* kpi-card-pastel — resetea el grid del kpi-card-clean padre con !important */
.kpi-card-pastel {
    padding: 18px 16px 14px !important;
    display: grid !important;
    grid-template-columns: 48px minmax(0, 1fr) !important;
    grid-template-rows: auto auto auto !important;
    column-gap: 14px !important;
    row-gap: 2px !important;
    align-items: center;
    min-height: 130px;
}
.kpi-card-pastel .kpi-icon {
    width: 48px !important;
    height: 48px !important;
    border-radius: 50% !important;
    font-size: 1.2rem !important;
    flex-shrink: 0;
    grid-column: 1 !important;
    grid-row: 1 / 3 !important;
    margin-bottom: 0 !important;
    align-self: center !important;
}
.kpi-card-pastel .kpi-number {
    display: block !important;
    font-size: 2rem !important;
    font-weight: var(--sc-weight-black) !important;
    line-height: 1 !important;
    margin: 0 !important;
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: end !important;
    justify-self: end !important;
    text-align: right !important;
    width: 100%;
}
.kpi-card-pastel .kpi-label {
    display: block !important;
    font-size: var(--sc-text-xs) !important;
    font-weight: var(--sc-weight-semibold) !important;
    color: var(--sc-muted) !important;
    min-height: unset !important;
    margin: 0 !important;
    grid-column: 2 !important;
    grid-row: 2 !important;
    align-self: start !important;
    justify-self: end !important;
    text-align: right !important;
    width: 100%;
}
.kpi-card-pastel .kpi-caption {
    font-size: var(--sc-text-xs) !important;
    font-weight: var(--sc-weight-semibold) !important;
    min-height: unset !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px;
    padding: 7px 10px !important;
    border-radius: var(--sc-radius-pill) !important;
    margin-top: 14px !important;
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
}

/* ── Variantes de color — usan tokens --sc-*-pastel del :root ────────────── */
.kpi-pastel-green .kpi-icon    { background: var(--sc-green-pastel);       color: var(--sc-green-pastel-text); }
.kpi-pastel-green .kpi-number  { color: var(--sc-green-pastel-text); }
.kpi-pastel-green .kpi-caption { background: var(--sc-green-pastel-bg);    color: var(--sc-green-pastel-text); }

.kpi-pastel-blue .kpi-icon    { background: var(--sc-blue-pastel);         color: var(--sc-blue-pastel-text); }
.kpi-pastel-blue .kpi-number  { color: var(--sc-blue-pastel-text); }
.kpi-pastel-blue .kpi-caption { background: var(--sc-blue-pastel-bg);      color: var(--sc-blue-pastel-text); }

.kpi-pastel-orange .kpi-icon    { background: var(--sc-orange-pastel);     color: var(--sc-orange-pastel-text); }
.kpi-pastel-orange .kpi-number  { color: var(--sc-orange-pastel-text); }
.kpi-pastel-orange .kpi-caption { background: var(--sc-orange-pastel-bg);  color: var(--sc-orange-pastel-text); }

/* Amber — amarillo oscuro para contrastar sobre fondo pastel claro */
.kpi-pastel-yellow .kpi-icon    { background: var(--sc-yellow-pastel);     color: var(--sc-yellow-pastel-text); }
.kpi-pastel-yellow .kpi-number  { color: var(--sc-yellow-pastel-text); }
.kpi-pastel-yellow .kpi-caption { background: var(--sc-yellow-pastel-bg);  color: var(--sc-yellow-pastel-text); }

.kpi-pastel-gray .kpi-icon    { background: var(--sc-gray-pastel);        color: var(--sc-gray-pastel-text); }
.kpi-pastel-gray .kpi-number  { color: var(--sc-gray-pastel-text); }
.kpi-pastel-gray .kpi-caption { background: var(--sc-gray-pastel-bg);     color: var(--sc-gray-pastel-text); }

.kpi-pastel-violet .kpi-icon    { background: var(--sc-violet-pastel);      color: var(--sc-violet-pastel-text); }
.kpi-pastel-violet .kpi-number  { color: var(--sc-violet-pastel-text); }
.kpi-pastel-violet .kpi-caption { background: var(--sc-violet-pastel-bg);   color: var(--sc-violet-pastel-text); }

.kpi-pastel-red .kpi-icon    { background: var(--sc-red-pastel);         color: var(--sc-red-pastel-text); }
.kpi-pastel-red .kpi-number  { color: var(--sc-red-pastel-text); }
.kpi-pastel-red .kpi-caption { background: var(--sc-red-pastel-bg);      color: var(--sc-red-pastel-text); }

/* Métricas operativas */

.operational-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 24px;
}

.metric-card {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 14px;
    padding: 16px 18px;
    display: flex;
    align-items: center;
    gap: 14px;
    box-shadow: var(--sc-shadow-soft);
    min-width: 0;
}

.metric-card i {
    color: var(--sc-green);
    font-size:var(--sc-text-xl);
    flex-shrink: 0;
}

.metric-card strong {
    display: block;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
    line-height: 1;
}

.metric-card span {
    display: block;
    font-size:var(--sc-text-xs);
    color: var(--sc-muted);
    font-weight:var(--sc-weight-medium);
}

/* Panel inferior */

.dashboard-panel{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:16px;
    padding:26px;
    margin-bottom:30px;
    display:grid;
    grid-template-columns:1fr 340px;
    gap:30px;
}

.chart-section {
    min-width: 0;
    padding-right: 26px;
    border-right: 1px solid var(--sc-border);
}

.chart-section h3,
.activity-section h3 {
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-bold);
    color: var(--sc-text);
    margin-bottom: 22px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.chart-section h3 i,
.activity-section h3 i {
    color: var(--sc-muted);
}

.chart-subtitle {
    font-size:var(--sc-text-sm);
    color: var(--sc-muted);
    margin-top: -12px;
    margin-bottom: 22px;
}

.chart-section canvas {
    height: 330px !important;
}

.activity-section {
    min-width: 0;
}

.activity-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}

.activity-header h3 {
    margin-bottom: 0;
}

.activity-list {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.activity-item {
    display: grid;
    grid-template-columns: 12px minmax(0, 1fr) auto;
    align-items: flex-start;
    gap: 12px;
}

.activity-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-top: 6px;
}

.activity-item p {
    margin: 0;
    font-size:var(--sc-text-sm);
    line-height: 1.35;
    color: var(--sc-text);
}

.activity-item small {
    color: var(--sc-muted);
    font-size:var(--sc-text-xs);
}

.activity-badge {
    border-radius: 999px;
    padding: 7px 12px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
    white-space: nowrap;
    max-width: 150px;
    text-align: center;
}

.bg-soft-green {
    background:var(--sc-bg-green-soft);
    color:var(--sc-green-dark);
}

.bg-soft-blue {
    background:var(--sc-bg-blue-soft);
    color:var(--sc-blue);
}

.bg-soft-yellow {
    background: #fff2d8;
    color:var(--sc-warning-text);
}

.bg-soft-red {
    background:var(--sc-bg-red-soft);
    color:var(--sc-red);
}

.bg-soft-gray {
    background:#e9ecef;
    color:#495057;
}

.bg-soft-orange {
    background:var(--sc-orange-pastel);
    color:var(--sc-orange-pastel-text);
}

.bg-soft-purple {
    background:var(--sc-violet-pastel);
    color:var(--sc-violet-pastel-text);
}

/* =========================================================
   DASHBOARD ADMIN - LOOK FINAL
========================================================= */





.dashboard-welcome{
    margin:0 0 6px;
    color:var(--sc-role-sidebar-active);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform:uppercase;
}

.dashboard-title{
    margin:0 0 10px;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
}

.dashboard-update{
    color:var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-normal);
}

.case-status-pill{
    font-size:var(--sc-text-sm);
    padding:6px 14px;
}

.case-next-status-row{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    justify-content:flex-end;
    gap:8px;
}

.case-next-status-label{
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-bold);
    color:var(--sc-green-dark);
    white-space:nowrap;
}

@media(max-width:768px){
    .case-next-status-row{
        justify-content:flex-start;
        width:100%;
    }
}

/* ══════════════════════════════════════════════════════════════════════
   DETALLE DE GESTIÓN (Reclamo/Solicitud) — encabezado con botón "volver"
   separado, tabs tipo underline (para no confundirse con los botones de
   acción, que son pill/filled) y las dos cards de datos con ícono por
   campo.
   ══════════════════════════════════════════════════════════════════════ */

.case-detail-header{
    display:flex;
    align-items:flex-start;
    gap:14px;
}

.case-detail-back{
    width:42px;
    height:42px;
    min-width:42px;
    border-radius:50%;
    border:1px solid var(--sc-border);
    background:var(--sc-white);
    color:var(--sc-text);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1rem;
    flex-shrink:0;
    margin-top:2px;
}

.case-detail-back:hover{
    border-color:var(--sc-green-dark);
    color:var(--sc-green-dark);
    box-shadow:var(--sc-shadow-soft);
}

.case-detail-hero{
    flex:1;
    min-width:0;
}

/* Tabs de "Detalle de gestión": franja de casilleros con divisores y línea
   verde arriba del activo — no pill, no underline — así se distinguen a
   simple vista de los botones de acción (Historial / Agregar observación /
   Crear tarea), que sí son pills. */
.platform-tabs[data-platform-tabs="gestion"]{
    position:relative;
    top:auto;
    display:flex;
    flex-wrap:nowrap;
    gap:0;
    margin:22px 0 0;
    padding:0;
    background:var(--sc-bg);
    backdrop-filter:none;
    border:1px solid var(--sc-border);
    border-bottom:none;
    border-radius:var(--sc-radius-md) var(--sc-radius-md) 0 0;
    overflow:hidden;
}

.platform-tabs[data-platform-tabs="gestion"] .platform-tab{
    flex:1 1 0;
    min-height:52px;
    padding:0 14px;
    margin:0;
    border:none;
    border-right:1px solid var(--sc-border);
    border-bottom:1px solid var(--sc-border);
    border-top:3px solid transparent;
    border-radius:0;
    background:transparent;
    box-shadow:none;
    color:var(--sc-muted);
    font-weight:var(--sc-weight-medium);
}

.platform-tabs[data-platform-tabs="gestion"] .platform-tab:last-child{
    border-right:none;
}

.platform-tabs[data-platform-tabs="gestion"] .platform-tab:hover{
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
}

.platform-tabs[data-platform-tabs="gestion"] .platform-tab.is-active{
    background:var(--sc-white);
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
    font-weight:var(--sc-weight-bold);
    border-top-color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
    border-bottom-color:transparent;
}

/* La card que sigue a las tabs (Información / Seguimiento) no lleva borde
   ni redondeo arriba: así queda pegada a la pestaña activa, como una sola
   pieza continua, en vez de leerse como dos bloques separados por una
   línea. */
.platform-tab-panel[data-platform-panel-group="gestion"] > .platform-form-card{
    border-top:none;
    border-radius:0 0 var(--sc-radius-xl) var(--sc-radius-xl);
}

@media(max-width:768px){
    .platform-tabs[data-platform-tabs="gestion"]{
        overflow-x:auto;
        scrollbar-width:none;
    }

    .platform-tabs[data-platform-tabs="gestion"] .platform-tab{
        flex:0 0 auto;
        white-space:nowrap;
    }
}

/* Cards de datos con ícono por campo (Datos de la gestión / Ciudadano y
   ubicación) */
.case-detail-group-title{
    display:flex;
    align-items:center;
    gap:8px;
    margin:0 0 16px;
    font-size:var(--sc-text-md, 1rem);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
}

.case-detail-group-title i{
    color:var(--sc-role-sidebar-bg, var(--sc-green));
}

.case-detail-field-list{
    display:flex;
    flex-direction:column;
    background:var(--sc-bg);
    border-radius:var(--sc-radius-lg);
    padding:6px 16px;
}

.case-detail-field{
    display:flex;
    align-items:flex-start;
    gap:12px;
    padding:14px 0;
    border-bottom:1px solid var(--sc-border);
}

.case-detail-field:last-child{
    border-bottom:none;
}

.case-detail-field-icon{
    width:34px;
    height:34px;
    min-width:34px;
    border-radius:50%;
    background:color-mix(in srgb, var(--sc-role-sidebar-bg, var(--sc-green)) 14%, white);
    color:var(--sc-role-sidebar-bg, var(--sc-green-pastel-text));
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:.95rem;
    margin-top:2px;
}

.case-detail-field strong{
    display:block;
    color:var(--sc-role-sidebar-bg, var(--sc-green-dark));
    font-weight:var(--sc-weight-bold);
    margin-bottom:4px;
}

.case-detail-field p{
    margin:0;
    color:var(--sc-text);
    font-weight:var(--sc-weight-medium);
}

.case-detail-field small{
    color:var(--sc-muted);
}

/* ══════════════════════════════════════════════════════════════════════
   FILTRO DE FECHA COMPACTO (pill + dropdown)
   ══════════════════════════════════════════════════════════════════════ */

.dashboard-hero-actions{
    display:flex;
    align-items:center;
    gap:12px;
    flex-wrap:wrap;
}

.dashboard-date-filter-toggle{
    display:flex;
    align-items:center;
    gap:9px;
    padding:10px 16px;
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:999px;
    box-shadow:var(--sc-shadow-soft);
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-sm);
    color:var(--sc-text);
    white-space:nowrap;
    cursor:pointer;
    transition:border-color .15s ease, box-shadow .15s ease;
}

.dashboard-date-filter-toggle:hover{
    border-color:var(--sc-role-sidebar-bg, var(--sc-green));
}

.dashboard-date-filter-toggle i.bi-calendar-event{
    color:var(--sc-role-sidebar-bg, var(--sc-green));
    font-size:1rem;
}

.dashboard-date-filter-toggle i.bi-chevron-down{
    font-size:.7rem;
    opacity:.55;
    transition:transform .15s ease;
}

.dashboard-date-filter-toggle[aria-expanded="true"] i.bi-chevron-down{
    transform:rotate(180deg);
}

.dashboard-date-filter-menu{
    padding:18px;
    min-width:280px;
    border-radius:16px;
    border:1px solid var(--sc-border);
    box-shadow:0 12px 32px rgba(0,0,0,.12);
    margin-top:8px;
}

.dashboard-date-filter-row{
    display:flex;
    flex-direction:column;
    gap:5px;
    margin-bottom:14px;
}

.dashboard-date-filter-row label{
    font-size:var(--sc-text-xs, .75rem);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
    opacity:.65;
    text-transform:uppercase;
    letter-spacing:.02em;
}

.dashboard-date-filter-row .form-control{
    width:100%;
    min-height:42px;
    border-radius:10px;
    border:1px solid var(--sc-border);
}

.dashboard-date-filter-actions{
    display:flex;
    justify-content:flex-end;
    gap:8px;
    margin-top:6px;
}

@media (max-width: 767px){
    .dashboard-date-filter-menu{
        min-width:calc(100vw - 48px);
    }
}

.dashboard-section-title{
    display:flex;
    align-items:center;
    gap:10px;
    margin:18px 0 14px;
}

.dashboard-section-title h2{
    margin:0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
}

.kpi-grid-clean{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
    gap:14px;
    margin-bottom:26px;
}

/* ══════════════════════════════════════════════════════════════════════
   KPIs "Gestiones operativas" — dos CARDS separadas (no solo dos columnas
   sueltas), Reclamos y Solicitudes, con el mismo lenguaje de ícono/color
   pastel que la App Ciudadana (verde = reclamo, azul = solicitud) para que
   se lea como el mismo sistema. Las tarjetas de estado quedan "adentro" de
   cada card, sin su propio borde, para que no compitan visualmente con el
   contenedor y se note que Reclamos y Solicitudes son dos bloques
   distintos.
   ══════════════════════════════════════════════════════════════════════ */

.kpi-gestion-split{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:24px;
    align-items:start;
    margin-bottom:40px;
}

.kpi-gestion-col{
    background:var(--sc-white);
    border:1px solid var(--sc-border);
    border-radius:var(--sc-radius-xl);
    box-shadow:var(--sc-shadow-soft);
    padding:22px;
}

.kpi-gestion-col-head{
    display:flex;
    align-items:center;
    gap:12px;
    margin:0 0 16px;
}

.kpi-gestion-col-icon{
    width:40px;
    height:40px;
    border-radius:12px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.1rem;
    flex-shrink:0;
}

.kpi-gestion-col-title{
    margin:0;
    font-size:var(--sc-text-md, 1rem);
    font-weight:var(--sc-weight-black);
    color:var(--sc-text);
}

/* Reclamo = verde, Solicitud = azul: mismos colores que "Nuevo reclamo" /
   "Nueva solicitud" y las kpi-pastel de la App Ciudadana. */
.kpi-gestion-col-reclamos .kpi-gestion-col-icon{
    background:var(--sc-green-pastel);
    color:var(--sc-green-pastel-text);
}

.kpi-gestion-col-solicitudes .kpi-gestion-col-icon{
    background:var(--sc-blue-pastel);
    color:var(--sc-blue-pastel-text);
}

.kpi-gestion-col .kpi-grid-clean.kpi-grid-gestion{
    grid-template-columns:repeat(3, minmax(0, 1fr));
    margin-bottom:0;
}

/* Tarjetas de estado "adentro" de la card: sin borde/sombra propios, para
   que se vean agrupadas dentro del contenedor de su tipo en vez de flotar
   sueltas como antes. */
.kpi-gestion-col .kpi-card-gestion{
    background:var(--sc-bg);
    border:none;
    box-shadow:none;
    padding:14px;
}

.kpi-gestion-col .kpi-card-gestion:hover{
    background:var(--sc-white);
    box-shadow:var(--sc-shadow-soft);
}

.kpi-gestion-col .kpi-card-gestion-link{
    background:var(--sc-white);
}

@media (max-width: 1199px){
    .kpi-gestion-col .kpi-grid-clean.kpi-grid-gestion{
        grid-template-columns:repeat(3, minmax(140px, 1fr));
    }
}

@media (max-width: 991px){
    .kpi-gestion-split{
        grid-template-columns:1fr;
        gap:20px;
        margin-bottom:32px;
    }
}

.kpi-card-clean{
    min-height:142px;
    border-radius:14px;
    box-shadow:var(--sc-shadow-soft);
}



.platform-tabs[data-platform-tabs="dashboard-admin"]{
    position:relative;
    top:auto;
    margin:0 0 28px;
    padding:0;
    background:transparent;
    backdrop-filter:none;
    gap:12px;
}

.platform-tabs[data-platform-tabs="dashboard-admin"] .platform-tab{
    min-height:50px;
    border-radius:999px;
    box-shadow:none;
}





@media(max-width:1199px){
    .kpi-grid-clean{
        grid-template-columns:repeat(4, minmax(0, 1fr));
    }
}

@media(max-width:991px){
    .dashboard-hero-compact{
        flex-direction:column;
        align-items:stretch;
    }

    .dashboard-hero-actions{
        justify-content:flex-start;
    }

    .kpi-grid-clean{
        grid-template-columns:repeat(2, minmax(0, 1fr));
    }
}

@media(max-width:575px){
    .dashboard-title{
        font-size:var(--sc-text-xl);
    }

    .dashboard-hero-actions,
    .dashboard-filters-compact,
    .kpi-grid-clean{
        grid-template-columns:1fr;
    }
}

/* =========================================================
   11. RESPONSIVE GENERAL
   ========================================================= */

@media (max-width: 1399px) {
    .kpi-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 1199px) {


    .kpi-card-clean {
        min-height: 126px;
    }
}

@media (max-width: 991px) {




    .municipal-divider,
    .municipal-title,
    .notification-btn,
    .header-action-group.d-none,
    .header-action-group.d-lg-flex,
    .user-info,









    .municipal-menu .nav-link.active::after,



    .dashboard-hero {
        flex-direction: column;
        align-items: flex-start;
    }

    .dashboard-date-card {
        width: 100%;
        justify-content: flex-start;
    }

    .dashboard-filters {
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .dashboard-panel {
        grid-template-columns: 1fr;
    }

    .chart-section {
        padding-right: 0;
        border-right: 0;
        border-bottom: 1px solid var(--sc-border);
        padding-bottom: 24px;
    }

    .operational-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .operation-dashboard {
        padding-left: 0;
        padding-right: 0;
    }

    .dashboard-hero {
        gap: 18px;
    }

    .dashboard-title {
        font-size:var(--sc-text-xl);
        line-height: 1.15;
    }

    .dashboard-date-card {
        padding: 16px;
    }

    .dashboard-filters {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }

    .dashboard-filters .form-control,
    .dashboard-filters .btn,
    .dashboard-filters a {
        max-width: none;
        width: 100%;
    }

    .kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .kpi-card-clean {
        min-height: 130px;
        padding: 16px 14px;
        grid-template-columns: 48px minmax(0, 1fr);
        grid-template-rows: 40px 42px 22px;
        column-gap: 12px;
    }

    .kpi-icon {
        width: 48px;
        height: 48px;
        border-radius: 12px;
    }

    .kpi-label {
        font-size:var(--sc-text-xs);
        line-height: 1.08;
    }

    .kpi-number {
        font-size:var(--sc-text-2xl);
    }

    .kpi-caption {
        font-size:var(--sc-text-xs);
    }

    .dashboard-panel {
        padding: 20px;
    }

    .activity-header {
        align-items: flex-start;
    }

    .activity-item {
        grid-template-columns: 12px minmax(0, 1fr);
    }

    .activity-badge {
        grid-column: 2;
        width: fit-content;
        max-width: 100%;
    }
}

@media (max-width: 575px) {



    .dashboard-title {
        font-size:var(--sc-text-xl);
    }

    .dashboard-date-card {
        flex-direction: column;
        align-items: flex-start;
    }

    .kpi-grid {
        grid-template-columns: 1fr;
    }

    .operational-metrics {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .dashboard-filters {
        grid-template-columns: 1fr;
    }

    .login-page-wrapper {
        min-height: calc(100vh - 260px);
        padding: 32px 18px 18px;
        align-items: flex-start;
    }

    .login-card-municipal {
        padding: 28px 22px;
        border-radius: 18px;
    }

    .login-logo {
        height: 52px;
        margin-bottom: 20px;
    }

    .login-title {
        font-size:var(--sc-text-2xl);
    }

    .login-landscape {
        height: 210px;
        background-size: auto 210px;
    }
}

/* =========================================================
   KANBAN PAGE
   ========================================================= */

.kanban-page {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding-bottom: 40px;
}

.page-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 24px;
    margin-bottom: 22px;
}

.page-eyebrow {
    margin: 0 0 6px;
    color: var(--sc-role-sidebar-bg);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform: uppercase;
}

.page-title {
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.page-title i {
    color: var(--sc-text);
}

.page-subtitle {
    margin: 8px 0 0;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
}

.kanban-toolbar {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 16px;
    padding: 16px;
    box-shadow: var(--sc-shadow-soft);
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 16px;
    align-items: end;
    margin-bottom: 22px;
}

.kanban-search {
    position: relative;
}

.kanban-search i {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sc-muted);
}

.kanban-search .form-control {
    min-height: 44px;
    padding-left: 42px;
    border-radius: 10px;
}

.kanban-sort label {
    display: block;
    font-size:var(--sc-text-xs);
    color: var(--sc-muted);
    font-weight:var(--sc-weight-bold);
    margin-bottom: 6px;
}

.kanban-sort .form-select {
    min-height: 44px;
    border-radius: 10px;
}

.kanban-board-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 18px;
}

.kanban-column {
    background:var(--sc-border);
    border-radius: 16px;
    overflow: hidden;
    min-width: 0;
    box-shadow: var(--sc-shadow-soft);
}

.kanban-column-header {
    min-height: 58px;
    padding: 0 18px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-base);
}

.kanban-column-header span {
    display: flex;
    align-items: center;
    gap: 8px;
}

.kanban-column-header strong {
    min-width: 24px;
    height: 24px;
    border-radius: 8px;
    background:var(--sc-white);
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    display: flex;
    align-items: center;
    justify-content: center;
}

.kanban-header-yellow {
    background:var(--sc-yellow);
    color:var(--sc-text);
}

.kanban-header-green {
    background:var(--sc-green);
    color: white;
}

.kanban-header-blue {
    background:var(--sc-blue);
    color: white;
}

.kanban-header-red {
    background:var(--sc-red);
    color: white;
}

.kanban-tasks {
    min-height: 430px;
    padding: 12px;
}

.kanban-task-wrapper {
    margin-bottom: 12px;
}

.kanban-empty {
    padding: 20px 10px;
    text-align: center;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.kanban-card {
    margin-bottom: 0;
}

@media (max-width: 767px) {
    .page-heading {
        flex-direction: column;
        align-items: flex-start;
    }

    .kanban-toolbar {
        grid-template-columns: 1fr;
    }

    .kanban-tasks {
        min-height: 220px;
    }
}


/* =========================================================
   TASK FORM - CREAR / EDITAR TAREA
   ========================================================= */

.task-form-page {
    width: 100%;
    max-width: 1180px;
    margin: 0 auto;
    padding-bottom: 40px;
}

.task-form-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(320px, .9fr);
    gap: 24px;
    align-items: flex-start;
}

.form-panel {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 18px;
    box-shadow: var(--sc-shadow-soft);
    overflow: hidden;
}

.form-panel-header,
.resources-header {
    padding: 22px 26px;
    border-bottom: 1px solid var(--sc-border);
    background:var(--sc-white);
}

.form-panel-header h2,
.resources-header h2 {
    margin: 0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
    display: flex;
    align-items: center;
    gap: 10px;
}

.form-panel-header i,
.resources-header i {
    color: var(--sc-green);
}

.form-panel-header p,
.resources-header p {
    margin: 8px 0 0;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.form-panel-body {
    padding: 26px;
}

.resources-header {
    background: var(--sc-green);
}

.resources-header h2,
.resources-header p,
.resources-header i {
    color: white;
}

.resources-body {
    padding: 20px;
    background:var(--sc-bg);
}

.resource-form-row {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 14px;
    padding: 14px;
    margin-bottom: 14px;
    box-shadow: 0 6px 14px rgba(15, 23, 42, .06);
}

.resource-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 90px 42px;
    gap: 10px;
    align-items: start;
}

.resource-delete {
    padding-top: 28px;
    display: flex;
    justify-content: center;
}

.task-actions-panel {
    margin-top: 18px;
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 18px;
    padding: 18px;
    box-shadow: var(--sc-shadow-soft);
}

.task-actions-panel .btn-primary {
    border-radius: 999px;
    min-height: 50px;
}

/* Crispy/form controls dentro del formulario */
.task-form-page label {
    font-weight:var(--sc-weight-medium);
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
}

.task-form-page input,
.task-form-page select,
.task-form-page textarea {
    border-radius: 10px !important;
    border-color: var(--sc-border) !important;
}

.task-form-page input:focus,
.task-form-page select:focus,
.task-form-page textarea:focus {
    border-color: var(--sc-green) !important;
    box-shadow: 0 0 0 4px rgba(6, 79, 34, .10) !important;
}

.task-form-page textarea {
    min-height: 190px;
}

/* Responsive */
@media (max-width: 991px) {
    .task-form-layout {
        grid-template-columns: 1fr;
    }

    .task-form-sidebar {
        order: 2;
    }
}

@media (max-width: 575px) {
    .task-form-page {
        padding-bottom: 24px;
    }

    .form-panel-header,
    .resources-header,
    .form-panel-body {
        padding: 20px;
    }

    .resource-grid {
        grid-template-columns: 1fr;
    }

    .resource-delete {
        padding-top: 0;
        justify-content: flex-start;
    }
}

/* =========================================================
   TASK LIST - LISTADO DE TAREAS
   ========================================================= */

.task-list-page {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding-bottom: 40px;
}

.list-toolbar {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 16px;
    padding: 16px;
    box-shadow: var(--sc-shadow-soft);
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 16px;
    align-items: end;
    margin-bottom: 22px;
}

.list-search {
    position: relative;
}

.list-search i {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sc-muted);
    font-size:var(--sc-text-md);
}

.list-search .form-control {
    min-height: 44px;
    padding-left: 42px;
    border-radius: 10px;
}

.list-sort label {
    display: block;
    font-size:var(--sc-text-xs);
    color: var(--sc-muted);
    font-weight:var(--sc-weight-bold);
    margin-bottom: 6px;
}

.list-sort .form-select {
    min-height: 44px;
    border-radius: 10px;
}

.task-table-card {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 18px;
    box-shadow: var(--sc-shadow-soft);
    padding: 18px;
    overflow: hidden;
}

.task-table {
    margin-bottom: 0;
}

.task-table thead th {
    background:var(--sc-bg);
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    border-bottom: 1px solid var(--sc-border);
    padding: 14px 12px;
    white-space: nowrap;
}

.task-table tbody td {
    padding: 15px 12px;
    border-bottom: 1px solid var(--sc-border);
    font-size:var(--sc-text-sm);
}

.task-table tbody tr:last-child td {
    border-bottom: 0;
}

.task-row {
    transition: background .2s ease;
}

.task-row:hover {
    background:var(--sc-bg);
}

.task-row-overdue {
    background: #fff7f7;
}

.task-title-cell {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.task-title-cell strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.task-alert-text {
    color:var(--sc-red);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    display: flex;
    align-items: center;
    gap: 5px;
}

.status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 6px 11px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    line-height: 1;
    white-space: nowrap;
}

.status-registered {
    background:var(--sc-border);
    color:var(--sc-muted);
}

.status-pending {
    background: #fff1c7;
    color:var(--sc-warning-text);
}

.status-progress {
    background:var(--sc-bg-blue-soft);
    color:var(--sc-blue);
}

.status-done {
    background:var(--sc-bg-green-soft);
    color:var(--sc-green-dark);
}

.date-cell,
.assigned-cell {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--sc-text);
    white-space: nowrap;
}

.date-cell i,
.assigned-cell i {
    color: var(--sc-green);
}

.table-actions {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.action-btn {
    width: 34px;
    height: 34px;
    border-radius: 9px;
    border: 1px solid var(--sc-border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background:var(--sc-white);
    transition: all .2s ease;
}

.action-view {
    color:var(--sc-blue);
    border-color: #bae6fd;
}

.action-edit {
    color: var(--sc-green);
    border-color: #b7dfc3;
}

.action-delete {
    color:var(--sc-red);
    border-color: #f5b5bf;
}

.action-btn:hover {
    transform: translateY(-2px);
    background:var(--sc-bg);
}

.empty-table {
    padding: 34px 18px !important;
    text-align: center;
    color: var(--sc-muted);
}

.empty-table i {
    display: block;
    font-size:var(--sc-text-2xl);
    color: var(--sc-green);
    margin-bottom: 8px;
}

.empty-table strong {
    display: block;
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    margin-bottom: 4px;
}

.empty-table span {
    display: block;
    font-size:var(--sc-text-sm);
}

/* Responsive listado */
@media (max-width: 767px) {
    .list-toolbar {
        grid-template-columns: 1fr;
    }

    .task-table-card {
        padding: 12px;
    }

    .task-table {
        min-width: 760px;
    }
}

/* =========================================================
   ARTICLE LIST - GESTIÓN DE ARTÍCULOS
   ========================================================= */

.article-list-page {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
    padding-bottom: 40px;
}

.article-name-cell {
    display: flex;
    align-items: center;
    gap: 12px;
}

.article-icon {
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: var(--sc-green-light);
    color: var(--sc-green);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.article-name-cell strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.article-description {
    color: var(--sc-muted);
}

.unit-pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    border-radius: 999px;
    padding: 7px 12px;
    background:var(--sc-green-light);
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    white-space: nowrap;
}

.unit-pill i {
    color: var(--sc-green);
}

/* Responsive artículos */
@media (max-width: 767px) {
    .article-list-page .task-table {
        min-width: 720px;
    }
}

.dashboard-date-inline i {
    color: var(--sc-green);
    font-size:var(--sc-text-lg);
}





.dashboard-section-title i {
    font-size:var(--sc-text-lg);
    color: var(--sc-text);
}

.dashboard-section-title h2 {
    margin: 0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.kpi-label {
    white-space: nowrap;
}

/* Responsive */
@media (max-width: 991px) {
    .dashboard-date-filter-menu {
        width: 100%;
    }
}

@media (max-width: 480px) {
    .dashboard-filters-compact {
        grid-template-columns: 1fr;
    }
}



.dashboard-section-title i {
    font-size:var(--sc-text-lg);
    color: var(--sc-text);
}

.dashboard-section-title h2 {
    margin: 0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-bold);
    color: var(--sc-text);
}

.kpi-label {
    white-space: nowrap;
}

@media (max-width: 991px) {
    .dashboard-control-bar {
        flex-direction: column;
        align-items: stretch;
    }

    .dashboard-date-inline {
        width: 100%;
        justify-content: flex-start;
    }
}

@media (max-width: 767px) {
    .dashboard-section-title h2 {
        font-size:var(--sc-text-lg);
    }
}
/* =====================================================
   MAPA OPERATIVO
===================================================== */

.map-layout{
    display:grid;
    grid-template-columns:320px 1fr 340px;
    gap:24px;
    align-items:start;
}

.map-sidebar,
.map-detail-panel{
    background:var(--sc-white);
    border-radius:20px;
    padding:20px;
    display:flex;
    flex-direction:column;
    gap:16px;
}

.map-panel{
    background:var(--sc-white);
    border-radius:18px;
    padding:20px;
    box-shadow:0 4px 20px rgba(0,0,0,.05);
}

.map-panel h2{
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-bold);
    margin-bottom:16px;
}

.map-main-card{
    background:var(--sc-white);
    border-radius:20px;
    overflow:hidden;
    box-shadow:0 4px 20px rgba(0,0,0,.05);
}

#operationalMap{
    width:100%;
    height:720px;
}



.map-detail-empty{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    height:100%;
    color:var(--sc-muted);
}

.map-detail-empty i{
    font-size:var(--sc-text-3xl);
    margin-bottom:16px;
    color:var(--sc-green);
}

.map-layer-check{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:10px;
    cursor:pointer;
}

.layer-dot{
    width:12px;
    height:12px;
    border-radius:50%;
}

.layer-red{
    background:var(--sc-red);
}

.layer-blue{
    background:var(--sc-cyan);
}

.layer-yellow{
    background:var(--sc-yellow);
}

.layer-green{
    background:var(--sc-green);
}

.layer-line{
    width:20px;
    height:4px;
    border-radius:999px;
    background:var(--sc-green);
}

.map-status-list{
    display:flex;
    flex-wrap:wrap;
    gap:12px;
}

.map-status-list span{
    background:var(--sc-bg);
    padding:8px 12px;
    border-radius:999px;
    font-size:var(--sc-text-sm);
}

.custom-map-marker{
    width:34px;
    height:34px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#fff;
    font-size:var(--sc-text-base);
    box-shadow:0 4px 12px rgba(0,0,0,.25);
}

.marker-red{
    background:var(--sc-red);
}



.marker-yellow{
    background:var(--sc-yellow);
    color:var(--sc-text);
}



.map-detail-content h2{
    font-size:var(--sc-text-xl);
    font-weight:var(--sc-weight-bold);
    margin-bottom:12px;
}

.map-detail-type{
    display:inline-block;
    padding:6px 12px;
    border-radius:999px;
    background:var(--sc-green-light);
    color:var(--sc-green);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-medium);
    margin-bottom:12px;
}

.map-status-badge{
    background:#fff4db;
    color:var(--sc-warning-text);
    border-radius:999px;
    padding:8px 14px;
    display:inline-block;
    font-weight:var(--sc-weight-medium);
    margin-bottom:20px;
}

.map-detail-list{
    display:flex;
    flex-direction:column;
    gap:14px;
    margin-bottom:20px;
}

.map-detail-list div{
    display:flex;
    flex-direction:column;
    gap:4px;
}

.map-detail-list span{
    font-size:var(--sc-text-xs);
    color:var(--sc-muted);
}

.map-detail-actions{
    display:flex;
    flex-direction:column;
    gap:10px;
}

@media (max-width:1400px){

    .map-layout{
        grid-template-columns:280px 1fr;
    }

    .map-detail-panel{
        grid-column:1 / -1;
        min-height:auto;
    }
}

@media (max-width:992px){

    .map-layout{
        grid-template-columns:1fr;
    }

    .map-sidebar,
    .map-detail-panel{
        order:2;
    }

    .map-main-card{
        order:1;
    }

    #operationalMap{
        height:500px;
    }
}


/* =========================================================
   07. APP CIUDADANA
   Mantener aquí clases citizen-* propias de pantallas internas.
   Header/nav/drawer viejos se conservan abajo en LEGACY.
========================================================= */

/* ==========================================================
   07.01 LAYOUT GENERAL
========================================================== */

.citizen-app {
    min-height: 100vh;
    background: var(--sc-bg);
    color: var(--sc-text);
    font-family: 'Montserrat', sans-serif;
}

.citizen-main {
    width: 100%;
}

.citizen-container {
    width: 100%;
    max-width: 1360px;
    margin: 0 auto;
}

.citizen-page {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.citizen-section {
    margin-bottom: 24px;
}

/* ==========================================================
   07.02 COMPONENTES REUTILIZABLES
========================================================== */

/* Encabezados */

.citizen-page-head {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 14px;
}

.citizen-page-head p {
    margin: 0 0 4px;
    color: var(--sc-green-dark);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
    text-transform: uppercase;
    margin-top:8px;
}

.citizen-page-head h1 {
    margin: 0;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
    line-height: 1.1;
}

.citizen-section-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
}

.citizen-section-head h2 {
    margin: 0 0 14px;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    color: var(--sc-text);
}

.citizen-section-head a {
    color: var(--sc-green-dark);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-decoration: none;
    white-space: nowrap;
}

/* Botón volver */

.citizen-back-link {
    width: 42px;
    height: 42px;
    border-radius: 14px;
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    color: var(--sc-green-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    flex-shrink: 0;
}

/* Cards */

.citizen-card {
    background: var(--sc-card-bg);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
}

.citizen-card-link {
    background: var(--sc-card-bg);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
    color: var(--sc-text);
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease, color .2s ease;
}

.citizen-card-link:hover {
    color: var(--sc-green-dark);
    transform: translateY(-2px);
    box-shadow: var(--sc-shadow-lg);
}

/* Iconos */

.citizen-icon-box {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    flex-shrink: 0;
    font-size: 1.3rem;
}

.citizen-icon-box i {
    line-height: 1;
}

.citizen-icon-green { background:var(--sc-green); }
.citizen-icon-blue { background:var(--sc-blue); }
.citizen-icon-orange { background:var(--sc-orange); }
.citizen-icon-purple { background:var(--sc-purple); }
.citizen-icon-yellow { background:var(--sc-yellow); }
.citizen-icon-red { background:var(--sc-red); }
.citizen-icon-map { background:var(--sc-green); }

/* Grillas */

.citizen-grid-home {
    grid-template-columns: repeat(3, 1fr);
}

.citizen-grid {
    display: grid;
    gap: 16px;
}

.citizen-grid-2 {
    display: grid;
    gap: 16px;
}

.citizen-grid-3 {
    display: grid;
    gap: 16px;
}

/* Buscador */

.citizen-search-box {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
    min-height: 58px;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 18px;
}

.citizen-search-box i {
    color: var(--sc-muted);
    font-size:var(--sc-text-lg);
}

.citizen-search-box input {
    width: 100%;
    border: 0;
    outline: 0;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
    color: var(--sc-text);
    background: transparent;
}

/* Tags */

.citizen-tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.citizen-tag,
.citizen-tag-list button {
    border: 1px solid var(--sc-border);
    background:var(--sc-white);
    color: var(--sc-text);
    border-radius: 999px;
    padding: 10px 14px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
    box-shadow: var(--sc-shadow-soft);
    cursor: pointer;
}

.citizen-tag:hover,
.citizen-tag-list button:hover {
    background:var(--sc-green-light);
    color: var(--sc-green-dark);
}

/* Card informativa */

.citizen-helper-card {
    background: var(--sc-green-light);
    border: 1px solid #cfead8;
    border-radius: var(--sc-radius-lg);
    padding: 16px;
    display: flex;
    gap: 12px;
}

.citizen-helper-card i {
    color: var(--sc-green-dark);
    font-size:var(--sc-text-xl);
    flex-shrink: 0;
}

.citizen-helper-card strong,
.citizen-helper-card span {
    display: block;
}

.citizen-helper-card strong {
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
}

.citizen-helper-card span {
    margin-top: 4px;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

/* Estados */

.citizen-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: 999px;
    padding: 7px 11px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    white-space: nowrap;
}

.citizen-status-pending {
    background: var(--sc-status-analisis-bg);
    color: var(--sc-status-analisis-text);
}

.citizen-status-progress {
    background: var(--sc-status-ejecucion-bg);
    color: var(--sc-status-ejecucion-text);
}

.citizen-status-done {
    background: var(--sc-status-finalizada-bg);
    color: var(--sc-status-finalizada-text);
}

.citizen-status-rejected {
    background: var(--sc-status-rechazada-bg);
    color: var(--sc-status-rechazada-text);
}


/* ==========================================================
   07.03 HOME
========================================================== */

.citizen-home-hero {
    min-height: 220px;
    border-radius: var(--sc-radius-xl);
    overflow: hidden;
    background:
        linear-gradient(90deg, rgba(238,248,241,.97) 0%, rgba(238,248,241,.75) 40%, rgba(238,248,241,.15) 75%),
        url("../img/background-login-white.png") center bottom / cover no-repeat,
        var(--sc-green-light);
    color: var(--sc-green-dark);
    display: flex;
    align-items: center;
    padding: 34px;
    box-shadow: var(--sc-shadow-card);
}

.citizen-home-date {
    margin: 0 0 12px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
    color: var(--sc-green-soft);
}

.citizen-home-hero h1 {
    margin: 0;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    line-height: 1.1;
    color: var(--sc-green-dark);
}

.citizen-home-hero p:last-child {
    margin: 10px 0 0;
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-normal);
    color: var(--sc-green-dark);
}


/* Cards de estadísticas */
.citizen-stat-card h3 {
    font-size: 1.6rem;
    font-weight: var(--sc-weight-black);
    color: var(--sc-green-dark);
    margin: 0 0 2px;
    line-height: 1;
}
.citizen-stat-card p {
    font-size: var(--sc-text-sm);
    color: var(--sc-muted);
    margin: 0;
}

.citizen-new-request {
    background: linear-gradient(90deg, var(--sc-green-dark), var(--sc-green-soft));
    color: #fff;
    text-decoration: none;
    border-radius: var(--sc-radius-lg);
    padding: 20px;
    display: grid;
    grid-template-columns: 52px 1fr 24px;
    gap: 14px;
    align-items: center;
    box-shadow: var(--sc-shadow-card);
}

.citizen-new-request:hover {
    color: #fff;
}

.citizen-new-request div:first-child {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: rgba(255,255,255,.16);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-xl);
}

.citizen-new-request strong,
.citizen-new-request span {
    display: block;
}

.citizen-new-request strong {
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
}

.citizen-new-request span {
    font-size:var(--sc-text-sm);
    color: rgba(255,255,255,.82);
    margin-top: 3px;
}

.citizen-service-list {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
    overflow: hidden;
}

.citizen-service-list article {
    display: flex;
    gap: 12px;
    padding: 16px 18px;
    border-bottom: 1px solid var(--sc-border);
}

.citizen-service-list article:last-child {
    border-bottom: 0;
}

.service-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin-top: 7px;
    flex-shrink: 0;
}

.service-dot.ok { background:var(--sc-green); }
.service-dot.warning { background: var(--sc-yellow); }
.service-dot.error { background: var(--sc-red); }

.citizen-service-list strong {
    display: block;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
}

.citizen-service-list p {
    margin: 2px 0 0;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.citizen-news-card {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
    padding: 18px;
}

.citizen-news-card span {
    display: inline-flex;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    border-radius: 999px;
    padding: 6px 10px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    margin-bottom: 10px;
}

.citizen-news-card strong {
    display: block;
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
}

.citizen-news-card p {
    margin: 6px 0 0;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.citizen-map-card,
.citizen-map-access {
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    padding: 18px;
    box-shadow: var(--sc-shadow-card);
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: center;
}

.citizen-map-card strong,
.citizen-map-card span,
.citizen-map-access strong,
.citizen-map-access span {
    display: block;
}

.citizen-map-card strong,
.citizen-map-access strong {
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
}

.citizen-map-card span,
.citizen-map-access span {
    margin-top: 4px;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.citizen-map-card a,
.citizen-map-access a {
    background: var(--sc-green-dark);
    color: #fff;
    text-decoration: none;
    border-radius: 999px;
    padding: 10px 16px;
    font-weight:var(--sc-weight-black);
    white-space: nowrap;
}


/* ==========================================================
   07.04 NUEVA GESTIÓN
========================================================== */

.citizen-new-types{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
}

.citizen-management-card,
.citizen-type-card {
    padding: 18px;
    display: grid;
    grid-template-columns: 56px 1fr 24px;
    gap: 14px;
    align-items: center;
}

.citizen-management-card .citizen-icon-box,
.type-icon {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size:var(--sc-text-xl);
}

.type-claim { background:var(--sc-green); }
.type-request { background:var(--sc-blue); }
.type-procedure { background:var(--sc-purple); }

.citizen-management-card strong,
.citizen-management-card span,
.citizen-type-card strong,
.citizen-type-card span {
    display: block;
}

.citizen-management-card strong,
.citizen-type-card strong {
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-black);
}

.citizen-management-card span,
.citizen-type-card span {
    margin-top: 4px;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
}

.citizen-management-card > .bi-chevron-right,
.citizen-type-card > .bi-chevron-right {
    color: var(--sc-green-dark);
    font-size:var(--sc-text-lg);
}


.citizen-search-results {
    display: none;
    background:var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    box-shadow: var(--sc-shadow-card);
    overflow: hidden;
}

.citizen-search-results.show {
    display: flex;
    flex-direction: column;
}

.citizen-search-result-link {
    width: 100%;
    min-height: 68px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--sc-border);
    background:var(--sc-white);
    color: var(--sc-text);
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
}

.citizen-search-result-link:last-child {
    border-bottom: 0;
}

.citizen-search-result-link:hover {
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
}

.citizen-search-result-link strong {
    display: block;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    line-height: 1.2;
}

.citizen-search-result-link span {
    display: block;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-medium);
}

.citizen-search-empty {
    padding: 18px;
    color: var(--sc-muted);
    font-weight:var(--sc-weight-medium);
}

/* ==========================================================
   NUEVA GESTIÓN  2 CARDS
   Si desean sumar TRAMITES eliminar estas dos clases
========================================================== */

/* Nueva gestión: solo Reclamo + Solicitud / omitir TRAMITES */


@media (max-width:768px){
    .citizen-new-types{
        grid-template-columns:1fr;
    }
}


/* ==========================================================
   07.05 RESPONSIVE
========================================================== */

/* MOBILE */

@media (max-width: 767px) {

    .citizen-page-head h1 {
        font-size:var(--sc-text-xl);
    }

    .citizen-grid,
    .citizen-grid-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .citizen-grid-3 {
        grid-template-columns: 1fr;
    }

    .citizen-home-hero {
        min-height: 180px;
        padding: 24px;
        border-radius: var(--sc-radius-lg);
    }

    .citizen-home-hero h1 {
        font-size:var(--sc-text-xl);
    }

    .citizen-home-hero p:last-child {
        font-size:var(--sc-text-base);
    }

    .citizen-quick-card {
        min-height: 146px;
        grid-template-columns: 1fr;
        padding: 16px;
    }

    .citizen-quick-card .citizen-icon-box,
    .citizen-quick-icon {
        width: 46px;
        height: 46px;
        font-size:var(--sc-text-lg);
    }

    .citizen-quick-card strong {
        font-size:var(--sc-text-sm);
        padding-right: 26px;
    }

    .citizen-quick-card span {
        top: 16px;
        right: 18px;
        font-size:var(--sc-text-lg);
    }

    .citizen-new-types {
        grid-template-columns: 1fr;
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 52px 1fr 20px;
        padding: 16px;
    }

    .citizen-management-card .citizen-icon-box,
    .type-icon {
        width: 52px;
        height: 52px;
    }

    .citizen-map-card,
    .citizen-map-access {
        flex-direction: column;
        align-items: flex-start;
    }

    .citizen-map-card a,
    .citizen-map-access a {
        width: 100%;
        text-align: center;
    }

    .citizen-grid-home {
    grid-template-columns: repeat(2, 1fr);
    }
}

/* TABLET */

@media (min-width: 768px) and (max-width: 1199px) {

    .citizen-grid,
    .citizen-grid-2,
    .citizen-grid-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-new-types {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 1fr;
        align-items: start;
        position: relative;
    }

    .citizen-management-card > .bi-chevron-right,
    .citizen-type-card > .bi-chevron-right {
        position: absolute;
        right: 18px;
        bottom: 18px;
    }
}

/* DESKTOP */

@media (min-width: 1200px) {

    .citizen-grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .citizen-grid-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .citizen-grid-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-quick-card {
        min-height: 150px;
        grid-template-columns: 1fr;
    }

    .citizen-section-head h2 {
        font-size:var(--sc-text-xl);
    }

    .citizen-new-page {
        max-width: 980px;
        margin: 0 auto;
    }

    .citizen-new-types {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 1fr;
        min-height: 190px;
        align-items: start;
        position: relative;
    }

    .citizen-management-card > .bi-chevron-right,
    .citizen-type-card > .bi-chevron-right {
        position: absolute;
        right: 18px;
        bottom: 18px;
    }
}

/* =========================================================
   09. UTILIDADES
   ========================================================= */

.text-sc-green {
    color: var(--sc-green) !important;
}

.bg-sc-green {
    background-color: var(--sc-green) !important;
}

.border-sc-green {
    border-color: var(--sc-green) !important;
}

.text-purple {
    color:var(--sc-purple);
}

/* =========================================================
   MIS GESTIONES
========================================================= */

.platform-page-wide {
    width: 100%;
    max-width: 1180px;
    margin: 0 auto;
}

.mis-gestiones-page {
    padding-bottom: 40px;
}

.gestiones-filter-card {
    margin-bottom: 34px;
    display: grid;
    gap: 16px;
}

.gestion-filter-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 240px;
    gap: 14px;
    align-items: center;
}

.gestion-filter-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.gestion-filter-tab {
    border: 1px solid var(--sc-border);
    background: var(--sc-white);
    color: var(--sc-text);
    border-radius: var(--sc-radius-pill);
    padding: 10px 18px;
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-sm);
}

.gestion-filter-tab.is-active {
    background: var(--sc-text);
    border-color: var(--sc-text);
    color: var(--sc-white);
}

.gestion-filter-tab.gestion-filter-reclamo.is-active {
    background: var(--sc-green-dark);
    border-color: var(--sc-green-dark);
}

.gestion-filter-tab.gestion-filter-solicitud.is-active {
    background: var(--sc-blue);
    border-color: var(--sc-blue);
}

.gestion-filter-tab.gestion-filter-turno.is-active {
    background:var(--sc-orange);
    border-color:var(--sc-orange);
}

.gestion-filter-tab.gestion-filter-inscripcion.is-active {
    background: var(--sc-yellow-dark);
    border-color: var(--sc-yellow-dark);
}

.gestion-status-select {
    width: 100%;
    min-height: 46px;
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-pill);
    background: var(--sc-white);
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    padding: 0 16px;
    outline: none;
}

.gestion-status-select:focus {
    border-color: var(--sc-green-dark);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--sc-green) 10%, transparent);
}

.gestion-view-switch {
    width: fit-content;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px;
    border-radius: var(--sc-radius-pill);
    background: var(--sc-bg);
    border: 1px solid var(--sc-border);
}

.gestion-view-btn {
    border: 0;
    background: transparent;
    color: var(--sc-muted);
    border-radius: var(--sc-radius-pill);
    padding: 9px 14px;
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-sm);
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.gestion-view-btn.is-active {
    background: var(--sc-white);
    color: var(--sc-green-dark);
    box-shadow: var(--sc-shadow-soft);
}

.gestiones-section {
    margin-bottom: 34px;
}

.platform-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.platform-section-head h2 {
    margin: 0;
    color: var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
}

.platform-section-head span {
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
}

.gestiones-table-card {
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    box-shadow: var(--sc-shadow-soft);
    overflow: hidden;
}

.gestiones-table {
    width: 100%;
    border-collapse: collapse;
}

.gestiones-table thead th {
    background:var(--sc-bg);
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    padding: 14px 16px;
    border-bottom: 1px solid var(--sc-border);
}

.gestiones-table tbody tr:nth-child(odd) {
    background: var(--sc-white);
}

.gestiones-table tbody tr:nth-child(even) {
    background:var(--sc-bg);
}

.gestiones-table td {
    padding: 8px;
    border-bottom: 1px solid var(--sc-border);
    vertical-align: middle;
    font-size:var(--sc-text-sm);
}

.gestiones-table tbody tr:last-child td {
    border-bottom: 0;
}

.gestiones-table td strong,
.gestiones-table td span {
    display: block;
}

.gestiones-table td strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.gestiones-table td span {
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    margin-top: 3px;
}

.gestion-kind {
    display: inline-flex !important;
    width: fit-content;
    align-items: center;
    gap: 6px;
    font-size: var(--sc-text-sm) !important;
    font-weight:var(--sc-weight-black);
    background: transparent;
}

.gestion-kind-reclamo {
    color: var(--sc-green-dark) !important;
}

.gestion-kind-solicitud {
    color: var(--sc-blue) !important;
}

.gestion-kind-turno {
    color: #f97316 !important;
}

.gestion-kind-inscripcion {
    color: var(--sc-yellow-dark) !important;
}

.gestion-status {
    display: inline-flex !important;
    width: fit-content;
    border-radius: var(--sc-radius-pill);
    padding: 7px 12px;
    font-size: var(--sc-text-xs) !important;
    font-weight:var(--sc-weight-black);
    line-height: 1;
}

.status-iniciada,
.status-registrado,
.status-pendiente {
    background: var(--sc-status-registrado-bg);
    color: var(--sc-status-registrado-text);
}

.status-analisis,
.status-en-analisis,
.status-observado {
    background: var(--sc-status-analisis-bg);
    color: var(--sc-status-analisis-text);
}

.status-programada {
    background: var(--sc-status-programada-bg);
    color: var(--sc-status-programada-text);
}

.status-ejecucion,
.status-en-ejecucion {
    background: var(--sc-status-ejecucion-bg);
    color: var(--sc-status-ejecucion-text);
}

.status-finalizada,
.status-resuelto {
    background: var(--sc-status-finalizada-bg);
    color: var(--sc-status-finalizada-text);
}

.status-rechazada,
.status-rechazado {
    background: var(--sc-status-rechazada-bg);
    color: var(--sc-status-rechazada-text);
}

.status-reabierta {
    background: var(--sc-status-reabierta-bg);
    color: var(--sc-status-reabierta-text);
}



.gestion-map-status-list label {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-sm);
}

.gestion-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.gestion-action-btn {
    min-height: 38px;
    min-width: 112px;
    border-radius: var(--sc-radius-pill);
    padding: 8px 16px;
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    line-height: 1;
    white-space: nowrap;
    border: 1px solid var(--sc-green-dark);
    color: var(--sc-green-dark);
    background: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.gestion-action-detail-solicitud {
    border-color: var(--sc-blue);
    color: var(--sc-blue);
}

.gestion-action-detail-turno {
    border-color:var(--sc-orange);
    color:var(--sc-orange);
}

.gestion-action-icon {
    width: 38px;
    height: 38px;
    border-radius: var(--sc-radius-pill);
    border: 1px solid var(--sc-border);
    background: var(--sc-white);
    color: var(--sc-green-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-base);
}

.gestion-action-whatsapp {
    color: #128c7e;
    border-color: color-mix(in srgb, #128c7e 40%, var(--sc-border));
}

.gestion-pagination {
    margin-top: 16px;
    display: flex;
    justify-content: center;
    gap: 8px;
}

.gestion-pagination button {
    width: 38px;
    height: 38px;
    border-radius: var(--sc-radius-pill);
    border: 1px solid var(--sc-border);
    background: var(--sc-white);
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.gestion-pagination button.is-active {
    background: var(--sc-green-dark);
    border-color: var(--sc-green-dark);
    color: var(--sc-white);
}

.gestion-pagination span {
    display: inline-flex;
    align-items: center;
    color: var(--sc-muted);
    font-weight:var(--sc-weight-black);
}

.gestion-map-actions {
    display: flex;
    gap: 8px;
}

.gestion-map-scope-btn {
    border: 1px solid var(--sc-border);
    background: var(--sc-white);
    color: var(--sc-muted);
    border-radius: var(--sc-radius-pill);
    padding: 10px 16px;
    font-weight:var(--sc-weight-black);
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

.gestion-map-scope-btn.is-active {
    background: var(--sc-green-dark);
    border-color: var(--sc-green-dark);
    color: var(--sc-white);
}

.gestion-map-layout {
    display: grid;
    grid-template-columns: 250px minmax(0, 1fr) 280px;
    gap: 16px;
}

.gestion-map-panel,
.gestion-map-card,
.gestion-map-detail {
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    box-shadow: var(--sc-shadow-soft);
}

.gestion-map-panel {
    display: grid;
    gap: 16px;
}

.gestion-map-box {
    padding: 20px;
    border-bottom: 1px solid var(--sc-border);
}

.gestion-map-box:last-child {
    border-bottom: 0;
}

.gestion-map-box h3 {
    margin: 0 0 16px;
    color: var(--sc-text);
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
    display: flex;
    align-items: center;
    gap: 8px;
}

.gestion-layer-check {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

.gestion-layer-check input {
    accent-color: var(--sc-green-dark);
}

.layer-dot,
.status-dot {
    width: 13px;
    height: 13px;
    border-radius: 50%;
    display: inline-block;
}

.pin-reclamo {
    background: var(--sc-green);
}

.pin-solicitud {
    background: var(--sc-blue);
}

.gestion-map-note {
    margin-top: 18px;
    padding: 14px;
    border-radius: var(--sc-radius-lg);
    background: var(--sc-bg);
    color: var(--sc-muted);
}

.gestion-map-note strong {
    display: block;
    color: var(--sc-text);
    margin-bottom: 4px;
}

.gestion-map-note p {
    margin: 0;
    font-size:var(--sc-text-sm);
}

.gestion-map-status-list {
    display: grid;
    gap: 10px;
}

.gestion-map-status-list span {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--sc-text);
    font-weight:var(--sc-weight-bold);
    font-size:var(--sc-text-sm);
}

.status-dot-iniciada,
.status-dot-registrado { background: var(--sc-status-registrado-dot); }
.status-dot-analisis   { background: var(--sc-status-analisis-dot); }
.status-dot-programada { background: var(--sc-status-programada-dot); }
.status-dot-ejecucion  { background: var(--sc-status-ejecucion-dot); }
.status-dot-finalizada { background: var(--sc-status-finalizada-dot); }
.status-dot-rechazada  { background: var(--sc-status-rechazada-dot); }
.status-dot-reabierta  { background: var(--sc-status-reabierta-dot); }

.gestion-map-card {
    overflow: hidden;
}

#misGestionesMap {
    min-height: 520px;
    width: 100%;
}

.gestion-map-marker {
    width: 34px;
    height: 34px;
    border-radius: 50% 50% 50% 0;
    transform: rotate(-45deg);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--sc-shadow-card);
}

.gestion-map-marker i {
    color: var(--sc-white);
    transform: rotate(45deg);
    font-size:var(--sc-text-base);
}

.marker-green {
    background: var(--sc-green);
}

.marker-blue {
    background: var(--sc-blue);
}

.gestion-map-detail {
    min-height: 520px;
    overflow: hidden;
}

.gestion-map-detail-empty {
    height: 100%;
    min-height: 520px;
    padding: 26px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: var(--sc-muted);
    text-align: center;
}

.gestion-map-detail-empty i {
    font-size:var(--sc-text-2xl);
    color: var(--sc-green-dark);
    margin-bottom: 12px;
}

.gestion-map-detail-empty strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    margin-bottom: 6px;
}

.gestion-map-detail-content {
    padding: 26px;
}

.gestion-map-detail-type {
    display: inline-flex;
    border-radius: var(--sc-radius-pill);
    padding: 8px 14px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    margin-bottom: 18px;
}

.gestion-map-type-reclamo {
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
}

.gestion-map-type-solicitud {
    background: rgba(21,148,201,.12);
    color: var(--sc-blue);
}

.gestion-map-detail-content h3 {
    margin: 0 0 16px;
    color: var(--sc-text);
    font-size:var(--sc-text-xl);
    font-weight:var(--sc-weight-black);
    line-height: 1.15;
}

.gestion-map-detail-list {
    display: grid;
    gap: 18px;
    margin: 22px 0;
}

.gestion-map-detail-list div {
    display: grid;
    grid-template-columns: 26px 1fr;
    gap: 6px 12px;
}

.gestion-map-detail-list i {
    grid-row: 1 / 3;
    color: var(--sc-green-dark);
    font-size:var(--sc-text-md);
    margin-top: 2px;
}

.gestion-map-detail-list span {
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
}

.gestion-map-detail-list strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
}

@media (max-width: 1199px) {
    .gestion-map-layout {
        grid-template-columns: 240px minmax(0, 1fr);
    }

    .gestion-map-detail {
        grid-column: 1 / -1;
        min-height: auto;
    }

    .gestion-map-detail-empty {
        min-height: 220px;
    }
}

@media (max-width: 991px) {
    .gestion-filter-row {
        grid-template-columns: 1fr;
    }

    .gestion-map-layout {
        grid-template-columns: 1fr;
    }

    .gestion-map-panel {
        order: 2;
    }

    .gestion-map-detail {
        order: 3;
    }
}

@media (max-width: 767px) {
    .platform-section-head {
        flex-direction: column;
        align-items: flex-start;
    }

    .gestion-map-actions {
        width: 100%;
    }

    .gestion-map-scope-btn {
        flex: 1;
        justify-content: center;
    }

    .gestion-view-switch {
        width: 100%;
        justify-content: space-between;
    }

    .gestion-view-btn {
        flex: 1;
        justify-content: center;
    }

    .gestiones-table thead {
        display: none;
    }

    .gestiones-table,
    .gestiones-table tbody,
    .gestiones-table tr,
    .gestiones-table td {
        display: block;
        width: 100%;
    }

    .gestiones-table tbody tr {
        border-bottom: 1px solid var(--sc-border);
        padding: 10px 0;
    }

    .gestiones-table td {
        border-bottom: 0;
        padding: 9px 16px;
        display: grid;
        grid-template-columns: 120px 1fr;
        gap: 12px;
    }

    .gestiones-table td::before {
        content: attr(data-label);
        color: var(--sc-muted);
        font-size:var(--sc-text-xs);
        font-weight:var(--sc-weight-black);
    }

    .gestiones-table td[data-label="Acciones"] {
        display: block;
    }

    .gestiones-table td[data-label="Acciones"]::before {
        display: none;
    }

    .gestiones-table th:last-child,
    .gestiones-table td:last-child {
        min-width: 190px;
    }

    .gestion-actions {
        justify-content: stretch;
        display: grid;
        grid-template-columns: 1fr 44px 44px;
    }

    .gestion-action-btn,
    .gestion-action-icon {
        width: 100%;
    }

    #misGestionesMap {
        min-height: 380px;
    }
}

.gestion-sort-btn {
    border: 0;
    background: transparent;
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.gestion-sort-btn:hover {
    color: var(--sc-green-dark);
}

.gestion-sort-btn i {
    font-size:var(--sc-text-sm);
    color: var(--sc-muted);
}

.gestiones-table tbody tr {
    transition: background .18s ease, box-shadow .18s ease;
}

.gestiones-table tbody tr:hover {
    background: var(--sc-green-light);
    box-shadow: inset 4px 0 0 var(--sc-green);
}

.gestion-action-btn:hover,
.gestion-action-icon:hover {
    transform: translateY(-1px);
    box-shadow: var(--sc-shadow-soft);
}

.gestion-action-btn:hover {
    background: var(--sc-green-light);
}

.gestion-action-detail-solicitud:hover {
    background: rgba(21,148,201,.10);
}

.gestion-action-detail-turno:hover {
    background: rgba(246,170,28,.12);
}

/* =========================================================
   DETALLE DE GESTIÓN
========================================================= */

.gestion-detail-page {
    padding-bottom: 56px;
}

.gestion-detail-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
    margin-bottom: 34px;
    text-decoration: none;
}

.gestion-detail-back:hover {
    color: var(--sc-green);
}

.gestion-detail-header {
    margin-bottom: 36px;
}

.gestion-detail-header h1 {
    margin: 8px 0 12px;
    color: var(--sc-text);
    font-size: clamp(2rem, 3.4vw, 3rem);
    font-weight:var(--sc-weight-black);
    letter-spacing: -.04em;
    line-height: 1.08;
}

.gestion-detail-header-meta {
    display: flex;
    align-items: center;
    gap: 10px;
}

.gestion-detail-whatsapp {
    display: none !important;
}

/* Layout principal */
.gestion-detail-layout,
.gestion-detail-layout-history-side {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 420px;
    gap: 24px;
    align-items: start;
}

.gestion-detail-main {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.gestion-detail-side {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.gestion-detail-history-side {
    position: sticky;
    top: 92px;
}

/* Cards */
.gestion-detail-card,
.gestion-detail-status-card {
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    box-shadow: var(--sc-shadow-soft);
    padding: 24px;
}

.gestion-detail-card h2 {
    margin: 0;
    color: var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    letter-spacing: -.025em;
}

.gestion-detail-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 20px;
}

.gestion-detail-card-head i {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-md);
}

/* Estado */
.gestion-detail-status-card {
    color: #fff;
    min-height: 150px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.gestion-detail-status-card span {
    display: block;
    color: rgba(255,255,255,.78);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-bottom: 10px;
}

.gestion-detail-status-card strong {
    display: block;
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    letter-spacing: -.04em;
    margin-bottom: 10px;
}

.gestion-detail-status-card p {
    margin: 0;
    color: rgba(255,255,255,.9);
    line-height: 1.5;
    font-size:var(--sc-text-base);
}

.status-card-registrado {
    background: linear-gradient(135deg, #6b7280, #374151);
}

.status-card-analisis {
    background: linear-gradient(135deg, #f6aa1c, #c98200);
}

.status-card-programada {
    background: linear-gradient(135deg, #ff7a1a, #d85b00);
}

.status-card-ejecucion {
    background: linear-gradient(135deg, var(--sc-blue), #0876a7);
}

.status-card-finalizada {
    background: linear-gradient(135deg, var(--sc-green), var(--sc-green-dark));
}

.status-card-rechazada {
    background: linear-gradient(135deg, var(--sc-red), #9f1d2b);
}

.status-card-reabierta {
    background: linear-gradient(135deg, var(--sc-purple), #5630a3);
}

/* Details desplegable */
.gestion-detail-summary-card summary {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    color: var(--sc-text);
    font-size:var(--sc-text-lg);
    font-weight:var(--sc-weight-black);
    letter-spacing: -.025em;
}

.gestion-detail-summary-card summary::-webkit-details-marker {
    display: none;
}

.gestion-detail-summary-card summary i {
    transition: transform .2s ease;
}

.gestion-detail-summary-card[open] summary {
    margin-bottom: 20px;
}

.gestion-detail-summary-card[open] summary i {
    transform: rotate(180deg);
}

.gestion-detail-summary-card:not([open]) .gestion-detail-data-grid {
    display: none;
}

/* Datos */
.gestion-detail-data-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.gestion-detail-data-grid div {
    background: var(--sc-bg);
    border-radius: var(--sc-radius-lg);
    padding: 18px 20px;
}

.gestion-detail-data-grid span {
    display: block;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    text-transform: uppercase;
    letter-spacing: .05em;
    margin-bottom: 8px;
}

.gestion-detail-data-grid p,
.gestion-detail-data-grid strong {
    margin: 0;
    color: var(--sc-text);
    font-size:var(--sc-text-md);
    font-weight:var(--sc-weight-medium);
    line-height: 1.45;
}

.gestion-detail-full {
    grid-column: 1 / -1;
}

/* Adjuntos */
.gestion-detail-attachments {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 14px;
    margin-top: 10px;
}

.gestion-attachment-card {
    display: block;
    border-radius: var(--sc-radius-lg);
    overflow: hidden;
    border: 1px solid var(--sc-border);
    background: var(--sc-bg);
    text-decoration: none;
    color: var(--sc-text);
    transition: transform .18s ease, box-shadow .18s ease;
}

.gestion-attachment-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--sc-shadow-soft);
}

.gestion-attachment-card img {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
}

.gestion-attachment-file {
    min-height: 140px;
    padding: 18px;
    display: grid;
    place-items: center;
    text-align: center;
    gap: 10px;
}

.gestion-attachment-file i {
    font-size:var(--sc-text-2xl);
    color: var(--sc-green-dark);
}

.gestion-attachment-file span {
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    word-break: break-word;
}

/* Mapa */
#gestionDetailMap {
    width: 100%;
    min-height: 340px;
    border-radius: var(--sc-radius-lg);
    overflow: hidden;
    border: 1px solid var(--sc-border);
}

.gestion-detail-map-caption {
    margin: 14px 0 0;
    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    line-height: 1.45;
    font-weight:var(--sc-weight-black);
}

/* Textos */
.gestion-detail-text,
.gestion-detail-empty-text {
    margin: 0;
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    line-height: 1.65;
}

.gestion-detail-empty-text {
    color: var(--sc-muted);
}

/* Historial */
.gestion-detail-history-card {
    padding: 24px;
}

.gestion-timeline {
    position: relative;
    display: grid;
    gap: 16px;
}

.gestion-timeline::before {
    content: "";
    position: absolute;
    left: 11px;
    top: 8px;
    bottom: 8px;
    width: 2px;
    background: var(--sc-border);
}

.gestion-timeline-item {
    position: relative;
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr);
    gap: 14px;
}

.gestion-timeline-marker {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--sc-green-dark);
    border: 5px solid var(--sc-green-light);
    position: relative;
    z-index: var(--sc-z-base);
}

.gestion-timeline-item.is-demo .gestion-timeline-marker {
    background: var(--sc-blue);
    border-color: rgba(21,148,201,.14);
}

.gestion-timeline-content {
    background: var(--sc-bg);
    border-radius: var(--sc-radius-lg);
    padding: 18px;
}

.gestion-timeline-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}

.gestion-timeline-top strong {
    color: var(--sc-text);
    font-weight:var(--sc-weight-black);
    font-size:var(--sc-text-base);
}

.gestion-timeline-top span {
    color: var(--sc-muted);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    white-space: nowrap;
}

.gestion-timeline-content p {
    margin: 0;
    color: var(--sc-muted);
    line-height: 1.5;
    font-size:var(--sc-text-sm);
}

.gestion-timeline-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 14px;
}

.gestion-timeline-tags span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: var(--sc-radius-pill);
    background: var(--sc-white);
    color: var(--sc-text);
    border: 1px solid var(--sc-border);
    padding: 6px 10px;
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
}

.gestion-timeline-demo-photo {
    margin-top: 14px;
    min-height: 120px;
    border: 1px dashed var(--sc-border);
    border-radius: var(--sc-radius-lg);
    background: var(--sc-white);
    color: var(--sc-muted);
    display: grid;
    place-items: center;
    gap: 6px;
    font-weight:var(--sc-weight-black);
}

.gestion-timeline-demo-photo i {
    font-size:var(--sc-text-xl);
    color: var(--sc-green-dark);
}

/* Desktop: Datos antes que mapa */
@media (min-width: 768px) {
    .gestion-detail-status-card {
        order: 1;
    }

    .gestion-detail-summary-card {
        order: 2;
    }

    .gestion-detail-map-card {
        order: 3;
    }

    .gestion-detail-summary-card:not([open]) {
        padding-bottom: 24px;
    }
}

/* Tablet */
@media (max-width: 1100px) {
    .gestion-detail-layout,
    .gestion-detail-layout-history-side {
        grid-template-columns: 1fr;
    }

    .gestion-detail-history-side {
        position: static;
    }
}

/* Mobile */
@media (max-width: 767px) {
    .gestion-detail-page {
        width: 100%;
        max-width: none;
        padding-left: 16px;
        padding-right: 16px;
        padding-bottom: 96px;
    }

    .gestion-detail-header {
        margin-bottom: 24px;
    }

    .gestion-detail-header h1 {
        font-size:var(--sc-text-xl);
        line-height: 1.15;
    }

    .gestion-detail-layout,
    .gestion-detail-layout-history-side {
        display: flex;
        flex-direction: column;
        gap: 18px;
        width: 100%;
    }

    .gestion-detail-main,
    .gestion-detail-history-side {
        width: 100%;
        min-width: 0;
    }

    .gestion-detail-main {
        display: flex;
        flex-direction: column;
        gap: 18px;
    }

    .gestion-detail-status-card {
        order: 1;
        width: 100%;
        min-height: 130px;
    }

    .gestion-detail-history-side {
        order: 2;
    }

    .gestion-detail-summary-card {
        order: 3;
        width: 100%;
    }

    .gestion-detail-map-card {
        order: 4;
        width: 100%;
    }

    .gestion-detail-card,
    .gestion-detail-status-card {
        padding: 18px;
        border-radius: 18px;
    }

    .gestion-detail-data-grid {
        grid-template-columns: 1fr;
    }

    .gestion-detail-summary-card:not([open]) {
        padding-bottom: 18px;
    }

    .gestion-timeline-top {
        display: grid;
        gap: 4px;
    }

    #gestionDetailMap {
        min-height: 250px;
    }
}

.gestion-detail-bottom-back {
    display: none;
}

@media (max-width: 767px) {
    .gestion-detail-bottom-back {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;lega
        width: 100%;
        margin-top: 22px;
        min-height: 46px;
        border-radius: var(--sc-radius-pill);
        background: var(--sc-green-dark);
        color: #fff;
        font-weight:var(--sc-weight-black);
        text-decoration: none;
        box-shadow: var(--sc-shadow-soft);
    }

    .gestion-detail-bottom-back:hover {
        color: #fff;
        background: var(--sc-green);
    }
}

#mapaCiudadanoMap {
    width: 100%;
    height: 100%;
    min-height: 620px;
    border-radius: var(--sc-radius-xl);
    overflow: hidden;
}

.mapa-ciudadano-card {
    min-height: 620px;
    overflow: hidden;
}
/* =========================================================
   NOTIFICACIONES
========================================================= */

.notifications-page {
    padding-bottom: 96px;
}

.notifications-filter-card {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    padding: 18px;
    box-shadow: var(--sc-shadow-soft);
    margin-bottom: 24px;
}

.notification-tab {
    border: 0;
    background: transparent;
    color: var(--sc-muted);
    border-radius: var(--sc-radius-pill);
    padding: 10px 20px;
    font-weight:var(--sc-weight-black);
}

.notification-tab.is-active {
    background: var(--sc-green-light);
    color: var(--sc-green-dark);
}

.notifications-list {
    display: grid;
    gap: 16px;
}

.notification-card {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    gap: 20px;
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    box-shadow: var(--sc-shadow-soft);
    padding: 24px;
}

.notification-card.notification-unread {
    background: linear-gradient(135deg, rgba(9,112,9,.08), #fff);
    border-color: rgba(9,112,9,.18);
}

.notification-icon {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size:var(--sc-text-xl);
}

.notification-icon-reclamo {
    background: var(--sc-green);
}

.notification-icon-solicitud {
    background: var(--sc-blue);
}

.notification-icon-turno {
    background:var(--sc-icon-orange);
}

.notification-icon-inscripcion {
    background: var(--sc-purple);
}

.notification-head {
    float: right;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.notification-head small {
    color: var(--sc-muted);
    font-weight:var(--sc-weight-black);
}

.notification-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.dot-green { background: var(--sc-green); }
.dot-blue { background: var(--sc-blue); }
.dot-yellow { background: var(--sc-yellow); }
.dot-orange { background:var(--sc-icon-orange); }

.notification-content h2 {
    margin: 0 0 14px;
    max-width: 720px;
    color: var(--sc-text);
    font-size:var(--sc-text-lg);
    line-height: 1.35;
    font-weight:var(--sc-weight-bold);
}

.notification-content h2 strong {
    color: var(--sc-green-dark);
    font-weight:var(--sc-weight-black);
}

.notification-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    color: var(--sc-muted);
    font-weight:var(--sc-weight-black);
    margin-bottom: 20px;
}

.notification-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.notification-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 18px;
}

.notification-actions .platform-btn {
    min-width: 220px;
}

@media (max-width: 767px) {
    .notifications-filter-card {
        overflow-x: auto;
        flex-wrap: nowrap;
        padding: 12px;
    }

    .notification-tab {
        white-space: nowrap;
    }

    .notification-card {
        grid-template-columns: 52px minmax(0, 1fr);
        gap: 14px;
        padding: 16px;
        border-radius: 18px;
    }

    .notification-icon {
        width: 48px;
        height: 48px;
        font-size:var(--sc-text-lg);
    }

    .notification-head {
        float: none;
        margin-bottom: 8px;
    }

    .notification-content h2 {
        font-size:var(--sc-text-base);
    }

    .notification-meta {
        gap: 12px;
        margin-bottom: 14px;
    }

    .notification-actions {
        display: grid;
        grid-template-columns: 1fr;
    }

    .notification-actions .platform-btn {
        width: 100%;
        min-width: 0;
    }
}

/* =========================================================
   ACCESO INICIAL / SELECTOR DE PLATAFORMA
========================================================= */

.access-selector-body {
    min-height: 100vh;
    background-image: url("../img/background-selector.png");
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
}

.access-selector-page {
    min-height: 100vh;
    padding: 22px 24px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    overflow: hidden;
        min-height: 100vh;
    background-image: url("../img/background-selector.png");
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
}

/* HEADER */

.access-selector-header {
    text-align: center;
    margin-bottom: 26px;
}

.access-municipal-logo {
    width: 185px;
    height: auto;
    margin-bottom: 20px;
}

.access-selector-header h1 {
    margin: 0;
    color: var(--sc-text);
    font-size: clamp(2rem, 3vw, 2.8rem);
    font-weight:var(--sc-weight-black);
    text-transform: uppercase;
    letter-spacing: -.03em;
}

.access-selector-header p {
    margin: 8px 0 0;
    color: var(--sc-text);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-normal);
}

.access-selector-header p strong {
    color: var(--sc-green);
    font-weight:var(--sc-weight-black);
}

/* GRID */

.access-selector-grid {
    width: 100%;
    max-width: 1040px;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 34px;
}

/* CARDS */

.access-card {
    padding: 30px 36px 26px;

    display: flex;
    flex-direction: column;
    align-items: center;

    background:
        radial-gradient(circle at bottom right, rgba(9,112,9,.08), transparent 40%),
        #fff;

    border: 1px solid var(--sc-border);
    border-radius: 22px;
    box-shadow: var(--sc-shadow-lg);

    color: inherit;
    text-decoration: none;
    cursor: pointer;

    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.access-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 24px 58px rgba(20, 35, 50, .14);
    border-color: rgba(9,112,9,.25);
}

.access-card-com {
    background:
        radial-gradient(circle at bottom right, rgba(31,41,51,.06), transparent 40%),
        #fff;
}

/* LOGOS */

.access-card-logo-wrap {
    height: 130px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.access-card-logo {
    display: block;
    width: auto;
    height: auto;
    object-fit: contain;
}

.access-card-logo-sancapp {
    width: 190px;
    max-height: 130px;
}

.access-card-logo-com {
    width: 265px;
    max-height: 130px;
}

/* DIVISOR */

.access-card-divider {
    width: 60px;
    height: 3px;
    background: var(--sc-green);
    border-radius: 999px;
    margin: 10px 0 22px;
}

/* LISTA */

.access-feature-list {
    width: 100%;
    max-width: 310px;
    list-style: none;
    padding: 0;
    margin: 0 0 24px;

    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px 22px;
}

.access-feature-list li {
    display: flex;
    align-items: center;
    gap: 9px;

    color: var(--sc-text);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
}

.access-feature-list i {
    color: var(--sc-green-dark);
    font-size:var(--sc-text-base);
}

/* ACCION */

.access-card-action {
    margin-top: 18px;

    display: inline-flex;
    align-items: center;
    gap: 8px;

    color: var(--sc-green-dark);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-black);
    opacity: .75;

    transition: opacity .18s ease, transform .18s ease;
}

.access-card:hover .access-card-action {
    opacity: 1;
    transform: translateX(4px);
}

/* FOOTER */

.access-selector-footer {
    margin-top: 22px;

    display: flex;
    justify-content: center;
    gap: 28px;

    color: var(--sc-muted);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
}

.access-selector-footer span {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* TABLET */

@media (max-width: 991px) {
    .access-selector-page {
        padding: 28px 18px 70px;
        overflow: visible;
    }

    .access-selector-grid {
        grid-template-columns: 1fr;
        max-width: 620px;
        gap: 20px;
    }

    .access-card {
        min-height: auto;
    }
}

/* MOBILE */

@media (max-width: 575px) {
    .access-municipal-logo {
        width: 160px;
        margin-bottom: 16px;
    }

    .access-selector-header h1 {
        font-size:var(--sc-text-xl);
        line-height: 1.05;
    }

    .access-selector-header p {
        font-size:var(--sc-text-sm);
        line-height: 1.35;
    }

    .access-card {
        padding: 26px 22px;
    }

    .access-card-logo-wrap {
        height: 105px;
    }

    .access-card-logo-sancapp {
        width: 145px;
        max-height: 105px;
    }

    .access-card-logo-com {
        width: 205px;
        max-height: 105px;
    }

    .access-feature-list {
        grid-template-columns: 1fr;
        max-width: 220px;
        gap: 12px;
    }

    .access-selector-footer {
        flex-direction: column;
        gap: 10px;
        align-items: center;
    }
}


/* ── citizen/components/action_card ────────────────────────────────────────
   Card de acción principal del home ciudadano
   ──────────────────────────────────────────────────────────────────────── */
.citizen-action-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* citizen-action-card eliminado — usar platform-action-card */

/* ── citizen/components/status_summary ──────────────────────────────────────
   Resumen compacto de gestiones activas
   ──────────────────────────────────────────────────────────────────────── */
.citizen-status-summary {
    margin-top: 28px;
}
.citizen-status-summary-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.citizen-status-summary-head h2 {
    font-size: var(--sc-text-lg);
    font-weight: var(--sc-weight-bold);
    color: var(--sc-dark);
    margin: 0;
}
.citizen-status-summary-link {
    font-size: var(--sc-text-sm);
    color: var(--sc-green-dark);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 4px;
}
.citizen-status-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
.citizen-status-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 16px 8px;
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-lg);
    text-decoration: none;
    color: var(--sc-dark);
    text-align: center;
    transition: border-color .15s;
}
.citizen-status-item:hover {
    border-color: var(--sc-green-dark);
}
.citizen-status-item-icon {
    width: 44px;
    height: 44px;
    border-radius: var(--sc-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
}
.citizen-status-item strong {
    font-size: 1.4rem;
    font-weight: var(--sc-weight-black);
    color: var(--sc-dark);
    line-height: 1;
}
.citizen-status-item span {
    font-size: var(--sc-text-xs);
    color: var(--sc-muted);
}

/* citizen-action-colored eliminado — usar platform-action-card--{color} */

/* Responsive */
@media (max-width: 480px) {
    .citizen-status-summary-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .citizen-action-card-icon {
        width: 44px;
        height: 44px;
        font-size: 1.2rem;
    }
}




/* =========================================================
   10. LEGACY - BORRAR PROGRESIVAMENTE
   Estos estilos quedan sólo para no romper templates viejos.
   A medida que todos los templates usen platform-*, se eliminan.
========================================================= */

/* =========================================================
   10.01 HEADER PRINCIPAL (legacy)
   ========================================================= */

.municipal-logo {
    height: 60px;
    width: auto;
    display: block;
}






.header-action-group {
    min-height: 58px;
    display: flex;
    align-items: center;
    padding: 0 24px;
    border-left: 1px solid rgba(255, 255, 255, .32);
}

.notification-btn {
    position: relative;
    width: 42px;
    height: 42px;
    border: 0;
    background: transparent;
    color: var(--sc-white);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size:var(--sc-text-xl);
    padding: 0;
    transition: transform .2s ease, opacity .2s ease;
}

.notification-btn:hover {
    color: var(--sc-white);
    opacity: .9;
    transform: translateY(-1px);
}



.user-avatar {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .18);
    border: 1px solid rgba(255, 255, 255, .28);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--sc-white);
    font-size:var(--sc-text-base);
    font-weight:var(--sc-weight-black);
    flex-shrink: 0;
}





.logout-btn {
    border: 0;
    background: transparent;
    color: rgba(255, 255, 255, .92);
    font-size:var(--sc-text-sm);
    font-weight:var(--sc-weight-bold);
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 0;
}

.logout-btn i {
    font-size:var(--sc-text-lg);
}

.logout-btn:hover {
    color: var(--sc-white);
}



/* ==========================================================
   10.04 HEADER ciudadano (legacy)
========================================================== */














/* ==========================================================
   10.05 NAVEGACIÓN DESKTOP (legacy)
========================================================== */







/* ==========================================================
   10.06 BOTTOM NAV (legacy)
========================================================== */









/* ==========================================================
   10.07 DRAWER (legacy)
========================================================== */












/* =========================================================
   11. RESPONSIVE GENERAL
   ========================================================= */

@media (max-width: 1399px) {
    .kpi-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@media (max-width: 1199px) {
    .municipal-brand {
        min-width: 250px;
    }

    .municipal-menu .nav-link {
        padding: 0 18px !important;
        font-size:var(--sc-text-sm);
    }

    .kpi-card-clean {
        min-height: 126px;
    }
}

@media (max-width: 991px) {
    .municipal-topbar {
        min-height: 78px;
    }

    .municipal-header-container {
        padding-left: 18px;
        padding-right: 18px;
    }

    .municipal-brand {
        min-width: auto;
    }

    .municipal-logo {
        height: 46px;
    }

    .municipal-divider,
    .municipal-title,
    .notification-btn,
    .header-action-group.d-none,
    .header-action-group.d-lg-flex,
    .user-info,
    .logout-btn {
        display: none !important;
    }

    .municipal-actions {
        gap: 12px;
    }

    .header-action-group {
        border-left: 0;
        padding: 0;
    }

    .user-avatar {
        width: 42px;
        height: 42px;
        font-size:var(--sc-text-sm);
    }



    .municipal-nav {
        min-height: auto;
    }

    #municipalMenu {
        background: var(--sc-white);
        border-top: 1px solid var(--sc-border);
        box-shadow: 0 10px 24px rgba(15, 23, 42, .12);
    }

    .municipal-menu {
        display: block;
        width: 100%;
    }

    .municipal-menu .nav-link {
        min-height: 54px;
        border-right: 0;
        border-bottom: 1px solid var(--sc-border);
        padding: 0 20px !important;
        font-size:var(--sc-text-sm);
        justify-content: flex-start;
    }

    .municipal-menu .nav-link.active::after,
    .municipal-menu .nav-link:hover::after {
        display: none;
    }

    .municipal-menu .nav-link.active {
        background: var(--sc-green-light);
        color: var(--sc-green) !important;
    }

    .mobile-user-info {
        display: block;
        padding: 20px;
        background:var(--sc-bg);
        border-top: 1px solid var(--sc-border);
    }

    .dashboard-hero {
        flex-direction: column;
        align-items: flex-start;
    }

    .dashboard-date-card {
        width: 100%;
        justify-content: flex-start;
    }

    .dashboard-filters {
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .dashboard-panel {
        grid-template-columns: 1fr;
    }

    .chart-section {
        padding-right: 0;
        border-right: 0;
        border-bottom: 1px solid var(--sc-border);
        padding-bottom: 24px;
    }

    .operational-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .operation-dashboard {
        padding-left: 0;
        padding-right: 0;
    }

    .dashboard-hero {
        gap: 18px;
    }

    .dashboard-title {
        font-size:var(--sc-text-xl);
        line-height: 1.15;
    }

    .dashboard-date-card {
        padding: 16px;
    }

    .dashboard-filters {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 10px;
    }

    .dashboard-filters .form-control,
    .dashboard-filters .btn,
    .dashboard-filters a {
        max-width: none;
        width: 100%;
    }

    .kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .kpi-card-clean {
        min-height: 130px;
        padding: 16px 14px;
        grid-template-columns: 48px minmax(0, 1fr);
        grid-template-rows: 40px 42px 22px;
        column-gap: 12px;
    }

    .kpi-icon {
        width: 48px;
        height: 48px;
        border-radius: 12px;
    }

    .kpi-label {
        font-size:var(--sc-text-xs);
        line-height: 1.08;
    }

    .kpi-number {
        font-size:var(--sc-text-2xl);
    }

    .kpi-caption {
        font-size:var(--sc-text-xs);
    }

    .dashboard-panel {
        padding: 20px;
    }

    .activity-header {
        align-items: flex-start;
    }

    .activity-item {
        grid-template-columns: 12px minmax(0, 1fr);
    }

    .activity-badge {
        grid-column: 2;
        width: fit-content;
        max-width: 100%;
    }
}

@media (max-width: 575px) {
    .municipal-header-container {
        padding-left: 14px;
        padding-right: 14px;
    }

    .municipal-logo {
        height: 42px;
    }

    .user-avatar {
        width: 38px;
        height: 38px;
    }

    .dashboard-title {
        font-size:var(--sc-text-xl);
    }

    .dashboard-date-card {
        flex-direction: column;
        align-items: flex-start;
    }

    .kpi-grid {
        grid-template-columns: 1fr;
    }

    .operational-metrics {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .dashboard-filters {
        grid-template-columns: 1fr;
    }

    .login-page-wrapper {
        min-height: calc(100vh - 260px);
        padding: 32px 18px 18px;
        align-items: flex-start;
    }

    .login-card-municipal {
        padding: 28px 22px;
        border-radius: 18px;
    }

    .login-logo {
        height: 52px;
        margin-bottom: 20px;
    }

    .login-title {
        font-size:var(--sc-text-2xl);
    }

    .login-landscape {
        height: 210px;
        background-size: auto 210px;
    }
}

/* =========================================================
   LOGIN CENTRO DE OPERACIONES
========================================================= */

.login-page {
    min-height: 100vh;
    background-image: url("../img/background-login-COM.png");
    background-size: cover;
    background-position: center bottom;
    background-repeat: no-repeat;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 32px;
}

.login-card {
    width: 100%;
    max-width: 560px;

    background: rgba(255, 255, 255, .96);
    border-radius: 32px;
    box-shadow: 0 24px 70px rgba(20, 35, 50, .16);

    padding: 48px 48px 44px;
    text-align: center;
}

.login-logo-com {
    width: 430px;
    max-width: 85%;
    height: auto;
    margin-bottom: 38px;
}


.login-card h1 {
    margin: 0 0 8px;
    color: var(--sc-green);
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
}

.login-card p {
    margin: 0 0 34px;
    color: var(--sc-muted);
    font-size:var(--sc-text-md);
}

.login-form {
    text-align: left;
}

.login-form label {
    color: var(--sc-text);
    font-weight:var(--sc-weight-medium);
    margin-bottom: 8px;
}

.login-form input {
    width: 100%;
    min-height: 48px;

    border: 1px solid var(--sc-border);
    border-radius: 8px;

    padding: 0 16px;
    font-size:var(--sc-text-base);
}

.login-form input:focus {
    outline: none;
    border-color: var(--sc-green);
    box-shadow: 0 0 0 3px rgba(9,112,9,.12);
}



/* MOBILE */

@media (max-width: 575px) {
    .login-page {
        background-image: url("../img/background-login-mobile-COM.png");
        background-size: cover;
        background-position: center bottom;
        padding: 20px;
    }

    .login-card {
        max-width: 100%;
        padding: 34px 24px 30px;
        border-radius: 28px;
    }

    .login-logo-com {
        width: 230px;
        margin-bottom: 24px;
    }

    .login-municipal-seal {
        width: 135px;
    }

    .login-card h1 {
        font-size:var(--sc-text-xl);
    }

    .login-card p {
        font-size:var(--sc-text-sm);
        margin-bottom: 26px;
    }

    .login-btn {
        min-height: 54px;
    }
}


/* =========================================================
   LOGIN APP CIUDADANA
========================================================= */

.citizen-login-page {
    min-height: 100vh;

    background-image: url("../img/background-login-Sancapp.png");
    background-size: cover;
    background-position: center bottom;
    background-repeat: no-repeat;

    display: flex;
    align-items: center;
    justify-content: center;

    padding: 32px;
}

.citizen-login-card {
    width: 100%;
    max-width: 560px;

    padding: 46px;

    background: rgba(255,255,255,.96);

    border-radius: 32px;

    box-shadow: 0 24px 70px rgba(20,35,50,.15);
}

.citizen-login-logo {
    width: 270px;
    max-width: 90%;
    margin-bottom: 20px;
}

.citizen-login-form {
    margin-top: 20px;
}

.citizen-login-form input {
    width: 100%;
    min-height: 48px;

    border: 1px solid var(--sc-border);
    border-radius: 8px;

    padding: 0 16px;
    font-size: var(--sc-text-base);
}

.citizen-login-form input:focus {
    outline: none;
    border-color: var(--sc-green-dark);
    box-shadow: 0 0 0 3px rgba(9,112,9,.12);
}

.citizen-login-links {
    margin-top: 26px;
}

.citizen-login-register {
    display: block;
    text-align: center;
    color: var(--sc-green-dark);
    font-weight: var(--sc-weight-medium);
    font-size: var(--sc-text-sm);
    text-decoration: none;
}

.citizen-login-links-grid {
    display: grid;
    grid-template-columns: repeat(2,1fr);
    gap: 20px;
}

.citizen-login-links-grid a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;

    text-decoration: none;

    color: var(--sc-muted);

    font-weight:var(--sc-weight-bold);
    font-size:var(--sc-text-xs);
}

/* ── Login: fila recordar + olvidé ─────────────────── */
.login-remember-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 16px;
    margin-bottom: 4%;
    padding: 8px;
}
.login-remember-label {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: var(--sc-text-sm);
    color: var(--sc-body);
    margin: 0;
}
.login-remember-label input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--sc-green-dark);
    cursor: pointer;
    flex-shrink: 0;
}
.login-forgot {
    font-size: var(--sc-text-sm);
    color: var(--sc-green-dark);
    text-decoration: none;
}
.login-forgot:hover { text-decoration: underline; }

@media (max-width: 400px) {
    .login-remember-row {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }
}

/* ── Login COM: bienvenida ──────────────────────────── */
.login-welcome-title {
    font-size: var(--sc-text-lg);
    font-weight: var(--sc-weight-semibold);
    color: var(--sc-dark);
    margin: 16px 0 4px;
}
.login-welcome-sub {
    font-size: var(--sc-text-sm);
    color: var(--sc-muted);
    margin: 0 0 8px;
}
.login-footer-note {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 20px;
    font-size: var(--sc-text-xs);
    color: var(--sc-muted);
}

/* ── Login SancApp: links inferiores ────────────────── */
.citizen-login-links {
    margin-top: 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}
.citizen-login-register-text {
    font-size: var(--sc-text-sm);
    color: var(--sc-muted);
    margin: 0;
}

.citizen-login-help {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 16px;
    background: var(--sc-surface-2, #f8f9fa);
    border-radius: var(--sc-radius);
    text-decoration: none;
    color: var(--sc-body);
}
.citizen-login-help strong {
    display: block;
    font-size: var(--sc-text-sm);
    color: var(--sc-dark);
}
.citizen-login-help span {
    font-size: var(--sc-text-xs);
    color: var(--sc-muted);
}
.citizen-login-help:hover { background: #eef0f2; }

.citizen-login-links-grid a:hover {
    color: var(--sc-green-dark);
}

/* MOBILE */
@media (max-width: 575px) {
    .citizen-login-page {
        padding: 20px;
    }

    .citizen-login-card {
        max-width: 100%;
        padding: 34px 24px 30px;
        border-radius: 28px;
    }

    .citizen-login-logo {
        width: 210px;
        margin-bottom: 16px;
    }

    .citizen-login-help {
        align-items: flex-start;
    }
}

.citizen-map-card-new {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 20px;
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: var(--sc-radius-xl);
    box-shadow: var(--sc-shadow-soft);
    margin-top: 8px;
}
.citizen-map-card-icon {
    width: 52px;
    height: 52px;
    border-radius: var(--sc-radius-lg);
    background: var(--sc-green-dark);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    flex-shrink: 0;
}
.citizen-map-card-body {
    flex: 1;
}
.citizen-map-card-body strong {
    display: block;
    font-weight: var(--sc-weight-bold);
    color: var(--sc-dark);
    margin-bottom: 4px;
}
.citizen-map-card-body span {
    font-size: var(--sc-text-sm);
    color: var(--sc-muted);
}
.citizen-map-card-btn {
    background: var(--sc-green-dark);
    color: #fff;
    padding: 12px 20px;
    border-radius: var(--sc-radius-pill);
    text-decoration: none;
    font-weight: var(--sc-weight-semibold);
    font-size: var(--sc-text-sm);
    white-space: nowrap;
    flex-shrink: 0;
}
.citizen-map-card-btn:hover {
    opacity: 0.9;
    color: #fff;
}

/* ==========================================================
   07.05 RESPONSIVE
========================================================== */

/* MOBILE */

@media (max-width: 767px) {
    .citizen-header-inner {
        min-height: 86px;
        padding: 0 18px;
    }

    .citizen-logo {
        height: 46px;
    }

    .citizen-header-notification {
        display: none;
    }

    .citizen-icon-btn {
        width: 46px;
        height: 46px;
        border-radius: 14px;
    }

    .citizen-icon-btn i {
        font-size:var(--sc-text-xl);
    }

    .citizen-desktop-nav {
        display: none;
    }

    .citizen-main {
        padding: 22px 18px 104px;
    }

    .citizen-bottom-nav {
        height: 76px;
        display: flex;
        justify-content: space-around;
        align-items: center;
    }

    .citizen-nav-add {
        width: 58px;
        height: 58px;
        margin-top: -30px;
    }

    .citizen-nav-add i {
        font-size:var(--sc-text-xl);
    }

    .citizen-page-head h1 {
        font-size:var(--sc-text-xl);
    }

    .citizen-grid,
    .citizen-grid-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .citizen-grid-3 {
        grid-template-columns: 1fr;
    }

    .citizen-home-hero {
        min-height: 180px;
        padding: 24px;
        border-radius: var(--sc-radius-lg);
    }

    .citizen-home-hero h1 {
        font-size:var(--sc-text-xl);
    }

    .citizen-home-hero p:last-child {
        font-size:var(--sc-text-base);
    }

    .citizen-quick-card {
        min-height: 146px;
        grid-template-columns: 1fr;
        padding: 16px;
    }

    .citizen-quick-card .citizen-icon-box,
    .citizen-quick-icon {
        width: 46px;
        height: 46px;
        font-size:var(--sc-text-lg);
    }

    .citizen-quick-card strong {
        font-size:var(--sc-text-sm);
        padding-right: 26px;
    }

    .citizen-quick-card span {
        top: 16px;
        right: 18px;
        font-size:var(--sc-text-lg);
    }

    .citizen-new-types {
        grid-template-columns: 1fr;
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 52px 1fr 20px;
        padding: 16px;
    }

    .citizen-management-card .citizen-icon-box,
    .type-icon {
        width: 52px;
        height: 52px;
    }

    .citizen-map-card,
    .citizen-map-access {
        flex-direction: column;
        align-items: flex-start;
    }

    .citizen-map-card a,
    .citizen-map-access a {
        width: 100%;
        text-align: center;
    }
}

/* TABLET */

@media (min-width: 768px) and (max-width: 1199px) {
    .citizen-header-inner {
        min-height: 100px;
        padding: 0 32px;
    }

    .citizen-logo {
        height: 54px;
    }

    .citizen-header-notification {
        display: none;
    }

    .citizen-icon-btn {
        width: 52px;
        height: 52px;
        border-radius: 15px;
    }

    .citizen-icon-btn i {
        font-size:var(--sc-text-xl);
    }

    .citizen-desktop-nav {
        display: none;
    }

    .citizen-main {
        padding: 30px 28px 116px;
    }

    .citizen-bottom-nav {
        height: 84px;
        display: flex;
        justify-content: space-around;
        align-items: center;
    }





    .citizen-nav-add {
        width: 64px;
        height: 64px;
        margin-top: -34px;
    }

    .citizen-nav-add i {
        font-size:var(--sc-text-xl);
    }

    .citizen-grid,
    .citizen-grid-2,
    .citizen-grid-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-new-types {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 1fr;
        align-items: start;
        position: relative;
    }

    .citizen-management-card > .bi-chevron-right,
    .citizen-type-card > .bi-chevron-right {
        position: absolute;
        right: 18px;
        bottom: 18px;
    }
}

/* DESKTOP */

@media (min-width: 1200px) {
    .citizen-header-inner {
        min-height: 92px;
        padding: 0 34px;
    }

    .citizen-logo {
        height: 60px;
    }

    .citizen-header-actions {
        margin-left: auto;
        padding-left: 24px;
        border-left: 1px solid rgba(255,255,255,.28);
    }

    .citizen-icon-btn {
        width: 42px;
        height: 42px;
        border-radius: var(--sc-radius-sm);
    }

    .citizen-icon-btn i {
        font-size:var(--sc-text-lg);
    }

    .citizen-desktop-nav {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
    }

    .citizen-bottom-nav {
        display: none;
    }

    .citizen-main {
        max-width: 1360px;
        margin: 0 auto;
        padding: 36px 34px;
    }

    .citizen-grid {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .citizen-grid-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .citizen-grid-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-quick-card {
        min-height: 150px;
        grid-template-columns: 1fr;
    }

    .citizen-section-head h2 {
        font-size:var(--sc-text-xl);
    }

    .citizen-new-page {
        max-width: 980px;
        margin: 0 auto;
    }

    .citizen-new-types {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .citizen-management-card,
    .citizen-type-card {
        grid-template-columns: 1fr;
        min-height: 190px;
        align-items: start;
        position: relative;
    }

    .citizen-management-card > .bi-chevron-right,
    .citizen-type-card > .bi-chevron-right {
        position: absolute;
        right: 18px;
        bottom: 18px;
    }
}

/* LOGO RESPONSIVO — visibilidad según breakpoint */


.platform-header-logo-full {
    display: block;
}

.platform-header-logo-mini {
    display: none;
}

@media (max-width: 991px) {
    .platform-header-logo-full {
        display: none;
    }

    .platform-header-logo-mini {
        display: block;
        height: 52px;
        width: auto;
    }

    .platform-brand {
        min-width: auto;
        max-width: 200px;
    }

    .platform-title-main {
        font-size:var(--sc-text-sm);
        max-width: 190px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .platform-title-sub {
        display: none;
    }
}

.turnos-tab-panel {
    display: none;
}

.turnos-tab-panel.is-active {
    display: block;
}


/* =========================================================
   PREVIEW CELULAR SIN ROMPER LA PLATAFORMA
========================================================= */

.platform-mobile-preview {
    position: fixed;
    inset: 0;
    z-index: var(--sc-z-preview);
    background:var(--sc-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.platform-mobile-preview-close {
    position: fixed;
    top: 22px;
    right: 26px;
    z-index: var(--sc-z-preview);
    border: 0;
    border-radius: 999px;
    background:var(--sc-green-dark);
    color: #fff;
    padding: 12px 18px;
    font-weight:var(--sc-weight-black);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.platform-phone-frame {
    width: 390px;
    height: 844px;
    max-height: calc(100vh - 48px);
    border: 14px solid #111827;
    border-radius: 46px;
    background: #111827;
    overflow: hidden;
    box-shadow: 0 24px 70px rgba(0,0,0,.35);
    position: relative;
}

.platform-phone-frame::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    width: 115px;
    height: 26px;
    transform: translateX(-50%);
    background: #111827;
    border-radius: 0 0 16px 16px;
    z-index: var(--sc-z-base);
}

.platform-phone-frame iframe {
    width: 390px;
    height: 844px;
    border: 0;
    display: block;
    background:var(--sc-bg);
}

/* ══════════════════════════════════════════════════════════════════════
   KPI CARDS "¿Qué tenés que hacer hoy?" — variante compacta con badge
   ══════════════════════════════════════════════════════════════════════ */

.kpi-today-grid{
    display:grid;
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:14px;
    margin-bottom:24px;
}

.kpi-today-card{
    border-radius:14px;
    padding:16px 16px 14px;
    border:1px solid var(--sc-border);
    display:flex;
    flex-direction:column;
    gap:10px;
    text-decoration:none;
    color:inherit;
    transition:transform .15s ease, box-shadow .15s ease;
}

a.kpi-today-card:hover{
    transform:translateY(-3px);
    box-shadow:var(--sc-shadow-card);
}

.kpi-today-head{
    display:flex;
    align-items:center;
    gap:10px;
}

.kpi-today-icon{
    width:34px;
    height:34px;
    border-radius:9px;
    display:flex;
    align-items:center;
    justify-content:center;
    color:#fff;
    font-size:.95rem;
    flex-shrink:0;
}

.kpi-today-label{
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    text-transform:uppercase;
    letter-spacing:.02em;
    color:var(--sc-text);
}

.kpi-today-number{
    font-size:var(--sc-text-2xl);
    font-weight:var(--sc-weight-black);
    line-height:1;
    color:var(--sc-text);
}

.kpi-today-badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:fit-content;
    padding:4px 12px;
    border-radius:var(--sc-radius-pill);
    font-size:var(--sc-text-xs);
    font-weight:var(--sc-weight-black);
    border:1.5px solid currentColor;
    letter-spacing:.02em;
}

/* Variantes de color, reusando los tokens de estado ya existentes */
.kpi-today-red{ background: color-mix(in srgb, var(--sc-status-rechazada-dot) 8%, white); }
.kpi-today-red .kpi-today-icon{ background: var(--sc-status-rechazada-dot); }
.kpi-today-red .kpi-today-badge{ color: var(--sc-status-rechazada-dot); }

.kpi-today-blue{ background: color-mix(in srgb, var(--sc-status-ejecucion-dot) 8%, white); }
.kpi-today-blue .kpi-today-icon{ background: var(--sc-status-ejecucion-dot); }
.kpi-today-blue .kpi-today-badge{ color: var(--sc-status-ejecucion-dot); }

.kpi-today-gray{ background: var(--sc-white); }
.kpi-today-gray .kpi-today-icon{ background: var(--sc-status-registrado-dot); }
.kpi-today-gray .kpi-today-badge{ color: var(--sc-muted); border-color: var(--sc-border); }

.kpi-today-green{ background: color-mix(in srgb, var(--sc-status-finalizada-dot) 8%, white); }
.kpi-today-green .kpi-today-icon{ background: var(--sc-status-finalizada-dot); }
.kpi-today-green .kpi-today-badge{ color: var(--sc-status-finalizada-dot); }

.kpi-today-orange{ background: color-mix(in srgb, var(--sc-status-programada-dot) 8%, white); }
.kpi-today-orange .kpi-today-icon{ background: var(--sc-status-programada-dot); }
.kpi-today-orange .kpi-today-badge{ color: var(--sc-status-programada-dot); }

@media (max-width: 767px){
    .kpi-today-grid{
        grid-template-columns:repeat(2, minmax(0, 1fr));
    }
}

/* ══════════════════════════════════════════════════════════════════════
   MINI MAPA — columna "Mapa operativo" del dashboard Operador
   ══════════════════════════════════════════════════════════════════════ */

.dashboard-mini-map{
    width:100%;
    height:320px;
    border-radius: 12px;
    overflow: hidden;
    position: relative;
    background: var(--sc-bg);
}



.dashboard-mini-map{
    position: relative;
}

.dashboard-mini-map-empty{
    position:absolute;
    inset:0;
    display:flex;
    align-items:center;
    justify-content:center;
    background:rgba(255,255,255,.85);
    font-size:var(--sc-text-sm);
    color:var(--sc-muted);
    text-align:center;
    padding:16px;
    z-index:500;
}

/* ══════════════════════════════════════════════════════════════════════
   TABLA COMPACTA — variante para columnas angostas (dashboard 3 col)
   ══════════════════════════════════════════════════════════════════════ */

.gestiones-table-compact{
    font-size: var(--sc-text-xs);
}

.gestiones-table-compact th{
    padding: 8px 10px;
}

.gestiones-table-compact td{
    padding: 10px;
}

.gestiones-table-compact td strong{
    display:block;
    font-size: var(--sc-text-xs);
}

.gestiones-table-compact td span{
    font-size: var(--sc-text-xs);
    white-space: normal;
}

.gestiones-table-compact .gestion-status{
    padding: 4px 9px;
    font-size: 10px !important;
}

/* ── Card unificada de columna del dashboard (título+botón adentro) ──────── */
.dashboard-column-card{
    padding: 18px !important;
}

.dashboard-column-card .activity-header{
    margin-bottom: 14px;
}

.dashboard-column-card .gestiones-table-card,
.dashboard-column-card table.gestiones-table{
    border: none;
    box-shadow: none;
    border-radius: 0;
}

.dashboard-column-card .gestiones-table th:first-child,
.dashboard-column-card .gestiones-table td:first-child{
    padding-left: 8px;
}

.dashboard-column-card .gestiones-table th:last-child,
.dashboard-column-card .gestiones-table td:last-child{
    padding-right: 0;
}

.dashboard-column-table-wrap{
    overflow-x: auto;
}

.dashboard-column-table-wrap .gestiones-table{
    min-width: 720px;
}

/* ══════════════════════════════════════════════════════════════════════
   TIMELINE COMPACTO — "Actividad reciente" del dashboard
   (reusa .gestion-timeline* de la App Ciudadana, versión más chica)
   ══════════════════════════════════════════════════════════════════════ */

.gestion-timeline-compact .gestion-timeline-item{
    text-decoration: none;
    color: inherit;
    transition: opacity .15s ease;
}

.gestion-timeline-compact .gestion-timeline-item:hover{
    opacity: .75;
}

.gestion-timeline-compact .gestion-timeline-content{
    padding: 12px 14px;
}

.gestion-timeline-compact .gestion-timeline-top strong{
    font-size: var(--sc-text-sm);
}

.gestion-timeline-compact .gestion-timeline-content p{
    font-size: var(--sc-text-xs);
}

.gestion-timeline-marker.marker-yellow{
    background: var(--sc-status-analisis-dot, #f6aa1c);
    border-color: var(--sc-status-analisis-bg, #fdf3dd);
}

.gestion-timeline-marker.marker-blue{
    background: var(--sc-status-ejecucion-dot, #19b9d2);
    border-color: var(--sc-status-ejecucion-bg, #e3f7fa);
}

.gestion-timeline-marker.marker-green{
    background: var(--sc-status-finalizada-dot, #1f9d55);
    border-color: var(--sc-status-finalizada-bg, #e5f6ec);
}

/* ══════════════════════════════════════════════════════════════════════
   DASHBOARD ÚNICO — Resumen (donut), Prioridad (barras), Tabs de gestiones
   ══════════════════════════════════════════════════════════════════════ */

.dashboard-summary-body{
    display: flex;
    align-items: center;
    gap: 28px;
    margin: 12px 0 20px;
}

.dashboard-summary-donut-wrap{
    position: relative;
    width: 190px;
    height: 190px;
    flex-shrink: 0;
    margin: 0;
}

.dashboard-summary-donut-total{
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    pointer-events: none;
}

.dashboard-summary-donut-total strong{
    font-size: var(--sc-text-2xl);
    font-weight: var(--sc-weight-black);
    line-height: 1;
    color: var(--sc-text);
}

.dashboard-summary-donut-total span{
    font-size: var(--sc-text-sm);
    color: var(--sc-muted);
}

.dashboard-summary-legend{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
    min-width: 0;
}

.dashboard-summary-legend li{
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: var(--sc-text-sm);
    color: var(--sc-text);
}

.dashboard-summary-legend li b{
    margin-left: auto;
    font-weight: var(--sc-weight-black);
    font-size: var(--sc-text-md, 1rem);
}

.dashboard-summary-legend .dot{
    width: 11px;
    height: 11px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* ── Barras de prioridad ──────────────────────────────────────────────── */

.dashboard-priority-bars{
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-top: 8px;
}

.dashboard-priority-row{
    display: grid;
    grid-template-columns: 60px 1fr 28px;
    align-items: center;
    gap: 10px;
}

.dashboard-priority-label{
    font-size: var(--sc-text-xs);
    font-weight: var(--sc-weight-black);
}

.dashboard-priority-track{
    height: 8px;
    border-radius: 999px;
    background: var(--sc-bg);
    overflow: hidden;
}

.dashboard-priority-fill{
    height: 100%;
    border-radius: 999px;
}

.dashboard-priority-value{
    font-size: var(--sc-text-xs);
    font-weight: var(--sc-weight-black);
    text-align: right;
}

.priority-critica{ color: #dc3545; }
.priority-alta{ color: #f97316; }
.priority-media{ color: #f6aa1c; }
.priority-baja{ color: #097009; }

.dashboard-priority-fill.priority-critica{ background: #dc3545; }
.dashboard-priority-fill.priority-alta{ background: #f97316; }
.dashboard-priority-fill.priority-media{ background: #f6aa1c; }
.dashboard-priority-fill.priority-baja{ background: #097009; }

/* ── Tabs Reclamos / Solicitudes ──────────────────────────────────────── */

.dashboard-gestiones-area-filter{
    margin-bottom: 12px;
}

.dashboard-gestiones-area-filter select{
    max-width: 220px;
}

.dashboard-gestiones-tabs{
    border-bottom: 1px solid var(--sc-border);
    margin-bottom: 16px;
    gap: 4px;
}

.dashboard-gestiones-tabs .nav-link{
    border: none;
    border-bottom: 2px solid transparent;
    color: var(--sc-muted);
    font-weight: var(--sc-weight-black);
    font-size: var(--sc-text-sm);
    padding: 8px 4px;
    margin-right: 20px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.dashboard-gestiones-tabs .nav-link.active{
    color: var(--sc-role-sidebar-bg, var(--sc-green));
    border-bottom-color: var(--sc-role-sidebar-bg, var(--sc-green));
    background: transparent;
}

.dashboard-tab-count{
    background: var(--sc-bg);
    border-radius: 999px;
    padding: 1px 8px;
    font-size: 11px;
}

.dashboard-gestiones-tabs .nav-link.active .dashboard-tab-count{
    background: var(--sc-role-sidebar-bg, var(--sc-green));
    color: #fff;
}

/* ── Acciones rápidas: grid más compacto en esta columna angosta ─────────── */

.dashboard-quick-actions-grid{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.dashboard-quick-action{
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--sc-border);
    border-radius: 12px;
    text-decoration: none;
    color: inherit;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.dashboard-quick-action:hover{
    border-color: var(--sc-role-sidebar-bg, var(--sc-green));
    box-shadow: var(--sc-shadow-soft);
}

.dashboard-quick-action i{
    font-size: 1.1rem;
    color: var(--sc-role-sidebar-bg, var(--sc-green));
    margin-top: 2px;
    flex-shrink: 0;
}

.dashboard-quick-action span{
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.dashboard-quick-action strong{
    font-size: var(--sc-text-sm);
    font-weight: var(--sc-weight-black);
    color: var(--sc-text);
    line-height: 1.2;
}

.dashboard-quick-action small{
    font-size: 11px;
    color: var(--sc-muted);
    line-height: 1.2;
}

/* Acciones rápidas se mantiene en 2 columnas también en mobile
   (ver bloque RESPONSIVE DASHBOARD más abajo para el resto de las reglas) */

/* ══════════════════════════════════════════════════════════════════════
   RESPONSIVE DASHBOARD — VERSIÓN FINAL DEL RESPONSIVE (spec: no modificar)
   Orden mobile: Resumen Reclamos > Resumen Solicitudes > Mis Gestiones >
   Acciones > Novedades
   Se ocultan en mobile: KPIs "Gestiones operativas"
   ══════════════════════════════════════════════════════════════════════ */

@media (max-width: 991px){

    /* "Disolvemos" las dos filas de Bootstrap y el wrapper flex anidado
       para poder ordenar libremente los bloques entre sí en mobile. */
    .dashboard-rows-flex{
        display: flex;
        flex-direction: column;
    }

    .dashboard-fila-resumen,
    .dashboard-fila-principal,
    .dashboard-fila-principal > .col-12.col-lg-4{
        display: contents;
    }

    #dashboard-block-resumen-reclamos    { order: 1; }
    #dashboard-block-resumen-solicitudes { order: 2; }
    #dashboard-block-tabla     { order: 3; }
    #dashboard-block-acciones  { order: 4; }
    #dashboard-block-novedades { order: 5; }

    /* Se ocultan por completo en el dashboard mobile */
    #dashboard-block-kpis{
        display: none !important;
    }
}

/* ── KPIs 'Gestiones operativas' compactas en mobile (scroll horizontal) ── */

@media (max-width: 767px){
    .kpi-grid-clean{
        display: flex;
        grid-template-columns: none;
        overflow-x: auto;
        gap: 8px;
        padding-bottom: 4px;
        margin-bottom: 16px;
        -webkit-overflow-scrolling: touch;
    }

    .kpi-grid-clean > *{
        flex: 0 0 108px;
        min-height: auto;
    }

    .kpi-grid-clean .kpi-card,
    .kpi-grid-clean a{
        padding: 10px;
        min-height: auto;
    }

    .kpi-grid-clean .kpi-icon{
        width: 30px;
        height: 30px;
        font-size: .85rem;
    }

    .kpi-grid-clean .kpi-label{
        font-size: 10px;
        white-space: nowrap;
    }

    .kpi-grid-clean .kpi-number{
        font-size: var(--sc-text-lg);
    }

    .kpi-grid-clean .kpi-caption{
        font-size: 10px;
    }
}

@media (max-width: 480px){
    .dashboard-summary-body{
        flex-direction: column;
        align-items: center;
        text-align: center;
    }

    .dashboard-summary-legend li{
        justify-content: center;
    }

    .dashboard-summary-legend li b{
        margin-left: 8px;
    }
}

/* ══════════════════════════════════════════════════════════════════════
   KPI CARDS "Gestiones operativas" — estilo Citizen (icono, número,
   desglose reclamos/solicitudes, botón Ver detalles)
   ══════════════════════════════════════════════════════════════════════ */

.kpi-card-gestion{
    display: flex;
    flex-direction: column;
    background: var(--sc-white);
    border: 1px solid var(--sc-border);
    border-radius: 16px;
    padding: 18px;
    text-decoration: none;
    color: inherit;
    transition: transform .15s ease, box-shadow .15s ease;
}

.kpi-card-gestion:hover{
    transform: translateY(-3px);
    box-shadow: var(--sc-shadow-card);
}

.kpi-card-gestion-top{
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 18px;
}

.kpi-card-gestion .kpi-icon{
    width: 52px;
    height: 52px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    color: #fff;
    flex-shrink: 0;
}

.kpi-card-gestion-number{
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    text-align: right;
}

.kpi-card-gestion-number strong{
    font-size: var(--sc-text-2xl);
    font-weight: var(--sc-weight-black);
    line-height: 1;
    color: var(--sc-text);
}

.kpi-card-gestion-number span{
    font-size: var(--sc-text-xs);
    font-weight: var(--sc-weight-black);
    color: var(--sc-text);
    margin-top: 4px;
}

.kpi-card-gestion-detail{
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 16px;
}

.kpi-card-gestion-detail span{
    font-size: var(--sc-text-sm);
    color: var(--sc-text);
}

.kpi-card-gestion-link{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px;
    border-radius: 999px;
    background: var(--sc-bg);
    font-weight: var(--sc-weight-black);
    font-size: var(--sc-text-sm);
    color: var(--sc-text);
}

/* Mobile: mismo criterio que antes — tira horizontal compacta */
@media (max-width: 767px){
    .kpi-grid-clean.kpi-grid-gestion{
        display: flex;
        overflow-x: auto;
        gap: 10px;
    }

    .kpi-grid-gestion .kpi-card-gestion{
        flex: 0 0 220px;
        padding: 14px;
    }
}

/* ── Lista compacta de "Mis gestiones" (reemplaza la tabla en mobile) ────── */

.gestiones-compact-list{
    display: flex;
    flex-direction: column;
}

.gestiones-compact-item{
    padding: 14px 0;
    border-bottom: 1px solid var(--sc-border);
}

.gestiones-compact-item:last-child{
    border-bottom: none;
}

.gestiones-compact-top{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 6px;
}

.gestiones-compact-title{
    font-size: var(--sc-text-sm);
    color: var(--sc-text);
    min-width: 0;
}

.gestiones-compact-title strong{
    margin-right: 4px;
}

.gestiones-compact-bottom{
    display: flex;
    align-items: center;
    gap: 10px;
}

.gestiones-compact-meta{
    flex: 1;
    min-width: 0;
    font-size: var(--sc-text-xs);
    color: var(--sc-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.gestiones-compact-time{
    font-size: 11px;
    color: var(--sc-muted);
    white-space: nowrap;
}

.gestiones-compact-view{
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--sc-bg);
    color: var(--sc-role-sidebar-bg, var(--sc-green));
    flex-shrink: 0;
}

/* ── Badge de notificaciones sin leer en el sidebar ──────────────────────── */
.platform-sidebar-badge{
    margin-left: auto;
    background: var(--sc-yellow-dark, #f1851c);
    color: #fff;
    font-size: 11px;
    font-weight: var(--sc-weight-black);
    padding: 1px 7px;
    border-radius: 999px;
    line-height: 1.4;
}

/* ── Estados de cuenta de usuario (nuevo, para /usuarios/) ────────────────── */
.status-activo{
    background: var(--sc-status-finalizada-bg);
    color: var(--sc-status-finalizada-text);
}
.status-inactivo{
    background: var(--sc-status-registrado-bg);
    color: var(--sc-status-registrado-text);
}
.status-bloqueado{
    background: var(--sc-status-rechazada-bg);
    color: var(--sc-status-rechazada-text);
}

/* ── Botón con apariencia de link, para acciones dentro de un formulario ── */
.platform-link-btn{
    background: none;
    border: none;
    padding: 0;
    color: var(--sc-role-sidebar-bg, var(--sc-green));
    font-weight: var(--sc-weight-black);
    font-size: var(--sc-text-sm);
    text-decoration: underline;
    cursor: pointer;
}
