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

  /* ===== Design tokens (Data-Dense Dashboard · identidad corporativa azul) ===== */
  :root{
    /* Paleta. ⚠ Los azules de marca se consumen SOLO vía var() (migración 13-jul-2026):
       el branding por tenant (js/bootstrap.js applyTenantBrand) los pisa con el
       colorPrimario de config/tenants/<id>.json + tonos derivados. Sherpa = estos defaults. */
    --c-primary:#1e40af; --c-primary-700:#1e3a8a; --c-secondary:#3b82f6;
    --c-primary-strong:#1d4ed8; --c-secondary-strong:#2563eb;
    --c-primary-rgb:30,64,175; --c-primary-700-rgb:30,58,138; --c-secondary-rgb:59,130,246;
    /* Chrome oscuro (topbar/sidebar/login/boot/loaders). Familia propia, NO tocar
       #0f172a (ese es texto). El branding por tenant los deriva del colorPrimario. */
    --chrome-1:#0a1628; --chrome-2:#15294a; --chrome-3:#06101e; --chrome-4:#1e3a5f;
    --c-accent:#d97706; --c-accent-bg:#fef3c7;
    --c-bg:#f8fafc; --c-surface:#ffffff;
    --c-border:#e2e8f0; --c-border-soft:#f1f5f9;
    --c-text:#0f172a; --c-text-2:#475569; --c-text-3:#94a3b8;
    --c-success:#15803d; --c-success-bg:#dcfce7;
    --c-warn:#92400e;    --c-warn-bg:#fef3c7;
    --c-danger:#b91c1c;  --c-danger-bg:#fee2e2;
    /* Radios */
    --r-sm:7px; --r-md:10px; --r-lg:14px; --r-pill:999px;
    /* Sombras / elevación */
    --sh-xs:0 1px 2px rgba(15,23,42,0.05);
    --sh-sm:0 1px 3px rgba(15,23,42,0.07), 0 1px 2px rgba(15,23,42,0.04);
    --sh-md:0 4px 12px rgba(15,23,42,0.08);
    --sh-lg:0 12px 32px rgba(15,23,42,0.16);
    /* Transiciones */
    --t-fast:.15s ease; --t:.2s ease;
    /* Anillo de foco accesible */
    --ring:0 0 0 3px rgba(var(--c-secondary-rgb),0.35);
  }
  body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif; background:var(--c-bg); color:var(--c-text); font-size:14px; line-height:1.45; }

  /* Foco visible y accesible para teclado (no afecta el click con mouse) */
  button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, .clickable:focus-visible {
    outline:none; box-shadow:var(--ring); border-radius:var(--r-sm);
  }
  @media (prefers-reduced-motion: reduce){ *{ transition:none !important; animation:none !important; } }
  .app { display:grid; grid-template-columns:230px 1fr; grid-template-rows:56px 1fr; height:100vh; }

  /* ===== Top bar ===== */
  .topbar { grid-column:1/-1; background:linear-gradient(90deg,var(--chrome-1) 0%,var(--chrome-2) 100%); color:white; display:flex; align-items:center; padding-right:20px; box-shadow:0 1px 3px rgba(0,0,0,0.15); }
  .logo { display:flex; align-items:center; gap:11px; color:white; user-select:none; width:230px; padding-left:20px; box-sizing:border-box; flex-shrink:0; }
  .logo-mountain { width:46px; height:26px; flex-shrink:0; color:white; }
  .logo-text { display:flex; flex-direction:column; line-height:1; gap:4px; width:max-content; }
  .logo-name { display:flex; justify-content:space-between; width:100%; font-size:17px; font-weight:800; color:white; line-height:1; }
  .logo-tag { font-size:7.5px; font-weight:500; letter-spacing:0.18em; color:rgba(255,255,255,0.72); white-space:nowrap; line-height:1; }
  .topbar-search { flex:1; max-width:480px; margin-right:14px; position:relative; }
  .topbar-search input { width:100%; background:rgba(255,255,255,0.10); border:1px solid rgba(255,255,255,0.12); padding:8px 12px 8px 36px; border-radius:7px; color:white; font-size:13px; outline:none; }
  .topbar-search input::placeholder { color:rgba(255,255,255,0.55); }
  .topbar-search input:focus { background:rgba(255,255,255,0.18); border-color:rgba(125,211,252,0.4); }
  .topbar-search { display:flex; align-items:center; }
  .topbar-search input { width:100%; height:36px; box-sizing:border-box; }
  .topbar-search::before { content:''; position:absolute; left:12px; top:50%; margin-top:-7px; width:14px; height:14px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E"); background-size:contain; opacity:0.7; pointer-events:none; z-index:1; }
  .global-search-results { position:absolute; top:calc(100% + 6px); left:0; right:0; background:white; border:1px solid #e2e8f0; border-radius:10px; box-shadow:0 12px 32px rgba(15,23,42,0.18); max-height:480px; overflow-y:auto; z-index:1000; }
  .gsr-section { padding:6px 0; }
  .gsr-section + .gsr-section { border-top:1px solid #f1f5f9; }
  .gsr-section-title { font-size:10.5px; color:#64748b; font-weight:700; text-transform:uppercase; letter-spacing:0.6px; padding:8px 14px 4px 14px; display:flex; align-items:center; gap:6px; }
  .gsr-section-count { background:#f1f5f9; color:#475569; padding:1px 7px; border-radius:10px; font-size:10px; font-weight:700; }
  .gsr-item { display:flex; align-items:center; gap:11px; padding:9px 14px; cursor:pointer; transition:background 0.08s; }
  .gsr-item:hover, .gsr-item.gsr-active { background:#f1f5f9; }
  .gsr-icon { width:32px; height:32px; border-radius:7px; display:flex; align-items:center; justify-content:center; font-size:14px; flex-shrink:0; }
  .gsr-icon.aseg { background:#dbeafe; color:var(--c-primary); }
  .gsr-icon.pol { background:#dcfce7; color:#15803d; }
  .gsr-icon.pat { background:#fef3c7; color:#92400e; }
  .gsr-icon.sin { background:#fee2e2; color:#991b1b; }
  .gsr-text { flex:1; min-width:0; }
  .gsr-title { font-size:13px; font-weight:600; color:#0f172a; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .gsr-subtitle { font-size:11.5px; color:#64748b; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .gsr-meta { font-size:11px; color:#94a3b8; flex-shrink:0; }
  .gsr-empty { padding:20px 16px; text-align:center; font-size:12.5px; color:#94a3b8; }
  .gsr-hint { padding:14px 16px 6px 16px; font-size:11px; color:#94a3b8; line-height:1.5; }
  .gsr-hint b { color:#475569; font-weight:600; }
  mark.gsr-mark { background:#fef08a; color:#0f172a; padding:0 2px; border-radius:2px; font-weight:600; }
  .gsr-more { padding:8px 14px; font-size:11.5px; font-weight:700; color:var(--c-primary); cursor:pointer; text-align:center; border-top:1px solid #f1f5f9; transition:background 0.08s; }
  .gsr-more:hover { background:#f1f5f9; }
  .topbar-actions { display:flex; gap:8px; align-items:center; margin-left:auto; }
  .icon-btn { width:34px; height:34px; border-radius:50%; background:rgba(255,255,255,0.06); display:flex; align-items:center; justify-content:center; cursor:pointer; border:none; color:white; font-size:16px; transition:background 0.15s; position:relative; }
  .icon-btn:hover { background:rgba(255,255,255,0.16); }
  .avatar-top { width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg,var(--c-secondary),#06b6d4); color:white; font-weight:700; display:flex; align-items:center; justify-content:center; font-size:13px; cursor:pointer; }

  /* ===== Sidebar ===== */
  .sidebar { background:linear-gradient(180deg,var(--chrome-1) 0%,var(--chrome-3) 100%); color:white; padding:14px 0; overflow-y:auto; border-right:1px solid #1e293b; }
  .sidebar::-webkit-scrollbar { width:6px; }
  .sidebar::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.10); border-radius:3px; }
  .sidebar-section { padding:0 12px; margin-bottom:6px; }
  .sidebar-title { text-transform:uppercase; font-size:10px; letter-spacing:1.2px; color:rgba(255,255,255,0.40); padding:14px 10px 6px; font-weight:700; }
  .nav-item { display:flex; align-items:center; gap:11px; padding:9px 10px; border-radius:6px; cursor:pointer; color:rgba(255,255,255,0.78); font-weight:500; transition:all 0.12s; font-size:13px; user-select:none; }
  .nav-item:hover { background:rgba(255,255,255,0.06); color:white; }
  .nav-item.active { background:rgba(var(--c-secondary-rgb),0.18); color:white; box-shadow:inset 3px 0 0 var(--c-secondary); }
  .nav-item .nav-icon { width:18px; text-align:center; font-size:15px; }
  .nav-item .nav-badge { margin-left:auto; background:rgba(var(--c-secondary-rgb),0.25); color:#bfdbfe; padding:1px 7px; border-radius:10px; font-size:10px; font-weight:600; }
  .nav-item.pending { opacity:0.65; cursor:default; }
  .nav-item.pending:hover { background:rgba(255,255,255,0.04); color:rgba(255,255,255,0.78); }
  .pronto-tag { margin-left:auto; background:rgba(125,211,252,0.15); color:#7dd3fc; padding:2px 8px; border-radius:10px; font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; }

  /* ===== Content ===== */
  .content { padding:24px 32px 40px; overflow-y:auto; }
  .content::-webkit-scrollbar { width:8px; }
  .content::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:4px; }
  .content::-webkit-scrollbar-thumb:hover { background:#94a3b8; }
  #view-cotizador .page-header:not(:has(button:not([hidden]))) { display:none; }
  .content:has(#view-cotizador:not([hidden])) { padding-top:12px; }
  /* Cotizador · resultado generado: el header (datos del asegurado) queda fijo arriba y
     el grid de compañías ocupa todo el alto disponible debajo, con scroll propio. Las
     cards reparten el alto (grid-auto-rows:1fr) → más altas, mejor visualmente.
     Solo aplica cuando el resultado está visible; el formulario arranca arriba normal.
     ⚠ El predicado exige #view-cotizador:not([hidden]) ADEMÁS del resultado: switchView
     oculta el padre #view-cotizador pero NO #cotizador-results, así que sin ese guard la
     regla quedaba activa al navegar a otra vista (Asegurados, etc.) y le dejaba overflow:hidden
     a .content → no se podía scrollear en ninguna vista hasta recargar. */
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) {
    display:flex;
    flex-direction:column;
    padding-top:16px;
    padding-bottom:16px;
    overflow:hidden;
  }
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) > #view-cotizador {
    flex:1; display:flex; flex-direction:column; min-height:0;
  }
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #cotizador-results {
    flex:1; display:flex; flex-direction:column; min-height:0;
  }
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) > #view-cotizador > .page-header { display:none; }
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #cot-summary-card { flex-shrink:0; }
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #cot-results-grid {
    flex:1; min-height:0; grid-auto-rows:min-content; overflow:auto; padding:2px;
  }
  /* Pantallas inline (comparador / emisión) que REEMPLAZAN al grid: heredan su rol de
     scroller — en este modo .content queda overflow:hidden y sin esto el panel se
     recorta sin scroll (bug 2-jul: la comparación no dejaba bajar). */
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #cmp-panel-wrap,
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #em-panel-wrap {
    flex:1; min-height:0; overflow-y:auto;
  }
  /* Mientras SOLO está el loader, su fila vuelve a llenar todo el alto (1fr) — sin él
     las filas son min-content para no dejar hueco muerto entre la tira y la tabla. */
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden])) #cot-results-grid:has(> .cot-loader) { grid-auto-rows:1fr; }
  /* Mientras SOLO está el loader "Cotizando…": el panel azul ocupa todo el inline, sin
     bordes blancos (el "blanco" es --c-bg que asoma por el padding del .content y del grid).
     ⚠ En AUTOS, las reglas de #cotizador-results de arriba son MÁS específicas que un simple
     .content:has(.cot-loader): mantenían padding-top/bottom:16px en el .content y padding:2px
     en el grid → el override DEBE repetir ese prefijo + .cot-loader para ganar por especificidad
     (si no, "sigue apareciendo con bordes blancos", que era el bug). Médicos no tiene esas
     reglas, así que el selector simple le alcanza. */
  .content:has(.cot-loader) { padding:0; }                                    /* Médicos (y left/right de Autos) */
  #med-grid:has(.cot-loader) { padding:0; }                                   /* grid de Médicos */
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden]) .cot-loader) { padding:0; }                    /* Autos: gana al padding 16px del .content */
  .content:has(#view-cotizador:not([hidden]) #cotizador-results:not([hidden]) .cot-loader) #cot-results-grid { padding:0; }  /* Autos: gana a los 2px del grid */
  /* Médicos: mientras está el loader, el panel azul ocupa TODO el inline (igual que Autos).
     Cadena flex: .content → #view-cotizador → #cotizador-medicos → #medicos-results → #med-grid
     → .cot-loader, cada eslabón flex:1 con min-height:0 para que el loader crezca a pantalla
     completa en vez de quedarse en el min-height:60vh con borde blanco abajo. */
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) { display:flex; flex-direction:column; overflow:hidden; padding:0; }
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) > #view-cotizador { flex:1; display:flex; flex-direction:column; min-height:0; }
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #cotizador-medicos,
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #medicos-results,
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #med-grid { flex:1; display:flex; flex-direction:column; min-height:0; }
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #med-grid > .cot-loader { flex:1; }
  /* …y se ocultan los botones "Volver al listado" / "Editar datos": durante el loader el panel
     azul es lo ÚNICO en el inline (no deben asomar botones arriba). */
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #cotizador-medicos > div:has(#btn-volver-medicos),
  .content:has(#cotizador-medicos:not([hidden]) #medicos-results:not([hidden]) .cot-loader) #medicos-results > div:has(#btn-editar-medicos) { display:none; }
  .page-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:22px; gap:16px; flex-wrap:wrap; }
  .page-title { font-size:22px; font-weight:700; color:#0f172a; letter-spacing:-0.3px; }
  .page-subtitle { color:#64748b; font-size:13px; margin-top:4px; }

  .btn-primary { background:var(--c-primary); color:white; border:none; padding:9px 16px; border-radius:6px; font-weight:600; cursor:pointer; font-size:13px; display:inline-flex; align-items:center; gap:6px; transition:background 0.15s; }
  .btn-primary:hover:not(:disabled) { background:var(--c-primary-700); box-shadow:var(--sh-sm); }
  .btn-primary:active:not(:disabled) { transform:translateY(1px); }
  .btn-primary:disabled { background:#94a3b8; cursor:not-allowed; opacity:0.7; }
  .btn-secondary { background:white; color:#334155; border:1px solid #cbd5e1; padding:8px 14px; border-radius:6px; font-weight:500; cursor:pointer; font-size:13px; transition:all 0.15s; }
  .btn-secondary:hover { background:#f8fafc; border-color:#94a3b8; }

  .period-controls { display:flex; align-items:center; gap:12px; }
  .period-controls .period-static-label { font-size:11px; color:#64748b; font-weight:700; text-transform:uppercase; letter-spacing:0.6px; }
  .filter-select { height:34px; padding:0 32px 0 14px; border:1px solid #e2e8f0; border-radius:8px; background:#fafbfc; font-size:12.5px; color:#475569; font-weight:500; cursor:pointer; appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; background-size:14px; font-family:inherit; transition:all 0.15s; }
  .filter-select:hover { border-color:#cbd5e1; background-color:white; }
  .filter-select:focus { border-color:var(--c-secondary); box-shadow:0 0 0 3px rgba(var(--c-secondary-rgb),0.12); outline:none; background-color:white; color:#0f172a; }

  /* Period dropdown custom */
  .period-dropdown { position:relative; }
  .period-trigger { background:white; border:1px solid #cbd5e1; border-radius:9px; padding:7px 12px 7px 14px; display:flex; align-items:center; gap:11px; cursor:pointer; font-family:inherit; transition:all 0.15s; min-width:230px; text-align:left; }
  .period-trigger:hover { border-color:var(--c-secondary); box-shadow:0 2px 8px rgba(15,23,42,0.06); }
  .period-trigger.open { border-color:var(--c-secondary); box-shadow:0 0 0 3px rgba(var(--c-secondary-rgb),0.12); }
  .period-icon-box { width:32px; height:32px; border-radius:8px; background:linear-gradient(135deg,#dbeafe,#cffafe); color:var(--c-primary); display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; }
  .period-text { flex:1; display:flex; flex-direction:column; line-height:1.15; min-width:0; }
  .period-label-current { font-size:13px; font-weight:700; color:#0f172a; }
  .period-sublabel { font-size:11px; color:#64748b; margin-top:3px; font-weight:500; }
  .period-chevron { font-size:11px; color:#94a3b8; transition:transform 0.2s; flex-shrink:0; }
  .period-trigger.open .period-chevron { transform:rotate(180deg); color:var(--c-primary); }
  .period-menu { position:absolute; top:calc(100% + 6px); right:0; background:white; border:1px solid #e2e8f0; border-radius:10px; box-shadow:0 10px 32px rgba(15,23,42,0.18); min-width:280px; z-index:200; overflow:hidden; }
  .period-menu-header { padding:10px 14px; background:#f8fafc; border-bottom:1px solid #e2e8f0; font-size:10.5px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; }
  .period-menu-item { padding:11px 14px; display:flex; align-items:center; justify-content:space-between; gap:10px; cursor:pointer; transition:background 0.12s; border-bottom:1px solid #f1f5f9; }
  .period-menu-item:last-child { border-bottom:none; }
  .period-menu-item:hover { background:#f8fafc; }
  .period-menu-item.active { background:#dbeafe; }
  .period-menu-item.active .period-menu-label { color:var(--c-primary); }
  .period-menu-text { display:flex; flex-direction:column; line-height:1.2; }
  .period-menu-label { font-size:13px; font-weight:600; color:#0f172a; }
  .period-menu-sub { font-size:11px; color:#64748b; margin-top:3px; }
  .period-check { color:var(--c-primary); font-weight:700; font-size:15px; display:none; }
  .period-menu-item.active .period-check { display:inline; }

  /* ===== KPI grid ===== */
  .kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:14px; }
  /* Mini KPIs de las vistas: 4 columnas fijas iguales (si hay menos cards, queda espacio libre)
     + alto FIJO de card (referencia: Renovaciones, label+valor sin leyenda = 66px) para que
     todas las vistas queden parejas aunque algunas cards tengan leyenda (.kpi-trend).
     El Dashboard tiene sus propias reglas (#view-dashboard ...) que pisan estas. */
  .kpi-grid-compact { grid-template-columns:repeat(4, minmax(0,1fr)); }
  /* Solicitudes tiene 5 KPIs (Endosos/Anulaciones/Documentos/Cobranzas/Órdenes) → una sola fila. */
  #view-solicitudes .kpi-grid-compact { grid-template-columns:repeat(5, minmax(0,1fr)); }
  .kpi-grid-compact .kpi-card { height:66px; padding:8px 16px; box-sizing:border-box; overflow:hidden; }
  .kpi-grid-compact .kpi-label { font-size:11px; line-height:1.15; margin-bottom:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .kpi-grid-compact .kpi-value { font-size:20px; }
  .kpi-grid-compact .kpi-trend { font-size:10.5px; line-height:1.15; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  /* Las pills de stats de Cotizaciones acompañan el mismo alto */
  .cot-stats-row .cot-stat-pill { height:66px; padding:8px 10px; box-sizing:border-box; }
  .kpi-card { background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--r-md); padding:14px 16px; display:flex; gap:12px; align-items:center; transition:box-shadow var(--t-fast), border-color var(--t-fast); cursor:default; box-shadow:var(--sh-xs); }
  .kpi-card:hover { border-color:var(--c-secondary); box-shadow:var(--sh-md); }
  .kpi-card.kpi-link { cursor:pointer; }
  .kpi-card.kpi-active { border-color:var(--c-secondary); box-shadow:0 0 0 2px var(--c-secondary) inset, var(--sh-md); }
  /* Mix (Autos / Varios): cada número filtra por categoría. */
  .sin-mix-num { cursor:pointer; padding:0 5px; border-radius:6px; transition:background var(--t-fast), color var(--t-fast); }
  .sin-mix-num:hover { background:#f1f5f9; }
  .sin-mix-num.on { background:var(--c-secondary); color:#fff; }
  /* Cobranzas: KPI por estado = label + $ (grande) + cuotas (chico). 3 líneas → un poco más altos que el compacto de 66px. */
  .kpi-grid-cobr .kpi-card { height:auto; min-height:78px; }
  .kpi-grid-cobr .kpi-value { font-size:20px; }
  .kpi-grid-cobr .kpi-trend { font-size:11px; margin-top:3px; color:#64748b; white-space:nowrap; }
  .kpi-icon { width:38px; height:38px; border-radius:9px; display:flex; align-items:center; justify-content:center; font-size:17px; flex-shrink:0; font-weight:600; }
  .kpi-body { flex:1; min-width:0; }
  .kpi-label { font-size:11.5px; color:#64748b; text-transform:uppercase; letter-spacing:0.4px; font-weight:600; margin-bottom:3px; }
  .kpi-value { font-size:22px; font-weight:700; color:#0f172a; line-height:1; letter-spacing:-0.3px; white-space:nowrap; }
  .kpi-trend { font-size:11px; color:#64748b; margin-top:3px; font-weight:500; }
  .kpi-trend.up { color:#15803d; }
  .kpi-trend.down { color:#b91c1c; }
  /* Dashboard mantiene la altura original (más alta) */
  #view-dashboard .kpi-grid { gap:14px; margin-bottom:22px; }
  #view-dashboard .kpi-card { padding:18px; gap:14px; align-items:flex-start; }
  #view-dashboard .kpi-icon { width:42px; height:42px; border-radius:10px; font-size:18px; }
  #view-dashboard .kpi-label { letter-spacing:0.6px; margin-bottom:6px; }
  #view-dashboard .kpi-value { font-size:24px; line-height:1.1; letter-spacing:-0.5px; }
  #view-dashboard .kpi-trend { font-size:11.5px; margin-top:6px; }
  /* Dashboard: KPIs (3/4) + calendario (1/4) en la fila superior */
  .dashboard-top-row { display:grid; grid-template-columns:3fr 1fr; gap:14px; margin-bottom:14px; }
  /* KPIs en 4 col x 2 filas para aprovechar el ancho de 3/4 — tamaño igual al resto del sistema */
  #view-dashboard .kpi-grid-compact { grid-template-columns:repeat(4, minmax(0, 1fr)) !important; grid-auto-rows:110px; gap:12px; margin-bottom:0; }
  #view-dashboard .kpi-grid-compact .kpi-card { padding:14px 16px; gap:12px; align-items:center; height:110px; min-width:0; overflow:hidden; }
  #view-dashboard .kpi-grid-compact .kpi-body { min-width:0; flex:1; overflow:hidden; }
  #view-dashboard .kpi-grid-compact .kpi-value { white-space:nowrap; }
  #view-dashboard .kpi-grid-compact .kpi-icon { width:38px; height:38px; border-radius:9px; font-size:17px; }
  /* En el Dashboard el label puede ocupar 2 líneas (las cards miden 110px); el nowrap+ellipsis
     de .kpi-grid-compact .kpi-label es solo para las cards chicas (66px) de las vistas. */
  #view-dashboard .kpi-grid-compact .kpi-label { font-size:11px; letter-spacing:0.4px; margin-bottom:4px; line-height:1.15; white-space:normal; overflow:visible; text-overflow:clip; }
  #view-dashboard .kpi-grid-compact .kpi-value { font-size:clamp(15px, 2.1cqi, 22px); line-height:1; letter-spacing:-0.4px; white-space:nowrap; }
  #view-dashboard .kpi-grid-compact .kpi-card { container-type:inline-size; }
  #view-dashboard .kpi-grid-compact .kpi-trend { font-size:10.5px; margin-top:4px; line-height:1.15; }
  /* Card dividida en 2 — Movimiento del período (Emisiones vs Anulaciones) */
  #view-dashboard .kpi-grid-compact .kpi-card-split { grid-column:span 2; padding:12px 16px; }
  .movimiento-split { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:14px; margin-top:6px; }
  .mov-divider { width:1px; align-self:stretch; background:#e2e8f0; }
  .mov-side { text-align:center; display:flex; flex-direction:column; gap:3px; }
  .mov-row { display:flex; align-items:center; justify-content:center; gap:6px; }
  .mov-arrow { font-size:16px; font-weight:700; line-height:1; }
  .mov-num { font-size:22px; font-weight:700; line-height:1; letter-spacing:-0.3px; }
  .mov-side.mov-up .mov-arrow, .mov-side.mov-up .mov-num { color:#15803d; }
  .mov-side.mov-down .mov-arrow, .mov-side.mov-down .mov-num { color:#b91c1c; }
  .mov-lbl { font-size:10.5px; color:#64748b; font-weight:600; text-transform:uppercase; letter-spacing:0.4px; }
  /* Variante en un solo slot del grid (Altas/Bajas unificadas) — más compacta para
     dejar lugar al icono a la izquierda. */
  #view-dashboard .kpi-grid-compact .kpi-card-mov .movimiento-split { gap:8px; margin-top:8px; }
  #view-dashboard .kpi-grid-compact .kpi-card-mov .mov-num { font-size:clamp(15px, 2.6cqi, 21px); }
  #view-dashboard .kpi-grid-compact .kpi-card-mov .mov-arrow { font-size:12px; }
  /* Calendario compacto — formato sistema */
  .calendar-card { padding:14px 16px; display:flex; flex-direction:column; min-height:0; }
  /* Alto = exactamente la grilla de KPIs a la izquierda: 2 filas × 110px + 12px gap. */
  .dashboard-top-row .calendar-card { height:232px; overflow:hidden; }
  .calendar-card .card-title { margin-bottom:10px; padding-bottom:10px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
  /* Título del calendario: más chico y sin negrita (más estético). Solo acá — .card-title-text es global.
     Una sola línea con ellipsis: si falta ancho se trunca (…) en vez de envolverse y chocar con el nav. */
  .calendar-card .card-title-text { display:block; flex:1 1 auto; min-width:0; font-size:11px; font-weight:500; color:#475569; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .calendar-card .card-title .icon { font-size:13px; }
  /* Navegador de mes (‹ Junio 2026 ›) en la fila del título — sin sumar alto a la card (232px fija).
     flex-shrink:0 → el nav mantiene su ancho y es el título el que cede (ellipsis). */
  .cal-nav { display:flex; align-items:center; gap:0; flex-shrink:0; }
  .cal-nav-btn { border:none; background:transparent; color:#64748b; cursor:pointer; font-size:15px; line-height:1; padding:1px 4px; border-radius:6px; transition:all .12s; }
  .cal-nav-btn:hover { background:#f1f5f9; color:#0f172a; }
  .cal-month { border:none; background:transparent; cursor:pointer; font-size:10.5px; font-weight:600; color:#334155; padding:2px 3px; border-radius:6px; min-width:68px; text-align:center; white-space:nowrap; transition:all .12s; }
  .cal-month:hover { background:#f1f5f9; color:#0f172a; }
  .calendar-event-actions { display:flex; gap:4px; flex-shrink:0; }
  .calendar-event-actions button { border:none; background:transparent; cursor:pointer; font-size:12px; padding:2px 4px; border-radius:5px; color:#94a3b8; transition:all .12s; }
  .calendar-event-actions button:hover { background:#e2e8f0; color:#0f172a; }
  .cal-ev-empty { font-size:11px; color:#94a3b8; text-align:center; padding:10px 0; }
  #cal-month { color:#06b6d4; font-weight:700; }
  .calendar-grid { display:grid; grid-template-columns:repeat(7, 1fr); gap:2px; }
  .calendar-dow { font-size:9px; text-align:center; padding:2px 0 4px; color:#64748b; font-weight:700; text-transform:uppercase; letter-spacing:0.6px; }
  .calendar-day { display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:500; border-radius:6px; cursor:pointer; position:relative; color:#475569; transition:all 0.12s; height:24px; border:1px solid transparent; }
  .calendar-day:hover:not(.empty) { background:#f8fafc; border-color:#e2e8f0; color:#0f172a; }
  .calendar-day.empty { visibility:hidden; }
  .calendar-day.past { color:#cbd5e1; font-weight:400; }
  .calendar-day.past:hover { background:#f8fafc; border-color:#e2e8f0; color:#94a3b8; }
  .calendar-day.has-event { background:#fee2e2; color:#b91c1c; font-weight:700; }
  .calendar-day.has-event.past { background:#f1f5f9; color:#94a3b8; font-weight:500; }
  .calendar-day.has-event:hover:not(.today) { background:#fecaca; border-color:#b91c1c; }
  .calendar-day.today { background:linear-gradient(135deg, var(--c-primary-700), #06b6d4); color:white; font-weight:700; box-shadow:0 3px 8px rgba(var(--c-primary-700-rgb),0.28); border-color:transparent; }
  .calendar-day.today.has-event { background:linear-gradient(135deg, var(--c-primary-700), #06b6d4); color:white; }
  .calendar-events { margin-top:12px; padding-top:10px; border-top:1px solid #f1f5f9; flex:1; overflow-y:auto; min-height:0; display:flex; flex-direction:column; gap:6px; }
  .calendar-events-title { font-size:9.5px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.8px; margin-bottom:2px; }
  .calendar-event { padding:8px 10px; border:1px solid #e2e8f0; border-radius:8px; display:grid; grid-template-columns:auto 1fr auto; gap:9px; align-items:center; transition:all 0.12s; cursor:pointer; background:white; }
  .calendar-event:hover { background:#f8fafc; border-color:#cbd5e1; }
  .calendar-event-icon { width:28px; height:28px; border-radius:7px; background:#fee2e2; color:#b91c1c; display:flex; align-items:center; justify-content:center; font-size:13px; flex-shrink:0; }
  .calendar-event-text { font-size:11.5px; font-weight:600; color:#0f172a; line-height:1.3; min-width:0; }
  .calendar-event-date { flex-shrink:0; font-size:10px; font-weight:700; color:#b91c1c; text-transform:uppercase; letter-spacing:0.4px; white-space:nowrap; padding:3px 8px; background:#fee2e2; border-radius:5px; }
  /* ===== Modal de evento (ver / crear / editar) ===== */
  .evento-modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,0.45); display:flex; align-items:center; justify-content:center; z-index:9000; padding:20px; }
  .evento-modal-card { background:white; border-radius:14px; box-shadow:0 20px 60px rgba(15,23,42,0.3); width:100%; max-width:420px; padding:22px; }
  .evento-modal-head { display:flex; gap:13px; align-items:center; margin-bottom:14px; }
  .evento-modal-emoji { width:46px; height:46px; border-radius:11px; background:#dbeafe; display:flex; align-items:center; justify-content:center; font-size:22px; flex-shrink:0; }
  .evento-modal-title { font-size:18px; font-weight:700; color:#0f172a; line-height:1.25; }
  .evento-modal-sub { font-size:12.5px; color:#64748b; margin-top:3px; }
  .evento-modal-desc { font-size:13.5px; color:#334155; line-height:1.5; background:#f8fafc; border:1px solid #f1f5f9; border-radius:9px; padding:11px 13px; margin-bottom:16px; white-space:pre-wrap; }
  .evento-modal-desc.muted { color:#94a3b8; font-style:italic; }
  .evento-modal-actions { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
  .evento-form { display:flex; flex-direction:column; gap:12px; margin:16px 0 18px; }
  .evento-field { display:flex; flex-direction:column; gap:5px; }
  .evento-field > span { font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.4px; }
  .evento-field .form-input { width:100%; }
  .evento-check { display:flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; color:#334155; cursor:pointer; }
  .evento-check input { accent-color:var(--c-primary, var(--c-primary)); width:16px; height:16px; }
  /* Scrollbar fino */
  .calendar-events::-webkit-scrollbar { width:4px; }
  .calendar-events::-webkit-scrollbar-thumb { background:#e2e8f0; border-radius:2px; }
  .calendar-events::-webkit-scrollbar-thumb:hover { background:#cbd5e1; }
  @media (max-width:1100px) {
    .dashboard-top-row { grid-template-columns:1fr; }
    .dashboard-top-row .calendar-card { height:auto; }
  }

  /* ===== Dashboard layout ===== */
  .dashboard-row { display:grid; grid-template-columns:1.4fr 1fr; gap:18px; margin-bottom:22px; }
  @media (max-width:1100px){ .dashboard-row { grid-template-columns:1fr; } }
  .card { background:var(--c-surface); border-radius:var(--r-md); border:1px solid var(--c-border); padding:20px; box-shadow:var(--sh-sm); }
  .card-title { font-size:13.5px; font-weight:700; color:#0f172a; margin-bottom:16px; display:flex; align-items:center; gap:8px; padding-bottom:12px; border-bottom:1px solid #f1f5f9; justify-content:space-between; }
  .card-title-text { display:flex; align-items:center; gap:8px; }
  .card-title .icon { font-size:15px; }

  /* Bar chart */
  .bar-list { display:flex; flex-direction:column; gap:11px; }
  .bar-row { display:grid; grid-template-columns:130px 1fr 115px; align-items:center; gap:12px; }
  .bar-label { font-size:12.5px; color:#334155; font-weight:600; }
  .bar-track { background:#f1f5f9; border-radius:6px; height:14px; position:relative; overflow:hidden; }
  .bar-fill { height:100%; background:linear-gradient(90deg,var(--c-primary) 0%,var(--c-secondary) 100%); border-radius:6px; min-width:0; transition:width 0.4s ease; }
  .bar-amount-right { font-size:12.5px; font-weight:500; color:#334155; text-align:right; white-space:nowrap;  }
  .bar-row.otras .bar-fill { background:linear-gradient(90deg,#94a3b8 0%,#cbd5e1 100%); }
  .bar-row.otras .bar-label { color:#64748b; font-style:italic; }

  /* Renovaciones list */
  .renov-list { display:flex; flex-direction:column; gap:10px; }
  .renov-item { padding:11px 12px; border:1px solid #e2e8f0; border-radius:8px; display:grid; grid-template-columns:1fr auto; gap:8px; align-items:center; transition:all 0.12s; cursor:pointer; height:64px; box-sizing:border-box; }
  .renov-item:hover { background:#f8fafc; border-color:var(--c-secondary); }
  .renov-item > div { min-width:0; }   /* permite el ellipsis en la columna de texto */
  .renov-name { font-size:13px; font-weight:600; color:#0f172a; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .renov-info { font-size:11.5px; color:#64748b; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .renov-date { font-size:11.5px; font-weight:600; padding:4px 8px; border-radius:6px; white-space:nowrap; }
  .renov-date.urgent { background:#fee2e2; color:#991b1b; }
  .renov-date.soon { background:#fef3c7; color:#92400e; }
  .renov-date.normal { background:#dbeafe; color:var(--c-primary); }

  /* Movements table */
  .movements-table { width:100%; border-collapse:collapse; }
  .movements-table th { text-align:left; padding:9px 14px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; border-bottom:1px solid #e2e8f0; }
  .movements-table td { padding:11px 14px; border-bottom:1px solid #f1f5f9; font-size:13px; color:#334155; }
  .movements-table tr:last-child td { border-bottom:none; }
  .mov-tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:600; }
  .mov-tag.emision { background:#dcfce7; color:#166534; }
  .mov-tag.anulacion { background:#fee2e2; color:#991b1b; }
  .mov-tag.renovacion { background:#dbeafe; color:var(--c-primary); }
  .mov-tag.endoso { background:#fef3c7; color:#92400e; }
  .mov-tag.cobranza { background:#cffafe; color:#155e75; }

  /* ===== Listados (asegurados y pólizas) ===== */
  .toolbar { background:white; padding:10px 14px; border-radius:8px 8px 0 0; border:1px solid #e2e8f0; border-bottom:none; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .filter-tabs { display:flex; gap:3px; flex-wrap:wrap; }
  .filter-tab { padding:0 12px; height:34px; border-radius:8px; cursor:pointer; font-size:12.5px; color:#64748b; font-weight:500; transition:all 0.12s; user-select:none; display:inline-flex; align-items:center; gap:6px; box-sizing:border-box; }
  .filter-tab:hover { background:#f1f5f9; }
  .filter-tab.active { background:#dbeafe; color:var(--c-primary); }
  .filter-tab .count { display:inline-block; background:rgba(var(--c-primary-rgb),0.14); padding:1px 7px; border-radius:10px; font-size:11px; font-weight:600; line-height:1.4; }
  .filter-tab:not(.active) .count { background:#e2e8f0; color:#64748b; }
  .toolbar-spacer { flex:1; }
  /* Variante de una sola fila: grilla de 5 columnas iguales — hasta 4 filtros + buscador
     SIEMPRE en la última columna. Con menos filtros quedan columnas vacías (a propósito). */
  .toolbar-onerow { display:grid; grid-template-columns:repeat(5, minmax(0,1fr)); }
  .toolbar-onerow .filter-select, .toolbar-onerow .search-box { width:auto; min-width:0; max-width:none; }
  .toolbar-onerow .search-box { grid-column:5; }
  /* Operaciones: 4 filtros arriba + buscador debajo, alineado al último filtro */
  .toolbar-onerow.toolbar-ops { grid-template-columns:repeat(4, minmax(0,1fr)); }
  .toolbar-onerow.toolbar-ops .search-box { grid-column:4; }
  .search-box { position:relative; width:240px; flex-shrink:0; }
  .search-box input { width:100%; height:34px; padding:0 12px 0 34px; border:1px solid #e2e8f0; border-radius:8px; font-size:12.5px; outline:none; transition:all 0.15s; background:#fafbfc; font-family:inherit; color:#0f172a; box-sizing:border-box; }
  .search-box input:hover { border-color:#cbd5e1; background:white; }
  .search-box input:focus { border-color:var(--c-secondary); box-shadow:0 0 0 3px rgba(var(--c-secondary-rgb),0.12); background:white; }
  .search-box::before { content:''; position:absolute; left:12px; top:50%; transform:translateY(-50%); width:14px; height:14px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E"); background-size:contain; pointer-events:none; }

  .data-table { background:var(--c-surface); border:1px solid var(--c-border); border-radius:0 0 var(--r-md) var(--r-md); overflow:hidden; box-shadow:var(--sh-sm); }
  table.list-table { width:100%; border-collapse:collapse; }
  table.list-table th { text-align:left; padding:11px 16px; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; background:#f8fafc; border-bottom:1px solid #e2e8f0; }
  table.list-table td { padding:13px 16px; border-bottom:1px solid #f1f5f9; vertical-align:middle; font-size:13px; color:#334155; }
  table.list-table th.th-sortable { cursor:pointer; user-select:none; white-space:nowrap; }
  table.list-table th.th-sortable:hover { color:#334155; }
  .th-sort-arrow { font-size:12px; color:var(--c-secondary); margin-left:2px; }
  table.list-table tr:last-child td { border-bottom:none; }
  table.list-table tr.clickable { cursor:pointer; transition:background 0.1s; }
  table.list-table tr.clickable:hover { background:#f8fafc; }
  /* Operaciones: ancho fijo, mismo alto por fila, truncado en 1 línea */
  /* Filas de alto UNIFORME en todas las tablas de listado (referencia: Operaciones).
     Layout fijo + celdas sin wrap (los textos largos se cortan con "…"): el alto de la
     fila no depende del contenido → todas las vistas quedan parejas. white-space se
     hereda, así que los nombres de asegurado quedan SIEMPRE en una sola línea. */
  table.list-table-uniform { table-layout:fixed; }
  table.list-table-uniform th { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; height:39px; box-sizing:border-box; }
  table.list-table-uniform td { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; height:60px; box-sizing:border-box; padding-top:9px; padding-bottom:9px; }
  table.list-table-uniform td > div { overflow:hidden; text-overflow:ellipsis; }
  /* La celda de acciones NO recorta: los tooltips data-tip se dibujan fuera del botón
     (hacia la izquierda) y el overflow:hidden de arriba los dejaba invisibles. */
  table.list-table-uniform td.td-acciones { overflow:visible; }

  .name-cell { display:flex; align-items:center; gap:11px; }
  .name-avatar { width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:12px; flex-shrink:0; }
  .name-info .name { font-weight:600; color:#0f172a; font-size:13.5px; }
  .name-info .sub { font-size:11.5px; color:#64748b; margin-top:2px; }
  .pill-count { display:inline-block; padding:3px 10px; background:#dbeafe; color:var(--c-primary); border-radius:12px; font-size:11.5px; font-weight:600; }

  /* ===== Paginación ===== */
  .pagination { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; background:white; border:1px solid #e2e8f0; border-top:none; border-radius:0 0 8px 8px; gap:12px; flex-wrap:wrap; }
  .pagination-info { font-size:12.5px; color:#64748b; font-weight:500; }
  .pagination-controls { display:flex; gap:4px; align-items:center; }
  .page-btn, .page-num { height:32px; min-width:32px; padding:0 11px; border:1px solid #e2e8f0; border-radius:7px; background:white; cursor:pointer; font-size:12.5px; color:#475569; font-weight:500; transition:all 0.12s; font-family:inherit; box-sizing:border-box; }
  .page-btn:hover:not(:disabled), .page-num:hover:not(.active) { background:#f1f5f9; border-color:#cbd5e1; color:#0f172a; }
  .page-btn:disabled { opacity:0.4; cursor:not-allowed; }
  .page-num.active { background:var(--c-primary); border-color:var(--c-primary); color:white; }
  .page-numbers { display:flex; gap:4px; }
  .page-ellipsis { padding:0 4px; color:#94a3b8; font-weight:600; align-self:center; }

  .poliza-num { font-family:inherit; font-size:12.5px; font-weight:600; color:#0f172a; }
  .link-asegurado { color:var(--c-primary); cursor:pointer; font-weight:500; }
  .link-asegurado:hover { text-decoration:underline; }

  /* Estado pólizas */
  .estado-badge { display:inline-flex; align-items:center; gap:5px; padding:3px 10px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap; }
  .estado-vigente { background:#d1fae5; color:#065f46; }
  .estado-por-vencer { background:#d1fae5; color:#065f46; }   /* igual que vigente: sigue vigente */
  .estado-en-gestion { background:#dbeafe; color:var(--c-primary); }
  .estado-anulada { background:#fee2e2; color:#991b1b; }
  .estado-vencida { background:#e2e8f0; color:#475569; }
  .estado-emitida { background:#e0e7ff; color:#3730a3; }
  .estado-renovada { background:#cffafe; color:#155e75; }
  .estado-por-renovar { background:#fef3c7; color:#92400e; }
  .estado-atrasada { background:#fee2e2; color:#991b1b; }
  .estado-no-renueva { background:#e2e8f0; color:#475569; }
  /* Botones de acción inline de la vista Renovaciones */
  .renov-act { position:relative; display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border:1px solid #e2e8f0; border-radius:6px; background:#fff; cursor:pointer; font-size:12px; line-height:1; padding:0; margin-right:3px; transition:all .12s; }
  /* Indicador sin acción (ej. ✓ ya renovada): mismo tooltip que los botones */
  .renov-flag { position:relative; display:inline-flex; align-items:center; color:#94a3b8; font-size:12px; }
  /* Tooltip instantáneo hacia la IZQUIERDA (la columna Acción está al borde derecho;
     el overflow:hidden de .data-table recortaría un tooltip hacia arriba o derecha).
     ⚠ Requiere que la celda contenedora NO recorte (td.td-acciones, arriba). */
  .renov-act[data-tip]::after, .renov-flag[data-tip]::after { content:attr(data-tip); position:absolute; right:calc(100% + 8px); top:50%; transform:translateY(-50%); background:#0f172a; color:#fff; font-size:11px; font-weight:500; line-height:1.2; padding:5px 8px; border-radius:6px; white-space:nowrap; opacity:0; pointer-events:none; transition:opacity .12s; z-index:50; box-shadow:0 2px 8px rgba(0,0,0,0.18); }
  .renov-act[data-tip]::before, .renov-flag[data-tip]::before { content:''; position:absolute; right:calc(100% + 3px); top:50%; transform:translateY(-50%); border:5px solid transparent; border-left-color:#0f172a; opacity:0; pointer-events:none; transition:opacity .12s; z-index:50; }
  .renov-act[data-tip]:hover::after, .renov-act[data-tip]:hover::before, .renov-flag[data-tip]:hover::after, .renov-flag[data-tip]:hover::before { opacity:1; }
  .renov-act:hover { border-color:#94a3b8; background:#f8fafc; }
  .renov-act.r:hover { border-color:#06b6d4; background:#ecfeff; }
  .renov-act.a:hover { border-color:#ef4444; background:#fef2f2; }
  .renov-act.n:hover { border-color:#64748b; background:#f1f5f9; }
  .renov-act.c:hover { border-color:var(--c-secondary); background:#eff6ff; }

  /* Cobranza badge */
  .cobranza-badge { display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:10px; font-size:10.5px; font-weight:600; }
  .cobranza-al-dia { background:#dcfce7; color:#166534; }
  .cobranza-pendiente { background:#fef3c7; color:#92400e; }
  .cobranza-mora { background:#fee2e2; color:#991b1b; }
  /* Detalle de rechazo de cobro (motivo + copiar link): a la DERECHA del badge, misma línea */
  .rech-detalle { display:inline-flex; align-items:center; gap:8px; flex-wrap:nowrap; white-space:nowrap; margin-left:8px; vertical-align:middle; font-size:10.5px; color:#94a3b8; }
  /* En el listado de Cobranzas el rechazo solo muestra la fecha (motivo + link → en la ficha). */
  .rech-fecha { margin-top:4px; font-size:10.5px; color:#94a3b8; white-space:nowrap; }
  .rech-copiar { display:inline-flex; align-items:center; gap:4px; padding:1px 9px; border-radius:999px; font-size:10.5px; font-weight:600; line-height:1.7; color:var(--c-secondary-strong); background:#eff6ff; border:1px solid #bfdbfe; text-decoration:none; cursor:pointer; transition:background 0.12s, border-color 0.12s, color 0.12s; }
  .rech-copiar:hover { background:#dbeafe; border-color:#93c5fd; color:var(--c-primary-strong); }

  /* ===== Detail genérico ===== */
  .back-link { display:inline-flex; align-items:center; gap:6px; color:#64748b; text-decoration:none; cursor:pointer; font-size:13px; margin-bottom:14px; transition:color 0.12s; user-select:none; }
  .back-link:hover { color:var(--c-primary); }
  .detail-header { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:22px; gap:20px; flex-wrap:wrap; }
  .detail-header-left { display:flex; align-items:center; gap:16px; }
  .detail-avatar { width:60px; height:60px; border-radius:50%; color:white; font-weight:700; font-size:20px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .detail-name { font-size:21px; font-weight:700; color:#0f172a; letter-spacing:-0.3px; }
  .detail-tags { display:flex; gap:6px; margin-top:7px; flex-wrap:wrap; }
  .tag { padding:3px 9px; background:#f1f5f9; color:#475569; border-radius:4px; font-size:11.5px; font-weight:500; }
  .tag.productor { background:#dbeafe; color:var(--c-primary); }
  .tag.aseguradora { background:#cffafe; color:#155e75; }
  .detail-actions { display:flex; gap:8px; flex:0 1 auto; flex-wrap:wrap; justify-content:flex-end; }
  /* Ficha de póliza: botones SIEMPRE arriba-derecha (nunca envuelven a una fila
     debajo del bloque izquierdo). El header no envuelve entre sus dos hijos; el
     bloque izquierdo cede ancho y los botones se apilan en doble fila si hace falta. */
  .detail-header-poliza { flex-wrap:nowrap; }
  .detail-header-poliza .detail-header-left { flex:1 1 auto; min-width:0; }
  .detail-header-poliza .detail-header-left > div { min-width:0; }
  .detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px; }
  @media (max-width:1100px) { .detail-grid { grid-template-columns:1fr; } }
  .field-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px 22px; }
  .field { display:flex; flex-direction:column; gap:3px; }
  .field.full { grid-column:1/-1; }
  .field-label { font-size:10.5px; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; font-weight:700; }
  .field-value { font-size:13.5px; color:#0f172a; font-weight:500; }
  .field-value.muted { color:#94a3b8; font-style:italic; font-weight:400; }
  .field-value.big { font-size:16px; font-weight:700; }
  .field-value a { color:var(--c-primary); text-decoration:none; }
  .field-value a:hover { text-decoration:underline; }

  /* Mini stats row para detalle de póliza */
  .mini-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; margin-bottom:18px; }
  .mini-stat { background:white; border:1px solid #e2e8f0; border-radius:10px; padding:14px 16px; display:flex; gap:12px; align-items:flex-start; transition:all 0.15s; }
  .mini-stat:hover { border-color:var(--c-secondary); box-shadow:0 4px 12px rgba(15,23,42,0.06); }
  .mini-stat-icon-box { width:42px; height:42px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; }
  .mini-stat-body { flex:1; min-width:0; }
  .mini-stat-label { font-size:10.5px; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; font-weight:700; margin-bottom:6px; }
  .mini-stat-value { font-size:18px; font-weight:700; color:#0f172a; letter-spacing:-0.3px; line-height:1.1; }
  .mini-stat-sub { font-size:11px; color:#64748b; margin-top:4px; }
  .mini-stat-value.green { color:#15803d; }
  .mini-stat-value.amber { color:#b45309; }
  .mini-stat-value.red { color:#b91c1c; }

  /* Cuotas table */
  .cuotas-table { width:100%; border-collapse:collapse; }
  .cuotas-table th { text-align:left; padding:9px 14px; font-size:10.5px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; background:#f8fafc; border-bottom:1px solid #e2e8f0; }
  .cuotas-table td { padding:10px 14px; border-bottom:1px solid #f1f5f9; font-size:13px; }
  .cuotas-table tr:last-child td { border-bottom:none; }
  .cuotas-detail-row > td { border-bottom:1px solid #e2e8f0 !important; }

  /* Timeline movimientos */
  .timeline { padding:6px 4px; }
  .timeline-item { display:grid; grid-template-columns:90px 1fr; gap:14px; padding:10px 0; border-left:none; position:relative; }
  .timeline-date { font-size:12px; color:#64748b; font-weight:600; padding-top:1px; }
  .timeline-content { padding-left:18px; border-left:2px solid #e2e8f0; padding-bottom:14px; position:relative; }
  .timeline-content::before { content:''; position:absolute; left:-7px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--c-secondary); border:2px solid white; box-shadow:0 0 0 2px #cbd5e1; }
  .timeline-item:last-child .timeline-content { border-left-color:transparent; padding-bottom:0; }
  .timeline-title { font-size:13px; font-weight:600; color:#0f172a; }
  .timeline-desc { font-size:12px; color:#64748b; margin-top:2px; }

  /* Tabla de endosos / movimientos reales */
  .renov-bar { display:flex; gap:14px; align-items:center; padding:9px 12px; margin:0 0 12px 0; background:#f0f9ff; border:1px solid #bae6fd; border-radius:8px; font-size:12.5px; color:#075985; }
  .renov-link { display:inline-flex; gap:6px; align-items:center; }
  .renov-link strong { color:#0c4a6e; font-family:inherit; font-size:12px; }
  .renov-goto { color:inherit; text-decoration:underline; text-underline-offset:2px; cursor:pointer; }
  .renov-goto:hover { color:#0369a1; }
  .renov-link strong.renov-huerfana { color:#64748b; cursor:help; }
  .renov-huerfana-tag { margin-left:5px; font-size:10px; font-weight:600; letter-spacing:.02em; text-transform:uppercase; color:#94a3b8; background:#f1f5f9; border:1px solid #e2e8f0; border-radius:6px; padding:1px 6px; }
  .endosos-resumen { display:flex; gap:18px; padding:10px 12px; margin:0 0 12px 0; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
  .endosos-resumen > div { display:flex; flex-direction:column; gap:2px; }
  .endosos-resumen .lbl { font-size:10.5px; color:#64748b; font-weight:600; text-transform:uppercase; letter-spacing:0.4px; }
  .endosos-resumen .val { font-size:14px; color:#0f172a; font-weight:700; }
  .endosos-table { width:100%; border-collapse:collapse; }
  .endosos-table th { text-align:left; padding:9px 12px; font-size:10.5px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; background:#f8fafc; border-bottom:1px solid #e2e8f0; }
  .endosos-table th.num { text-align:right; }
  .endosos-table td { padding:9px 12px; border-bottom:1px solid #f1f5f9; font-size:12.5px; color:#1e293b; }
  .endosos-table td.num { text-align:right;  font-family:inherit; font-size:12px; }
  .endosos-table td.nowrap { white-space:nowrap; font-size:12px; }
  .endosos-table tr:hover td { background:#fafbfc; }
  .endosos-table tr.endoso-row-current td { background:#fefce8; }
  .endosos-table td.td-left, .endosos-table th.td-left { text-align:left; font-family:inherit; font-size:12.5px; }
  .endosos-table td.td-left, .endosos-table th.td-left { text-align:left; font-family:inherit; font-size:12.5px; }
  .btn-factura { background:#f1f5f9; border:1px solid #cbd5e1; color:#1e293b; font-size:11px; padding:4px 8px; border-radius:5px; cursor:pointer; white-space:nowrap; transition:all 0.15s; }
  .btn-factura:hover { background:var(--c-primary); color:#fff; border-color:var(--c-primary); }
  .endosos-table tr.endoso-row-current:hover td { background:#fef9c3; }
  .tipo-chip { display:inline-block; padding:3px 9px; border-radius:5px; font-size:11px; font-weight:600; white-space:nowrap; }
  /* Chips para las 4 categorías oficiales (Póliza/Renovación/Anulación/Endoso) */
  .tipo-chip.tipo-p-liza            { background:#dcfce7; color:#15803d; }   /* Póliza   = verde */
  .tipo-chip.tipo-renovaci-n        { background:#dbeafe; color:var(--c-primary); }   /* Renov.   = azul  */
  .tipo-chip.tipo-anulaci-n         { background:#fecaca; color:#991b1b; }   /* Anul.    = rojo  */
  .tipo-chip.tipo-endoso            { background:#f1f5f9; color:#475569; }   /* Endoso   = gris  */
  /* Compatibilidad con clasificación vieja por si quedan endosos sin re-clasificar */
  .tipo-chip.tipo-alta              { background:#dcfce7; color:#15803d; }
  .tipo-chip.tipo-refacturaci-n     { background:#f1f5f9; color:#475569; }
  .tipo-chip.tipo-reducci-n-de-prima{ background:#fed7aa; color:#9a3412; }
  .tipo-chip.tipo-anulaci-n-parcial { background:#fecaca; color:#991b1b; }

  /* ===== Profile fields (Datos personales) ===== */
  .profile-fields { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px; }
  @media (max-width:1100px){ .profile-fields { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
  @media (max-width:700px){ .profile-fields { grid-template-columns:1fr; } }
  .profile-field { display:flex; align-items:center; gap:11px; padding:11px 12px; background:#fafbfc; border:1px solid #f1f5f9; border-radius:8px; transition:all 0.12s; height:64px; box-sizing:border-box; min-width:0; }
  .profile-field:hover { background:white; border-color:#e2e8f0; }
  .profile-field-icon { width:36px; height:36px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; }
  .profile-field-icon.blue { background:#dbeafe; color:var(--c-primary); }
  .profile-field-icon.purple { background:#ede9fe; color:#5b21b6; }
  .profile-field-icon.amber { background:#fef3c7; color:#92400e; }
  .profile-field-icon.green { background:#dcfce7; color:#15803d; }
  .profile-field-icon.cyan { background:#cffafe; color:#0e7490; }
  .profile-field-icon.pink { background:#fce7f3; color:#9d174d; }
  .profile-field-icon.gray { background:#f1f5f9; color:#475569; }
  .profile-field-icon.red { background:#fee2e2; color:#991b1b; }
  .profile-field-content { flex:1; min-width:0; overflow:hidden; }
  .profile-field-label { font-size:10px; color:#64748b; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; line-height:1; margin-bottom:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .profile-field-value { font-size:13px; color:#0f172a; font-weight:500; line-height:1.3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .profile-field-value.muted { color:#94a3b8; font-style:italic; font-weight:400; }
  /* Modificadores semánticos para mantener tipografía consistente */
  .profile-field-value.mono { font-family:inherit; font-size:12.5px; letter-spacing:0.3px; }
  .profile-field-value.strong { font-weight:700; }
  .profile-field-value.wrap { white-space:normal; line-height:1.5; }
  .profile-field-value.link { color:var(--c-primary); }
  .profile-field-value.danger { color:#991b1b; font-weight:600; }
  .profile-field-value.field-padding { padding-top:13px; padding-bottom:13px; }
  /* Lápiz de edición inline de la ficha de Solicitudes (cotización manual, solo org) —
     mismo lenguaje visual que .field-edit-btn (oculto hasta hover de la caja). */
  .sol-edit { margin-left:4px; font-size:11px; text-decoration:none; color:var(--c-text-3); opacity:0.35; transition:opacity var(--t-fast); flex-shrink:0; }
  .profile-field:hover .sol-edit { opacity:1; }
  .sol-edit:hover { color:var(--c-primary); }
  /* Edición inline por campo (✎) */
  .profile-field-value.editable { display:flex; align-items:center; gap:6px; }
  .profile-field-value.editable > .field-val { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
  /* Mientras se edita un campo (panel multi-fuente), la celda crece y deja ver todo el
     panel (incluido "Cerrar"). Sin esto, height:64px + overflow:hidden lo recortan. */
  .profile-field.editing-field { height:auto; min-height:64px; overflow:visible; align-items:stretch; z-index:20; position:relative; }
  .profile-field.editing-field .profile-field-content { overflow:visible; }
  .profile-field.editing-field .profile-field-value { overflow:visible; white-space:normal; }
  .field-edit-btn { background:none; border:none; cursor:pointer; color:var(--c-text-3); font-size:12px; line-height:1; padding:2px 4px; margin-left:auto; border-radius:var(--r-sm); opacity:0.35; transition:opacity var(--t-fast), color var(--t-fast), background var(--t-fast); flex-shrink:0; }
  .profile-field:hover .field-edit-btn { opacity:1; }
  .field-edit-btn:hover { color:var(--c-primary); background:var(--c-accent-bg); }
  .field-edit-wrap { display:flex; align-items:center; gap:5px; width:100%; }
  .field-edit-input { flex:1; min-width:0; padding:4px 8px; border:1px solid var(--c-secondary); border-radius:var(--r-sm); font:inherit; font-size:13px; outline:none; box-shadow:var(--ring); }
  .field-edit-ok, .field-edit-cancel { border:none; cursor:pointer; border-radius:var(--r-sm); width:24px; height:24px; font-size:12px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; }
  .field-edit-ok { background:var(--c-success-bg); color:var(--c-success); }
  .field-edit-cancel { background:var(--c-danger-bg); color:var(--c-danger); }

  /* ===== Panel multi-fuente (valor por compañía + predeterminado) ===== */
  .fuentes-panel { width:100%; display:flex; flex-direction:column; gap:7px; padding:8px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:var(--r-md, 8px); }
  .fuentes-rows { display:flex; flex-direction:column; gap:3px; }
  .fuente-row { display:flex; align-items:center; gap:8px; padding:5px 7px; border-radius:6px; cursor:pointer; transition:background var(--t-fast); }
  .fuente-row:hover { background:#eef2f7; }
  .fuente-row.is-principal { background:#e0f2fe; }
  .fuente-row input[type=radio] { accent-color:var(--c-primary, var(--c-primary)); flex-shrink:0; cursor:pointer; margin:0; }
  .fuente-val { flex:1; min-width:0; font-size:12.5px; color:#0f172a; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .fuente-badges { display:flex; gap:3px; flex-shrink:0; }
  .fuente-badge { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:0.3px; padding:2px 6px; border-radius:5px; background:#e2e8f0; color:#475569; white-space:nowrap; }
  .fuente-badge.fuente-zurich { background:#dbeafe; color:var(--c-primary); }
  .fuente-badge.fuente-sc { background:#dcfce7; color:#15803d; }
  .fuente-badge.fuente-manual { background:#fef3c7; color:#a16207; }
  .fuente-del { border:none; background:transparent; cursor:pointer; font-size:11px; padding:2px 4px; border-radius:5px; color:#94a3b8; flex-shrink:0; }
  .fuente-del:hover { background:#fee2e2; color:#b91c1c; }
  .fuente-edit { border:none; background:transparent; cursor:pointer; font-size:11px; padding:2px 4px; border-radius:5px; color:#94a3b8; flex-shrink:0; }
  .fuente-edit:hover { background:#dbeafe; color:var(--c-primary-strong); }
  .fuente-add { display:flex; align-items:center; gap:5px; border-top:1px solid #e2e8f0; padding-top:7px; }
  .fuente-add.dom-add { align-items:flex-end; }
  .dom-fields { display:grid; grid-template-columns:2fr 0.8fr 0.7fr 0.7fr; gap:5px; flex:1; min-width:0; }
  .dom-fields input { padding:4px 7px; border:1px solid var(--c-secondary, #cbd5e1); border-radius:var(--r-sm, 6px); font:inherit; font-size:12px; outline:none; min-width:0; }
  .dom-fields input.dom-calle { grid-column:span 2; }
  .dom-fields input.dom-localidad { grid-column:span 2; }
  .dom-fields input.dom-provincia { grid-column:span 2; }
  .fuentes-actions { display:flex; justify-content:flex-end; }
  .fuente-cerrar { border:none; background:transparent; cursor:pointer; font-size:11px; font-weight:600; color:#64748b; padding:2px 6px; border-radius:5px; }
  .fuente-cerrar:hover { background:#e2e8f0; color:#0f172a; }

  /* ===== Datos bancarios ===== */
  .bancarios-grid { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
  @media (max-width:900px) { .bancarios-grid { grid-template-columns:1fr; } }
  .cbus-list, .tarjetas-list { display:flex; flex-direction:column; gap:8px; }
  .cbu-item, .tarjeta-item { display:flex; align-items:center; gap:12px; padding:11px 14px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; transition:border-color 0.12s; min-height:60px; box-sizing:border-box; }
  .cbu-item:hover, .tarjeta-item:hover { border-color:#cbd5e1; }
  .cbu-badge, .tarjeta-marca { width:60px; height:36px; border-radius:6px; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:11px; color:white; flex-shrink:0; letter-spacing:0.8px; }
  .cbu-badge { background:linear-gradient(135deg,var(--c-primary),#0891b2); }
  .tarjeta-marca.visa { background:#1A1F71; }
  .tarjeta-marca.mastercard { background:linear-gradient(135deg,#EB001B,#F79E1B); }
  .tarjeta-marca.amex { background:#006FCF; }
  .tarjeta-marca.cabal { background:#0072CE; }
  .tarjeta-marca.naranja { background:linear-gradient(135deg,#FF6900,#F7941E); }
  .cbu-info, .tarjeta-info { display:flex; flex-direction:column; gap:3px; min-width:0; flex:1; }
  .cbu-banco, .tarjeta-tipo { font-size:10.5px; color:#64748b; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; line-height:1; }
  .cbu-display, .tarjeta-numero { font-family:inherit; font-size:13px; font-weight:400; color:#0f172a; letter-spacing:0.4px; line-height:1.2; }
  .bancarios-empty { padding:14px; text-align:center; color:#94a3b8; font-size:12.5px; font-style:italic; background:#f8fafc; border:1px dashed #e2e8f0; border-radius:8px; min-height:60px; display:flex; align-items:center; justify-content:center; }
  .bancario-form { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:14px; padding:12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
  .bancario-form .banc-fields { display:flex; gap:8px; flex-wrap:wrap; flex:1; }
  .bancario-form select, .bancario-form input { font-size:12.5px; padding:6px 9px; border:1px solid #cbd5e1; border-radius:6px; background:white; color:#0f172a; }
  .bancario-form input { flex:1; min-width:120px; }
  .banc-form-actions { display:flex; gap:6px; }
  .banc-del { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border:1px solid #e2e8f0; background:#fff; cursor:pointer; font-size:13px; line-height:1; padding:0; border-radius:7px; color:#94a3b8; flex-shrink:0; transition:all 0.15s; }
  .banc-del:hover { background:#fee2e2; border-color:#fecaca; color:#b91c1c; }

  /* ===== Cross-selling ===== */
  .cross-selling-card { background:linear-gradient(135deg,#fef3c7 0%,#fef9e7 50%,#ffffff 100%); border:1px solid #fde68a; }
  .cross-selling-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  @media (max-width:900px){ .cross-selling-grid { grid-template-columns:1fr; } }
  .cross-item { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; padding:14px; border:1px solid #e2e8f0; border-radius:10px; background:white; transition:all 0.15s; }
  .cross-item:hover { border-color:var(--c-secondary); box-shadow:0 4px 12px rgba(15,23,42,0.06); transform:translateY(-1px); }
  .cross-item.priority-alta { border-left:4px solid #ef4444; }
  .cross-item.priority-media { border-left:4px solid #f59e0b; }
  .cross-item.priority-baja { border-left:4px solid #94a3b8; }
  .cross-icon { width:44px; height:44px; border-radius:10px; background:#f1f5f9; display:flex; align-items:center; justify-content:center; font-size:20px; flex-shrink:0; }
  .cross-info { min-width:0; }
  .cross-ramo { font-size:13.5px; font-weight:700; color:#0f172a; line-height:1.2; }
  .cross-razon { font-size:11.5px; color:#64748b; margin-top:4px; line-height:1.4; }
  .cross-priority { font-size:9.5px; margin-top:6px; text-transform:uppercase; letter-spacing:0.6px; font-weight:700; }
  .cross-priority.alta { color:#dc2626; }
  .cross-priority.media { color:#d97706; }
  .cross-priority.baja { color:#64748b; }
  .cross-action { background:var(--c-primary); color:white; border:none; padding:7px 12px; border-radius:6px; font-size:11.5px; font-weight:600; cursor:pointer; white-space:nowrap; transition:background 0.15s; }
  .cross-action:hover { background:var(--c-primary-700); }
  .cross-empty { padding:24px; text-align:center; color:#94a3b8; font-size:13px; font-style:italic; }

  /* Pólizas (vista en ficha de asegurado) - tabla compacta */
  .policies-card { padding:0; }
  .policies-header { padding:18px 20px 12px; border-bottom:1px solid #f1f5f9; display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; }
  .policies-title { font-size:13.5px; font-weight:700; display:flex; align-items:center; gap:8px; }
  .empty-policies { padding:50px 20px; text-align:center; color:#94a3b8; font-size:13px; }

  /* ===== Pólizas cards (nuevo estilo) ===== */
  .polizas-cards { display:flex; flex-direction:column; gap:10px; padding:16px 20px 20px; }
  .poliza-card { display:grid; grid-template-columns:auto 1fr auto auto; gap:14px; padding:14px 16px; background:#fafbfc; border:1px solid #e2e8f0; border-radius:10px; cursor:pointer; transition:all 0.15s; align-items:center; }
  .poliza-card:hover { background:white; border-color:var(--c-secondary); box-shadow:0 4px 14px rgba(15,23,42,0.07); transform:translateX(2px); }
  .poliza-card-icon { width:48px; height:48px; border-radius:11px; display:flex; align-items:center; justify-content:center; font-size:22px; flex-shrink:0; }
  .poliza-card-content { min-width:0; flex:1; }
  .poliza-card-line1 { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:3px; }
  .poliza-card-ramo { font-size:14.5px; font-weight:700; color:#0f172a; line-height:1.2; }
  .poliza-card-bien { font-size:11.5px; color:#64748b; font-style:italic; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
  .poliza-card-meta { display:flex; gap:14px; margin-top:8px; flex-wrap:wrap; font-size:11.5px; color:#475569; align-items:center; }
  .poliza-card-meta-item { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
  .poliza-card-meta-divider { width:1px; height:14px; background:#e2e8f0; }
  .poliza-card-premio { text-align:right; min-width:110px; }
  .poliza-card-premio-monto { font-size:14.5px; font-weight:700; color:#15803d; line-height:1.2; }
  .poliza-card-premio-label { font-size:10.5px; color:#94a3b8; text-transform:uppercase; letter-spacing:0.4px; margin-top:2px; }
  .poliza-card-arrow { color:#cbd5e1; font-size:18px; transition:all 0.15s; flex-shrink:0; }
  .poliza-card:hover .poliza-card-arrow { color:var(--c-secondary); transform:translateX(4px); }
  .empty-polizas-card { padding:48px 20px; text-align:center; color:#94a3b8; }
  .empty-polizas-icon { font-size:42px; margin-bottom:10px; opacity:0.4; }
  .empty-polizas-text { font-size:14px; font-weight:600; color:#475569; margin-bottom:4px; }
  .empty-polizas-sub { font-size:12px; color:#94a3b8; }

  /* Avatar gradients (azulados) */
  .av-1 { background:linear-gradient(135deg,var(--c-primary),var(--c-secondary)); }
  .av-2 { background:linear-gradient(135deg,#0c4a6e,#0284c7); }
  .av-3 { background:linear-gradient(135deg,var(--c-primary-700),#06b6d4); }
  .av-4 { background:linear-gradient(135deg,#155e75,#0ea5e9); }
  .av-5 { background:linear-gradient(135deg,var(--c-primary),#7c3aed); }
  .av-6 { background:linear-gradient(135deg,#0f172a,var(--c-secondary)); }
  .av-7 { background:linear-gradient(135deg,var(--c-primary-700),#22d3ee); }
  .av-8 { background:linear-gradient(135deg,#075985,#38bdf8); }
  /* Fallback: avatares con clase legada "blue" (asegurados reales Zurich/SC) → gradiente corporativo */
  .name-avatar.blue, .detail-avatar.blue { background:linear-gradient(135deg,var(--c-primary),var(--c-secondary)); }

  /* ===== Usuarios / Equipo ===== */
  .usuario-row { display:flex; align-items:center; gap:12px; padding:8px 8px; border-bottom:1px solid var(--c-border-soft); cursor:pointer; transition:background var(--t-fast); border-radius:var(--r-sm); }
  .usuario-row.sub { margin-left:30px; }  /* asesores/empleados indentados bajo su jefe */
  .usuarios-filtros { display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap; }
  .uf-chip { font-size:12px; font-weight:600; padding:6px 14px; border-radius:var(--r-pill); border:1px solid var(--c-border-soft); background:white; color:var(--c-text-2); cursor:pointer; transition:all 0.12s; }
  .uf-chip:hover { border-color:var(--c-primary); color:var(--c-primary); }
  .uf-chip.active { background:var(--c-primary); border-color:var(--c-primary); color:white; }
  .usuario-row:last-child { border-bottom:none; }
  .usuario-row:hover { background:var(--c-bg); }
  .usuario-row.inactivo { opacity:0.55; }
  .usuario-avatar { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:11px; flex-shrink:0; }
  /* Fila en UNA sola línea: nombre+chips a la izquierda, meta (jerarquía/email) a la derecha */
  .usuario-main { flex:1; min-width:0; display:flex; align-items:center; gap:10px; }
  .usuario-name { font-size:13.5px; font-weight:400; color:var(--c-text); display:flex; align-items:center; gap:8px; white-space:nowrap; overflow:hidden; }
  .usuario-rol { font-size:10px; font-weight:700; padding:2px 8px; border-radius:var(--r-pill); text-transform:uppercase; letter-spacing:0.4px; }
  .usuario-rol.organizador { background:var(--c-accent-bg); color:var(--c-accent); }
  .usuario-rol.productor { background:#dbeafe; color:var(--c-primary); }
  .usuario-rol.socio { background:#f3e8ff; color:#7e22ce; }
  .usuario-rol.asesor { background:#eef2ff; color:#4338ca; }
  .usuario-rol.empleado { background:#f0fdf4; color:#15803d; }
  .usuario-rol.inactivo { background:var(--c-danger-bg); color:var(--c-danger); }
  .usuario-rol.sinacceso { background:#f1f5f9; color:#64748b; }
  .usuario-meta { font-size:12px; color:var(--c-text-2); margin-left:auto; text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex-shrink:0; }
  .usuario-creds { display:flex; gap:6px; margin-top:7px; flex-wrap:wrap; }
  .cred-chip { font-size:10.5px; font-weight:600; padding:2px 8px; border-radius:var(--r-pill); }
  .cred-chip.own { background:var(--c-success-bg); color:var(--c-success); }
  .cred-chip.inherit { background:#eef2ff; color:#4338ca; }
  .cred-chip.env { background:#f1f5f9; color:var(--c-text-2); }
  .usuario-arrow { color:var(--c-text-3); font-size:15px; flex-shrink:0; }
  .usuario-row:hover .usuario-arrow { color:var(--c-primary); }
  .btn-danger { background:var(--c-danger-bg); color:var(--c-danger); border:1px solid #fecaca; padding:9px 16px; border-radius:var(--r-sm); font-weight:600; cursor:pointer; font-size:13px; transition:all var(--t-fast); }
  .btn-danger:hover { background:#fecaca; }
  .cred-blocks { display:flex; flex-direction:column; gap:14px; }
  .cred-block { border:1px solid var(--c-border); border-radius:var(--r-md); padding:14px; background:var(--c-bg); }
  .cred-block-head { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
  .cred-block-title { font-weight:700; font-size:13.5px; color:var(--c-text); }
  .cred-toggle { font-size:12.5px; color:var(--c-text-2); display:flex; align-items:center; gap:6px; cursor:pointer; user-select:none; }
  .cred-block-hint { font-size:12px; color:var(--c-text-3); font-style:italic; margin-top:8px; }
  .cred-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(175px,1fr)); gap:10px 14px; margin-top:12px; }

  /* ===== Cotizador ===== */
  .cotizador-form { display:flex; flex-direction:column; gap:14px; }
  .form-section { background:white; border:1px solid #e2e8f0; border-radius:10px; padding:18px 20px; }
  .form-section-title { font-size:13px; font-weight:700; color:#0f172a; margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid #f1f5f9; display:flex; align-items:center; gap:8px; }
  .form-section-title .step-num { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; background:var(--c-primary); color:white; border-radius:50%; font-size:11px; font-weight:700; }
  .form-toggle { display:flex; gap:8px; margin-bottom:14px; }
  .form-toggle label { flex:1; padding:10px 12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; cursor:pointer; font-size:13px; color:#334155; font-weight:500; text-align:center; transition:all 0.12s; }
  .form-toggle label:hover { background:#f1f5f9; }
  .form-toggle label:has(input:checked) { background:#dbeafe; border-color:var(--c-secondary); color:var(--c-primary); font-weight:600; }
  .form-toggle input { display:none; }
  /* Resumen del cliente elegido (reemplaza los campos duplicados, jun 2026) */
  .cli-res-card { background:#f8fafc; border:1px solid #bfdbfe; border-radius:10px; padding:14px 16px; margin-top:12px; }
  .cli-res-head { display:flex; align-items:flex-start; gap:12px; }
  .cli-res-avatar { width:42px; height:42px; border-radius:50%; background:#dbeafe; color:var(--c-primary); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:15px; flex-shrink:0; }
  .cli-res-main { flex:1; min-width:0; }
  .cli-res-name-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .cli-res-name { font-size:15px; font-weight:700; color:#0f172a; }
  .cli-res-badge { display:inline-flex; align-items:center; gap:3px; font-size:11px; font-weight:600; color:#15803d; background:#dcfce7; padding:2px 9px; border-radius:999px; }
  .cli-res-sub { font-size:12.5px; color:#64748b; margin-top:3px; }
  .cli-res-actions { display:flex; gap:6px; flex-shrink:0; }
  .cli-res-btn { font-size:12px; color:var(--c-primary); background:white; border:1px solid #e2e8f0; border-radius:7px; padding:5px 11px; cursor:pointer; font-weight:600; }
  .cli-res-btn:hover { background:#eff6ff; border-color:#bfdbfe; }
  .cli-res-chips { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; padding-top:12px; border-top:1px solid #e2e8f0; }
  .cli-res-chip { font-size:12px; color:#334155; background:white; border:1px solid #e2e8f0; padding:5px 10px; border-radius:8px; }
  .cli-res-k { color:#94a3b8; font-weight:600; margin-right:2px; }
  .form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px 18px; }
  .form-field { display:flex; flex-direction:column; gap:5px; min-width:0; }
  .form-field-label { font-size:11.5px; color:#475569; font-weight:600; }
  .form-field-label .req { color:#dc2626; }
  /* Asterisco de obligatorio SIEMPRE rojo, también fuera de .form-field-label (subtítulos). */
  .req { color:#dc2626; }
  .form-input { width:100%; padding:8px 12px; border:1px solid #cbd5e1; border-radius:6px; font-size:13px; color:#0f172a; background:white; outline:none; transition:border-color 0.15s; font-family:inherit; }
  .form-input:focus { border-color:var(--c-secondary); box-shadow:0 0 0 3px rgba(var(--c-secondary-rgb),0.15); }
  .form-input:disabled { background:#f1f5f9; cursor:not-allowed; }
  .form-input[readonly] { background:#f8fafc; color:#475569; cursor:default; }
  .loc-suggestions { position:absolute; top:calc(100% + 4px); left:0; right:0; background:white; border:1px solid #e2e8f0; border-radius:8px; box-shadow:0 8px 22px rgba(15,23,42,0.12); max-height:280px; overflow-y:auto; z-index:200; }
  .loc-sug-item { padding:8px 12px; cursor:pointer; font-size:12.5px; color:#0f172a; border-bottom:1px solid #f1f5f9; display:flex; align-items:center; justify-content:space-between; gap:10px; }
  .loc-sug-item:last-child { border-bottom:none; }
  .loc-sug-item:hover, .loc-sug-item.active { background:#eff6ff; }
  .loc-sug-loc { font-weight:600; color:#0f172a; }
  .loc-sug-meta { font-size:11px; color:#64748b; white-space:nowrap; }
  .loc-sug-empty { padding:14px; text-align:center; color:#94a3b8; font-size:12.5px; }
  select.form-input { padding:7px 32px 7px 12px; cursor:pointer; appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 8px center; background-size:14px; }
  .form-checks { display:flex; gap:8px; flex-wrap:wrap; margin-top:12px; }
  .check-pill { display:inline-flex; align-items:center; gap:7px; padding:8px 14px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:20px; cursor:pointer; font-size:12.5px; font-weight:500; color:#334155; transition:all 0.12s; user-select:none; }
  .check-pill:hover { border-color:#cbd5e1; background:#f1f5f9; }
  .check-pill input { accent-color:var(--c-primary); }
  .check-pill:has(input:checked) { background:#dbeafe; border-color:var(--c-secondary); color:var(--c-primary); }
  .check-pill .cob-code { display:inline-block; padding:1px 5px; background:rgba(var(--c-primary-rgb),0.15); border-radius:3px; font-size:10px; font-weight:700; }
  .form-actions { display:flex; gap:10px; justify-content:flex-end; padding:6px 0 0; }
  .form-section-subtitle { font-size:11.5px; color:#475569; font-weight:700; text-transform:uppercase; letter-spacing:0.6px; margin:14px 0 8px; display:flex; align-items:center; gap:6px; }
  .form-section-subtitle:first-child { margin-top:0; }
  .form-field-hint { font-size:11.5px; color:#64748b; margin-top:5px; }
  .aseg-info-card { background:linear-gradient(135deg,#f0f9ff,#f8fafc); border:1px solid #bae6fd; border-radius:10px; padding:14px 16px; margin-top:12px; }
  .aseg-info-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); gap:14px 18px; }
  .aseg-info-grid > div { display:flex; flex-direction:column; gap:4px; min-width:0; }
  .check-pill .cia-icon { display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:4px; background:var(--c-primary); color:white; font-size:9px; font-weight:700; }
  .btn-cotizar { background:linear-gradient(90deg,var(--c-primary),var(--c-secondary)); color:white; border:none; padding:11px 28px; border-radius:8px; font-weight:700; cursor:pointer; font-size:14px; display:inline-flex; align-items:center; gap:8px; transition:all 0.15s; box-shadow:0 2px 8px rgba(var(--c-primary-rgb),0.25); }
  .btn-cotizar:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(var(--c-primary-rgb),0.35); }

  /* Resultados cotización */
  .cot-summary { padding:8px 14px; margin-bottom:8px; }
  .cot-summary-header { display:flex; justify-content:space-between; align-items:center; padding-bottom:7px; margin-bottom:8px; border-bottom:1px solid #f1f5f9; }
  .cot-summary-title { font-size:15px; font-weight:700; color:#0f172a; display:flex; align-items:center; gap:8px; }
  .cot-summary-body { display:grid; grid-template-columns:2fr 2fr 1.2fr 1.2fr; gap:10px; }
  @media (max-width:900px){ .cot-summary-body { grid-template-columns:1fr 1fr; } }
  .cot-summary-item { display:flex; flex-direction:column; gap:1px; padding:6px 11px; background:#f8fafc; border:1px solid #f1f5f9; border-radius:10px; }
  .cot-summary-item .field-label { font-size:10px; letter-spacing:0.5px; }
  .cot-summary-item-value { font-size:12.5px; font-weight:400; color:#1e293b; line-height:1.3; }
  .cot-summary-sub { font-size:11px; color:#64748b; font-weight:400; line-height:1.35; }

  .cot-toolbar { padding:12px 16px; margin-bottom:14px; background:white; border:1px solid #e2e8f0; border-radius:8px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .cot-toolbar-label { font-size:11.5px; color:#64748b; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; }

  /* KPIs-filtro del listado de cotizaciones (clic = filtrar, re-clic = desfiltrar) */
  .cot-stats-row { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:8px; margin-bottom:14px; }
  .cot-stat-pill { background:white; border:1px solid #e2e8f0; border-radius:10px; padding:12px 10px; display:flex; align-items:center; gap:9px; transition:all 0.15s; }
  .cot-stat-pill:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(15,23,42,0.06); }
  .cot-stat-pill.filtrable { cursor:pointer; user-select:none; }
  .cot-stat-pill.filtrable.active { border-color:#6366f1; background:#eef2ff; box-shadow:0 0 0 2px rgba(99,102,241,0.18); }
  .cot-stat-icon { width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; }
  .cot-stat-icon.total { background:#e0e7ff; color:#3730a3; }
  .cot-stat-icon.cotizada { background:#ede9fe; color:#6d28d9; }
  .cot-stat-icon.emitida { background:#dcfce7; color:#15803d; }
  .cot-stat-icon.vencida { background:#fef3c7; color:#92400e; }
  .cot-stat-icon.pendiente { background:#fef3c7; color:#92400e; }
  .cot-stat-icon.en-emision { background:#dcfce7; color:#15803d; }
  .cot-stat-icon.rechazada { background:#fee2e2; color:#991b1b; }
  .cot-stat-icon.creada { background:#dbeafe; color:var(--c-primary); }
  .cot-stat-icon.solicitada { background:#dbeafe; color:var(--c-primary); }
  .cot-stat-icon.falta-documentacion { background:#ffedd5; color:#9a3412; }
  .cot-stat-icon.manual { background:#ffedd5; color:#9a3412; }
  .cot-stat-icon.online { background:#dbeafe; color:var(--c-primary); }
  .cot-stat-body { flex:1; min-width:0; }
  .cot-stat-num { font-size:18px; font-weight:700; color:#0f172a; line-height:1; }
  .cot-stat-total { font-size:12px; font-weight:600; color:#94a3b8; }
  .cot-stat-lbl { font-size:9.5px; color:#64748b; font-weight:600; margin-top:3px; text-transform:uppercase; letter-spacing:0.2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

  /* Listado de cotizaciones (formato lista, una por fila) */
  .cot-cards-grid { display:flex; flex-direction:column; gap:8px; }
  /* Sin overflow:hidden (recortaría los tooltips de las acciones); la franja se redondea sola */
  .cot-card { background:white; border:1px solid #e2e8f0; border-radius:10px; cursor:pointer; transition:all 0.12s; display:flex; align-items:stretch; position:relative; }
  .cot-card:hover { border-color:var(--c-primary); box-shadow:0 4px 14px rgba(15,23,42,0.08); transform:translateY(-1px); }
  .cot-nueva-dd { position:relative; }
  .cot-nueva-menu { position:absolute; right:0; top:calc(100% + 6px); background:#fff; border:1px solid #e2e8f0; border-radius:10px; box-shadow:0 12px 32px rgba(15,42,74,.16); padding:6px; min-width:230px; z-index:50; display:flex; flex-direction:column; gap:2px; }
  .cot-nueva-menu button { text-align:left; background:none; border:none; padding:9px 12px; border-radius:7px; font-size:14px; color:#1e293b; cursor:pointer; }
  .cot-nueva-menu button:hover { background:#f1f5f9; }
  .cot-card-stripe { width:4px; flex-shrink:0; border-radius:10px 0 0 10px; }
  .cot-card.cotizada .cot-card-stripe { background:linear-gradient(180deg,#a78bfa,#6d28d9); }
  .cot-card.emitida   .cot-card-stripe { background:linear-gradient(180deg,#10b981,#15803d); }
  .cot-card.vencida   .cot-card-stripe { background:linear-gradient(180deg,#f59e0b,#92400e); }
  .cot-card.pendiente .cot-card-stripe { background:linear-gradient(180deg,#f59e0b,#92400e); }
  .cot-card.en-emision .cot-card-stripe { background:linear-gradient(180deg,#10b981,#15803d); }
  .cot-card.rechazada .cot-card-stripe { background:linear-gradient(180deg,#ef4444,#991b1b); }
  .cot-card.creada     .cot-card-stripe { background:linear-gradient(180deg,var(--c-secondary),var(--c-primary)); }
  .cot-card.solicitada .cot-card-stripe { background:linear-gradient(180deg,var(--c-secondary),var(--c-primary)); }
  .cot-card.falta-documentacion .cot-card-stripe { background:linear-gradient(180deg,#fb923c,#9a3412); }
  .cot-card-body { flex:1; padding:12px 18px; display:grid; grid-template-columns: 165px minmax(0,2fr) minmax(0,2fr) 130px 130px 170px; align-items:center; gap:18px; min-width:0; }
  .cot-card-col { display:flex; flex-direction:column; min-width:0; }
  .cot-card-col-label { font-size:9.5px; color:#94a3b8; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:3px; }
  .cot-card-id { font-family:inherit; font-size:12.5px; color:#0f172a; font-weight:600; letter-spacing:0.3px; }
  .cot-card-creada-por { font-size:10.5px; color:#64748b; margin-top:5px; white-space:nowrap; }
  .cot-card-badge { display:inline-block; font-size:10.5px; padding:4px 10px; border-radius:11px; font-weight:700; letter-spacing:0.2px; white-space:nowrap; align-self:flex-start; text-transform:uppercase; }
  .cot-card-badge.cotizada { background:#ede9fe; color:#6d28d9; }
  .cot-card-badge.emitida   { background:#dcfce7; color:#15803d; }
  .cot-card-badge.vencida   { background:#fef3c7; color:#92400e; }
  .cot-card-badge.pendiente { background:#fef3c7; color:#92400e; }
  .cot-card-badge.en-emision { background:#dcfce7; color:#15803d; }
  .cot-card-badge.pendiente-inspeccion { background:#fed7aa; color:#9a3412; }
  .cot-card-badge.rechazada { background:#fee2e2; color:#991b1b; }
  .cot-card-badge.creada     { background:#dbeafe; color:var(--c-primary); }
  .cot-card-badge.solicitada { background:#dbeafe; color:var(--c-primary); }
  .cot-card-badge.falta-documentacion { background:#ffedd5; color:#9a3412; }
  .cot-card-veh { display:flex; align-items:center; gap:9px; min-width:0; }
  .cot-card-veh-icon { width:30px; height:30px; border-radius:7px; background:#f1f5f9; display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; }
  .cot-card-veh-text { font-size:13.5px; font-weight:700; color:#0f172a; line-height:1.2; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cot-card-aseg { display:flex; align-items:center; gap:9px; min-width:0; }
  .cot-card-aseg-avatar { width:30px; height:30px; border-radius:50%; background:linear-gradient(135deg,var(--c-primary-700),var(--c-secondary)); color:white; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; flex-shrink:0; }
  .cot-card-aseg-info { flex:1; min-width:0; }
  .cot-card-aseg-name { font-size:13px; font-weight:600; color:#0f172a; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cot-card-aseg-prod { font-size:11.5px; color:#64748b; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cot-card-fecha { font-size:12.5px; color:#475569; font-weight:500; }
  .cot-card-col-actions { flex-direction:row !important; gap:6px; align-items:center; justify-content:flex-end; }
  .cot-card-icon-btn { position:relative; width:28px; height:28px; border-radius:7px; border:none; background:var(--c-primary); color:white; font-size:13px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background 0.12s; flex-shrink:0; padding:0; line-height:1; }
  .cot-card-icon-btn:hover { background:var(--c-primary-700); }
  /* Tooltip propio vía data-tip (el title nativo tarda ~1s y es poco visible) */
  .cot-card-icon-btn::after { content:attr(data-tip); position:absolute; bottom:calc(100% + 7px); left:50%; transform:translateX(-50%); background:#0f172a; color:white; font-size:11px; font-weight:500; padding:5px 9px; border-radius:6px; white-space:nowrap; opacity:0; visibility:hidden; pointer-events:none; transition:opacity 0.12s; z-index:40; }
  .cot-card-icon-btn::before { content:''; position:absolute; bottom:calc(100% + 2px); left:50%; transform:translateX(-50%); border:5px solid transparent; border-top-color:#0f172a; opacity:0; visibility:hidden; pointer-events:none; transition:opacity 0.12s; z-index:40; }
  .cot-card-icon-btn:hover::after, .cot-card-icon-btn:hover::before { opacity:1; visibility:visible; }
  /* El botón de más a la derecha: su tooltip crece hacia la IZQUIERDA (anclado a su borde
     derecho) en vez de centrarse, para no sobresalir del borde y generar scroll horizontal
     de página. La flechita (::before) sigue centrada apuntando al botón. */
  .cot-card-col-actions .cot-card-icon-btn:last-child::after { left:auto; right:0; transform:none; }
  .cot-cards-empty { padding:60px 20px; text-align:center; color:#94a3b8; font-size:14px; background:white; border:1px dashed #cbd5e1; border-radius:10px; }
  @media (max-width: 1200px){
    .cot-card-body { grid-template-columns: 165px minmax(0,1.5fr) minmax(0,1.5fr) 100px 100px; gap:14px; }
    .cot-card-col-actions { display:none; }
  }
  @media (max-width: 900px){
    .cot-card-body { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap:10px; }
    .cot-card-col-id, .cot-card-col-fecha, .cot-card-col-estado { display:none; }
  }
  @media (max-width: 700px)  { .cot-stats-row { grid-template-columns:1fr; } }

  .cot-results-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; align-items:stretch; }
  @media (max-width:1100px){ .cot-results-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:720px){ .cot-results-grid { grid-template-columns:1fr; } }

  /* ====== Rediseño cotizador autos: grid por grupo de cobertura (A/B/C/D) ====== */
  /* El contenedor #cot-results-grid sigue siendo un grid de 3 col (layout viejo): los
     hijos nuevos (tira, toolbar, grilla de columnas) ocupan el ancho completo. */
  .cot-cols2 { grid-column:1/-1; }

  /* --- Tira de condiciones comerciales (sobre el grid) --- */
  .cot-cc-strip { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:10px 14px; margin-bottom:0; box-shadow:0 1px 3px rgba(15,23,42,.04); }
  .cot-cc-titulo { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#64748b; margin-bottom:7px; }
  .cot-cc-row-blocks { display:flex; flex-wrap:wrap; gap:10px; }
  .cot-cc-block { flex:1 1 200px; min-width:190px; background:#f8fafc; border:1px solid #eef2f7; border-radius:10px; padding:10px 11px; }
  .cot-cc-head { display:flex; align-items:center; justify-content:center; gap:8px; margin-bottom:7px; min-height:46px; }
  .cot-cc-valor { text-align:center; font-size:11px; color:#64748b; margin-bottom:2px; }
  /* Campaña comercial de la cía, en su propia línea bajo la suma asegurada. La línea se
     renderiza SIEMPRE (vacía con &nbsp; si no hay campaña) para que todas las cards midan
     igual y las filas de Comisión/Bonificación queden alineadas. */
  .cot-cc-campania { text-align:center; font-size:11px; font-weight:600; color:#0f766e; min-height:15px; line-height:15px; margin-bottom:8px; }
  .cot-cc-logo { width:22px; height:22px; border-radius:6px; color:#fff; font-size:10px; font-weight:800; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  /* Altura FIJA + ancho auto: los PNG de img/cias/ están RECORTADOS al contenido (sin
     padding transparente — SC traía 21px arriba/abajo y se veía chico), así la altura CSS
     es la altura VISUAL del logo y todos quedan parejos aunque el ancho varíe por marca.
     max-width + contain protegen la columna más angosta (250px) del lockup más ancho (Galicia 7:1). */
  .cot-cc-logoimg { height:30px; width:auto; max-width:100%; object-fit:contain; object-position:center; display:block; min-width:0; }
  .cot-cc-nombre { font-size:13px; font-weight:700; color:#1e293b; }
  .cot-cc-hint { margin-left:auto; font-size:11px; font-weight:600; color:var(--c-secondary-strong); font-style:italic; }
  .cot-cc-ctrls { display:flex; flex-direction:column; gap:5px; }
  .cot-cc-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:3px 9px; background:#eff6ff; border:1px solid #bfdbfe; border-radius:8px; }
  /* Comisión/Bonif alineadas al tamaño/peso del badge de cobertura (.cot-fila-badge, 12px/600) para que la card lea uniforme con las filas de abajo (pedido 8-jul). Los colores (label azul, valor oscuro) se conservan: son parte del tema del pill. */
  .cot-cc-lbl { font-size:12px; font-weight:600; color:var(--c-primary); white-space:nowrap; }
  .cot-cc-row .cot-comision-sel { font-size:12px; font-weight:600; color:#0f172a; border:1px solid #cbd5e1; border-radius:6px; padding:3px 7px; background:#fff; cursor:pointer; }
  .cot-cc-row .cot-comision-sel:disabled { opacity:.6; cursor:wait; }
  .cot-cc-val { font-size:12px; font-weight:600; color:#0f172a; }
  .cot-cc-na { color:#94a3b8; font-weight:600; font-style:italic; }
  .cot-cc-aviso { font-size:10.5px; color:#b45309; line-height:1.35; padding:2px 2px 0; }

  /* --- Toolbar (orden + filtro de compañías + comparar) --- */
  .cot-grid-toolbar { display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:9px 12px; background:#f8fafc; border:1px solid #eef2f7; border-radius:10px; margin-bottom:0; font-size:12px; }
  .cot-tb-lbl { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#94a3b8; }
  .cot-tb-sep { width:1px; align-self:stretch; background:#e2e8f0; margin:0 2px; }
  .cot-orden-chip, .cot-cia-chip { padding:4px 11px; border-radius:14px; border:1px solid #e2e8f0; background:#fff; color:#475569; cursor:pointer; font-weight:600; transition:all .12s; user-select:none; }
  .cot-orden-chip:hover, .cot-cia-chip:hover { border-color:#cbd5e1; }
  .cot-orden-chip.on { background:#dbeafe; border-color:#bfdbfe; color:var(--c-primary); }
  .cot-cia-chip.off { opacity:.45; text-decoration:line-through; }
  .cot-comparar-btn { margin-left:auto; padding:5px 14px; border-radius:8px; border:1px solid #e2e8f0; background:#fff; color:#475569; font-weight:600; font-size:12px; cursor:pointer; transition:all .12s; }
  .cot-comparar-btn:hover { border-color:#cbd5e1; }
  .cot-comparar-btn[disabled] { opacity:.7; cursor:not-allowed; }

  /* --- Una columna por compañía (header = condiciones, cuerpo = coberturas agrupadas) --- */
  .cot-cols2 { display:grid; gap:10px; align-items:start; }
  .cot-col2 { background:#fff; border:1px solid #e2e8f0; border-radius:12px; overflow:hidden; box-shadow:0 1px 3px rgba(15,23,42,.04); }
  .cot-col2-head { border-bottom:1px solid #e2e8f0; }
  /* el bloque de condiciones se reusa como header → se le saca el estilo de "strip" */
  .cot-col2-head .cot-cc-block { background:transparent; border:none; border-radius:0; padding:10px; min-width:0; box-shadow:none; }
  .cot-col2-body { padding:3px 0 5px; }
  .cot-col2-msg { padding:22px 12px; text-align:center; color:#94a3b8; font-size:12px; }
  .cot-col2-msg.err { color:#b45309; }
  .cot-col2-err-det { margin-top:6px; font-size:11px; font-weight:400; color:#94a3b8; line-height:1.4; }
  .cot-col2-msg .cot-cc-hint { margin-left:0; }
  .cot-col2-grupo.sep { border-top:1px solid #eef2f7; margin-top:2px; padding-top:2px; }
  .cot-fila2 { display:flex; align-items:center; justify-content:flex-start; gap:6px; padding:6px 12px; cursor:pointer; transition:background .12s; }   /* todo pegado a la izquierda: mínimo espacio cobertura↔costo (pedido 2-jul) */
  .cot-fila2:hover { background:#f8fafc; }
  .cot-fila-badge { font-size:12px; font-weight:600; color:#64748b; }
  .cot-fila-precio { font-size:10.5px; line-height:1.2; color:#0f172a; white-space:nowrap; }   /* mismo formato que el nombre de cobertura, en negro */
  .cot-col-vacia { color:#cbd5e1; text-align:center; padding:14px 8px; font-size:13px; }

  /* ---- Comparador (jul 2026) ---- */
  /* Sin círculo/checkbox (pedido 2-jul): la fila entera togglea y la selección se marca
     con outline + fondo rojizo suave, que reemplazan la señal visual del tilde. */
  .cot-fila2.cmp-sel { outline:2px solid #fca5a5; border-radius:8px; background:#fef2f2; }
  .cot-fila-info { flex:0 1 auto; min-width:0; display:flex; align-items:baseline; gap:6px; }   /* badge + nombre EN LÍNEA, sin estirar: el precio queda pegado */
  .cot-fila-nombre { font-size:10.5px; color:#94a3b8; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
  .cot-comparar-btn.on { background:#fee2e2; border-color:#dc2626; color:#b91c1c; }
  .cot-comparar-btn.ver { background:#dc2626; color:#fff; border-color:#dc2626; }
  .cmp-hint { font-size:11.5px; color:#64748b; }

  .cmp-panel { background:#fff; border:1px solid #e2e8f0; border-radius:14px; padding:18px 20px; }
  .cmp-head { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:12px; }
  .cmp-tit { font-weight:700; font-size:16px; }
  .cmp-veh { font-size:12.5px; color:#475569; }
  .cmp-scroll { overflow-x:auto; border:1px solid #e2e8f0; border-radius:10px; }
  .cmp-tabla { width:100%; border-collapse:collapse; font-size:12.5px; }
  .cmp-tabla th, .cmp-tabla td { border-bottom:1px solid #eef2f7; padding:8px 10px; text-align:center; vertical-align:middle; }
  .cmp-tabla td:first-child, .cmp-tabla th:first-child { text-align:left; font-weight:600; color:#334155; min-width:150px; }
  .cmp-tabla thead th { position:sticky; top:0; background:#f8fafc; z-index:1; }
  .cmp-logoimg { height:22px; max-width:150px; object-fit:contain; }  /* tope amplio: los lockups anchos (mapfre/fedpat) no deben achicarse — alto uniforme, ancho variable */
  .cmp-plan { font-size:11px; color:#475569; font-weight:400; margin-top:4px; }        /* misma fuente/tamaño que el detalle de las celdas (pedido 2-jul) */
  .cmp-suma-head { font-size:11px; color:#475569; font-weight:400; margin-top:2px; }   /* la suma asegurada vive en el header, debajo de la cobertura */
  .cmp-si { color:#16a34a; font-weight:700; } .cmp-no { color:#dc2626; font-weight:700; }
  .cmp-sd { color:#94a3b8; font-size:11px; }
  .cmp-det { font-size:11px; color:#475569; display:block; max-width:180px; margin:0 auto; }
  .cmp-suma td, .cmp-cuota td { background:#f8fafc; font-weight:600; }
  .cmp-acciones { display:flex; align-items:center; gap:10px; margin-top:12px; justify-content:flex-end; }
  .cmp-nota { font-size:11px; color:#94a3b8; margin-right:auto; }
  .cmp-logochip { width:26px; height:26px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; color:#fff; font-size:11px; font-weight:700; }
  .cmp-vacio { color:#94a3b8; font-size:12px; padding:18px 10px !important; text-align:center; }

  /* Columnas del resultado SIEMPRE parejas (mín 300px c/u): si no entran, #cot-results-grid
     scrollea horizontal (pedido 2-jul) — reemplaza el colapso a 2/1 columnas por media query. */
  /* Grid compacto de planes Zurich: 3 por fila */
  .cot-plan-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
  @media (max-width:980px){ .cot-plan-grid { grid-template-columns:repeat(2,1fr); } }
  @media (max-width:640px){ .cot-plan-grid { grid-template-columns:1fr; } }
  .cot-plan-card { background:white; border:1px solid #e2e8f0; border-radius:10px; padding:13px 14px; display:flex; flex-direction:column; gap:9px; transition:box-shadow .12s,border-color .12s; }
  .cot-plan-card:hover { border-color:var(--c-secondary); box-shadow:0 3px 10px rgba(var(--c-primary-rgb),.10); }
  .cot-plan-head { display:flex; align-items:center; gap:8px; }
  .cot-plan-code { display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:24px; padding:0 7px; background:var(--c-primary); color:#fff; border-radius:6px; font-size:11.5px; font-weight:700; flex-shrink:0; }
  .cot-plan-name { font-size:12.5px; font-weight:600; color:#1e293b; line-height:1.25; }
  .cot-plan-price { font-size:19px; font-weight:800; color:#0f172a; }
  .cot-plan-per { font-size:12px; font-weight:600; color:#64748b; margin-left:2px; }
  .cot-plan-na { font-size:12px; font-weight:600; color:#dc2626; }
  .cot-cia-card { background:white; border:2px solid #e2e8f0; border-radius:12px; overflow:hidden; transition:all 0.15s; display:flex; flex-direction:column; min-height:205px; }
  .cot-cia-card:hover { border-color:var(--c-secondary); box-shadow:0 6px 18px rgba(15,23,42,0.08); transform:translateY(-2px); }
  .cot-cia-header { padding:6px 12px; color:white; display:flex; justify-content:space-between; align-items:center; gap:8px; }
  .cot-cia-logo { width:28px; height:28px; border-radius:7px; background:rgba(255,255,255,0.22); display:flex; align-items:center; justify-content:center; font-weight:800; font-size:12px; flex-shrink:0; }
  .cot-cia-info-block { display:flex; align-items:center; gap:9px; }
  .cot-cia-info { flex:1; }
  .cot-cia-name { font-size:14px; font-weight:700; }
  .cot-cia-stars { font-size:11px; opacity:0.9; margin-top:2px; }
  .cot-cia-badge { background:#10b981; color:white; font-size:10.5px; font-weight:700; padding:4px 10px; border-radius:5px; text-transform:uppercase; letter-spacing:0.4px; white-space:nowrap; }
  .cot-coberturas { padding:6px 8px; flex:1; min-height:0; display:flex; flex-direction:column; gap:2px; overflow-y:auto; }
  .cot-cobertura { display:grid; grid-template-columns:auto 1fr auto auto; gap:8px; padding:2px 8px; border-radius:8px; align-items:center; transition:background 0.12s; }
  .cot-cobertura:hover { background:#f8fafc; }
  .cot-cob-code { display:inline-block; width:44px; height:21px; line-height:21px; text-align:center; background:var(--c-primary); color:white; border-radius:5px; font-size:10.5px; font-weight:700; flex-shrink:0; }
  /* Hover sobre la fila → el badge del código muestra el rayito de emitir (mantiene el azul) */
  .cot-cob-code.cob-emitir { cursor:pointer; transition:transform 0.12s; }
  .cot-cob-code .cob-code-bolt { display:none; font-size:12px; }
  .cot-cobertura:hover .cob-emitir .cob-code-txt { display:none; }
  .cot-cobertura:hover .cob-emitir .cob-code-bolt { display:inline; }
  .cob-emitir:hover { transform:scale(1.1); }
  .cot-cob-code.cob-disabled { background:#94a3b8; opacity:0.75; cursor:not-allowed; }
  .cot-no-emite { margin:6px 2px 0; font-size:11px; color:#b45309; line-height:1.3; }
  /* ===== Emisión de motor unificada (em-*) ===== */
  .em-panel { margin-top:14px; border:0.5px solid #e2e8f0; border-radius:12px; background:#fff; overflow:hidden; }
  .em-head { display:flex; justify-content:space-between; align-items:center; padding:13px 16px; }
  .em-head-info { display:flex; align-items:center; gap:11px; }
  .em-logo { width:38px; height:38px; border-radius:9px; background:rgba(255,255,255,0.18); display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:700; color:#fff; flex-shrink:0; }
  .em-head-tit { font-size:14.5px; font-weight:600; color:#fff; }
  .em-head-sub { font-size:12px; color:rgba(255,255,255,0.85); margin-top:2px; }
  .em-volver { background:rgba(255,255,255,0.18); color:#fff; border:none; }
  .em-volver:hover { background:rgba(255,255,255,0.28); }
  .em-aviso { font-size:11.5px; color:#991b1b; margin:12px 16px 0; line-height:1.4; }
  .em-seccion { margin:14px 16px 0; }
  .em-seccion-tit { font-size:10.5px; color:#64748b; text-transform:uppercase; font-weight:700; letter-spacing:.03em; margin-bottom:6px; }
  .em-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; }
  .em-grid label { font-size:12px; color:#475569; display:flex; flex-direction:column; gap:3px; }
  .em-ro { background:#f1f5f9; color:#64748b; }
  .em-de-cartera { border-color:#22c55e; }
  .em-cartera-tag { color:#15803d; font-weight:600; }
  .em-pago { display:flex; gap:16px; align-items:center; margin-top:6px; flex-wrap:wrap; }
  .em-pago label { font-size:12.5px; color:#334155; }
  .em-panel .form-actions { margin:14px 16px 16px; }
  .em-confirm { margin:12px 16px 0; padding:12px 14px; background:#fef2f2; border:1px solid #fecaca; border-radius:8px; }
  .em-confirm-tit { color:#991b1b; font-weight:500; }
  .em-confirm-txt { font-size:12.5px; margin-top:6px; color:#334155; line-height:1.45; }
  .em-confirm-acc { margin-top:10px; display:flex; gap:8px; }
  .em-ok { margin:12px 16px 16px; padding:12px; background:#ecfdf5; border:1px solid #6ee7b7; border-radius:8px; color:#065f46; font-size:13px; }
  .em-btn-emitir { color:#fff; }
  /* ===== Nuevo siniestro — panel estilo emisión (sin-nuevo-*) ===== */
  .sin-nuevo-panel { border:0.5px solid #e2e8f0; border-radius:12px; background:#fff; }
  .sin-nuevo-head { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:14px 18px; background:linear-gradient(135deg,var(--c-primary-700),var(--c-secondary)); border-radius:12px 12px 0 0; }
  .sin-nuevo-head-info { display:flex; align-items:center; gap:12px; min-width:0; }
  .sin-nuevo-logo { width:40px; height:40px; border-radius:10px; background:rgba(255,255,255,0.18); display:flex; align-items:center; justify-content:center; font-size:19px; flex-shrink:0; }
  .sin-nuevo-tit { font-size:16px; font-weight:600; color:#fff; }
  .sin-nuevo-sub { font-size:12px; color:rgba(255,255,255,0.88); margin-top:2px; }
  .sin-nuevo-head .btn-cotizar { background:rgba(255,255,255,0.95); color:var(--c-primary); flex-shrink:0; }
  .sin-nuevo-head .btn-cotizar:hover { background:#fff; }
  .sin-nuevo-body { padding:6px 18px 18px; }
  .sin-sec { margin-top:6px; }
  .sin-sec-tit { font-size:12px; color:var(--c-primary); text-transform:uppercase; font-weight:700; letter-spacing:.04em; margin:20px 0 10px; display:flex; align-items:center; gap:7px; }
  .sin-sec-tit.sin-sec-first { margin-top:6px; }
  .sin-subtit { font-size:11px; color:#475569; font-weight:700; text-transform:uppercase; letter-spacing:.05em; margin:14px 0 8px; }
  /* Datos de la póliza y riesgo + asegurado en una sola grilla de 4 columnas. */
  .sin-pyr-grid { grid-template-columns:repeat(5, minmax(0,1fr)); gap:9px; }
  @media (max-width:1280px){ .sin-pyr-grid { grid-template-columns:repeat(3, minmax(0,1fr)); } }
  @media (max-width:760px){ .sin-pyr-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
  @media (max-width:520px){ .sin-pyr-grid { grid-template-columns:1fr; } }
  .sin-contents { display:contents; }
  .sin-pf-wide { grid-column:span 2; }
  .sin-pf-wide3 { grid-column:span 3; }
  @media (max-width:760px){ .sin-pf-wide3 { grid-column:span 2; } }
  @media (max-width:520px){ .sin-pf-wide, .sin-pf-wide3 { grid-column:auto; } }
  .sin-pyr-grid .profile-field { height:auto; min-height:60px; align-items:flex-start; }
  .sin-pyr-grid .profile-field-icon { margin-top:1px; }
  .sin-pyr-grid .profile-field-label, .sin-pyr-grid .profile-field-value { white-space:normal; overflow:visible; text-overflow:clip; }
  .sin-box-inp { width:100%; border:none; background:transparent; font-size:13px; color:#0f172a; font-weight:500; padding:0; outline:none; font-family:inherit; }
  .sin-box-inp[readonly] { color:#475569; cursor:default; }
  .sin-pf-edit { background:#fff; border-color:#dbeafe; }
  .sin-pf-edit .sin-box-inp { border-bottom:1px dashed #cbd5e1; padding-bottom:2px; }
  .sin-pf-edit .sin-box-inp:focus { border-bottom-color:var(--c-secondary); }
  /* Botones de tipo de siniestro (con icono). */
  .sin-tipo-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(128px,1fr)); gap:10px; }
  .sin-tipo-btn { display:flex; flex-direction:column; align-items:center; gap:7px; padding:14px 10px; border:1px solid #e2e8f0; border-radius:10px; background:#fff; cursor:pointer; transition:border-color .12s, background .12s; }
  .sin-tipo-btn:hover { border-color:#bfdbfe; background:#f8fafc; }
  .sin-tipo-btn.sel { border:2px solid var(--c-secondary-strong); background:#eff6ff; padding:13px 9px; }
  .sin-tipo-ico { font-size:24px; line-height:1; }
  .sin-tipo-lbl { font-size:12.5px; font-weight:600; color:#334155; text-align:center; }
  .sin-tipo-btn.sel .sin-tipo-lbl { color:var(--c-primary); }
  .sin-subsec { margin-top:13px; }
  .sin-subsec:first-child { margin-top:2px; }
  .sin-subsec-tit { font-size:10.5px; color:#475569; text-transform:uppercase; font-weight:700; letter-spacing:.04em; margin-bottom:7px; display:flex; align-items:center; gap:6px; }
  .sin-collap { margin-top:14px; border:0.5px solid #e2e8f0; border-radius:10px; overflow:hidden; }
  .sin-collap-head { display:flex; align-items:center; gap:9px; padding:12px 14px; cursor:pointer; user-select:none; }
  .sin-collap-head:hover { background:#f8fafc; }
  .sin-collap-chev { font-size:11px; color:#94a3b8; }
  .sin-collap-ico { font-size:16px; }
  .sin-collap-lbl { font-size:13px; font-weight:600; color:#0f172a; }
  .sin-collap-body { padding:2px 14px 14px; border-top:0.5px solid #f1f5f9; }
  .cot-cob-text { min-width:0; }
  .cot-cob-name { font-size:12.5px; font-weight:400; color:#0f172a; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cot-cob-features { font-size:11px; color:#64748b; margin-top:2px; }
  .cot-cobertura-price { text-align:right; min-width:110px; }
  .cot-price-monthly { font-size:13px; font-weight:400; color:#0f172a; white-space:nowrap; }
  .cot-price-yearly { font-size:11px; color:#64748b; white-space:nowrap; margin-top:1px; }
  .cot-expand-btn { display:block; width:100%; border:none; background:none; color:var(--c-secondary-strong); font-size:11.5px; font-weight:600; padding:4px 0 2px; cursor:pointer; border-top:1px dashed #e2e8f0; margin-top:4px; }
  .cot-expand-btn:hover { color:var(--c-primary); }
  .cot-comision-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:3px 8px; margin-bottom:3px; background:#eff6ff; border:1px solid #bfdbfe; border-radius:8px; }
  .cot-comision-lbl { font-size:11.5px; font-weight:700; color:var(--c-primary); }
  .cot-comision-sel { font-size:12.5px; font-weight:600; color:#0f172a; border:1px solid #cbd5e1; border-radius:6px; padding:3px 7px; background:white; cursor:pointer; }
  .cot-comision-sel:disabled { opacity:0.6; cursor:wait; }
  .cot-recotizando { padding:26px 16px; text-align:center; color:var(--c-primary); font-size:12.5px; font-weight:600; }
  .cot-recotizando::before { content:''; display:inline-block; width:13px; height:13px; margin-right:7px; vertical-align:-2px; border:2px solid #bfdbfe; border-top-color:var(--c-primary); border-radius:50%; animation:cot-spin 0.7s linear infinite; }
  @keyframes cot-spin { to { transform:rotate(360deg); } }
  /* Loader branded mientras cotiza (reusa el mountain animado y el AZUL del splash de booteo). */
  .cot-loader { grid-column:1/-1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:52px 16px; min-height:340px; animation:bootIn 0.4s ease; background:linear-gradient(135deg,var(--chrome-1) 0%,var(--chrome-4) 50%,var(--chrome-2) 100%); }
  .cot-loader .cl-mountain { width:88px; height:48px; }
  .cot-loader .cl-mountain path { fill:none; stroke-width:4; stroke-linecap:round; stroke-linejoin:round; }
  .cot-loader .cl-mountain-bg { stroke:rgba(255,255,255,0.15); }
  .cot-loader .cl-mountain-draw { stroke:#7eb3ff; stroke-dasharray:100; animation:bootDraw 1.8s ease-in-out infinite; }
  .cot-loader .cl-brand { font-size:16px; font-weight:800; letter-spacing:6px; text-indent:6px; color:#ffffff; margin-top:8px; }
  .cot-loader .cl-brand-logo { max-height:44px; max-width:220px; object-fit:contain; }
  .cot-loader .cl-title { font-size:13.5px; font-weight:700; color:#cbd5e1; margin-top:14px; }
  .cot-loader .cl-bar { width:200px; height:3px; border-radius:2px; background:rgba(255,255,255,0.12); overflow:hidden; margin-top:18px; }
  .cot-loader .cl-bar-fill { width:40%; height:100%; border-radius:2px; background:linear-gradient(90deg,var(--c-secondary),#7eb3ff); animation:bootSlide 1.2s ease-in-out infinite; }
  .cot-select-btn { background:var(--c-primary); color:white; border:none; padding:7px 14px; border-radius:6px; font-size:11.5px; font-weight:600; cursor:pointer; transition:background 0.15s; white-space:nowrap; }
  .cot-select-btn:hover { background:var(--c-primary-700); }
  .cot-best-tag { display:inline-block; background:#10b981; color:white; font-size:9.5px; font-weight:700; padding:1px 6px; border-radius:3px; text-transform:uppercase; letter-spacing:0.4px; vertical-align:middle; }
  .empty-results { padding:60px; text-align:center; color:#94a3b8; font-size:14px; background:white; border-radius:10px; border:1px solid #e2e8f0; }

  /* ===== Resultados del cotizador de RC Médicos (Swiss) ===== */
  .med-head { background:white; border:1px solid #e2e8f0; border-radius:12px; padding:14px 18px; margin-bottom:14px; }
  .med-head-info { font-size:14px; font-weight:700; color:#0f172a; }
  .med-sub { margin-top:5px; font-size:12px; color:#64748b; }

  /* ===== Compañías y Asesores grids ===== */
  .companias-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:14px; }
  .cia-card, .asesor-card { background:white; border:1px solid #e2e8f0; border-radius:12px; padding:18px; transition:all 0.15s; }
  .cia-card:hover, .asesor-card:hover { border-color:var(--c-secondary); box-shadow:0 4px 14px rgba(15,23,42,0.07); transform:translateY(-2px); }
  .cia-card-header { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
  .cia-card-logo { width:54px; height:54px; border-radius:12px; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:16px; flex-shrink:0; letter-spacing:0.5px; }
  .cia-card-info { flex:1; min-width:0; }
  .cia-card-name { font-size:15.5px; font-weight:700; color:#0f172a; line-height:1.2; }
  .cia-card-rating { font-size:11.5px; color:#64748b; margin-top:3px; }
  .cia-card-stats { display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; padding-top:12px; border-top:1px solid #f1f5f9; }
  .cia-card-stat { text-align:center; }
  .cia-card-stat-label { font-size:10px; color:#64748b; text-transform:uppercase; letter-spacing:0.5px; font-weight:600; margin-bottom:3px; }
  .cia-card-stat-value { font-size:14px; font-weight:700; color:#0f172a; }
  .cia-card-actions { display:flex; gap:6px; margin-top:14px; }
  .cia-card-actions .btn-secondary, .cia-card-actions .btn-primary { flex:1; padding:7px 12px; font-size:12px; }

  .asesor-card-top { display:flex; align-items:center; gap:14px; margin-bottom:14px; }
  .asesor-card-avatar { width:54px; height:54px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:18px; flex-shrink:0; }
  .asesor-card-name { font-size:15.5px; font-weight:700; color:#0f172a; line-height:1.2; }
  .asesor-card-meta { font-size:11.5px; color:#64748b; margin-top:3px; display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
  .asesor-card-meta .matricula { background:#dbeafe; color:var(--c-primary); padding:2px 8px; border-radius:4px; font-weight:600; font-size:10.5px; letter-spacing:0.4px; }
  .asesor-card-stats { display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; padding-top:12px; border-top:1px solid #f1f5f9; }
  .asesor-card-stat { background:#f8fafc; border-radius:8px; padding:10px 12px; }
  .asesor-card-stat-label { font-size:10px; color:#64748b; text-transform:uppercase; letter-spacing:0.5px; font-weight:600; margin-bottom:3px; }
  .asesor-card-stat-value { font-size:15px; font-weight:700; color:#0f172a; }
  .asesor-card-stat-value.green { color:#15803d; }
  .asesor-card-contact { display:flex; gap:14px; margin-top:12px; padding-top:12px; border-top:1px solid #f1f5f9; font-size:11.5px; color:#64748b; flex-wrap:wrap; }
  .asesor-card-contact span { display:inline-flex; align-items:center; gap:5px; }
  .asesor-card { background:white; border:1px solid #e2e8f0; border-radius:12px; padding:18px; cursor:pointer; transition:all 0.15s; display:flex; flex-direction:column; }
  .asesor-card:hover { border-color:var(--c-primary); box-shadow:0 6px 18px rgba(15,23,42,0.08); transform:translateY(-2px); }
  .asesor-card-inactivo { opacity:0.7; background:#fafafa; }
  .asesor-card-inactivo:hover { opacity:1; }

  /* Siniestros */
  .sin-estado-badge { display:inline-flex; align-items:center; gap:5px; padding:4px 10px; border-radius:12px; font-size:11.5px; font-weight:600; white-space:nowrap; }
  .sin-estado-badge.sin-estado-denunciado { background:#dbeafe; color:var(--c-primary); }
  .sin-estado-badge.sin-estado-evaluacion { background:#fef3c7; color:#92400e; }
  .sin-estado-badge.sin-estado-acordado   { background:#e0e7ff; color:#3730a3; }
  .sin-estado-badge.sin-estado-pagado     { background:#dcfce7; color:#15803d; }
  .sin-estado-badge.sin-estado-rechazado  { background:#fee2e2; color:#991b1b; }

  /* Cobranzas realizadas (Zurich) */
  .cob-zurich-toolbar { align-items:flex-end; flex-wrap:wrap; gap:10px; }
  .cob-date-lbl { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:600; color:#64748b; text-transform:uppercase; letter-spacing:0.4px; }
  .cob-date-lbl input { min-width:150px; }
  .cob-zurich-status { padding:18px; text-align:center; color:#64748b; font-size:13px; background:#f8fafc; border:1px dashed #e2e8f0; border-radius:10px; }
  /* Vencimientos / Gestión de cobranzas */
  /* La tabla se ADAPTA al contenido (en vez de anchos fijos que truncaban Aseguradora/
     Póliza/Vencimiento/Estado mientras sobraba espacio). Cada columna toma lo que necesita;
     solo el nombre del cliente (lo más variable) se capa con elipsis para no desbordar.
     Si aun así no entra (pantalla angosta), el contenedor scrollea horizontal en vez de cortar. */
  table.list-table-vencimientos { table-layout:auto; }
  .list-table-vencimientos td, .list-table-vencimientos th { padding-left:14px; padding-right:14px; }
  .list-table-vencimientos .venc-cli-name { max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .data-table:has(.list-table-vencimientos) { overflow-x:auto; overflow-y:visible; }
  .list-table-vencimientos td { vertical-align:middle; }
  .venc-cli-name { color:#0f172a; font-size:13px; line-height:1.3; }
  .venc-cli-doc { font-size:11px; color:#64748b; margin-top:2px; }
  .venc-poliza-num { font-family:inherit; color:#0f172a; font-size:12.5px; }
  .venc-poliza-ramo { font-size:11px; color:#64748b; margin-top:2px; }
  .venc-monto { color:#0f172a; font-size:13.5px; }
  .venc-monto-cuota { font-size:11px; color:#94a3b8; margin-top:2px; }
  .medio-pago-pill { display:inline-block; padding:4px 11px; border-radius:11px; font-size:11px; font-weight:700; letter-spacing:0.3px; }
  .medio-pago-pill.cbu { background:#dbeafe; color:var(--c-primary); }
  .medio-pago-pill.tc { background:#fce7f3; color:#9d174d; }
  .medio-pago-pill.efectivo { background:#fef3c7; color:#92400e; }
  .venc-fecha { color:#0f172a; font-size:13px; }
  .venc-fecha-rel { font-size:11.5px; color:#64748b; margin-top:2px; }
  .venc-fecha-rel.urgente { color:#b91c1c; }
  .venc-fecha-rel.vencido { color:#991b1b; }
  .estado-cobr-badge { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; border-radius:14px; font-size:11.5px; font-weight:700; white-space:nowrap; }
  .estado-cobr-badge::before { content:'●'; font-size:9px; }
  .estado-cobr-badge.a-vencer { background:#dcfce7; color:#15803d; }
  .estado-cobr-badge.en-proceso { background:#fef3c7; color:#92400e; }
  .estado-cobr-badge.con-deuda { background:#fee2e2; color:#991b1b; }

  /* Comisiones */
  .moneda-pill { display:inline-block; padding:3px 8px; border-radius:5px; font-size:10.5px; font-weight:700; letter-spacing:0.5px; }
  .moneda-pill.ars { background:#dbeafe; color:var(--c-primary); }
  .moneda-pill.usd { background:#dcfce7; color:#15803d; }
  .pct-pill { display:inline-block; padding:3px 9px; border-radius:11px; font-size:11.5px; font-weight:700;  }
  .pct-pill.pct-low { background:#f1f5f9; color:#64748b; }
  .pct-pill.pct-mid { background:#fef3c7; color:#92400e; }
  .pct-pill.pct-high { background:#dcfce7; color:#15803d; }
  .cia-mini-logo { width:24px; height:24px; border-radius:5px; display:inline-flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:9.5px; flex-shrink:0; letter-spacing:0.3px; }
  .ramo-icon-pill { width:28px; height:28px; border-radius:7px; display:inline-flex; align-items:center; justify-content:center; font-size:14px; flex-shrink:0; }
  .origen-chip { display:inline-block; padding:2px 7px; border-radius:6px; font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:0.4px; margin-top:5px; }
  .origen-chip.online { background:#dcfce7; color:#15803d; }
  .origen-chip.manual { background:#fef3c7; color:#92400e; }
  .origen-chip.pedido { background:#ede9fe; color:#6d28d9; }
  .comisiones-foot-row td { background:#f8fafc; font-size:13px; padding:11px 12px !important; border-top:2px solid #e2e8f0 !important; }
  .list-table-comisiones th { white-space:nowrap; }
  .list-table-comisiones td { font-size:12.5px; }

  /* Compañías - badge de API */
  .cia-api-badge { display:inline-flex; align-items:center; gap:4px; padding:3px 9px; border-radius:11px; font-size:10.5px; font-weight:700; letter-spacing:0.2px; white-space:nowrap; }
  .cia-api-badge.integrada { background:#dcfce7; color:#15803d; }
  .cia-api-badge.manual { background:#e0e7ff; color:#3730a3; }
  .cia-api-badge.test { background:#dbeafe; color:var(--c-primary); }
  .cia-api-badge.pendiente { background:#fef3c7; color:#92400e; }
  .cia-api-badge.sin { background:#fee2e2; color:#991b1b; }
  .ramo-chip { display:inline-block; background:#f1f5f9; color:#475569; padding:3px 10px; border-radius:11px; font-size:11.5px; font-weight:600; margin:2px 4px 2px 0; }

  /* Listado de compañías en formato lista (una fila por cía) */
  .companias-grid { display:flex; flex-direction:column; gap:8px; }
  .cia-row { background:white; border:1px solid #e2e8f0; border-radius:10px; overflow:hidden; cursor:pointer; transition:all 0.12s; display:flex; align-items:stretch; }
  .cia-row:hover { border-color:var(--c-primary); box-shadow:0 4px 14px rgba(15,23,42,0.08); transform:translateY(-1px); }
  .cia-row.inactiva { opacity:0.7; background:#fafafa; }
  .cia-row.inactiva:hover { opacity:1; }
  .cia-row-stripe { width:5px; flex-shrink:0; }
  .cia-row-body { flex:1; padding:12px 18px; display:grid; grid-template-columns: minmax(0,2fr) 130px 130px 110px 70px 80px 80px 90px; align-items:center; gap:16px; min-width:0; }
  .cia-row-col { display:flex; flex-direction:column; min-width:0; }
  .cia-row-col-label { font-size:9.5px; color:#94a3b8; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:3px; }
  .cia-row-col-name { display:flex; align-items:center; gap:11px; flex-direction:row; }
  .cia-row-logo { width:42px; height:42px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:13px; flex-shrink:0; letter-spacing:0.5px; }
  .cia-row-name-block { min-width:0; flex:1; }
  .cia-row-name { font-size:14.5px; font-weight:700; color:#0f172a; line-height:1.2; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cia-row-subname { font-size:11.5px; color:#64748b; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cia-row-mono { font-family:inherit; font-size:12px; font-weight:600; color:#475569; }
  .cia-row-text { font-size:12px; color:#475569; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cia-row-stat { font-size:18px; font-weight:700; color:#0f172a; line-height:1; }
  .cia-row-col-estado { align-items:flex-end; }
  @media (max-width: 1280px){
    .cia-row-body { grid-template-columns: minmax(0,1.8fr) 110px 110px 60px 60px 90px; gap:12px; }
    .cia-row-col:nth-child(4), .cia-row-col:nth-child(7) { display:none; }
  }
  @media (max-width: 900px){
    .cia-row-body { grid-template-columns: minmax(0,1fr) 100px 90px; gap:10px; padding:10px 14px; }
    .cia-row-col:nth-child(2), .cia-row-col:nth-child(4), .cia-row-col:nth-child(5), .cia-row-col:nth-child(6), .cia-row-col:nth-child(7) { display:none; }
  }

  /* Semáforo de módulos por compañía */
  .cia-row-main { flex:1; min-width:0; display:flex; flex-direction:column; }
  .cia-row-modulos { padding:8px 18px 11px; border-top:1px solid #f1f5f9; background:#fafbfc; }
  .mod-grid { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; }
  .mod-chip { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border:1px solid #e2e8f0; border-radius:20px; background:white; font-size:10.5px; font-weight:600; color:#475569; line-height:1.4; white-space:nowrap; }
  .mod-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
  .mod-name { letter-spacing:0.1px; }
  .mod-legend { display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; margin-bottom:12px; padding:8px 12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
  .mod-legend-item { display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:600; color:#64748b; }
  .cia-modulos-block { margin-top:14px; padding-top:14px; border-top:1px solid #f1f5f9; }
  .cia-modulos-head { font-size:10.5px; color:#94a3b8; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; margin-bottom:10px; }
  .cia-modulos-block .mod-legend { margin-top:10px; margin-bottom:0; }

  /* Detalle de compañía */
  .cia-detail-logo { width:78px; height:78px; border-radius:14px; display:flex; align-items:center; justify-content:center; color:white; font-weight:800; font-size:24px; flex-shrink:0; letter-spacing:0.6px; }
  .creds-warning { background:#fef3c7; border:1px solid #fde68a; border-radius:8px; padding:11px 14px; font-size:12px; color:#78350f; margin-bottom:14px; line-height:1.5; }
  .creds-list { display:flex; flex-direction:column; gap:8px; }
  .cred-row { display:grid; grid-template-columns:160px 1fr; gap:14px; align-items:center; padding:11px 14px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; }
  .cred-label { font-size:11.5px; color:#475569; font-weight:700; text-transform:uppercase; letter-spacing:0.5px; }
  .cred-value { display:flex; align-items:center; gap:8px; min-width:0; flex-wrap:wrap; }
  .cred-value code { flex:1; min-width:0; font-family:inherit; font-size:13px; color:#0f172a; background:white; padding:7px 11px; border:1px solid #e2e8f0; border-radius:6px; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cred-btn { padding:5px 10px !important; font-size:11px !important; flex-shrink:0; }

  /* Listado de asesores en formato lista (una fila por asesor) */
  .asesor-estado-badge { display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:10px; font-size:10px; font-weight:700; letter-spacing:0.3px; text-transform:uppercase; margin-left:6px; }
  .asesor-estado-badge.activo { background:#dcfce7; color:#15803d; }
  .asesor-estado-badge.inactivo { background:#fee2e2; color:#991b1b; }
  /* Detalle de asesor */
  .asesor-detail-header { padding:20px 22px; }
  .asesor-detail-top { display:flex; align-items:center; gap:18px; }
  .asesor-detail-avatar { width:78px; height:78px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:white; font-weight:700; font-size:26px; flex-shrink:0; }
  .asesor-detail-info { flex:1; min-width:0; }
  .asesor-detail-name { font-size:22px; font-weight:800; color:#0f172a; line-height:1.2; display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
  .asesor-detail-role { font-size:13px; color:#64748b; font-weight:500; margin-top:4px; }
  .asesor-detail-meta { display:flex; gap:8px; flex-wrap:wrap; font-size:12px; color:#64748b; margin-top:8px; align-items:center; }
  .asesor-detail-actions { display:flex; gap:8px; flex-shrink:0; }
  .btn-back { background:transparent; border:1px solid #e2e8f0; color:#475569; font-size:13px; font-weight:600; padding:7px 14px; border-radius:7px; cursor:pointer; transition:all 0.12s; }
  .btn-back:hover { background:#f1f5f9; border-color:#cbd5e1; color:#0f172a; }

  /* Print dropdown */
  .print-dropdown-wrapper { position:relative; display:inline-block; }
  .print-menu { position:absolute; top:calc(100% + 6px); right:0; background:white; border:1px solid #e2e8f0; border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,0.15); min-width:240px; z-index:500; overflow:hidden; color:#0f172a; }
  .print-menu-header { padding:10px 16px; background:#f8fafc; border-bottom:1px solid #e2e8f0; font-size:10.5px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; }
  .print-menu-item { padding:11px 16px; font-size:13px; cursor:pointer; display:flex; align-items:center; gap:10px; transition:background 0.12s; border-bottom:1px solid #f1f5f9; user-select:none; }
  .print-menu-item:last-child { border-bottom:none; }
  .print-menu-item:hover { background:#f1f5f9; color:var(--c-primary); }
  .print-menu-item .doc-icon { font-size:15px; width:22px; text-align:center; }

  /* Estados específicos de cotizaciones */
  .estado-cotizada { background:#dbeafe; color:var(--c-primary); }
  .estado-emitida { background:#d1fae5; color:#065f46; }
  .estado-pendiente { background:#fef3c7; color:#92400e; }
  .estado-rechazada { background:#fee2e2; color:#991b1b; }

  /* ===== Dashboard - Tareas ===== */
  .tareas-list { display:flex; flex-direction:column; gap:8px; }
  /* Fila con avatar a la izquierda (iniciales del asegurado), espejo de .cumple-item:
     mismas columnas (avatar | texto | derecha), mismo gap (11px) y mismo alto (62px,
     lo marca el avatar de 38px) → disposición idéntica a Cumpleaños. */
  #solicitudes-pend-list .renov-item { height:62px; grid-template-columns:auto 1fr auto; gap:11px; }
  .sol-avatar { width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11.5px; font-weight:700; color:white; flex-shrink:0; }
  /* La columna derecha (chip + fecha apilados) no debe superar el alto del avatar (38px),
     o inflaría la fila y empujaría todo hacia abajo. Achicamos el chip para que
     chip↔título y fecha↔subtítulo queden en la misma línea. */
  #solicitudes-pend-list .renov-item .sol-chip { padding-top:1px; padding-bottom:1px; }

  /* ===== Dashboard - Cumpleaños ===== */
  .cumple-list { display:flex; flex-direction:column; gap:8px; }
  .cumple-item { padding:11px 12px; border:1px solid #e2e8f0; border-radius:8px; display:grid; grid-template-columns:auto 1fr auto auto; gap:11px; align-items:center; transition:all 0.12s; cursor:pointer; }
  .cumple-item:hover { background:#f8fafc; border-color:#cbd5e1; }
  .cumple-avatar-bday { width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11.5px; font-weight:700; color:white; flex-shrink:0; position:relative; }
  .cumple-avatar-bday::after { content:'🎂'; position:absolute; bottom:-3px; right:-4px; font-size:13px; line-height:1; }
  .cumple-name { font-size:13px; font-weight:600; color:#0f172a; }
  .cumple-info { font-size:11px; color:#64748b; margin-top:3px; }
  .cumple-days-pill { font-size:11px; font-weight:600; padding:4px 9px; border-radius:5px; white-space:nowrap; text-align:center; min-width:62px; }
  .cumple-days-pill.long { background:#f1f5f9; color:#475569; }
  .cumple-days-pill.this-month { background:#fef3c7; color:#92400e; }
  .cumple-days-pill.this-week { background:#fee2e2; color:#991b1b; }
  .cumple-days-pill.today { background:#10b981; color:white; }
  .cumple-wa-btn{
    flex-shrink:0;
    display:inline-flex; align-items:center; justify-content:center;
    width:32px; height:32px; margin-left:8px;
    border:none; border-radius:50%; cursor:pointer;
    background:#25D366; color:#fff;
    transition:filter .15s ease, transform .15s ease;
  }
  .cumple-wa-btn:hover{ filter:brightness(1.08); transform:scale(1.06); }
  .cumple-wa-btn:active{ transform:scale(.96); }

  /* Dashboard KPI grid forzar 4 columnas */
  #view-dashboard .kpi-grid { grid-template-columns:repeat(4,1fr); }
  @media (max-width:1100px) { #view-dashboard .kpi-grid { grid-template-columns:repeat(2,1fr); } }

  /* Variante de bar-fill para prima por sección */
  .bar-list-secondary .bar-fill { background:linear-gradient(90deg,#0891b2 0%,#06b6d4 100%); }

  /* ===== Dashboard - Accesos rápidos ===== */
  .quick-access-card { background:white; border:1px solid #e2e8f0; border-radius:10px; padding:18px 20px; display:flex; align-items:center; gap:14px; cursor:pointer; transition:all 0.15s; }
  .quick-access-card:hover { border-color:var(--c-secondary); box-shadow:0 6px 18px rgba(15,23,42,0.08); transform:translateY(-2px); }
  .quick-access-icon { width:48px; height:48px; border-radius:12px; color:white; font-size:22px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
  .quick-access-info { flex:1; min-width:0; }
  .quick-access-title { font-size:14px; font-weight:700; color:#0f172a; margin-bottom:4px; }
  .quick-access-desc { font-size:11.5px; color:#64748b; line-height:1.4; }
  .quick-access-arrow { font-size:18px; color:#94a3b8; transition:transform 0.15s, color 0.15s; flex-shrink:0; }
  .quick-access-card:hover .quick-access-arrow { color:var(--c-secondary); transform:translateX(4px); }

  /* ===== User menu dropdown ===== */
  .user-menu-wrapper { position:relative; }
  .user-menu { position:absolute; top:calc(100% + 10px); right:0; background:white; border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,0.18); min-width:250px; z-index:1000; border:1px solid #e2e8f0; overflow:hidden; color:#0f172a; }
  .user-menu-header { padding:14px 16px; display:flex; align-items:center; gap:11px; background:#f8fafc; }
  .user-menu-avatar { width:42px; height:42px; border-radius:50%; background:linear-gradient(135deg,var(--c-secondary),#06b6d4); color:white; font-weight:700; display:flex; align-items:center; justify-content:center; font-size:14px; flex-shrink:0; }
  .user-menu-name { font-size:13.5px; font-weight:600; color:#0f172a; }
  .user-menu-email { font-size:11.5px; color:#64748b; margin-top:2px; }
  .user-menu-divider { height:1px; background:#e2e8f0; }
  .user-menu-item { padding:11px 16px; font-size:13px; color:#0f172a; cursor:pointer; display:flex; align-items:center; gap:12px; transition:background 0.12s; user-select:none; }
  .user-menu-item:hover { background:#f1f5f9; }
  .user-menu-icon { font-size:14px; width:18px; text-align:center; }
  .user-menu-item.danger { color:#b91c1c; }
  .user-menu-item.danger:hover { background:#fee2e2; }

  /* ===== Login ===== */
  .login-screen { position:fixed; inset:0; background:linear-gradient(135deg,var(--chrome-1) 0%,var(--chrome-4) 50%,var(--chrome-2) 100%); display:flex; align-items:center; justify-content:center; z-index:10000; padding:20px; }
  .login-card { background:white; border-radius:16px; padding:40px 36px; width:100%; max-width:420px; box-shadow:0 20px 60px rgba(0,0,0,0.4); }
  .login-brand-block { display:flex; flex-direction:column; align-items:center; gap:8px; margin-bottom:30px; }
  .login-mountain { width:64px; height:36px; }
  .login-brand-text { display:flex; flex-direction:column; line-height:1; align-items:center; width:max-content; }
  .login-brand-name { display:flex; justify-content:space-between; width:100%; font-size:22px; font-weight:800; color:#0f172a; line-height:1; }
  .login-brand-tag { font-size:9.5px; font-weight:500; color:#64748b; letter-spacing:1.8px; margin-top:5px; line-height:1; }
  .login-title { font-size:22px; font-weight:700; color:#0f172a; margin-bottom:6px; text-align:center; letter-spacing:-0.3px; }
  .login-subtitle { font-size:13px; color:#64748b; margin-bottom:24px; text-align:center; }
  .login-field { margin-bottom:14px; display:flex; flex-direction:column; gap:5px; }
  .login-field label { font-size:12px; font-weight:600; color:#475569; }
  .login-input { width:100%; padding:11px 14px; border:1px solid #cbd5e1; border-radius:8px; font-size:14px; outline:none; transition:all 0.15s; font-family:inherit; color:#0f172a; }
  .login-input:focus { border-color:var(--c-primary); box-shadow:0 0 0 3px rgba(var(--c-primary-rgb),0.12); }
  .login-options { display:flex; justify-content:space-between; align-items:center; margin:16px 0 18px; font-size:12.5px; }
  .login-checkbox { display:flex; align-items:center; gap:6px; color:#475569; cursor:pointer; user-select:none; }
  .login-checkbox input { accent-color:var(--c-primary); cursor:pointer; }
  .login-forgot { color:var(--c-primary); text-decoration:none; font-weight:500; }
  .login-forgot:hover { text-decoration:underline; }
  .login-error { background:#fee2e2; color:#991b1b; padding:10px 12px; border-radius:6px; font-size:12.5px; margin-bottom:14px; border:1px solid #fecaca; display:flex; align-items:center; gap:8px; }
  .login-btn { width:100%; background:linear-gradient(90deg,var(--c-primary),var(--c-secondary)); color:white; border:none; padding:13px; border-radius:8px; font-size:14px; font-weight:700; cursor:pointer; transition:all 0.15s; }
  .login-btn:hover { transform:translateY(-1px); box-shadow:0 6px 18px rgba(var(--c-primary-rgb),0.4); }
  .login-footer { text-align:center; font-size:11px; color:#94a3b8; margin-top:24px; padding-top:18px; border-top:1px solid #f1f5f9; }

  /* ===== Overlay de carga inicial (bootstrap) ===== */
  .boot-overlay { position:fixed; inset:0; z-index:9500; background:linear-gradient(135deg,var(--chrome-1) 0%,var(--chrome-4) 50%,var(--chrome-2) 100%); display:flex; align-items:center; justify-content:center; transition:opacity 0.35s ease; }
  .boot-overlay.boot-out { opacity:0; pointer-events:none; }
  .boot-card { display:flex; flex-direction:column; align-items:center; text-align:center; animation:bootIn 0.4s ease; }
  @keyframes bootIn { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }
  .boot-mountain { width:104px; height:58px; }
  .boot-mountain path { fill:none; stroke-width:4; stroke-linecap:round; stroke-linejoin:round; }
  .boot-mountain-bg { stroke:rgba(255,255,255,0.13); }
  .boot-mountain-draw { stroke:#7eb3ff; stroke-dasharray:100; animation:bootDraw 1.8s ease-in-out infinite; }
  @keyframes bootDraw { 0% { stroke-dashoffset:100; } 55% { stroke-dashoffset:0; } 100% { stroke-dashoffset:-100; } }
  .boot-brand { font-size:19px; font-weight:800; letter-spacing:7px; text-indent:7px; color:white; margin-top:10px; }
  .boot-title { font-size:14px; font-weight:600; color:#cbd5e1; margin-top:16px; }
  .boot-sub { font-size:12px; color:#8ba3c7; margin-top:4px; }
  .boot-bar { width:220px; height:3px; border-radius:2px; background:rgba(255,255,255,0.12); overflow:hidden; margin-top:18px; }
  .boot-bar-fill { width:40%; height:100%; border-radius:2px; background:linear-gradient(90deg,var(--c-secondary),#7eb3ff); animation:bootSlide 1.2s ease-in-out infinite; }
  @keyframes bootSlide { 0% { transform:translateX(-100%); } 100% { transform:translateX(250%); } }

  /* ===== Mi Perfil ===== */
  .profile-card-top { display:flex; align-items:center; gap:24px; padding:28px; margin-bottom:18px; background:white; border-radius:10px; border:1px solid #e2e8f0; flex-wrap:wrap; }
  .profile-avatar { width:96px; height:96px; border-radius:50%; background:linear-gradient(135deg,var(--c-primary),var(--c-secondary)); color:white; font-weight:700; font-size:34px; display:flex; align-items:center; justify-content:center; flex-shrink:0; position:relative; letter-spacing:0.5px; overflow:visible; }
  .profile-avatar img { width:100%; height:100%; border-radius:50%; object-fit:cover; }
  .profile-avatar-edit { position:absolute; bottom:0; right:0; width:32px; height:32px; border-radius:50%; background:white; border:2px solid var(--c-primary); color:var(--c-primary); display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:14px; transition:all 0.15s; }
  .profile-avatar-edit:hover { background:var(--c-primary); color:white; }
  .profile-info-name { font-size:24px; font-weight:700; color:#0f172a; line-height:1.2; }
  .profile-info-role { font-size:13px; color:#64748b; margin-top:8px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  .profile-info-contact { font-size:13px; color:#475569; margin-top:10px; display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
  .profile-info-contact span { display:inline-flex; align-items:center; gap:5px; }

  [hidden] { display:none !important; }

/* ===== Solicitudes ===== */
.modal-overlay { position:fixed; inset:0; background:rgba(15,23,42,0.45); display:flex; align-items:center; justify-content:center; z-index:9000; padding:20px; }
.modal { background:#fff; border-radius:14px; box-shadow:0 20px 60px rgba(15,23,42,0.3); width:100%; max-width:480px; padding:22px; max-height:90vh; overflow:auto; }
.modal h2 { margin:0 0 14px; font-size:18px; color:#0f172a; }
/* Alta a pantalla completa — selector de tipo en tarjetas */
.sol-tipo-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:12px; }
.sol-tipo-card { display:flex; align-items:center; gap:12px; padding:13px 15px; border:1.5px solid #e2e8f0; border-radius:11px; background:#fff; cursor:pointer; transition:all 0.14s; }
.sol-tipo-card:hover { border-color:#bfdbfe; box-shadow:0 3px 10px rgba(var(--c-primary-rgb),0.08); transform:translateY(-1px); }
.sol-tipo-card.sel { border-color:var(--c-secondary); background:linear-gradient(135deg,#f0f9ff,#eff6ff); box-shadow:0 0 0 3px rgba(var(--c-secondary-rgb),0.13); }
.sol-tipo-ico { width:40px; height:40px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:19px; flex-shrink:0; }
.sol-tipo-nom { font-size:14px; font-weight:700; color:#0f172a; }
.sol-tipo-sub { font-size:11.5px; color:#64748b; margin-top:1px; }
/* Misma altura para inputs y selects de una fila (texto vs select difieren unos px) */
#sol-nueva-cont input.form-input, #sol-nueva-cont select.form-input { height:38px; box-sizing:border-box; }
/* Alta a ANCHO COMPLETO: los campos llenan el ancho (la form-grid auto-fit arma varias
   columnas) y Comentarios + Adjuntos van al final; así entra sin scroll largo. */
.sol-nueva-cols { display:block; }
#sol-nueva-cont .sol-tipo-cards { grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); }
.sol-desc-grow { min-height:90px; resize:vertical; }
/* Campo de importe: chip de moneda pegado al input (grupo). */
.sol-monto-wrap { display:flex; align-items:stretch; }
.sol-monto-wrap .sol-monto-cur { display:flex; align-items:center; padding:0 10px; background:#f1f5f9; border:1px solid #e2e8f0; border-right:none; border-radius:8px 0 0 8px; color:#475569; font-size:13px; white-space:nowrap; }
.sol-monto-wrap .form-input { border-top-left-radius:0; border-bottom-left-radius:0; min-width:0; }
/* Campo tipo 'domicilio' (cliente + riesgo): 2 filas. Fila 1: calle(3) + nº/piso/dto. Fila 2:
   localidad(3) + cp + provincia(2). La localidad trae CP + provincia del catálogo LOCALIDADES_AR. */
.sol-domicilio-grid { display:grid; grid-template-columns:repeat(6,1fr); gap:8px; }
.sol-domicilio-grid .sol-dom-calle,
.sol-domicilio-grid .sol-dom-localidad { grid-column:span 3; }
.sol-domicilio-grid .sol-dom-provincia { grid-column:span 2; }
@media (max-width:640px){
  .sol-domicilio-grid { grid-template-columns:repeat(2,1fr); }
  .sol-domicilio-grid .sol-dom-calle,
  .sol-domicilio-grid .sol-dom-localidad { grid-column:1 / -1; }
  .sol-domicilio-grid .sol-dom-provincia { grid-column:auto; }
}
/* Grilla de datos del productor+cliente (cotización): 8 columnas → campos "enteros" ocupan 2 y
   los cortos (Tipo/Teléfono/Fecha de nac., clase .sol-cli-half) ocupan 1 (media columna). */
.sol-cot-cli-grid { grid-template-columns:repeat(8,1fr); }
.sol-cot-cli-grid > .form-field { grid-column:span 2; }
.sol-cot-cli-grid > .form-field.sol-cli-half { grid-column:span 1; }
@media (max-width:900px){
  .sol-cot-cli-grid { grid-template-columns:repeat(2,1fr); }
  .sol-cot-cli-grid > .form-field,
  .sol-cot-cli-grid > .form-field.sol-cli-half { grid-column:span 1; }
}
/* Variante 'una sola fila' (domicilio del cliente y del riesgo): los 7 sub-inputs en una línea. */
.sol-dom-oneline { grid-template-columns:1.8fr .6fr .6fr .6fr 1.3fr .7fr 1.2fr; }
.sol-dom-oneline .sol-dom-calle,
.sol-dom-oneline .sol-dom-localidad,
.sol-dom-oneline .sol-dom-provincia { grid-column:auto; }
@media (max-width:820px){
  .sol-dom-oneline { grid-template-columns:repeat(2,1fr); }
  .sol-dom-oneline .sol-dom-calle,
  .sol-dom-oneline .sol-dom-localidad { grid-column:1 / -1; }
}
/* Checkbox tildable (medidas de seguridad). */
.sol-cob-chk { display:flex; align-items:center; gap:6px; font-size:13px; color:#334155; font-weight:400; }
/* Medidas de seguridad: checklist + "otro" a ancho completo. */
.sol-seg { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:4px 12px; }
.sol-seg .sol-seg-otro { grid-column:1 / -1; margin-top:4px; }
/* Coberturas a cotizar: 2 columnas, cada cobertura con su nombre + suma asegurada (sin tilde). */
.sol-cobs { display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; }
.sol-cob-row { display:flex; align-items:center; gap:8px; min-width:0; }
.sol-cob-row .sol-cob-name { flex:1; min-width:0; font-size:13px; color:#334155; }
.sol-cob-sa-wrap { width:150px; flex:none; }
.sol-cob-otras { grid-column:1 / -1; margin-top:4px; }
@media (max-width:640px){ .sol-cobs { grid-template-columns:1fr; } }
/* Buscadores typeahead (productor / cliente) */
.sol-ac-wrap { position:relative; }
.sol-ac-results { position:absolute; left:0; right:0; top:100%; margin-top:4px; background:#fff; border:1px solid #e2e8f0; border-radius:9px; box-shadow:0 8px 24px rgba(15,42,74,.14); z-index:50; max-height:260px; overflow:auto; }
.sol-ac-item { padding:9px 12px; font-size:13px; color:#1e293b; cursor:pointer; display:flex; justify-content:space-between; gap:10px; align-items:center; border-bottom:1px solid #f1f5f9; }
.sol-ac-item:hover { background:#f0f7ff; }
.sol-ac-sub { font-size:11.5px; color:#94a3b8; flex-shrink:0; }
.sol-ac-empty { padding:12px; text-align:center; color:#94a3b8; font-size:12.5px; }
.view-header { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:8px; }
.view-title { font-size:22px; font-weight:700; color:#0f172a; margin:0; }
.view-subtitle { font-size:13px; color:#64748b; margin:4px 0 0; }
.sol-filtros { display:flex; gap:10px; margin:12px 0 16px; }
.sol-select, .sol-input, .sol-textarea { font:inherit; padding:8px 10px; border:1px solid #d9e1ec; border-radius:7px; background:#fff; color:#1e293b; }
.sol-textarea { width:100%; box-sizing:border-box; resize:vertical; }
.sol-rows { display:flex; flex-direction:column; gap:8px; }
.sol-row { position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; background:#fff; border:1px solid #eef2f7; border-radius:9px; padding:12px 14px; cursor:pointer; transition:box-shadow .12s,border-color .12s; }
.sol-row:hover { border-color:#cdd9ea; box-shadow:0 1px 6px rgba(15,42,74,.06); }
/* Punto rojo (novedades sin ver): esquina superior derecha, arriba del chip de estado. */
.sol-row-novedad { position:absolute; top:6px; right:6px; width:9px; height:9px; border-radius:50%; background:#ef4444; box-shadow:0 0 0 2px #fff; }
/* Punto rojo en las cards de cotización (mismo criterio, sobre la card relativa). */
.cot-card-novedad { position:absolute; top:6px; right:6px; width:9px; height:9px; border-radius:50%; background:#ef4444; box-shadow:0 0 0 2px #fff; z-index:2; }
/* Línea de color por tipo a la izquierda de cada fila. */
.sol-row-cotizacion { border-left:4px solid var(--c-secondary); }  /* azul */
.sol-row-anulacion  { border-left:4px solid #ef4444; }  /* rojo */
.sol-row-cobranza   { border-left:4px solid #22c55e; }  /* verde */
.sol-row-endoso     { border-left:4px solid #eab308; }  /* amarillo */
.sol-row-documentacion { border-left:4px solid #a855f7; }  /* violeta */
.sol-row-orden      { border-left:4px solid #6366f1; }  /* índigo */
/* Siniestros: borde por categoría (mismo tratamiento que Solicitudes). */
.sol-row-sin-auto      { border-left:4px solid #0ea5e9; }  /* celeste (Auto) */
.sol-row-sin-propiedad { border-left:4px solid #a855f7; }  /* violeta (Propiedad) */
/* Siniestros: acciones Editar/Eliminar arriba a la derecha del encabezado. */
.sin-d-acc-top { display:flex; gap:8px; align-items:center; }
.sin-acc-btn { padding:7px 14px; border:1px solid transparent; border-radius:7px; font-weight:600; font-size:13px; cursor:pointer; transition:filter .12s, box-shadow .12s; }
.sin-acc-btn:hover { filter:brightness(0.96); box-shadow:0 2px 6px rgba(15,42,74,.12); }
.sin-acc-editar { background:#e0f2fe; color:#075985; }
.sin-acc-eliminar { background:#fee2e2; color:#991b1b; }
/* Mini-modal (cambio de estado: emitir / rechazar). */
.sol-modal-ov { position:fixed; inset:0; background:rgba(15,42,74,.38); display:flex; align-items:center; justify-content:center; z-index:1000; }
.sol-modal { background:#fff; border-radius:12px; padding:20px 22px; width:min(420px,92vw); box-shadow:0 12px 40px rgba(15,42,74,.22); }
.sol-modal-tit { font-size:16px; font-weight:700; color:#1e293b; margin-bottom:14px; }
.sol-modal-acc { display:flex; gap:10px; justify-content:flex-end; margin-top:18px; }

/* Ficha del plan (modal del grid del cotizador) — mismo patrón overlay que .sol-modal */
.cot-ficha-overlay { position:fixed; inset:0; background:rgba(15,42,74,.38); display:flex; align-items:center; justify-content:center; z-index:1000; }
.cot-ficha-overlay[hidden] { display:none; }
.cot-ficha-card { position:relative; background:#fff; border-radius:14px; padding:22px 24px; width:min(440px,92vw); max-height:88vh; overflow-y:auto; box-shadow:0 12px 40px rgba(15,42,74,.22); }
.cot-ficha-x { position:absolute; top:12px; right:14px; border:none; background:none; font-size:16px; line-height:1; color:#94a3b8; cursor:pointer; padding:4px; }
.cot-ficha-x:hover { color:#475569; }
.cot-ficha-head { display:flex; align-items:center; gap:12px; margin-bottom:14px; padding-right:24px; }
.cot-ficha-logo { display:inline-flex; align-items:center; justify-content:center; width:38px; height:38px; border-radius:9px; color:#fff; font-weight:800; font-size:14px; flex-shrink:0; }
.cot-ficha-logoimg { height:28px; width:auto; max-width:170px; object-fit:contain; flex-shrink:0; }
.cot-ficha-cia { font-size:15px; font-weight:700; color:#0f172a; }
.cot-ficha-plan { font-size:13.5px; font-weight:700; color:#0f172a; margin-bottom:2px; }   /* la cobertura en su propia línea, arriba del vehículo (pedido 2-jul) */
.cot-ficha-precio { margin-left:auto; font-size:20px; font-weight:800; color:#1e293b; white-space:nowrap; }
.cot-ficha-precio span { font-size:12px; font-weight:600; color:#94a3b8; }
.cot-ficha-veh { font-size:13px; color:#475569; margin-bottom:12px; }
.cot-ficha-row { display:flex; justify-content:space-between; gap:12px; font-size:13px; padding:7px 0; border-top:1px solid #f1f5f9; }
.cot-ficha-row span:first-child { color:#64748b; }
.cot-ficha-row span:last-child { color:#1e293b; font-weight:600; }
/* Comisión estimada: una línea chica y discreta (sin desglose PAS/Org) */
.cot-ficha-row-com { font-size:11.5px; padding:5px 0; }
.cot-ficha-row-com span:first-child { color:#94a3b8; }
.cot-ficha-row-com span:last-child { color:#64748b; font-weight:600; }
/* Comisión "no disponible" (SMG/Sancor) */
.cot-ficha-row-muted span:last-child { color:#94a3b8; font-weight:500; font-style:italic; }
.cot-ficha-sub { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:#64748b; margin:12px 0 6px; }
.cot-ficha-cobs { margin-top:6px; }
.cot-ficha-cob { display:flex; justify-content:space-between; gap:12px; font-size:12.5px; color:#334155; padding:6px 0; border-top:1px solid #f1f5f9; }
.cot-ficha-cob > span:first-child { color:#64748b; flex-shrink:0; }
.cot-ficha-cobval { text-align:right; }
.cot-ficha-nota { font-size:12.5px; color:#94a3b8; font-style:italic; margin-top:12px; }
.cot-ficha-acciones { display:flex; justify-content:flex-end; margin-top:18px; }
.cot-ficha-emitir { border:none; border-radius:9px; padding:10px 22px; font-size:13.5px; font-weight:700; color:#fff; background:linear-gradient(135deg,var(--c-primary-700),var(--c-secondary)); cursor:pointer; }
.cot-ficha-emitir:hover:not(:disabled) { filter:brightness(1.06); }
.cot-ficha-emitir:disabled { background:#cbd5e1; color:#f8fafc; cursor:not-allowed; }
/* Sin código propio en la compañía: aviso + CTA "Pedir alta" (WhatsApp a la organización) */
.cot-ficha-alta { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:12px; padding:10px 12px; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:9px; font-size:12.5px; color:#166534; }
.cot-ficha-alta-btn { border:none; border-radius:8px; padding:8px 14px; font-size:12.5px; font-weight:700; color:#fff; background:#25D366; cursor:pointer; white-space:nowrap; }
.cot-ficha-alta-btn:hover { filter:brightness(1.06); }
.sol-row-tipo { font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:#64748b; }
.sol-row-titulo { font-weight:600; color:#1e293b; }
.sol-row-meta { font-size:12px; color:#94a3b8; margin-top:2px; }
.sol-empty, .sol-cerrada, .notif-empty { padding:24px; text-align:center; color:#94a3b8; font-size:13px; }
.sol-chip { display:inline-block; padding:3px 10px; border-radius:999px; font-size:12px; font-weight:600; }
.sol-st-creada { background:#dbeafe; color:var(--c-primary); }
.sol-st-proceso { background:#fef9c3; color:#854d0e; }
.sol-st-cargada { background:#e0f2fe; color:#075985; }
.sol-st-falta { background:#ffedd5; color:#9a3412; }
.sol-st-emision { background:#fef9c3; color:#854d0e; }
.sol-st-ok { background:#dcfce7; color:#166534; }
.sol-st-rech { background:#fee2e2; color:#991b1b; }
.sol-st-canc { background:#f1f5f9; color:#64748b; }
.sol-st-violeta { background:#f3e8ff; color:#6b21a8; }
.sol-st-celeste { background:#cffafe; color:#0e7490; }
.sol-chip-sm { padding:1px 8px; font-size:11px; }
/* Ficha de cotización: modal "Enviar a compañías" + matriz de respuesta por compañía. */
.sol-d-matriz { margin-bottom:18px; }
.sol-matriz-list { display:flex; flex-direction:column; gap:0; }
.sol-matriz-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 0; border-top:1px solid #f1f5f9; }
.sol-matriz-row:first-child { border-top:none; }
.sol-matriz-nombre { font-weight:600; color:#1e293b; font-size:13.5px; min-width:120px; }
.sol-matriz-costo { font-size:12.5px; color:#166534; font-weight:600; }
.sol-matriz-sel { margin-left:auto; width:auto; font-size:12px; padding:5px 28px 5px 10px; }
.sol-envio-asunto { font-size:12.5px; color:#475569; background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:8px 10px; margin-bottom:12px; }
.sol-envio-list { display:flex; flex-direction:column; gap:10px; max-height:280px; overflow-y:auto; margin-bottom:4px; }
.sol-envio-row { border:1px solid #e2e8f0; border-radius:8px; padding:8px 10px; }
.sol-envio-chk { display:flex; align-items:center; gap:7px; font-weight:600; font-size:13px; color:#1e293b; margin-bottom:6px; cursor:pointer; }
.sol-envio-mails { font-size:12.5px; }
/* Siniestros: edición inline de Nº denuncia / Nº siniestro en el panel de datos. */
.sin-nro-pen { padding:1px 6px; font-size:11px; margin-left:6px; vertical-align:middle; line-height:1; }
.sin-nro-edit { display:inline-flex; align-items:center; gap:6px; flex-wrap:wrap; }
.sin-nro-inp { display:inline-block; max-width:180px; padding:4px 8px; }
/* Siniestros: etiquetas tildables + check de cierre. */
.sin-tags-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.sin-tags { display:flex; flex-wrap:nowrap; gap:6px; }
.sin-tag-pill { white-space:nowrap; flex:0 1 auto; min-width:0; }
.sin-tag-pill { display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border:1px solid #e2e8f0; border-radius:999px; font-size:11.5px; font-weight:600; color:#475569; background:#fff; cursor:pointer; user-select:none; }
.sin-tag-pill:hover { border-color:#cbd5e1; }
.sin-tag-pill.on { background:#eff6ff; border-color:#bfdbfe; color:var(--c-primary); }
.sin-tag-pill input { margin:0; }
.sin-tag { background:#eff6ff; color:var(--c-primary); }
/* Color por etiqueta (siniestros): chip de listado/ficha + pill activa. */
.sin-et-amarillo.sol-chip { background:#fef9c3; color:#854d0e; }
.sin-et-rosa.sol-chip     { background:#fce7f3; color:#9d174d; }
.sin-et-rojo.sol-chip     { background:#fee2e2; color:#991b1b; }
.sin-et-naranja.sol-chip  { background:#ffedd5; color:#9a3412; }
.sin-et-azul.sol-chip     { background:#dbeafe; color:var(--c-primary); }
.sin-et-violeta.sol-chip  { background:#f3e8ff; color:#6b21a8; }
.sin-et-verde.sol-chip    { background:#dcfce7; color:#166534; }
.sin-tag-pill.on.sin-et-amarillo { background:#fef9c3; border-color:#fde68a; color:#854d0e; }
.sin-tag-pill.on.sin-et-rosa     { background:#fce7f3; border-color:#fbcfe8; color:#9d174d; }
.sin-tag-pill.on.sin-et-rojo     { background:#fee2e2; border-color:#fecaca; color:#991b1b; }
.sin-tag-pill.on.sin-et-naranja  { background:#ffedd5; border-color:#fed7aa; color:#9a3412; }
.sin-tag-pill.on.sin-et-azul     { background:#dbeafe; border-color:#bfdbfe; color:var(--c-primary); }
.sin-tag-pill.on.sin-et-violeta  { background:#f3e8ff; border-color:#e9d5ff; color:#6b21a8; }
.sin-tag-pill.on.sin-et-verde    { background:#dcfce7; border-color:#bbf7d0; color:#166534; }
.sin-cerrado-chk { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:#334155; cursor:pointer; user-select:none; font-weight:600; }
.sin-cerrado-chk input { margin:0; }
.sin-row-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:7px; }
.sin-empty-inline { font-size:12.5px; color:#94a3b8; }
/* Siniestros: ficha (header + stepper de estado). */
.sin-d-sub { font-size:13px; color:#64748b; margin-top:3px; }
.sin-d-sub2 { font-size:12px; color:#94a3b8; margin-top:2px; }
.sin-cob-green { color:#15803d; font-weight:600; }
.sin-cob-red { color:#b91c1c; font-weight:600; }
.sin-cob-amber { color:#b45309; font-weight:600; }
.sin-cob-gray { color:#64748b; }
.sin-d-head-right { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.sin-stepper { display:flex; align-items:flex-start; }
.sin-step { display:flex; flex-direction:column; align-items:center; gap:7px; flex:1; min-width:0; text-align:center; }
.sin-step-click { cursor:pointer; border-radius:8px; padding:2px 0; transition:background .12s; }
.sin-step-click:hover { background:#f8fafc; }
.sin-step-node { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.sin-step-cur { color:#fff; border:2px solid; box-shadow:0 0 0 3px rgba(37,99,235,0.12); }
.sin-step-done { background:#cbd5e1; color:#475569; }
.sin-step-future { background:#fff; color:#94a3b8; border:1.5px solid #e2e8f0; }
.sin-step-lbl { font-size:11px; color:#94a3b8; line-height:1.25; }
.sin-step-lbl.on { font-weight:700; }
.sin-step-conn { flex:1; border-top:2px dashed #e2e8f0; margin-top:13px; min-width:8px; }
.sin-step-conn.done { border-top-style:solid; border-top-color:#cbd5e1; }
.sin-stepper-salida { display:flex; align-items:center; gap:10px; margin-top:16px; padding-top:14px; border-top:1px solid #f1f5f9; flex-wrap:wrap; }
.sin-salida-lbl { font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:0.5px; }
.sin-salida-chip { font-size:12px; font-weight:600; padding:4px 12px; border-radius:999px; border:1px solid #e2e8f0; background:#fff; color:#b91c1c; cursor:pointer; }
button.sin-salida-chip:hover { border-color:#fecaca; background:#fef2f2; }
.sin-salida-chip.on { background:#fee2e2; border-color:#fecaca; color:#991b1b; }
.sin-step-hint-row { margin-top:14px; }
.sin-step-hint { font-size:12px; color:#94a3b8; }
.sin-rech-aviso { font-size:12.5px; font-weight:600; color:#b91c1c; }
.sin-stepper-rech { opacity:.5; }
/* Botones del header de la ficha. */
.sin-acc-abrir, .sin-acc-cerrar { background:#f1f5f9; color:#64748b; }
.sin-acc-abrir.on { background:#dcfce7; color:#166534; box-shadow:inset 0 0 0 1px #86efac; }
.sin-acc-cerrar.on { background:#e2e8f0; color:#334155; box-shadow:inset 0 0 0 1px #cbd5e1; }
.sin-acc-rech { background:#fff; color:#b91c1c; border-color:#fecaca; }
.sin-acc-rech.on { background:#fee2e2; color:#991b1b; }
.sin-acc-btn:disabled { opacity:.5; cursor:default; box-shadow:none; filter:none; }
/* Galería de fotos/adjuntos: miniaturas cuadradas + lightbox. */
.sin-fotos { display:flex; flex-wrap:wrap; gap:10px; }
.sin-foto { width:96px; height:96px; border-radius:10px; overflow:hidden; border:1px solid #e2e8f0; background:#f8fafc; padding:0; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:transform .08s, box-shadow .08s; }
.sin-foto:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(15,23,42,.12); }
.sin-foto img { width:100%; height:100%; object-fit:cover; display:block; }
.sin-foto-file { flex-direction:column; gap:4px; text-decoration:none; color:#475569; font-size:10px; padding:6px; text-align:center; }
.sin-foto-file .sin-foto-ico { font-size:24px; }
.sin-foto-file .sin-foto-name { width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sol-msg-adj-cap { margin-top:4px; font-size:12px; color:#64748b; font-style:italic; }
.sin-lb { position:fixed; inset:0; background:rgba(15,23,42,.92); z-index:9999; display:flex; align-items:center; justify-content:center; }
.sin-lb-stage { max-width:92vw; max-height:92vh; display:flex; flex-direction:column; align-items:center; gap:10px; }
.sin-lb-stage img { max-width:92vw; max-height:84vh; object-fit:contain; border-radius:8px; box-shadow:0 10px 40px rgba(0,0,0,.5); }
.sin-lb-cap { color:#e2e8f0; font-size:13px; text-align:center; max-width:92vw; }
.sin-lb-close { position:absolute; top:18px; right:22px; background:rgba(255,255,255,.15); color:#fff; border:none; width:40px; height:40px; border-radius:50%; font-size:18px; cursor:pointer; }
.sin-lb-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.15); color:#fff; border:none; width:48px; height:48px; border-radius:50%; font-size:30px; line-height:1; cursor:pointer; }
.sin-lb-prev { left:20px; } .sin-lb-next { right:20px; }
.sin-lb-close:hover, .sin-lb-nav:hover { background:rgba(255,255,255,.32); }
/* Editor inline de los campos de Datos. */
.sin-ei { display:flex; flex-direction:column; gap:8px; }
.sin-ei-inp { width:100%; max-width:440px; }
.sin-ei-btns { display:flex; gap:8px; margin-top:2px; }
.sin-ei-group .form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
/* Datos del siniestro: boxes editables (estilo profile-field de Póliza) + bloques largos. */
.sin-pf-click { cursor:pointer; }
.sin-pf-click:hover { background:#f1f5f9; border-color:#e2e8f0; }
.sin-pf-pen { flex-shrink:0; color:#cbd5e1; font-size:12px; align-self:center; }
.sin-pf-click:hover .sin-pf-pen { color:#475569; }
.sin-pf-empty { color:#94a3b8; }
.sin-pf-editrow { grid-column:1/-1; background:#fafbfc; border:1px solid #e2e8f0; border-radius:8px; padding:13px 14px; }
.sin-detalles { display:flex; flex-direction:column; gap:10px; margin-top:10px; }
/* Grilla de campos de la ficha de siniestro: 4 columnas (vs las 3 genéricas). */
.profile-fields.sin-fields { grid-template-columns:repeat(4, minmax(0, 1fr)); }
.sin-fields .sin-col3 { grid-column:span 3; }
@media (max-width:1100px){ .profile-fields.sin-fields { grid-template-columns:repeat(2, minmax(0, 1fr)); } .sin-fields .sin-col3 { grid-column:1 / -1; } }
@media (max-width:700px){ .profile-fields.sin-fields { grid-template-columns:1fr; } .sin-fields .sin-col3 { grid-column:1 / -1; } }
.sin-detalle { display:flex; align-items:flex-start; gap:11px; padding:11px 12px; background:#fafbfc; border:1px solid #f1f5f9; border-radius:8px; transition:background .12s, border-color .12s; }
.sin-detalle .profile-field-icon { margin-top:1px; }
.sin-detalle-value { font-size:13px; color:#0f172a; font-weight:500; line-height:1.45; white-space:normal; word-break:break-word; }
.sin-detalle-edit { display:block; }
/* Ficha de solicitud: header con avatar de tipo (estilo ficha del resto de la app). */
.sol-d-header { margin:6px 0 18px; }
.sol-d-header .detail-avatar { font-size:24px; }
.sol-d-sub { font-size:13px; color:#64748b; margin-top:5px; }
.sol-d-estado { padding-top:4px; }
/* Barra de acciones de estado (solo organización), como card propia. */
.sol-d-acciones-card { padding:14px 18px; margin-bottom:18px; }
.sol-d-acciones-lbl { font-size:10.5px; color:#64748b; text-transform:uppercase; letter-spacing:0.6px; font-weight:700; margin-bottom:10px; }
.sol-d-acciones { display:flex; gap:5px; flex-wrap:nowrap; align-items:stretch; }
/* Botones de estado: TODOS en una sola fila (comprimidos, reparto equitativo, texto largo envuelve). */
.sol-estado-btn { flex:1 1 0; min-width:0; max-width:none; display:inline-flex; align-items:center; justify-content:center; text-align:center; gap:4px; padding:7px 5px; border:1px solid transparent; border-radius:7px; font-weight:600; font-size:11px; line-height:1.15; cursor:pointer; transition:filter .12s, box-shadow .12s, transform .08s; }
.sol-estado-btn:hover { filter:brightness(0.95); box-shadow:0 2px 6px rgba(15,42,74,.12); }
.sol-estado-btn:active { transform:translateY(1px); }
/* Estado ACTUAL dentro del set fijo: resaltado, sin cursor, no se atenúa por disabled. */
.sol-estado-btn.sol-estado-actual { cursor:default; font-weight:800; opacity:1; outline:2px solid #0f2a4a; outline-offset:1px; box-shadow:0 1px 3px rgba(15,42,74,.18); }
.sol-estado-btn.sol-estado-actual:hover { filter:none; box-shadow:0 1px 3px rgba(15,42,74,.18); }
.sol-estado-btn.sol-estado-actual:active { transform:none; }
.sol-estado-check { font-weight:900; }
/* Solo lectura (no-organizador): los estados no-actuales se ven inertes y atenuados. */
.sol-estado-btn.sol-estado-ro { cursor:default; opacity:.5; }
.sol-estado-btn.sol-estado-ro:hover { filter:none; box-shadow:none; }
.sol-estado-btn.sol-estado-ro:active { transform:none; }
/* Eliminar: relleno gris, va siempre al final. */
.sol-eliminar { background:#f1f5f9; color:#475569; }
/* Botón "Rechazar" del modal: rojo sólido (acción destructiva). */
.btn-cotizar.sol-cancelar { background:#dc2626; box-shadow:0 2px 8px rgba(220,38,38,.25); }
.btn-cotizar.sol-cancelar:hover { box-shadow:0 4px 12px rgba(220,38,38,.35); }
/* Cards de datos + conversación: lado a lado en pantallas anchas. */
.sol-d-cols { display:grid; grid-template-columns:minmax(0,360px) minmax(0,1fr); gap:18px; align-items:start; }
@media (max-width:1100px){ .sol-d-cols { grid-template-columns:1fr; } }
.sol-d-datos { align-self:start; }
/* En 2 columnas la card de datos angosta → un solo campo por fila. */
.sol-d-datos-grid { grid-template-columns:1fr; }
@media (max-width:1100px){ .sol-d-datos-grid { grid-template-columns:1fr 1fr; } }
/* Cotización: vista apilada (datos full width en secciones tipo formulario, luego el hilo). */
.sol-d-stack { display:flex; flex-direction:column; gap:18px; }
.sol-d-stack .sol-d-datos-grid { grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); }
.sol-d-seccion + .sol-d-seccion { margin-top:16px; }
.sol-d-seccion .form-section-subtitle { margin-bottom:10px; }
/* Hilo de conversación: avatar + burbuja. */
.sol-timeline { display:flex; flex-direction:column; gap:14px; margin-bottom:18px; }
.sol-msg { display:flex; gap:11px; align-items:flex-start; }
.sol-msg .name-avatar { width:34px; height:34px; font-size:12px; }
.sol-msg-main { flex:1; min-width:0; }
.sol-msg-head { display:flex; align-items:baseline; gap:8px; margin-bottom:4px; }
.sol-msg-head strong { font-size:13px; color:#0f172a; font-weight:700; }
.sol-msg-head span { font-size:11.5px; color:#94a3b8; }
.sol-msg-bubble { background:#f8fafc; border:1px solid #eef2f7; border-radius:4px 10px 10px 10px; padding:9px 13px; font-size:13.5px; color:#1e293b; line-height:1.45; }
.sol-msg-meta { font-size:12px; color:#64748b; margin-bottom:4px; }
.sol-msg-meta:only-child { margin-bottom:0; }
/* Cambio de estado sin comentario: línea de evento (activity log). */
.sol-ev { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:4px 2px 4px 45px; font-size:12.5px; color:#64748b; }
.sol-ev-tx strong { color:#475569; font-weight:600; }
.sol-ev-fch { color:#cbd5e1; font-size:11.5px; }
.sol-adj { display:inline-block; margin-top:6px; margin-right:10px; font-size:13px; color:var(--c-primary-strong); text-decoration:none; }
.sol-adj:hover { text-decoration:underline; }
.sol-comentar { background:#fafbfc; border:1px solid #eef2f7; border-radius:10px; padding:12px; margin-top:4px; }
.sol-comentar .sol-textarea { border-color:#e2e8f0; }
.sol-comentar-acciones { display:flex; justify-content:space-between; align-items:center; margin-top:10px; gap:10px; }
/* Adjuntos acumulables (chips de archivos seleccionados, ver initAdjuntos en helpers.js) */
.adj-list { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.adj-list:empty { margin:0; }
.adj-chip { display:inline-flex; align-items:center; gap:6px; max-width:240px; padding:4px 8px; border:1px solid #c7d2fe; border-radius:8px; background:#eef2ff; color:#3730a3; font-size:12px; }
.adj-chip-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.adj-chip-size { flex-shrink:0; color:#6366f1; font-size:11px; }
.adj-chip-x { flex-shrink:0; padding:0 0 0 2px; border:none; background:transparent; color:#6366f1; font-size:12px; line-height:1; cursor:pointer; }
.adj-chip-x:hover { color:#dc2626; }
.sol-label { display:block; font-size:13px; color:#475569; margin-bottom:10px; }
.sol-label .sol-select, .sol-label .sol-input, .sol-label .sol-textarea { display:block; width:100%; box-sizing:border-box; margin-top:4px; }
.sol-modal { max-width:520px; }
.sol-modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:12px; }
.notif-wrapper { position:relative; }
.notif-btn { position:relative; }
.notif-badge, .nav-badge { background:#ef4444; color:#fff; font-size:10px; font-weight:700; border-radius:999px; padding:1px 6px; min-width:16px; text-align:center; }
.notif-badge { position:absolute; top:-4px; right:-4px; }
.nav-badge { margin-left:6px; }
.notif-dropdown { position:absolute; right:0; top:42px; width:330px; max-height:440px; overflow-y:auto; background:#fff; border:1px solid #e2e8f0; border-radius:12px; box-shadow:0 12px 32px rgba(15,42,74,.18); z-index:100; }
.notif-head { display:flex; align-items:center; gap:8px; padding:11px 14px; font-weight:700; font-size:13px; color:#0f2a4a; border-bottom:1px solid #eef2f7; position:sticky; top:0; background:#fff; border-radius:12px 12px 0 0; }
.notif-head-n { background:#e0edff; color:var(--c-primary-strong); font-size:11px; font-weight:700; border-radius:999px; padding:1px 8px; }
.notif-item { display:flex; align-items:center; gap:11px; padding:11px 14px; cursor:pointer; border-bottom:1px solid #f4f7fa; transition:background .12s; }
.notif-item:last-child { border-bottom:none; }
.notif-item:hover { background:#f6f9fc; }
.notif-ico { flex:0 0 auto; width:36px; height:36px; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:17px; line-height:1; }
.notif-ico.nf-auto { background:#e8f0ff; }
.notif-ico.nf-hogar { background:#e6f7ee; }
.notif-ico.nf-siniestro { background:#fdeaea; }
.notif-ico.nf-evento { background:#f0ecfd; }
.notif-ico.nf-solicitud { background:#fff4e0; }
.notif-ico.nf-otro { background:#eef2f7; }
.notif-body { flex:1 1 auto; min-width:0; }
.notif-item-t { font-weight:600; font-size:13px; color:#1e293b; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.notif-item-m { font-size:12px; color:#94a3b8; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.notif-time { flex:0 0 auto; align-self:flex-start; font-size:11px; color:#b4c0cf; white-space:nowrap; padding-top:2px; }
.notif-item.notif-empty { display:block; }


/* === Logo-imagen de tenant (white-label) === */
.brand-logo-img{max-width:230px;max-height:84px;width:auto;height:auto;display:block;margin:0 auto;}
.brand-logo-topbar{max-height:64px;max-width:200px;width:auto;height:auto;display:block;}
/* Logo de tenant en el topbar: centrarlo en su contenedor (sin el padding-left que lo tira a la izquierda) */
.topbar .logo:has(.brand-logo-topbar){justify-content:center;padding-left:0;}
/* Panel oscuro detrás de logos blancos (ej. Bureau) */
.login-brand-block.brand-oscuro,.boot-card.brand-oscuro{background:#0f172a;border-radius:14px;padding:20px 24px;}
.boot-card.brand-oscuro{box-shadow:none;}

/* ===== Impersonación / Selector de soporte ===== */
.imp-banner{position:fixed;top:0;left:0;right:0;z-index:9999;background:#b45309;color:#fff;
  padding:8px 16px;display:flex;align-items:center;gap:12px;justify-content:center;font-size:13px;font-weight:600;}
.imp-banner-salir{background:#fff;color:#b45309;border:none;border-radius:6px;padding:4px 12px;cursor:pointer;font-weight:700;}
body.impersonando{padding-top:36px;}
.soporte-selector{position:fixed;inset:0;z-index:9998;background:#0f172a;display:flex;align-items:center;justify-content:center;padding:20px;}
.soporte-card{background:#fff;border-radius:16px;padding:28px;width:100%;max-width:440px;box-shadow:0 20px 60px rgba(0,0,0,.4);}
.soporte-title{font-size:22px;font-weight:800;}
.soporte-sub{color:#64748b;margin:4px 0 16px;}
.soporte-lista{max-height:340px;overflow:auto;margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.soporte-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;}
.soporte-item:hover{background:#f1f5f9;}
.soporte-item .rol{font-size:11px;color:#64748b;text-transform:uppercase;}
.insp-estado { display:flex; align-items:center; gap:10px; margin-bottom:12px; font-size:13px; color:#334155; }
.insp-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
.insp-slot { display:flex; flex-direction:column; gap:4px; font-size:12px; color:#475569; border:1px solid #e2e8f0; border-radius:8px; padding:8px; }
.insp-slot input[type=file] { font-size:11px; }

/* Accesos rápidos en el header de la ficha del asegurado */
.aseg-accesos { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.aseg-acceso-btn { display:inline-flex; align-items:center; gap:7px; padding:7px 12px; border:1px solid #e2e8f0; border-radius:9px; background:#fff; color:#334155; font-size:13px; font-weight:600; cursor:pointer; transition:background .15s,border-color .15s; }
.aseg-acceso-btn:hover { background:#f8fafc; border-color:#cbd5e1; }
.aseg-cnt { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; padding:0 6px; border-radius:999px; background:#dbeafe; color:var(--c-primary); font-size:12px; font-weight:700; }
.aseg-cnt.aseg-cnt-zero { background:#f1f5f9; color:#94a3b8; }

/* Banner "Mostrando solo: <cliente>" en Solicitudes/Siniestros/Cotizaciones */
.filtro-cliente-banner { display:flex; align-items:center; gap:10px; background:#eff6ff; border:1px solid #bfdbfe; border-radius:10px; padding:9px 14px; margin-bottom:14px; }
.filtro-cliente-banner .fcb-text { font-size:13px; color:var(--c-primary); font-weight:600; }
.filtro-cliente-banner .fcb-x { margin-left:auto; padding:4px 10px; border:1px solid #bfdbfe; border-radius:8px; background:#fff; color:var(--c-primary); font-size:12px; font-weight:600; cursor:pointer; }
.filtro-cliente-banner .fcb-x:hover { background:#dbeafe; }

/* Sección de documentos del cliente */
.aseg-docs-card { background:#fff; border:1px solid #e2e8f0; border-radius:14px; padding:18px 22px; margin-top:22px; }
.aseg-docs-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.aseg-docs-title { font-size:15px; font-weight:700; color:#1e293b; }
.aseg-docs-upload-btn { display:inline-flex; align-items:center; gap:6px; padding:7px 14px; border:1px solid #cbd5e1; border-radius:9px; background:#fff; color:#334155; font-size:13px; font-weight:600; cursor:pointer; }
.aseg-docs-upload-btn:hover { background:#f8fafc; }
.aseg-docs-list { display:flex; flex-direction:column; gap:8px; }
.aseg-docs-empty, .aseg-docs-loading { color:#94a3b8; font-size:13px; padding:8px 2px; }
.aseg-doc-row { display:flex; align-items:center; gap:12px; padding:10px 12px; border:1px solid #e2e8f0; border-radius:10px; }
.aseg-doc-ic { font-size:18px; }
.aseg-doc-info { flex:1; min-width:0; }
.aseg-doc-nombre { font-size:14px; color:#1e293b; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.aseg-doc-meta { font-size:12px; color:#94a3b8; }
.aseg-doc-act { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border:none; border-radius:8px; background:transparent; color:#475569; font-size:16px; cursor:pointer; text-decoration:none; }
.aseg-doc-act:hover { background:#f1f5f9; }
.aseg-doc-del:hover { background:#fee2e2; color:#b91c1c; }
.insp-msg { margin:10px 0; font-size:12.5px; color:#334155; min-height:16px; }

.doc-volver{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#64748b;background:none;border:none;cursor:pointer;padding:4px 0;margin-bottom:8px;}
.doc-volver:hover{color:var(--c-secondary);}
.doc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:.5px solid #e2e8f0;border-bottom:.5px solid #e2e8f0;margin-bottom:12px;flex-wrap:wrap;}
.doc-breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:#64748b;flex-wrap:wrap;}
.doc-crumb{color:var(--c-secondary);cursor:pointer;}
.doc-crumb:hover{text-decoration:underline;}
.doc-sep{color:#cbd5e1;}
.doc-actions{display:flex;gap:8px;}
.doc-actions .btn-pri,.doc-actions .btn-sec{font-size:13px;padding:7px 12px;border-radius:8px;cursor:pointer;border:.5px solid #cbd5e1;background:#fff;}
.doc-actions .btn-pri{border-color:var(--c-secondary);color:var(--c-primary-strong);}
.doc-list{border:.5px solid #e2e8f0;border-radius:8px;overflow:hidden;}
.doc-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:.5px solid #f1f5f9;cursor:pointer;}
.doc-row:last-child{border-bottom:none;}
.doc-row:hover{background:#f8fafc;}
.doc-ico{font-size:20px;width:24px;text-align:center;}
.doc-row-info{flex:1;min-width:0;}
.doc-name{font-size:14px;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.doc-meta{font-size:12px;color:#94a3b8;}
.doc-row-acc{display:flex;gap:6px;align-items:center;}
.doc-ico-btn{font-size:15px;color:#64748b;cursor:pointer;padding:2px 4px;border-radius:6px;}
.doc-ico-btn:hover{background:#e2e8f0;}
.doc-empty{padding:28px 14px;text-align:center;color:#94a3b8;font-size:13px;}
.doc-progress{height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden;margin-bottom:10px;}
#doc-progress-bar{height:100%;width:0;background:var(--c-secondary);transition:width .15s;}

/* ===== Campañas Comerciales (js/campanas.js) ===== */
.camp-vacio { color:#64748b; font-size:13.5px; padding:24px; text-align:center; background:#fff; border:1px solid #e2e8f0; border-radius:12px; }
.camp-seccion { font-size:13px; font-weight:600; color:#64748b; margin:18px 0 8px; text-transform:uppercase; letter-spacing:.4px; }
.camp-kpis { display:flex; gap:12px; margin-bottom:14px; }
.camp-kpi { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:10px 18px; text-align:center; }
.camp-kpi-num { font-size:22px; font-weight:700; color:#0f172a; }
.camp-kpi-lbl { font-size:11.5px; color:#64748b; }
.camp-card { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:16px 18px; margin-bottom:14px; }
.camp-card-cerrada { opacity:.85; }
.camp-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:8px; }
.camp-card-titulo { font-size:15px; font-weight:600; color:#0f172a; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.camp-card-sub { font-size:12.5px; color:#64748b; margin-top:2px; }
.camp-card-acciones { display:flex; gap:6px; flex-shrink:0; }
.camp-btn-mini { font-size:11.5px; padding:4px 10px; }
.camp-badge { font-size:11px; padding:2px 10px; border-radius:999px; font-weight:600; white-space:nowrap; }
.camp-badge-activa { background:#dcfce7; color:#166534; }
.camp-badge-borrador { background:#fef3c7; color:#92400e; }
.camp-badge-fin { background:#f1f5f9; color:#475569; }
.camp-badge-dias { background:#e0f2fe; color:#075985; flex-shrink:0; }
.camp-prog-num { font-size:28px; font-weight:700; color:#0f172a; margin-top:6px; }
.camp-prog-de { font-size:13px; font-weight:400; color:#94a3b8; margin-left:4px; }
.camp-bar { position:relative; height:10px; background:#f1f5f9; border-radius:999px; margin:8px 0 6px; }
.camp-bar-fill { height:100%; background:linear-gradient(90deg,#22c55e,#16a34a); border-radius:999px; transition:width .4s; }
.camp-bar-full { background:linear-gradient(90deg,#f59e0b,#d97706); }
.camp-bar-mark { position:absolute; top:-4px; width:2px; height:18px; background:#94a3b8; border-radius:1px; }
.camp-prog-texto { font-size:13px; color:#475569; }
.camp-prog-texto b { color:#0f172a; }
.camp-rank { margin-top:12px; display:grid; gap:5px; }
.camp-rank-row { display:flex; align-items:center; gap:10px; font-size:12.5px; }
.camp-rank-propio { background:#eff6ff; border-radius:6px; padding:2px 6px; margin:0 -6px; font-weight:600; }
.camp-rank-pos-n { width:16px; text-align:center; color:#94a3b8; font-weight:600; }
.camp-rank-nombre { flex:0 0 150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.camp-rank-bar { flex:1; height:7px; background:#f1f5f9; border-radius:999px; overflow:hidden; }
.camp-rank-fill { height:100%; background:#60a5fa; border-radius:999px; }
.camp-rank-n { min-width:26px; text-align:right; color:#475569; font-weight:600; }
.camp-rank-premio { min-width:90px; text-align:right; color:#166534; font-size:12px; }
.camp-rank-pago { min-width:120px; text-align:right; }
.camp-rank-pos { font-size:13px; color:#475569; margin-top:10px; }
.camp-muted { color:#94a3b8; font-size:12.5px; }
.camp-builder { border-color:#bfdbfe; }
.camp-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 14px; margin:10px 0; }
.camp-form-grid-3 { grid-template-columns:1fr 1fr 1fr; }
.camp-form-grid label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:#475569; font-weight:600; }
.camp-form-grid input, .camp-form-grid select { font-size:13px; padding:7px 10px; border:1px solid #cbd5e1; border-radius:8px; }
.camp-fieldset { border:1px solid #e2e8f0; border-radius:10px; padding:0 12px 10px; overflow:hidden; background:#fff; }
.camp-fieldset-t { font-size:12px; font-weight:600; color:#334155; padding:9px 12px; background:#f8fafc; border-bottom:1px solid #e2e8f0; margin:0 -12px 8px; }
.camp-fieldset-t label { display:flex !important; flex-direction:row !important; align-items:center; gap:7px; cursor:pointer; }
.camp-checks { display:flex; flex-direction:column; gap:2px; max-height:170px; overflow-y:auto; font-size:12.5px; }
/* ⚠ flex-direction:row explícito: sin esto hereda el column de .camp-form-grid label
   y los checkbox quedaban centrados ARRIBA del texto (bug visto en prod 2-jul). */
.camp-checks label { display:flex !important; flex-direction:row !important; align-items:center; justify-content:flex-start; gap:7px; font-weight:400; color:#334155; padding:4px 6px; border-radius:6px; cursor:pointer; }
.camp-checks label:hover { background:#f1f5f9; }
.camp-sec-t { font-size:12px; font-weight:700; color:#475569; text-transform:uppercase; letter-spacing:.5px; margin:16px 0 2px; padding-bottom:5px; border-bottom:1px solid #e2e8f0; }
.camp-esc-row { display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:12.5px; color:#64748b; }
.camp-esc-row input { width:110px; font-size:13px; padding:6px 8px; border:1px solid #cbd5e1; border-radius:8px; }
.camp-preview { font-size:12.5px; color:#075985; background:#f0f9ff; border-radius:8px; padding:8px 12px; margin:10px 0; min-height:18px; }
.camp-preview:empty { display:none; }
.camp-error { color:#b91c1c; }
.camp-builder-botones { display:flex; gap:8px; margin-top:4px; }
.camp-check-inline { display:flex; align-items:flex-start; gap:9px; font-size:12.5px; color:#334155; margin:2px 0 10px; background:#fffbeb; border:1px solid #fde68a; border-radius:10px; padding:9px 13px; cursor:pointer; }
.camp-check-inline input { margin-top:2px; flex-shrink:0; }
.camp-check-inline b { color:#92400e; }
.camp-card-click { cursor:pointer; transition:border-color .15s, box-shadow .15s; }
.camp-card-click:hover { border-color:#93c5fd; box-shadow:0 1px 6px rgba(var(--c-secondary-rgb),.12); }
/* --- card v2 (más comercial) --- */
.camp-card-v2 { position:relative; overflow:hidden; padding-top:20px; }
.camp-card-v2::before { content:''; position:absolute; top:0; left:0; right:0; height:4px; background:linear-gradient(90deg,#f59e0b,#dc2626); }
/* Layout GEMELO: el bloque de cabecera (chips + título + descripción) tiene ALTURA FIJA,
   así el título arranca en la misma línea y la barra/callout/ranking quedan a la misma
   altura en TODAS las cards del grid. Cambia el contenido, no la geometría. */
.camp-head-left { flex:1; min-width:0; height:142px; overflow:hidden; }
.camp-titulo-xl { font-size:17px; margin-top:8px; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.camp-desc { margin-top:4px; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.camp-bar-ghost { visibility:hidden; }
.camp-callout { min-height:40px; box-sizing:border-box; }
.camp-head-der { display:flex; flex-direction:column; align-items:flex-end; gap:8px; flex-shrink:0; }
.camp-chips { display:flex; flex-wrap:wrap; gap:6px; }
.camp-chips + .camp-chips { margin-top:6px; }
.camp-chip { font-size:11px; font-weight:600; padding:3px 10px; border-radius:999px; background:#eff6ff; color:var(--c-primary-strong); white-space:nowrap; }
.camp-chip-cia { background:#dbeafe; color:var(--c-primary-700); }
.camp-chip-soft { background:#f1f5f9; color:#64748b; font-weight:500; }
.camp-premio-box { display:flex; align-items:center; gap:9px; background:linear-gradient(135deg,#fffbeb,#fef3c7); border:1px solid #fde68a; border-radius:12px; padding:8px 14px; }
.camp-premio-tr { font-size:22px; line-height:1; }
.camp-premio-monto { font-size:16px; font-weight:700; color:#92400e; white-space:nowrap; }
.camp-premio-sub { font-size:10.5px; color:#b45309; }
.camp-prog-head { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-top:8px; }
.camp-pct { font-size:12px; font-weight:700; color:#0369a1; background:#e0f2fe; padding:2px 10px; border-radius:999px; }
.camp-pct-full { color:#92400e; background:#fef3c7; }
.camp-bar-xl { height:14px; margin-top:10px; }
.camp-bar-xl .camp-bar-mark { top:-3px; height:20px; }
.camp-bar-labels { position:relative; height:15px; margin-top:2px; font-size:10.5px; color:#94a3b8; font-weight:600; }
.camp-bar-labels span { position:absolute; transform:translateX(-50%); }
.camp-callout { display:flex; align-items:center; gap:9px; background:#eff6ff; border:1px solid #dbeafe; border-radius:10px; padding:9px 13px; margin-top:10px; font-size:13.5px; color:var(--c-primary); }
.camp-callout b { color:var(--c-primary-700); }
.camp-callout-ok { background:#f0fdf4; border-color:#bbf7d0; color:#166534; }
.camp-callout-ok b { color:#14532d; }
.camp-callout-ico { font-size:17px; line-height:1; flex-shrink:0; }
.camp-callout-txt { flex:1; min-width:0; }
.camp-callout-pos { flex-shrink:0; white-space:nowrap; font-size:12.5px; color:var(--c-primary-700); background:#dbeafe; border-radius:999px; padding:3px 11px; }
.camp-callout-ok .camp-callout-pos { color:#14532d; background:#bbf7d0; }
.camp-rank-avatar { width:22px; height:22px; border-radius:50%; color:#fff; font-size:9.5px; font-weight:700; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
/* align-items default (stretch): las cards de una misma fila quedan con el MISMO alto. */
.camp-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(430px, 1fr)); gap:14px; margin-bottom:14px; }
.camp-grid .camp-card { margin-bottom:0; display:flex; flex-direction:column; }
.camp-grid .camp-card .camp-rank, .camp-grid .camp-card .camp-rank-pos { margin-top:auto; padding-top:12px; }
/* Campañas embebidas en el dashboard: más compactas que en la vista de gestión —
   sin la descripción, header al alto natural (el grid iguala las alturas) y menos aire
   vertical (paddings, número de progreso y márgenes achicados). */
/* Home: la sección se resalta como una "franja premiada" — panel ámbar suave con borde
   cálido que la despega de la grilla de KPIs de abajo. Las cards de adentro no cambian. */
#dash-campanas { margin-bottom:14px; background:linear-gradient(180deg,#fffbeb,#fff7ed); border:1.5px solid #fcd34d; border-radius:16px; padding:14px 16px 16px; }
.dash-camp-hdr { display:flex; align-items:center; gap:9px; margin-bottom:11px; }
.dash-camp-ico { display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:9px; background:#f59e0b; font-size:16px; line-height:1; flex-shrink:0; }
.dash-camp-t { font-size:16px; font-weight:600; color:#78350f; }
.dash-camp-count { margin-left:auto; font-size:11.5px; font-weight:600; color:#b45309; background:#fef3c7; padding:3px 10px; border-radius:999px; white-space:nowrap; }
#dash-campanas .camp-grid { margin-bottom:0; }   /* evita el doble margen bajo las cards */
#dash-campanas .camp-desc { display:none; }
#dash-campanas .camp-head-left { height:auto; }
#dash-campanas .camp-card { padding:12px 16px; }
#dash-campanas .camp-card-v2 { padding-top:14px; }
#dash-campanas .camp-prog-head { margin-top:4px; }
#dash-campanas .camp-prog-num { font-size:22px; margin-top:2px; }
#dash-campanas .camp-bar-xl { height:11px; margin:6px 0 4px; }
#dash-campanas .camp-bar-labels { height:13px; margin-bottom:8px; }
#dash-campanas .camp-bar-labels:empty { height:0; margin:0; }   /* meta-fija: sin escalones → sin hueco */
#dash-campanas .camp-callout { min-height:0; margin-top:8px; padding:7px 12px; font-size:13px; }
/* El callout (caja azul) va SIEMPRE pegado abajo cuando es el último elemento (ranking
   oculto/anónimo): el grid iguala la altura de las cards y margin-top:auto lo empuja al
   fondo → queda alineado entre una card con etiquetas de escalones y otra sin ellas. */
#dash-campanas .camp-callout:last-child { margin-top:auto; }
.camp-chip-logo { width:15px; height:15px; object-fit:contain; border-radius:3px; vertical-align:-3px; margin-right:5px; }
.camp-chip-cia { display:inline-flex; align-items:center; }
.camp-chip-ramo { background:#f1f5f9; color:#475569; }
.camp-chip-ramo-auto { background:#dbeafe; color:var(--c-primary-strong); }
.camp-chip-ramo-hogar { background:#dcfce7; color:#166534; }
.camp-chip-ramo-comercio { background:#fee2e2; color:#991b1b; }
.camp-chip-ramo-consorcio { background:#fef3c7; color:#92400e; }

/* ====== Vista Indicadores (jul 2026) ====== */
.ind-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
@media (max-width:1100px){ .ind-grid { grid-template-columns:1fr; } }
.ind-sub { color:#94a3b8; font-weight:400; font-size:12px; margin-left:6px; }
.ind-total { margin-top:12px; padding-top:10px; border-top:1px solid #f1f5f9; font-size:12.5px; color:#475569; }
.ind-duo { display:flex; flex-direction:column; gap:3px; }
.ind-duo .bar-track { height:7px; }
.ind-fill-alta { background:linear-gradient(90deg,#16a34a,#4ade80); }
.ind-fill-baja { background:linear-gradient(90deg,#dc2626,#f87171); }
.ind-cargando { padding:20px 0; color:#94a3b8; font-size:13px; text-align:center; }
.ind-serie-title { margin:16px 0 10px; font-size:12px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.4px; }
.ind-grid .bar-label { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* Alta de póliza por PDF (js/polizas-captar.js) — modal sobre el patrón .sol-modal-ov/.sol-modal */
/* max-width:none pisa el `.sol-modal { max-width:520px }` de la sección Solicitudes (~línea 1750). */
.pcap-modal { width:min(680px,94vw); max-width:none; max-height:88vh; overflow-y:auto; }
.captar-prefill { border-color:#16a34a !important; background:#f0fdf4; }
.captar-dudoso  { border-color:#d97706 !important; background:#fffbeb; }
.pcap-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 14px; }
.pcap-grid label { display:flex; flex-direction:column; font-size:12px; color:#475569; gap:4px; }
.pcap-leyenda { font-size:12px; color:#64748b; margin-bottom:10px; }
.pcap-dot-ok { color:#16a34a; } .pcap-dot-dud { color:#d97706; }
.pcap-errores { color:#991b1b; background:#fee2e2; border-radius:8px; padding:8px 10px; margin-top:10px; font-size:13px; }
