:root {
    --navy: #062b5f;
    --blue: #0000cc;
    --orange: #f47521;
    --bg: #f4f7fb;
    --text: #1f2937;
    --muted: #64748b;
    --card: #ffffff;
    --border: rgba(6, 43, 95, 0.12);
}

* { box-sizing: border-box; }

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

a { color: var(--blue); }

.auth-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.auth-shell { width: 100%; max-width: 420px; }

.login-card, .card {
    background: var(--card);
    border: 1px solid var(--border);
    border-radius: 24px;
    box-shadow: 0 20px 50px rgba(6, 43, 95, 0.10);
}

.login-card { padding: 32px; }

.brand-mark {
    width: 56px;
    height: 56px;
    border-radius: 18px;
    background: var(--navy);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    margin-bottom: 18px;
}
.brand-mark.small { width: 42px; height: 42px; border-radius: 14px; margin-bottom: 0; }

h1, h2 { color: var(--navy); margin-top: 0; }
p { color: var(--muted); line-height: 1.55; }

.form-stack { display: grid; gap: 16px; }
label { font-weight: 700; color: var(--navy); display: grid; gap: 8px; }
input {
    width: 100%;
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 13px 14px;
    font-size: 16px;
}

.btn-primary, .btn-secondary, .btn-link {
    border: 0;
    border-radius: 14px;
    padding: 13px 18px;
    cursor: pointer;
    font-weight: 800;
}

.btn-primary, .btn-secondary {
    display: inline-block;
    text-align: center;
    text-decoration: none;
}

