/* Constitución Visual 9gigs · componentes de Compliance (2026-10-27): NucleoRiesgo y AlertaVerificante.
   Solo leen los tokens --cv- de duet-global-hxm-20261023.css; ningún color ni medida suelta. Se incluyen
   junto con cv-componentes.js en las páginas que los usan (no se inyectan en todo el sistema). */
/* Tokens de respaldo (28-10-2026): la hoja global duet-global-hxm no se incluye en templateMenu, así que las páginas que solo
   traen esta hoja definen aquí los mismos valores; una página puede redefinirlos en su propio ámbito. */
:root{--cv-canvas:#f6f5f1;--cv-surface:#fffefa;--cv-wash:#eef2ea;--cv-ink:#243137;--cv-ink-muted:#59676c;--cv-line:#d9ddd8;--cv-line-strong:#7f8b8d;--cv-brand:#527023;--cv-primary:#306657;--cv-on-primary:#ffffff;--cv-lapis:#2c4a6e;--cv-oro:#8a6420;--cv-danger:#a62935;--cv-warning:#805b00;--cv-success:#216b43;--cv-focus:var(--cv-lapis);--cv-space-2:2px;--cv-space-3:3px;--cv-space-5:5px;--cv-space-8:8px;--cv-space-13:13px;--cv-space-21:21px;--cv-space-34:34px;--cv-space-55:55px;--cv-radius-3:3px;--cv-radius-5:5px;--cv-radius-8:8px;--cv-radius-13:13px;--cv-radius-21:21px;--cv-dur-89:89ms;--cv-dur-233:233ms;--cv-dur-377:377ms;--cv-ease-swing:cubic-bezier(0.16,1,0.3,1);--cv-ease-pausa:cubic-bezier(0.38,0,0.62,1);--cv-shadow-reposo:0 1px 2px rgba(22,39,47,.025),0 5px 13px rgba(22,39,47,.025),0 21px 55px rgba(22,39,47,.025);--cv-shadow-portal:0 2px 3px rgba(22,39,47,.05),0 13px 34px rgba(22,39,47,.08),0 55px 89px rgba(22,39,47,.1)}
.cv{font-family:var(--font-sf,system-ui);color:var(--cv-ink);font-size:16px;line-height:26px;-webkit-font-smoothing:antialiased}
.cv *,.cv-veil *{box-sizing:border-box}
.cv-label{font:650 10px/16px var(--font-sf,system-ui);letter-spacing:.13em;text-transform:uppercase;color:var(--cv-ink-muted)}
.cv-meta{font-size:13px;line-height:21px;color:var(--cv-ink-muted);margin:0}
.cv-num{font-variant-numeric:tabular-nums}
.cv-id{font-family:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}

/* Estado: el color nunca va solo, siempre con palabra e ícono. */
.cv-chip{display:inline-flex;align-items:center;gap:var(--cv-space-5);padding:var(--cv-space-2) var(--cv-space-8);border-radius:var(--cv-radius-3);background:var(--cv-wash);color:var(--cv-ink);font:600 10px/16px var(--font-sf,system-ui);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.cv-chip svg{width:13px;height:13px;flex:none}
.cv-chip--success{color:var(--cv-success)}.cv-chip--warning{color:var(--cv-warning)}.cv-chip--danger{color:var(--cv-danger)}.cv-chip--lapis{color:var(--cv-lapis)}

.cv-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--cv-space-8);min-height:34px;padding:var(--cv-space-8) var(--cv-space-21);border-radius:var(--cv-radius-5);border:1px solid var(--cv-line-strong);background:var(--cv-surface);color:var(--cv-ink);font:600 13px/21px var(--font-sf,system-ui);cursor:pointer;transition:background-color var(--cv-dur-89) var(--cv-ease-swing)}
.cv-btn:hover{background:var(--cv-wash)}
.cv-btn--primary,.cv-btn--primary:hover{background:var(--cv-primary);border-color:var(--cv-primary);color:var(--cv-on-primary)}
.cv-btn--primary:hover{filter:brightness(1.08)}
.cv-btn:focus-visible{outline:2px solid var(--cv-focus);outline-offset:2px}

