/* Fuente Montserrat local */
@font-face {
    font-family: 'Montserrat';
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    src: url('../vendors/fonts/montserrat/montserrat-400.woff2') format('woff2');
}
@font-face {
    font-family: 'Montserrat';
    font-weight: 600;
    font-style: normal;
    font-display: swap;
    src: url('../vendors/fonts/montserrat/montserrat-600.woff2') format('woff2');
}
@font-face {
    font-family: 'Montserrat';
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    src: url('../vendors/fonts/montserrat/montserrat-700.woff2') format('woff2');
}

/* Variables de color */
:root {
    --cc-azul:       #1a73e8;
    --cc-azul-dark:  #1558b0;
    --cc-sidebar:    #1e2535;
    --cc-sidebar-hover: #2d3748;
    --cc-sidebar-active: #1a73e8;
    --cc-bg:         #f4f6f9;
    --cc-card:       #ffffff;
    --cc-text:       #2d3748;
    --cc-muted:      #718096;
    --cc-border:     #e2e8f0;
    --cc-success:    #38a169;
    --cc-danger:     #e53e3e;
    --cc-warning:    #d69e2e;
    --cc-info:       #3182ce;
    --sidebar-w:     56px;
}

* { box-sizing: border-box; }

body {
    font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background: var(--cc-bg);
    color: var(--cc-text);
    margin: 0;
    font-size: 0.875rem;
}

/* ── Sidebar mini (variante C) ── */
#sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    width: var(--sidebar-w);
    background: var(--cc-sidebar);
    display: flex;
    flex-direction: column;
    align-items: center;
    z-index: 1000;
    overflow: visible;
    padding: 0.4rem 0;
}

#sidebar .sidebar-brand {
    width: 40px;
    border-radius: 10px;
    background: var(--cc-azul);
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    gap: .1rem;
    padding: .45rem 0 .4rem;
    margin-bottom: 0.5rem;
    flex-shrink: 0;
}
#sidebar .sidebar-brand i { font-size: 1.1rem; color: #fff; line-height: 1; }
#sidebar .sidebar-brand-name {
    font-size: .52rem; font-weight: 800; letter-spacing: .12em;
    color: rgba(255,255,255,.85); text-transform: uppercase; line-height: 1;
}

#sidebar nav {
    display: flex; flex-direction: column;
    align-items: center; gap: 0.1rem;
    flex: 1; width: 100%; padding: 0.25rem 0;
}

#sidebar .nav-sep {
    width: 28px; height: 1px;
    background: rgba(255,255,255,0.1);
    margin: 0.3rem 0; flex-shrink: 0;
}

#sidebar .nav-link {
    position: relative;
    width: 40px; height: 40px;
    display: flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,0.55);
    border-radius: 10px;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
    flex-shrink: 0;
    background: none; border: none; cursor: pointer;
}
#sidebar .nav-link i { font-size: 1.2rem; }
#sidebar .nav-link:hover {
    background: rgba(255,255,255,0.1);
    color: #fff;
}
#sidebar .nav-link.active {
    background: var(--cc-azul);
    color: #fff;
}

/* Tooltip */
#sidebar .nav-link .tip {
    position: absolute;
    left: calc(100% + 10px);
    top: 50%; transform: translateY(-50%);
    background: #1e2535;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 600;
    padding: 0.3rem 0.65rem;
    border-radius: 6px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s;
    box-shadow: 0 3px 12px rgba(0,0,0,0.3);
    z-index: 2000;
}
#sidebar .nav-link .tip::before {
    content: '';
    position: absolute;
    right: 100%; top: 50%; transform: translateY(-50%);
    border: 5px solid transparent;
    border-right-color: #1e2535;
}
#sidebar .nav-link:hover .tip { opacity: 1; }

