/* Monitor Revidere · sistema visual "tinta y verde": papel cálido, tinta casi negra, verde Revidere atenuado como acento y lavanda para comparar. Raleway 700 para titulares, DM Sans para texto.
   El acento pasó de lima eléctrica (#c8ff3e) al verde oficial de marca #30b71a (27-sep-2026, a pedido de Aldo: "que sea el verde Revidere, atenuado/disminuido") -- ya es un verde bastante más sobrio que el lima, y el texto negro (--brand-on) se sigue leyendo bien encima (contraste ~7.9:1). */
:root{
  --page:#f6f6f2; --surface:#ffffff; --surface2:#efefe9; --ink:#0f1115; --ink2:#4a4d55; --muted:#62666f;
  --grid:#e3e3dc; --axis:#c4c5bd; --line:rgba(15,17,21,.1);
  --brand:#30b71a; --brand-ink:#245600; --brand-soft:#e3f6da; --brand-on:#0f1115; --accent2:#8b8cff; --accent2-ink:#5658d6;
  --hdr:#0f1115; --dark:#0f1115; --dark2:#1a1d23;
  --blue:#5658d6; --bar:#c4c5bd; --ok:#2ea043; --warn:#e3a008; --warn-ink:#9a6400; --bad:#d9412c; --coral:#ff6b57;
  --s0:#f2ffd6; --s1:#cdf57a; --s2:#95d62b; --s3:#55a30a; --s4:#245600;
  --s0i:#0f1115; --s1i:#0f1115; --s2i:#0f1115; --s3i:#0f1115; --s4i:#ffffff;
  --shadow:0 1px 2px rgba(15,17,21,.04),0 12px 32px -22px rgba(15,17,21,.3);
  --f-display:"Raleway","Segoe UI",system-ui,sans-serif; --f-body:"DM Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease-out:cubic-bezier(.23,1,.32,1); --ease-in-out:cubic-bezier(.77,0,.175,1);
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-padding-top:90px}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--f-display);font-variant-numeric:lining-nums;text-wrap:balance;margin:0}
p{margin:0}
a{color:inherit;text-underline-offset:2px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent2-ink);outline-offset:2px;border-radius:4px}
.wrap{max-width:1180px;margin:0 auto;padding-inline:20px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}
.num{font-variant-numeric:tabular-nums}