/* NucleoRiesgo: una sola cifra por pantalla, centrada, con su escala y sus factores. */
.cv-core{display:flex;flex-direction:column;align-items:center;gap:var(--cv-space-13);margin:0 auto;max-width:var(--cv-width-987,987px);padding:var(--cv-space-55) var(--cv-space-34);background:var(--cv-surface);color:var(--cv-ink);border-radius:var(--cv-radius-21);box-shadow:var(--cv-shadow-reposo);text-align:center}
.cv-core__value{display:flex;align-items:baseline;gap:var(--cv-space-8);margin:0;font:600 68px/89px var(--font-sf,system-ui);font-variant-numeric:tabular-nums}
.cv-core__value small{font:500 20px/32px var(--font-sf,system-ui);color:var(--cv-ink-muted)}
/* Cuatro tramos 34 : 21 : 13 : 8. Cuanto más grave, más estrecho. */
.cv-scale{position:relative;width:min(377px,100%);display:grid;grid-template-columns:34fr 21fr 13fr 8fr;gap:var(--cv-space-2);height:8px}
.cv-scale i{border-radius:var(--cv-radius-3);background:var(--cv-wash)}
.cv-scale i.on{background:var(--cv-warning)}
[data-tramo=bajo] .cv-scale i.on{background:var(--cv-success)}
[data-tramo=alto] .cv-scale i.on,[data-tramo=critico] .cv-scale i.on{background:var(--cv-danger)}
.cv-scale__mark{position:absolute;top:calc((8px - 21px) / 2);width:3px;height:21px;border-radius:2px;background:var(--cv-oro);transform:translateX(-50%)}
.cv-scale__legend{width:min(377px,100%);display:grid;grid-template-columns:34fr 21fr 13fr 8fr;gap:var(--cv-space-2);text-align:left}
.cv-factors{width:min(610px,100%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--cv-space-21);margin-top:var(--cv-space-21);text-align:left}
.cv-factor{display:flex;flex-direction:column;gap:var(--cv-space-5);padding-top:var(--cv-space-13);border-top:1px solid var(--cv-line)}

/* AlertaVerificante: portal sobre un velo. Entra desde 98,7 % en 377 ms; sale en 233 ms. */
.cv-veil{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;padding:var(--cv-space-21);background:color-mix(in srgb,var(--cv-ink) 34%,transparent);font-family:var(--font-sf,system-ui);color:var(--cv-ink);font-size:16px;line-height:26px}
.cv-veil[data-state=opening]{animation:cv-fade var(--cv-dur-377) var(--cv-ease-swing) both}
.cv-veil[data-state=closing]{animation:cv-fade var(--cv-dur-233) var(--cv-ease-pausa) reverse both}
html[data-ng-scheme=dark] .cv-veil{background:color-mix(in srgb,var(--cv-canvas) 76%,transparent)}
.cv-portal{width:min(610px,100%);max-height:calc(100vh - 2 * var(--cv-space-21));overflow:auto;background:var(--cv-surface);border-radius:var(--cv-radius-13);box-shadow:var(--cv-shadow-portal);padding:var(--cv-space-34);display:flex;flex-direction:column;gap:var(--cv-space-21)}
.cv-portal[data-state=opening]{animation:cv-portal var(--cv-dur-377) var(--cv-ease-swing) both}
.cv-portal[data-state=closing]{animation:cv-portal-out var(--cv-dur-233) var(--cv-ease-pausa) both}
@keyframes cv-portal{from{opacity:0;transform:scale(.987)}to{opacity:1;transform:none}}
@keyframes cv-portal-out{from{opacity:1}to{opacity:0;transform:scale(.987)}}
.cv-portal__head{display:grid;grid-template-columns:34px minmax(0,1fr);gap:var(--cv-space-13);align-items:start}
.cv-portal__icon{width:34px;height:34px;color:var(--cv-danger)}
.cv-portal--riesgo .cv-portal__icon,.cv-portal--pendiente .cv-portal__icon{color:var(--cv-warning)}
.cv-portal__title{font:600 26px/34px var(--font-sf,system-ui);margin:var(--cv-space-5) 0 0;text-wrap:balance}
.cv-portal__body{margin:0;max-width:var(--cv-measure-610,610px)}
.cv-portal__facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--cv-space-5) var(--cv-space-21);margin:0;padding:var(--cv-space-13) var(--cv-space-21);background:var(--cv-wash);border-radius:var(--cv-radius-8)}
.cv-portal__facts dt{color:var(--cv-ink-muted);font-size:13px;line-height:21px}
.cv-portal__facts dd{margin:0;font-size:13px;line-height:21px;overflow-wrap:anywhere}
.cv-portal__actions{display:flex;flex-wrap:wrap;gap:var(--cv-space-8);justify-content:flex-end}

@media (prefers-reduced-motion:reduce){.cv-portal[data-state=opening]{animation:cv-fade var(--cv-dur-89) linear both}.cv-portal[data-state=closing]{animation:cv-fade var(--cv-dur-89) linear reverse both}}
@keyframes cv-fade{from{opacity:0}to{opacity:1}}
@media (max-width:610px){.cv-factors{grid-template-columns:1fr}.cv-core{padding:var(--cv-space-34) var(--cv-space-21)}.cv-core__value{font-size:42px;line-height:55px}.cv-portal{padding:var(--cv-space-21)}.cv-portal__title{font-size:20px;line-height:32px}.cv-portal__facts{grid-template-columns:1fr;gap:0 var(--cv-space-21)}.cv-portal__facts dd+dt{margin-top:var(--cv-space-8)}}