/* ── Submenú flyout ── */
#sidebar .nav-group { position: relative; }
#sidebar .nav-group .nav-submenu {
    display: none;
    position: absolute;
    left: 100%;
    top: 0;
    background: #1e2535;
    border-radius: 10px;
    box-shadow: 0 4px 24px rgba(0,0,0,.4);
    border: 1px solid rgba(255,255,255,.08);
    z-index: 2001;
    min-width: 160px;
    padding: .35rem 0;
}
/* puente invisible para no perder el hover al mover el mouse */
#sidebar .nav-group .nav-submenu::before {
    content: '';
    position: absolute;
    left: -10px; top: 0;
    width: 10px; height: 100%;
}
#sidebar .nav-group:hover .nav-submenu,
#sidebar .nav-group.open .nav-submenu { display: block; }
#sidebar .nav-submenu a {
    display: flex; align-items: center; gap: .55rem;
    padding: .45rem 1.1rem;
    color: rgba(255,255,255,.75);
    text-decoration: none;
    font-size: .82rem; white-space: nowrap;
    transition: background .12s;
}
#sidebar .nav-submenu a i { font-size: 1rem; }
#sidebar .nav-submenu a:hover { background: rgba(255,255,255,.08); color: #fff; }
#sidebar .nav-submenu a.active { background: var(--cc-azul); color: #fff; border-radius: 6px; margin: 0 .35rem; padding-left: .75rem; }

#sidebar .sidebar-footer {
    display: flex; flex-direction: column;
    align-items: center; gap: 0.1rem;
    width: 100%; padding: 0.25rem 0;
    border-top: 1px solid rgba(255,255,255,0.08);
    margin-top: 0.25rem;
}

/* ── Topbar ── */
#topbar {
    position: fixed;
    top: 0;
    left: var(--sidebar-w);
    right: 0;
    height: 56px;
    background: var(--cc-card);
    border-bottom: 1px solid var(--cc-border);
    display: flex;
    align-items: center;
    padding: 0 1.5rem;
    z-index: 999;
    gap: 1rem;
}
#topbar .topbar-title {
    font-size: 1rem;
    font-weight: 600;
    color: var(--cc-text);
    flex: 1;
}
#topbar .topbar-user {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--cc-muted);
    font-size: 0.8rem;
}
#topbar .avatar-circle {
    width: 32px; height: 32px;
    background: var(--cc-azul);
    color: #fff;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700;
    font-size: 0.75rem;
}
#topbar .topbar-user .nombre-usuario { font-weight: 600; color: var(--cc-text); }

/* ── Contenido principal ── */
#main-content {
    margin-left: var(--sidebar-w);
    margin-top: 56px;
    padding: 1.5rem;
    min-height: calc(100vh - 56px);
}

/* ── Tarjetas ── */
.card-stat {
    background: var(--cc-card);
    border: 1px solid var(--cc-border);
    border-radius: 10px;
    padding: 1.25rem 1.5rem;
    display: flex;
    align-items: center;
    gap: 1rem;
}
.card-stat .stat-icon {
    width: 48px; height: 48px;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.5rem;
    flex-shrink: 0;
}
.card-stat .stat-icon.azul   { background: rgba(26,115,232,0.12); color: var(--cc-azul); }
.card-stat .stat-icon.verde  { background: rgba(56,161,105,0.12); color: var(--cc-success); }
.card-stat .stat-icon.rojo   { background: rgba(229,62,62,0.12);  color: var(--cc-danger); }
.card-stat .stat-icon.naranja { background: rgba(214,158,46,0.12); color: var(--cc-warning); }
.card-stat .stat-val { font-size: 1.75rem; font-weight: 700; line-height: 1; }
.card-stat .stat-label { font-size: 0.75rem; color: var(--cc-muted); margin-top: 0.2rem; }