/* ---------- encabezado (una sola línea) ---------- */
.top{background:var(--hdr);color:#fff;position:sticky;top:env(safe-area-inset-top,0px);z-index:30}
.top .wrap{display:flex;align-items:center;gap:12px;padding-block:9px;max-width:1400px}
.logoplate{display:flex;align-items:center;flex:none;text-decoration:none;padding:2px 0}
.logoplate img{height:50px;width:auto;display:block}
/* Logo de la cámara aliada (Alianzas): al otro extremo del de Revidere, con una separación de la cuenta;
   se muestra solo cuando el sitio se ve desde el subdominio de esa alianza (ver app.js, fijarAlianza).
   Va sobre una placa blanca fija —igual que el logo de Revidere en los portales— porque el logo de cada
   cámara lo sube tal cual el admin y casi ninguno trae versión "negativa" para fondo oscuro. */
.alianza-logo{height:30px;width:auto;display:block;flex:none;margin-left:12px;padding:4px 10px;background:#fff;border-radius:8px}
@media (max-width:640px){.alianza-logo{height:22px;padding:3px 7px}}
/* Admin › Alianzas: muestrita de color y miniatura del logo en la tabla */
.swatch{display:inline-block;width:15px;height:15px;border-radius:4px;background:var(--sw,#ccc);border:1px solid var(--line);vertical-align:middle}
.alianza-thumb{height:20px;width:auto;display:inline-block;vertical-align:middle;margin-right:6px;background:var(--dark);border-radius:3px;padding:2px}
.tabs{display:flex;align-items:center;gap:2px;flex:1;min-width:0;white-space:nowrap}
.tab{background:none;border:0;color:#c9d2dc;padding:8px 9px;border-radius:999px;font-weight:500;font-size:13.5px;text-decoration:none;display:inline-flex;align-items:center;flex:none}
/* "Más ▾": cuando no caben todas las pestañas, las que sobran se agrupan aquí en vez de desbordarse sin avisar.
   Se recalcula en cada pintarNav() y en cada resize (ver app.js), así que crece solo según cuántas pestañas quepan
   en el ancho disponible: no hay que tocar este CSS al agregar rutas nuevas. */
.tabs-mas-wrap{position:relative;display:inline-flex;flex:none}
.tab-mas .car{font-size:10px;margin-left:1px}
.tabs-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:190px;max-width:260px;max-height:min(60vh,420px);overflow-y:auto;background:var(--dark2);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:6px;box-shadow:0 16px 40px -14px rgba(0,0,0,.55);display:none;z-index:40}
.tabs-menu.abierto{display:grid;gap:1px}
.tabs-menu-item{display:block;padding:9px 12px;border-radius:9px;color:#e7e9ee;text-decoration:none;font-size:13.5px;font-weight:500;white-space:nowrap}
.tabs-menu-item:hover{background:rgba(255,255,255,.09);color:#fff}
.tabs-menu-item[aria-current="page"]{background:var(--brand);color:var(--brand-on);font-weight:700}
@media (max-width:1400px){.tab{padding:8px 7px;font-size:13px}.top .wrap{gap:10px}.lens{max-width:112px;padding:7px 9px}.acct .pill.sm{padding:8px 11px}}
.tab:hover{background:rgba(255,255,255,.09);color:#fff}
.tab[aria-current="page"]{background:#fff;color:#000;font-weight:700}
.acct{display:flex;align-items:center;gap:8px;flex:none}
.pill{background:var(--brand);color:var(--brand-on);border:0;border-radius:999px;padding:9px 18px;font-weight:700;font-size:14px;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.pill{transition:transform 160ms var(--ease-out),filter 160ms ease}
@media (hover:hover) and (pointer:fine){.pill:hover{filter:brightness(1.07)}}
.pill:active{transform:scale(.97)}
.tbtn,.sug,.capa,.tab,.iconbtn,.rk-row{transition:transform 160ms var(--ease-out),border-color 160ms ease,background-color 160ms ease,color 160ms ease}
.tbtn:active,.sug:active,.capa:active,.iconbtn:active{transform:scale(.97)}
.pill.ghost{background:transparent;color:inherit;border:1px solid rgba(255,255,255,.28)}
.pill.ghost:hover{border-color:#fff}
.pill.line{background:transparent;color:var(--ink);border:1px solid var(--line)}
.pill.line:hover{border-color:var(--muted)}
.pill.sm{padding:6px 13px;font-size:13px}
.pill.danger{background:var(--bad);color:#fff}
.pill[disabled]{opacity:.45;cursor:not-allowed}
.lens{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);color:#fff;border-radius:999px;padding:7px 10px;font-size:13px;max-width:120px}
.lens option{color:#000}
.iconbtn{background:none;border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:999px;width:34px;height:34px;display:grid;place-items:center;font-size:15px}
.iconbtn:hover{border-color:#fff}
@media (max-width:1180px){.lens{display:none}}
@media (max-width:900px){
  .top .wrap{flex-wrap:wrap;gap:8px 10px}
  .tabs{order:3;flex-basis:100%}
  .lens{display:none}
  .logoplate img{height:40px}
}

/* ---------- estructura ---------- */
main{padding-block:26px 70px;min-height:70vh}
.eyebrow{font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600}
.pagehead{display:flex;flex-wrap:wrap;gap:14px 30px;justify-content:space-between;align-items:flex-end}
.pagehead h1{font-size:clamp(2.2rem,5vw,3.8rem);font-weight:700;letter-spacing:-.04em;line-height:1.02}
.pagehead p.sub{max-width:62ch;color:var(--ink2);margin-top:10px;font-size:16px}
.sec{margin-top:38px}
.sec>h2,.sech h2{font-size:1.75rem;font-weight:700;letter-spacing:-.03em}
.sech{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:baseline;justify-content:space-between}
.lede{color:var(--ink2);margin-top:6px;max-width:72ch}
.grid{display:grid;gap:14px;margin-top:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--shadow);min-width:0}
.card h3{font-size:1.12rem;font-weight:700;letter-spacing:-.01em}
.card .cap{color:var(--ink2);font-size:13.5px;margin-top:3px}
.cardhead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;flex-wrap:wrap}
.tag{font-size:12.5px;padding:4px 11px;border-radius:999px;border:1px solid var(--line);color:var(--ink2);background:var(--surface)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.note{margin-top:10px;font-size:12.5px;color:var(--muted)}
.expl{margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--surface2);border:1px solid var(--line);display:grid;gap:8px}
.expl p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink)}
.expl p b{display:block;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink2);margin-bottom:2px}
.empty{border:1px dashed var(--axis);border-radius:12px;padding:18px;color:var(--ink2);font-size:14px}

/* chips de estatus */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--ink2);padding:2px 9px 2px 6px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);white-space:nowrap}
.chip i{font-style:normal;font-weight:700;font-size:11px;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;color:#fff;line-height:1}
.chip.ok i{background:var(--ok)} .chip.rep i{background:var(--warn);color:#000} .chip.na i{background:var(--muted)}

/* botones de herramienta / filtros */
.tools{display:flex;gap:6px;flex-wrap:wrap}
.tbtn{background:var(--surface2);border:1px solid var(--line);border-radius:999px;padding:5px 13px;font-size:13px;color:var(--ink2)}
.tbtn:hover{border-color:var(--muted);color:var(--ink)}
.tbtn[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink2)}
.field input,.field select,.field textarea,.sel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;color:var(--ink)}
.sel{width:auto;padding:8px 12px;font-size:13.5px}
.field .hint{font-size:12px;color:var(--muted)}
.frow{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));margin-top:12px}
.filterbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:end;margin-top:18px}
.filterbar .field{min-width:170px}

/* ---------- portada (tinta y lima: secciones alternadas papel / tinta) ---------- */
body.portada main{padding-block:0 0;max-width:none;padding-inline:0}
.hero{position:relative;overflow:hidden;overflow:clip;padding:76px 0 60px;background:var(--page)} /* clip, no hidden: hidden se puede desplazar por scrollIntoView y esconde el título bajo la barra */
.hero::before{content:"";position:absolute;inset:auto -10% -40% auto;width:60%;height:90%;background:radial-gradient(closest-side,rgba(48,183,26,.35),transparent 70%);pointer-events:none}
.herogrid{max-width:1180px;margin:0 auto;padding-inline:20px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:48px;align-items:center;position:relative}
.herotext .eyebrow{color:var(--brand-ink)}
.hero h1{font-size:clamp(2.8rem,6.6vw,5rem);font-weight:700;letter-spacing:-.05em;line-height:.96;margin-top:14px}
.hero h1 em{font-style:normal;background:linear-gradient(transparent 58%,var(--brand) 58%);padding-inline:.06em;margin-inline:-.06em}
.hero .sub{font-size:18px;color:var(--ink2);margin-top:20px;max-width:48ch}
.loginbox{margin-top:28px;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:22px 24px;max-width:480px;box-shadow:var(--shadow)}
.loginbox h2{font-size:1.3rem;font-weight:700;letter-spacing:-.02em}
.loginbox p{color:var(--ink2);font-size:14px;margin-top:5px}
.loginbox .row{display:flex;gap:8px;margin-top:14px}
.loginbox .row input{flex:1;min-width:0;background:var(--page);border:1px solid var(--line);border-radius:999px;padding:12px 18px;transition:border-color 160ms ease}
.loginbox .row input:focus{border-color:var(--brand);outline:none}
.codein{letter-spacing:.5em;font-size:1.5rem;font-weight:700;text-align:center;font-family:var(--f-display);font-variant-numeric:tabular-nums}
.msgline{font-size:13px;margin-top:10px;color:var(--ink2);min-height:1.2em}
.msgline.err{color:var(--bad)}
.pill.big{padding:14px 26px;font-size:15.5px}
.heromap{min-width:0}
.capas{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.capa{background:var(--surface);border:1px solid var(--line);color:var(--ink2);border-radius:999px;padding:7px 14px;font-size:13.5px}
.capa.on{background:var(--ink);border-color:var(--ink);color:var(--page);font-weight:700}
@media (hover:hover) and (pointer:fine){.capa:hover{border-color:var(--ink)}}
.livemap .maphead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;color:var(--ink2);margin-bottom:10px}
.livemap .maphead b{color:var(--ink);font-family:var(--f-display);font-size:15px}
.livemap .tile rect{stroke:var(--page);transition:fill .5s var(--ease-in-out)}
.scalerow{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.scalerow .note{margin-top:10px}
.ticker{background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ticker .in{max-width:1180px;margin:0 auto;padding:22px 20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.tk{background:var(--page);border:1px solid var(--line);border-radius:20px;padding:18px 20px}
.tk .l{font-size:12.5px;color:var(--ink2)}
.tk .v{font-family:var(--f-display);font-weight:700;font-size:2.6rem;letter-spacing:-.04em;line-height:1.05;margin-top:6px;color:var(--ink)}
.tk .p{font-size:12px;color:var(--muted);margin-top:6px}
.chapters{display:flex;flex-direction:column}
.chapter{padding:110px 0}
.chapter.dark{background:var(--dark);color:#f6f6f2}
.chapter.dark .eyebrow{color:var(--accent2)}
.chapter.dark .ch-n{color:var(--brand)}
.chapter.dark h2{color:#fff}
.chapter.dark p{color:rgba(246,246,242,.75)}
.chapter.dark .tag{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#f6f6f2}
.chapter.dark .sug{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#f6f6f2}
.chapter.dark .gapdemo{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14)}
.chapter.dark .gb .gl,.chapter.dark .gapdemo .l{color:rgba(246,246,242,.7)} .chapter.dark .gb .gl b,.chapter.dark .gb .gv{color:#fff}
.chapter.dark .gb .gt{background:rgba(255,255,255,.1)}
.chapter.dark .gb.b .gt i{background:#f6f6f2}
.chapter.dark .chip{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#f6f6f2}
.chapter .in{max-width:1180px;margin:0 auto;padding-inline:20px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:center}
.chapter.alt .ch-text{order:2}
.ch-n{font-family:var(--f-display);font-weight:700;font-size:clamp(4rem,10vw,7.5rem);line-height:.9;letter-spacing:-.06em;color:var(--ink);margin-bottom:14px}
.ch-n::after{content:"";display:block;width:.9em;height:.12em;background:var(--brand);border-radius:99px;margin-top:.1em}
.chapter.dark .ch-n::after{background:var(--brand)}
.chapter .eyebrow{color:var(--brand-ink)}
.chapter h2{font-size:clamp(1.9rem,4vw,3rem);font-weight:700;letter-spacing:-.04em;line-height:1.04;margin-top:10px}
.chapter p{color:var(--ink2);font-size:17px;margin-top:14px;max-width:50ch}
.ch-vis{min-width:0}
.ch-vis .tags{margin-top:0}
.ch-vis .sug{font-size:14.5px;padding:11px 18px}
@media (prefers-reduced-motion:no-preference){.chapter .ch-text,.chapter .ch-vis{transition:transform .6s var(--ease-out)}.chapter:not(.in-view) .ch-text{transform:translateY(16px)}.chapter:not(.in-view) .ch-vis{transform:translateY(26px)}}
.gapdemo{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:20px 22px;display:flex;flex-direction:column;gap:12px}
.gapdemo .l{font-size:12.5px;color:var(--muted)}
.gb{display:grid;grid-template-columns:minmax(120px,1fr) 2fr auto;gap:12px;align-items:center;font-size:14.5px}
.gb .gl{color:var(--ink2)} .gb .gl b{color:var(--ink);font-weight:700}
.gb .gt{height:16px;background:var(--surface2);border-radius:8px;overflow:hidden}
.gb .gt i{display:block;height:100%;width:var(--w,0);border-radius:8px;background:var(--bar);transition:width .8s var(--ease-out)}
.gb.a .gt i{background:var(--brand)} .gb.b .gt i{background:var(--ink)} .gb.c .gt i{background:var(--coral)}
.gb .gv{font-weight:700;font-family:var(--f-display);font-size:1.1rem}
.howsec{background:var(--brand);color:#0f1115;padding:110px 20px;text-align:center}
.howsec h2{font-size:clamp(1.9rem,4vw,3rem);font-weight:700;letter-spacing:-.04em}
.howsec p{color:rgba(15,17,21,.75);max-width:60ch;margin:14px auto 26px;font-size:17px}
.howsec .pill{background:#0f1115;color:#fff}
body.portada footer{background:var(--hdr);color:rgba(246,246,242,.7);border-top:1px solid rgba(255,255,255,.1)}
@media (max-width:900px){.herogrid{grid-template-columns:minmax(0,1fr);gap:28px}.hero{padding:40px 0 44px}.chapter{padding:64px 0}.chapter .in{grid-template-columns:minmax(0,1fr);gap:22px}.chapter.alt .ch-text{order:0}.heromap{max-width:520px}.howsec{padding:70px 20px}}

/* ---------- KPI y frases ---------- */
.kpi{display:flex;flex-direction:column;gap:5px;padding:16px 18px}
.kpi .lb{font-size:12.5px;color:var(--ink2);display:flex;justify-content:space-between;gap:8px;align-items:center}
.kpi .val{font-family:var(--f-display);font-variant-numeric:lining-nums;font-weight:700;font-size:2.5rem;letter-spacing:-.03em;line-height:1.08;overflow-wrap:anywhere}
.kpi .val small{font-size:.85rem;font-weight:700;color:var(--ink2);margin-left:4px;letter-spacing:0}
.kpi .dl{font-size:13px;color:var(--ink2)}
.kpi .rk{font-size:12.5px;color:var(--ink2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kpi .src{font-size:12px;color:var(--muted)}
.kpi .src a{color:var(--muted)}
.kpi.na .val{color:var(--muted);font-size:1.3rem}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:700;border:1px solid var(--line)}
.badge.fuerte{color:var(--brand-ink);border-color:var(--brand-ink)}
.badge.atencion{color:var(--bad);border-color:var(--bad)}
.badge.ods{background:var(--ods-bg,#666);color:#fff;border-color:transparent}
.odsrow{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
details.rkfull{margin-top:12px}
details.rkfull>summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--brand-ink);list-style:none}
details.rkfull>summary::-webkit-details-marker{display:none}
details.rkfull>summary::before{content:'▸ ';display:inline-block}
details.rkfull[open]>summary::before{content:'▾ '}
details.rkfull .tbl{margin-top:10px}
.rkmap{margin-top:14px}
.frases{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.frase{display:grid;grid-template-columns:28px 1fr;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 16px}
.frase .ic{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;font-weight:800;font-size:13px;background:var(--surface2);color:var(--ink2);border:1px solid var(--line)}
.frase.fuerte .ic{background:var(--brand);color:var(--brand-on);border-color:var(--brand)}
.frase.atencion .ic{background:var(--bad);color:#fff;border-color:var(--bad)}
.frase .tx{font-size:15.5px;line-height:1.45;font-weight:500}
.why{font-size:13.5px;color:var(--ink2);margin-top:6px}
.frase .why{font-size:13.5px;color:var(--ink2);margin-top:5px}
.frase .fs{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin-top:8px;font-size:12px;color:var(--muted)}
.frase .fs a{color:var(--muted)}
.frase.dest{border-color:var(--ink)}
.split{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));margin-top:16px}
.split h3{font-size:1rem;font-weight:800;display:flex;align-items:center;gap:8px}
.callout{margin-top:18px;background:var(--dark);color:#fff;border-radius:16px;padding:20px 22px;display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;justify-content:space-between}
.callout b{font-family:var(--f-display);font-weight:700;font-size:1.5rem;letter-spacing:-.015em;line-height:1.2;max-width:34ch}
.callout span{opacity:.82;font-size:14px}

/* ---------- mapa de mosaicos ---------- */
.mapwrap{position:relative}
.tilemap{width:100%;height:auto;display:block;overflow:visible}
.tile{cursor:pointer}
.tile rect{stroke:var(--page);stroke-width:3}
.tile.t0 rect{fill:var(--s0)} .tile.t1 rect{fill:var(--s1)} .tile.t2 rect{fill:var(--s2)} .tile.t3 rect{fill:var(--s3)} .tile.t4 rect{fill:var(--s4)}
.tile.tn rect{fill:url(#hatch)}
.tile text{pointer-events:none;font-family:var(--f-body)}
.tile .ab{font-weight:700;font-size:13px}
.tile .vl{font-size:10.5px;font-variant-numeric:tabular-nums}
.tile.t0 text{fill:var(--s0i)} .tile.t1 text{fill:var(--s1i)} .tile.t2 text{fill:var(--s2i)} .tile.t3 text{fill:var(--s3i)} .tile.t4 text{fill:var(--s4i)} .tile.tn text{fill:var(--muted)}
.tile:hover rect,.tile:focus-visible rect{stroke:var(--ink);stroke-width:3}
.tile.sel rect{stroke:var(--ink);stroke-width:4}
.tile.mine .ab::after{content:" ●"}
.tile:focus{outline:none}
.tile.off{opacity:.28}
.hatchl{stroke:var(--axis);stroke-width:1.2}
.scale{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2);margin-top:10px;flex-wrap:wrap}
.scale i{display:inline-block;width:26px;height:12px;border-radius:3px}
.scale i.t0{background:var(--s0)} .scale i.t1{background:var(--s1)} .scale i.t2{background:var(--s2)} .scale i.t3{background:var(--s3)} .scale i.t4{background:var(--s4)}
.scale i.tn{background:repeating-linear-gradient(45deg,var(--axis) 0 2px,transparent 2px 5px);border:1px solid var(--axis)}
.maplayout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start;margin-top:16px}
.maplayout .col{display:flex;flex-direction:column;gap:14px;min-width:0}
@media (max-width:960px){.maplayout{grid-template-columns:1fr}}
.rank{display:flex;flex-direction:column;margin-top:8px}
.rk-row{display:grid;grid-template-columns:26px minmax(90px,1fr) auto;gap:10px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--grid);font-size:13.5px;background:none;border-inline:0;border-top:0;width:100%;text-align:left}
.rk-row:hover{background:var(--surface2)}
.rk-row .n{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px}
.rk-row .v{font-weight:700;font-variant-numeric:tabular-nums}
.rk-row.mine .nm{font-weight:800}
.rk-row.mine .nm::after{content:" ●";color:var(--brand-ink)}

/* ---------- gráficas ---------- */
.chart{position:relative;margin-top:12px;touch-action:pan-y}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.ax{fill:var(--muted);font-size:11.5px;font-family:var(--f-body)}
.axl{stroke:var(--grid);stroke-width:1}
.axb{stroke:var(--axis);stroke-width:1}
.dot{fill:var(--bar);stroke:var(--surface);stroke-width:2}
.dot.mine{fill:var(--brand);stroke:var(--ink);stroke-width:1.5}
.dot.hot{fill:var(--ink)}
.natmark{fill:none;stroke:var(--ink);stroke-width:2}
.lnp{fill:none;stroke:var(--blue);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.lnpt{fill:var(--blue);stroke:var(--surface);stroke-width:2}
.lbl{fill:var(--ink);font-size:12px;font-weight:700;font-family:var(--f-body)}
.tt{position:fixed;z-index:70;pointer-events:none;background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:0 6px 24px rgba(0,0,0,.18);border-radius:10px;padding:9px 11px;font-size:12.5px;min-width:140px;max-width:260px}
.tt .th{font-weight:700;margin-bottom:3px}
.tt .ts{color:var(--muted);font-size:11.5px;margin-top:2px}
.strips{display:flex;flex-direction:column;margin-top:12px}
.strip{display:grid;grid-template-columns:minmax(120px,190px) 1fr auto;gap:14px;align-items:center;padding:9px 0;border-bottom:1px solid var(--grid)}
.strip:last-child{border-bottom:0}
.strip .nm{font-size:13.5px}
.strip .nm small{display:block;color:var(--muted);font-size:11.5px}
.strip .vv{font-weight:700;font-variant-numeric:tabular-nums;font-size:13.5px;text-align:right;white-space:nowrap}
.strip .vv small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.strip svg{width:100%;height:30px;overflow:visible}
@media (max-width:640px){.strip{grid-template-columns:1fr auto}.strip svg{grid-column:1/-1;order:3}}
.key{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12.5px;color:var(--ink2)}
.key span{display:inline-flex;align-items:center;gap:6px}
.key i{display:inline-block;width:11px;height:11px;border-radius:50%}
.key i.a{background:var(--brand)} .key i.b{background:var(--bar)} .key i.c{border:2px solid var(--ink);background:none}
.bars{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.brow{display:grid;grid-template-columns:minmax(90px,140px) 1fr;gap:12px;align-items:center;font-size:13.5px}
.brow .bl{color:var(--ink2);overflow-wrap:anywhere}
.brow .bl.hl{color:var(--ink);font-weight:700}
.btrack{display:flex;align-items:center;gap:8px;min-width:0}
.bar{height:18px;border-radius:0 4px 4px 0;background:var(--bar);flex:none;min-width:2px}
.bar.hl{background:var(--brand)}
.bv{font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}

/* tablas */
.tbl{overflow-x:auto;margin-top:12px}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--grid);vertical-align:top}
th{font-weight:600;color:var(--muted);font-size:12px;white-space:nowrap}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.mine td{background:var(--surface2);font-weight:700}
.grp{margin-top:26px}
.grp h3{font-size:1.05rem;font-weight:800;display:flex;justify-content:space-between;align-items:baseline;gap:10px}

/* calendario */
.ev{display:grid;grid-template-columns:86px 1fr auto;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--grid)}
.ev:last-child{border-bottom:0}
.ev .d{font-family:var(--f-display);font-weight:700;font-size:1.8rem;line-height:1;letter-spacing:-.02em}
.ev .d small{display:block;font-family:var(--f-body);font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-top:4px}
.ev .t b{display:block}
.ev .t span{color:var(--ink2);font-size:13px}
@media (max-width:560px){.ev{grid-template-columns:64px 1fr}.ev .chip{grid-column:2;justify-self:start}}

/* ---------- Revi ---------- */
.revibtn{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:40;box-shadow:0 8px 28px rgba(0,0,0,.28);padding:12px 20px}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:var(--surface);border-left:1px solid var(--line);z-index:60;display:flex;flex-direction:column;box-shadow:-12px 0 40px rgba(0,0,0,.22);padding-top:env(safe-area-inset-top,0px)}
.drawer header{background:var(--hdr);color:#fff;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.drawer header b{font-family:var(--f-display);font-size:1.1rem}
.drawer header small{display:block;font-size:12px;opacity:.75}
.chat{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.msg{padding:11px 14px;border-radius:14px;max-width:92%;font-size:14.5px;white-space:pre-wrap;overflow-wrap:anywhere}
.msg.u{background:var(--ink);color:var(--surface);align-self:flex-end;border-bottom-right-radius:4px}
.msg.a{background:var(--surface2);border:1px solid var(--line);border-bottom-left-radius:4px;align-self:flex-start}
.msg .fx{margin-top:9px;padding-top:8px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:3px;white-space:normal}
.msg .fx a{color:var(--muted)}
.msg.warn{border-color:var(--warn)}
.sugs{display:flex;flex-wrap:wrap;gap:8px}
.sug{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:13px;text-align:left}
@media (hover:hover) and (pointer:fine){.sug:hover{border-color:var(--ink)}}
.askbar{display:flex;gap:8px;padding:12px 14px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line)}
.askbar textarea{flex:1;min-height:44px;max-height:120px;resize:none;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.typing{color:var(--muted);font-size:13px}

/* ---------- ventanas ---------- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;padding:16px;z-index:80;overflow-y:auto}
.dlg{background:var(--surface);border-radius:18px;padding:24px;max-width:560px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.4);margin-block:auto}
.dlg h2{font-size:1.8rem;font-weight:700;letter-spacing:-.02em}
.dlg p{color:var(--ink2);margin-top:6px;font-size:14px}
.dlg .btns{display:flex;gap:10px;margin-top:20px;justify-content:flex-end;flex-wrap:wrap}
.steps{display:flex;gap:6px;margin-bottom:14px}
.steps i{height:4px;flex:1;border-radius:2px;background:var(--grid)} .steps i.on{background:var(--brand)}
.aviso{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:13px;color:var(--ink2);margin-top:12px}
.aviso h4{font-size:13px;color:var(--ink);margin-top:10px}
.aviso h4:first-child{margin-top:0}
.chk{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-size:14px}
.chk input{margin-top:3px;accent-color:var(--brand);width:17px;height:17px;flex:none}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 18px;border-radius:999px;font-size:13.5px;z-index:95;max-width:90vw;text-align:center}

/* fuentes */
.src-card{display:flex;flex-direction:column;gap:8px}
.src-card h3{font-size:.98rem}
.src-card .meta{display:flex;flex-wrap:wrap;gap:6px}
.lvl{font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid var(--line);color:var(--ink2)}
.lvl.oficial{color:var(--brand-ink);border-color:var(--brand-ink)}
.conn{font-size:12.5px;color:var(--ink2)}
.flag{font-size:12.5px;color:var(--ink2);padding-left:14px;position:relative}
.flag::before{content:"•";position:absolute;left:2px;color:var(--warn-ink)}
.rem li{margin-top:6px;color:var(--ink2);font-size:14px}
.gov-hero{background:var(--dark);color:#fff;border-radius:18px;padding:24px 26px;margin-top:18px}
.gov-hero h2{font-size:2rem;font-weight:700;letter-spacing:-.02em}
.gov-hero p{opacity:.85;margin-top:8px;max-width:70ch;font-size:15px}
.gap{display:grid;grid-template-columns:1fr auto;gap:8px 16px;align-items:center}
.gapbar{grid-column:1/-1}
.gapbar svg{width:100%;height:26px;overflow:visible}
.compare-cell{font-variant-numeric:tabular-nums}
footer{border-top:1px solid var(--line);padding-block:28px 50px;color:var(--ink2);font-size:13px}
footer .wrap{display:flex;flex-wrap:wrap;gap:12px 40px;justify-content:space-between}
footer p{max-width:72ch}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
@media (prefers-reduced-motion:no-preference){
  .frase,.card,.tk{animation:up .3s var(--ease-out) both}
  .frase:nth-child(2),.card:nth-child(2){animation-delay:40ms}.frase:nth-child(3),.card:nth-child(3){animation-delay:80ms}.frase:nth-child(4),.card:nth-child(4){animation-delay:120ms}.frase:nth-child(n+5),.card:nth-child(n+5){animation-delay:160ms}
  @keyframes up{from{opacity:.001;transform:translateY(6px)}to{opacity:1;transform:none}}
}
@media (max-width:700px){.tile .ab{font-size:9.5px}.tile .vl{font-size:8px}}

/* ---------- perfil largo de estado ---------- */
.phero{background:var(--dark);color:#f6f6f2;border-radius:28px;padding:34px 36px 30px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:24px 40px;align-items:center}
.phero .eyebrow{color:var(--accent2)}
.phero h1{font-size:clamp(2.6rem,6.5vw,5.2rem);font-weight:700;letter-spacing:-.05em;line-height:.95;margin-top:10px;color:#fff}
.phero .sub{color:rgba(246,246,242,.75);font-size:16px;margin-top:14px;max-width:52ch}
.phero .tags{margin-top:18px}
.ph-map{justify-self:end;width:100%;max-width:320px}
.ph-map .tile rect{fill:rgba(255,255,255,.1);stroke:var(--dark)}
.ph-map .tile text{fill:rgba(246,246,242,.55)}
.ph-map .tile .ab{font-size:9px}
.ph-map .tile.sel rect{fill:var(--brand);stroke:var(--brand)}
@media (hover:hover) and (pointer:fine){.ph-map .tile:hover rect{fill:rgba(255,255,255,.28);stroke:#fff}}
.ph-map .tile.sel text{fill:var(--brand-on);font-weight:700}
.ph-nav{display:flex;justify-content:space-between;gap:8px;margin-top:8px}
.ph-nav .tbtn{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.16);color:#f6f6f2}
.ph-nums{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:10px;border-top:1px solid rgba(255,255,255,.12);padding-top:22px;margin-top:6px}
.hn .hl{font-size:12.5px;color:rgba(246,246,242,.65)}
.hn .hv{font-family:var(--f-display);font-weight:700;font-size:clamp(1.6rem,2.4vw,2.3rem);white-space:nowrap;letter-spacing:-.04em;line-height:1.05;color:var(--brand);margin-top:4px;font-variant-numeric:tabular-nums}
.hn .hs{font-size:13px;color:#f6f6f2;margin-top:4px}
.hn .hf{font-size:11.5px;color:rgba(246,246,242,.5);margin-top:3px}
.ptools{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:end;margin-top:16px}
.ptools .field{min-width:200px}
.perfil{display:grid;grid-template-columns:220px minmax(0,1fr);gap:28px;align-items:start;margin-top:22px}
.pnav{position:sticky;top:calc(env(safe-area-inset-top,0px) + 78px);display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 100px);overflow:auto}
.pn-head{font-size:12.5px;color:var(--muted);padding:0 12px 8px;border-bottom:1px solid var(--line);margin-bottom:6px}
.pn-head b{color:var(--ink)}
.pn{background:none;border:0;text-align:left;padding:8px 12px;border-radius:10px;font-size:14px;color:var(--ink2);border-left:3px solid transparent;border-radius:0 10px 10px 0}
@media (hover:hover) and (pointer:fine){.pn:hover{background:var(--surface2);color:var(--ink)}}
.pn.on{border-left-color:var(--brand);color:var(--ink);font-weight:700;background:var(--brand-soft)}
.pbody{min-width:0;display:flex;flex-direction:column;gap:44px}
.psec{scroll-margin-top:calc(env(safe-area-inset-top,0px) + 84px)}
.psec>h2,.psec .sech h2{font-size:1.75rem;font-weight:700;letter-spacing:-.03em}
.psec .sech{margin-bottom:6px}
.psec .split,.psec .grid{margin-top:14px}
.psec .card .strips{margin-top:8px}
@media (max-width:960px){
  .phero{grid-template-columns:1fr;padding:26px 22px 22px}
  .ph-map{justify-self:start;max-width:340px}
  .perfil{grid-template-columns:1fr;gap:16px}
  .pnav{position:sticky;top:calc(env(safe-area-inset-top,0px) + 62px);flex-direction:row;overflow-x:auto;gap:6px;background:var(--page);padding:8px 0;z-index:5;max-height:none;scrollbar-width:none}
  .pnav::-webkit-scrollbar{display:none}
  .pn-head{display:none}
  .pn{white-space:nowrap;border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:13px;background:var(--surface)}
  .pn.on{border-color:var(--ink);background:var(--ink);color:var(--page)}
}

/* ---------- comercio exterior: treemap y arcos ---------- */
.cstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:12px;margin-top:14px}
.cs{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.cs .l{font-size:12.5px;color:var(--ink2)}
.cs .v{font-family:var(--f-display);font-weight:700;font-size:1.6rem;letter-spacing:-.03em;line-height:1.1;margin-top:4px;font-variant-numeric:tabular-nums}
.cs .p{font-size:12.5px;color:var(--muted);margin-top:3px}
.psec .card+.card{margin-top:14px}
.treemap{width:100%;height:auto;display:block}
.tm rect{stroke:var(--surface);stroke-width:1;transition:opacity 160ms ease}
.tm:hover rect,.tm:focus-visible rect{opacity:.85}
.tm:focus{outline:none}
.tml{font-family:var(--f-body);font-size:12.5px;font-weight:700;fill:#0f1115;pointer-events:none}
.tmv{font-family:var(--f-body);font-size:11.5px;fill:rgba(15,17,21,.75);pointer-events:none}
.tml.inv{fill:#fff} .tmv.inv{fill:rgba(255,255,255,.85)}
.tmkey{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12.5px;color:var(--ink2)}
.tmkey span{display:inline-flex;align-items:center;gap:6px}
.tmkey i{display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--c,#999)}
.arcmap{width:100%;height:auto;display:block;background:var(--surface2);border-radius:14px}
.grat{stroke:var(--grid);stroke-width:1} .grat.eq{stroke:var(--axis)}
.arc{fill:none;stroke:var(--accent2-ink);stroke-linecap:round;transition:opacity 160ms ease}
.arc.hot{opacity:1;stroke:var(--ink)}
.dest{fill:var(--accent2);stroke:var(--surface);stroke-width:1.5;cursor:pointer}
.dest:focus{outline:none} .dest:hover,.dest:focus-visible{fill:var(--ink)}
.orig{fill:var(--brand);stroke:var(--ink);stroke-width:2}
.dlbl{font-family:var(--f-body);font-size:11.5px;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:var(--surface2);stroke-width:3px;stroke-linejoin:round}
.dlbl.org{font-weight:700}
@media (max-width:640px){.tml{font-size:11px}.dlbl{font-size:10px}}

/* ---------- control de tiempo ---------- */
.tcontrol{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.tcontrol input[type=range]{flex:1;min-width:160px;accent-color:var(--ink)}
.tc-txt{font-size:13px;color:var(--ink2)} .tc-lbl{color:var(--ink);font-family:var(--f-display);font-size:15px}
.tcard{margin-top:16px}

/* ---------- mapa radial de temas ---------- */
.radialwrap svg{width:100%;height:auto;display:block}
.ring{fill:none;stroke:var(--grid);stroke-width:1;stroke-dasharray:3 5}
.lnk{fill:none;stroke:var(--axis);stroke-width:1.4} .lnk.h{stroke:var(--grid);stroke-width:1}
.nd{cursor:pointer} .nd:focus{outline:none}
.nd.centro circle{fill:var(--ink)} .nd.centro .cl{fill:#fff;font-family:var(--f-display);font-weight:700;font-size:14px} .nd.centro .cs2{fill:rgba(255,255,255,.7);font-size:11px;font-family:var(--f-body)}
.nd.ind circle{fill:var(--surface);stroke:var(--ink);stroke-width:1.6;transition:transform 160ms var(--ease-out);transform-box:fill-box;transform-origin:center}
.nd.ind .nl{font-family:var(--f-body);font-size:9.5px;font-weight:700;fill:var(--ink);pointer-events:none}
.nd.ind .ns{font-family:var(--f-body);font-size:11px;fill:var(--ink2);pointer-events:none}
.nd.hoja circle{fill:var(--accent2);stroke:var(--surface);stroke-width:2;transition:transform 160ms var(--ease-out);transform-box:fill-box;transform-origin:center}
.nd.hoja .hl{font-family:var(--f-body);font-size:10px;font-weight:700;fill:#fff;pointer-events:none}
.nd.hoja .hv{font-family:var(--f-body);font-size:11px;fill:var(--ink2);pointer-events:none;paint-order:stroke;stroke:var(--surface);stroke-width:3px}
.nd.hoja.mine circle{fill:var(--brand);stroke:var(--ink)} .nd.hoja.mine .hl{fill:var(--ink)}
@media (hover:hover) and (pointer:fine){.nd.ind:hover circle,.nd.hoja:hover circle{transform:scale(1.08)}}
.nd.centro{cursor:default}
.nd:focus-visible circle{stroke:var(--accent2-ink);stroke-width:3}
.key i.k1{border:2px solid var(--ink);background:var(--surface)} .key i.k2{background:var(--accent2)}
@media (max-width:640px){.nd.ind .nl{font-size:9px}.nd.hoja .hv{font-size:9.5px}}

/* guiones semanales (admin) */
.gcols{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));margin-top:14px}
.gcard .cardhead{align-items:flex-start;gap:12px;flex-wrap:wrap}
.gpart{margin-top:14px}.gph{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:13.5px}
.gtxt{white-space:pre-wrap;font-family:inherit;font-size:14px;line-height:1.55;background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0;max-height:420px;overflow:auto}
.pill.xs{padding:4px 10px;font-size:12px}
.warnbox{margin-top:12px;background:#fff6dc;color:var(--warn-ink);border:1px solid #f1dc9a;border-radius:10px;padding:9px 12px;font-size:13px}
.okbox{margin-top:12px;background:#eefbd9;color:#245600;border:1px solid #cdf57a;border-radius:10px;padding:9px 12px;font-size:13px}
.gcif{margin-top:12px;font-size:13px;color:var(--ink2)}.gcif summary{cursor:pointer}.gcif ul{margin:8px 0 0 18px}

/* México en el mundo */
.ln{fill:none;stroke:var(--c,var(--blue));stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.ln.mx{stroke-width:3.5}.ln.dash{stroke-dasharray:5 5}.lnd{fill:var(--c,var(--blue));stroke:var(--surface);stroke-width:2}
.proj{fill:var(--surface2);opacity:.7}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:12.5px;color:var(--ink2)}.legend .lg{display:inline-flex;align-items:center;gap:6px}.legend i,.tt .tr i{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--c,var(--blue))}
.tt .tr{display:flex;align-items:center;gap:6px;margin-top:3px}
.sug.on{background:var(--brand);border-color:var(--brand);color:#000;font-weight:600}
.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.tbl tr.hl td{background:var(--brand-soft);font-weight:700}

/* ficha imprimible */
.ficha{max-width:900px;margin:0 auto}.facciones{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}
.fhead{display:flex;align-items:center;gap:18px;padding-bottom:14px;border-bottom:2px solid var(--ink);margin-bottom:16px}.flogo{height:52px;background:#fff;border-radius:10px;padding:6px 10px}
.fhead h1{font-size:2rem;line-height:1;margin-top:4px}.fsub{color:var(--muted);font-size:13px;margin-top:6px}
.ftit{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px;margin-bottom:6px}.ftit h2,.fgrupo h2{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2);margin:14px 0 6px}
.ftit ul{margin:0 0 0 18px;font-size:13.5px;line-height:1.45}.ftit li{margin-bottom:4px}
.fgrupo table{width:100%;border-collapse:collapse;font-size:13px}.fgrupo th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:5px 8px;border-bottom:1px solid var(--line)}.fgrupo td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.fgrupo td.num,.fgrupo th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.fgrupo td.src{color:var(--muted);font-size:12px}.frep{color:var(--warn-ink);font-size:11.5px}
.ffoot{margin-top:18px;padding-top:10px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}.ffoot p{margin:0 0 6px}

/* plantilla estilo CNL en el generador de Gobierno: aspiración + objetivos + diagnóstico + metas */
.fgrupo h3.fsub-h{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--brand-ink);font-weight:700;margin:16px 0 8px}
.cnl{display:grid;grid-template-columns:1fr 1.3fr;gap:18px;margin-bottom:6px}
.cnl .eyebrow{display:block;margin-bottom:6px}
.cnl-asp p{font-size:15.5px;line-height:1.42;font-family:var(--f-display);color:var(--ink);margin:0}
.cnl-obj ol{margin:0;padding-left:18px;font-size:13px;line-height:1.5}
.cnl-obj li{margin-bottom:4px}
.metarow{margin-top:14px}
.metarow .metatitulo{font-size:13px;font-weight:700;margin-bottom:2px}
.metabloque svg{max-width:100%;height:auto;display:block;margin-top:2px}
.metaleyenda{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:11px;color:var(--muted);margin-top:2px}
.metaleyenda i{display:inline-block;width:9px;height:9px;margin-right:5px;vertical-align:middle;position:relative;top:-1px}
.metaleyenda i.dot.hot{border-radius:50%;background:var(--ink)}
.metaleyenda i.natmark{background:none;border:2px solid var(--ink);transform:rotate(45deg);width:6px;height:6px}
.metaleyenda .note{color:var(--muted);margin-top:0}
@media (max-width:640px){.cnl{grid-template-columns:1fr}}
@media print{.metarow{break-inside:avoid}}
@media print{
  header.top,.revibtn,.drawer,.toast,footer,.noprint,.tt{display:none !important}
  body,main{background:#fff !important;padding:0 !important;margin:0 !important;max-width:none !important}
  .ficha{max-width:none}.fgrupo{break-inside:avoid}.fgrupo table{font-size:11.5px}.fgrupo td,.fgrupo th{padding:3px 6px}
  .fhead h1{font-size:24pt}@page{margin:14mm 12mm}
}

.switch{display:inline-flex;align-items:center;gap:10px;margin-top:10px;font-size:14px;cursor:pointer}.switch input{width:44px;height:24px;appearance:none;background:var(--bar);border-radius:999px;position:relative;transition:background .2s;cursor:pointer}
.switch input::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}.switch input:checked{background:var(--brand)}.switch input:checked::after{transform:translateX(20px)}.switch input:disabled{opacity:.5}
h3.mt{margin-top:18px}
.mt{margin-top:18px}

/* índice de bienestar */
.radarwrap{max-width:380px;margin:0 auto}.radar{display:block;width:100%;height:auto;overflow:visible}.rg{fill:none;stroke:var(--grid)}.rl{fill:var(--ink2);font-size:11.5px;font-family:var(--f-body)}
.rmed{fill:none;stroke:var(--muted);stroke-width:1.5;stroke-dasharray:4 4}.rest{fill:rgba(48,183,26,.35);stroke:#245600;stroke-width:2}.rpt{fill:#245600;stroke:var(--surface);stroke-width:2;cursor:pointer}
.metod{margin:0 0 12px 20px;font-size:14px;line-height:1.5}.metod li{margin-bottom:6px}
.tbl td.up{color:#245600;font-weight:700}.tbl td.down{color:var(--warn-ink);font-weight:700}
.cs.mine{border:2px solid var(--brand)}

/* indicadores donde más es peor (desempleo, pobreza, delito): escala ámbar, para que el oscuro no se lea como "bien" */
.mapwrap.alerta,.scale.alerta{--s0:#fff4dc; --s1:#ffd68a; --s2:#f2a63b; --s3:#a8520a; --s4:#6b2e00; --s0i:#0f1115; --s1i:#0f1115; --s2i:#0f1115; --s3i:#ffffff; --s4i:#ffffff}
.scale .note{margin-top:0}

/* tres renglones por dato: qué pasó → por qué te importa → qué considerar */
.frase .lb3{display:block;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.frase .tx .lb3{color:var(--brand-ink)}.frase .why.cons{border-left:3px solid var(--brand);padding-left:10px;margin-top:8px}.frase .why{margin-top:8px}

/* portada: "¿Solo tienes 3 minutos?" */
.tres{background:var(--page);padding:40px 0 10px}.tres .in{max-width:1180px;margin:0 auto;padding-inline:20px}
.tres h2{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;letter-spacing:-.04em;line-height:1;margin-top:6px}.tres .sub{color:var(--ink2);margin-top:10px;max-width:60ch}
.tres-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-top:18px;border-bottom:1px solid var(--line);padding-bottom:10px}.tres-tabs .pn{border:0;border-bottom:3px solid transparent;border-radius:10px 10px 0 0;background:none;white-space:normal;color:var(--ink2)}.tres-tabs .pn.on{border-bottom-color:var(--brand);background:var(--brand-soft);color:var(--ink)}
.tres-body{margin-top:14px;max-width:820px}.tres .frases{margin-top:10px}.susc .rem{margin:10px 0 16px 18px;line-height:1.5}
.masdetalle{max-width:1180px;margin:18px auto 0;padding-inline:20px}.masdetalle summary{list-style:none;cursor:pointer;display:flex;justify-content:center;padding:6px 0 18px}.masdetalle summary::-webkit-details-marker{display:none}
.masdetalle[open] summary .pill{opacity:.6}
@media (max-width:700px){.tres .frase{padding:12px 12px}.tres .frase .tx,.tres .frase .why{font-size:13.5px}.tres{padding-top:28px}}

/* pestaña 3 minutos */
.tbloque{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;margin-top:26px}.tnum{font-family:var(--f-display);font-size:3rem;font-weight:700;line-height:1;color:var(--ink);background:linear-gradient(transparent 55%,var(--brand) 55%);height:max-content;padding:0 6px}
.tcuerpo h2{font-size:1.45rem;font-weight:700;letter-spacing:-.02em}.tcuerpo .cap{margin-top:4px}
@media (max-width:700px){.tbloque{grid-template-columns:44px minmax(0,1fr);gap:10px}.tnum{font-size:2.2rem}}

/* IEPS (Gobierno): columnas semanales del estímulo */
.ieps-b{fill:var(--blue)}
.ieps-b.hl{fill:var(--brand)}
.edu-la{fill:none;stroke:var(--brand);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.edu-lb{fill:none;stroke:var(--accent2);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.edu-cur{stroke:var(--axis);stroke-width:1;stroke-dasharray:3 3}
.edu details summary{cursor:pointer;font-size:13.5px;color:var(--ink2);margin-top:12px}
.edu .src,.ieps .src{font-size:12px;color:var(--muted);margin-top:8px}
.edu .src a,.ieps .src a{color:var(--muted)}
/* 28-sep-2026: en celular, la cifra al final de una barra larga (ej. "6.4 por 100 mil hab.") se salía de la pantalla; ahora se acomoda en dos renglones si no cabe. */
@media (max-width:520px){.btrack .bv{white-space:normal;min-width:0;flex:1 1 0;line-height:1.2}}
.mercado .src{font-size:12px;color:var(--muted);margin-top:8px}
.mercado .src a{color:var(--muted)}
/* Informe semanal: la tarjeta del tema aprobado se distingue (un solo tema por edición) */
.gcard.aprobada{border:2px solid var(--brand);background:var(--brand-soft)}
.gcard .sello{display:inline-block;background:var(--brand);color:var(--brand-on);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:3px 10px;margin-bottom:6px}
/* 2-oct-2026: bloques FMI vs OCDE (fila de diferencia) */
.tbl tr.sub td{color:var(--muted);font-size:12.5px;border-bottom:2px solid var(--line)}

/* ---------- Línea de Tiempo LatAm (antes se inyectaba desde JS y la CSP lo bloqueaba) ---------- */
.rv-tl-controles{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:8px}
.rv-tl-play{border:1px solid var(--borde,#ccc);background:var(--fondo,#fff);border-radius:8px;padding:6px 14px;cursor:pointer;font-weight:600}
.rv-tl-play:hover{filter:brightness(0.96)}
#rv-tl-slider{flex:1;min-width:160px}
.rv-tl-anio{font-size:1.4rem;font-weight:700;min-width:56px;text-align:center;font-variant-numeric:tabular-nums}
.rv-tl-wrap{position:relative;width:100%}
.rv-tl-svg{width:100%;height:auto;display:block}
.rv-tl-grid{stroke:currentColor;opacity:0.12;stroke-width:1}
.rv-tl-gridcero{stroke:currentColor;opacity:0.35;stroke-width:1.5}
.rv-tl-eje{font-size:11px;fill:currentColor;opacity:0.6}
.rv-tl-ejelabel{font-size:11px;fill:currentColor;opacity:0.5}
.rv-tl-bubble{transition:cx 700ms ease, cy 700ms ease, r 700ms ease, opacity 300ms ease;fill-opacity:0.78;stroke:rgba(0,0,0,0.25);stroke-width:0.75;cursor:pointer}
.rv-tl-bubble:hover{fill-opacity:1;stroke:#000;stroke-width:1.5}
.rv-tl-nombre{font-size:10px;font-weight:700;fill:currentColor;opacity:0.8;pointer-events:none;transition:x 700ms ease, y 700ms ease}
.rv-tl-tooltip{position:absolute;pointer-events:none;background:rgba(20,20,20,0.92);color:#fff;font-size:12px;padding:6px 9px;border-radius:6px;line-height:1.5;transform:translate(-50%,-115%);white-space:nowrap;z-index:5}
.rv-tl-leyenda{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rv-tl-chip{--c:#999;display:flex;align-items:center;gap:5px;border:1px solid rgba(0,0,0,0.12);background:transparent;border-radius:999px;padding:3px 10px 3px 6px;font-size:12px;cursor:pointer;color:inherit;transition:opacity 200ms}
.rv-tl-chip.rv-tl-dim{opacity:0.3}
.rv-tl-sw{width:10px;height:10px;border-radius:50%;background:var(--c);display:inline-block}
.rv-tl-tablabtn{margin-top:12px;border:none;background:none;color:inherit;text-decoration:underline;cursor:pointer;font-size:13px;padding:0}
.rv-tl-tabla{margin-top:10px;overflow-x:auto}
.rv-tl-tabla table{width:100%;border-collapse:collapse;font-size:13px}
.rv-tl-tabla th,.rv-tl-tabla td{text-align:left;padding:4px 8px;border-bottom:1px solid rgba(0,0,0,0.08)}

/* botones largos en pantallas angostas: que bajen de línea en vez de salirse (auditoría 6-oct-2026) */
@media (max-width:640px){.tags .pill,.pill.line{white-space:normal;text-align:center;max-width:100%}}

/* ---------- Cámaras y organismos empresariales (12-oct-2026) ---------- */
.cam-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap}
.cam-head h2{font-size:1.9rem;font-weight:700;letter-spacing:-.03em}
.cam-largo{font-family:var(--f-body);font-weight:500;font-size:.5em;color:var(--muted);letter-spacing:0}
.cam-logo{height:46px;width:auto;max-width:220px;object-fit:contain;display:block;background:#fff;border-radius:10px;padding:5px 12px;border:1px solid var(--line)}
.cam-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:16px;margin-top:22px}
.cam-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-decoration:none;color:inherit;transition:transform .18s var(--ease-out),box-shadow .18s var(--ease-out)}
.cam-card:hover{transform:translateY(-2px)}
.cam-card h3{font-size:1.4rem}
.cam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:14px;margin-top:20px}
.cam-sector{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:inherit;transition:transform .18s var(--ease-out),border-color .18s}
.cam-sector:hover{transform:translateY(-2px);border-color:var(--brand)}
.cam-sector-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.cam-sector-top h3{font-size:1.02rem;line-height:1.25}
.cam-big{font-family:var(--f-display);font-weight:700;font-size:2rem;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums;margin-top:6px}
.cam-big small{font-family:var(--f-body);font-size:.8rem;font-weight:500;color:var(--muted);letter-spacing:0}
.cam-sub{font-size:13.5px;color:var(--ink);font-weight:600}
.cam-mini{display:flex;flex-direction:column;gap:1px;font-size:12.5px;color:var(--ink2)}
.cam-ir{margin-top:auto;padding-top:8px;font-size:13px;font-weight:700;color:var(--brand-ink)}
.cam-volver{display:inline-block;font-size:13.5px;color:var(--ink2);text-decoration:none;margin-bottom:10px}
.cam-volver:hover{color:var(--ink);text-decoration:underline}
.cam-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cam-acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.cam-dos{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;margin-top:18px;align-items:start}
.cam-dos+.card,.cam-sector-vista>.card{margin-top:16px}
.cam-texto{margin-top:12px}
.cam-texto p{font-size:16px;line-height:1.65;max-width:68ch;margin-bottom:10px}
.cam-aprox{color:var(--warn-ink)}
.cam-cifras{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.cam-cifras .cs .v{font-size:1.3rem;overflow-wrap:anywhere}
.cam-m{border:1px solid var(--line);border-left:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px}
.cam-m.on{border-color:var(--brand)}
.cam-bars .brow{grid-template-columns:minmax(120px,190px) 1fr}
.cam-metodo summary{font-weight:700;cursor:pointer}
.cam-metodo{margin-top:16px}
@media (max-width:900px){.cam-dos{grid-template-columns:1fr}.cam-head h2{font-size:1.5rem}}
@media (max-width:640px){.cam-bars .brow{grid-template-columns:minmax(96px,130px) 1fr}.cam-cifras{grid-template-columns:1fr 1fr}}
/* hoja de una página (PDF) */
.cam-hoja-wrap{max-width:860px;margin:0 auto}
.cam-hoja{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);padding:34px 42px;margin-top:14px;color:#0f1115}
.cam-hoja-head{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:2px solid #0f1115;padding-bottom:12px;margin-bottom:14px}
.cam-hoja-logo{height:48px;width:auto}.cam-hoja-logo2{height:40px;width:auto;max-width:200px;object-fit:contain}.cam-hoja-nom{font-family:var(--f-display);font-weight:700;font-size:1.3rem}
.cam-hoja h1{font-size:1.55rem;line-height:1.15;letter-spacing:-.03em;margin:6px 0 10px}
.cam-hoja h2{font-size:.98rem;margin:14px 0 4px}
.cam-hoja-texto p{font-size:11.5px;line-height:1.5;margin-bottom:6px}
.cam-hoja-nota{font-size:10.5px;color:#9a6400;margin:4px 0}
.cam-hoja-cifras{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.cam-hoja-cifras div{border:1px solid #e3e3dc;border-radius:10px;padding:8px 10px;background:#f6f6f2;display:flex;flex-direction:column}
.cam-hoja-cifras .l{font-size:10px;color:#4a4d55}.cam-hoja-cifras b{font-family:var(--f-display);font-size:1.1rem;line-height:1.2;overflow-wrap:anywhere}.cam-hoja-cifras i{font-size:9.5px;color:#62666f;font-style:normal}
.cam-hoja-bars{display:flex;flex-direction:column;gap:3px}
.cam-hoja-bars .brow{grid-template-columns:150px 1fr;font-size:10.5px;gap:8px}.cam-hoja-bars .bar{height:11px}.cam-hoja-bars .bv{font-size:10.5px}
.cam-hoja-pie{border-top:1px solid #e3e3dc;margin-top:12px;padding-top:6px;font-size:9.5px;color:#62666f}.cam-hoja-pie p{margin-bottom:2px}
@media (max-width:640px){.cam-hoja{padding:20px 16px}.cam-hoja-cifras{grid-template-columns:1fr 1fr}.cam-hoja-bars .brow{grid-template-columns:110px 1fr}}
@media print{
  .cam-hoja-wrap{max-width:none}.cam-hoja{border:0;box-shadow:none;padding:0;margin:0}.cam-hoja *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cam-hoja-texto p{font-size:10.5pt}.cam-hoja h1{font-size:19pt}.cam-hoja-cifras b{font-size:12pt}
}
.cam-linea{max-width:680px}

/* Cámaras · comparativos (12-oct-2026, 2.ª entrega) */
.bar.neg{background:var(--coral)}.bar.neg.hl{background:var(--bad)}
.brow.corte{margin-top:6px}.brow.corte .bl::before{content:"···  ";color:var(--muted)}
.cam-sep{margin:26px 0 -4px;font-size:1.15rem;letter-spacing:-.02em}
.cam-sector-vista>.cam-sep+.card{margin-top:12px}
.cam-tres{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}
.cam-prod{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}
.cam-dos-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:14px}
.cam-dos-col h4{font-size:.95rem;margin:0 0 2px}
.cam-ord{margin-top:16px;align-items:center}
.cam-ord .cap{margin:0}
.cam-apil{display:grid;grid-template-columns:78px minmax(0,1fr);gap:10px;align-items:center;margin-top:8px;font-size:13px}
.cam-apil-et{color:var(--ink2);overflow-wrap:anywhere}
.cam-apil-bar{display:flex;height:30px;border-radius:8px;overflow:hidden;background:var(--surface2)}
.cam-seg{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;min-width:0;overflow:hidden;border-right:2px solid var(--surface)}
.cam-seg.s1,.cam-leyenda i.s1{background:#dcefd2;color:#245600}
.cam-seg.s2,.cam-leyenda i.s2{background:#9fd68a;color:#173a00}
.cam-seg.s3,.cam-leyenda i.s3{background:#30b71a;color:#0f1115}
.cam-seg.s4,.cam-leyenda i.s4{background:#245600;color:#fff}
.cam-leyenda{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12.5px;color:var(--ink2)}
.cam-leyenda span{display:inline-flex;align-items:center;gap:6px}
.cam-leyenda i{width:12px;height:12px;border-radius:3px;display:inline-block}
.cam-refs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px;margin-top:12px}
.cam-ref{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--surface2)}
.cam-ref-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.cam-ref p{font-size:13.5px;margin-top:6px}
.cam-ext .note{margin-top:6px}
.tbl th[scope=row]{text-align:left;font-weight:600;color:var(--ink);font-size:13.5px;white-space:normal}
@media (max-width:900px){.cam-tres,.cam-prod{grid-template-columns:1fr}.cam-dos-col{grid-template-columns:1fr}}
@media (max-width:640px){.cam-apil{grid-template-columns:62px minmax(0,1fr)}}
.tbl tr.hl th{background:var(--brand-soft);font-weight:700}
.tbl th[scope=row] .badge{margin-left:6px}

.cam-hoja-texto.cols{column-count:2;column-gap:20px}
.cam-hoja-texto.cols p{font-size:10.5px;line-height:1.42;margin-bottom:5px}
.cam-hoja-texto.chica p{font-size:9.5px;line-height:1.36;margin-bottom:4px}
.cam-hoja-cifras div{padding:5px 8px}.cam-hoja-cifras b{font-size:1rem}
@media (max-width:640px){.cam-hoja-texto.cols{column-count:1}}
@media print{
  @page{margin:11mm 12mm}
  .cam-hoja-texto.cols p{font-size:8.9pt}.cam-hoja-texto.chica p{font-size:8.1pt}
  .cam-hoja-cifras{gap:5px;margin-top:6px}.cam-hoja-cifras b{font-size:10.5pt}.cam-hoja-cifras .l{font-size:7.6pt}.cam-hoja-cifras i{font-size:7.2pt}
  .cam-hoja h1{font-size:16pt;margin:3px 0 6px}.cam-hoja h2{font-size:10pt;margin:8px 0 3px}.cam-hoja-head{padding-bottom:7px;margin-bottom:8px}.cam-hoja-logo{height:36px}
  .cam-hoja-bars .brow{font-size:8pt}.cam-hoja-bars .bar{height:8px}.cam-hoja-bars .bv{font-size:8pt}.cam-hoja-pie{font-size:7.2pt;margin-top:6px}
}
.badge.rep{color:var(--warn-ink);border-color:var(--warn)}
@media print{
  .cam-hoja-texto.chica p{font-size:7.8pt;line-height:1.3;margin-bottom:3px}
  .cam-hoja-texto.cols{column-gap:14px}
  .cam-hoja-head{padding-bottom:5px;margin-bottom:6px}.cam-hoja-logo{height:30px}.cam-hoja-logo2{height:30px}
  .cam-hoja-cifras div{padding:3px 7px}.cam-hoja-nota{font-size:7.6pt;margin:2px 0}
  .cam-hoja-bars{gap:1px}
}

/* ---------- Administración · Frescura del portal (12-oct-2026) ---------- */
.fr{display:grid;gap:14px;margin-top:14px}
.fr-chips{display:flex;flex-wrap:wrap;gap:10px}
.fr-chip{display:flex;align-items:baseline;gap:8px;padding:10px 16px;border-radius:14px;background:var(--surface);border:1px solid var(--line);font-size:13.5px;color:var(--ink2)}
.fr-chip b{font-family:var(--f-display);font-size:24px;color:var(--ink)}
.fr-chip.ok{border-color:var(--ok)}.fr-chip.aviso{border-color:var(--warn)}.fr-chip.atencion{border-color:var(--warn-ink)}.fr-chip.critico{border-color:var(--bad)}
.fr-chip.atencion b{color:var(--warn-ink)}.fr-chip.critico b{color:var(--bad)}
.fr-h{margin-top:8px}
.fr-lista-tarjetas{display:grid;gap:12px}
.fr-item{display:grid;gap:6px;padding:14px 18px;border-left:5px solid var(--warn)}
.fr-item.critico{border-left-color:var(--bad)}.fr-item.atencion{border-left-color:var(--warn-ink)}
.fr-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.fr-nivel{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:2px 9px;border-radius:999px;background:var(--surface2);color:var(--ink2)}
.fr-nivel.critico{background:var(--bad);color:#fff}.fr-nivel.atencion{background:var(--warn);color:#0f1115}
.fr-estado{margin-left:auto;font-size:12.5px;color:var(--muted)}
.fr-msg{color:var(--ink);max-width:90ch}
.fr-ok{color:var(--brand-ink);font-weight:600}.fr-mal{color:var(--bad);font-weight:600}
.fr-item .tags{margin-top:6px}
.fr-doble{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.fr-doble:empty{display:none}
.fr-lista{margin:8px 0 0;padding-left:18px;color:var(--ink2);font-size:14px;display:grid;gap:4px}
.fr-corriendo{border-color:var(--warn);background:var(--surface2)}
.fr-det{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 16px}
.fr-det summary{cursor:pointer;font-weight:700}
.fr-edit{display:grid;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 16px;margin-top:8px}
.fr-edit textarea{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%;color:var(--ink);resize:vertical}
.fr-edit-h{display:grid;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.fr-edit-c{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.fr-edit-c label{display:grid;gap:4px}
.fr-edit-c input[type=text]{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;width:100%;color:var(--ink)}
.fr-det .tbl{margin-top:10px;max-height:420px;overflow:auto}
@media (max-width:640px){.fr-estado{margin-left:0}}

/* Administración: índice de saltos y tarjeta "Armar mi reporte del lunes" (12-oct-2026) */
.adm-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 18px; }
.adm-nav .cap { margin: 0 4px 0 0; }
.lun { border-left: 6px solid var(--green, #30b71a); padding: 18px 20px; margin-bottom: 14px; }
.lun-top { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 14px; }
.lun-h { margin: 2px 0 0; font-size: 1.5rem; }
.lun-btn { font-size: 1rem; padding: 12px 20px; text-decoration: none; }
.lun-pasos { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; margin: 16px 0 4px; padding: 0; }
.lun-paso { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; }
.lun-n { flex: none; width: 24px; height: 24px; border-radius: 50%; border: 2px solid currentColor; display: grid; place-items: center; font-size: .78rem; font-weight: 700; opacity: .65; }
.lun-paso.ok .lun-n { background: var(--green, #30b71a); border-color: var(--green, #30b71a); color: #fff; opacity: 1; }
.lun-paso.mal .lun-n { border-color: #c25e00; color: #c25e00; opacity: 1; }
.tbl tr.cam-grupo th { background: var(--surface-2, rgba(127,127,127,.10)); font-size: .8rem; letter-spacing: .02em; text-transform: none; text-align: left; color: var(--ink-2, inherit); }
.psec .card ul+.src{margin-top:10px}

/* Sala de prensa (13-oct-2026): fichas citables de Puebla con fuente oficial. Usa los mismos tokens que el resto del Monitor (y la marca de la alianza si la hay). */
.pr-como{margin-top:22px;border-left:5px solid var(--brand)}
.pr-como ol{margin:8px 0 0;padding-left:20px;display:grid;gap:6px;color:var(--ink2);font-size:14.5px;max-width:80ch}
.pr-nuevo{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px}
.pr-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:20px}
.pr-buscar{flex:1 1 280px;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:10px 16px;color:var(--ink)}
.pr-filtros{display:flex;flex-wrap:wrap;gap:6px}
.pr-fil{background:var(--surface);border:1px solid var(--line);color:var(--ink2);border-radius:999px;padding:6px 13px;font-size:13px;font-weight:500;text-align:left}
.pr-fil:hover{border-color:var(--muted);color:var(--ink)}
.pr-fil.on{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700}
.pr-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));margin-top:16px}
.pr-card{display:flex;flex-direction:column;gap:8px;padding:18px 20px;scroll-margin-top:90px;transition:box-shadow 240ms ease,border-color 240ms ease}
.pr-card.pr-resalta{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft),var(--shadow)}
.pr-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.pr-badge{font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;letter-spacing:.01em}
.pr-badge.nuevo{background:var(--brand-soft);color:var(--brand-ink)}
.pr-badge.viejo{background:#fff1cf;color:var(--warn-ink)}
.pr-tit{font-size:1rem;font-weight:700;line-height:1.3;letter-spacing:-.005em}
.pr-val{font-family:var(--f-display);font-variant-numeric:lining-nums;font-weight:700;font-size:2.2rem;letter-spacing:-.03em;line-height:1.08;overflow-wrap:anywhere}
.pr-per{color:var(--ink2);font-size:14px}
.pr-nac{color:var(--ink2);font-size:14px}
.pr-nac b{color:var(--ink)}
.pr-frente{font-size:13.5px;color:var(--ink2)}
.pr-entender{display:grid;gap:10px;margin-top:4px;padding:12px 14px;background:var(--surface2);border-radius:10px;border-left:3px solid var(--line)}
.pr-entender b{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.pr-entender p{margin:0;font-size:14px;line-height:1.5;color:var(--ink2)}
.pr-siglas{font-size:12.5px;color:var(--muted);display:grid;gap:2px}
.pr-fuente{margin-top:auto;padding-top:10px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink2)}
.pr-fuente b{color:var(--ink)}
.pr-acc{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:2px}
.pr-portal{font-size:13px;color:var(--ink2)}
.pr-cita textarea{width:100%;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--ink);resize:vertical;font-size:13px}
.pr-datos .card{max-width:760px}
.pr-datos .tags{align-items:center}
.pr-datos input[type=text]{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 12px;width:150px;color:var(--ink)}
@media (max-width:640px){.pr-val{font-size:1.9rem}.pr-fil{font-size:12.5px;padding:6px 11px}}
body.prensa .tabs{display:none}
body.prensa .acct{margin-left:auto}
#sala-prensa .frow .pill{align-self:end;justify-self:start}

/* ---- Alerta especial a pedido (admin): formulario y lista ---- */
.al-vista{max-width:860px;margin:0 auto}
.al-lista{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.al-fila{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;text-decoration:none;color:var(--ink);padding:12px 14px}
.al-fila b{flex:1 1 260px}.al-meta{font-size:12.5px;color:var(--ink2)}
.al-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:12px 0}
.al-filas{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.al-fila-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;align-items:end;padding:12px}
.al-error{color:var(--bad,#b3261e);font-weight:700;margin-top:10px}.al-error:empty{display:none}
.al-vista .field{margin-bottom:10px}

/* ---- Hoja «Hondo y papel» (Carta, 2 páginas) ---- */
.ad-wrap{max-width:900px;margin:0 auto}
.ad-escala{overflow-x:auto;padding:6px 0 24px}
.ad-doc{--ink:#0b1f17;--forest:#0E3527;--green:#1F8F10;--lime:#30B71A;--paper:#F6F9FA;--line:#D3DEE3;--mut:#4d6158;--warnbg:#fff6d9;
  font-family:Calibri,Carlito,"Liberation Sans",Arial,sans-serif;color:var(--ink);font-size:10.4pt;line-height:1.38;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:8.5in;margin:0 auto}
.ad-doc *{box-sizing:border-box}
.ad-page{width:8.5in;height:11in;padding:.42in .55in .45in;background:var(--paper);position:relative;overflow:hidden;margin:0 0 18px;box-shadow:0 2px 18px rgba(11,31,23,.18)}
.ad-top{display:flex;align-items:center;justify-content:space-between;padding-bottom:9px;border-bottom:3px solid var(--ink)}
.ad-plate{background:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 12px;display:flex;align-items:center}.ad-plate img{height:31px;width:auto;display:block}
.ad-tag{font:700 8.6pt Arial,"Liberation Sans",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);text-align:right;line-height:1.5}
.ad-tag b{display:inline-block;background:var(--forest);color:#fff;padding:3px 9px;border-radius:3px;letter-spacing:.14em;margin-bottom:3px}
.ad-borrador{position:absolute;top:.15in;left:50%;transform:translateX(-50%);background:#b3261e;color:#fff;font:700 7.4pt Arial,"Liberation Sans",sans-serif;letter-spacing:.12em;padding:2px 12px;border-radius:0 0 5px 5px;white-space:nowrap;z-index:3}
.es-borrador .ad-page:after{content:"BORRADOR";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-30deg);font:800 84pt Arial,"Liberation Sans",sans-serif;letter-spacing:.04em;color:rgba(179,38,30,.045);pointer-events:none;z-index:2}
.ad-kick{display:flex;align-items:center;gap:9px;margin:15px 0 5px;font:700 8.6pt Arial,"Liberation Sans",sans-serif;letter-spacing:.13em;text-transform:uppercase;color:var(--green)}
.ad-kick:before{content:"";width:26px;height:4px;background:var(--lime);border-radius:2px}
.ad-doc h1{font:700 23pt/1.08 Arial,"Liberation Sans",sans-serif;letter-spacing:-.035em;margin:0 0 8px;color:var(--ink);text-wrap:balance}
.ad-lede{font-size:11.2pt;line-height:1.42;color:#22382e;margin:0 0 12px;max-width:6.9in}
.ad-doc h2{font:700 9.4pt Arial,"Liberation Sans",sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--forest);margin:0 0 7px;display:flex;gap:9px;align-items:baseline}
.ad-doc h2 .n{font-family:Consolas,"DejaVu Sans Mono",monospace;font-size:8.4pt;color:var(--green)}
.ad-sec{margin-top:10px}.ad-main>.ad-lede+.ad-sec{margin-top:6px}
.ad-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px 14px}
.ad-facts{margin:0;padding:0;list-style:none;display:grid;gap:6px}
.ad-facts li{position:relative;padding-left:15px}
.ad-facts li:before{content:"";position:absolute;left:0;top:.52em;width:6px;height:6px;border-radius:50%;background:var(--lime)}
.ad-doc sup{font-size:.68em;line-height:0;color:var(--green);font-family:Consolas,"DejaVu Sans Mono",monospace}
.ad-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:2px}
.ad-grid4[data-n="3"]{grid-template-columns:repeat(3,1fr)}.ad-grid4[data-n="2"]{grid-template-columns:repeat(2,1fr)}.ad-grid4[data-n="1"]{grid-template-columns:1fr}
.ad-tile{background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 10px 8px;display:flex;flex-direction:column;gap:2px}
.ad-tile .v{font:600 17pt/1.05 Consolas,"DejaVu Sans Mono",monospace;letter-spacing:-.04em;color:var(--forest)}
.ad-tile .l{font-size:9.3pt;font-weight:700;line-height:1.2}
.ad-tile .s{font-size:8.2pt;color:var(--mut);line-height:1.25;margin-top:auto;padding-top:3px}
.ad-note{font-size:8.6pt;color:var(--mut);margin:7px 0 0;line-height:1.35}
.ad-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ad-two[data-n="1"]{grid-template-columns:1fr}
.ad-two .ad-card{font-size:10pt}
.ad-voz-fila[data-n="vs"]{grid-template-columns:1.3fr .7fr}
.ad-doc table{width:100%;border-collapse:collapse;font-size:8.9pt;line-height:1.32}
.ad-doc th{text-align:left;font:700 7.8pt Arial,"Liberation Sans",sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);padding:0 8px 5px 0;border-bottom:2px solid var(--ink)}
.ad-doc th.wa{width:1.15in}.ad-doc th.wc{width:1.7in}.ad-doc th.wd{width:2.2in}
.ad-doc td{padding:3.5px 8px 3.5px 0;border-bottom:1px solid var(--line);vertical-align:top}
.ad-doc td.num{font-family:Consolas,"DejaVu Sans Mono",monospace;font-weight:600;color:var(--forest)}
.ad-warn{background:var(--warnbg);border:1px solid #ecd48a;border-radius:9px;padding:7px 12px;color:#4a3800;font-size:9pt;line-height:1.35;margin-top:8px}.ad-warn b{color:#3a2c00}
.ad-voice{background:var(--forest);color:#e8f2ec;border-radius:10px;padding:11px 15px}
.ad-voice h2{color:#8fe27c}.ad-voice h2 .n{color:#8fe27c}
.ad-voice p{margin:0;font-size:9.7pt;line-height:1.45}
.ad-voice .sm{font-size:8.3pt;color:#a9c9b8;margin-top:7px}
.ad-nose{font-size:8.8pt!important;padding:9px 11px!important}.ad-nose h2{margin-bottom:5px}.ad-nose .ad-facts{gap:4px}
.ad-src{font-size:6.9pt;line-height:1.22;color:#33463c;columns:3;column-gap:14px}
.ad-src div{break-inside:avoid;margin-bottom:2px}.ad-src b{font-family:Consolas,"DejaVu Sans Mono",monospace;color:var(--green);font-weight:600}
.ad-foot{position:absolute;left:.55in;right:.55in;bottom:.3in;display:flex;justify-content:space-between;align-items:flex-end;border-top:1px solid var(--line);padding-top:6px;font-size:7.8pt;color:var(--mut);line-height:1.3}
.ad-foot .l{max-width:5.6in}.ad-foot .r{text-align:right;font-weight:700;color:var(--forest);font-family:Consolas,"DejaVu Sans Mono",monospace}
@page ad{size:Letter;margin:0}
@media print{
  .ad-wrap,.ad-escala{max-width:none;padding:0;margin:0;overflow:visible}
  .ad-doc{page:ad;margin:0}
  .ad-page{box-shadow:none;margin:0;break-after:page;page-break-after:always}.ad-page:last-child{break-after:auto;page-break-after:auto}
}

/* Entrega 12 (16-oct-2026): franja de alertas especiales aprobadas y casillas de cámaras en Admin */
.al-franja{margin:14px 0;padding:12px 14px;border:1px solid var(--line);border-left:4px solid #B3261E;border-radius:12px;background:var(--surface)}
.al-franja-cab{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.al-franja-lista{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.al-franja-it{display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:10px}
.al-franja-it:hover{border-color:var(--ink2)}
.al-franja-it b{font-size:.95rem}.al-franja-it span{font-size:12px;color:var(--muted)}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);cursor:pointer}
#camaras-acceso .frow>.pill{align-self:end;justify-self:start}

/* Admin · informe del lunes para aliados (18-oct-2026) */
.envio-lista{list-style:none;padding:0;margin:8px 0 4px;display:flex;flex-direction:column;gap:7px;font-size:14px;color:var(--ink2)}
.envio-lista li b{color:var(--ink)}
.envio-acc{margin-top:14px;align-items:center}