.btn-primary { background: var(--orange); color: #ffffff; }
.btn-secondary { background: rgba(6, 43, 95, 0.08); color: var(--navy); }
.btn-link { background: transparent; color: var(--navy); }

.alert {
    padding: 12px 14px;
    border-radius: 14px;
    margin-bottom: 16px;
}
.alert-error { background: #fee2e2; color: #991b1b; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 260px minmax(0, 1fr); }
.sidebar { background: var(--navy); color: white; padding: 22px; }
.sidebar-brand { display: flex; gap: 12px; align-items: center; margin-bottom: 28px; }
.sidebar-brand strong { display: block; }
.sidebar-brand span { display: block; color: rgba(255,255,255,.72); font-size: 13px; margin-top: 3px; }
.sidebar-nav { display: grid; gap: 8px; }
.sidebar-nav a { color: rgba(255,255,255,.88); text-decoration: none; padding: 12px 14px; border-radius: 14px; font-weight: 700; }
.sidebar-nav a:hover { background: rgba(255,255,255,.10); color: white; }
.main-shell { min-width: 0; }

.topbar {
    height: 70px;
    background: white;
    border-bottom: 1px solid var(--border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px;
}
.topbar span { display:block; color: var(--muted); font-size: 13px; margin-top: 3px; }

.topbar-user {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.topbar-user-avatar {
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    display: block;
    object-fit: cover;
    object-position: center;
    border-radius: 10px;
    border: 1px solid var(--border);
    background: #f8fafc;
}

.topbar-user-copy {
    min-width: 0;
}

.topbar-user-copy strong {
    display: block;
}

.container { width: min(1180px, calc(100% - 32px)); margin: 32px auto; }
.page-header { margin-bottom: 24px; }
.eyebrow { color: var(--orange); font-weight: 900; letter-spacing: .08em; text-transform: uppercase; font-size: 12px; margin: 0 0 8px; }
.grid-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.card { padding: 24px; }
.card small { color: var(--muted); }
.mt-24 { margin-top: 24px; }
.quick-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.table-card { padding: 24px; overflow: hidden; }
.table-responsive { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; min-width: 760px; }
.data-table th, .data-table td { padding: 14px 16px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.data-table th { background: #f8fafc; color: var(--navy); font-size: 13px; text-transform: uppercase; letter-spacing: .04em; }
.data-table tr:last-child td { border-bottom: 0; }
.badge { display: inline-flex; align-items: center; padding: 5px 9px; border-radius: 999px; background: rgba(0, 0, 204, 0.08); color: var(--blue); font-weight: 800; font-size: 12px; }
.status { display: inline-flex; align-items: center; padding: 5px 9px; border-radius: 999px; font-size: 12px; font-weight: 800; background: #e2e8f0; color: #334155; }
.status-activo, .status-activa { background: #dcfce7; color: #166534; }
.status-inactivo, .status-inactiva, .status-bloqueado { background: #fee2e2; color: #991b1b; }
.empty-cell { text-align: center; color: var(--muted); padding: 32px !important; }
code { background: #f1f5f9; color: #0f172a; border-radius: 8px; padding: 3px 6px; }

@media (max-width: 960px) {
    .app-shell { grid-template-columns: 1fr; }
    .sidebar { position: static; }
    .sidebar-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .grid-cards { grid-template-columns: 1fr; }
    .topbar { padding: 0 16px; }
}

/* Sprint 2 — Preclientes de landing */
.notice-card {
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    padding: 18px 20px;
    margin-bottom: 18px;
    background: #ffffff;
    box-shadow: 0 12px 28px rgba(0, 31, 69, 0.06);
    color: #25364d;
}
.notice-info { border-left: 5px solid #f47521; }
.notice-scope { border-left: 5px solid #0000cc; background: #ffffff; }
.filter-card { margin-bottom: 18px; }
.filter-heading { margin-bottom: 16px; }
.filter-heading h2 { margin-bottom: 4px; }
.filter-heading p { margin: 0; }
.filter-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}
.filter-grid-advanced {
    grid-template-columns: repeat(4, minmax(170px, 1fr));
}
.filter-grid label {
    display: flex;
    flex-direction: column;
    gap: 6px;
    color: #31445e;
    font-size: .88rem;
    font-weight: 700;
}
.filter-grid input {
    width: 100%;
    border: 1px solid rgba(6, 43, 95, 0.14);
    border-radius: 12px;
    padding: 10px 12px;
    font: inherit;
    color: #16243a;
    background: #ffffff;
}
.filter-grid input:focus {
    outline: none;
    border-color: rgba(244, 117, 33, 0.75);
    box-shadow: 0 0 0 3px rgba(244, 117, 33, 0.14);
}
.filter-actions {
    display: flex;
    gap: 10px;
    align-items: center;
}
.filter-actions-advanced {
    align-self: end;
}
.btn-primary,
.btn-secondary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0 16px;
    border-radius: 12px;
    font-weight: 800;
    text-decoration: none;
    border: 1px solid transparent;
    cursor: pointer;
}
.btn-primary { background: #f47521; color: #ffffff; }
.btn-secondary { background: #ffffff; color: #062b5f; border-color: rgba(6, 43, 95, 0.14); }
.table-toolbar {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: flex-start;
    margin-bottom: 14px;
}
.table-toolbar h2 { margin: 0 0 4px; color: #062b5f; }
.table-toolbar p { margin: 0; color: #64748b; }
.badge-preclient { background: rgba(244, 117, 33, 0.13); color: #b84b00; }
.badge-linked { background: rgba(22, 163, 74, 0.12); color: #166534; }
.badge-soft { background: rgba(6, 43, 95, 0.08); color: #062b5f; }
.badge-assignment { background: rgba(6, 43, 95, 0.08); color: #062b5f; }
.data-table small { color: #64748b; font-size: .78rem; }
.leads-table { min-width: 1280px; }
.leads-table-advanced { min-width: 1480px; }
@media (max-width: 1100px) {
    .filter-grid,
    .filter-grid-advanced { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    .filter-grid,
    .filter-grid-advanced { grid-template-columns: 1fr; }
    .table-toolbar { flex-direction: column; }
}

.notice-warning {
    background: rgba(244, 117, 33, 0.08);
    border-color: rgba(244, 117, 33, 0.24);
}
.badge-duplicate {
    background: rgba(220, 38, 38, 0.12);
    color: #991b1b;
}
.badge-ok {
    background: rgba(22, 163, 74, 0.12);
    color: #166534;
}


/* Sprint 2 punto 29 — Detalle de precliente */
.btn-small {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    padding: 0 10px;
    border-radius: 10px;
    background: #ffffff;
    color: #062b5f;
    border: 1px solid rgba(6, 43, 95, 0.16);
    font-size: .82rem;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}
.btn-small:hover { border-color: #f47521; color: #b84b00; }
.detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 18px;
}
.detail-card { margin-bottom: 18px; }
.detail-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}
.detail-card-header h2 { margin: 0; color: #062b5f; }
.detail-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin: 0;
}
.detail-list div {
    display: grid;
    grid-template-columns: 180px minmax(0, 1fr);
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid rgba(6, 43, 95, 0.08);
}
.detail-list dt {
    color: #64748b;
    font-weight: 800;
}
.detail-list dd {
    margin: 0;
    color: #16243a;
    overflow-wrap: anywhere;
}
.detail-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}
.compact-table { min-width: 720px; }
.action-placeholder-card button:disabled {
    opacity: .65;
    cursor: not-allowed;
}
@media (max-width: 900px) {
    .detail-grid,
    .detail-columns { grid-template-columns: 1fr; }
    .detail-list div { grid-template-columns: 1fr; }
}


/* Sprint 2 punto 30 */
.action-cell {
    display: grid;
    gap: 8px;
    min-width: 150px;
}
.btn-small {
    display: inline-block;
    border-radius: 12px;
    padding: 8px 10px;
    font-size: 12px;
    font-weight: 900;
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
}
.header-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}
.academy-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.academy-form-grid select {
    width: 100%;
    border: 1px solid var(--border);
    border-radius: 14px;
    padding: 13px 14px;
    font-size: 16px;
    background: #fff;
}
.academy-form-grid input[readonly],
.academy-form-grid input:disabled,
.academy-form-grid select:disabled {
    background: #f8fafc;
    color: #475569;
}
.academy-form-grid small {
    color: var(--muted);
    font-weight: 500;
}
@media (max-width: 720px) {
    .academy-form-grid { grid-template-columns: 1fr; }
}


/* Sprint 2 Punto 31 — Bloqueo de asignaciones desde preclientes */
.notice-lock {
    border-left: 5px solid #f47521;
    background: #fff7ed;
}

.blocked-actions-card {
    border: 1px solid rgba(244, 117, 33, 0.22);
}

.blocked-actions-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
}

.btn-disabled {
    border: 1px solid rgba(100, 116, 139, 0.25);
    border-radius: 10px;
    background: #f1f5f9;
    color: #64748b;
    font-weight: 800;
    padding: 9px 12px;
    cursor: not-allowed;
}

.badge-lock {
    background: #fff7ed;
    color: #c2410c;
    border: 1px solid rgba(244, 117, 33, 0.28);
}

.blocked-action-note {
    display: block;
    margin-top: 8px;
    font-size: 0.78rem;
    color: #64748b;
    line-height: 1.25;
}

/* Sprint 2 Punto 33 — Conversión funcional de precliente */
.form-alert {
    margin: 0 0 18px;
    padding: 14px 16px;
    border-radius: 14px;
    font-weight: 750;
    line-height: 1.45;
}

.form-alert-error {
    border: 1px solid rgba(220, 38, 38, 0.22);
    background: #fef2f2;
    color: #991b1b;
}

.form-alert-success {
    border: 1px solid rgba(22, 163, 74, 0.22);
    background: #f0fdf4;
    color: #166534;
}

.success-card {
    border: 1px solid rgba(22, 163, 74, 0.22);
    background: #f8fff9;
}

.form-full {
    grid-column: 1 / -1;
}

.academy-form-grid textarea {
    width: 100%;
    border: 1px solid rgba(15, 23, 42, 0.14);
    border-radius: 14px;
    padding: 13px 14px;
    font-size: 16px;
    background: #fff;
    resize: vertical;
}

.checkbox-line {
    display: flex !important;
    align-items: flex-start;
    gap: 10px;
    font-weight: 650;
}

.checkbox-line input[type="checkbox"] {
    width: auto;
    margin-top: 4px;
}

.form-actions-row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-top: 4px;
}

/* Sprint 2 - Conversión: campos de asignación bloqueados */
.input-readonly-display {
    background: #f4f7fb !important;
    border-color: rgba(6, 43, 95, 0.14) !important;
    color: #1f2d3d !important;
    cursor: not-allowed;
}

/* Sprint 2 — Fix visual de columna Acciones en listado de preclientes */
.action-cell {
    display: grid;
    gap: 8px;
    min-width: 180px;
    width: 180px;
    align-content: start;
}

.action-cell .btn-small,
.action-cell .badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    text-align: center;
}

.action-cell .btn-small {
    min-height: 38px;
    padding: 8px 12px;
    white-space: nowrap;
}

.action-cell .blocked-action-note {
    display: block;
    width: 100%;
    max-width: 100%;
    margin-top: 0;
    font-size: 0.76rem;
    line-height: 1.3;
    color: #64748b;
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
    hyphens: auto;
}


/* Sprint 2 — Fusionar Nombre + Celular en una sola columna del listado de preclientes */
.lead-contact-cell strong {
    display: block;
    margin-bottom: 2px;
    color: #0f172a;
}

.lead-contact-cell .lead-phone-line {
    display: inline-block;
    margin-top: 6px;
    color: #062b5f;
    font-weight: 850;
    white-space: nowrap;
}

.leads-table-advanced th:nth-child(1),
.leads-table-advanced td:nth-child(1) {
    width: 8%;
}

.leads-table-advanced th:nth-child(2),
.leads-table-advanced td:nth-child(2) {
    width: 32%;
}

.leads-table-advanced th:nth-child(3),
.leads-table-advanced td:nth-child(3) {
    width: 31%;
}

.leads-table-advanced th:nth-child(4),
.leads-table-advanced td:nth-child(4) {
    width: 29%;
}

/* Sprint 2 — Ajuste final: Contacto y Origen más angostos, Acciones más amplia */
.leads-table,
.leads-table-advanced {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
}

.leads-table-advanced th,
.leads-table-advanced td {
    vertical-align: top;
}

.leads-table-advanced th:nth-child(1),
.leads-table-advanced td:nth-child(1) {
    width: 7%;
}

.leads-table-advanced th:nth-child(2),
.leads-table-advanced td:nth-child(2) {
    width: 24%;
}

.leads-table-advanced th:nth-child(3),
.leads-table-advanced td:nth-child(3) {
    width: 24%;
}

.leads-table-advanced th:nth-child(4),
.leads-table-advanced td:nth-child(4) {
    width: 45%;
}

.lead-contact-cell,
.leads-table-advanced td:nth-child(3) {
    font-size: 0.92rem;
    line-height: 1.28;
}

.action-cell {
    min-width: 0;
    width: 100%;
    max-width: 100%;
}

.action-cell .btn-small {
    width: auto;
    min-width: 132px;
    max-width: 220px;
    justify-self: start;
}

.action-cell .blocked-action-note {
    max-width: 260px;
}

/* Sprint 3 — Ficha Academy base operativa (S3-001 a S3-005) */
.person-hero-card {
    border: 1px solid rgba(6, 43, 95, 0.10);
    background: linear-gradient(135deg, #ffffff 0%, #f8fbff 58%, #fff7ed 100%);
    margin-bottom: 18px;
}

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

.person-hero-main h2 {
    margin: 4px 0 6px;
    color: #062b5f;
    font-size: 1.7rem;
    line-height: 1.12;
}

.person-hero-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

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

.person-kpi-card {
    background: #ffffff;
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 16px;
    padding: 14px 16px;
    box-shadow: 0 10px 22px rgba(0, 31, 69, 0.05);
}

.person-kpi-card span {
    display: block;
    color: #64748b;
    font-size: 0.78rem;
    font-weight: 850;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.person-kpi-card strong {
    display: block;
    margin-top: 4px;
    color: #062b5f;
    font-size: 1.45rem;
    font-weight: 950;
}

.person-operational-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 18px;
}

.person-summary-card {
    margin-bottom: 0;
}

.detail-list-compact div {
    grid-template-columns: 140px minmax(0, 1fr);
    gap: 10px;
    padding: 8px 0;
}

.badge-ready {
    background: rgba(22, 163, 74, 0.12);
    color: #166534;
    border: 1px solid rgba(22, 163, 74, 0.18);
}

.badge-warning {
    background: #fff7ed;
    color: #c2410c;
    border: 1px solid rgba(244, 117, 33, 0.28);
}

.person-action-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 14px 0 16px;
}

.person-action-card {
    display: block;
    border-radius: 16px;
    padding: 16px;
    border: 1px solid rgba(6, 43, 95, 0.10);
    text-decoration: none;
    min-height: 118px;
    background: #ffffff;
}

.person-action-card strong {
    display: block;
    color: #062b5f;
    font-size: 1rem;
    font-weight: 950;
    margin-bottom: 8px;
}

.person-action-card span {
    display: block;
    color: #64748b;
    font-size: 0.84rem;
    line-height: 1.35;
}

.person-action-card.action-enabled {
    border-color: rgba(244, 117, 33, 0.38);
    box-shadow: 0 12px 26px rgba(244, 117, 33, 0.08);
}

.person-action-card.action-enabled:hover {
    border-color: #f47521;
    transform: translateY(-1px);
}

.person-action-card.action-prepared {
    background: #f8fafc;
}

.person-action-card.action-blocked {
    background: #fff7ed;
    border-color: rgba(244, 117, 33, 0.24);
}

.person-action-card.action-disabled {
    background: #f1f5f9;
    opacity: 0.78;
}

.person-readiness-alert {
    margin-top: 12px;
}

.future-module-card {
    min-height: 150px;
}

@media (max-width: 1100px) {
    .person-operational-grid,
    .person-action-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

@media (max-width: 720px) {
    .person-hero-main {
        flex-direction: column;
    }

    .person-hero-badges {
        justify-content: flex-start;
    }

    .person-operational-grid,
    .person-action-grid,
    .person-kpi-grid {
        grid-template-columns: 1fr;
    }

    .detail-list-compact div {
        grid-template-columns: 1fr;
    }
}


/* Sprint 3 — S3-006 a S3-008: notas internas y cambio rápido de estatus */
.person-inline-form,
.person-note-form {
    display: grid;
    gap: 14px;
}

.person-inline-form {
    grid-template-columns: minmax(180px, 240px) minmax(260px, 1fr) auto;
    align-items: end;
}

.person-inline-form label,
.person-note-form label {
    display: grid;
    gap: 7px;
    color: #31445e;
    font-size: 0.88rem;
    font-weight: 800;
}

.person-inline-form select,
.person-inline-form input,
.person-note-form select,
.person-note-form textarea {
    width: 100%;
    border: 1px solid rgba(6, 43, 95, 0.14);
    border-radius: 12px;
    padding: 10px 12px;
    font: inherit;
    color: #16243a;
    background: #ffffff;
}

.person-note-form textarea {
    resize: vertical;
    min-height: 104px;
}

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

.person-notes-list {
    margin-top: 16px;
}

@media (max-width: 900px) {
    .person-inline-form,
    .person-note-form-row {
        grid-template-columns: 1fr;
    }

    .person-inline-form button {
        width: 100%;
    }
}


/* Sprint 3 S3-009 a S3-012 — permisos y readiness detallado de ficha Academy */
.person-readiness-checks {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 16px;
}

.person-readiness-check {
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 16px;
    padding: 12px 14px;
    background: #ffffff;
}

.person-readiness-check p {
    margin: 8px 0 0;
    color: #475569;
    line-height: 1.35;
    font-size: 0.88rem;
}

.person-readiness-check.check-ok {
    border-color: rgba(22, 163, 74, 0.22);
    background: #f0fdf4;
}

.person-readiness-check.check-error {
    border-color: rgba(244, 117, 33, 0.26);
    background: #fff7ed;
}

@media (max-width: 900px) {
    .person-readiness-checks {
        grid-template-columns: 1fr;
    }
}


/* Sprint 3 S3-013 a S3-016 — acciones operativas preparadas desde ficha Academy */
.person-action-grid-s3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.person-action-card .action-step {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    margin: 0 0 10px;
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(6, 43, 95, 0.08);
    color: #062b5f;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.person-action-card.action-prepared {
    border-color: rgba(22, 163, 74, 0.24);
    background: #f0fdf4;
}

.person-action-card.action-prepared .action-step {
    background: rgba(22, 163, 74, 0.12);
    color: #166534;
}

.person-action-card.action-blocked .action-step {
    background: rgba(244, 117, 33, 0.14);
    color: #c2410c;
}

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

.module-readiness-list {
    margin: 12px 0 0;
    padding-left: 18px;
    color: #475569;
    font-size: 0.88rem;
    line-height: 1.45;
}

.module-readiness-list li + li {
    margin-top: 4px;
}

.future-module-card code {
    color: #062b5f;
    background: rgba(6, 43, 95, 0.06);
    border-radius: 6px;
    padding: 1px 5px;
}

@media (max-width: 1100px) {
    .person-action-grid-s3,
    .operational-module-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .person-action-grid-s3,
    .operational-module-grid {
        grid-template-columns: 1fr;
    }
}


/* Sprint 3 S3-017 — Dashboard mínimo por persona */
.person-dashboard-card {
    margin-bottom: 18px;
    border-color: rgba(6, 43, 95, 0.12);
}

.person-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.person-dashboard-tile {
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    padding: 16px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
}

.person-dashboard-tile span {
    display: block;
    color: #f47521;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 8px;
}

.person-dashboard-tile strong {
    display: block;
    color: #062b5f;
    font-size: 1.1rem;
    line-height: 1.25;
    margin-bottom: 6px;
}

.person-dashboard-tile small {
    color: #64748b;
    line-height: 1.35;
}

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

/* Sprint 3 S3-018 — Bitácora de acciones en ficha */
.person-audit-table th:nth-child(1),
.person-audit-table td:nth-child(1) { width: 18%; }
.person-audit-table th:nth-child(2),
.person-audit-table td:nth-child(2) { width: 22%; }
.person-audit-table th:nth-child(3),
.person-audit-table td:nth-child(3) { width: 38%; }
.person-audit-table th:nth-child(4),
.person-audit-table td:nth-child(4) { width: 22%; }

@media (max-width: 1100px) {
    .person-dashboard-grid,
    .person-kpi-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .person-dashboard-grid,
    .person-kpi-grid {
        grid-template-columns: 1fr;
    }
}


/* Sprint 4 S4-001 a S4-003 — Módulo y catálogo base de cursos */
.course-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 18px;
}

.course-summary-card {
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 18px;
}

.course-summary-card span {
    display: block;
    color: #f47521;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 8px;
}

.course-summary-card strong {
    display: block;
    color: #062b5f;
    font-size: 1.65rem;
    line-height: 1.1;
    margin-bottom: 6px;
}

.course-summary-card small {
    color: #64748b;
    line-height: 1.35;
}

.course-table th:nth-child(1),
.course-table td:nth-child(1) { width: 28%; }

.course-table th:nth-child(4),
.course-table td:nth-child(4) { width: 18%; }

.mini-pill {
    display: inline-flex;
    align-items: center;
    margin: 2px 4px 2px 0;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 850;
    white-space: nowrap;
}

.mini-pill.pill-ok {
    background: #dcfce7;
    color: #166534;
}

.mini-pill.pill-muted {
    background: #f1f5f9;
    color: #64748b;
}

.btn-small {
    padding: 7px 10px;
    font-size: 0.82rem;
}

.course-form .two-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.course-rules-box {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0;
    padding: 16px;
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    background: #f8fafc;
}

.checkbox-line {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 850;
    color: #062b5f;
}

.checkbox-line input {
    width: 18px;
    height: 18px;
}

@media (max-width: 900px) {
    .course-summary-grid,
    .course-form .two-columns,
    .course-rules-box {
        grid-template-columns: 1fr;
    }
}


/* Sprint 4 S4-004 a S4-006 — Generaciones y asignaciones */
.generation-table th:nth-child(1),
.generation-table td:nth-child(1) { width: 22%; }

.generation-table th:nth-child(2),
.generation-table td:nth-child(2) { width: 24%; }

.sprint4-course-assignment-card {
    margin-top: 20px;
}

.readiness-warning {
    border: 1px solid rgba(244, 117, 33, 0.30);
    background: #fff7ed;
    color: #7c2d12;
    border-radius: 16px;
    padding: 14px 16px;
    margin: 14px 0;
}

.readiness-warning ul {
    margin: 8px 0 0 18px;
}

.sprint4-assignment-form {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(6, 43, 95, 0.10);
}

.compact-table td,
.compact-table th {
    vertical-align: top;
}

@media (max-width: 900px) {
    .sprint4-assignment-form .two-columns {
        grid-template-columns: 1fr;
    }
}


/* Sprint 4 hotfix — selector de generaciones abiertas desde ficha */
.sprint4-assignment-form select.js-s4-generation-select option[hidden] {
    display: none;
}

.sprint4-assignment-form small {
    display: block;
    margin-top: 6px;
    color: #64748b;
    font-weight: 700;
}


/* Sprint 4 S4-007 a S4-010 — historial y cambio de estatus de cursos */
.sprint4-enrollment-history-card { margin-top: 20px; }
.detail-card-header.subheader { margin-top: 20px; padding-top: 18px; border-top: 1px solid rgba(6, 43, 95, 0.10); }
.inline-status-form { display: grid; grid-template-columns: minmax(140px, 180px) minmax(180px, 1fr) auto; gap: 8px; align-items: center; }
.inline-status-form select, .inline-status-form input { min-height: 38px; border: 1px solid rgba(6, 43, 95, 0.18); border-radius: 10px; padding: 8px 10px; }
.timeline-list { display: grid; gap: 10px; }
.timeline-item { border: 1px solid rgba(6, 43, 95, 0.10); border-radius: 14px; padding: 12px 14px; background: #f8fafc; }
.timeline-item strong, .timeline-item span, .timeline-item small { display: block; }
.timeline-item strong { color: #062b5f; }
.timeline-item span { font-weight: 850; color: #f47521; margin-top: 4px; }
.timeline-item small { color: #64748b; margin-top: 4px; }
.timeline-item p { margin: 8px 0 0; color: #334155; }
@media (max-width: 900px) { .inline-status-form { grid-template-columns: 1fr; } }


/* Sprint 5 S5-001 a S5-005 — Exámenes, bancos y tokens */
.exam-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 18px;
}

.exam-summary-card,
.exam-token-rules article {
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 18px;
}

.exam-summary-card span {
    display: block;
    color: #f47521;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    margin-bottom: 8px;
}

.exam-summary-card strong {
    display: block;
    color: #062b5f;
    font-size: 1.65rem;
    line-height: 1.1;
    margin-bottom: 6px;
}

.exam-summary-card small {
    color: #64748b;
    line-height: 1.35;
}

.exam-table th:nth-child(1),
.exam-table td:nth-child(1) {
    width: 24%;
}

.exam-form .two-columns {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.exam-rules-box,
.exam-token-rules {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0;
}

.exam-token-rules {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.exam-token-rules strong {
    display: block;
    color: #062b5f;
    margin-bottom: 8px;
}

.exam-token-rules p {
    margin: 0;
    color: #64748b;
}

@media (max-width: 900px) {
    .exam-summary-grid,
    .exam-form .two-columns,
    .exam-rules-box,
    .exam-token-rules {
        grid-template-columns: 1fr;
    }
}


/* Sprint 5 S5-006 a S5-010 — bancos de preguntas */
.question-bank-table th:nth-child(1),
.question-bank-table td:nth-child(1) {
    width: 12%;
}

.question-bank-table th:nth-child(2),
.question-bank-table td:nth-child(2) {
    width: 34%;
}

.question-bank-table th:nth-child(5),
.question-bank-table td:nth-child(5) {
    width: 28%;
}

.exam-form textarea[name="json_content"] {
    font-family: Consolas, Monaco, 'Courier New', monospace;
    min-height: 240px;
    white-space: pre;
}

/* Sprint 10 — S10-FIX-002 Navegación y formularios */
:root {
    --s10-navy: #062B5F;
    --s10-deep: #001F45;
    --s10-orange: #F36F21;
    --s10-border: #D9E2EF;
    --s10-bg: #F7FAFC;
    --s10-text: #172033;
}

.s10-sidebar-academic {
    margin-top: 1rem;
}

.s10-nav-link--important {
    font-weight: 700;
}

select,
textarea,
input[type="text"],
input[type="date"],
input[type="email"],
input[type="number"],
input[type="search"],
.exam-form select,
.exam-form textarea,
.card select,
.card textarea,
select[name="exam_id"],
textarea[name="json_content"] {
    width: 100%;
    max-width: 100%;
    border: 1px solid var(--s10-border);
    border-radius: 12px;
    background: #fff;
    color: var(--s10-text);
    font: inherit;
    line-height: 1.4;
    padding: 0.72rem 0.88rem;
    box-sizing: border-box;
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}

select,
select[name="exam_id"] {
    min-height: 44px;
    appearance: auto;
}

textarea,
textarea[name="json_content"] {
    min-height: 150px;
    resize: vertical;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
}

textarea[name="json_content"] {
    min-height: 320px;
    white-space: pre;
    background: #FBFDFF;
}

select:focus,
textarea:focus,
input[type="text"]:focus,
input[type="date"]:focus,
input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
select[name="exam_id"]:focus,
textarea[name="json_content"]:focus {
    border-color: var(--s10-navy);
    box-shadow: 0 0 0 3px rgba(6, 43, 95, .12);
    outline: none;
}

select:hover,
textarea:hover,
input[type="text"]:hover,
input[type="date"]:hover,
input[type="email"]:hover,
input[type="number"]:hover,
input[type="search"]:hover {
    border-color: #B9C8DA;
}

.form-grid label > span,
.exam-form label > span,
.card label > span {
    display: block;
    margin-bottom: .4rem;
    font-weight: 700;
    color: var(--s10-deep);
}

.data-table select,
.data-table textarea {
    min-width: 180px;
}

.form-actions .btn-primary,
.form-actions .btn-secondary,
.header-actions .btn-secondary,
button.btn-secondary {
    white-space: nowrap;
}

.badge-warning {
    background: rgba(243, 111, 33, .12);
    color: #A84709;
    border: 1px solid rgba(243, 111, 33, .22);
}

/* =========================================================
   Sprint 12 — S12-FIX-000
   Modo global de interfaz limpia
   ========================================================= */

.ui-clean-mode .ui-noise,
.ui-clean-mode .ui-technical,
.ui-clean-mode .ui-help,
.ui-clean-mode .ui-secondary-detail,
.ui-clean-mode .ui-decoration {
    display: none !important;
}

.ui-clean-mode .ui-secondary-action {
    box-shadow: none;
    opacity: .78;
}

.ui-clean-mode .card,
.ui-clean-mode .detail-card,
.ui-clean-mode .table-card,
.ui-clean-mode .person-dashboard-card,
.ui-clean-mode .person-hero-card,
.ui-clean-mode .person-action-card {
    box-shadow: none;
}

.ui-clean-mode .page-header {
    margin-bottom: 16px;
}

.ui-clean-mode .grid-cards,
.ui-clean-mode .detail-grid,
.ui-clean-mode .person-operational-grid,
.ui-clean-mode .person-dashboard-grid,
.ui-clean-mode .person-action-grid {
    gap: 12px;
}

.ui-clean-mode .card {
    padding: 18px;
}

.ui-clean-mode .s12-operational-summary {
    margin-top: .45rem;
    padding: .55rem .65rem;
    border-left: 3px solid #F36F21;
    border-radius: 8px;
    background: rgba(243, 111, 33, .06);
    color: #172033;
    line-height: 1.35;
}

.ui-full-mode .s12-operational-summary {
    margin-bottom: .45rem;
}

.ui-clean-mode .ui-critical,
.ui-clean-mode .ui-required-state,
.ui-clean-mode .ui-security-alert,
.ui-clean-mode .ui-primary-action {
    display: revert;
}

@media (max-width: 760px) {
    .ui-clean-mode .card {
        padding: 15px;
    }
}



/* =========================================================
   Sprint 12 — S12-FIX-001
   Modo limpio aplicado a preclientes de landing
   ========================================================= */

.ui-full-mode .s12-clean-only {
    display: none !important;
}

.ui-clean-mode .s12-clean-only {
    display: block;
}

.ui-clean-mode .s12-clean-leads-summary {
    margin-bottom: 16px;
}

.ui-clean-mode .notice-card {
    box-shadow: none;
}

.ui-clean-mode .filter-card .filter-heading {
    margin-bottom: 12px;
}

.ui-clean-mode .academy-form-grid label > small {
    display: none;
}

.ui-clean-mode .leads-table .blocked-action-note.ui-help {
    display: none !important;
}

.ui-clean-mode .leads-table td,
.ui-clean-mode .leads-table th {
    vertical-align: middle;
}

@media (max-width: 900px) {
    .ui-clean-mode .filter-grid-advanced {
        grid-template-columns: 1fr;
    }
}

/* =========================================================
   Sprint 12 — S12-FIX-004
   Interfaz limpia integral y consolidada
   ========================================================= */

/* Encabezados: conservar título y acciones; retirar metadatos de sprint y explicación extensa. */
.ui-clean-mode .page-header .eyebrow,
.ui-clean-mode .page-header > .eyebrow,
.ui-clean-mode .page-header > p:not(.ui-critical):not(.ui-required-state),
.ui-clean-mode .page-header > div > p:not(.ui-critical):not(.ui-required-state),
.ui-clean-mode .detail-card-header .eyebrow,
.ui-clean-mode .detail-card-header p.muted,
.ui-clean-mode .detail-card-header p.muted-text {
    display: none !important;
}

/* Ocultar metadatos técnicos, slugs, claves y referencias de sprint. */
.ui-clean-mode .ui-technical,
.ui-clean-mode .s12-hide-clean,
.ui-clean-mode small.ui-technical,
.ui-clean-mode code.ui-technical,
.ui-clean-mode td .technical-code,
.ui-clean-mode th.ui-technical,
.ui-clean-mode td.ui-technical {
    display: none !important;
}

/* Retirar módulos futuros y placeholders sin operación vigente. */
.ui-clean-mode .future-module-card,
.ui-clean-mode .action-placeholder-card,
.ui-clean-mode .reserved-module,
.ui-clean-mode .sprint-placeholder {
    display: none !important;
}

/* Reducir explicación secundaria sin ocultar mensajes de error o seguridad. */
.ui-clean-mode p.muted-text:not(.ui-critical):not(.ui-required-state):not(.ui-security-alert),
.ui-clean-mode p.muted:not(.ui-critical):not(.ui-required-state):not(.ui-security-alert),
.ui-clean-mode .course-summary-card small,
.ui-clean-mode .exam-summary-card small,
.ui-clean-mode .stat-card small,
.ui-clean-mode .person-kpi-card small,
.ui-clean-mode .metric-card small,
.ui-clean-mode .summary-card small {
    display: none !important;
}

/* Menú más compacto, sin etiquetas o enlaces repetidos. */
.ui-clean-mode .sidebar-brand span {
    display: none;
}

.ui-clean-mode .sidebar-section-label {
    margin-top: 16px;
    padding-top: 8px;
    font-size: .68rem;
    letter-spacing: .08em;
    opacity: .72;
}

.ui-clean-mode .sidebar-nav a {
    padding-top: 8px;
    padding-bottom: 8px;
}

/* Cards y tablas más planas y compactas. */
.ui-clean-mode .card,
.ui-clean-mode .table-card,
.ui-clean-mode .detail-card,
.ui-clean-mode .course-summary-card,
.ui-clean-mode .exam-summary-card,
.ui-clean-mode .stat-card,
.ui-clean-mode .person-kpi-card {
    border-color: rgba(6, 43, 95, .08);
    box-shadow: none;
}

.ui-clean-mode .course-summary-grid,
.ui-clean-mode .exam-summary-grid,
.ui-clean-mode .stats-grid,
.ui-clean-mode .grid-cards {
    gap: 10px;
}

.ui-clean-mode .table-responsive {
    border-radius: 12px;
}

.ui-clean-mode .table th,
.ui-clean-mode .data-table th {
    font-size: .76rem;
    letter-spacing: .02em;
}

.ui-clean-mode .table td,
.ui-clean-mode .data-table td {
    padding-top: .72rem;
    padding-bottom: .72rem;
}

/* Acciones secundarias con menor peso, sin desaparecer. */
.ui-clean-mode .header-actions .btn-secondary,
.ui-clean-mode .form-actions .btn-secondary,
.ui-clean-mode a.btn-secondary:not(.ui-primary-action) {
    box-shadow: none;
}

/* Formularios: ocultar ayudas extensas, mantener validaciones y etiquetas. */
.ui-clean-mode label > small:not(.ui-critical):not(.ui-required-state),
.ui-clean-mode .form-help,
.ui-clean-mode .field-help,
.ui-clean-mode .technical-help {
    display: none !important;
}

/* Mantener siempre visibles los elementos operativos y críticos. */
.ui-clean-mode .alert-error,
.ui-clean-mode .alert-danger,
.ui-clean-mode .alert-warning,
.ui-clean-mode .form-alert-error,
.ui-clean-mode .ui-critical,
.ui-clean-mode .ui-required-state,
.ui-clean-mode .ui-security-alert,
.ui-clean-mode .ui-primary-action,
.ui-clean-mode .readiness-warning,
.ui-clean-mode .duplicate-actions-card,
.ui-clean-mode .duplicate-person-card {
    display: block;
}

/* Dashboard y fichas: evitar secciones vacías tras ocultar ayudas. */
.ui-clean-mode .clean-collapsible-empty:empty,
.ui-clean-mode .clean-hide-empty:empty {
    display: none;
}

@media (max-width: 900px) {
    .ui-clean-mode .header-actions {
        gap: 8px;
    }
}

/* =========================================================
   Sprint 12 — S12-001 Dashboard de estadísticas por alcance
   ========================================================= */
.stats-dashboard-header {
    align-items: flex-start;
}

.stats-filter-card {
    margin-bottom: 20px;
}

.stats-filter-form {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}

.stats-filter-form .form-group {
    margin: 0;
}

.stats-filter-actions {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}

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

.stats-kpi-card {
    min-height: 112px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 14px;
    padding: 18px;
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 18px;
    background: #ffffff;
    box-shadow: 0 12px 28px rgba(0, 31, 69, 0.07);
}

.stats-kpi-card span {
    color: #52657d;
    font-size: 0.88rem;
    line-height: 1.25;
}

.stats-kpi-card strong {
    color: #062b5f;
    font-size: 2rem;
    line-height: 1;
}

.stats-kpi-card--positive {
    border-color: rgba(31, 148, 93, 0.22);
}

.stats-kpi-card--positive strong {
    color: #147a4d;
}

.stats-kpi-card--warning {
    border-color: rgba(244, 117, 33, 0.28);
}

.stats-kpi-card--warning strong {
    color: #b9530f;
}

.stats-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 20px;
}

.stats-panel,
.stats-table-card {
    min-width: 0;
}

.stats-table-card {
    margin-bottom: 20px;
}

.stats-panel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 18px;
}

.stats-panel-header h2 {
    margin: 0;
}

.stats-panel-header span {
    color: #6b7b91;
    font-size: 0.84rem;
    text-align: right;
}

.stats-bar-list {
    display: grid;
    gap: 14px;
}

.stats-bar-row {
    display: grid;
    gap: 7px;
}

.stats-bar-label {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
}

.stats-bar-label span {
    color: #263b57;
}

.stats-bar-label strong {
    color: #062b5f;
}

.stats-bar-track {
    height: 9px;
    overflow: hidden;
    border-radius: 999px;
    background: #edf2f7;
}

.stats-bar-track span {
    display: block;
    height: 100%;
    min-width: 4px;
    border-radius: inherit;
    background: linear-gradient(90deg, #062b5f, #164f8f);
}

.stats-monthly-chart {
    min-height: 220px;
    display: flex;
    align-items: flex-end;
    gap: 10px;
    overflow-x: auto;
    padding: 8px 2px 2px;
}

.stats-month-column {
    min-width: 52px;
    flex: 1 0 52px;
    display: grid;
    grid-template-rows: auto 150px auto;
    gap: 8px;
    text-align: center;
}

.stats-month-column strong {
    color: #062b5f;
    font-size: 0.86rem;
}

.stats-month-track {
    position: relative;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    border-radius: 12px 12px 5px 5px;
    background: #edf2f7;
}

.stats-month-track span {
    display: block;
    width: 100%;
    min-height: 4px;
    border-radius: 10px 10px 4px 4px;
    background: linear-gradient(180deg, #f47521, #d95c10);
}

.stats-month-column small {
    color: #65768c;
    font-size: 0.72rem;
    white-space: nowrap;
}

.stats-table th,
.stats-table td {
    white-space: nowrap;
}

.stats-table td:first-child,
.stats-table th:first-child {
    white-space: normal;
    min-width: 220px;
}

.ui-clean-mode .stats-kpi-card {
    box-shadow: none;
}

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

    .stats-filter-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 820px) {
    .stats-dashboard-grid,
    .stats-kpi-grid,
    .stats-filter-form {
        grid-template-columns: 1fr;
    }

    .stats-panel-header {
        display: grid;
    }

    .stats-panel-header span {
        text-align: left;
    }
}

/* Sprint 13 — Administración integral de promotorías e identidad institucional */
.s13-sidebar-brand {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
}

.s13-sidebar-logo {
    display: block;
    width: auto;
    max-width: 170px;
    max-height: 72px;
    object-fit: contain;
    background: #ffffff;
    border-radius: 12px;
    padding: 6px;
}

.s13-sidebar-brand-copy {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.s13-sidebar-brand-copy span {
    font-size: 0.78rem;
    opacity: 0.78;
}

.form-grid {
    display: grid;
    gap: 16px;
}

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

.form-card label {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.form-card label > span,
.s13-password-fieldset legend {
    color: var(--navy);
    font-weight: 700;
}

.checkbox-row {
    flex-direction: row !important;
    align-items: center;
    gap: 10px !important;
}

.checkbox-row input[type="checkbox"] {
    width: auto;
}

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

.table-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}

.table-actions form {
    margin: 0;
}

.btn-danger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    border: 0;
    border-radius: 10px;
    padding: 10px 16px;
    background: #a72323;
    color: #ffffff;
    font-weight: 700;
    cursor: pointer;
}

.s13-summary-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 18px;
}

.s13-brand-preview {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 7px;
    margin: 16px 0 20px;
}

.s13-brand-preview img,
.s13-logo-current img {
    display: block;
    max-width: 220px;
    max-height: 110px;
    object-fit: contain;
    border: 1px solid rgba(6, 43, 95, 0.12);
    border-radius: 14px;
    background: #ffffff;
    padding: 10px;
}

.s13-brand-preview strong {
    color: var(--navy);
    font-size: 1.1rem;
}

.s13-brand-preview span {
    color: var(--muted);
}

.s13-brand-editor {
    display: grid;
    gap: 26px;
}

.s13-logo-current {
    margin-top: 12px;
}

.s13-secondary-form {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 20px;
    padding-top: 18px;
    border-top: 1px solid rgba(6, 43, 95, 0.10);
}

.s13-password-fieldset {
    margin-top: 22px;
    border: 1px solid rgba(6, 43, 95, 0.12);
    border-radius: 14px;
    padding: 18px;
}

.s13-password-once code {
    display: inline-block;
    margin: 8px 0;
    padding: 8px 12px;
    border-radius: 8px;
    background: #fff8e8;
    color: #5d4100;
    font-size: 1rem;
}

.s13-password-card {
    max-width: 680px;
}

.s13-password-card form {
    display: grid;
    gap: 16px;
}

.status-activa,
.status-activo {
    background: rgba(34, 139, 94, 0.12);
    color: #14633f;
}

.status-inactiva,
.status-inactivo {
    background: rgba(151, 42, 42, 0.10);
    color: #8a2424;
}

@media (max-width: 900px) {
    .form-grid.two-columns,
    .s13-summary-grid {
        grid-template-columns: 1fr;
    }

    .card-header-row {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Sprint 13 S13-008 — Menú desplegable por secciones */
.sidebar-nav--accordion {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.sidebar-menu-group {
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.035);
    overflow: hidden;
}

.sidebar-menu-group > summary {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 44px;
    padding: 11px 42px 11px 14px;
    color: rgba(255, 255, 255, 0.92);
    cursor: pointer;
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0.025em;
    list-style: none;
    user-select: none;
}

.sidebar-menu-group > summary::-webkit-details-marker {
    display: none;
}

.sidebar-menu-group > summary::after {
    content: '';
    position: absolute;
    right: 16px;
    top: 50%;
    width: 8px;
    height: 8px;
    border-right: 2px solid rgba(255, 255, 255, 0.70);
    border-bottom: 2px solid rgba(255, 255, 255, 0.70);
    transform: translateY(-65%) rotate(45deg);
    transition: transform 160ms ease;
}

.sidebar-menu-group[open] > summary {
    background: rgba(255, 255, 255, 0.07);
    color: #ffffff;
}

.sidebar-menu-group[open] > summary::after {
    transform: translateY(-25%) rotate(225deg);
}

.sidebar-menu-group > summary:hover,
.sidebar-menu-group > summary:focus-visible {
    background: rgba(255, 255, 255, 0.09);
    outline: none;
}

.sidebar-menu-items {
    display: grid;
    gap: 4px;
    padding: 5px 7px 9px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.sidebar-nav--accordion .sidebar-menu-items a {
    display: block;
    padding: 9px 11px;
    border-radius: 10px;
    color: rgba(255, 255, 255, 0.82);
    font-size: 13px;
    font-weight: 700;
}

.sidebar-nav--accordion .sidebar-menu-items a:hover,
.sidebar-nav--accordion .sidebar-menu-items a:focus-visible {
    background: rgba(255, 255, 255, 0.10);
    color: #ffffff;
    outline: none;
}

.sidebar-nav--accordion .sidebar-menu-items a.is-active {
    background: rgba(255, 255, 255, 0.16);
    color: #ffffff;
    box-shadow: inset 3px 0 0 rgba(243, 111, 33, 0.95);
}

.sidebar-menu-group--promotorias > summary {
    color: #ffffff;
}

/* Acciones contextuales: las rutas con ID se abren desde la promotoría seleccionada. */
.s13-row-actions {
    position: relative;
    display: inline-block;
}

.s13-row-actions > summary {
    list-style: none;
    cursor: pointer;
}

.s13-row-actions > summary::-webkit-details-marker {
    display: none;
}

.s13-row-actions[open] > summary {
    position: relative;
    z-index: 12;
}

.s13-row-actions__menu {
    position: absolute;
    z-index: 11;
    top: calc(100% + 7px);
    right: 0;
    min-width: 230px;
    padding: 7px;
    border: 1px solid rgba(6, 43, 95, 0.14);
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 18px 42px rgba(6, 43, 95, 0.18);
}

.s13-row-actions__menu a {
    display: block;
    padding: 9px 11px;
    border-radius: 9px;
    color: var(--navy);
    text-decoration: none;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

.s13-row-actions__menu a:hover,
.s13-row-actions__menu a:focus-visible {
    background: rgba(6, 43, 95, 0.07);
    outline: none;
}

@media (max-width: 900px) {
    .sidebar-nav--accordion {
        display: flex;
        grid-template-columns: none;
    }

    .sidebar-menu-group {
        width: 100%;
    }

    .s13-row-actions__menu {
        position: static;
        min-width: 0;
        margin-top: 7px;
        box-shadow: none;
    }
}


/* Sprint 14 — Resultados integrales EPC / EPPC */
.evaluation-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.evaluation-page-header .eyebrow,.evaluation-integrated-card .eyebrow{margin:0 0 .35rem;color:#5d6f89;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.evaluation-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin:1rem 0}.evaluation-kpi{background:#fff;border:1px solid #dbe3ee;border-radius:14px;padding:1rem;box-shadow:0 4px 16px rgba(3,34,73,.05)}.evaluation-kpi span{display:block;color:#5c6b7c;font-size:.84rem}.evaluation-kpi strong{display:block;margin-top:.35rem;color:#082b5c;font-size:1.7rem}.evaluation-filter-card,.evaluation-results-card,.evaluation-integrated-card,.evaluation-history-card{margin-top:1rem}.evaluation-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1rem;align-items:end}.evaluation-filter-search{grid-column:span 2}.evaluation-filter-actions{display:flex;gap:.6rem;align-items:center}.evaluation-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.evaluation-section-heading h2{margin:0}.evaluation-section-heading p{margin:.2rem 0 0;color:#607086}.evaluation-section-heading>span{background:#eef4fb;border-radius:999px;color:#173d6d;font-size:.8rem;font-weight:700;padding:.35rem .7rem}.evaluation-results-table td small,.evaluation-history-card td small{display:block;color:#6a7889;margin-top:.25rem}.evaluation-module-badge{display:inline-flex;border-radius:999px;font-size:.72rem;font-weight:800;letter-spacing:.06em;padding:.25rem .5rem}.evaluation-module-badge--epc{background:#e8f1ff;color:#174b8c}.evaluation-module-badge--eppc{background:#eaf7ef;color:#17613a}.evaluation-status{display:inline-flex;border-radius:999px;font-size:.74rem;font-weight:700;padding:.25rem .5rem}.evaluation-status.is-positive{background:#e8f7ee;color:#17613a}.evaluation-status.is-warning{background:#fff4dc;color:#875a00}.evaluation-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem}.evaluation-integrated-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:2rem}.evaluation-main-score{display:flex;flex-direction:column;align-items:flex-start;background:#f5f8fc;border:1px solid #dce5f0;border-radius:16px;padding:1rem 1.25rem;width:max-content}.evaluation-main-score span{color:#627287;font-size:.82rem}.evaluation-main-score strong{color:#062b5f;font-size:2.5rem;line-height:1.1}.evaluation-main-score small{font-weight:700}.evaluation-candidate{border-left:5px solid #e1a828;border-radius:10px;margin:1rem 0;padding:.9rem 1rem}.evaluation-candidate p{margin:.3rem 0 0}.evaluation-candidate--positive{background:#eaf8ef;border-color:#2d9960}.evaluation-candidate--warning{background:#fff7e8;border-color:#e1a828}.evaluation-candidate--negative{background:#fff0ef;border-color:#c34a42}.evaluation-strength-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.evaluation-strength-grid>div{background:#f7f9fc;border-radius:12px;padding:1rem}.evaluation-strength-grid h3{font-size:.95rem;margin:0 0 .65rem}.evaluation-strength-grid p{margin:.35rem 0}.evaluation-radar-wrap{text-align:center}.evaluation-radar{display:block;margin:auto;max-width:410px;width:100%;overflow:visible}.evaluation-radar-grid{fill:none;stroke:#d7e0eb;stroke-width:1}.evaluation-radar-axis{stroke:#e2e8f0;stroke-width:1}.evaluation-radar-value{fill:rgba(18,83,154,.22);stroke:#12539a;stroke-width:2}.evaluation-radar text{fill:#4f6074;font-size:9px}.evaluation-comparison-bars{border-top:1px solid #e1e7ef;margin-top:1.5rem;padding-top:1rem}.evaluation-comparison-row{display:grid;grid-template-columns:170px 1fr 1fr;gap:1rem;align-items:center;padding:.65rem 0;border-bottom:1px solid #edf1f5}.evaluation-comparison-row>div{display:grid;grid-template-columns:42px 1fr 62px;gap:.45rem;align-items:center}.evaluation-comparison-row span,.evaluation-comparison-row b{font-size:.78rem}.evaluation-mini-track,.evaluation-bar-track{background:#e7edf4;border-radius:999px;height:9px;overflow:hidden}.evaluation-mini-track i,.evaluation-bar-track span{display:block;background:#15599f;height:100%;border-radius:inherit}.evaluation-two-column{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.evaluation-assessment-card{margin:0}.evaluation-score-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}.evaluation-score-summary>div{background:#f6f8fb;border-radius:10px;padding:.75rem}.evaluation-score-summary span{display:block;color:#69788b;font-size:.76rem}.evaluation-score-summary strong{display:block;margin-top:.2rem}.evaluation-bars{margin-top:1rem}.evaluation-bar-row{margin:.7rem 0}.evaluation-bar-row>div:first-child{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.3rem}.evaluation-quality-note{background:#f7f9fc;border-radius:10px;color:#58697d;font-size:.84rem;padding:.75rem}.evaluation-disclaimer{background:#f5f7fa;border:1px solid #dce3ec;border-radius:12px;color:#516175;font-size:.83rem;margin-top:1rem;padding:1rem}.btn-small{font-size:.78rem;padding:.45rem .65rem;white-space:nowrap}@media(max-width:1200px){.evaluation-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.evaluation-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.evaluation-two-column{grid-template-columns:1fr}.evaluation-integrated-grid{grid-template-columns:1fr}}@media(max-width:760px){.evaluation-page-header,.evaluation-section-heading{display:block}.evaluation-page-header .btn-secondary{display:inline-flex;margin-top:1rem}.evaluation-filter-grid,.evaluation-kpi-grid,.evaluation-score-summary,.evaluation-strength-grid{grid-template-columns:1fr}.evaluation-filter-search{grid-column:auto}.evaluation-comparison-row{grid-template-columns:1fr}.evaluation-results-table{min-width:980px}}


/* S14-FIX-001 — Confirmación pública privada para diagnósticos Likert. */
.public-thank-you {
    min-height: 62vh;
    display: grid;
    place-items: center;
    padding: 32px 16px;
}

.public-thank-you__card {
    width: min(100%, 560px);
    text-align: center;
    padding: clamp(32px, 7vw, 64px);
}

.public-thank-you__card h1 {
    margin: 0 0 12px;
    font-size: clamp(2rem, 6vw, 3.5rem);
}

.public-thank-you__card p {
    margin: 0;
    font-size: 1.05rem;
}

/* Sprint 15 — Administración de usuarios y perfiles de seguridad */
.security-page-header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.security-page-header .header-actions { display:flex; flex-wrap:wrap; gap:10px; }
.security-filter-grid { grid-template-columns:repeat(5,minmax(150px,1fr)); }
.security-filter-grid select,.security-form-grid select,.security-form-grid textarea { width:100%; border:1px solid rgba(6,43,95,.14); border-radius:12px; padding:10px 12px; font:inherit; color:#16243a; background:#fff; }
.security-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.security-form-grid label { align-content:start; }
.security-form-grid label small,.security-permission-option small,.security-secret-once p { color:#64748b; font-weight:500; line-height:1.45; }
.security-secret-once { margin-bottom:18px; padding:18px 20px; border:1px solid rgba(244,117,33,.28); border-left:5px solid #f47521; border-radius:16px; background:#fffaf5; }
.security-secret-once strong,.security-secret-once code,.security-secret-once p { display:block; }
.security-secret-once code { width:fit-content; margin:10px 0 6px; padding:8px 12px; font-size:1rem; letter-spacing:.04em; user-select:all; }
.security-users-table { min-width:1120px; }
.security-profiles-table { min-width:900px; }
.inline-form { display:inline-flex; margin:0; }
.action-cell { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.muted { color:#64748b; }
.security-pagination { display:flex; flex-wrap:wrap; gap:6px; padding-top:18px; }
.security-pagination a { min-width:36px; height:36px; display:inline-flex; align-items:center; justify-content:center; border:1px solid rgba(6,43,95,.14); border-radius:10px; text-decoration:none; color:#062b5f; background:#fff; font-weight:800; }
.security-pagination a.is-active { background:#062b5f; color:#fff; }
.security-permissions-heading h2 { margin-bottom:4px; }
.security-permissions-heading p { margin-top:0; }
.security-permission-groups { display:grid; gap:16px; }
.security-role-permission-set { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.security-role-permission-set[hidden] { display:none!important; }
.security-permission-group { margin:0; border:1px solid rgba(6,43,95,.12); border-radius:16px; padding:14px 16px; background:#fbfdff; }
.security-permission-group legend { padding:0 8px; color:#062b5f; font-weight:900; }
.security-permission-option { display:grid; grid-template-columns:20px minmax(0,1fr); gap:10px; align-items:start; padding:8px 0; color:#25364d; }
.security-permission-option input { width:18px; height:18px; margin-top:2px; }
.security-permission-option span,.security-permission-option strong,.security-permission-option small { display:block; }
.security-password-card { border-left:4px solid #062b5f; }
.account-password-card { max-width:620px; }
@media (max-width:1100px) { .security-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .security-role-permission-set { grid-template-columns:1fr; } }
@media (max-width:760px) { .security-page-header { flex-direction:column; } .security-filter-grid,.security-form-grid { grid-template-columns:1fr; } .security-page-header .header-actions { width:100%; } .security-page-header .header-actions .btn-primary,.security-page-header .header-actions .btn-secondary { flex:1 1 auto; } }

/* Sprint 16 S16-003 — Administración de anuncios */
.ads-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.ads-page-header .header-actions{display:flex;gap:10px;flex-wrap:wrap}.ads-filter-grid,.ads-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.ads-filter-grid label,.ads-form-grid label{display:flex;flex-direction:column;gap:6px}.ads-filter-grid input,.ads-filter-grid select,.ads-form-grid input,.ads-form-grid select,.ads-form-grid textarea{width:100%;border:1px solid rgba(6,43,95,.14);border-radius:12px;padding:10px 12px;font:inherit;background:#fff;color:#16243a}.ads-span-2{grid-column:span 2}.ads-readonly-card{border:1px solid rgba(6,43,95,.10);border-radius:14px;padding:12px;background:#f8fafc;display:flex;flex-direction:column;gap:4px}.ads-readonly-card span{font-size:.78rem;color:#64748b}.ads-readonly-card strong{color:#062b5f}.ads-readonly-card small{color:#64748b}.ads-parameter-header{margin:24px 0 12px}.ads-parameter-header h2{margin:0 0 4px}.ads-url-card{border-left:4px solid #f36f21}.ads-url-copy{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px}.ads-url-copy code,.ads-long-url code{display:block;max-width:100%;overflow-wrap:anywhere;word-break:break-word;background:#f8fafc;border:1px solid rgba(6,43,95,.10);border-radius:10px;padding:10px}.ads-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.ads-table td small,.ads-table td strong{display:block}.status-borrador{background:#f1f5f9}.status-activo{background:#dcfce7}.status-inactivo{background:#fee2e2}@media(max-width:900px){.ads-filter-grid,.ads-form-grid,.ads-detail-grid{grid-template-columns:1fr}.ads-span-2{grid-column:auto}.ads-page-header{flex-direction:column}.ads-url-copy{align-items:stretch}.ads-url-copy code{width:100%}}

/* Sprint 16 S16-006 — Estadísticas de anuncios */
.ads-stats-filter-card{margin-bottom:16px}.ads-stats-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;align-items:end}.ads-stats-filter-grid label{display:flex;flex-direction:column;gap:6px}.ads-stats-filter-grid input,.ads-stats-filter-grid select{width:100%;border:1px solid rgba(6,43,95,.14);border-radius:12px;padding:10px 12px;font:inherit;background:#fff;color:#16243a}.ads-stats-filter-actions{display:flex;gap:10px;align-items:center}.ads-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:0 0 16px}.ads-metric-card{padding:18px}.ads-metric-card span{display:block;color:#64748b;font-size:.78rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.ads-metric-card strong{display:block;margin-top:5px;color:#062b5f;font-size:1.65rem;font-weight:950}.ads-metric-card small{display:block;margin-top:5px;color:#64748b}.ads-stats-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}.ads-stats-heading h2{margin:0}.ads-stats-heading p{margin:4px 0 0;color:#64748b}.ads-stats-last{display:grid;grid-template-columns:auto auto;gap:4px 10px;font-size:.78rem}.ads-stats-last span{color:#64748b}.ads-stats-last strong{color:#062b5f}.ads-statistics-table{min-width:1180px}.ads-statistics-table td small,.ads-statistics-table td strong{display:block}.ads-pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:16px}.ads-attribution-note{margin-top:16px}.ads-attribution-note code{font-weight:800}@media(max-width:1150px){.ads-stats-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ads-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){.ads-stats-filter-grid,.ads-metric-grid{grid-template-columns:1fr}.ads-stats-heading{flex-direction:column}.ads-stats-last{grid-template-columns:auto 1fr}.ads-stats-filter-actions{align-items:stretch;flex-direction:column}.ads-stats-filter-actions>*{width:100%;justify-content:center}}

/* Sprint 17 S17-002 — Listado CRM de clientes */
.crm-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.crm-eyebrow{display:inline-block;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#f36f21;margin-bottom:6px}
.crm-header-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.crm-scope-text{font-size:.84rem;color:#64748b;text-align:right}
.crm-filter-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.crm-clients-table th,.crm-clients-table td{vertical-align:middle}
.crm-clients-table tbody tr{position:relative}
.crm-row--attention td:first-child{border-left:4px solid #f36f21}
.crm-row--overdue td:first-child{border-left:4px solid #ef4444}
.crm-stage{display:inline-flex;align-items:center;justify-content:center;min-width:76px;padding:5px 10px;border-radius:999px;font-size:.78rem;font-weight:800;background:#eef2f7;color:#334155}
.crm-stage--frio{background:#eaf2ff;color:#315d91}
.crm-stage--tibio{background:#fff4d6;color:#8b6614}
.crm-stage--caliente{background:#ffe4d7;color:#a94316}
.crm-stage--perdido{background:#f1f5f9;color:#64748b}
.crm-stage--cerrado{background:#e4f7ea;color:#287a43}
.crm-overdue-text{font-weight:800;color:#b42318}
.crm-pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px 0 4px;flex-wrap:wrap}
@media (max-width:760px){.crm-header-meta{align-items:flex-start}.crm-scope-text{text-align:left}.crm-clients-table{min-width:1100px}}

/* Sprint 17 S17-003 — Perfil CRM, hub, timeline y observaciones */
.crm-header-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.crm-profile-hero{padding:24px}.crm-profile-main{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.crm-profile-main h2{margin:10px 0 6px;color:#062b5f}.crm-profile-main p{margin:0;color:#5d6b7a}.crm-profile-meta{display:grid;gap:8px;min-width:260px;font-size:.9rem;color:#334155}.crm-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:22px}.crm-profile-grid>div,.crm-detail-grid>div{padding:14px;border:1px solid rgba(6,43,95,.09);border-radius:14px;background:#fbfdff}.crm-profile-grid span,.crm-detail-grid dt{display:block;color:#64748b;font-size:.78rem;font-weight:700;margin-bottom:5px}.crm-profile-grid strong,.crm-detail-grid dd{margin:0;color:#0f2745;overflow-wrap:anywhere}.crm-hub-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.crm-hub-tab{display:inline-flex;align-items:center;padding:9px 14px;border-radius:999px;border:1px solid rgba(6,43,95,.12);background:#fff;color:#062b5f;text-decoration:none;font-weight:800;font-size:.86rem}.crm-hub-tab--active{background:#062b5f;color:#fff}.crm-hub-tab--disabled{color:#94a3b8;background:#f8fafc;cursor:not-allowed}.crm-summary-card{margin-bottom:16px}.crm-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0 0}.crm-followup-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(420px,1.4fr);gap:16px}.crm-note-form{display:grid;gap:14px}.crm-note-form label{display:grid;gap:7px;font-weight:800;color:#334155}.crm-note-form textarea{resize:vertical;min-height:140px}.crm-readonly-message,.crm-empty-timeline{padding:18px;border-radius:14px;background:#f8fafc;color:#64748b}.crm-timeline{display:grid;gap:0;margin-top:8px}.crm-timeline-item{display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;position:relative;padding-bottom:18px}.crm-timeline-item:not(:last-child):before{content:"";position:absolute;left:23px;top:40px;bottom:0;width:2px;background:#e2e8f0}.crm-timeline-marker{width:46px;height:34px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:#edf4fb;color:#062b5f;font-size:.7rem;font-weight:950;z-index:1}.crm-timeline-item--stage .crm-timeline-marker{background:#fff3ea;color:#c6530c}.crm-timeline-body{border:1px solid rgba(6,43,95,.09);border-radius:14px;padding:14px 16px;background:#fff}.crm-timeline-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.crm-timeline-heading strong{color:#062b5f}.crm-timeline-heading time{color:#64748b;font-size:.78rem;white-space:nowrap}.crm-timeline-body p{margin:10px 0;color:#334155;white-space:normal}.crm-timeline-body small{color:#64748b}.notice-success{border-left:4px solid #1f9d55}.notice-warning{border-left:4px solid #f59e0b}@media(max-width:900px){.crm-profile-main{display:grid}.crm-profile-meta{min-width:0}.crm-profile-grid,.crm-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.crm-followup-grid{grid-template-columns:1fr}}@media(max-width:560px){.crm-profile-grid,.crm-detail-grid{grid-template-columns:1fr}.crm-timeline-heading{display:grid;gap:4px}.crm-header-actions{justify-content:flex-start}}

/* Sprint 17 S17-004 — Llamadas programadas */
.crm-followup-stack{display:grid;gap:16px}.crm-entry-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.crm-call-form{display:grid;gap:14px}.crm-call-form label,.crm-reschedule-form{font-weight:800;color:#334155}.crm-call-form label{display:grid;gap:7px}.crm-call-row{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}.crm-call-form textarea{resize:vertical;min-height:100px}.crm-timeline-item--call .crm-timeline-marker{background:#eaf7f2;color:#147a55;font-size:.62rem}.crm-call-status{display:inline-flex;margin-left:8px;padding:3px 8px;border-radius:999px;font-size:.7rem;font-weight:900;background:#eef2f7;color:#475569}.crm-call-status--scheduled{background:#e9f3ff;color:#075fa8}.crm-call-status--completed{background:#eaf7f2;color:#147a55}.crm-call-status--no_answer{background:#fff4df;color:#9a5a00}.crm-call-status--cancelled{background:#fdecec;color:#a32929}.crm-call-meta{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;padding:10px 12px;border-radius:10px;background:#f8fafc;color:#475569;font-size:.82rem}.crm-call-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #edf0f4}.crm-call-actions form{margin:0}.crm-action-button{border:1px solid rgba(6,43,95,.16);background:#fff;color:#062b5f;border-radius:9px;padding:7px 10px;font-weight:800;cursor:pointer}.crm-action-button:hover{border-color:#f47521}.crm-reschedule summary{cursor:pointer;color:#062b5f;font-weight:800;font-size:.82rem}.crm-reschedule-form{display:grid;grid-template-columns:1.2fr 1fr 1fr 1.4fr auto;gap:7px;margin-top:9px;align-items:center}.crm-reschedule-form input,.crm-reschedule-form select{min-width:0}@media(max-width:1000px){.crm-entry-grid{grid-template-columns:1fr}.crm-reschedule-form{grid-template-columns:repeat(2,minmax(0,1fr))}.crm-call-row{grid-template-columns:1fr 1fr}}@media(max-width:600px){.crm-call-row,.crm-reschedule-form{grid-template-columns:1fr}.crm-call-actions{align-items:stretch}.crm-call-actions form,.crm-action-button{width:100%}}

/* Sprint 17 S17-005 — Citas programadas */
.crm-appointment-form{display:grid;gap:14px}.crm-appointment-form label{display:grid;gap:7px;font-weight:800;color:#334155}.crm-appointment-row{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}.crm-appointment-form textarea{resize:vertical;min-height:100px}.crm-note-card{grid-column:1/-1}.crm-timeline-item--appointment .crm-timeline-marker{background:#eef0ff;color:#3438a8;font-size:.62rem}.crm-timeline-item--appointment_history .crm-timeline-marker{background:#f5f3ff;color:#6d4fc2;font-size:.58rem}.crm-call-status--no_show{background:#fff4df;color:#9a5a00}.crm-appointment-meta a{color:#062b5f;font-weight:800;text-decoration:none}.crm-appointment-meta a:hover{text-decoration:underline}.crm-appointment-reschedule-form{display:grid;grid-template-columns:1fr .8fr .9fr 1fr 1.2fr 1.4fr 1.3fr auto;gap:7px;margin-top:9px;align-items:center}.crm-appointment-reschedule-form input,.crm-appointment-reschedule-form select{min-width:0}@media(max-width:1180px){.crm-appointment-reschedule-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1000px){.crm-appointment-row{grid-template-columns:1fr 1fr}}@media(max-width:600px){.crm-appointment-row,.crm-appointment-reschedule-form{grid-template-columns:1fr}}

/* Sprint 17 S17-006 — correo y calendarios */
.crm-calendar-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 6px}.crm-calendar-actions a{display:inline-flex;align-items:center;justify-content:center;padding:8px 11px;border:1px solid rgba(6,43,95,.16);border-radius:9px;background:#fff;color:#062b5f;text-decoration:none;font-size:.84rem;font-weight:800}.crm-calendar-actions a:hover{border-color:#f47521;color:#f47521}.crm-calendar-notice{border-left:4px solid #f47521}

/* Sprint 17 S17-006 FIX-001 — confirmación de envío de correo */
.crm-modal-open{overflow:hidden}.crm-email-confirm-modal[hidden]{display:none!important}.crm-email-confirm-modal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px}.crm-email-confirm-modal__backdrop{position:absolute;inset:0;background:rgba(0,31,69,.58);backdrop-filter:blur(2px)}.crm-email-confirm-modal__dialog{position:relative;width:min(520px,100%);background:#fff;border-radius:18px;padding:28px;box-shadow:0 28px 70px rgba(0,31,69,.28);border:1px solid rgba(6,43,95,.1)}.crm-email-confirm-modal__dialog h3{margin:8px 0 10px;color:#062b5f;font-size:1.35rem}.crm-email-confirm-modal__dialog p{margin:0;color:#526174;line-height:1.55}.crm-email-confirm-modal__actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:24px}@media(max-width:640px){.crm-email-confirm-modal{padding:14px}.crm-email-confirm-modal__dialog{padding:22px}.crm-email-confirm-modal__actions>*{width:100%}}

/* Sprint 17 S17-006 FIX-004 — resultado, reenvío y copia al usuario */
.crm-resend-invitation-form{display:inline-flex;margin:6px 0 0}.crm-action-button--mail{border-color:rgba(244,117,33,.35);color:#b64d0a;background:#fff7f0}.crm-action-button--mail:hover{border-color:#f47521;background:#fff1e7}.crm-activity-result-modal{position:fixed;inset:0;z-index:10020;display:flex;align-items:center;justify-content:center;padding:20px}.crm-activity-result-modal[aria-hidden="true"]{display:none}.crm-activity-result-modal__backdrop{position:absolute;inset:0;background:rgba(0,31,69,.62);backdrop-filter:blur(2px)}.crm-activity-result-modal__dialog{position:relative;width:min(520px,100%);background:#fff;border-radius:20px;padding:30px;box-shadow:0 30px 80px rgba(0,31,69,.3);border:1px solid rgba(6,43,95,.1);text-align:center}.crm-activity-result-modal__icon{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:12px auto;background:#eef8f1;color:#237a42;font-size:1.7rem;font-weight:900}.crm-activity-result-modal[data-status="warning"] .crm-activity-result-modal__icon{background:#fff4e8;color:#b64d0a}.crm-activity-result-modal__dialog h3{margin:10px 0;color:#062b5f;font-size:1.4rem}.crm-activity-result-modal__dialog p{margin:0;color:#526174;line-height:1.6}.crm-activity-result-modal__actions{display:flex;justify-content:center;margin-top:24px}@media(max-width:640px){.crm-activity-result-modal{padding:14px}.crm-activity-result-modal__dialog{padding:22px}.crm-activity-result-modal__actions .btn-primary{width:100%}}

/* Sprint 18 S18-002 — pestaña Pólizas dentro del perfil CRM */
.crm-policies-card {
    scroll-margin-top: 24px;
}

.crm-policies-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
}

.crm-policies-priority {
    margin: 8px 0 0;
    color: var(--muted, #667085);
    font-size: 0.92rem;
}

.crm-policies-priority strong {
    color: inherit;
}

.crm-policy-table-wrap {
    overflow-x: auto;
    margin-top: 16px;
}

.crm-policy-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 760px;
}

.crm-policy-table th,
.crm-policy-table td {
    text-align: left;
    vertical-align: top;
    padding: 12px 10px;
    border-bottom: 1px solid rgba(15, 23, 42, 0.09);
}

.crm-policy-table th {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--muted, #667085);
}

.crm-policy-number {
    display: block;
    font-weight: 800;
    color: var(--text, #172033);
}

.crm-policy-company,
.crm-policy-product {
    display: block;
    margin-top: 3px;
    color: var(--muted, #667085);
    font-size: 0.86rem;
}

.crm-policy-critical-date {
    white-space: nowrap;
    font-weight: 700;
}

.crm-policy-status {
    display: inline-flex;
    align-items: center;
    padding: 5px 9px;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.06);
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: capitalize;
}

.crm-policy-empty {
    margin-top: 16px;
    padding: 18px;
    border: 1px dashed rgba(15, 23, 42, 0.18);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.02);
}

.crm-policy-empty strong {
    display: block;
    margin-bottom: 4px;
}

.crm-policy-no-access {
    margin-top: 16px;
}

@media (max-width: 720px) {
    .crm-policies-heading {
        display: block;
    }

    .crm-policy-table th,
    .crm-policy-table td {
        padding: 10px 8px;
    }
}

/* Sprint 18 S18-003 — carga temporal segura de póliza PDF */
.crm-policy-upload-box {
    margin-top: 16px;
    padding: 14px;
    border: 1px solid rgba(15, 23, 42, 0.10);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.025);
}

.crm-policy-upload-form {
    display: flex;
    align-items: end;
    gap: 12px;
    flex-wrap: wrap;
}

.crm-policy-upload-form label {
    flex: 1 1 320px;
    margin: 0;
}

.crm-policy-upload-form input[type="file"] {
    display: block;
    width: 100%;
    margin-top: 7px;
}

.crm-policy-upload-help {
    margin: 8px 0 0;
    color: var(--muted, #667085);
    font-size: 0.86rem;
    line-height: 1.45;
}

@media (max-width: 720px) {
    .crm-policy-upload-form {
        display: block;
    }

    .crm-policy-upload-form .btn-primary {
        width: 100%;
        margin-top: 12px;
    }
}

/* Sprint 18 S18-004 — preview estructurado de extracción OpenAI */
.crm-policy-ai-preview {
    margin-top: 16px;
    padding: 16px;
    border: 1px solid rgba(15, 23, 42, 0.10);
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.025);
}

.crm-policy-ai-preview h3 {
    margin: 4px 0 12px;
}

.crm-policy-ai-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
}

.crm-policy-ai-field {
    padding: 10px 12px;
    border-radius: 10px;
    background: #fff;
    border: 1px solid rgba(15, 23, 42, 0.08);
}

.crm-policy-ai-field span {
    display: block;
    margin-bottom: 4px;
    color: var(--muted, #667085);
    font-size: 0.76rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.crm-policy-ai-field strong {
    display: block;
    overflow-wrap: anywhere;
}

.crm-policy-ai-meta {
    margin: 10px 0 0;
    color: var(--muted, #667085);
    font-size: 0.78rem;
}

.crm-policy-ai-note {
    margin: 10px 0 0;
    font-size: 0.86rem;
}

@media (max-width: 800px) {
    .crm-policy-ai-grid {
        grid-template-columns: 1fr;
    }
}

/* Sprint 18 S18-005 — revisión humana y confirmación */
.crm-policy-review {
    margin-top: 16px;
    padding: 18px;
    border: 1px solid rgba(15, 23, 42, 0.10);
    border-radius: 16px;
    background: #fff;
}

.crm-policy-review-header {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 16px;
}

.crm-policy-review-critical {
    margin: 6px 0 0;
    color: var(--muted, #667085);
    font-size: 0.9rem;
}

.crm-policy-review-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.crm-policy-review-grid .field-full {
    grid-column: 1 / -1;
}

.crm-policy-review label {
    display: block;
    font-weight: 700;
    font-size: 0.87rem;
}

.crm-policy-review input,
.crm-policy-review select {
    display: block;
    width: 100%;
    margin-top: 6px;
}

.crm-policy-review .is-error {
    border-color: #b42318;
}

.crm-policy-review-error {
    display: block;
    margin-top: 5px;
    color: #b42318;
    font-size: 0.79rem;
    font-weight: 600;
}

.crm-policy-critical-field {
    padding: 12px;
    border-radius: 12px;
    background: rgba(6, 43, 95, 0.035);
    border: 1px solid rgba(6, 43, 95, 0.10);
}

.crm-policy-duplicate-warning {
    margin: 16px 0;
    padding: 14px;
    border-radius: 12px;
    border: 1px solid rgba(180, 83, 9, 0.20);
    background: rgba(245, 158, 11, 0.08);
}

.crm-policy-duplicate-warning ul {
    margin: 8px 0 0 18px;
}

.crm-policy-human-confirm {
    display: flex !important;
    align-items: flex-start;
    gap: 9px;
    margin-top: 16px;
    font-weight: 700;
}

.crm-policy-human-confirm input {
    width: auto;
    margin: 3px 0 0;
}

.crm-policy-review-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

.crm-policy-review-note {
    color: var(--muted, #667085);
    font-size: 0.82rem;
    margin: 10px 0 0;
}

@media (max-width: 760px) {
    .crm-policy-review-grid {
        grid-template-columns: 1fr;
    }

    .crm-policy-review-grid .field-full {
        grid-column: auto;
    }

    .crm-policy-review-header {
        display: block;
    }

    .crm-policy-review-actions .btn-primary {
        width: 100%;
    }
}

/* Sprint 18 S18-005 FIX-002 — página independiente de revisión */
.policy-review-page-header {
    align-items: flex-end;
}

.policy-review-page-card {
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.policy-review-title {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 16px;
}

.policy-review-title h2 {
    margin: 3px 0 6px;
}

.policy-review-ai-hint {
    margin-bottom: 18px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(6, 43, 95, 0.05);
    border: 1px solid rgba(6, 43, 95, 0.10);
}

.policy-review-section {
    padding: 18px 0;
    border-top: 1px solid rgba(15, 23, 42, 0.09);
}

.policy-review-section:first-of-type {
    border-top: 0;
}

.policy-review-section h3 {
    margin: 0 0 14px;
}

.policy-review-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.policy-review-grid .field-full {
    grid-column: 1 / -1;
}

.policy-review-grid label {
    display: block;
    font-weight: 700;
    font-size: 0.87rem;
}

.policy-review-grid input,
.policy-review-grid select {
    display: block;
    width: 100%;
    margin-top: 6px;
}

.policy-critical-field {
    padding: 12px;
    border-radius: 12px;
    background: rgba(6, 43, 95, 0.035);
    border: 1px solid rgba(6, 43, 95, 0.10);
}

.policy-check-row {
    display: flex !important;
    gap: 9px;
    align-items: flex-start;
    font-weight: 700;
}

.policy-check-row input {
    width: auto !important;
    margin: 3px 0 0 !important;
}

.policy-tax-section {
    background: rgba(243, 111, 33, 0.035);
    padding-left: 16px;
    padding-right: 16px;
    border-radius: 12px;
}

.policy-tax-options {
    display: flex;
    gap: 26px;
    flex-wrap: wrap;
}

.policy-review-confirmation {
    margin-top: 18px;
    padding: 18px;
    border-radius: 14px;
    background: rgba(6, 43, 95, 0.04);
    border: 1px solid rgba(6, 43, 95, 0.10);
}

.policy-review-confirmation p {
    color: var(--muted, #667085);
    font-size: 0.84rem;
}

.policy-review-confirmation .btn-primary {
    margin-top: 8px;
}

.policy-saved-popup {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(15, 23, 42, 0.42);
}

.policy-saved-popup[hidden] {
    display: none;
}

.policy-saved-popup__card {
    width: min(460px, 100%);
    padding: 26px;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 24px 70px rgba(15, 23, 42, 0.24);
    text-align: center;
}

.policy-saved-popup__card h3 {
    margin: 0 0 8px;
}

.policy-saved-popup__card p {
    margin: 0 0 18px;
    color: var(--muted, #667085);
}

@media (max-width: 760px) {
    .policy-review-grid {
        grid-template-columns: 1fr;
    }

    .policy-review-grid .field-full {
        grid-column: auto;
    }

    .policy-review-title {
        display: block;
    }

    .policy-tax-options {
        display: block;
    }

    .policy-tax-options .policy-check-row + .policy-check-row {
        margin-top: 12px;
    }
}

/* Sprint 18 S18-006 — datos complementarios comunes */
.policy-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
}

.policy-section-heading h2,
.policy-section-heading h3 {
    margin-top: 0;
}

.btn-small {
    padding: 8px 12px;
    min-height: auto;
    font-size: 0.82rem;
}

.policy-repeat-list {
    display: grid;
    gap: 10px;
    margin-top: 12px;
}

.policy-repeat-row {
    display: grid;
    grid-template-columns: 2fr 1.4fr 0.8fr 1.1fr auto;
    gap: 8px;
    align-items: center;
}

.insured-row {
    grid-template-columns: 2fr 1.4fr 1.1fr 1.1fr auto;
}

.policy-repeat-row input,
.policy-repeat-row select {
    width: 100%;
    margin: 0;
}

.policy-common-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0,1fr));
    gap: 12px;
}

.policy-common-summary-grid > div {
    padding: 12px;
    border: 1px solid rgba(15,23,42,.08);
    border-radius: 12px;
    background: rgba(15,23,42,.02);
}

.policy-common-summary-grid span {
    display: block;
    margin-bottom: 4px;
    color: var(--muted, #667085);
    font-size: .78rem;
}

.policy-common-summary-grid strong {
    display: block;
    overflow-wrap: anywhere;
}

.policy-common-detail-card {
    margin-top: 16px;
}

.policy-read-list {
    display: grid;
    gap: 8px;
}

.policy-read-list > div {
    padding: 10px 12px;
    border: 1px solid rgba(15,23,42,.08);
    border-radius: 10px;
}

.policy-read-list strong,
.policy-read-list span {
    display: block;
}

.policy-read-list span {
    margin-top: 3px;
    color: var(--muted, #667085);
    font-size: .84rem;
}

.policy-common-actions {
    margin-top: 18px;
    display: flex;
    justify-content: flex-end;
}

.policy-common-not-applicable {
    padding: 14px;
    border-radius: 12px;
    background: rgba(15,23,42,.035);
    color: var(--muted, #667085);
}

.crm-policy-detail-link {
    white-space: nowrap;
}

@media (max-width: 920px) {
    .policy-repeat-row,
    .insured-row {
        grid-template-columns: 1fr;
    }

    .policy-common-summary-grid {
        grid-template-columns: 1fr;
    }

    .policy-section-heading {
        display: block;
    }

    .policy-section-heading .btn-small {
        margin-top: 8px;
    }
}

/* Sprint 18 S18-007 — modificar/eliminar pólizas */
.crm-policy-actions {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    white-space: nowrap;
}

.crm-policy-icon-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid rgba(6, 43, 95, 0.14);
    border-radius: 10px;
    background: #fff;
    color: var(--brand, #062B5F);
    text-decoration: none;
}

.crm-policy-icon-action:hover {
    background: rgba(6, 43, 95, 0.05);
}

.crm-policy-icon-action--delete {
    color: #b42318;
    border-color: rgba(180, 35, 24, 0.18);
}

.crm-policy-icon-action--delete:hover {
    background: rgba(180, 35, 24, 0.05);
}

.crm-policy-icon-action svg {
    width: 18px;
    height: 18px;
}

.policy-management-card {
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

.policy-management-section {
    padding: 18px 0;
    border-top: 1px solid rgba(15, 23, 42, 0.09);
}

.policy-management-section:first-child {
    border-top: 0;
}

.policy-management-section h2 {
    margin: 0 0 14px;
}

.policy-management-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.policy-management-grid .field-full {
    grid-column: 1 / -1;
}

.policy-management-grid label {
    display: block;
    font-weight: 700;
    font-size: 0.87rem;
}

.policy-management-grid input,
.policy-management-grid select {
    display: block;
    width: 100%;
    margin-top: 6px;
}

.policy-management-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

.policy-delete-card {
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    padding: 28px;
}

.policy-delete-icon {
    width: 68px;
    height: 68px;
    margin: 0 auto 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(180, 35, 24, 0.08);
    color: #b42318;
}

.policy-delete-summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 10px;
    margin: 20px 0;
    text-align: left;
}

.policy-delete-summary > div {
    padding: 12px;
    border-radius: 10px;
    border: 1px solid rgba(15,23,42,.08);
    background: rgba(15,23,42,.02);
}

.policy-delete-summary span {
    display: block;
    color: var(--muted, #667085);
    font-size: .78rem;
    margin-bottom: 4px;
}

.policy-delete-warning {
    margin: 18px 0;
    padding: 14px;
    border-radius: 12px;
    background: rgba(180,35,24,.05);
    color: #7a271a;
    text-align: left;
}

.policy-delete-actions {
    display: flex;
    justify-content: center;
    gap: 10px;
}

.btn-danger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    padding: 10px 18px;
    border: 0;
    border-radius: 10px;
    background: #b42318;
    color: #fff;
    font-weight: 800;
    cursor: pointer;
}

@media (max-width: 760px) {
    .policy-management-grid,
    .policy-delete-summary {
        grid-template-columns: 1fr;
    }

    .policy-management-grid .field-full {
        grid-column: auto;
    }

    .policy-management-actions,
    .policy-delete-actions {
        flex-direction: column-reverse;
    }

    .policy-management-actions .btn-primary,
    .policy-management-actions .btn-secondary,
    .policy-delete-actions .btn-danger,
    .policy-delete-actions .btn-secondary {
        width: 100%;
    }
}

/* Sprint 18 S18-009 — adaptador GMM */
.crm-policy-gmm-brief {
    display: block;
    margin-top: 4px;
    color: var(--muted, #667085);
    font-size: 0.82rem;
    line-height: 1.35;
}

.policy-gmm-section {
    padding: 18px;
    border-radius: 14px;
    background: rgba(6, 43, 95, 0.025);
    border: 1px solid rgba(6, 43, 95, 0.09);
}

.policy-gmm-heading {
    margin-bottom: 14px;
}

.policy-gmm-heading h2,
.policy-gmm-heading h3 {
    margin: 3px 0 5px;
}

.policy-gmm-heading p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-delete-gmm {
    margin: 14px 0;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.02);
    text-align: left;
}

.policy-delete-gmm span,
.policy-delete-gmm strong,
.policy-delete-gmm small {
    display: block;
}

.policy-delete-gmm span {
    color: var(--muted, #667085);
    font-size: .78rem;
    margin-bottom: 3px;
}

.policy-delete-gmm small {
    margin-top: 4px;
    color: var(--muted, #667085);
}

/* Sprint 18 S18-010 — adaptador Vida */
.policy-life-section {
    padding: 18px;
    border-radius: 14px;
    background: rgba(6, 43, 95, 0.025);
    border: 1px solid rgba(6, 43, 95, 0.09);
}

.policy-life-heading {
    margin-bottom: 14px;
}

.policy-life-heading h2,
.policy-life-heading h3 {
    margin: 3px 0 5px;
}

.policy-life-heading p,
.policy-life-coverages-heading p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-life-coverages-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin: 22px 0 12px;
}

.policy-life-coverages-heading h3 {
    margin: 0 0 4px;
}

.policy-life-coverage-list {
    display: grid;
    gap: 10px;
}

.policy-life-coverage-row {
    display: grid;
    grid-template-columns: 2fr .8fr 1.15fr .7fr 1fr auto;
    gap: 8px;
    align-items: center;
}

.policy-life-coverage-row input {
    width: 100%;
    margin: 0;
}

.crm-policy-life-brief {
    display: block;
    margin-top: 4px;
    color: var(--muted, #667085);
    font-size: 0.82rem;
    line-height: 1.35;
}

.policy-delete-life {
    margin: 14px 0;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.02);
    text-align: left;
}

.policy-delete-life span,
.policy-delete-life strong,
.policy-delete-life small {
    display: block;
}

.policy-delete-life span {
    color: var(--muted, #667085);
    font-size: .78rem;
    margin-bottom: 3px;
}

.policy-delete-life small {
    margin-top: 4px;
    color: var(--muted, #667085);
}

@media (max-width: 920px) {
    .policy-life-coverage-row {
        grid-template-columns: 1fr;
    }

    .policy-life-coverages-heading {
        display: block;
    }

    .policy-life-coverages-heading .btn-small {
        margin-top: 8px;
    }
}

/* Sprint 18 S18-011 — adaptador Ahorro / Inversión */
.policy-savings-section {
    padding: 18px;
    border-radius: 14px;
    background: rgba(6, 43, 95, 0.025);
    border: 1px solid rgba(6, 43, 95, 0.09);
}

.policy-savings-heading {
    margin-bottom: 14px;
}

.policy-savings-heading h2,
.policy-savings-heading h3 {
    margin: 3px 0 5px;
}

.policy-savings-heading p,
.policy-savings-allocations-heading p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-savings-allocations-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    margin: 22px 0 12px;
}

.policy-savings-allocations-heading h3,
.policy-savings-allocations-heading h4 {
    margin: 0 0 4px;
}

.policy-savings-allocation-list {
    display: grid;
    gap: 10px;
}

.policy-savings-allocation-row {
    display: grid;
    grid-template-columns: 2fr .8fr .7fr 1fr .8fr auto;
    gap: 8px;
    align-items: center;
}

.policy-savings-allocation-row input {
    width: 100%;
    margin: 0;
}

.crm-policy-savings-brief {
    display: block;
    margin-top: 4px;
    color: var(--muted, #667085);
    font-size: 0.82rem;
    line-height: 1.35;
}

.policy-delete-savings {
    margin: 14px 0;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.02);
    text-align: left;
}

.policy-delete-savings span,
.policy-delete-savings strong,
.policy-delete-savings small {
    display: block;
}

.policy-delete-savings span {
    color: var(--muted, #667085);
    font-size: .78rem;
    margin-bottom: 3px;
}

.policy-delete-savings small {
    margin-top: 4px;
    color: var(--muted, #667085);
}

@media (max-width: 920px) {
    .policy-savings-allocation-row {
        grid-template-columns: 1fr;
    }

    .policy-savings-allocations-heading {
        display: block;
    }

    .policy-savings-allocations-heading .btn-small {
        margin-top: 8px;
    }
}

/* Sprint 18 S18-012 — Renovaciones y aniversarios */
.policy-renewals-page,.policy-renewal-draft-page{display:grid;gap:18px}
.policy-renewals-header,.policy-renewal-draft-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.policy-renewals-header h1,.policy-renewal-draft-header h1{margin:4px 0 6px}
.policy-renewals-header p,.policy-renewal-draft-header p{margin:0;color:var(--muted,#667085)}
.policy-traffic-legend{display:flex;flex-wrap:wrap;gap:12px}
.policy-traffic-legend>div{display:flex;align-items:center;gap:6px;padding:10px 12px;border:1px solid rgba(15,23,42,.08);border-radius:10px;background:#fff}
.policy-traffic-legend span:last-child{color:var(--muted,#667085);font-size:.86rem}
.policy-traffic-dot{display:inline-block;width:11px;height:11px;border-radius:999px;border:1px solid rgba(0,0,0,.08)}
.policy-traffic-dot.green{background:#22c55e}.policy-traffic-dot.orange{background:#f97316}.policy-traffic-dot.yellow{background:#facc15}.policy-traffic-dot.neutral{background:#cbd5e1}
.policy-renewal-filters{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:12px;align-items:end;padding:16px;border:1px solid rgba(15,23,42,.08);border-radius:14px;background:#fff}
.policy-renewal-filters label{display:grid;gap:5px;font-size:.84rem;font-weight:600}.policy-renewal-filters input,.policy-renewal-filters select,.policy-renewal-confirm-form input{width:100%}
.policy-renewal-filter-actions{display:flex;gap:8px}.policy-renewals-summary{color:var(--muted,#667085)}
.policy-renewal-batchbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid rgba(6,43,95,.12);border-radius:12px;background:rgba(6,43,95,.03);margin-bottom:12px}
.policy-renewal-batchbar>div{display:grid;gap:2px}.policy-renewal-batchbar span{color:var(--muted,#667085);font-size:.86rem}
.policy-renewals-table-wrap{border:1px solid rgba(15,23,42,.08);border-radius:14px;overflow:auto;background:#fff}
.policy-renewals-table{min-width:1320px;margin:0}.policy-renewals-table td{vertical-align:top}.policy-renewals-table td small{display:block;margin-top:4px;color:var(--muted,#667085)}
.policy-check-cell{width:42px;text-align:center}.policy-traffic-badge{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:.82rem;font-weight:700}
.policy-event-state{margin-left:17px}.policy-renewal-due{display:block;font-size:.82rem;font-weight:700}
.policy-renewal-status{display:inline-flex;margin-top:5px;padding:3px 7px;border-radius:999px;font-size:.76rem;font-weight:700}
.policy-renewal-status.pending{background:rgba(249,115,22,.1)}.policy-renewal-status.draft{background:rgba(250,204,21,.14)}.policy-renewal-status.confirmed{background:rgba(34,197,94,.1)}
.policy-renewal-actions{display:flex;flex-wrap:wrap;gap:7px 10px;align-items:center}.policy-renewal-actions a,.policy-renewal-actions .btn-link{font-size:.82rem}.policy-renewal-actions .action-primary{font-weight:700}
.policy-anniversary-attend{padding:0;border:0;background:transparent;cursor:pointer}.policy-renewal-pagination{display:flex;justify-content:center;align-items:center;gap:18px}
.policy-renewal-source-card{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:12px}
.policy-renewal-source-card>div{display:grid;gap:4px;padding:13px;border:1px solid rgba(15,23,42,.08);border-radius:10px;background:#fff}.policy-renewal-source-card span{color:var(--muted,#667085);font-size:.8rem}
.policy-renewal-draft-notice{padding:14px 16px;border-left:4px solid #f36f21;border-radius:8px;background:rgba(243,111,33,.045)}.policy-renewal-draft-notice p{margin:5px 0 0}
.policy-renewal-confirm-form{padding:18px;border:1px solid rgba(15,23,42,.08);border-radius:14px;background:#fff}.policy-renewal-form-grid{display:grid;grid-template-columns:repeat(2,minmax(200px,1fr));gap:14px}.policy-renewal-form-grid label{display:grid;gap:5px}.policy-renewal-form-grid .field-full{grid-column:1/-1}
.policy-inline-check{grid-template-columns:auto 1fr!important;align-items:center;justify-content:start}.policy-inline-check input{width:auto}.policy-renewal-confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
@media(max-width:1100px){.policy-renewal-filters{grid-template-columns:repeat(3,minmax(160px,1fr))}.policy-renewal-source-card{grid-template-columns:repeat(2,minmax(160px,1fr))}}
@media(max-width:720px){.policy-renewals-header,.policy-renewal-draft-header,.policy-renewal-batchbar{display:grid}.policy-renewal-filters,.policy-renewal-source-card,.policy-renewal-form-grid{grid-template-columns:1fr}.policy-renewal-form-grid .field-full{grid-column:auto}.policy-renewal-filter-actions,.policy-renewal-confirm-actions{flex-direction:column}}

/* S18-012 FIX-002 — Número sugerido y producto bloqueado */
.policy-renewal-number-box{display:grid;gap:8px}
.policy-renewal-suggested-help,.policy-renewal-locked-help{display:block;color:var(--muted,#667085);font-size:.82rem;line-height:1.4}
.policy-renewal-suggestion-warning{padding:9px 11px;border-radius:8px;background:rgba(250,204,21,.12);border:1px solid rgba(202,138,4,.18);font-size:.84rem}
.policy-renewal-locked-field[readonly],#renewalPolicyNumber[readonly]{background:rgba(15,23,42,.045);cursor:not-allowed}

/* S18-012 FIX-003 — compactación de semáforo y acciones */
.policy-renewal-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 6px;
    min-width: 154px;
}

.policy-renewal-action-button {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 7px;
    min-height: 34px;
    padding: 6px 9px;
    border: 1px solid rgba(6, 43, 95, .16);
    border-radius: 9px;
    background: #fff;
    color: #062b5f;
    font-size: .78rem;
    font-weight: 700;
    line-height: 1.15;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s ease, border-color .15s ease, transform .15s ease;
}

.policy-renewal-action-button:hover,
.policy-renewal-action-button:focus-visible {
    background: rgba(6, 43, 95, .045);
    border-color: rgba(6, 43, 95, .32);
    text-decoration: none;
    transform: translateY(-1px);
}

.policy-renewal-action-button svg {
    width: 17px;
    height: 17px;
    flex: 0 0 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.policy-renewal-action-primary {
    border-color: rgba(243, 111, 33, .35);
    background: rgba(243, 111, 33, .06);
    color: #b84f0c;
}

.policy-renewal-action-primary:hover,
.policy-renewal-action-primary:focus-visible {
    background: rgba(243, 111, 33, .11);
    border-color: rgba(243, 111, 33, .55);
}

.policy-traffic-badge {
    gap: 5px;
    font-size: .78rem;
}

.policy-traffic-badge .policy-traffic-dot {
    width: 10px;
    height: 10px;
}

@media (max-width: 720px) {
    .policy-renewal-actions {
        min-width: 142px;
    }
}

/* S18-012 FIX-004 — sin columna Renovación + separación de registros */
.policy-renewals-table tbody .policy-renewal-record td {
    padding-top: 14px;
    padding-bottom: 14px;
    border-top: 1px solid rgba(6, 43, 95, .12);
}

.policy-renewals-table tbody .policy-renewal-record:first-child td {
    border-top: 0;
}

.policy-renewals-table tbody .policy-renewal-record:hover td {
    background: rgba(6, 43, 95, .018);
}

.policy-renewal-actions {
    min-width: 190px;
    gap: 7px;
}

.policy-renewal-action-button {
    width: 100%;
    min-height: 36px;
    padding: 7px 10px;
    white-space: normal;
}

.policy-renewal-action-button span {
    line-height: 1.2;
}

.policy-renewal-action-state {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    max-width: 100%;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.1;
}

.policy-renewal-action-state.draft {
    background: rgba(250, 204, 21, .16);
    color: #7a5b00;
}

.policy-renewal-action-state.confirmed {
    background: rgba(34, 197, 94, .11);
    color: #166534;
}

@media (max-width: 720px) {
    .policy-renewal-actions {
        min-width: 172px;
    }
}

/* S18-012 FIX-006 — columna Póliza 75% + tabla sin scroll horizontal */
.policy-renewals-table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
}

.policy-renewals-table .policy-renewal-policy-column {
    width: 165px;
    max-width: 165px;
    min-width: 0;
}

.policy-renewals-table td.policy-renewal-policy-column,
.policy-renewals-table th.policy-renewal-policy-column {
    overflow-wrap: anywhere;
    word-break: normal;
}

.policy-renewals-table td.policy-renewal-policy-column strong,
.policy-renewals-table td.policy-renewal-policy-column small {
    max-width: 100%;
    white-space: normal;
}

.policy-renewals-table-wrap {
    overflow-x: hidden;
}

@media (max-width: 1180px) {
    .policy-renewals-table .policy-renewal-policy-column {
        width: 150px;
        max-width: 150px;
    }

    .policy-renewal-actions {
        min-width: 160px;
    }
}

@media (max-width: 900px) {
    .policy-renewals-table {
        font-size: .92rem;
    }

    .policy-renewals-table .policy-renewal-policy-column {
        width: 135px;
        max-width: 135px;
    }

    .policy-renewal-actions {
        min-width: 145px;
    }
}

/* Sprint 18 S18-013 — Vencimientos y alertas */
.policy-expiration-alerts-page {
    display: grid;
    gap: 18px;
}

.policy-expiration-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}

.policy-expiration-header h1 {
    margin: 4px 0 6px;
}

.policy-expiration-header p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-expiration-stats {
    display: grid;
    grid-template-columns: repeat(6, minmax(105px, 1fr));
    gap: 10px;
}

.policy-expiration-stat {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 64px;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 12px;
    background: #fff;
    color: #0f172a;
    text-decoration: none;
}

.policy-expiration-stat span {
    font-size: .82rem;
    font-weight: 700;
}

.policy-expiration-stat strong {
    font-size: 1.35rem;
}

.policy-expiration-stat.preventive {
    border-left: 4px solid #60a5fa;
}

.policy-expiration-stat.attention {
    border-left: 4px solid #eab308;
}

.policy-expiration-stat.priority {
    border-left: 4px solid #f59e0b;
}

.policy-expiration-stat.high {
    border-left: 4px solid #f97316;
}

.policy-expiration-stat.urgent {
    border-left: 4px solid #ef4444;
}

.policy-expiration-stat.critical {
    border-left: 4px solid #991b1b;
}

.policy-expiration-filters {
    display: grid;
    grid-template-columns: repeat(7, minmax(135px, 1fr));
    gap: 10px;
    align-items: end;
    padding: 15px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
}

.policy-expiration-filters label {
    display: grid;
    gap: 5px;
    font-size: .82rem;
    font-weight: 700;
}

.policy-expiration-filters input,
.policy-expiration-filters select {
    width: 100%;
}

.policy-expiration-filter-actions {
    display: flex;
    gap: 7px;
}

.policy-expiration-summary {
    color: var(--muted, #667085);
}

.policy-expiration-table-wrap {
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
    overflow-x: hidden;
}

.policy-expiration-table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
    margin: 0;
}

.policy-expiration-table th,
.policy-expiration-table td {
    vertical-align: top;
}

.policy-expiration-record td {
    padding-top: 13px;
    padding-bottom: 13px;
    border-top: 1px solid rgba(6, 43, 95, .10);
}

.policy-expiration-record:first-child td {
    border-top: 0;
}

.policy-expiration-table td small {
    display: block;
    margin-top: 4px;
    color: var(--muted, #667085);
}

.policy-expiration-policy-column {
    width: 150px;
    max-width: 150px;
    overflow-wrap: anywhere;
}

.policy-expiration-priority {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .78rem;
    font-weight: 800;
    white-space: nowrap;
}

.policy-expiration-dot {
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background: #94a3b8;
}

.policy-expiration-priority.preventive .policy-expiration-dot {
    background: #60a5fa;
}

.policy-expiration-priority.attention .policy-expiration-dot {
    background: #eab308;
}

.policy-expiration-priority.priority .policy-expiration-dot {
    background: #f59e0b;
}

.policy-expiration-priority.high .policy-expiration-dot {
    background: #f97316;
}

.policy-expiration-priority.urgent .policy-expiration-dot {
    background: #ef4444;
}

.policy-expiration-priority.critical .policy-expiration-dot {
    background: #991b1b;
}

.policy-expiration-days {
    white-space: nowrap;
}

.policy-expiration-days.critical {
    color: #991b1b;
}

.policy-expiration-status {
    display: inline-flex;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 800;
    white-space: nowrap;
}

.policy-expiration-status.pending {
    background: rgba(245, 158, 11, .12);
}

.policy-expiration-status.in_progress {
    background: rgba(59, 130, 246, .10);
}

.policy-expiration-status.attended {
    background: rgba(34, 197, 94, .11);
}

.policy-expiration-actions {
    display: grid;
    gap: 6px;
    min-width: 175px;
}

.policy-expiration-actions form {
    margin: 0;
}

.policy-expiration-action {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 7px;
    width: 100%;
    min-height: 34px;
    padding: 6px 9px;
    border: 1px solid rgba(6, 43, 95, .16);
    border-radius: 9px;
    background: #fff;
    color: #062b5f;
    font: inherit;
    font-size: .76rem;
    font-weight: 700;
    line-height: 1.15;
    text-decoration: none;
    cursor: pointer;
}

.policy-expiration-action:hover,
.policy-expiration-action:focus-visible {
    background: rgba(6, 43, 95, .045);
    text-decoration: none;
}

.policy-expiration-action svg {
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.policy-expiration-action-success {
    border-color: rgba(34, 197, 94, .30);
    color: #166534;
}

.policy-expiration-action-renew {
    border-color: rgba(243, 111, 33, .35);
    background: rgba(243, 111, 33, .06);
    color: #b84f0c;
}

.policy-expiration-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 18px;
}

@media (max-width: 1180px) {
    .policy-expiration-stats {
        grid-template-columns: repeat(3, 1fr);
    }

    .policy-expiration-filters {
        grid-template-columns: repeat(4, minmax(140px, 1fr));
    }

    .policy-expiration-policy-column {
        width: 135px;
        max-width: 135px;
    }
}

@media (max-width: 760px) {
    .policy-expiration-header {
        display: grid;
    }

    .policy-expiration-stats,
    .policy-expiration-filters {
        grid-template-columns: 1fr 1fr;
    }

    .policy-expiration-filter-actions {
        grid-column: 1 / -1;
    }
}

/* S18-013 FIX-001 — confirmaciones de seguimiento y atendida */
body.policy-expiration-modal-open{overflow:hidden}
.policy-expiration-modal[hidden]{display:none!important}
.policy-expiration-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:20px}
.policy-expiration-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.52);backdrop-filter:blur(2px)}
.policy-expiration-modal-dialog{position:relative;z-index:1;width:min(520px,100%);padding:24px;border-radius:16px;background:#fff;box-shadow:0 24px 70px rgba(15,23,42,.22)}
.policy-expiration-modal-dialog h2{margin:10px 0 8px;color:#062b5f}
.policy-expiration-modal-dialog p{margin:0;color:#475467;line-height:1.5}
.policy-expiration-modal-policy{margin-top:8px!important;font-weight:800;color:#062b5f!important}
.policy-expiration-modal-close{position:absolute;top:12px;right:14px;width:34px;height:34px;border:0;border-radius:999px;background:rgba(15,23,42,.05);color:#475467;font-size:1.35rem;cursor:pointer}
.policy-expiration-modal-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;font-weight:900}
.policy-expiration-modal-icon.info{background:rgba(59,130,246,.10);color:#2563eb}
.policy-expiration-modal-icon.warning{background:rgba(249,115,22,.10);color:#ea580c}
.policy-expiration-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}
.policy-expiration-modal-actions form{margin:0}
.policy-expiration-modal-actions-three{flex-wrap:wrap}
.policy-expiration-modal-renew{background:#f36f21;border-color:#f36f21}
@media(max-width:620px){.policy-expiration-modal-actions,.policy-expiration-modal-actions-three{display:grid;grid-template-columns:1fr}.policy-expiration-modal-actions form,.policy-expiration-modal-actions button{width:100%}}

/* Sprint 18 S18-014 — Portafolio general de pólizas */
.policy-portfolio-page {
    display: grid;
    gap: 18px;
}

.policy-portfolio-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
}

.policy-portfolio-header h1 {
    margin: 4px 0 6px;
}

.policy-portfolio-header p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-portfolio-header-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.policy-portfolio-stats {
    display: grid;
    grid-template-columns: repeat(7, minmax(105px, 1fr));
    gap: 9px;
}

.policy-portfolio-stat {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 62px;
    padding: 11px 12px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-left: 4px solid #94a3b8;
    border-radius: 12px;
    background: #fff;
    color: #0f172a;
    text-decoration: none;
}

.policy-portfolio-stat span {
    font-size: .78rem;
    font-weight: 700;
    line-height: 1.15;
}

.policy-portfolio-stat strong {
    font-size: 1.28rem;
}

.policy-portfolio-stat.valid {
    border-left-color: #22c55e;
}

.policy-portfolio-stat.expiring {
    border-left-color: #f59e0b;
}

.policy-portfolio-stat.critical {
    border-left-color: #b91c1c;
}

.policy-portfolio-stat.tracking {
    border-left-color: #3b82f6;
}

.policy-portfolio-stat.draft {
    border-left-color: #f36f21;
}

.policy-portfolio-stat.historical {
    border-left-color: #64748b;
}

.policy-portfolio-filters {
    display: grid;
    grid-template-columns: repeat(5, minmax(150px, 1fr));
    gap: 11px;
    align-items: end;
    padding: 15px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
}

.policy-portfolio-filters label {
    display: grid;
    gap: 5px;
    min-width: 0;
    font-size: .82rem;
    font-weight: 700;
}

.policy-portfolio-filters input,
.policy-portfolio-filters select {
    width: 100%;
    min-width: 0;
}

.policy-portfolio-filter-actions {
    display: flex;
    gap: 8px;
}

.policy-portfolio-summary {
    color: var(--muted, #667085);
}

.policy-portfolio-table-wrap {
    width: 100%;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
    overflow-x: hidden;
}

.policy-portfolio-table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
    margin: 0;
}

.policy-portfolio-table th,
.policy-portfolio-table td {
    vertical-align: top;
}

.policy-portfolio-record td {
    padding-top: 13px;
    padding-bottom: 13px;
    border-top: 1px solid rgba(6, 43, 95, .10);
}

.policy-portfolio-record:first-child td {
    border-top: 0;
}

.policy-portfolio-table td small {
    display: block;
    margin-top: 4px;
    color: var(--muted, #667085);
    line-height: 1.25;
}

.policy-portfolio-policy-column {
    width: 185px;
    max-width: 185px;
    overflow-wrap: anywhere;
}

.policy-portfolio-plan {
    color: #334155 !important;
}

.policy-portfolio-type {
    font-size: .74rem;
    color: #64748b !important;
}

.policy-portfolio-expired-days {
    color: #991b1b !important;
    font-weight: 700;
}

.policy-portfolio-status {
    display: inline-flex;
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(100, 116, 139, .10);
    font-size: .72rem;
    font-weight: 800;
    white-space: nowrap;
}

.policy-portfolio-status.activo {
    background: rgba(34, 197, 94, .10);
    color: #166534;
}

.policy-portfolio-status.cancelado {
    background: rgba(239, 68, 68, .10);
    color: #991b1b;
}

.policy-portfolio-status.reemplazado {
    background: rgba(59, 130, 246, .10);
    color: #1d4ed8;
}

.policy-portfolio-status.inactivo {
    background: rgba(100, 116, 139, .11);
    color: #475569;
}

.policy-portfolio-situation {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
}

.policy-portfolio-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 4px 7px;
    border-radius: 999px;
    background: rgba(100, 116, 139, .10);
    font-size: .70rem;
    font-weight: 800;
    line-height: 1.05;
}

.policy-portfolio-badge.valid {
    background: rgba(34, 197, 94, .10);
    color: #166534;
}

.policy-portfolio-badge.preventive {
    background: rgba(96, 165, 250, .13);
    color: #1d4ed8;
}

.policy-portfolio-badge.attention {
    background: rgba(234, 179, 8, .15);
    color: #854d0e;
}

.policy-portfolio-badge.priority {
    background: rgba(245, 158, 11, .14);
    color: #92400e;
}

.policy-portfolio-badge.high {
    background: rgba(249, 115, 22, .13);
    color: #9a3412;
}

.policy-portfolio-badge.urgent,
.policy-portfolio-badge.critical {
    background: rgba(239, 68, 68, .11);
    color: #991b1b;
}

.policy-portfolio-badge.tracking {
    background: rgba(59, 130, 246, .10);
    color: #1d4ed8;
}

.policy-portfolio-badge.draft {
    background: rgba(243, 111, 33, .10);
    color: #b84f0c;
}

.policy-portfolio-badge.renewed {
    background: rgba(99, 102, 241, .10);
    color: #4338ca;
}

.policy-portfolio-badge.cancelled,
.policy-portfolio-badge.inactive,
.policy-portfolio-badge.neutral {
    background: rgba(100, 116, 139, .10);
    color: #475569;
}

.policy-portfolio-actions {
    display: grid;
    gap: 6px;
    min-width: 155px;
}

.policy-portfolio-action {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 7px;
    width: 100%;
    min-height: 34px;
    padding: 6px 9px;
    border: 1px solid rgba(6, 43, 95, .16);
    border-radius: 9px;
    background: #fff;
    color: #062b5f;
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.15;
    text-decoration: none;
}

.policy-portfolio-action:hover,
.policy-portfolio-action:focus-visible {
    background: rgba(6, 43, 95, .045);
    text-decoration: none;
}

.policy-portfolio-action svg {
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.policy-portfolio-action-renew {
    border-color: rgba(243, 111, 33, .35);
    background: rgba(243, 111, 33, .055);
    color: #b84f0c;
}

.policy-portfolio-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
}

@media (max-width: 1260px) {
    .policy-portfolio-stats {
        grid-template-columns: repeat(4, minmax(110px, 1fr));
    }

    .policy-portfolio-filters {
        grid-template-columns: repeat(4, minmax(145px, 1fr));
    }

    .policy-portfolio-policy-column {
        width: 165px;
        max-width: 165px;
    }

    .policy-portfolio-actions {
        min-width: 145px;
    }
}

@media (max-width: 900px) {
    .policy-portfolio-stats {
        grid-template-columns: repeat(2, 1fr);
    }

    .policy-portfolio-filters {
        grid-template-columns: repeat(2, minmax(140px, 1fr));
    }

    .policy-portfolio-header {
        display: grid;
    }

    .policy-portfolio-header-actions {
        justify-content: flex-start;
    }
}

@media (max-width: 620px) {
    .policy-portfolio-stats,
    .policy-portfolio-filters {
        grid-template-columns: 1fr;
    }

    .policy-portfolio-filter-actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }
}

/* Sprint 18 S18-015 — Actividades de póliza dentro del Timeline CRM */
.crm-timeline-item--policy .crm-timeline-marker {
    min-width: 42px;
    font-size: .68rem;
    font-weight: 800;
}

.crm-policy-activity-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 8px;
}

.crm-policy-activity-badge {
    display: inline-flex;
    align-items: center;
    min-height: 25px;
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(243, 111, 33, .09);
    color: #b84f0c;
    font-size: .72rem;
    font-weight: 800;
}

.crm-policy-activity-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 9px;
    padding: 6px 9px;
    border: 1px solid rgba(6, 43, 95, .16);
    border-radius: 8px;
    background: #fff;
    color: #062b5f;
    font-size: .76rem;
    font-weight: 700;
    text-decoration: none;
}

.crm-policy-activity-link:hover,
.crm-policy-activity-link:focus-visible {
    background: rgba(6, 43, 95, .045);
    text-decoration: none;
}

/* Sprint 18 S18-016 — Auditoría IA, costos, seguridad y QA */
.policy-ai-audit-page {
    display: grid;
    gap: 18px;
}

.policy-ai-audit-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
}

.policy-ai-audit-header h1 {
    margin: 4px 0 6px;
}

.policy-ai-audit-header p,
.policy-ai-rates-heading p {
    margin: 0;
    color: var(--muted, #667085);
}

.policy-ai-audit-header-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.policy-ai-audit-stats {
    display: grid;
    grid-template-columns: repeat(7, minmax(105px, 1fr));
    gap: 9px;
}

.policy-ai-audit-stat {
    display: grid;
    gap: 5px;
    min-height: 68px;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-left: 4px solid #64748b;
    border-radius: 12px;
    background: #fff;
}

.policy-ai-audit-stat span {
    color: #64748b;
    font-size: .75rem;
    font-weight: 700;
}

.policy-ai-audit-stat strong {
    color: #0f172a;
    font-size: 1.18rem;
}

.policy-ai-audit-stat.success {
    border-left-color: #22c55e;
}

.policy-ai-audit-stat.danger {
    border-left-color: #ef4444;
}

.policy-ai-audit-stat.cost {
    border-left-color: #f36f21;
}

.policy-ai-rate-warning,
.policy-ai-privacy-note {
    padding: 12px 14px;
    border-radius: 10px;
    background: rgba(245, 158, 11, .09);
    color: #78350f;
    line-height: 1.45;
}

.policy-ai-privacy-note {
    background: rgba(6, 43, 95, .055);
    color: #334155;
}

.policy-ai-security-panel,
.policy-ai-rates-panel {
    display: grid;
    gap: 14px;
    padding: 16px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
}

.policy-ai-security-heading,
.policy-ai-rates-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
}

.policy-ai-security-heading h2,
.policy-ai-rates-heading h2 {
    margin: 4px 0 0;
}

.policy-ai-qa-global {
    display: inline-flex;
    padding: 6px 10px;
    border-radius: 999px;
    font-size: .76rem;
    font-weight: 800;
}

.policy-ai-qa-global.ok {
    background: rgba(34, 197, 94, .10);
    color: #166534;
}

.policy-ai-qa-global.fail {
    background: rgba(239, 68, 68, .10);
    color: #991b1b;
}

.policy-ai-security-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.policy-ai-security-check {
    display: flex;
    gap: 9px;
    align-items: flex-start;
    padding: 10px;
    border-radius: 10px;
    background: #f8fafc;
}

.policy-ai-security-check.ok {
    border: 1px solid rgba(34, 197, 94, .16);
}

.policy-ai-security-check.fail {
    border: 1px solid rgba(239, 68, 68, .22);
    background: rgba(254, 242, 242, .65);
}

.policy-ai-security-check strong,
.policy-ai-security-check small {
    display: block;
}

.policy-ai-security-check small {
    margin-top: 3px;
    color: #64748b;
    line-height: 1.35;
}

.policy-ai-security-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    border-radius: 50%;
    background: rgba(34, 197, 94, .11);
    color: #166534;
    font-weight: 900;
}

.policy-ai-security-check.fail .policy-ai-security-icon {
    background: rgba(239, 68, 68, .11);
    color: #991b1b;
}

.policy-ai-audit-filters {
    display: grid;
    grid-template-columns: repeat(4, minmax(150px, 1fr));
    gap: 11px;
    align-items: end;
    padding: 15px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
}

.policy-ai-audit-filters label,
.policy-ai-rate-form label {
    display: grid;
    gap: 5px;
    min-width: 0;
    font-size: .82rem;
    font-weight: 700;
}

.policy-ai-audit-filters input,
.policy-ai-audit-filters select,
.policy-ai-rate-form input {
    width: 100%;
    min-width: 0;
}

.policy-ai-filter-actions {
    display: flex;
    gap: 8px;
}

.policy-ai-audit-summary {
    color: #667085;
}

.policy-ai-audit-table-wrap,
.policy-ai-rates-table-wrap {
    width: 100%;
    overflow-x: auto;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
}

.policy-ai-audit-table,
.policy-ai-rates-table {
    width: 100%;
    border-collapse: collapse;
}

.policy-ai-audit-table {
    min-width: 1120px;
}

.policy-ai-rates-table {
    min-width: 900px;
}

.policy-ai-audit-table th,
.policy-ai-audit-table td,
.policy-ai-rates-table th,
.policy-ai-rates-table td {
    padding: 10px;
    text-align: left;
    vertical-align: top;
    border-bottom: 1px solid rgba(15, 23, 42, .07);
}

.policy-ai-audit-table td small {
    display: block;
    margin-top: 4px;
    color: #64748b;
    line-height: 1.3;
}

.policy-ai-model,
.policy-ai-response-id {
    overflow-wrap: anywhere;
}

.policy-ai-status,
.policy-ai-review-status {
    display: inline-flex;
    padding: 4px 7px;
    border-radius: 999px;
    font-size: .71rem;
    font-weight: 800;
}

.policy-ai-status.success,
.policy-ai-review-status.confirmed {
    background: rgba(34, 197, 94, .10);
    color: #166534;
}

.policy-ai-status.failed,
.policy-ai-status.api_error,
.policy-ai-status.invalid_json,
.policy-ai-status.configuration_error {
    background: rgba(239, 68, 68, .10);
    color: #991b1b;
}

.policy-ai-status.validation_failed,
.policy-ai-review-status.pending {
    background: rgba(245, 158, 11, .12);
    color: #92400e;
}

.policy-ai-review-status.not_started {
    background: rgba(100, 116, 139, .11);
    color: #475569;
}

.policy-ai-error {
    max-width: 270px;
    color: #991b1b !important;
    overflow-wrap: anywhere;
}

.policy-ai-cost-missing {
    display: inline-flex;
    padding: 4px 7px;
    border-radius: 999px;
    background: rgba(245, 158, 11, .12);
    color: #92400e;
    font-size: .72rem;
    font-weight: 800;
}

.policy-ai-actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.policy-ai-action {
    display: inline-flex;
    padding: 6px 8px;
    border: 1px solid rgba(6, 43, 95, .16);
    border-radius: 8px;
    color: #062b5f;
    font-size: .74rem;
    font-weight: 700;
    text-decoration: none;
}

.policy-ai-action:hover,
.policy-ai-action:focus-visible {
    background: rgba(6, 43, 95, .045);
    text-decoration: none;
}

.policy-ai-pagination {
    display: flex;
    justify-content: center;
    gap: 18px;
    align-items: center;
}

.policy-ai-rate-form {
    display: grid;
    grid-template-columns: repeat(3, minmax(150px, 1fr));
    gap: 11px;
    align-items: end;
    padding-top: 12px;
    border-top: 1px solid rgba(15, 23, 42, .08);
}

.policy-ai-rate-source {
    grid-column: span 2;
}

@media (max-width: 1180px) {
    .policy-ai-audit-stats {
        grid-template-columns: repeat(4, 1fr);
    }

    .policy-ai-audit-filters,
    .policy-ai-rate-form {
        grid-template-columns: repeat(2, minmax(150px, 1fr));
    }
}

@media (max-width: 760px) {
    .policy-ai-audit-header,
    .policy-ai-security-heading,
    .policy-ai-rates-heading {
        display: grid;
    }

    .policy-ai-audit-stats,
    .policy-ai-security-grid,
    .policy-ai-audit-filters,
    .policy-ai-rate-form {
        grid-template-columns: 1fr;
    }

    .policy-ai-rate-source {
        grid-column: auto;
    }
}

/* PRE-S19-001 — clasificación comercial CRM */
.crm-purpose-field select {
    font-weight: 700;
}

.crm-purpose-badge,
.crm-result-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 800;
}

.crm-purpose-badge {
    background: rgba(6, 43, 95, .08);
    color: #062b5f;
}

.crm-result-badge {
    background: rgba(243, 111, 33, .09);
    color: #a3470f;
}

.crm-call-complete {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.crm-call-complete select {
    min-width: 150px;
    max-width: 205px;
    min-height: 34px;
}

@media (max-width: 760px) {
    .crm-call-complete {
        display: grid;
        width: 100%;
    }

    .crm-call-complete select {
        max-width: none;
        width: 100%;
    }
}

/* PRE-S19-002 V2 — Precliente con destino múltiple */
.pre-s19-destination-note {
    display: grid;
    gap: 6px;
    margin-top: 7px;
    padding: 10px 12px;
    border: 1px solid rgba(6, 43, 95, .12);
    border-radius: 10px;
    background: rgba(6, 43, 95, .035);
}

.pre-s19-destination-note strong {
    color: #062b5f;
}

.pre-s19-destination-note small {
    color: #64748b;
    line-height: 1.45;
}

.pre-s19-client-path {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 3px;
    font-size: .78rem;
    font-weight: 800;
    color: #9a3412;
}

.pre-s19-client-path span {
    white-space: nowrap;
}

.pre-s19-client-path i {
    font-style: normal;
    color: #94a3b8;
}

.pre-s19-email-funnel-note {
    display: block;
    margin-top: 5px;
    color: #64748b;
    line-height: 1.45;
}

.pre-s19-email-funnel-note b {
    color: #9a3412;
}

/* Sprint 19 S19-002 — Embudo comercial principal */

.commercial-funnel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
}

.commercial-funnel-header .eyebrow {
    margin: 0 0 4px;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #64748b;
}

.commercial-funnel-version {
    min-width: 180px;
    display: grid;
    gap: 3px;
    padding: 12px 14px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 12px;
    background: #fff;
}

.commercial-funnel-version span,
.commercial-funnel-version small {
    color: #64748b;
}

.commercial-funnel-version strong {
    color: #062b5f;
    font-size: 1.06rem;
}

.commercial-funnel-methodology {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(220px, 1fr);
    gap: 18px;
    margin-bottom: 16px;
}

.commercial-funnel-methodology p {
    margin: 5px 0 0;
    color: #475569;
    line-height: 1.55;
}

.commercial-filter-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(150px, 1fr)) auto;
    gap: 12px;
    align-items: end;
}

.commercial-filter-grid label {
    display: grid;
    gap: 6px;
    font-size: .8rem;
    font-weight: 700;
    color: #334155;
}

.commercial-filter-grid input,
.commercial-filter-grid select {
    min-height: 42px;
}

.commercial-filter-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

.commercial-funnel-kpis {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin: 16px 0;
}

.commercial-kpi-card {
    display: grid;
    gap: 4px;
    min-height: 116px;
    padding: 15px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .04);
}

.commercial-kpi-card span,
.commercial-kpi-card small {
    color: #64748b;
}

.commercial-kpi-card strong {
    color: #062b5f;
    font-size: 1.9rem;
    line-height: 1;
}

.commercial-panel-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 15px;
}

.commercial-panel-heading h2 {
    margin-bottom: 4px;
}

.commercial-panel-heading p {
    margin: 0;
    color: #64748b;
}

.commercial-funnel-flow {
    display: grid;
    gap: 9px;
}

.commercial-funnel-stage {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .07);
    border-radius: 12px;
    background: #fff;
}

.commercial-funnel-stage-number {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(6, 43, 95, .08);
    color: #062b5f;
    font-weight: 900;
}

.commercial-funnel-stage-main {
    min-width: 0;
}

.commercial-funnel-stage-title {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: baseline;
}

.commercial-funnel-stage-title h3 {
    margin: 0;
    font-size: .96rem;
    color: #0f172a;
}

.commercial-funnel-stage-title strong {
    color: #062b5f;
    font-size: 1.15rem;
}

.commercial-funnel-bar {
    height: 7px;
    margin: 7px 0;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(15, 23, 42, .07);
}

.commercial-funnel-bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #062b5f, #f36f21);
}

.commercial-funnel-stage-meta {
    display: flex;
    gap: 15px;
    flex-wrap: wrap;
    color: #64748b;
    font-size: .76rem;
}

.commercial-funnel-stage-meta b {
    color: #334155;
}

.commercial-funnel-table-panel,
.commercial-funnel-rules {
    margin-top: 16px;
}

.commercial-funnel-table {
    width: 100%;
    border-collapse: collapse;
}

.commercial-funnel-table th,
.commercial-funnel-table td {
    padding: 11px 10px;
    border-bottom: 1px solid rgba(15, 23, 42, .07);
    text-align: left;
    vertical-align: top;
}

.commercial-funnel-table th {
    color: #64748b;
    font-size: .74rem;
    text-transform: uppercase;
    letter-spacing: .035em;
}

.commercial-funnel-table td {
    color: #334155;
}

.commercial-funnel-table td small {
    display: block;
    margin-top: 4px;
    max-width: 640px;
    color: #64748b;
    line-height: 1.35;
}

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

.commercial-rules-grid > div {
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .07);
    border-radius: 11px;
    background: rgba(248, 250, 252, .8);
}

.commercial-rules-grid strong {
    color: #062b5f;
}

.commercial-rules-grid p {
    margin: 5px 0 0;
    color: #64748b;
    line-height: 1.45;
}

.commercial-funnel-error {
    border-left: 4px solid #b91c1c;
}

@media (max-width: 1120px) {
    .commercial-filter-grid {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }

    .commercial-funnel-kpis {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

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

@media (max-width: 760px) {
    .commercial-funnel-header,
    .commercial-funnel-methodology {
        display: grid;
        grid-template-columns: 1fr;
    }

    .commercial-filter-grid {
        grid-template-columns: 1fr;
    }

    .commercial-funnel-kpis {
        grid-template-columns: 1fr 1fr;
    }

    .commercial-rules-grid {
        grid-template-columns: 1fr;
    }

    .commercial-funnel-stage-title {
        align-items: flex-start;
    }

    .commercial-funnel-stage-meta {
        display: grid;
        gap: 4px;
    }
}

@media (max-width: 500px) {
    .commercial-funnel-kpis {
        grid-template-columns: 1fr;
    }

    .commercial-filter-actions {
        display: grid;
        width: 100%;
    }
}

/* Sprint 19 S19-003 — Dashboard ejecutivo comercial */

.commercial-dashboard-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
}

.commercial-dashboard-header .eyebrow {
    margin: 0 0 4px;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #64748b;
}

.commercial-dashboard-header-actions {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.commercial-dashboard-version {
    min-width: 178px;
    display: grid;
    gap: 3px;
    padding: 12px 14px;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 12px;
    background: #fff;
}

.commercial-dashboard-version span,
.commercial-dashboard-version small {
    color: #64748b;
}

.commercial-dashboard-version strong {
    color: #062b5f;
    font-size: 1.06rem;
}

.commercial-dashboard-scope {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}

.commercial-dashboard-scope > div {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.commercial-dashboard-scope span {
    color: #64748b;
    font-size: .76rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .035em;
}

.commercial-dashboard-scope strong {
    color: #334155;
    overflow-wrap: anywhere;
}

.commercial-dashboard-history-note {
    margin-bottom: 16px;
    border-left: 4px solid #f36f21;
    background: #fffaf5;
}

.commercial-dashboard-history-note strong {
    color: #9a3412;
}

.commercial-dashboard-history-note p {
    margin: 5px 0 0;
    color: #7c2d12;
    line-height: 1.5;
}

.commercial-dashboard-filter-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(160px, 1fr));
    gap: 12px;
    align-items: end;
}

.commercial-dashboard-filter-grid label {
    display: grid;
    gap: 6px;
    font-size: .8rem;
    font-weight: 700;
    color: #334155;
}

.commercial-dashboard-filter-grid input,
.commercial-dashboard-filter-grid select {
    min-height: 42px;
}

.commercial-dashboard-filter-actions {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.commercial-dashboard-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 16px 0;
}

.commercial-dashboard-kpi {
    position: relative;
    display: grid;
    gap: 5px;
    min-height: 122px;
    padding: 16px;
    overflow: hidden;
    border: 1px solid rgba(15, 23, 42, .08);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(15, 23, 42, .04);
}

.commercial-dashboard-kpi::before {
    content: "";
    position: absolute;
    inset: 0 0 auto 0;
    height: 3px;
    background: #062b5f;
}

.commercial-dashboard-kpi.is-highlight::before {
    background: #f36f21;
}

.commercial-dashboard-kpi span,
.commercial-dashboard-kpi small {
    color: #64748b;
}

.commercial-dashboard-kpi span {
    font-weight: 800;
}

.commercial-dashboard-kpi strong {
    color: #062b5f;
    font-size: 2rem;
    line-height: 1;
}

.commercial-dashboard-kpi.is-highlight strong {
    color: #9a3412;
}

.commercial-dashboard-panel-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 15px;
}

.commercial-dashboard-panel-heading h2 {
    margin-bottom: 4px;
}

.commercial-dashboard-panel-heading p {
    margin: 0;
    color: #64748b;
    line-height: 1.5;
}

.commercial-dashboard-progress-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 10px;
}

.commercial-dashboard-progress-card {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 10px;
    align-items: flex-start;
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .07);
    border-radius: 12px;
    background: #fff;
}

.commercial-dashboard-progress-number {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(6, 43, 95, .08);
    color: #062b5f;
    font-weight: 900;
}

.commercial-dashboard-progress-card > div:last-child {
    min-width: 0;
    display: grid;
    gap: 4px;
}

.commercial-dashboard-progress-card span,
.commercial-dashboard-progress-card small {
    color: #64748b;
}

.commercial-dashboard-progress-card span {
    min-height: 34px;
    font-size: .78rem;
    font-weight: 800;
}

.commercial-dashboard-progress-card strong {
    color: #062b5f;
    font-size: 1.45rem;
}

.commercial-dashboard-observed-panel,
.commercial-dashboard-rules {
    margin-top: 16px;
}

.commercial-dashboard-context-badge {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #fff7ed;
    color: #9a3412;
    font-size: .75rem;
    font-weight: 900;
    white-space: nowrap;
}

.commercial-dashboard-observed-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.commercial-dashboard-observed-grid article {
    display: grid;
    gap: 5px;
    padding: 14px;
    border: 1px solid rgba(244, 117, 33, .22);
    border-radius: 12px;
    background: #fffaf5;
}

.commercial-dashboard-observed-grid span,
.commercial-dashboard-observed-grid small {
    color: #7c2d12;
}

.commercial-dashboard-observed-grid span {
    font-weight: 800;
}

.commercial-dashboard-observed-grid strong {
    color: #9a3412;
    font-size: 1.55rem;
}

.commercial-dashboard-rules-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.commercial-dashboard-rules-grid > div {
    padding: 12px;
    border: 1px solid rgba(15, 23, 42, .07);
    border-radius: 11px;
    background: rgba(248, 250, 252, .8);
}

.commercial-dashboard-rules-grid strong {
    color: #062b5f;
}

.commercial-dashboard-rules-grid p {
    margin: 5px 0 0;
    color: #64748b;
    line-height: 1.45;
}

.commercial-dashboard-error {
    border-left: 4px solid #b91c1c;
}

@media (max-width: 1120px) {
    .commercial-dashboard-filter-grid,
    .commercial-dashboard-kpis {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }

    .commercial-dashboard-observed-grid,
    .commercial-dashboard-rules-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .commercial-dashboard-header,
    .commercial-dashboard-scope {
        display: grid;
        grid-template-columns: 1fr;
    }

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

    .commercial-dashboard-filter-grid,
    .commercial-dashboard-kpis,
    .commercial-dashboard-observed-grid,
    .commercial-dashboard-rules-grid {
        grid-template-columns: 1fr;
    }

    .commercial-dashboard-filter-actions,
    .commercial-dashboard-panel-heading {
        display: grid;
    }
}

/* Sprint 19 S19-004 — Actividad comercial por asesor */
.commercial-activity-header {
    align-items: flex-start;
    gap: 20px;
}

.commercial-activity-header-actions {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 10px;
}

.commercial-activity-version {
    min-width: 170px;
    padding: 12px 14px;
    border: 1px solid rgba(6, 43, 95, 0.10);
    border-radius: 14px;
    background: #fff;
    display: grid;
    gap: 2px;
}

.commercial-activity-version span,
.commercial-activity-version small,
.commercial-activity-scope span,
.commercial-activity-kpi span {
    color: #64748b;
}

.commercial-activity-version strong {
    color: #062b5f;
}

.commercial-activity-scope {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.commercial-activity-scope > div {
    display: grid;
    gap: 5px;
}

.commercial-activity-scope strong {
    color: #062b5f;
}

.commercial-activity-history-note,
.commercial-activity-unclassified-note {
    border-left: 4px solid #f47521;
}

.commercial-activity-history-note strong,
.commercial-activity-unclassified-note strong {
    color: #062b5f;
}

.commercial-activity-history-note p,
.commercial-activity-unclassified-note p {
    margin-bottom: 0;
}

.commercial-activity-filter-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: end;
}

.commercial-activity-filter-grid label {
    display: grid;
    gap: 7px;
    font-weight: 700;
    color: #334155;
}

.commercial-activity-filter-actions {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.commercial-activity-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}

.commercial-activity-kpi {
    min-height: 126px;
    padding: 18px;
    border-radius: 18px;
    border: 1px solid rgba(6, 43, 95, 0.10);
    background: #fff;
    box-shadow: 0 10px 26px rgba(0, 31, 69, 0.06);
    display: grid;
    align-content: start;
    gap: 8px;
}

.commercial-activity-kpi strong {
    color: #062b5f;
    font-size: 1.75rem;
    line-height: 1;
}

.commercial-activity-kpi small {
    color: #64748b;
    line-height: 1.35;
}

.commercial-activity-panel-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
}

.commercial-activity-panel-heading h2 {
    margin-bottom: 4px;
}

.commercial-activity-panel-heading p {
    margin: 0;
    color: #64748b;
}

.commercial-activity-context-badge {
    white-space: nowrap;
    border-radius: 999px;
    padding: 7px 10px;
    background: rgba(244, 117, 33, 0.10);
    color: #a84c0d;
    font-weight: 800;
    font-size: 0.78rem;
}

.commercial-activity-status-table-wrap,
.commercial-activity-advisor-table-wrap {
    overflow-x: auto;
}

.commercial-activity-status-table,
.commercial-activity-advisor-table {
    min-width: 780px;
}

.commercial-activity-status-table td span {
    display: block;
    color: #64748b;
    font-size: 0.78rem;
}

.commercial-activity-advisor-table {
    min-width: 1180px;
}

.commercial-activity-advisor-meta {
    display: block;
    margin-top: 4px;
    color: #64748b;
    font-weight: 500;
}

.commercial-activity-rules-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.commercial-activity-rules-grid > div {
    padding: 14px;
    border: 1px solid rgba(6, 43, 95, 0.08);
    border-radius: 14px;
    background: #f8fafc;
}

.commercial-activity-rules-grid strong {
    color: #062b5f;
}

.commercial-activity-rules-grid p {
    margin: 6px 0 0;
    color: #64748b;
}

.commercial-activity-error {
    border-left: 4px solid #b91c1c;
}

@media (max-width: 1100px) {
    .commercial-activity-scope,
    .commercial-activity-kpis,
    .commercial-activity-rules-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .commercial-activity-filter-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .commercial-activity-header-actions,
    .commercial-activity-panel-heading {
        display: grid;
        width: 100%;
    }

    .commercial-activity-scope,
    .commercial-activity-kpis,
    .commercial-activity-rules-grid,
    .commercial-activity-filter-grid {
        grid-template-columns: 1fr;
    }
}

/* Sprint 19 S19-005 — Conversión y eficiencia comercial */
.commercial-conversion-header {
    align-items: flex-start;
    gap: 24px;
}

.commercial-conversion-header-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
    max-width: 620px;
}

.commercial-conversion-version {
    min-width: 180px;
    padding: 10px 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface);
    display: grid;
    gap: 2px;
}

.commercial-conversion-version span,
.commercial-conversion-version small,
.commercial-conversion-scope span {
    color: var(--muted);
    font-size: .78rem;
}

.commercial-conversion-scope {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 16px;
}

.commercial-conversion-scope > div {
    display: grid;
    gap: 4px;
}

.commercial-conversion-scope strong {
    font-size: 1rem;
}

.commercial-conversion-history-note,
.commercial-conversion-error {
    margin-bottom: 16px;
}

.commercial-conversion-history-note p,
.commercial-conversion-error p {
    margin: 6px 0 0;
}

.commercial-conversion-filters {
    margin-bottom: 18px;
}

.commercial-conversion-filter-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(140px, 1fr));
    gap: 12px;
    align-items: end;
}

.commercial-conversion-filter-grid label {
    display: grid;
    gap: 6px;
}

.commercial-conversion-filter-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

.commercial-conversion-panel {
    margin-bottom: 18px;
}

.commercial-conversion-panel-heading {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    margin-bottom: 14px;
}

.commercial-conversion-panel-heading h2,
.commercial-conversion-rules h2 {
    margin: 0 0 4px;
}

.commercial-conversion-panel-heading p {
    margin: 0;
    color: var(--muted);
}

.commercial-conversion-badge {
    white-space: nowrap;
    font-size: .78rem;
    font-weight: 700;
    padding: 6px 10px;
    border-radius: 999px;
    border: 1px solid var(--border);
    background: var(--surface);
}

.commercial-conversion-table-wrap {
    overflow-x: auto;
}

.commercial-conversion-table {
    min-width: 700px;
}

.commercial-conversion-table th:not(:first-child),
.commercial-conversion-table td:not(:first-child) {
    text-align: right;
}

.commercial-conversion-table td:first-child small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}

.commercial-conversion-table tr.is-overall td {
    font-weight: 700;
    border-top-width: 2px;
}

.commercial-conversion-timing-table {
    min-width: 760px;
}

.commercial-conversion-rules {
    margin-bottom: 18px;
}

.commercial-conversion-rules-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.commercial-conversion-rules-grid > div {
    padding: 14px;
    border: 1px solid var(--border);
    border-radius: 14px;
    background: var(--surface);
}

.commercial-conversion-rules-grid p {
    margin: 6px 0 0;
    color: var(--muted);
}

@media (max-width: 1180px) {
    .commercial-conversion-filter-grid {
        grid-template-columns: repeat(3, minmax(160px, 1fr));
    }

    .commercial-conversion-scope {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .commercial-conversion-header-actions,
    .commercial-conversion-panel-heading {
        width: 100%;
        justify-content: flex-start;
    }

    .commercial-conversion-filter-grid,
    .commercial-conversion-scope,
    .commercial-conversion-rules-grid {
        grid-template-columns: 1fr;
    }
}

/* Sprint 19 S19-006 — Producción comercial */
.commercial-production-page{display:grid;gap:18px}.commercial-production-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.commercial-production-eyebrow{margin:0 0 5px;font-size:.78rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#52677d}.commercial-production-header h1{margin:0 0 6px}.commercial-production-header p{margin:0;max-width:880px;color:#5e6b78}.commercial-production-context{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.commercial-production-context>div,.commercial-production-kpis article{background:#fff;border:1px solid #dbe3eb;border-radius:12px;padding:14px 16px}.commercial-production-context span,.commercial-production-kpis span{display:block;font-size:.78rem;color:#6b7785;margin-bottom:5px}.commercial-production-context strong{font-size:.96rem}.commercial-production-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:end}.commercial-production-filter-grid label{display:grid;gap:6px;font-weight:700;font-size:.86rem}.commercial-production-filter-grid input,.commercial-production-filter-grid select{width:100%}.commercial-production-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.commercial-production-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.commercial-production-kpis strong{display:block;font-size:1.75rem;line-height:1.05;color:#14283c}.commercial-production-kpis small{display:block;margin-top:6px;color:#74808c}.commercial-production-panel{display:grid;gap:14px}.commercial-production-panel-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.commercial-production-panel-heading h2,.commercial-production-rules h2{margin:0 0 5px}.commercial-production-panel-heading p{margin:0;color:#657381}.commercial-production-badge{display:inline-flex;padding:6px 9px;border-radius:999px;background:#edf4fa;color:#315e80;font-size:.75rem;font-weight:800;white-space:nowrap}.commercial-production-table-wrap{overflow-x:auto}.commercial-production-table{min-width:860px}.commercial-production-table th{white-space:nowrap}.commercial-production-table td small{display:block;color:#7a8793;margin-top:3px}.commercial-production-warning{border-left:4px solid #c98113;background:#fff9ee}.commercial-production-warning p{margin:5px 0 0}.commercial-production-rules-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.commercial-production-rules-grid>div{border:1px solid #e0e6ed;border-radius:10px;padding:12px}.commercial-production-rules-grid p{margin:5px 0 0;color:#697684;font-size:.9rem}@media(max-width:1100px){.commercial-production-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.commercial-production-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.commercial-production-rules-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.commercial-production-header{display:grid}.commercial-production-context,.commercial-production-kpis,.commercial-production-filter-grid,.commercial-production-rules-grid{grid-template-columns:1fr}}

/* S19-004 FIX-002 — Centrado de valores numéricos en Actividad Comercial */
.commercial-activity-status-table th:not(:first-child),
.commercial-activity-status-table td:not(:first-child),
.commercial-activity-advisor-table th:not(:first-child),
.commercial-activity-advisor-table td:not(:first-child) {
    text-align: center;
    vertical-align: middle;
}

.commercial-activity-status-table th:first-child,
.commercial-activity-status-table td:first-child,
.commercial-activity-advisor-table th:first-child,
.commercial-activity-advisor-table td:first-child {
    text-align: left;
}

.commercial-activity-status-table td:nth-child(5) span {
    text-align: center;
}

/* Sprint 19 S19-007 — Metas comerciales */
.commercial-goals-header{margin-bottom:18px}.commercial-goals-header h1{margin:4px 0 6px;color:#062b5f}.commercial-goals-header p{margin:0;color:#526174}.commercial-goals-eyebrow{display:block;color:#f47521;font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.commercial-goals-filter-card,.commercial-goals-manage-card,.commercial-goals-results-card,.commercial-goals-history-card,.commercial-goals-reading-card{margin-bottom:18px}.commercial-goals-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.commercial-goals-filter-grid label,.commercial-goals-form label{display:grid;gap:6px;color:#062b5f;font-weight:800}.commercial-goals-filter-grid select,.commercial-goals-form select,.commercial-goals-form input{width:100%;min-height:44px;border:1px solid rgba(6,43,95,.17);border-radius:12px;background:#fff;padding:9px 12px;color:#102a43}.commercial-goals-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.commercial-goals-scope-note{margin:12px 0 0;color:#607087;font-size:.9rem}.commercial-goals-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.commercial-goals-summary-card{background:#fff;border:1px solid rgba(6,43,95,.10);border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(6,43,95,.04)}.commercial-goals-summary-card span{display:block;color:#607087;font-weight:800}.commercial-goals-summary-card strong{display:block;margin-top:5px;color:#062b5f;font-size:1.7rem}.commercial-goals-summary-card--success strong{color:#237a42}.commercial-goals-section-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.commercial-goals-section-heading h2{margin:4px 0 4px;color:#062b5f}.commercial-goals-section-heading p{margin:0;color:#607087}.commercial-goals-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.commercial-goals-form-notes{grid-column:span 2}.commercial-goals-form button{min-height:44px}.commercial-goals-inline-notice{margin:0}.commercial-goals-table-wrap{overflow-x:auto}.commercial-goals-table{width:100%;border-collapse:collapse;min-width:880px}.commercial-goals-table th,.commercial-goals-table td{padding:12px 10px;border-bottom:1px solid rgba(15,23,42,.08);vertical-align:middle}.commercial-goals-table th{text-align:left;color:#526174;font-size:.78rem;text-transform:uppercase;letter-spacing:.035em}.commercial-goals-table td small{display:block;margin-top:3px;color:#718096}.commercial-goals-table th:nth-child(n+3),.commercial-goals-table td.commercial-goals-number{text-align:center}.commercial-goals-row--achieved{background:rgba(35,122,66,.045)}.commercial-goals-compliance{display:inline-flex;align-items:center;justify-content:center;min-width:72px;padding:5px 9px;border-radius:999px;background:#fff3e8;color:#a94608;font-weight:900}.commercial-goals-compliance.is-achieved{background:#eaf7ee;color:#237a42}.commercial-goals-empty{padding:18px;border:1px dashed rgba(6,43,95,.18);border-radius:12px;color:#667085;text-align:center}.commercial-goals-history-card summary{cursor:pointer;color:#062b5f;font-weight:900;font-size:1.05rem}.commercial-goals-history-help{color:#607087}.commercial-goals-reading-card h2{margin-top:0;color:#062b5f}.commercial-goals-reading-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.commercial-goals-reading-grid>div{padding:12px;border-radius:12px;background:#f7f9fc;border:1px solid rgba(6,43,95,.08)}.commercial-goals-reading-grid strong{color:#062b5f}.commercial-goals-reading-grid p{margin:5px 0 0;color:#607087;font-size:.9rem;line-height:1.45}@media(max-width:1050px){.commercial-goals-filter-grid,.commercial-goals-form{grid-template-columns:repeat(2,minmax(0,1fr))}.commercial-goals-reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.commercial-goals-filter-grid,.commercial-goals-form,.commercial-goals-summary-grid,.commercial-goals-reading-grid{grid-template-columns:1fr}.commercial-goals-form-notes{grid-column:auto}.commercial-goals-filter-actions>*{width:100%}}

/* Sprint 19 S19-008 — Fuentes y campañas */
.commercial-campaigns-header{margin-bottom:16px}
.commercial-campaigns-eyebrow{display:block;color:#f47521;font-size:.78rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:6px}
.commercial-campaigns-filter-card{margin-bottom:16px}
.commercial-campaigns-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.commercial-campaigns-filter-grid label{display:grid;gap:6px;font-weight:800;color:#102f59}
.commercial-campaigns-filter-grid input,.commercial-campaigns-filter-grid select{width:100%}
.commercial-campaigns-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.commercial-campaigns-scope-note{margin:12px 0 0;color:#627087;font-size:.9rem}
.commercial-campaigns-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}
.commercial-campaigns-kpi-grid article{background:#fff;border:1px solid rgba(6,43,95,.10);border-radius:15px;padding:17px 16px;box-shadow:0 8px 22px rgba(6,43,95,.04)}
.commercial-campaigns-kpi-grid span{display:block;color:#627087;font-weight:800;margin-bottom:5px}
.commercial-campaigns-kpi-grid strong{display:block;color:#062b5f;font-size:1.55rem}
.commercial-campaigns-kpi-grid small{display:block;color:#627087;margin-top:5px}
.commercial-campaigns-kpi--accent{border-top:3px solid #f47521!important}
.commercial-campaigns-kpi--accent strong{color:#9f3f09}
.commercial-campaigns-table-card,.commercial-campaigns-money-card,.commercial-campaigns-reading-card{margin-bottom:16px}
.commercial-campaigns-section-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.commercial-campaigns-section-heading h2{margin:0 0 4px;color:#062b5f}
.commercial-campaigns-section-heading p{margin:0;color:#627087}
.commercial-campaigns-table-wrap{overflow-x:auto}
.commercial-campaigns-table{width:100%;border-collapse:collapse;min-width:1350px}
.commercial-campaigns-table th,.commercial-campaigns-table td{padding:11px 9px;border-bottom:1px solid rgba(6,43,95,.09);vertical-align:middle}
.commercial-campaigns-table th{font-size:.76rem;color:#526174;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;text-align:center}
.commercial-campaigns-table td{text-align:center;color:#18324f}
.commercial-campaigns-table th:first-child,.commercial-campaigns-table th:nth-child(2),.commercial-campaigns-table th:nth-child(3),.commercial-campaigns-table th:nth-child(4),.commercial-campaigns-table td:first-child,.commercial-campaigns-table td:nth-child(2),.commercial-campaigns-table td:nth-child(3),.commercial-campaigns-table td:nth-child(4){text-align:left}
.commercial-campaigns-money-table{min-width:1080px}
.commercial-campaigns-empty{padding:20px;border:1px dashed rgba(6,43,95,.18);border-radius:13px;color:#627087;background:#f8fafc}
.commercial-campaigns-reading-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.commercial-campaigns-reading-grid>div{padding:14px;border:1px solid rgba(6,43,95,.09);border-radius:13px;background:#fafbfd}
.commercial-campaigns-reading-grid strong{color:#062b5f}
.commercial-campaigns-reading-grid p{margin:5px 0 0;color:#627087;line-height:1.45}
.commercial-campaigns-note{margin:14px 0 0;padding:12px 14px;border-left:3px solid #f47521;background:#fff8f2;color:#526174}
@media(max-width:1100px){.commercial-campaigns-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.commercial-campaigns-reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.commercial-campaigns-filter-grid{grid-template-columns:1fr 1fr}.commercial-campaigns-kpi-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.commercial-campaigns-filter-grid,.commercial-campaigns-kpi-grid,.commercial-campaigns-reading-grid{grid-template-columns:1fr}.commercial-campaigns-filter-actions>*{width:100%}}

/* Sprint 19 S19-009 — Rankings y productividad */
.commercial-rankings-header{margin-bottom:16px}
.commercial-rankings-eyebrow{display:block;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}
.commercial-rankings-filter-card{margin-bottom:16px}
.commercial-rankings-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}
.commercial-rankings-filter-grid label{display:grid;gap:6px;color:#102f59;font-weight:800}
.commercial-rankings-filter-grid input,.commercial-rankings-filter-grid select{width:100%}
.commercial-rankings-filter-actions{display:flex;gap:8px;flex-wrap:wrap}
.commercial-rankings-scope-note{margin:12px 0 0;color:#627087;font-size:.9rem}
.commercial-rankings-method-card{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}
.commercial-rankings-method-card h2{margin:0 0 6px;color:#062b5f}
.commercial-rankings-method-card p{margin:0;color:#627087;max-width:900px;line-height:1.55}
.commercial-rankings-badge{white-space:nowrap;background:#eef4fb;color:#062b5f;border-radius:999px;padding:8px 11px;font-size:.82rem;font-weight:900}
.commercial-rankings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.commercial-ranking-card{margin:0}
.commercial-ranking-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}
.commercial-ranking-heading h2{margin:0;color:#062b5f;font-size:1.08rem}
.commercial-ranking-heading p{margin:5px 0 0;color:#627087}
.commercial-ranking-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.commercial-ranking-list li{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fbfcfe}
.commercial-ranking-position{display:inline-flex;align-items:center;justify-content:center;height:32px;border-radius:10px;background:#eef4fb;color:#062b5f;font-weight:900}
.commercial-ranking-person{display:grid;gap:2px;min-width:0}
.commercial-ranking-person strong{color:#18324f}
.commercial-ranking-person small{color:#7a8798;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.commercial-ranking-value{text-align:right;display:grid;gap:2px}
.commercial-ranking-value strong{color:#062b5f;font-size:1.02rem}
.commercial-ranking-value small{color:#7a8798}
.commercial-rankings-empty{padding:18px;border:1px dashed rgba(6,43,95,.16);border-radius:12px;background:#fafbfd;color:#6d7a8d}
.commercial-rankings-economic-card{margin-bottom:16px}
.commercial-economic-currency{padding-top:14px;margin-top:14px;border-top:1px solid rgba(6,43,95,.08)}
.commercial-economic-currency h3{margin:0 0 10px;color:#062b5f}
.commercial-economic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.commercial-economic-ranking{border:1px solid rgba(6,43,95,.08);border-radius:13px;padding:13px;background:#fbfcfe}
.commercial-economic-ranking h4{margin:0 0 9px;color:#18324f}
.commercial-economic-ranking ol{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.commercial-economic-ranking li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid rgba(6,43,95,.06)}
.commercial-economic-ranking li:last-child{border-bottom:0}
.commercial-economic-ranking li>span{font-weight:900;color:#526174}
.commercial-economic-ranking li>strong{color:#18324f}
.commercial-economic-ranking li>div{text-align:right;display:grid;gap:2px}
.commercial-economic-ranking b{color:#062b5f}
.commercial-economic-ranking small,.commercial-economic-empty{color:#7a8798}
.commercial-rankings-reading-card h2{margin:0 0 12px;color:#062b5f}
.commercial-rankings-reading-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.commercial-rankings-reading-grid>div{padding:13px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fafbfd}
.commercial-rankings-reading-grid strong{color:#062b5f}
.commercial-rankings-reading-grid p{margin:5px 0 0;color:#627087;line-height:1.45}
@media(max-width:1100px){.commercial-rankings-reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.commercial-rankings-grid,.commercial-economic-grid{grid-template-columns:1fr}.commercial-rankings-filter-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.commercial-rankings-filter-grid,.commercial-rankings-reading-grid{grid-template-columns:1fr}.commercial-rankings-method-card{display:grid}.commercial-rankings-badge{justify-self:start}.commercial-ranking-list li{grid-template-columns:40px minmax(0,1fr)}.commercial-ranking-value{grid-column:2;text-align:left}.commercial-economic-ranking li{grid-template-columns:30px minmax(0,1fr)}.commercial-economic-ranking li>div{grid-column:2;text-align:left}}

/* Sprint 19 S19-010 — Renovación y persistencia */
.commercial-retention-header{margin-bottom:16px}
.commercial-retention-eyebrow{display:block;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}
.commercial-retention-filter-card{margin-bottom:16px}
.commercial-retention-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}
.commercial-retention-filter-grid label{display:grid;gap:6px;color:#102f59;font-weight:800}
.commercial-retention-filter-grid input,.commercial-retention-filter-grid select{width:100%}
.commercial-retention-filter-actions{display:flex;gap:8px;flex-wrap:wrap}
.commercial-retention-filter-note{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;color:#627087;font-size:.9rem}
.commercial-retention-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.commercial-retention-kpi-grid article{background:#fff;border:1px solid rgba(6,43,95,.1);border-radius:15px;padding:16px;box-shadow:0 8px 22px rgba(6,43,95,.04)}
.commercial-retention-kpi-grid span{display:block;color:#627087;font-weight:800;margin-bottom:5px}
.commercial-retention-kpi-grid strong{display:block;color:#062b5f;font-size:1.48rem}
.commercial-retention-kpi-grid small{display:block;color:#7a8798;margin-top:5px}
.commercial-retention-kpi--accent{border-top:3px solid #f47521!important}
.commercial-retention-kpi--success{border-top:3px solid #2f855a!important}
.commercial-retention-kpi--danger{border-top:3px solid #c05621!important}
.commercial-retention-production-card,.commercial-retention-activity-card,.commercial-retention-detail-card,.commercial-retention-reading-card,.commercial-retention-quality-card{margin-bottom:16px}
.commercial-retention-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.commercial-retention-heading h2{margin:0 0 4px;color:#062b5f}
.commercial-retention-heading p{margin:0;color:#627087}
.commercial-retention-production-counts{display:flex;gap:8px;flex-wrap:wrap}
.commercial-retention-production-counts span{background:#eef4fb;border-radius:999px;padding:8px 11px;color:#526174;font-size:.86rem}
.commercial-retention-production-counts strong{color:#062b5f}
.commercial-retention-table-wrap{overflow-x:auto}
.commercial-retention-table{width:100%;border-collapse:collapse;min-width:760px}
.commercial-retention-table th,.commercial-retention-table td{padding:11px 9px;border-bottom:1px solid rgba(6,43,95,.09);vertical-align:middle}
.commercial-retention-table th{text-align:center;font-size:.76rem;color:#526174;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.commercial-retention-table td{text-align:center;color:#18324f}
.commercial-retention-table th:first-child,.commercial-retention-table td:first-child{text-align:left}
.commercial-retention-money-table{min-width:980px}
.commercial-retention-note{margin:12px 0 0;padding:11px 13px;border-left:3px solid #f47521;background:#fff8f2;color:#526174}
.commercial-retention-breakdown-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.commercial-retention-breakdown-card{margin:0}
.commercial-retention-empty{padding:18px;border:1px dashed rgba(6,43,95,.16);border-radius:12px;background:#fafbfd;color:#6d7a8d}
.commercial-retention-activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.commercial-retention-activity-grid>div{padding:14px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fafbfd}
.commercial-retention-activity-grid span{display:block;color:#627087;font-weight:800}
.commercial-retention-activity-grid strong{display:block;margin-top:5px;color:#062b5f;font-size:1.35rem}
.commercial-retention-detail-table{min-width:1180px}
.commercial-retention-detail-table td:nth-child(2),.commercial-retention-detail-table td:nth-child(3),.commercial-retention-detail-table td:nth-child(4),.commercial-retention-detail-table td:nth-child(5),.commercial-retention-detail-table td:nth-child(6),.commercial-retention-detail-table th:nth-child(2),.commercial-retention-detail-table th:nth-child(3),.commercial-retention-detail-table th:nth-child(4),.commercial-retention-detail-table th:nth-child(5),.commercial-retention-detail-table th:nth-child(6){text-align:left}
.commercial-retention-detail-table td small{display:block;color:#7a8798;margin-top:3px}
.commercial-retention-state{display:inline-flex;padding:6px 9px;border-radius:999px;font-size:.78rem;font-weight:900;white-space:nowrap}
.commercial-retention-state--success{background:#edf8f1;color:#237a42}
.commercial-retention-state--danger{background:#fff1ed;color:#a43d20}
.commercial-retention-state--warning{background:#fff7e8;color:#9a5a00}
.commercial-retention-state--info{background:#eef4fb;color:#174a7e}
.commercial-retention-quality-card{border-left:4px solid #e79a2d}
.commercial-retention-quality-card strong{color:#7a4d00}
.commercial-retention-quality-card p{margin:6px 0 0;color:#627087}
.commercial-retention-reading-card h2{margin:0 0 12px;color:#062b5f}
.commercial-retention-reading-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.commercial-retention-reading-grid>div{padding:13px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fafbfd}
.commercial-retention-reading-grid strong{color:#062b5f}
.commercial-retention-reading-grid p{margin:5px 0 0;color:#627087;line-height:1.45}
@media(max-width:1100px){.commercial-retention-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.commercial-retention-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.commercial-retention-reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:850px){.commercial-retention-filter-grid,.commercial-retention-breakdown-grid{grid-template-columns:1fr 1fr}.commercial-retention-activity-grid{grid-template-columns:1fr}.commercial-retention-heading{display:grid}}
@media(max-width:560px){.commercial-retention-filter-grid,.commercial-retention-kpi-grid,.commercial-retention-breakdown-grid,.commercial-retention-reading-grid{grid-template-columns:1fr}.commercial-retention-filter-actions>*{width:100%}}

/* Sprint 19 S19-011 — Forecast y alertas */
.commercial-forecast-header{margin-bottom:16px}
.commercial-forecast-eyebrow{display:block;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}
.commercial-forecast-filter-card{margin-bottom:16px}
.commercial-forecast-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}
.commercial-forecast-filter-grid label{display:grid;gap:6px;color:#102f59;font-weight:800}
.commercial-forecast-filter-grid select{width:100%}
.commercial-forecast-filter-actions{display:flex;gap:8px;flex-wrap:wrap}
.commercial-forecast-scope-note{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;color:#627087;font-size:.9rem}
.commercial-forecast-kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}
.commercial-forecast-kpi-grid article{background:#fff;border:1px solid rgba(6,43,95,.1);border-radius:15px;padding:16px;box-shadow:0 8px 22px rgba(6,43,95,.04)}
.commercial-forecast-kpi-grid span{display:block;color:#627087;font-weight:800;margin-bottom:5px}
.commercial-forecast-kpi-grid strong{display:block;color:#062b5f;font-size:1.48rem}
.commercial-forecast-kpi-grid small{display:block;color:#7a8798;margin-top:5px}
.commercial-forecast-kpi--accent{border-top:3px solid #f47521!important}
.commercial-forecast-kpi--warning{border-top:3px solid #d88a18!important}
.commercial-forecast-formula-card{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:16px}
.commercial-forecast-formula-card h2{margin:0 0 6px;color:#062b5f}
.commercial-forecast-formula-card p{margin:0;color:#627087;line-height:1.55;max-width:780px}
.commercial-forecast-formula{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.commercial-forecast-formula span{padding:9px 11px;border-radius:10px;background:#f4f7fb;color:#526174;font-weight:800}
.commercial-forecast-formula b{color:#7a8798}
.commercial-forecast-formula strong{padding:10px 13px;border-radius:10px;background:#fff0e5;color:#9f3f09;font-size:1.15rem}
.commercial-forecast-data-note{border-left:4px solid #e79a2d;margin-bottom:16px}
.commercial-forecast-data-note strong{color:#7a4d00}
.commercial-forecast-data-note p{margin:5px 0 0;color:#627087}
.commercial-forecast-weights-card,.commercial-alert-summary-card,.commercial-alert-detail-card,.commercial-forecast-reading-card{margin-bottom:16px}
.commercial-forecast-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.commercial-forecast-heading h2{margin:0 0 4px;color:#062b5f}
.commercial-forecast-heading p{margin:0;color:#627087}
.commercial-forecast-table-wrap{overflow-x:auto}
.commercial-forecast-table{width:100%;border-collapse:collapse;min-width:900px}
.commercial-forecast-table th,.commercial-forecast-table td{padding:11px 9px;border-bottom:1px solid rgba(6,43,95,.09);vertical-align:middle}
.commercial-forecast-table th{text-align:center;font-size:.76rem;color:#526174;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.commercial-forecast-table td{text-align:center;color:#18324f}
.commercial-forecast-table th:first-child,.commercial-forecast-table td:first-child{text-align:left}
.commercial-alert-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.commercial-alert-summary{padding:13px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fafbfd}
.commercial-alert-summary span{display:block;color:#627087;font-weight:800}
.commercial-alert-summary strong{display:block;color:#062b5f;font-size:1.35rem;margin:4px 0}
.commercial-alert-summary small{color:#7a8798}
.commercial-alert-summary--danger{border-top:3px solid #c05621}
.commercial-alert-summary--warning{border-top:3px solid #d88a18}
.commercial-alert-summary--info{border-top:3px solid #3178b5}
.commercial-alert-table{min-width:1280px}
.commercial-alert-table td:nth-child(2),.commercial-alert-table td:nth-child(3),.commercial-alert-table td:nth-child(4),.commercial-alert-table td:nth-child(7),.commercial-alert-table th:nth-child(2),.commercial-alert-table th:nth-child(3),.commercial-alert-table th:nth-child(4),.commercial-alert-table th:nth-child(7){text-align:left}
.commercial-alert-table td small{display:block;color:#7a8798;margin-top:3px}
.commercial-alert-badge{display:inline-flex;padding:6px 9px;border-radius:999px;font-size:.76rem;font-weight:900;white-space:nowrap}
.commercial-alert-badge--warning{background:#fff7e8;color:#945800}
.commercial-alert-badge--danger{background:#fff1ed;color:#a43d20}
.commercial-alert-badge--info{background:#eef4fb;color:#174a7e}
.commercial-forecast-empty{padding:18px;border:1px dashed rgba(6,43,95,.16);border-radius:12px;background:#fafbfd;color:#6d7a8d}
.commercial-forecast-reading-card h2{margin:0 0 12px;color:#062b5f}
.commercial-forecast-reading-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.commercial-forecast-reading-grid>div{padding:13px;border:1px solid rgba(6,43,95,.08);border-radius:12px;background:#fafbfd}
.commercial-forecast-reading-grid strong{color:#062b5f}
.commercial-forecast-reading-grid p{margin:5px 0 0;color:#627087;line-height:1.45}
@media(max-width:1100px){.commercial-alert-summary-grid,.commercial-forecast-reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:850px){.commercial-forecast-filter-grid,.commercial-forecast-kpi-grid{grid-template-columns:1fr 1fr}.commercial-forecast-formula-card{display:grid}.commercial-forecast-formula{justify-content:flex-start}}
@media(max-width:560px){.commercial-forecast-filter-grid,.commercial-forecast-kpi-grid,.commercial-alert-summary-grid,.commercial-forecast-reading-grid{grid-template-columns:1fr}.commercial-forecast-filter-actions>*{width:100%}}

/* Sprint 20 S20-001 — Alta directa de Persona Academy */
.s20-direct-header{margin-bottom:16px}
.s20-direct-eyebrow{display:block;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}
.s20-direct-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.75fr);gap:16px;align-items:start}
.s20-direct-form,.s20-direct-origin-card,.s20-duplicate-card{margin-bottom:16px}
.s20-direct-section-heading{display:flex;gap:11px;align-items:flex-start;margin:4px 0 14px}
.s20-direct-section-heading h2,.s20-direct-origin-card h2,.s20-duplicate-card h2{margin:0 0 4px;color:#062b5f}
.s20-direct-section-heading p,.s20-direct-origin-card p,.s20-duplicate-card>p{margin:0;color:#627087;line-height:1.5}
.s20-direct-step{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;border-radius:10px;background:#eef4fb;color:#062b5f;font-weight:900}
.s20-direct-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.s20-direct-field{display:grid;gap:6px;color:#102f59;font-weight:800}
.s20-direct-field--wide{grid-column:1/-1}
.s20-direct-field input,.s20-direct-field select,.s20-direct-field textarea,.s20-direct-form>label select{width:100%}
.s20-direct-field small{color:#7a8798;font-weight:500;line-height:1.35}
.s20-destination-note{margin:10px 0 20px;padding:12px 14px;border-left:3px solid #f47521;background:#fff8f2;border-radius:0 10px 10px 0}
.s20-destination-note strong{display:block;color:#9f3f09;margin-bottom:3px}
.s20-destination-note span{color:#627087}
.s20-direct-consent{display:flex;gap:10px;align-items:flex-start;margin:17px 0;padding:13px;border:1px solid rgba(6,43,95,.09);border-radius:12px;background:#fafbfd;color:#526174;line-height:1.45}
.s20-direct-consent input{margin-top:3px}
.s20-direct-actions{display:flex;gap:9px;flex-wrap:wrap}
.s20-direct-origin-list{display:grid;gap:0;margin:16px 0}
.s20-direct-origin-list>div{padding:10px 0;border-bottom:1px solid rgba(6,43,95,.08)}
.s20-direct-origin-list dt{font-size:.75rem;color:#7a8798;text-transform:uppercase;letter-spacing:.04em;font-weight:900}
.s20-direct-origin-list dd{margin:4px 0 0;color:#18324f;font-weight:800;overflow-wrap:anywhere}
.s20-direct-integrity-note{padding:12px;border-radius:12px;background:#eef4fb;color:#526174}
.s20-direct-integrity-note strong{display:block;color:#062b5f;margin-bottom:4px}
.s20-direct-integrity-note span{line-height:1.45}
.s20-direct-message{margin-bottom:16px}
.s20-direct-message p{margin:5px 0 0}
.s20-direct-message--error{border-left:4px solid #c05621;background:#fff8f5}
.s20-direct-message--error strong{color:#9f3f20}
.s20-direct-message--success{border-left:4px solid #2f855a;background:#f3fbf6}
.s20-duplicate-card{border-left:4px solid #d88a18}
.s20-duplicate-group{margin-top:15px}
.s20-duplicate-group h3{margin:0 0 8px;color:#18324f;font-size:1rem}
.s20-duplicate-item{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:11px 0;border-top:1px solid rgba(6,43,95,.08)}
.s20-duplicate-item>div{display:grid;gap:2px}
.s20-duplicate-item strong{color:#18324f}
.s20-duplicate-item small{color:#7a8798}
@media(max-width:950px){.s20-direct-grid{grid-template-columns:1fr}.s20-direct-origin-card{order:-1}}
@media(max-width:620px){.s20-direct-fields{grid-template-columns:1fr}.s20-duplicate-item{display:grid}.s20-direct-actions>*{width:100%}}

/* Sprint 20 S20-002 — Catálogo de páginas destino */
.ad-destination-page-header{margin-bottom:16px}
.ad-destination-create-card,.ad-destination-list-card{margin-bottom:16px}
.ad-destination-eyebrow{display:block;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px}
.ad-destination-section-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.ad-destination-section-heading h2{margin:0 0 4px;color:#062b5f}
.ad-destination-section-heading p{margin:0;color:#627087;line-height:1.5}
.ad-destination-form-grid,.ad-destination-inline-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.ad-destination-form-grid label,.ad-destination-inline-form label{display:grid;gap:6px;color:#102f59;font-weight:800}
.ad-destination-form-grid input,.ad-destination-form-grid select,.ad-destination-form-grid textarea,.ad-destination-inline-form input,.ad-destination-inline-form textarea{width:100%}
.ad-destination-form-grid small{color:#7a8798;font-weight:500;line-height:1.4}
.ad-destination-span-2{grid-column:1/-1}
.ad-destination-stack{display:grid;gap:14px}
.ad-destination-item{border:1px solid rgba(6,43,95,.11);border-radius:15px;padding:15px;background:#fff}
.ad-destination-item--locked{border-left:4px solid #d88a18}
.ad-destination-item-top{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:13px}
.ad-destination-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ad-destination-title-row>strong{font-size:1.05rem;color:#062b5f}
.ad-destination-item-top small{display:block;margin-top:4px;color:#7a8798}
.ad-destination-status{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:.74rem;font-weight:900}
.ad-destination-status--activa{background:#edf8f1;color:#237a42}
.ad-destination-status--inactiva{background:#f1f3f6;color:#667085}
.ad-destination-status--used{background:#fff4df;color:#8b5700}
.ad-destination-metrics{display:grid;grid-template-columns:repeat(4,minmax(90px,1fr));gap:8px}
.ad-destination-metrics>div{padding:9px 10px;border-radius:10px;background:#f7f9fc;text-align:center}
.ad-destination-metrics span{display:block;color:#7a8798;font-size:.72rem}
.ad-destination-metrics strong{display:block;color:#062b5f;margin-top:2px}
.ad-destination-lock-note{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-radius:10px;background:#fff7e8;color:#6e4a08;margin-bottom:12px}
.ad-destination-lock-note strong{color:#8b5700}
.ad-destination-inline-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ad-destination-action-help{color:#8b5700;font-size:.82rem}
.ad-destination-combo-state{margin-left:auto;color:#627087;font-size:.82rem}
.ad-destination-empty{padding:18px;border:1px dashed rgba(6,43,95,.16);border-radius:12px;color:#6d7a8d;background:#fafbfd}
.ad-destination-inline-form button[disabled]{opacity:.5;cursor:not-allowed}
@media(max-width:1050px){.ad-destination-item-top{display:grid}.ad-destination-metrics{grid-template-columns:repeat(2,minmax(120px,1fr))}}
@media(max-width:650px){.ad-destination-form-grid,.ad-destination-inline-form{grid-template-columns:1fr}.ad-destination-span-2{grid-column:1}.ad-destination-metrics{grid-template-columns:1fr 1fr}.ad-destination-inline-actions>*{width:100%}.ad-destination-combo-state{margin-left:0}}

/* S20-002 FIX-002 — Página destino sin parametrización visible */
.ad-destination-tech-note{display:flex;gap:8px;align-items:flex-start;margin:15px 0;padding:11px 12px;border-radius:10px;background:#f7f9fc;color:#627087;line-height:1.4}
.ad-destination-tech-note strong{color:#062b5f;white-space:nowrap}

/* Sprint 20 S20-003 — QR de URL corta de anuncio */
.ads-qr-panel{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:center;margin-top:16px;padding:16px;border:1px solid rgba(6,43,95,.10);border-radius:14px;background:#f8fafc}
.ads-qr-panel[hidden]{display:none}
.ads-qr-preview{display:flex;justify-content:center;align-items:center;padding:10px;border-radius:12px;background:#fff;border:1px solid rgba(6,43,95,.08)}
.ads-qr-preview img{display:block;max-width:240px;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain}
.ads-qr-info{display:grid;gap:9px;min-width:0}
.ads-qr-info>strong{font-size:1.05rem;color:#062b5f}
.ads-qr-info p{margin:0;color:#5f6f84;line-height:1.5}
.ads-qr-info code{overflow-wrap:anywhere}
.ads-qr-info .btn-primary{width:max-content}
.ads-qr-status{color:#6d7a8d;line-height:1.4}
@media(max-width:700px){.ads-qr-panel{grid-template-columns:1fr}.ads-qr-preview{max-width:280px}.ads-qr-info .btn-primary{width:100%}}

/* Sprint 20 S20-004 — Herramienta Sprint Comercial */
.sprint-page-header{margin-bottom:16px}
.sprint-kicker{display:block;margin-bottom:4px;color:#f47521;font-size:.76rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.sprint-setup-card{max-width:1080px}
.sprint-setup-heading h2,.sprint-results-heading h2,.sprint-capture-heading h2{margin:0 0 5px;color:#062b5f}
.sprint-setup-heading p,.sprint-results-heading p{margin:0;color:#66758a;line-height:1.5}
.sprint-setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.sprint-choice-group{margin:0;padding:0;border:0}
.sprint-choice-group legend,.sprint-target-field>span{display:block;margin-bottom:8px;color:#102f59;font-weight:900}
.sprint-option-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.sprint-option-cards--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.sprint-option-card{position:relative;display:block;cursor:pointer}
.sprint-option-card input{position:absolute;opacity:0;pointer-events:none}
.sprint-option-card>span{display:grid;gap:3px;min-height:86px;padding:13px;border:1px solid rgba(6,43,95,.12);border-radius:12px;background:#fff;transition:.16s ease}
.sprint-option-card strong{color:#062b5f;font-size:1rem}
.sprint-option-card small{color:#718096;line-height:1.35}
.sprint-option-card input:checked+span{border-color:#f47521;box-shadow:0 0 0 2px rgba(244,117,33,.12);background:#fffaf6}
.sprint-target-field{display:grid;align-content:start;grid-column:1/-1;max-width:260px}
.sprint-target-field input{width:100%}
.sprint-target-field small{margin-top:5px;color:#718096;line-height:1.35}
.sprint-source-note,.sprint-intelligence-note{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:18px 0 0;padding:11px 12px;border-radius:10px;background:#f7f9fc;color:#627087}
.sprint-source-note strong,.sprint-intelligence-note strong{color:#062b5f}
.sprint-source-note code{padding:4px 7px;border-radius:6px;background:#eef2f7;color:#31435d}
.sprint-shell{display:grid;grid-template-columns:minmax(320px,430px) minmax(0,1fr);gap:16px;align-items:start}
.sprint-watch-card{padding:18px;border-radius:18px;background:linear-gradient(145deg,#181b19,#0e100f);box-shadow:0 14px 36px rgba(0,0,0,.18);position:sticky;top:18px}
.sprint-watch-bezel{padding:13px;border:1px solid #313832;border-radius:14px;background:linear-gradient(180deg,#242a25,#151815)}
.sprint-watch-brandline{display:flex;justify-content:space-between;margin:0 4px 8px;color:#8c978e;font-size:.68rem;font-weight:900;letter-spacing:.14em}
.sprint-lcd{padding:18px 16px 14px;border:2px solid #35473b;border-radius:10px;background:radial-gradient(circle at 50% 45%,#102719,#07110b 72%);box-shadow:inset 0 0 22px rgba(0,0,0,.7)}
.sprint-lcd-caption{text-align:center;color:#62bd7c;font-size:.68rem;font-weight:800;letter-spacing:.16em}
.sprint-digits{margin:8px 0 4px;text-align:center;color:#72ff9b;font-family:"Lucida Console","Courier New",monospace;font-size:4.3rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:.02em;text-shadow:0 0 8px rgba(114,255,155,.72),0 0 22px rgba(114,255,155,.26)}
.sprint-lcd-meta{display:flex;justify-content:space-between;gap:8px;color:#58a96d;font-family:"Lucida Console","Courier New",monospace;font-size:.72rem;font-weight:800}
.sprint-live-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:12px}
.sprint-live-summary>div{padding:10px 8px;border-radius:9px;background:#222724;text-align:center}
.sprint-live-summary span{display:block;color:#8d9990;font-size:.7rem}
.sprint-live-summary strong{display:block;margin-top:2px;color:#e6ece8;font-size:1.08rem}
.sprint-primary-action{display:grid;gap:7px;margin-top:14px}
.sprint-capture-button{text-align:center;font-size:1rem}
.sprint-primary-action small{color:#9ca6a0;text-align:center}
.sprint-finished-banner{display:grid;gap:5px;margin-top:14px;padding:12px;border-radius:10px;background:#2a2117;color:#d7b57e}
.sprint-finished-banner strong{color:#f2c47d}
.sprint-results-card{min-width:0}
.sprint-results-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.sprint-empty{padding:22px;border:1px dashed rgba(6,43,95,.18);border-radius:12px;background:#fbfcfe;color:#718096}
.sprint-results-table-wrap{overflow:auto}
.sprint-results-table{width:100%;border-collapse:collapse;min-width:760px}
.sprint-results-table th{padding:9px 8px;text-align:left;border-bottom:1px solid rgba(6,43,95,.12);color:#627087;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.sprint-results-table td{padding:10px 8px;border-bottom:1px solid rgba(6,43,95,.07);vertical-align:top}
.sprint-results-table td strong{display:block;color:#062b5f}
.sprint-results-table td small{display:block;margin-top:2px;color:#7a8798}
.sprint-status-pill{display:inline-flex;padding:5px 8px;border-radius:999px;background:#eef6f0;color:#277244;font-size:.76rem;font-weight:900}
.sprint-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.sprint-row-actions .btn-secondary{padding:7px 9px;font-size:.78rem}
.sprint-exit-dialog{width:min(92vw,470px);border:0;border-radius:17px;padding:0;box-shadow:0 28px 80px rgba(0,0,0,.32)}
.sprint-exit-dialog::backdrop{background:rgba(4,13,28,.62);backdrop-filter:blur(2px)}
.sprint-exit-dialog form{padding:24px}
.sprint-exit-dialog h2{margin:4px 0 8px;color:#062b5f}
.sprint-exit-dialog p{margin:0;color:#64748b;line-height:1.55}
.sprint-exit-icon{font-size:2rem}
.sprint-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;flex-wrap:wrap}
.sprint-capture-shell{display:grid;grid-template-columns:220px minmax(0,760px);gap:16px;align-items:start}
.sprint-mini-watch{position:sticky;top:18px;display:grid;gap:6px;padding:18px;border-radius:16px;background:#111512;border:1px solid #2f3931;text-align:center}
.sprint-mini-watch span,.sprint-mini-watch small{color:#69b57b;font-size:.7rem;font-weight:900;letter-spacing:.1em}
.sprint-mini-watch strong{color:#72ff9b;font-family:"Lucida Console","Courier New",monospace;font-size:2.8rem;line-height:1;text-shadow:0 0 9px rgba(114,255,155,.6)}
.sprint-capture-card{min-width:0}
.sprint-capture-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:15px}
.sprint-source-chip{padding:6px 9px;border-radius:999px;background:#eef4fb;color:#062b5f;font-family:monospace;font-size:.78rem;font-weight:800}
.sprint-capture-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sprint-capture-grid label{display:grid;gap:6px;color:#102f59;font-weight:800}
.sprint-capture-grid label small{color:#7a8798;font-weight:500}
.sprint-span-2{grid-column:1/-1}
.sprint-consent{display:flex!important;grid-template-columns:none!important;gap:9px!important;align-items:flex-start;font-weight:600!important;padding:10px;border-radius:10px;background:#f8fafc}
.sprint-consent input{width:auto!important;margin-top:3px}
.sprint-capture-outcome{display:flex;gap:8px;align-items:flex-start;margin-top:15px;padding:11px 12px;border-radius:10px;background:#f7f9fc;color:#627087;line-height:1.45}
.sprint-capture-outcome strong{color:#062b5f;white-space:nowrap}
.sprint-capture-outcome code{overflow-wrap:anywhere}
.sprint-shell.is-finished .sprint-watch-card{filter:saturate(.78)}
@media(max-width:1050px){.sprint-shell{grid-template-columns:1fr}.sprint-watch-card{position:static}.sprint-capture-shell{grid-template-columns:1fr}.sprint-mini-watch{position:static;grid-template-columns:1fr auto 1fr;align-items:center;text-align:left}.sprint-mini-watch strong{text-align:center}.sprint-mini-watch small{text-align:right}}
@media(max-width:720px){.sprint-setup-grid{grid-template-columns:1fr}.sprint-option-cards{grid-template-columns:1fr}.sprint-option-cards--2{grid-template-columns:1fr}.sprint-target-field{grid-column:1;max-width:none}.sprint-digits{font-size:3.45rem}.sprint-live-summary{grid-template-columns:1fr 1fr 1fr}.sprint-results-heading{display:grid}.sprint-capture-grid{grid-template-columns:1fr}.sprint-span-2{grid-column:1}.sprint-mini-watch{grid-template-columns:1fr}.sprint-mini-watch span,.sprint-mini-watch strong,.sprint-mini-watch small{text-align:center}.sprint-dialog-actions>*{width:100%}}

/* Sprint 20 S20-005 — Checkup Financiero */
.checkup-kicker{display:block;margin-bottom:4px;color:#f47521;font-size:.74rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.checkup-section-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}
.checkup-section-heading h2{margin:0;color:#062b5f}
.checkup-section-heading p{margin:5px 0 0;color:#6b778a;line-height:1.45}
.checkup-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}
.checkup-stats-grid .card{display:grid;gap:3px;padding:14px}
.checkup-stats-grid span{color:#68778b;font-size:.78rem}
.checkup-stats-grid strong{color:#062b5f;font-size:1.45rem}
.checkup-generated-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,1fr);gap:16px;align-items:center;border-left:4px solid #f47521}
.checkup-generated-link h2{margin:0;color:#062b5f}
.checkup-generated-link p{margin:5px 0 0;color:#6b778a}
.checkup-link-copy{display:flex;gap:8px}
.checkup-link-copy input{min-width:0;flex:1;font-family:monospace}
.checkup-filter-grid{display:grid;grid-template-columns:minmax(240px,2fr) repeat(3,minmax(150px,1fr));gap:10px;align-items:end}
.checkup-filter-grid label,.checkup-client-search label{display:grid;gap:6px;color:#173a65;font-weight:800}
.checkup-filter-actions{margin:0;grid-column:1/-1}
.checkup-row-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.checkup-row-actions form{margin:0}
.checkup-row-actions .btn-secondary{padding:7px 9px;font-size:.78rem}
.checkup-client-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.checkup-client-list{display:grid;gap:9px}
.checkup-client-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#fff}
.checkup-client-row>div{display:grid;gap:3px;min-width:0}
.checkup-client-row strong{color:#062b5f}
.checkup-client-row span,.checkup-client-row small{color:#6f7d90}
.checkup-result-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}
.checkup-result-summary article{display:grid;gap:4px}
.checkup-result-summary span{color:#718096;font-size:.78rem}
.checkup-result-summary strong{color:#062b5f}
.checkup-score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.checkup-score-grid article{display:flex;justify-content:space-between;gap:10px;padding:12px;border-radius:10px;background:#f7f9fc}
.checkup-score-grid span{color:#31435d}
.checkup-score-grid strong{color:#062b5f}
.checkup-answer-sections{display:grid;gap:12px}
.checkup-answer-section{padding:14px;border:1px solid rgba(6,43,95,.09);border-radius:12px}
.checkup-answer-section h3{margin:0 0 10px;color:#062b5f}
.checkup-answer-row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid rgba(6,43,95,.07)}
.checkup-answer-row:first-of-type{border-top:0}
.checkup-answer-row>div{display:grid;gap:4px}
.checkup-answer-row span{color:#5e6f85}
.checkup-answer-row b{color:#062b5f;white-space:nowrap}
.checkup-radar-layout{display:grid;grid-template-columns:minmax(0,520px) minmax(190px,1fr);gap:18px;align-items:center}
.checkup-radar-canvas{min-width:0}
.checkup-radar{display:block;width:100%;max-width:520px;height:auto;margin:auto;overflow:visible}
.checkup-radar-grid{fill:none;stroke:#d9e0e8;stroke-width:1}
.checkup-radar-axis{stroke:#d1d9e3;stroke-width:1}
.checkup-radar-label{fill:#44546a;font-size:12px;font-weight:800}
.checkup-radar-series{fill-opacity:.07;stroke-width:2.2;vector-effect:non-scaling-stroke}
.checkup-radar-series.is-latest{fill-opacity:.13;stroke-width:3.5}
.checkup-radar-series--0{fill:#1f6feb;stroke:#1f6feb}.checkup-radar-dot--0{background:#1f6feb}
.checkup-radar-series--1{fill:#f47521;stroke:#f47521}.checkup-radar-dot--1{background:#f47521}
.checkup-radar-series--2{fill:#168a54;stroke:#168a54}.checkup-radar-dot--2{background:#168a54}
.checkup-radar-series--3{fill:#8b5cf6;stroke:#8b5cf6}.checkup-radar-dot--3{background:#8b5cf6}
.checkup-radar-series--4{fill:#d14b72;stroke:#d14b72}.checkup-radar-dot--4{background:#d14b72}
.checkup-radar-series--5{fill:#0f8b8d;stroke:#0f8b8d}.checkup-radar-dot--5{background:#0f8b8d}
.checkup-radar-series--6{fill:#a66a00;stroke:#a66a00}.checkup-radar-dot--6{background:#a66a00}
.checkup-radar-series--7{fill:#5c6bc0;stroke:#5c6bc0}.checkup-radar-dot--7{background:#5c6bc0}
.checkup-radar-series--8{fill:#7a7f38;stroke:#7a7f38}.checkup-radar-dot--8{background:#7a7f38}
.checkup-radar-series--9{fill:#9a4d8f;stroke:#9a4d8f}.checkup-radar-dot--9{background:#9a4d8f}
.checkup-radar-legend{display:grid;gap:8px}
.checkup-radar-legend-row{display:flex;gap:9px;align-items:center;padding:9px 10px;border-radius:9px;background:#f7f9fc}
.checkup-radar-legend-row.is-latest{box-shadow:inset 0 0 0 1px rgba(6,43,95,.15);background:#f1f6fb}
.checkup-radar-dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto}
.checkup-radar-legend-row div{display:grid;gap:2px}
.checkup-radar-legend-row strong{color:#062b5f}
.checkup-radar-legend-row small{color:#6d7c8e}
.checkup-empty-radar{padding:24px;border:1px dashed rgba(6,43,95,.2);border-radius:12px;background:#fbfcfe;color:#6f7d90;text-align:center}
.checkup-person-card{margin-top:16px}
.checkup-person-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start}
.checkup-person-summary h3{margin:0;color:#062b5f}
.checkup-person-summary p{margin:5px 0 0;color:#6f7d90}
.checkup-person-history{margin-top:14px}
@media(max-width:1000px){.checkup-generated-link,.checkup-radar-layout{grid-template-columns:1fr}.checkup-filter-grid{grid-template-columns:1fr 1fr}.checkup-result-summary{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.checkup-stats-grid,.checkup-score-grid,.checkup-result-summary{grid-template-columns:1fr 1fr}.checkup-filter-grid,.checkup-client-search{grid-template-columns:1fr}.checkup-client-row{align-items:flex-start;flex-direction:column}.checkup-link-copy{display:grid}.checkup-radar-label{font-size:10px}}

/* Sprint 20 S20-006 — Herramienta Seguros de Auto */
.auto-insurance-page-header{margin-bottom:16px}
.auto-insurance-kicker{display:block;margin-bottom:4px;color:#f47521;font-size:.74rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.auto-insurance-section-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}
.auto-insurance-section-heading h2{margin:0;color:#062b5f}
.auto-insurance-section-heading p{margin:5px 0 0;color:#6b778a;line-height:1.45}
.auto-insurance-generated-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,1fr);gap:16px;align-items:center;border-left:4px solid #f47521}
.auto-insurance-generated-link h2{margin:0;color:#062b5f}
.auto-insurance-generated-link p{margin:5px 0 0;color:#6b778a;line-height:1.45}
.auto-insurance-link-copy{display:flex;gap:8px}
.auto-insurance-link-copy input{flex:1;min-width:0;font-family:monospace}
.auto-insurance-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}
.auto-insurance-stats-grid .card{display:grid;gap:4px;padding:14px}
.auto-insurance-stats-grid span{color:#68778b;font-size:.78rem}
.auto-insurance-stats-grid strong{color:#062b5f;font-size:1.5rem}
.auto-insurance-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;align-items:end}
.auto-insurance-filter-grid label{display:grid;gap:6px;color:#173a65;font-weight:800}
.auto-insurance-filter-wide{grid-column:span 2}
.auto-insurance-filter-actions{grid-column:1/-1;margin:0}
.auto-insurance-table td strong{display:block;color:#062b5f}
.auto-insurance-table td small{display:block;margin-top:2px;color:#718096}
.auto-insurance-expiry-pill{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:.76rem;font-weight:900;white-space:nowrap}
.auto-insurance-expiry-pill.is-expired{background:#fdecec;color:#a12828}
.auto-insurance-expiry-pill.is-today{background:#fff0df;color:#9a4f0b}
.auto-insurance-expiry-pill.is-urgent{background:#fff3df;color:#a45b08}
.auto-insurance-expiry-pill.is-soon{background:#eef5ff;color:#285d9f}
.auto-insurance-expiry-pill.is-future{background:#eef7f0;color:#2c7044}
.auto-insurance-delete-cell{width:44px;text-align:center}
.auto-insurance-delete-button{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #e2b7b7;border-radius:8px;background:#fff;color:#b63535;cursor:pointer}
.auto-insurance-delete-button:hover{background:#fff2f2}
.auto-insurance-delete-button svg{width:18px;height:18px;fill:currentColor}
.auto-insurance-pagination{display:flex;justify-content:flex-end;gap:10px;align-items:center;margin-top:14px}
.auto-insurance-pagination span{color:#6b778a;font-size:.85rem}
@media(max-width:1050px){.auto-insurance-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.auto-insurance-filter-wide{grid-column:span 2}.auto-insurance-generated-link{grid-template-columns:1fr}}
@media(max-width:720px){.auto-insurance-stats-grid{grid-template-columns:1fr 1fr}.auto-insurance-filter-grid{grid-template-columns:1fr}.auto-insurance-filter-wide{grid-column:1}.auto-insurance-link-copy{display:grid}.auto-insurance-pagination{justify-content:space-between}}
.auto-insurance-client-picker{margin-bottom:16px}
.auto-insurance-client-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.auto-insurance-client-search label{display:grid;gap:6px;color:#173a65;font-weight:800}
.auto-insurance-client-results{margin-top:14px}
.auto-insurance-client-list{display:grid;gap:9px}
.auto-insurance-client-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#fff}
.auto-insurance-client-row>div{display:grid;gap:3px;min-width:0}
.auto-insurance-client-row strong{color:#062b5f}
.auto-insurance-client-row span,.auto-insurance-client-row small{color:#6f7d90}
@media(max-width:760px){.auto-insurance-client-search{grid-template-columns:1fr}.auto-insurance-client-row{align-items:flex-start;flex-direction:column}}

/* Sprint 20 S20-007 — Referidos */
.referral-kicker{display:block;margin-bottom:4px;color:#f47521;font-size:.74rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.referral-section-heading{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}
.referral-section-heading h2{margin:0;color:#062b5f}
.referral-section-heading p{margin:5px 0 0;color:#6b778a;line-height:1.45}
.referral-generated-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,1fr);gap:16px;align-items:center;border-left:4px solid #f47521}
.referral-generated-link h2{margin:0;color:#062b5f}
.referral-generated-link p{margin:5px 0 0;color:#6b778a}
.referral-link-copy{display:flex;gap:8px}
.referral-link-copy input{min-width:0;flex:1;font-family:monospace}
.referral-client-picker{margin-bottom:16px}
.referral-client-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.referral-client-search label{display:grid;gap:6px;color:#173a65;font-weight:800}
.referral-client-results{margin-top:14px}
.referral-client-list{display:grid;gap:9px}
.referral-client-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#fff}
.referral-client-row>div{display:grid;gap:3px;min-width:0}
.referral-client-row strong{color:#062b5f}
.referral-client-row span,.referral-client-row small{color:#6f7d90}
.referral-stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}
.referral-stats-grid .card{display:grid;gap:3px;padding:14px}
.referral-stats-grid span{color:#68778b;font-size:.78rem}
.referral-stats-grid strong{color:#062b5f;font-size:1.45rem}
.referral-filter-grid{display:grid;grid-template-columns:minmax(220px,2fr) minmax(180px,1fr) repeat(4,minmax(145px,1fr));gap:10px;align-items:end}
.referral-filter-grid label{display:grid;gap:6px;color:#173a65;font-weight:800}
.referral-filter-actions{margin:0;grid-column:1/-1}
.referral-table td small{display:block;color:#778499;margin-top:3px}
.referral-icon-button,.referral-delete-button{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px}
.referral-icon-button{border:1px solid rgba(6,43,95,.16);background:#fff;color:#062b5f;text-decoration:none}
.referral-icon-button:hover{background:#f2f7fc}
.referral-icon-button svg,.referral-delete-button svg{width:18px;height:18px;fill:currentColor}
.referral-icon-button--create{color:#168a54}
.referral-delete-cell{text-align:center}
.referral-delete-cell form{margin:0}
.referral-delete-button{border:1px solid rgba(178,45,45,.18);background:#fff;color:#b52e2e;cursor:pointer}
.referral-delete-button:hover{background:#fff2f2}
.referral-pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px}
.referral-person-card{margin-top:16px}
.referral-person-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}
.referral-person-stats article{display:grid;gap:3px;padding:12px;border-radius:10px;background:#f7f9fc}
.referral-person-stats span{color:#6f7d90;font-size:.8rem}
.referral-person-stats strong{color:#062b5f;font-size:1.25rem}
@media(max-width:1050px){.referral-generated-link{grid-template-columns:1fr}.referral-filter-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.referral-client-search,.referral-filter-grid{grid-template-columns:1fr}.referral-client-row{align-items:flex-start;flex-direction:column}.referral-stats-grid,.referral-person-stats{grid-template-columns:1fr}.referral-link-copy{display:grid}.referral-pagination{align-items:stretch;flex-direction:column}}

/* Sprint 20 S20-008 — Perfil profesional */
.profile-page-header{align-items:flex-start}
.profile-header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.profile-publication-badge{display:inline-flex;align-items:center;border-radius:999px;padding:7px 10px;font-size:.78rem;font-weight:900}
.profile-publication-badge.is-published{background:#eaf8f0;color:#167647}
.profile-publication-badge.is-draft{background:#fff4e8;color:#9a510d}
.profile-publication-badge.is-hidden{background:#eef1f5;color:#5f6d7d}
.profile-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.profile-main-column,.profile-side-column{display:grid;gap:16px}
.profile-side-column{position:sticky;top:14px}
.profile-card{padding:18px}
.profile-card h2{margin:0;color:#062b5f}
.profile-card-heading{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}
.profile-card-heading p{margin:5px 0 0;color:#6f7d90;line-height:1.5}
.profile-form,.profile-subform{display:grid;gap:14px}
.profile-form label,.profile-publication-card label,.profile-url-card label,.profile-photo-actions label{display:grid;gap:6px}
.profile-field-with-visibility{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#fbfcfe}
.profile-field-with-visibility>label:first-child,.profile-field-with-visibility>div>label{display:grid;gap:6px}
.profile-field-with-visibility textarea{resize:vertical}
.profile-public-toggle{display:flex!important;grid-template-columns:auto 1fr!important;gap:8px!important;align-items:center!important;color:#31506f;font-weight:800;font-size:.84rem;white-space:nowrap}
.profile-public-toggle input{width:18px;height:18px}
.profile-public-toggle--standalone{justify-self:start}
.profile-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.profile-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.profile-grid-2 label,.profile-grid-3 label{display:grid;gap:6px}
.profile-slug-box{display:grid;gap:5px;padding:12px;border-radius:12px;background:#f5f8fc}
.profile-slug-box label{display:grid;gap:6px}
.profile-slug-box small,.profile-inline-note{color:#77869a}
.profile-photo-editor{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center}
.profile-photo-preview{width:160px;height:160px}
.profile-photo-preview img,.profile-photo-placeholder{width:160px;height:160px;border-radius:18px;object-fit:cover}
.profile-photo-placeholder{display:grid;place-items:center;background:#eef3f8;color:#062b5f;font-size:3rem;font-weight:900}
.profile-photo-actions{display:grid;gap:10px}
.profile-photo-actions form{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.profile-photo-visibility-form{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}
.profile-record-list,.profile-license-list{display:grid;gap:10px;margin-bottom:16px}
.profile-record,.profile-license-record{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#fff}
.profile-record>div:first-child,.profile-license-main{display:grid;gap:3px;min-width:0}
.profile-record span,.profile-record small,.profile-license-main span,.profile-license-main small{color:#6f7d90}
.profile-record-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.profile-record-actions form{margin:0}
.profile-insurer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}
.profile-insurer-option{display:grid;gap:8px;padding:12px;border:1px solid rgba(6,43,95,.1);border-radius:12px}
.profile-insurer-option strong{color:#062b5f}
.profile-insurer-option label{display:flex;gap:8px;align-items:center;color:#506176}
.profile-cnsf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.profile-cnsf-option{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px;border:1px solid rgba(6,43,95,.1);border-radius:12px}
.profile-cnsf-option>div{display:grid;gap:3px}
.profile-cnsf-option strong{color:#062b5f}
.profile-cnsf-option small{color:#6f7d90;line-height:1.35}
.profile-cnsf-option label{display:flex;gap:6px;align-items:center;font-size:.8rem}
.profile-license-record{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(160px,1fr) auto auto}
.profile-license-categories{display:flex;gap:5px;flex-wrap:wrap}
.profile-license-categories span{border-radius:999px;background:#eef4fb;color:#124a7f;padding:4px 7px;font-size:.72rem;font-weight:800}
.profile-license-status{border-radius:999px;padding:6px 9px;font-size:.75rem;font-weight:900;white-space:nowrap}
.profile-license-status.is-expired{background:#fdecec;color:#a62c2c}
.profile-license-status.is-critical,.profile-license-status.is-urgent{background:#fff0e6;color:#a04e0d}
.profile-license-status.is-attention,.profile-license-status.is-soon{background:#fff8df;color:#8a6c00}
.profile-license-status.is-valid{background:#edf8f1;color:#167647}
.profile-publication-card form{display:grid;gap:10px}
.profile-publication-rules{display:grid;gap:4px;margin-top:14px;padding:12px;border-radius:10px;background:#f7f9fc;color:#66768a}
.profile-url-card{display:grid;gap:10px}
.profile-url-card input{font-family:monospace;font-size:.78rem}
.profile-qr{display:grid;place-items:center;padding:10px;background:#fff;border:1px solid rgba(6,43,95,.1);border-radius:12px}
.profile-qr img{width:210px;max-width:100%;height:auto}
@media(max-width:1120px){.profile-layout{grid-template-columns:1fr}.profile-side-column{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.profile-side-column .profile-card:last-child{grid-column:1/-1}.profile-insurer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:780px){.profile-grid-2,.profile-grid-3,.profile-cnsf-grid,.profile-insurer-grid,.profile-side-column{grid-template-columns:1fr}.profile-field-with-visibility{grid-template-columns:1fr}.profile-photo-editor{grid-template-columns:1fr}.profile-record,.profile-license-record{align-items:flex-start;grid-template-columns:1fr;flex-direction:column}.profile-cnsf-option{grid-template-columns:1fr}.profile-photo-actions form{display:grid}.profile-side-column .profile-card:last-child{grid-column:auto}}

/* Sprint 20 S20-009 — Marketing / Publicaciones */
.content-page-header{align-items:flex-start}
.content-page-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.content-section-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}
.content-section-heading h2,.content-form-card h2,.content-category-form-card h2{margin:0;color:#062b5f}
.content-section-heading p,.content-form-card p{margin:5px 0 0;color:#6d7b8e;line-height:1.45}
.content-filter-card{margin-bottom:16px}
.content-filter-grid{display:grid;grid-template-columns:minmax(220px,2fr) repeat(5,minmax(145px,1fr));gap:10px;align-items:end}
.content-filter-grid label,.content-form-grid label,.content-form-card>label,.content-form-stack label{display:grid;gap:6px}
.content-filter-wide{grid-column:span 2}
.content-filter-actions{grid-column:1/-1;margin:0}
.content-publications-table td small{display:block;color:#77859a;margin-top:3px;max-width:420px}
.content-status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:.75rem;font-weight:900;white-space:nowrap}
.content-status--draft{background:#fff4e8;color:#9a510d}
.content-status--scheduled{background:#edf4ff;color:#245b9c}
.content-status--active{background:#eaf8f0;color:#167647}
.content-status--published{background:#eaf8f0;color:#167647}
.content-status--finished{background:#f0f2f5;color:#667386}
.content-status--hidden{background:#eef1f5;color:#596779}
.content-option-flags{display:flex;gap:5px;flex-wrap:wrap}
.content-option-flags span{border-radius:999px;padding:4px 7px;background:#f1f5f9;color:#35506c;font-size:.72rem;font-weight:800}
.content-pagination{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:14px}
.content-editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
.content-editor-main,.content-editor-side{display:grid;gap:16px}
.content-editor-side{position:sticky;top:14px}
.content-form-card{padding:18px}
.content-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.content-span-2{grid-column:1/-1}
.content-form-card small{color:#78869a}
.content-editor-toolbar{display:flex;gap:5px;align-items:center;flex-wrap:wrap;padding:8px;border:1px solid #d8e0e9;border-bottom:0;border-radius:12px 12px 0 0;background:#f8fafc}
.content-editor-toolbar button{min-width:34px;height:34px;padding:0 8px;border:1px solid #d5dde7;border-radius:7px;background:#fff;color:#15395f;font:inherit;font-size:.8rem;font-weight:850;cursor:pointer}
.content-editor-toolbar button:hover{background:#edf4fb}
.content-toolbar-separator{width:1px;height:26px;background:#d8e0e9;margin:0 3px}
.content-rich-editor{min-height:420px;padding:18px;border:1px solid #d8e0e9;border-radius:0 0 12px 12px;background:#fff;line-height:1.65;outline:none;overflow-wrap:anywhere}
.content-rich-editor:focus{border-color:#88a9d0;box-shadow:0 0 0 3px rgba(22,94,160,.08)}
.content-rich-editor:empty:before{content:attr(data-placeholder);color:#9aa6b5;pointer-events:none}
.content-rich-editor h2{font-size:1.65rem;color:#062b5f;margin:1.25em 0 .45em}
.content-rich-editor h3{font-size:1.3rem;color:#123b67;margin:1.1em 0 .4em}
.content-rich-editor blockquote{margin:1em 0;padding:10px 14px;border-left:4px solid #f47521;background:#fff8f2;color:#4f6074}
.content-rich-editor a{color:#0b63c7;text-decoration:underline}
.content-rich-editor hr{border:0;border-top:1px solid #dce3eb;margin:20px 0}
.content-security-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f7f9fc;color:#66778c;font-size:.8rem;line-height:1.45}
.content-checkbox{display:flex!important;grid-template-columns:auto minmax(0,1fr)!important;gap:8px!important;align-items:flex-start!important;color:#3e5269;font-weight:700}
.content-checkbox input{width:17px;height:17px;margin-top:2px}
.content-category-options{display:grid;gap:8px;margin-top:12px}
.content-category-options>span{font-weight:850;color:#173a65}
.content-save-card{display:grid;gap:8px}
.content-categories-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}
.content-category-form-card{position:sticky;top:14px}
.content-form-stack{display:grid;gap:12px;margin-top:14px}
.content-category-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.content-category-actions form{margin:0}
@media(max-width:1180px){.content-filter-grid{grid-template-columns:repeat(3,minmax(150px,1fr))}.content-filter-wide{grid-column:span 2}.content-editor-layout,.content-categories-layout{grid-template-columns:1fr}.content-editor-side,.content-category-form-card{position:static}.content-editor-side{grid-template-columns:repeat(2,minmax(0,1fr))}.content-save-card{grid-column:1/-1}}
@media(max-width:760px){.content-filter-grid,.content-form-grid,.content-editor-side{grid-template-columns:1fr}.content-filter-wide,.content-span-2,.content-save-card{grid-column:auto}.content-editor-toolbar{gap:4px}.content-rich-editor{min-height:320px}.content-pagination{align-items:stretch;flex-direction:column}}

/* S20-010 FIX-010 — bloqueo visual de operaciones del Perfil Profesional */
.profile-operation-overlay{
    position:fixed;
    inset:0;
    z-index:100000;
    display:grid;
    place-items:center;
    padding:20px;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .18s ease,visibility .18s ease
}
.profile-operation-overlay.is-visible{
    opacity:1;
    visibility:visible;
    pointer-events:auto
}
.profile-operation-backdrop{
    position:absolute;
    inset:0;
    background:rgba(3,24,52,.52);
    -webkit-backdrop-filter:blur(8px);
    backdrop-filter:blur(8px)
}
.profile-operation-dialog{
    position:relative;
    z-index:1;
    width:min(440px,calc(100vw - 32px));
    border:1px solid rgba(255,255,255,.68);
    border-radius:20px;
    background:#fff;
    box-shadow:0 28px 80px rgba(0,30,64,.30);
    padding:30px 28px;
    text-align:center
}
.profile-operation-icon{
    width:60px;
    height:60px;
    margin:0 auto 18px;
    display:grid;
    place-items:center;
    border-radius:18px;
    background:#eef4fb;
    color:#062b5f
}
.profile-operation-spinner{
    width:30px;
    height:30px;
    border:3px solid rgba(6,43,95,.18);
    border-top-color:#062b5f;
    border-radius:50%;
    animation:profile-operation-spin .8s linear infinite
}
.profile-operation-result-icon{
    display:none;
    width:30px;
    height:30px;
    position:relative
}
.profile-operation-overlay.is-success .profile-operation-icon{
    background:#eaf8f0;
    color:#167647
}
.profile-operation-overlay.is-error .profile-operation-icon{
    background:#fdecec;
    color:#a62c2c
}
.profile-operation-overlay.is-success .profile-operation-spinner,
.profile-operation-overlay.is-error .profile-operation-spinner{
    display:none
}
.profile-operation-overlay.is-success .profile-operation-result-icon,
.profile-operation-overlay.is-error .profile-operation-result-icon{
    display:block
}
.profile-operation-overlay.is-success .profile-operation-result-icon::before{
    content:"";
    position:absolute;
    left:5px;
    top:6px;
    width:17px;
    height:10px;
    border-left:3px solid currentColor;
    border-bottom:3px solid currentColor;
    transform:rotate(-45deg)
}
.profile-operation-overlay.is-error .profile-operation-result-icon::before,
.profile-operation-overlay.is-error .profile-operation-result-icon::after{
    content:"";
    position:absolute;
    left:14px;
    top:3px;
    width:3px;
    height:24px;
    border-radius:3px;
    background:currentColor
}
.profile-operation-overlay.is-error .profile-operation-result-icon::before{
    transform:rotate(45deg)
}
.profile-operation-overlay.is-error .profile-operation-result-icon::after{
    transform:rotate(-45deg)
}
.profile-operation-title{
    display:block;
    color:#062b5f;
    font-size:1.16rem;
    line-height:1.35
}
.profile-operation-message{
    margin:10px 0 0;
    color:#66768a;
    line-height:1.55
}
.profile-operation-close{
    margin-top:22px;
    min-width:150px
}
html.profile-operation-is-blocked,
body.profile-operation-is-blocked{
    overflow:hidden!important
}
body.profile-operation-is-blocked .app-shell{
    pointer-events:none
}
body.profile-operation-is-blocked .profile-operation-overlay{
    pointer-events:auto
}
@keyframes profile-operation-spin{
    to{transform:rotate(360deg)}
}
@media(max-width:600px){
    .profile-operation-overlay{
        padding:14px
    }
    .profile-operation-dialog{
        width:100%;
        border-radius:18px;
        padding:24px 20px
    }
}
@media(prefers-reduced-motion:reduce){
    .profile-operation-overlay{
        transition:none
    }
    .profile-operation-spinner{
        animation-duration:1.5s
    }
}


/* S20-011-001 — IMSS Altas / Expedientes */
.imss-page-header{align-items:flex-start}.imss-scope-note{display:block;margin-top:6px;color:#6b7280}.imss-filter-card,.imss-table-card,.imss-upload-card,.imss-analysis-card,.imss-form-card{margin-bottom:18px}.imss-search-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.imss-search-form label{min-width:min(420px,100%);flex:1}.imss-table-wrap{overflow-x:auto}.imss-table td small{display:block;margin-top:4px;color:#6b7280}.imss-time-badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:.78rem;font-weight:800;white-space:nowrap}.imss-time-badge.is-ok{background:#eaf8f0;color:#166534}.imss-time-badge.is-warning{background:#fff7e6;color:#9a5b00}.imss-time-badge.is-danger{background:#fdecec;color:#a62c2c}.imss-time-badge.is-neutral{background:#eef2f7;color:#475569}.imss-section-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.imss-section-heading h2{margin:4px 0 6px}.imss-section-heading p{margin:0;color:#64748b}.imss-kicker{display:inline-block;color:#f47521;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.imss-file-field{display:grid;gap:8px;max-width:680px}.imss-file-field small,.imss-form-grid small{color:#64748b;line-height:1.4}.imss-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.imss-summary-grid>div{padding:14px;border:1px solid rgba(6,43,95,.1);border-radius:12px;background:#f8fafc}.imss-summary-grid span{display:block;color:#64748b;font-size:.78rem;font-weight:700;margin-bottom:4px}.imss-summary-grid strong{display:block;color:#062b5f;word-break:break-word}.imss-summary-grid small{display:block;margin-top:4px;color:#64748b}.imss-analysis-warnings{margin-top:14px}.imss-analysis-warnings ul{margin:8px 0 0 18px}.imss-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.imss-form-grid>label{display:grid;gap:7px}.imss-choice-fieldset{border:1px solid rgba(6,43,95,.13);border-radius:12px;padding:12px 14px;display:grid;gap:8px}.imss-choice-fieldset legend{padding:0 6px;font-weight:800;color:#062b5f}.imss-choice-fieldset label{display:flex;gap:8px;align-items:flex-start}.imss-checkbox-field{display:flex!important;align-items:center;gap:9px;padding-top:28px;font-weight:800;color:#062b5f}.imss-form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.imss-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.imss-detail-list{display:grid;gap:0;margin:14px 0 0}.imss-detail-list>div{display:grid;grid-template-columns:minmax(140px,.8fr) 1.2fr;gap:12px;padding:10px 0;border-bottom:1px solid rgba(6,43,95,.08)}.imss-detail-list dt{color:#64748b;font-weight:700}.imss-detail-list dd{margin:0;color:#172033;font-weight:700;word-break:break-word}.imss-operation-overlay{position:fixed;inset:0;z-index:100100;display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,visibility .18s ease}.imss-operation-overlay.is-visible{opacity:1;visibility:visible;pointer-events:auto}.imss-operation-backdrop{position:absolute;inset:0;background:rgba(3,24,52,.58);backdrop-filter:blur(3px)}.imss-operation-dialog{position:relative;width:min(460px,100%);padding:28px;background:#fff;border-radius:20px;box-shadow:0 28px 70px rgba(0,31,69,.28);text-align:center}.imss-operation-dialog strong{display:block;margin-top:14px;color:#062b5f;font-size:1.12rem}.imss-operation-dialog p{margin:8px 0 0;color:#64748b}.imss-operation-spinner{display:inline-block;width:34px;height:34px;border:4px solid rgba(6,43,95,.15);border-top-color:#f47521;border-radius:50%;animation:imss-operation-spin .8s linear infinite}html.imss-operation-is-blocked,body.imss-operation-is-blocked{overflow:hidden!important}body.imss-operation-is-blocked .app-shell{pointer-events:none}body.imss-operation-is-blocked .imss-operation-overlay{pointer-events:auto}@keyframes imss-operation-spin{to{transform:rotate(360deg)}}
@media(max-width:980px){.imss-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.imss-detail-grid{grid-template-columns:1fr}}
@media(max-width:680px){.imss-summary-grid,.imss-form-grid{grid-template-columns:1fr}.imss-section-heading{flex-direction:column}.imss-detail-list>div{grid-template-columns:1fr;gap:3px}.imss-operation-overlay{padding:14px}.imss-operation-dialog{padding:24px 20px}}