/* ── Tabla ── */
.tabla-cc {
    width: 100%;
    border-collapse: collapse;
    background: var(--cc-card);
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--cc-border);
}
.tabla-cc thead th {
    background: #f8fafc;
    padding: 0.75rem 1rem;
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--cc-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-bottom: 1px solid var(--cc-border);
    white-space: nowrap;
}
.tabla-cc tbody td {
    padding: 0.7rem 1rem;
    border-bottom: 1px solid var(--cc-border);
    vertical-align: middle;
}
.tabla-cc tbody tr:last-child td { border-bottom: none; }
.tabla-cc tbody tr:hover { background: #f8fafc; }

/* ── Badges de estado ── */
.badge-estado {
    display: inline-flex; align-items: center; gap: 0.3rem;
    padding: 0.25rem 0.6rem;
    border-radius: 20px;
    font-size: 0.7rem;
    font-weight: 600;
}
.badge-estado.verificado   { background: transparent; color: #155724; }
.badge-estado.sospechoso   { background: #fff3cd; color: #856404; }
.badge-estado.duplicado    { background: #f8d7da; color: #721c24; }
.badge-estado.no_encontrado { background: #e2e3e5; color: #383d41; }
.badge-estado.pendiente    { background: #cce5ff; color: #004085; }
.badge-estado.investigando { background: #fde8d8; color: #7d3c0a; }
.badge-estado.activo       { background: #d1fae5; color: #065f46; }
.badge-estado.inactivo     { background: #f3f4f6; color: #6b7280; }

/* ── Semáforo de riesgo IA ── */
.riesgo-bajo  { color: var(--cc-success); }
.riesgo-medio { color: var(--cc-warning); }
.riesgo-alto  { color: var(--cc-danger); }

/* ── Botones ── */
.btn-cc {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 0.5rem 1rem;
    border-radius: 6px;
    font-weight: 600;
    font-size: 0.825rem;
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.15s, transform 0.1s;
}
.btn-cc:hover { opacity: 0.88; transform: translateY(-1px); }
.btn-cc:active { transform: translateY(0); }
.btn-cc.primario  { background: var(--cc-azul);    color: #fff; }
.btn-cc.secundario { background: #e2e8f0;           color: var(--cc-text); }
.btn-cc.peligro   { background: var(--cc-danger);  color: #fff; }
.btn-cc.exito     { background: var(--cc-success);  color: #fff; }

/* ── Card genérica ── */
.card-cc {
    background: var(--cc-card);
    border: 1px solid var(--cc-border);
    border-radius: 10px;
    overflow: hidden;
}
.card-cc .card-header-cc {
    padding: 0.9rem 1.25rem;
    border-bottom: 1px solid var(--cc-border);
    font-weight: 700;
    font-size: 0.9rem;
    display: flex; align-items: center; gap: 0.5rem;
    background: #f8fafc;
}
.card-cc .card-body-cc {
    padding: 1.25rem;
}

/* ── Alerta de zona de carga ── */
.zona-carga {
    border: 2px dashed var(--cc-border);
    border-radius: 10px;
    padding: 3rem 2rem;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
}
.zona-carga:hover, .zona-carga.drag-over {
    border-color: var(--cc-azul);
    background: rgba(26,115,232,0.04);
}
.zona-carga i { font-size: 3rem; color: var(--cc-azul); opacity: 0.6; }

/* ── Panel de resultado IA ── */
.panel-ia {
    border-left: 4px solid var(--cc-azul);
    border-radius: 6px;
    background: #f8fafc;
    padding: 1rem 1.25rem;
}
.panel-ia.nivel-alto  { border-color: var(--cc-danger);  background: #fff5f5; }
.panel-ia.nivel-medio { border-color: var(--cc-warning); background: #fffbeb; }
.panel-ia.nivel-bajo  { border-color: var(--cc-success); background: #f0faf4; }

/* ── Inputs ── */
.input-cc {
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--cc-border);
    border-radius: 6px;
    font-family: inherit;
    font-size: 0.875rem;
    color: var(--cc-text);
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.input-cc:focus {
    outline: none;
    border-color: var(--cc-azul);
    box-shadow: 0 0 0 3px rgba(26,115,232,0.15);
}
.input-cc::placeholder {
    font-size: .8rem;
    color: #b0b8c9;
    font-weight: 400;
    text-transform: none;
}
.label-cc {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--cc-muted);
    margin-bottom: 0.3rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ── Toggle switch ── */
.cc-toggle {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    cursor: pointer;
    user-select: none;
    font-size: .82rem;
    font-weight: 600;
    color: var(--cc-texto);
}
.cc-toggle input[type="checkbox"] { display: none; }
.cc-toggle-track {
    position: relative;
    width: 36px; height: 20px;
    background: #d1d5db;
    border-radius: 20px;
    flex-shrink: 0;
    transition: background .2s;
}
.cc-toggle-track::after {
    content: '';
    position: absolute;
    left: 3px; top: 3px;
    width: 14px; height: 14px;
    background: #fff;
    border-radius: 50%;
    transition: left .2s;
    box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.cc-toggle input[type="checkbox"]:checked ~ .cc-toggle-track { background: var(--cc-azul); }
.cc-toggle input[type="checkbox"]:checked ~ .cc-toggle-track::after { left: 19px; }

/* ── Utilidades ── */
.text-muted-cc { color: var(--cc-muted) !important; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.gap-2  { gap: 0.5rem; }
.gap-3  { gap: 0.75rem; }

/* ── Responsive básico ── */
/* El sidebar mini (56px) siempre visible — no se oculta en pantallas chicas */
@media (max-width: 768px) {
    #topbar      { left: var(--sidebar-w); }
    #main-content { margin-left: var(--sidebar-w); }
}
