/* ============================================================
   AJ S.A. · Anita · Norte · Old Tradi — Sala de situación
   Identidad tomada de los envases: azul del paquete Anita, rojo del mantel,
   amarillo de la cinta; Norte rojo y azul; Old Tradi negro y oro.
   Contraste: blanco sobre rojo y azul; tinta casi negra sobre amarillo.
   ============================================================ */
:root{
  --rojo:#D42A31; --rojo-900:#8E1218; --rojo-700:#B71E25; --rojo-50:#FDECEC; --rojo-100:#F7C9CB;
  --azul:#16357F; --azul-900:#0B1C48; --azul-700:#21479F; --azul-50:#E9EEF9; --azul-100:#C8D3EE;
  --amarillo:#FFD400; --amarillo-600:#E7B900; --amarillo-50:#FFF7CC;
  --norte:#C8102E; --norte-azul:#1B2F6E;
  --oro:#C9A227; --oro-50:#F8F1DA; --ot:#141210;
  --negro:#0B1A3F; --negro-2:#11255A; --negro-3:#1A3170;
  --tinta:#121A2E; --tinta-70:#3C4560; --tinta-45:#5D6680; --tinta-25:#98A0B5;
  --linea:#E2E6EF; --linea-fuerte:#C9D0DE; --papel:#FFFFFF; --fondo:#F5F6FA; --fondo-2:#EBEEF5;
  --verde:#0E8A4F; --verde-50:#E1F3EA; --ambar:#B85C0A; --ambar-50:#FDF0E1; --celeste:#2D7FD3; --celeste-50:#E5F0FB;
  --sombra-1:0 1px 2px rgba(11,26,63,.06),0 1px 3px rgba(11,26,63,.04);
  --sombra-2:0 8px 22px rgba(11,26,63,.09),0 1px 3px rgba(11,26,63,.05);
  --sombra-3:0 24px 54px rgba(11,26,63,.18),0 2px 8px rgba(11,26,63,.06);
  --r-s:8px; --r-m:12px; --r-l:18px;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --disp:"Barlow Condensed","Inter",sans-serif;
  --marca:"Cinzel","Times New Roman",serif;
  --mono:ui-monospace,Menlo,Consolas,monospace;
  --mantel:repeating-conic-gradient(var(--rojo) 0 25%,#fff 0 50%) 0 0/16px 16px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--sans);background:var(--fondo);color:var(--tinta);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
[hidden]{display:none!important}
.rojo{color:var(--rojo)}
::selection{background:var(--amarillo);color:var(--tinta)}

/* ===================== GATE ===================== */
.gate{position:fixed;inset:0;z-index:100;background:radial-gradient(120% 90% at 50% 0%,#14306F 0%,#0B1A3F 55%,#060E26 100%);display:grid;place-items:center;overflow:hidden;transition:opacity .55s ease,visibility .55s}
.gate.off{opacity:0;visibility:hidden}
.gate__bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.gate__bg i{position:absolute;left:-20%;width:140%;height:160px;opacity:.12;transform:rotate(-16deg);animation:barrido 10s linear infinite}
.gate__bg i:nth-child(1){top:10%;background:linear-gradient(90deg,transparent,var(--rojo) 40%,var(--rojo) 60%,transparent)}
.gate__bg i:nth-child(2){top:48%;animation-delay:-3.3s;background:linear-gradient(90deg,transparent,var(--amarillo) 40%,var(--amarillo) 60%,transparent);opacity:.08}
.gate__bg i:nth-child(3){top:80%;animation-delay:-6.6s;background:linear-gradient(90deg,transparent,#3E6AD8 40%,#3E6AD8 60%,transparent)}
@keyframes barrido{from{transform:translateX(-25%) rotate(-16deg)}to{transform:translateX(25%) rotate(-16deg)}}
.gate__mantel{position:absolute;inset:auto -10% -40% -10%;height:60%;background:var(--mantel);opacity:.05;transform:perspective(600px) rotateX(58deg);pointer-events:none}
.gate__box{position:relative;text-align:center;padding:24px;width:min(560px,94vw)}
.gate__logo{width:min(330px,74vw);margin:0 auto 14px}
.gate__logo svg{width:100%;height:auto;display:block;overflow:visible}
.gate__t{font-family:var(--disp);font-weight:700;font-size:32px;letter-spacing:.6px;text-transform:uppercase;color:#fff;opacity:0;animation:subir .7s ease .9s forwards;line-height:1.05}
.gate__t span{color:var(--amarillo)}
.gate__marcas{display:flex;gap:8px;justify-content:center;margin-top:10px;opacity:0;animation:subir .7s ease 1s forwards;flex-wrap:wrap}
.gate__marcas span{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.22);color:#fff}
.gate__marcas .m-anita{background:var(--rojo);border-color:var(--rojo)}
.gate__marcas .m-norte{background:#fff;color:var(--norte);border-color:#fff;font-family:"Playfair Display",serif;letter-spacing:1px}
.gate__marcas .m-ot{background:var(--ot);color:var(--oro);border-color:var(--oro);font-family:"UnifrakturCook",serif;font-size:13px;letter-spacing:.2px;text-transform:none}
.gate__s{color:#A7B3D6;font-size:13px;margin-top:12px;opacity:0;animation:subir .7s ease 1.1s forwards}
@keyframes subir{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.pin{margin-top:24px;opacity:0;animation:subir .7s ease 1.2s forwards}
.pin__cajas{display:flex;gap:12px;justify-content:center}
.pin__cajas input{width:58px;height:68px;border-radius:14px;border:2px solid #2A4386;background:#0E1F4D;color:#fff;font-family:var(--disp);font-size:36px;font-weight:700;text-align:center;outline:none;transition:border-color .2s,transform .2s,box-shadow .2s;caret-color:var(--amarillo)}
.pin__cajas input:focus{border-color:var(--amarillo);box-shadow:0 0 0 4px rgba(255,212,0,.18);transform:translateY(-2px)}
.pin__cajas.err input{border-color:var(--rojo);animation:sacudir .4s}
@keyframes sacudir{0%,100%{transform:none}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
.pin__btn{margin-top:20px;background:var(--rojo);color:#fff;font-weight:700;padding:13px 44px;border-radius:999px;font-size:14px;letter-spacing:.3px;box-shadow:0 10px 26px rgba(212,42,49,.38);transition:transform .15s,box-shadow .2s}
.pin__btn:hover{transform:translateY(-1px);box-shadow:0 14px 32px rgba(212,42,49,.5)}
.pin__err{color:#FF8A8F;font-size:12.5px;margin-top:12px;height:18px;opacity:0;transition:opacity .2s}
.pin__err.on{opacity:1}
.gate__pie{margin-top:26px;color:#8291BC;font-size:12px;opacity:0;animation:subir .7s ease 1.35s forwards}
.gate__pie b{color:#fff}

/* logo animado por capas */
.logo-anim .l-mantel{opacity:0;animation:aparece .5s ease .55s forwards}
.logo-anim .l-borde{stroke-dasharray:620;stroke-dashoffset:620;animation:trazo 1.1s ease .05s forwards}
.logo-anim .l-cuadros{opacity:0;animation:aparece .6s ease .7s forwards}
.logo-anim .l-cinta,.logo-anim .l-cola,.logo-anim .l-brillo{opacity:0;transform:scaleX(.2);transform-origin:200px 130px;transform-box:view-box;animation:cintaIn .7s cubic-bezier(.2,.8,.2,1) .95s forwards}
.logo-anim .l-texto{opacity:0;animation:aparece .6s ease 1.35s forwards}
@keyframes trazo{to{stroke-dashoffset:0}}
@keyframes aparece{to{opacity:1}}
@keyframes cintaIn{to{opacity:1;transform:none}}

/* ===================== WIPE ===================== */
.wipe{position:fixed;inset:0;z-index:90;pointer-events:none;background:var(--rojo);transform:translateX(-102%);display:grid;place-items:center;overflow:hidden}
.wipe::before{content:"";position:absolute;inset:0;background:repeating-conic-gradient(rgba(255,255,255,.09) 0 25%,transparent 0 50%) 0 0/44px 44px}
.wipe.in{animation:wipeIn .55s cubic-bezier(.7,0,.3,1) forwards}
.wipe.out{animation:wipeOut .55s cubic-bezier(.7,0,.3,1) forwards}
@keyframes wipeIn{from{transform:translateX(-102%) skewX(-8deg)}to{transform:none}}
@keyframes wipeOut{from{transform:none}to{transform:translateX(115%) skewX(8deg)}}
.wipe__emb{position:relative;width:min(230px,48vw);opacity:0}
.wipe.in .wipe__emb{animation:embPop .5s ease .18s forwards}
@keyframes embPop{from{opacity:0;transform:scale(.6) rotate(-12deg)}to{opacity:1;transform:none}}
.wipe__emb svg{width:100%;height:auto;display:block;filter:drop-shadow(0 10px 30px rgba(0,0,0,.25))}

/* ===================== LAYOUT ===================== */
.shell{display:flex;min-height:100vh}
.shell.entra .lienzo{animation:lienzoIn .5s ease both}
@keyframes lienzoIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.side{width:256px;flex:0 0 256px;background:linear-gradient(180deg,#0E2156 0%,#0B1A3F 100%);color:#D6DBEA;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:20}
.side::after{content:"";position:absolute;right:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--rojo) 0 33%,var(--amarillo) 33% 66%,#3E6AD8 66%)}
.side__brand{padding:16px 18px 12px;border-bottom:1px solid rgba(255,255,255,.08)}
.marca{display:flex;align-items:center;gap:10px}
.marca__emb{width:84px;flex:0 0 84px}
.marca__emb svg{width:100%;height:auto;display:block}
.marca__txt b{display:block;font-size:13px;color:#fff;line-height:1.2}
.marca__txt span{display:block;font-size:11px;color:#91A0C8;margin-top:2px;line-height:1.3}
.nav{padding:10px 12px;flex:1;overflow-y:auto}
.nav__rot{font-size:10.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:#7183B4;padding:14px 10px 6px}
.nav__it{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:9px;font-size:13px;font-weight:500;color:#C9D1E6;position:relative;text-align:left;transition:background .15s,color .15s}
.nav__it:hover{background:rgba(255,255,255,.07);color:#fff}
.nav__it.on{background:rgba(255,212,0,.13);color:#fff;font-weight:650}
.nav__it.on::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--amarillo)}
.nav__it svg{width:17px;height:17px;flex:0 0 17px;opacity:.85;transition:transform .25s}
.nav__it:hover svg{transform:rotate(-8deg) scale(1.08)}
.nav__it .pin{margin-left:auto;font-size:10.5px;font-weight:700;background:var(--rojo);color:#fff;padding:1px 7px;border-radius:999px}
.nav__it .pin--amarillo{background:var(--amarillo);color:#1A1400}
.nav__it .pin--oro{background:var(--oro);color:#1A1400}
.side__pie{padding:12px 18px 16px;border-top:1px solid rgba(255,255,255,.08);font-size:11px;color:#91A0C8;line-height:1.55}
.side__pie b{color:#fff}
.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow-x:hidden}
.top{display:flex;align-items:center;gap:14px;padding:13px 26px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--linea);position:sticky;top:0;z-index:15}
.top>div:nth-child(2){min-width:0}
.top h1{font-size:17px;font-weight:750;letter-spacing:-.3px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top__sub{font-size:12px;color:var(--tinta-45);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw}
.top__der{margin-left:auto;display:flex;align-items:center;gap:10px}
.menu-btn{display:none;width:36px;height:36px;border-radius:9px;border:1px solid var(--linea);place-items:center;flex:0 0 36px}
.lienzo{padding:24px 26px 56px;flex:1;min-width:0}
.pie{padding:20px 26px 34px;border-top:1px solid var(--linea);background:#fff;font-size:11.5px;color:var(--tinta-45);line-height:1.65}
.pie b{color:var(--tinta-70)}

/* chips */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:5px 10px;border-radius:999px;border:1px solid var(--linea);background:var(--fondo-2);color:var(--tinta-70);white-space:nowrap}
.chip--vivo{background:var(--verde-50);color:#0B6B3D;border-color:#BFE6D2}
.chip--vivo i{width:6px;height:6px;border-radius:50%;background:var(--verde);animation:latido 1.8s ease-in-out infinite}
@keyframes latido{0%,100%{box-shadow:0 0 0 0 rgba(14,138,79,.5)}50%{box-shadow:0 0 0 5px rgba(14,138,79,0)}}
.chip--rojo{background:var(--rojo-50);color:var(--rojo-900);border-color:var(--rojo-100)}
.chip--azul{background:var(--azul-50);color:var(--azul);border-color:var(--azul-100)}
.chip--amarillo{background:var(--amarillo-50);color:#5E4A00;border-color:#F1DE8A}
.chip--negro{background:var(--negro);color:#fff;border-color:var(--negro)}
.chip--oro{background:var(--ot);color:var(--oro);border-color:var(--ot)}
.chip--norte{background:var(--norte);color:#fff;border-color:var(--norte)}

/* ===================== HUB ===================== */
.hub-cab{display:flex;align-items:flex-end;gap:20px;margin-bottom:20px;flex-wrap:wrap}
.hub-cab h2{font-family:var(--disp);font-size:46px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;margin:0;line-height:.98}
.hub-cab h2 span{color:var(--rojo)}
.hub-cab p{margin:8px 0 0;color:var(--tinta-45);max-width:700px}
.hub-cab .der{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.hoy{display:grid;grid-template-columns:1.25fr 1fr;gap:16px;margin-bottom:20px}
.hoy__kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.hoy__k{background:var(--papel);border:1px solid var(--linea);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;justify-content:center;gap:3px;position:relative;overflow:hidden;min-width:0;transition:transform .2s,box-shadow .2s}
.hoy__k:hover{transform:translateY(-2px);box-shadow:var(--sombra-2)}
.hoy__k::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c,var(--rojo))}
.hoy__k small{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--tinta-45);line-height:1.3}
.hoy__k b{font-family:var(--disp);font-size:34px;font-weight:700;line-height:1;color:var(--tinta);font-variant-numeric:tabular-nums}
.hoy__k>span{font-size:11.5px;color:var(--tinta-45);line-height:1.4}
.hub{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.mod{position:relative;background:var(--papel);border:1px solid var(--linea);border-radius:var(--r-l);padding:22px 22px 20px;box-shadow:var(--sombra-1);overflow:hidden;text-align:left;display:flex;flex-direction:column;gap:12px;min-height:250px;transition:transform .25s,box-shadow .25s,border-color .25s;animation:modIn .55s cubic-bezier(.2,.8,.2,1) both;font-family:inherit;cursor:pointer;color:inherit}
.mod:nth-child(2){animation-delay:.06s}.mod:nth-child(3){animation-delay:.12s}.mod:nth-child(4){animation-delay:.18s}.mod:nth-child(5){animation-delay:.24s}.mod:nth-child(6){animation-delay:.3s}.mod:nth-child(7){animation-delay:.36s}.mod:nth-child(8){animation-delay:.42s}.mod:nth-child(9){animation-delay:.48s}
@keyframes modIn{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
.mod::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--mc,var(--rojo));transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.mod:hover{transform:translateY(-4px);box-shadow:var(--sombra-3);border-color:var(--rojo-100)}
.mod:hover::before{transform:scaleX(1)}
.mod__ico{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;background:var(--rojo-50);color:var(--mc,var(--rojo));transition:transform .3s,background .3s,color .3s}
.mod:hover .mod__ico{background:var(--mc,var(--rojo));color:#fff;transform:rotate(-6deg) scale(1.05)}
.mod__ico svg{width:24px;height:24px}
.mod h3{margin:0;font-family:var(--disp);font-size:26px;font-weight:700;text-transform:uppercase;letter-spacing:.2px;line-height:1.02;overflow-wrap:anywhere;padding-right:80px}
.mod p{margin:0;font-size:12.5px;color:var(--tinta-45);line-height:1.5;flex:1}
.mod__kpis{display:flex;gap:16px;flex-wrap:wrap;border-top:1px dashed var(--linea);padding-top:12px;padding-right:40px}
.mod__kpis div{font-size:11px;color:var(--tinta-45)}
.mod__kpis b{display:block;font-family:var(--disp);font-size:24px;font-weight:700;color:var(--tinta);line-height:1;white-space:nowrap}
.mod__tag{position:absolute;top:16px;right:16px}
.mod__ir{position:absolute;right:18px;bottom:18px;width:34px;height:34px;border-radius:50%;background:var(--fondo-2);display:grid;place-items:center;color:var(--tinta-70);transition:background .25s,color .25s,transform .25s}
.mod:hover .mod__ir{background:var(--mc,var(--rojo));color:#fff;transform:translateX(3px)}
.mod--dark{background:linear-gradient(150deg,#14306F 0%,#0B1A3F 100%);border-color:#0B1A3F;color:#fff}
.mod--dark h3,.mod--dark .mod__kpis b{color:#fff}
.mod--dark p,.mod--dark .mod__kpis div{color:#AEB9D8}
.mod--dark .mod__ico{background:rgba(255,212,0,.16);color:var(--amarillo)}
.mod--dark:hover .mod__ico{background:var(--amarillo);color:#1A1400}
.mod--dark .mod__kpis{border-color:rgba(255,255,255,.16)}
.mod--dark .mod__ir{background:rgba(255,255,255,.12);color:#fff}
.mod--ot{background:linear-gradient(150deg,#26211A 0%,#141210 100%);border-color:#141210;color:#fff}
.mod--ot h3,.mod--ot .mod__kpis b{color:#F3E7C0}
.mod--ot p,.mod--ot .mod__kpis div{color:#BDB29A}
.mod--ot .mod__ico{background:rgba(201,162,39,.18);color:var(--oro)}
.mod--ot:hover .mod__ico{background:var(--oro);color:#141210}
.mod--ot .mod__kpis{border-color:rgba(201,162,39,.25)}
.mod--ot .mod__ir{background:rgba(201,162,39,.2);color:#F3E7C0}
.mod--ot::before{background:var(--oro)}
.mod__mini{position:absolute;right:-8px;bottom:56px;width:120px;opacity:.13;pointer-events:none}

/* ===================== GRID / CARDS ===================== */
.g{display:grid;gap:16px;margin-bottom:16px}
.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g-21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.g-12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.g>*,.card,.card__cuerpo,.lienzo-chart,.hub>*{min-width:0}
.mt{margin-top:16px}
.card{background:var(--papel);border:1px solid var(--linea);border-radius:var(--r-l);box-shadow:var(--sombra-1);transition:box-shadow .2s;animation:cardIn .5s ease both;position:relative}
@keyframes cardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.card:hover{box-shadow:var(--sombra-2)}
.card__cab{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 0;flex-wrap:wrap}
.card__cab>div:first-child{min-width:0;flex:1 1 220px}
.card__cab h3{margin:0;font-size:13.5px;font-weight:700;letter-spacing:-.2px;line-height:1.3}
.card__cab p{margin:3px 0 0;font-size:12px;color:var(--tinta-70);line-height:1.45}
.card__cab .der{margin-left:auto;flex:0 0 auto;display:flex;gap:6px}
.card__cuerpo{padding:16px 18px 18px}
.card__cuerpo .ctl{flex-wrap:wrap}
.card__pie{padding:12px 18px;border-top:1px solid var(--linea);font-size:11.5px;color:var(--tinta-70)}
.card--negro{background:linear-gradient(150deg,#14306F 0%,#0B1A3F 100%);border-color:#0B1A3F;color:#fff}
.card--negro .card__cab p,.card--negro .card__pie{color:rgba(255,255,255,.82);border-color:rgba(255,255,255,.16)}
.card--rojo{background:linear-gradient(135deg,#C8242B 0%,#A3171D 60%,#7F0F14 100%);border-color:#7F0F14;color:#fff}
.card--rojo .card__cab h3,.card--rojo h4{color:#fff}
.card--rojo .card__cab p{color:rgba(255,255,255,.92)}
.card--ot{background:linear-gradient(150deg,#27221A 0%,#141210 100%);border-color:#141210;color:#F3E7C0}
.card--ot .card__cab h3{color:#F3E7C0}
.card--ot .card__cab p{color:#CFC4A8}
.escena{display:flex;gap:18px;align-items:center}
.escena__ilu{flex:0 0 150px;height:96px}
.escena__ilu svg{width:100%;height:100%;display:block;overflow:visible}
.escena__tx{font-size:14px;line-height:1.65;min-width:0}
.escena__tx b{color:var(--amarillo)}
.card--ot .escena__tx b{color:var(--oro)}
.panel{background:#fff;border-radius:14px;padding:14px 16px;color:var(--tinta);box-shadow:0 1px 2px rgba(0,0,0,.07)}
.panel b{color:var(--tinta)}
.as-nota{margin:8px 0 0;font-size:12px;color:var(--tinta-70);padding:10px 12px;border-radius:10px;background:var(--fondo);border:1px solid var(--linea);line-height:1.5}
.card--rojo .as-nota,.card--negro .as-nota{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff}
.card--rojo .as-nota b,.card--negro .as-nota b{color:#fff}
.card--ot .as-nota{background:rgba(201,162,39,.1);border-color:rgba(201,162,39,.3);color:#F3E7C0}
.grafico-nota{font-size:11.5px;color:var(--tinta-45);line-height:1.5;margin-top:10px;padding-top:10px;border-top:1px solid var(--linea)}

/* KPI */
.kpi{position:relative;padding:17px 18px 16px;overflow:hidden;transition:transform .2s,box-shadow .2s}
.kpi:hover{transform:translateY(-2px)}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rojo)}
.kpi--azul::after{background:var(--azul)}.kpi--amarillo::after{background:var(--amarillo-600)}.kpi--verde::after{background:var(--verde)}.kpi--ambar::after{background:var(--ambar)}.kpi--oro::after{background:var(--oro)}.kpi--norte::after{background:var(--norte)}
.kpi__rot{font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--tinta-45);line-height:1.3}
.kpi__val{font-family:var(--disp);font-size:36px;font-weight:700;line-height:1.05;margin-top:6px;font-variant-numeric:tabular-nums;white-space:nowrap}
.kpi__val small{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--tinta-45);margin-left:4px}
.kpi__pie{margin-top:8px;font-size:11.5px;color:var(--tinta-45);line-height:1.4;position:relative;z-index:1}
.kpi__spark{position:absolute;right:14px;bottom:10px;width:96px;height:30px;opacity:.5;pointer-events:none}
.kpi--anillo .kpi__rot,.kpi--anillo .kpi__val{padding-right:62px}
.kpi--anillo .kpi__val{font-size:30px}
.kpi--anillo>.anillo{position:absolute;right:14px;top:14px}

/* tablas */
.tabla-env{overflow-x:auto;border-radius:var(--r-m);border:1px solid var(--linea);-webkit-overflow-scrolling:touch}
table.t{width:100%;border-collapse:collapse;font-size:12.5px}
.t th{font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--tinta-45);font-weight:700;text-align:left;padding:10px 12px;background:var(--fondo);border-bottom:1px solid var(--linea);white-space:nowrap;position:sticky;top:0}
.t td{padding:9px 12px;border-bottom:1px solid var(--linea);vertical-align:middle;white-space:nowrap}
.t tr:last-child td{border-bottom:0}
.t tbody tr{transition:background .15s}
.t tbody tr:hover td{background:#FAFBFD}
.t .num{text-align:right;font-variant-numeric:tabular-nums}
.t--wrap td{white-space:normal}
.t .local{display:flex;align-items:center;gap:10px;white-space:normal;min-width:190px}
.t .local b{display:block;font-size:12.5px;line-height:1.2}
.t .local span{font-size:10.5px;color:var(--tinta-45)}
tr.fila-hoy>td{background:var(--amarillo-50)}
.sub{font-size:10.5px;color:var(--tinta-45);white-space:normal}
s.sub{text-decoration:line-through}
img.fo{width:42px;height:42px;object-fit:contain;border-radius:8px;background:#fff;border:1px solid var(--linea);flex:0 0 auto;padding:2px}
img.fo.sm{width:32px;height:32px}
.fo--vacia{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:8px;background:var(--fondo-2);color:var(--tinta-25);font-size:9px;font-weight:700;flex:0 0 42px;text-align:center;line-height:1.1}
.tag{display:inline-block;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:6px;letter-spacing:.2px;white-space:nowrap}
.tag--rojo{background:#FDE8E6;color:#A12A1E}.tag--gris{background:var(--fondo-2);color:var(--tinta-70)}.tag--verde{background:var(--verde-50);color:#0B6B3D}.tag--azul{background:var(--azul-50);color:var(--azul)}.tag--ambar{background:var(--ambar-50);color:#8A4006}.tag--amarillo{background:var(--amarillo-50);color:#5E4A00}.tag--oro{background:var(--oro-50);color:#6B5310}.tag--negro{background:var(--negro);color:#fff}
.t--matriz td{padding:6px 8px}
.t--matriz td.c{text-align:center}
.celda{display:inline-grid;place-items:center;min-width:58px;height:24px;border-radius:6px;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;padding:0 6px}
.celda--si{background:var(--verde-50);color:#0B6B3D}
.celda--alta{background:#FDE8E6;color:#A12A1E}
.celda--baja{background:var(--azul-50);color:var(--azul)}
.celda--no{background:repeating-linear-gradient(135deg,#F3F4F8 0 5px,#E9EBF2 5px 10px);color:var(--tinta-25)}

/* barras */
.barra{height:8px;border-radius:999px;background:var(--fondo-2);overflow:hidden;min-width:60px}
.barra i{display:block;height:100%;border-radius:999px;background:var(--rojo);width:0;transition:width 1s cubic-bezier(.2,.8,.2,1)}
.barra i.azul{background:var(--azul)}.barra i.amarillo{background:var(--amarillo-600)}.barra i.verde{background:var(--verde)}.barra i.oro{background:var(--oro)}.barra i.gris{background:var(--tinta-25)}.barra i.norte{background:var(--norte)}
.barra-fila{display:flex;align-items:center;gap:10px;font-size:12px;padding:6px 0}
.barra-fila .lb{flex:0 0 132px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.barra-fila .barra{flex:1}
.barra-fila .v{flex:0 0 86px;text-align:right;font-variant-numeric:tabular-nums;color:var(--tinta-70)}

/* feed */
.feed{display:flex;flex-direction:column;gap:10px}
.feed__it{display:flex;gap:12px;align-items:flex-start;padding:11px 12px;border-radius:10px;background:var(--fondo);border:1px solid var(--linea);animation:feedIn .45s ease both}
.feed__it:nth-child(2){animation-delay:.08s}.feed__it:nth-child(3){animation-delay:.16s}.feed__it:nth-child(4){animation-delay:.24s}.feed__it:nth-child(5){animation-delay:.32s}.feed__it:nth-child(6){animation-delay:.4s}
@keyframes feedIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
.feed__it .ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;flex:0 0 30px;background:var(--rojo-50);color:var(--rojo)}
.feed__it .ic svg{width:16px;height:16px}
.feed__it .ic.verde{background:var(--verde-50);color:var(--verde)}.feed__it .ic.azul{background:var(--azul-50);color:var(--azul)}.feed__it .ic.amarillo{background:var(--amarillo-50);color:#6B5300}.feed__it .ic.oro{background:var(--oro-50);color:#6B5310}.feed__it .ic.ambar{background:var(--ambar-50);color:var(--ambar)}
.feed__it>div{min-width:0}
.feed__it b{display:block;font-size:12.5px;line-height:1.35}
.feed__it span{font-size:11.5px;color:var(--tinta-45);line-height:1.45;display:block}
.feed__it .hora{font-size:10.5px;color:var(--tinta-25);font-weight:600;margin-left:auto;white-space:nowrap;padding-left:6px}

/* hallazgos */
.hallazgo{display:grid;grid-template-columns:54px minmax(0,1fr);gap:14px;align-items:start;padding:18px;border-bottom:1px solid var(--linea);transition:background .2s}
.hallazgo:hover{background:#FCFCFE}
.hallazgo:last-child{border-bottom:0}
.hallazgo .num{font-family:var(--disp);font-size:38px;font-weight:800;color:var(--rojo);line-height:.9}
.hallazgo .marca-h{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;padding:2px 7px;border-radius:5px;margin-bottom:6px}
.marca-h--anita{background:var(--rojo);color:#fff}.marca-h--norte{background:var(--norte-azul);color:#fff}.marca-h--ot{background:var(--ot);color:var(--oro)}.marca-h--aj{background:var(--amarillo);color:#1A1400}
.hallazgo h4{margin:0 0 5px;font-size:14px;line-height:1.32}
.hallazgo p{margin:0;font-size:12.5px;color:var(--tinta-70);line-height:1.55}
.hallazgo .ev{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.hallazgo .ev span{font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;background:var(--fondo-2);color:var(--tinta-70)}
.hallazgo .ev span.imp{background:var(--ambar-50);color:#8A4006}
.hallazgo .sol{margin-top:9px;font-size:12px;padding:9px 11px;border-radius:9px;background:var(--azul-50);color:var(--azul-900);border-left:3px solid var(--azul)}
.hallazgo .sol b{color:var(--azul)}
.hallazgo code{font-size:11.5px;background:var(--fondo-2);padding:1px 5px;border-radius:5px}

/* stack */
.stack{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.stack>div{padding:12px;border-radius:10px;background:var(--fondo);border:1px solid var(--linea);font-size:12px;min-width:0;overflow-wrap:anywhere}
.stack b{display:block;font-size:12.5px;margin-bottom:2px}
.stack b small{display:block;font-weight:600;color:var(--tinta-45);font-size:10.5px;margin-top:1px}
.stack span{color:var(--tinta-45);font-size:11.5px;line-height:1.45;display:block}
.stack--1{grid-template-columns:1fr}
.estado{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;padding:2px 6px;border-radius:5px;margin-left:6px;vertical-align:1px}
.estado--ok{background:var(--verde-50);color:#0B6B3D}.estado--mal{background:#FDE8E6;color:#A12A1E}.estado--med{background:var(--ambar-50);color:#8A4006}

/* controles */
.ctl{display:flex;gap:8px;flex-wrap:wrap;align-items:center;min-width:0}
.btn{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:8px 14px;border-radius:9px;border:1px solid var(--linea-fuerte);background:#fff;color:var(--tinta);transition:all .15s;white-space:nowrap}
.btn:hover{border-color:var(--tinta-45);transform:translateY(-1px)}
.btn--rojo{background:var(--rojo);border-color:var(--rojo);color:#fff}
.btn--rojo:hover{background:var(--rojo-700);border-color:var(--rojo-700)}
.btn--azul{background:var(--azul);border-color:var(--azul);color:#fff}
.btn .pt{width:9px;height:9px;border-radius:50%;background:var(--c,var(--rojo));display:inline-block}
.btn--rojo .pt{background:#fff}
.ctl--scroll{max-height:124px;overflow:auto;padding:2px}
.seg{display:inline-flex;background:var(--fondo-2);border-radius:10px;padding:3px;max-width:100%;overflow-x:auto}
.seg button{font-size:12px;font-weight:600;padding:6px 12px;border-radius:8px;color:var(--tinta-45);white-space:nowrap}
.seg button.on{background:#fff;color:var(--tinta);box-shadow:var(--sombra-1)}

/* charts */
.lienzo-chart{position:relative;width:100%}
.h180{height:180px}.h200{height:200px}.h220{height:220px}.h240{height:240px}.h260{height:260px}.h280{height:280px}.h300{height:300px}.h320{height:320px}.h360{height:360px}.h400{height:400px}

/* anillo */
.anillo{display:grid;place-items:center;position:relative}
.anillo svg{transform:rotate(-90deg)}
.anillo circle{fill:none;stroke-width:8;stroke-linecap:round}
.anillo .bg{stroke:var(--fondo-2)}
.anillo .fg{stroke:var(--rojo);stroke-dasharray:1 1000;transition:stroke-dasharray 1.2s cubic-bezier(.2,.8,.2,1)}
.anillo b{position:absolute;font-family:var(--disp);font-size:18px;font-weight:700}

/* flujo en vivo */
.flujo-env{position:relative}
.flujo-svg{width:100%;height:auto;display:block;margin-bottom:10px}
.flujo{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:8px}
.paso{border:1px solid var(--linea);border-radius:12px;padding:14px 12px 12px;background:#fff;font-size:12px;position:relative;transition:all .3s;opacity:.5;min-width:0}
.paso.on{opacity:1;border-color:var(--rojo);box-shadow:0 0 0 3px var(--rojo-50);transform:translateY(-2px)}
.paso.ok{opacity:1;border-color:var(--verde)}
.paso b{display:block;font-size:14px;font-weight:700;line-height:1.2;margin-bottom:3px;overflow-wrap:anywhere}
.paso span{display:block;color:var(--tinta-45);overflow-wrap:anywhere;line-height:1.4}
.paso .num{position:absolute;top:-10px;left:12px;width:22px;height:22px;border-radius:50%;background:var(--negro);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}
.paso.on .num{background:var(--rojo)}.paso.ok .num{background:var(--verde)}

/* simuladores */
.simx{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:18px;align-items:stretch}
.simx__ctr,.simx__res{border-radius:16px;padding:20px;min-width:0}
.simx__ctr{background:var(--fondo-2);border:1px solid var(--linea)}
.simx__res{background:#fff;border:1.5px solid var(--rojo);box-shadow:var(--sombra-1);display:flex;flex-direction:column}
.simx__h{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--tinta-45);margin-bottom:16px}
.simx__res .simx__h{color:var(--rojo)}
.simx__f{display:block;margin-bottom:20px}
.simx__f:last-child{margin-bottom:0}
.simx__f .lb{display:block;font-size:12px;font-weight:600;color:var(--tinta-70);line-height:1.35}
.simx__f .val{display:block;font-family:var(--disp);font-size:25px;line-height:1.1;color:var(--rojo);margin:2px 0 6px;font-variant-numeric:tabular-nums}
.simx__f input[type=range]{width:100%;min-width:0;display:block;height:24px;accent-color:var(--rojo)}
.simx__f .rng{display:flex;justify-content:space-between;font-size:10.5px;color:var(--tinta-45)}
.simx__rot{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tinta-45)}
.simx__big{font-family:var(--disp);font-size:56px;font-weight:700;line-height:1;letter-spacing:-.01em;color:var(--tinta);font-variant-numeric:tabular-nums;margin-top:4px;overflow-wrap:anywhere;transition:color .3s}
.simx__exp{font-size:12.5px;color:var(--tinta-70);line-height:1.55;margin-top:10px}
.simx__mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:10px;margin-top:auto;padding-top:18px}
.simx__o{background:var(--fondo);border:1px solid var(--linea);border-radius:12px;padding:10px 12px;min-width:0}
.simx__o small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--tinta-45);font-weight:700;line-height:1.3}
.simx__o b{display:block;font-family:var(--disp);font-size:23px;font-weight:700;line-height:1.15;margin-top:3px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.simx__o i{display:block;font-style:normal;font-size:11px;color:var(--tinta-45);margin-top:2px}
.simx--ot .simx__res{border-color:var(--oro)}.simx--ot .simx__res .simx__h{color:#8A6A12}.simx--ot .simx__f .val{color:#8A6A12}.simx--ot input[type=range]{accent-color:var(--oro)}
.simx--azul .simx__res{border-color:var(--azul)}.simx--azul .simx__res .simx__h,.simx--azul .simx__f .val{color:var(--azul)}.simx--azul input[type=range]{accent-color:var(--azul)}

/* buscador */
.buscador{display:flex;align-items:center;gap:10px;padding:9px 14px;margin-bottom:12px;border-radius:11px;background:var(--fondo);border:1px solid var(--linea);transition:border-color .18s,box-shadow .18s}
.buscador:focus-within{border-color:var(--rojo);box-shadow:0 0 0 3px rgba(212,42,49,.12)}
.buscador svg{width:16px;height:16px;flex:0 0 auto;color:var(--tinta-25)}
.buscador input{flex:1;min-width:0;background:transparent;border:0;outline:none;font-family:inherit;font-size:13.5px;color:var(--tinta)}
.buscador input::-webkit-search-cancel-button{display:none}
.buscador__x{width:20px;height:20px;border-radius:99px;background:var(--fondo-2);color:var(--tinta-45);font-size:15px;line-height:1}
.buscador__pie{margin-top:9px;font-size:11.5px;color:var(--tinta-45)}

/* góndola digital */
.gond-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:14px}
.gond-col{border:1px solid var(--linea);border-radius:var(--r-m);overflow:hidden;background:var(--papel);min-width:0;color:var(--tinta)}
.gond-col__cab{padding:10px 12px;border-bottom:1px solid var(--linea);border-top:4px solid var(--c)}
.gond-col__cab b{display:flex;align-items:baseline;gap:6px;font-size:14px}
.gond-col__cab b em{font-style:normal;font-family:var(--disp);font-size:26px;color:var(--c);margin-left:auto;line-height:1}
.gond-col__cab span{font-size:11px;color:var(--tinta-45)}
.gond-estante{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;padding:12px;max-height:300px;overflow:auto;background:linear-gradient(180deg,#fff 0 calc(100% - 6px),#E7EAF1 0)}
.gond-it{text-align:center;min-width:0;animation:cardIn .4s ease both}
.gond-it img{width:100%;height:70px;object-fit:contain;background:#fff;border-radius:8px;border:1px solid var(--linea);transition:transform .2s}
.gond-it:hover img{transform:translateY(-3px) scale(1.04)}
.gond-it b{display:block;font-size:12px;margin-top:5px;color:var(--tinta)}
.gond-it span{display:block;font-size:10px;color:var(--tinta-45);line-height:1.25;margin-top:2px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* mosaico */
.mosaico{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.loc{position:relative;border:1px solid var(--linea);border-radius:14px;padding:12px 12px 12px 16px;background:var(--papel);display:flex;flex-direction:column;gap:8px;overflow:hidden;transition:transform .2s,box-shadow .2s;min-width:0}
.loc:hover{transform:translateY(-3px);box-shadow:var(--sombra-2)}
.loc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c,var(--rojo))}
.loc__cab{display:flex;align-items:center;gap:10px;min-width:0}
.loc__cab>div{min-width:0}
.loc__cab b{display:block;font-size:13px;line-height:1.2}
.loc__cab span{display:block;font-size:11px;color:var(--tinta-45)}
.loc__pie{font-size:11px;color:var(--tinta-70);line-height:1.45}

/* escalera de precios */
.escalera svg{width:100%;height:auto;display:block}
.escalera .esc-txt{font-family:var(--sans);font-size:13px;font-weight:700;fill:var(--tinta)}
.escalera .esc-pre{font-family:var(--disp);font-size:22px;font-weight:700}
.escalera .esc-sub{font-family:var(--sans);font-size:11px;fill:var(--tinta-45)}

/* nombres en abanico */
.abanico svg{width:100%;height:auto;display:block}
.nombres{display:flex;flex-direction:column;gap:6px}
.nombres div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:baseline;padding:7px 10px;border-radius:9px;background:var(--fondo);border:1px solid var(--linea);font-size:12px;animation:feedIn .4s ease both}
.nombres div b{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--tinta-45)}
.nombres div span{font-family:var(--mono);font-size:11.5px;overflow-wrap:anywhere}
.nombres div.dup{border-color:var(--rojo-100);background:#FFF6F6}

/* mapa de Paraguay */
.mapa-py{position:relative;display:flex;flex-direction:column;gap:8px}
.mapa-py svg{width:100%;height:auto;display:block}
.mapa-py .pais-real{fill:#EDF1F9;stroke:#B9C5DC;stroke-width:2.2;stroke-linejoin:round}
.mapa-py .rio-real{fill:none;stroke:#B7D0E8;stroke-width:3;stroke-linecap:round}
.mapa-py .reg{fill:#A7B3CB;font-size:30px;letter-spacing:.16em;font-family:var(--disp);text-anchor:middle}
.mapa-py .ruta{fill:none;stroke:var(--rojo);stroke-width:3.4;stroke-dasharray:9 11;opacity:.55;animation:fluye 1.6s linear infinite}
.mapa-py .ruta-dib{fill:none;stroke:var(--azul);stroke-width:4;stroke-linecap:round;stroke-dasharray:var(--L);stroke-dashoffset:var(--L);animation:dibuja 1.6s cubic-bezier(.4,0,.2,1) forwards}
@keyframes dibuja{to{stroke-dashoffset:0}}
@keyframes fluye{to{stroke-dashoffset:-40}}
.mapa-py .bg-pt{fill:#4F6FD0;stroke:#fff;stroke-width:1.2;opacity:.85}
.mapa-py .pt{cursor:pointer}
.mapa-py .pt .halo{fill:var(--c);opacity:.14;transform-box:fill-box;transform-origin:center;animation:late 2.4s ease-out infinite}
@keyframes late{0%{transform:scale(.7);opacity:.35}100%{transform:scale(1.6);opacity:0}}
.mapa-py .pt .nucleo{fill:var(--c);stroke:#fff;stroke-width:4}
.mapa-py .pt--sel .nucleo{stroke:var(--tinta);stroke-width:7}
.mapa-py .pt--alerta .nucleo{stroke:var(--ambar);stroke-width:6;stroke-dasharray:7 6}
.mapa-py .et{font-family:var(--sans);font-size:30px;font-weight:700;fill:var(--tinta);paint-order:stroke;stroke:#fff;stroke-width:8px;stroke-linejoin:round}
.mapa-py .ev{font-family:var(--sans);font-size:24px;font-weight:600;fill:var(--tinta-45);paint-order:stroke;stroke:#fff;stroke-width:6px}
.mapa-py .camion{offset-rotate:auto}
.leyenda{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--tinta-45)}
.leyenda i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
@media(max-width:700px){.mapa-py .et{font-size:40px}.mapa-py .ev{font-size:30px}}

/* ilustraciones SVG del rubro */
.ilu{width:100%;height:auto;display:block;overflow:visible}
.ilu text{font-family:var(--sans)}
.cinta-mov{animation:cinta 3.2s linear infinite}
@keyframes cinta{from{transform:translateX(0)}to{transform:translateX(var(--d,-160px))}}
.gira{transform-box:fill-box;transform-origin:center;animation:gira 6s linear infinite}
.gira--rapido{animation-duration:2.4s}
@keyframes gira{to{transform:rotate(360deg)}}
.flota{animation:flota 3s ease-in-out infinite}
@keyframes flota{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.vapor{animation:vapor 3.4s ease-out infinite;opacity:0}
.vapor:nth-of-type(2){animation-delay:1.1s}.vapor:nth-of-type(3){animation-delay:2.2s}
@keyframes vapor{0%{opacity:0;transform:translateY(6px) scale(.8)}30%{opacity:.55}100%{opacity:0;transform:translateY(-26px) scale(1.4)}}
.burbuja{animation:burbuja 2.6s ease-in infinite;opacity:0}
@keyframes burbuja{0%{opacity:0;transform:translateY(0)}20%{opacity:.8}100%{opacity:0;transform:translateY(-70px)}}
.barrido-radar{transform-origin:150px 150px;animation:gira 4s linear infinite}
.blip{animation:blip 4s ease-out infinite;opacity:0}
@keyframes blip{0%,8%{opacity:0;transform:scale(.4)}12%{opacity:1;transform:scale(1.25)}40%{opacity:.85;transform:scale(1)}100%{opacity:0}}
.crece{transform-box:fill-box;transform-origin:bottom;animation:crece 1.1s cubic-bezier(.2,.8,.2,1) both}
@keyframes crece{from{transform:scaleY(0)}to{transform:none}}
.llenado{transform-box:fill-box;transform-origin:bottom;animation:llena 3.6s ease-in-out infinite alternate}
@keyframes llena{from{transform:scaleY(.15)}to{transform:scaleY(1)}}
.dibuja{stroke-dasharray:var(--L,600);stroke-dashoffset:var(--L,600);animation:dibuja 1.8s ease forwards}
.late-s{transform-box:fill-box;transform-origin:center;animation:lateS 1.8s ease-in-out infinite}
@keyframes lateS{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.parpadea{animation:parpadea 1.4s steps(2) infinite}
@keyframes parpadea{50%{opacity:.25}}
.viaja{offset-rotate:0deg;animation:viaja var(--t,6s) linear infinite}
@keyframes viaja{from{offset-distance:0%}to{offset-distance:100%}}
.ilu-card{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.ilu-pie{font-size:11.5px;color:var(--tinta-45);line-height:1.45}

/* hitos */
.hitos{position:relative;padding-left:22px}
.hitos::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:linear-gradient(180deg,var(--rojo),var(--amarillo),var(--azul))}
.hito{position:relative;padding:0 0 12px 10px;font-size:12.5px;line-height:1.45}
.hito::before{content:"";position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:#fff;border:3px solid var(--rojo)}
.hito b{font-family:var(--disp);font-size:17px;color:var(--rojo-900);margin-right:6px}

/* cita */
.cita{margin:0;padding:12px 16px;border-left:4px solid var(--amarillo-600);background:var(--fondo);border-radius:0 10px 10px 0;font-size:14px;line-height:1.55;font-style:italic;color:var(--tinta)}

/* propuesta */
.plataforma{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.plataforma>div{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:12px;display:flex;gap:10px;align-items:flex-start;min-width:0}
.plataforma .ic{width:30px;height:30px;border-radius:8px;background:rgba(255,212,0,.16);color:var(--amarillo);display:grid;place-items:center;flex:0 0 30px}
.plataforma .ic svg{width:16px;height:16px}
.plataforma b{display:block;font-size:12.5px;color:#fff}
.plataforma span{font-size:11px;color:#B7C2E0;line-height:1.4}
.pista{position:relative;display:grid;grid-template-columns:repeat(3,1fr);margin:6px 0 18px}
.pista::before{content:"";position:absolute;left:4%;right:4%;top:19px;height:6px;border-radius:99px;background:linear-gradient(90deg,var(--rojo) 0 33%,var(--amarillo-600) 33% 66%,var(--azul) 66%)}
.pista div{position:relative;text-align:center;padding-top:44px;font-size:11.5px;color:var(--tinta-45)}
.pista div::before{content:attr(data-n);position:absolute;top:2px;left:50%;transform:translateX(-50%);width:40px;height:40px;border-radius:50%;background:#fff;border:4px solid var(--c);display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:18px;color:var(--tinta)}
.pista b{display:block;font-family:var(--disp);font-size:19px;text-transform:uppercase;color:var(--tinta)}
.pista__bola{position:absolute;top:13px;width:18px;height:18px;border-radius:50%;background:var(--negro);box-shadow:0 0 0 4px #fff,0 4px 10px rgba(0,0,0,.25);animation:pista 7s ease-in-out infinite;z-index:2}
@keyframes pista{0%{left:4%}45%{left:48%}90%,100%{left:92%}}
.fases{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px}
.fase{border:1px solid var(--linea);border-radius:18px;background:var(--papel);box-shadow:var(--sombra-1);display:flex;flex-direction:column;overflow:hidden;min-width:0;animation:cardIn .5s ease both}
.fase__cab{padding:16px 18px 12px;border-top:6px solid var(--c);display:flex;align-items:flex-start;gap:12px}
.fase__cab .n{width:44px;height:44px;border-radius:12px;background:var(--c);color:var(--cn,#fff);font-family:var(--disp);font-weight:800;font-size:22px;display:grid;place-items:center;flex:0 0 44px}
.fase__cab h3{margin:0;font-family:var(--disp);font-size:25px;text-transform:uppercase;line-height:1}
.fase__cab span{display:block;font-size:11.5px;color:var(--tinta-45);margin-top:3px}
.fase__sis{padding:0 14px;display:flex;flex-direction:column;gap:8px}
.sis{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:var(--fondo);border:1px solid var(--linea);min-width:0}
.sis .ic{width:32px;height:32px;border-radius:9px;background:#fff;border:1px solid var(--linea);display:grid;place-items:center;color:var(--azul);flex:0 0 32px}
.sis .ic svg{width:17px;height:17px}
.sis b{display:block;font-size:12.5px;line-height:1.25}
.sis span{display:block;font-size:11px;color:var(--tinta-45);line-height:1.4;margin-top:2px}
.precios{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px 0;margin:12px 14px;border-top:1px dashed var(--linea);border-bottom:1px dashed var(--linea)}
.pblo{text-align:center;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;padding:0 6px}
.pblo small{font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--tinta-45);font-weight:700}
.pblo b{font-family:var(--disp);font-size:30px;font-weight:700;line-height:1.05;color:var(--tinta);font-variant-numeric:tabular-nums;display:block}
.pblo span{font-size:12px;color:var(--tinta-45);display:block}
.precios--junto{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));border:0;padding:0;margin:0;gap:14px}
.precios--junto .pblo{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);border-radius:14px;padding:18px 12px}
.precios--junto .pblo small,.precios--junto .pblo span{color:rgba(255,255,255,.88)}
.precios--junto .pblo b{color:#fff}
.fase__pie{margin-top:auto;padding:0 14px 14px}
.fase__rec{font-size:11.5px;line-height:1.45;padding:9px 11px;border-radius:10px;background:var(--fondo);border-left:3px solid var(--c);color:var(--tinta-70)}
.fase__rec b{color:var(--tinta)}
.fase__ent{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.fase__ent span{font-size:10.5px;font-weight:600;padding:4px 8px;border-radius:7px;background:#fff;border:1px solid var(--linea);color:var(--tinta-70)}

/* boot */
.boot{position:fixed;inset:0;z-index:95;background:radial-gradient(120% 90% at 50% 0%,#14306F,#0B1A3F 60%,#060E26);display:grid;place-items:center;opacity:0;transition:opacity .45s ease;padding:24px}
.boot.on{opacity:1}
.boot__box{max-width:780px;width:100%;text-align:center;color:#fff}
.boot__emb{width:min(250px,56vw);margin:0 auto 18px}
.boot__emb svg{width:100%;height:auto;display:block}
.boot__l{font-size:13.5px;color:rgba(255,255,255,.75);min-height:20px}
.boot__k{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 28px;margin:22px 0 18px}
.boot__k div{min-width:96px}
.boot__k b{display:block;font-family:var(--disp);font-size:38px;line-height:1;color:var(--amarillo);font-variant-numeric:tabular-nums}
.boot__k span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:rgba(255,255,255,.6);margin-top:4px}
.boot__barra{height:4px;border-radius:4px;background:rgba(255,255,255,.14);overflow:hidden;max-width:420px;margin:0 auto}
.boot__barra i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--rojo),var(--amarillo));animation:bootbar 3.7s linear forwards}
@keyframes bootbar{to{width:100%}}

/* asistente */
.as-fab{position:fixed;right:22px;bottom:22px;z-index:60;display:flex;align-items:center;gap:8px;padding:12px 18px 12px 14px;border-radius:999px;background:var(--negro);color:#fff;font-weight:700;font-size:13px;box-shadow:var(--sombra-3);transition:transform .2s,background .2s;animation:fabIn .5s ease 1s both}
.as-fab svg{width:18px;height:18px;color:var(--amarillo)}
.as-fab:hover,.as-fab.on{transform:translateY(-2px);background:var(--rojo)}
.as-fab:hover svg,.as-fab.on svg{color:#fff}
@keyframes fabIn{from{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:none}}
.as-panel{position:fixed;right:22px;bottom:80px;z-index:60;width:min(450px,calc(100vw - 44px));height:min(640px,calc(100vh - 110px));background:#fff;border-radius:18px;border:1px solid var(--linea);box-shadow:var(--sombra-3);display:flex;flex-direction:column;overflow:hidden;animation:panelIn .3s cubic-bezier(.2,.8,.2,1)}
@keyframes panelIn{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.as-cab{display:flex;align-items:center;gap:10px;padding:14px 16px;background:linear-gradient(150deg,#14306F,#0B1A3F);color:#fff}
.as-cab .emb{width:30px;flex:0 0 30px}.as-cab .emb svg{width:100%;height:auto;display:block}
.as-cab-t b{display:block;font-size:13.5px}.as-cab-t span{font-size:11px;color:#AEB9D8}
.as-cerrar{margin-left:auto;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:18px;line-height:1;display:grid;place-items:center}
.as-log{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--fondo)}
.as-msg{max-width:94%;padding:10px 12px;border-radius:14px;font-size:12.5px;line-height:1.5}
.as-msg p{margin:0 0 6px}.as-msg p:last-child{margin:0}
.as-msg--bot{align-self:flex-start;background:#fff;border:1px solid var(--linea);border-bottom-left-radius:4px}
.as-msg--yo{align-self:flex-end;background:var(--azul);color:#fff;border-bottom-right-radius:4px}
.as-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.as-chip{font-size:11.5px;padding:6px 10px;border-radius:999px;border:1px solid var(--linea-fuerte);background:#fff;color:var(--tinta-70);text-align:left;transition:all .15s}
.as-chip:hover{border-color:var(--rojo);color:var(--rojo);background:var(--rojo-50)}
.as-tabla{overflow-x:auto;margin-top:8px;border:1px solid var(--linea);border-radius:10px}
.as-tabla table{width:100%;border-collapse:collapse;font-size:11.5px}
.as-tabla th{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--tinta-45);text-align:left;padding:7px 9px;background:var(--fondo);border-bottom:1px solid var(--linea);white-space:nowrap}
.as-tabla td{padding:7px 9px;border-bottom:1px solid var(--linea);vertical-align:top}
.as-tabla tr:last-child td{border-bottom:0}
.as-tabla td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.as-link{display:inline-block;margin-top:8px;font-size:12px;font-weight:700;color:var(--rojo)}
.as-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--linea);background:#fff}
.as-form input{flex:1;min-width:0;font-family:inherit;font-size:13px;padding:10px 12px;border-radius:10px;border:1px solid var(--linea-fuerte);outline:none}
.as-form input:focus{border-color:var(--azul);box-shadow:0 0 0 3px rgba(22,53,127,.12)}
.as-send{background:var(--rojo);color:#fff;font-weight:700;font-size:12.5px;padding:0 16px;border-radius:10px}
.as-dots{display:inline-flex;gap:4px;padding:4px 2px}.as-dots i{width:6px;height:6px;border-radius:50%;background:var(--tinta-25);animation:dot 1s ease-in-out infinite}.as-dots i:nth-child(2){animation-delay:.15s}.as-dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,100%{opacity:.3;transform:none}50%{opacity:1;transform:translateY(-3px)}}

/* recorrido */
.tour-velo{position:fixed;inset:0;z-index:80;background:rgba(11,26,63,.72);opacity:0;pointer-events:none;transition:opacity .3s}
.tour-velo.on{opacity:1;pointer-events:auto}
.tour-spot{position:fixed;z-index:81;border-radius:16px;box-shadow:0 0 0 9999px rgba(11,26,63,.72),0 0 0 3px var(--amarillo);pointer-events:none;opacity:0;transition:top .35s,left .35s,width .35s,height .35s,opacity .3s}
.tour-card{position:fixed;z-index:82;top:-9999px;width:380px;max-width:calc(100vw - 32px);background:#fff;border-radius:16px;box-shadow:var(--sombra-3);padding:16px 18px;animation:panelIn .35s cubic-bezier(.2,.8,.2,1)}
.tour-card--centro{top:50%!important;left:50%!important;transform:translate(-50%,-50%)}
.tour-card__cab{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.tour-card__n{font-size:10.5px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--rojo)}
.tour-card__x{width:26px;height:26px;border-radius:50%;background:var(--fondo-2);color:var(--tinta-70);font-size:17px;line-height:1;display:grid;place-items:center}
.tour-card h4{margin:0 0 6px;font-family:var(--disp);font-size:24px;text-transform:uppercase;line-height:1.05}
.tour-card p{margin:0;font-size:13px;line-height:1.55;color:var(--tinta-70)}
.tour-card__barra{height:5px;border-radius:99px;background:var(--fondo-2);margin:14px 0 12px;overflow:hidden}
.tour-card__barra i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--rojo),var(--amarillo));transition:width .4s}
.tour-card__btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.tour-invita{position:fixed;inset:0;z-index:85;background:rgba(11,26,63,.62);display:grid;place-items:center;padding:16px;animation:lienzoIn .3s ease}
.tour-invita__box{background:#fff;border-radius:20px;padding:26px 26px 22px;width:min(450px,100%);text-align:center;box-shadow:var(--sombra-3);animation:panelIn .4s cubic-bezier(.2,.8,.2,1)}
.tour-invita__emb{width:150px;margin:0 auto 10px}.tour-invita__emb svg{width:100%;height:auto;display:block}
.tour-invita h3{margin:0 0 6px;font-family:var(--disp);font-size:30px;text-transform:uppercase;line-height:1}
.tour-invita p{margin:0 0 16px;font-size:13px;line-height:1.55;color:var(--tinta-70)}
.tour-invita .tour-card__btns{justify-content:center}

/* ficha de producto */
.ficha{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:20px;align-items:start}
.ficha__img{background:#fff;border:1px solid var(--linea);border-radius:14px;padding:12px;position:relative}
.ficha__img img{width:100%;height:200px;object-fit:contain;display:block}
.ficha__img .sello{position:absolute;right:-8px;top:-8px}
.ficha-t{font-family:var(--disp);font-size:30px;font-weight:700;margin:0 0 4px;line-height:1.05;text-transform:uppercase}

/* responsive */
@media (max-width:1400px){.kpi__val{font-size:31px}.hub-cab h2{font-size:40px}}
@media (max-width:1180px){
  .g-4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-3{grid-template-columns:repeat(2,minmax(0,1fr))}.g-21,.g-12{grid-template-columns:minmax(0,1fr)}
  .hoy{grid-template-columns:minmax(0,1fr)}.plataforma{grid-template-columns:repeat(2,minmax(0,1fr))}.fases{grid-template-columns:minmax(0,1fr)}.pista{display:none}
  .flujo{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:980px){.simx{grid-template-columns:minmax(0,1fr)}.simx__big{font-size:46px}}
@media (max-width:820px){
  .side{position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .25s;box-shadow:var(--sombra-3)}
  .side.abierto{transform:none}
  .menu-btn{display:grid}
  .top{padding:11px 14px}.top__der{display:none}.top__sub{max-width:none}
  .g-4,.g-3,.g-2{grid-template-columns:minmax(0,1fr)}
  .lienzo{padding:16px}
  .hub-cab h2{font-size:31px}.hub-cab .der{margin-left:0}
  .hoy__kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.hoy__k b{font-size:26px}.hoy__k{padding:12px}
  .kpi__val{font-size:28px}
  .plataforma{grid-template-columns:minmax(0,1fr)}
  .mosaico{grid-template-columns:minmax(0,1fr)}
  .flujo{grid-template-columns:minmax(0,1fr)}.paso{opacity:1}
  .escena{flex-direction:column;align-items:flex-start}.escena__ilu{flex-basis:auto;width:150px}
  .ficha{grid-template-columns:minmax(0,1fr)}
  .hallazgo{grid-template-columns:40px minmax(0,1fr);padding:14px}.hallazgo .num{font-size:30px}
  .mod h3{font-size:23px}
  .tour-card{width:calc(100vw - 32px)}
}
@media (max-width:560px){.precios{grid-template-columns:minmax(0,1fr)}.simx__big{font-size:38px}.simx__ctr,.simx__res{padding:15px}.barra-fila .lb{flex-basis:96px}.barra-fila .v{flex-basis:70px}.gate__t{font-size:26px}.pin__cajas input{width:52px;height:62px}}
@media (max-height:820px){.nav__it{padding:6px 10px;font-size:12.5px}.nav__rot{padding:10px 10px 4px}.side__pie{padding:8px 18px 10px}}

/* movimiento reducido */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.sin-anim .card,.sin-anim .fase,.sin-anim .mod,.sin-anim .feed__it,.sin-anim .gond-it{animation:none!important}
.sin-anim .barra i{transition:none!important}
.card--ot .ilu-pie{color:#D8CDB0}.card--negro .ilu-pie,.card--rojo .ilu-pie{color:rgba(255,255,255,.85)}
.pblo b span{font-size:inherit;color:inherit;display:inline;font-weight:inherit}
