@font-face{
  font-family:'Inter var';
  src:url('fonts/InterVariable.woff2') format('woff2');
  font-weight:100 900; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Plex Mono';
  src:url('fonts/PlexMono-400.woff2') format('woff2');
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Plex Mono';
  src:url('fonts/PlexMono-500.woff2') format('woff2');
  font-weight:500; font-style:normal; font-display:swap;
}
:root{
  --paper:#F5F7FA; --card:#FFFFFF; --card-2:#F8FAFC; --panel:#FFFFFF;
  --ink:#172033; --muted:#667085; --faint:#8A94A6;
  --linea:#E2E7EE; --linea-fuerte:#CBD4DF; --divisor:#EDF0F4;
  --linea-caja:#13213D;
  --acc:#1E56C9; --acc-soft:#E8EFFC; --acc-line:#B7CCF3; --acc-hover:#1748B5;
  --ok:#177A4C; --ok-soft:#E5F3EB; --ok-line:#A6D5BB;
  --warn:#96570A; --warn-soft:#FBF1DC; --warn-line:#E3BE7E;
  --crit:#B82942; --crit-soft:#FBE9EC; --crit-line:#E5A5B0;
  --ia:#6D34C4; --ia-soft:#F1EBFB; --ia-line:#CBB2EE;
  --neu-soft:#EEF1F5;
  --nav:#13213D; --nav-2:#1B2C4F; --nav-3:#22355C;
  --nav-ink:#B9C3D6; --nav-faint:#75839F; --nav-linea:#24335A;
  --nav-acc:#4C7DE8;
  --area-inicio:#5B8DEF;
  --area-crm:#2FB3A4;
  --area-erp:#E0A33E;
  --area-tecnico:#56BEDE;
  --area-academia:#5FB868;
  --area-admin:#94A4C0;
  --area-portal:#E08A6B;
  --line:var(--linea); --line-strong:var(--linea-fuerte);
  --accent:var(--acc); --fondo2:var(--card-2);
  --crit-fuerte:#8F1D2C;
  --med:#B8860B; --med-soft:#FAF3DE;
  --st-crit:#B42336; --st-ok:#18794E; --st-warn:#9A5B08;
  --st-info:#2459C4; --st-neu:#526174;
  --sombra:0 1px 2px rgba(23,32,51,.05);
  --sombra-md:0 2px 6px rgba(23,32,51,.06), 0 8px 20px rgba(23,32,51,.06);
  --sombra-lg:0 12px 36px rgba(23,32,51,.16);
  --sombra-suave:0 8px 22px rgba(15,35,70,.07);
  --sombra-suave-hover:0 10px 26px rgba(15,35,70,.10);
  --r-sm:8px; --r:10px; --r-lg:12px; --r-xl:14px; --r-full:999px;
  --gap:16px;
  --ancho:min(1560px, 100%);
  --menu:260px;
  --h:56px;
  --fh:'Inter var','Segoe UI Variable Text','Segoe UI',-apple-system,'Helvetica Neue',Arial,sans-serif;
  --fm:'Plex Mono','Cascadia Code',ui-monospace,'SF Mono',Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#0C111B; --card:#151C2A; --card-2:#111826; --panel:#151C2A;
  --ink:#E7ECF4; --muted:#98A4B8; --faint:#68758C;
  --linea:#232D40; --linea-fuerte:#324159; --divisor:#1B2434;
  --linea-caja:#3E4E6E;
  --acc:#5B92F5; --acc-soft:#16233E; --acc-line:#2E4C82; --acc-hover:#7CA9FF;
  --ok:#46C287; --ok-soft:#10271C; --ok-line:#2C5A42;
  --warn:#F0B45C; --warn-soft:#2A2110; --warn-line:#6B5017;
  --crit:#F0788C; --crit-soft:#2C141A; --crit-line:#5E2831;
  --ia:#B79AE8; --ia-soft:#1E1533; --ia-line:#463270;
  --neu-soft:#1A2333;
  --nav:#0D1526; --nav-2:#16223C; --nav-3:#1D2C4C;
  --nav-ink:#AEB9CD; --nav-faint:#66748F; --nav-linea:#1D2841;
  --nav-acc:#5B92F5;
  --crit-fuerte:#C24357;
  --med:#DDB44A; --med-soft:#2A2410;
  --st-crit:#C13247; --st-ok:#1D8457; --st-warn:#A6650E;
  --st-info:#3568D4; --st-neu:#5D6D82;
  --sombra:0 1px 2px rgba(0,0,0,.32);
  --sombra-md:0 2px 6px rgba(0,0,0,.34), 0 8px 20px rgba(0,0,0,.30);
  --sombra-lg:0 12px 36px rgba(0,0,0,.55);
  --sombra-suave:0 8px 22px rgba(0,0,0,.32);
  --sombra-suave-hover:0 10px 26px rgba(0,0,0,.38);
}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  padding-bottom:env(safe-area-inset-bottom, 0px);
  font-family:var(--fh); font-size:14px; line-height:1.5;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
:focus-visible{outline:2px solid var(--acc); outline-offset:2px; border-radius:4px}
.ic{width:18px; height:18px; flex-shrink:0; vertical-align:-3.5px}
.ic-16{width:16px; height:16px; vertical-align:-3px}
.ic-20{width:20px; height:20px; vertical-align:-4px}
header{
  background:var(--nav); color:#fff;
  min-height:calc(64px + env(safe-area-inset-top, 0px));
  padding:env(safe-area-inset-top, 0px) 20px 0;
  display:flex; align-items:center; gap:12px;
  position:sticky; top:0; z-index:40;
  border-bottom:1px solid var(--nav-linea);
}
header .mk{display:none; height:28px; flex-shrink:0}
header .mk img{height:100%; width:auto; display:block}
header b{display:none}
header .sp{display:none}
#proy{
  font-family:var(--fh); font-size:12.5px; color:#fff; font-weight:600;
  background:var(--nav-2); border:1px solid var(--nav-linea);
  border-radius:var(--r-sm); padding:6px 10px;
  width:auto; max-width:none; flex:0 0 auto;
  cursor:pointer; transition:border-color .12s;
}
#proy:hover:not(:disabled){border-color:var(--nav-acc)}
#proy:disabled{cursor:default; opacity:1; color:var(--nav-ink); background:transparent; border-color:transparent}
#proy option{background:var(--nav); color:#fff}
#perfil{
  margin-left:auto; display:flex; align-items:center; gap:9px;
  background:transparent; border:1px solid transparent; border-radius:var(--r-sm);
  padding:5px 8px 5px 5px; cursor:pointer; font-family:inherit; color:#fff;
  transition:background .15s, border-color .15s; max-width:min(38vw, 240px);
}
#perfil:hover{background:var(--nav-2); border-color:var(--nav-linea)}
#perfil .perfil-chev{flex-shrink:0; color:#fff}
#quien{
  font-size:12.8px; color:#fff; font-weight:600;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0;
}
#menu-perfil{
  position:fixed; top:calc(var(--h) + 6px); right:14px; z-index:55;
  width:min(320px, calc(100vw - 28px));
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r-lg);
  box-shadow:var(--sombra-md); padding:6px; display:none;
}
#menu-perfil.on{display:block}
.mp-cab{
  display:flex; align-items:center; gap:11px; padding:10px 10px 12px;
  border-bottom:1px solid var(--divisor); margin-bottom:6px;
}
.mp-datos{min-width:0}
.mp-datos>b{font-size:13.5px; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mp-datos .tsub{white-space:normal; overflow-wrap:anywhere; line-height:1.45}
.mp-item{
  display:block; width:100%; text-align:left; background:transparent; border:0;
  border-radius:var(--r-sm); padding:9px 10px; font-size:13px; color:var(--ink);
  cursor:pointer; font-family:inherit; transition:background .15s;
}
.mp-item:hover{background:var(--card-2)}
.mp-salir{color:var(--crit)}
header .rl{
  font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  color:#fff; margin-right:4px; font-weight:600;
}
header select{
  background:var(--nav-2); color:#fff; border:1px solid var(--nav-linea);
  border-radius:var(--r-sm); padding:6px 10px; font-size:12.5px; font-family:inherit;
  max-width:210px;
}
header select:hover{border-color:var(--nav-acc)}
header select option{background:var(--nav); color:#fff}
header select#usuario{flex:0 1 auto; min-width:0}
header .btn.gh{color:#fff}
header .btn.gh:hover{background:var(--nav-2); color:#fff}
.menu-btn{
  display:none; background:transparent; border:1px solid var(--nav-linea); color:#fff;
  border-radius:var(--r-sm); width:36px; height:34px;
  cursor:pointer; flex-shrink:0; align-items:center; justify-content:center;
}
.menu-btn:hover{background:var(--nav-2)}
.app{display:flex; min-height:calc(100vh - var(--h))}
.sidebar{
  width:var(--menu); background:var(--nav); color:var(--nav-ink);
  padding:0 0 30px; flex-shrink:0;
  position:sticky; top:var(--h); height:calc(100vh - var(--h)); overflow-y:auto;
  scrollbar-width:thin; scrollbar-color:var(--nav-3) transparent;
}
main{
  flex:1; min-width:0;
  width:var(--ancho); margin:0 auto;
  padding:clamp(16px, 2.5vw, 30px) clamp(14px, 2.5vw, 32px) 80px;
}
.marca{
  display:flex; align-items:center; gap:10px; padding:19px 20px 17px;
  border-bottom:1px solid var(--nav-linea); margin-bottom:8px;
}
.marca img{display:block}
.marca .wm{height:40px; width:auto}
.marca .logo-cuadro{display:none; width:34px; height:34px; border-radius:6px}
.navsec{
  font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:#fff;
  font-weight:650; padding:20px 20px 7px;
  display:flex; align-items:center; gap:8px;
}
.navsec::before{
  content:''; width:3px; height:13px; border-radius:2px; flex-shrink:0;
  background:var(--area, var(--nav-acc));
}
.navsec{margin-top:8px; border-top:1px solid rgba(255,255,255,.13)}
.navsec.plegable{
  cursor:pointer; user-select:none;
  padding:19px 20px 8px; transition:color .12s;
}
.navsec.plegable:hover{color:#fff}
.navsec .chev{
  width:13px; height:13px; flex-shrink:0; margin-left:auto;
  transition:transform .15s; transform:rotate(-90deg);
}
.navsec.abierto .chev{transform:none}
.navitem{
  margin:1px 10px; padding:8px 10px 8px 9px; font-size:13px; cursor:pointer;
  display:flex; align-items:center; gap:11px; border-radius:9px;
  transition:background .15s;
  color:#fff;
  border-left:3px solid transparent;
}
.navitem:hover{background:var(--nav-2)}
.navitem.active{
  background:var(--nav-3); font-weight:600;
  border-left-color:var(--area, var(--nav-acc));
}
.navitem .ni{
  width:20px; display:flex; align-items:center; justify-content:center; flex-shrink:0;
  color:#fff;
}
.navitem:hover .ni,.navitem.active .ni{color:var(--area, var(--nav-acc))}
.navitem .ni svg{width:17px; height:17px}
.navfoot{
  font-size:11px; color:#fff; opacity:.8; padding:16px 18px 0; line-height:1.55;
  border-top:1px solid var(--nav-linea); margin-top:14px;
}
h1{font-size:clamp(21px, 2.6vw, 29px); margin:0 0 5px; letter-spacing:-.018em; font-weight:700}
.q{color:var(--muted); font-size:14px; margin-bottom:24px; max-width:72ch}
.kpis{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));
  gap:var(--gap); margin-bottom:22px;
}
.kpi{
  background:var(--card); border:1px solid var(--linea-caja); border-radius:var(--r);
  padding:14px 16px; position:relative;
}
.kl{
  font-size:10.5px; letter-spacing:.07em; text-transform:uppercase;
  color:var(--muted); font-weight:600;
  display:flex; align-items:center; gap:6px;
}
.kpi.ok .kl::before,.kpi.warn .kl::before,.kpi.crit .kl::before{
  content:''; width:7px; height:7px; border-radius:var(--r-full); flex-shrink:0;
}
.kpi.ok .kl::before{background:var(--ok)}
.kpi.warn .kl::before{background:var(--warn)}
.kpi.crit .kl::before{background:var(--crit)}
.kpi.crit .kv{color:var(--crit)}
.kv{
  font-size:clamp(22px, 2.2vw, 27px); font-weight:700; margin:7px 0 3px;
  font-variant-numeric:tabular-nums; letter-spacing:-.02em; line-height:1.1;
}
.kd{font-size:11.8px; color:var(--muted); line-height:1.45}
.kpi[data-expl]{cursor:pointer; transition:border-color .12s, box-shadow .12s}
.kpi[data-expl]:hover{border-color:var(--acc-line); box-shadow:var(--sombra)}
.kpi[data-expl]::after{
  content:'?'; position:absolute; top:11px; right:12px;
  width:17px; height:17px; border-radius:var(--r-full);
  background:transparent; border:1px solid var(--linea-fuerte);
  color:var(--faint); font-size:10.5px; font-weight:600;
  display:grid; place-items:center;
}
.kpi[data-expl]:hover::after{background:var(--acc); border-color:var(--acc); color:#fff}
.bar{height:5px; background:var(--divisor); border-radius:var(--r-full); margin-top:9px; overflow:hidden}
.bar i{display:block; height:100%; border-radius:var(--r-full); background:var(--acc)}
.panel{
  background:var(--panel); border:1px solid var(--linea-caja); border-radius:var(--r);
  margin-bottom:var(--gap); overflow:hidden;
}
.panel-h{
  padding:12px 16px; border-bottom:1px solid var(--divisor);
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
}
.panel-h h3{margin:0; font-size:13.5px; font-weight:600; letter-spacing:-.005em}
.panel-b{padding:16px}
.tabla-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch}
table{width:100%; border-collapse:collapse; min-width:520px}
.panel-b>.tabla-scroll>table{min-width:0}
th{
  text-align:left; font-size:10px; letter-spacing:.07em; text-transform:uppercase;
  color:var(--muted); padding:8px 12px; border-bottom:1px solid var(--linea);
  font-weight:600; white-space:nowrap; background:var(--card-2);
}
td{padding:10px 12px; border-bottom:1px solid var(--divisor); vertical-align:top; font-size:13.2px}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background .1s}
tbody tr:hover{background:var(--card-2)}
.num{text-align:right; font-variant-numeric:tabular-nums}
.tprim{font-weight:600; line-height:1.35}
.tsub{font-size:11.8px; color:var(--muted); margin-top:2px; line-height:1.45; overflow-wrap:anywhere}
@media (min-width:621px){
  td .tsub, td.tsub{overflow-wrap:break-word; word-break:normal}
}
body.compacta td{padding:6px 10px; font-size:12.6px}
body.compacta th{padding:5px 10px}
body.compacta .tsub{margin-top:1px}
@media (max-width:767px){
  #densidad{display:none !important}
  body.compacta td{padding:10px 12px; font-size:13.2px}
  body.compacta th{padding:8px 12px}
}
.pill{
  display:inline-flex; align-items:center; gap:6px;
  padding:2px 9px; border-radius:6px;
  font-size:11px; font-weight:600; white-space:nowrap; line-height:1.6;
}
.pill::before{content:''; width:6px; height:6px; border-radius:var(--r-full); flex-shrink:0}
.p-ok{background:var(--st-ok); color:#fff}
.p-warn{background:var(--st-warn); color:#fff}
.p-crit{background:var(--st-crit); color:#fff}
.p-acc{background:var(--st-info); color:#fff}
.p-gris{background:var(--st-neu); color:#fff}
.p-ok::before,.p-warn::before,.p-crit::before,.p-acc::before,.p-gris::before{
  background:rgba(255,255,255,.75);
}
.p-neu{background:var(--neu-soft); color:var(--muted); font-weight:550}
.p-neu::before{background:var(--faint)}
.p-ia{background:var(--ia-soft); color:var(--ia)} .p-ia::before{background:var(--ia)}
.pill.n::before,.pill.mono::before{display:none}
.pill.mono{font-family:var(--fm); font-size:10.5px; font-weight:500}
.pill .tsub{color:inherit; font-size:inherit; font-weight:500; margin-top:0; line-height:inherit}
.btn{
  background:var(--acc); color:#fff; border:1px solid transparent; border-radius:var(--r-sm);
  padding:7px 14px; font-size:12.8px; font-weight:550; cursor:pointer;
  font-family:inherit; line-height:1.4; transition:background .12s;
  white-space:nowrap; display:inline-flex; align-items:center; gap:7px; justify-content:center;
}
.btn:hover{background:var(--acc-hover)}
.btn:active{transform:translateY(1px)}
.btn.sec{background:var(--card); color:var(--ink); border-color:var(--linea-fuerte)}
.btn.sec:hover{background:var(--card-2); border-color:var(--faint)}
.btn.gh{background:transparent; color:var(--acc); border-color:transparent; padding:6px 8px}
.btn.gh:hover{background:var(--acc-soft)}
.btn:disabled{opacity:.45; cursor:not-allowed}
.seg{
  display:inline-flex; border:1px solid var(--linea-fuerte);
  border-radius:var(--r-sm); overflow:hidden; background:var(--card);
}
@media (max-width:600px){ .seg{display:flex; flex-wrap:wrap; max-width:100%} }
.seg{flex-wrap:wrap; max-width:100%}
.seg button{
  background:transparent; border:0; border-left:1px solid var(--divisor);
  padding:5px 11px; font-size:12px; font-weight:550; color:var(--muted);
  cursor:pointer; font-family:inherit; white-space:nowrap; line-height:1.4;
}
.seg button:first-child{border-left:0}
.seg button:hover{color:var(--ink); background:var(--card-2)}
.seg button.on{background:var(--acc); color:#fff}
.aviso{
  border-radius:var(--r-sm); padding:12px 15px; margin-bottom:var(--gap);
  font-size:13px; line-height:1.6; display:flex; gap:12px; align-items:flex-start;
  background:var(--card); border:1px solid var(--linea);
  border-left-width:3px; border-left-color:var(--linea-fuerte);
}
.aviso>div:first-child{font-size:16px; line-height:1.3; flex-shrink:0}
.aviso.crit{border-left-color:var(--crit); background:var(--card)}
.aviso.crit>div:first-child{color:var(--crit)}
.aviso.warn{border-left-color:var(--warn)}
.aviso.warn>div:first-child{color:var(--warn)}
.aviso.ok{border-left-color:var(--ok)}
.aviso.ok>div:first-child{color:var(--ok)}
.aviso b{font-weight:600}
.aviso>div>b:first-child{display:block; margin-bottom:2px; font-size:13.3px}
.nota{
  font-size:12.3px; color:var(--muted); line-height:1.65;
  border-left:2px solid var(--acc-line); padding:8px 14px;
  margin-top:14px;
}
.nota b{color:var(--ink); font-weight:600}
.mono{font-family:var(--fm); font-size:11.5px; color:var(--faint)}
.mini-foto{
  width:44px; height:44px; object-fit:cover; border-radius:6px;
  border:1px solid var(--linea-fuerte); flex-shrink:0; background:var(--card-2);
}
.fila{display:flex; gap:9px; align-items:center; flex-wrap:wrap}
.vacio{text-align:center; padding:40px 22px; color:var(--muted); font-size:13.3px}
.row2{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--gap)}
input[type=number],input[type=text],input[type=password],
input[type=email],input[type=tel],input[type=url],
input[type=date],input[type=time],input[type=datetime-local],input[type=month],
select,textarea{
  background:var(--card); border:1px solid var(--linea-fuerte); border-radius:var(--r-sm);
  padding:7px 11px; font-size:13px; color:var(--ink); font-family:inherit; width:130px;
  transition:border-color .12s, box-shadow .12s;
}
input[type=search]{
  background:var(--card); border:1px solid var(--linea-fuerte); border-radius:var(--r-sm);
  padding:7px 11px; font-size:13px; color:var(--ink); font-family:inherit;
  transition:border-color .12s, box-shadow .12s;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--acc); box-shadow:0 0 0 3px var(--acc-soft); outline:none;
}
input::placeholder,textarea::placeholder{color:var(--faint)}
select{width:auto; min-width:130px; max-width:100%}
label{font-size:11.5px; color:var(--muted); font-weight:600}
a{color:var(--acc)}
.skel{display:grid; gap:var(--gap)}
.skel i{
  display:block; border-radius:var(--r); background:var(--card);
  border:1px solid var(--linea); position:relative; overflow:hidden;
}
.skel i::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent, var(--card-2), transparent);
  animation:skel 1.2s infinite;
}
@keyframes skel{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.skel .s-kpis{height:88px}
.skel .s-panel{height:220px}
#toast{
  position:fixed; bottom:22px; left:50%; transform:translate(-50%, 8px);
  background:var(--nav); color:#fff; font-size:12.8px; font-weight:550;
  padding:9px 10px 9px 16px; border-radius:var(--r-sm); box-shadow:var(--sombra-lg);
  opacity:0; pointer-events:none; transition:opacity .18s, transform .18s;
  z-index:90; display:flex; align-items:center; gap:8px; max-width:min(520px, 92vw);
}
#toast.on{opacity:1; transform:translate(-50%, 0); pointer-events:auto}
#toast.arriba{bottom:auto; top:max(14px, env(safe-area-inset-top)); transform:translate(-50%, -8px)}
#toast.arriba.on{transform:translate(-50%, 0)}
#toast.on{pointer-events:none}
#toast.on .toast-x{pointer-events:auto}
#toast .ic{color:#fff; flex:none}
#toast.t-ok .ic{color:var(--ok)}
#toast.t-error{background:var(--crit-fuerte); border:1px solid var(--crit-line)}
#toast .toast-x{background:none; border:0; color:inherit; opacity:.75; cursor:pointer;
  font-size:13px; padding:2px 6px; margin-left:4px; flex:none}
#toast .toast-x:hover{opacity:1}
.cadena{display:flex; gap:6px; overflow-x:auto; padding-bottom:4px}
.cd{
  flex:1; min-width:104px; display:flex; flex-direction:column; align-items:center; gap:6px;
  text-align:center; position:relative; padding-top:2px;
}
.cd::after{
  content:''; position:absolute; top:14px; left:calc(50% + 18px); right:calc(-50% + 18px);
  height:2px; background:var(--linea);
}
.cd:last-child::after{display:none}
.cd-ok::after{background:var(--ok)}
.cd-n{
  width:28px; height:28px; border-radius:var(--r-full); display:grid; place-items:center;
  font-weight:650; font-size:12px; background:var(--card-2); color:var(--faint);
  border:1px solid var(--linea-fuerte); position:relative; z-index:1;
}
.cd-ok .cd-n{background:var(--ok); color:#fff; border-color:var(--ok)}
.cd-hoy .cd-n{background:var(--acc); color:#fff; border-color:var(--acc)}
.cd-t{font-size:10.5px; line-height:1.35; color:var(--faint)}
.cd-ok .cd-t{color:var(--ink)}
.cd-hoy .cd-t{color:var(--acc); font-weight:650}
.cd-bloq .cd-n{background:var(--st-crit); color:#fff; border-color:var(--st-crit)}
.cd-bloq .cd-t{color:var(--crit); font-weight:650}
body.en-entrada header{display:none}
#entrada{
  display:grid; grid-template-columns:55% 45%;
  min-height:100vh; gap:0;
}
.ent-marca{
  background:var(--nav); color:#fff; display:flex; align-items:center;
  padding:clamp(28px, 5.5vw, 80px); overflow:hidden;
}
.ent-marca-cuerpo{max-width:640px; width:100%}
.ent-logo{display:flex; align-items:center; gap:13px; margin-bottom:clamp(28px, 5vh, 52px)}
.ent-logo img{height:76px; width:auto}
.ent-logo b{font-size:21px; letter-spacing:.16em; font-weight:650; color:#fff}
.ent-tit{
  font-size:clamp(28px, 3vw, 42px); line-height:1.1; letter-spacing:-.024em;
  margin:0 0 16px; font-weight:700; max-width:22ch; color:#fff; text-wrap:balance;
}
.ent-sub{color:var(--nav-ink); font-size:15.5px; line-height:1.6; margin:0 0 26px; max-width:44ch}
.ent-lista{
  list-style:none; margin:0; padding:0;
  display:flex; gap:22px; flex-wrap:wrap;
}
.ent-lista li{display:flex; gap:8px; align-items:center; font-size:13.2px; color:var(--nav-ink)}
.ent-lista li>span{flex-shrink:0; color:var(--nav-acc); display:flex}
.ent-lista li>span svg{width:16px; height:16px}
.ent-lista b{font-weight:600; color:#fff}
.ent-preview{
  margin:clamp(26px, 5vh, 44px) 0 0; border-radius:12px; overflow:hidden;
  border:1px solid rgba(255,255,255,.14); background:var(--nav-2);
  box-shadow:0 24px 60px rgba(0,0,0,.4);
}
.ent-preview-marco{
  height:26px; display:flex; align-items:center; gap:6px; padding:0 12px;
  background:rgba(255,255,255,.06); border-bottom:1px solid rgba(255,255,255,.08);
}
.ent-preview-marco i{width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.22)}
.ent-preview img{display:block; width:100%}
.ent-caja{
  background:var(--card); display:flex; align-items:center; justify-content:center;
  padding:clamp(22px, 4vw, 64px);
}
.ent-form{width:100%; max-width:420px}
.ent-form h2{margin:0 0 5px; font-size:24px; font-weight:700; letter-spacing:-.02em}
.ent-form-sub{margin:0 0 26px; color:var(--muted); font-size:13.8px}
.ent-campo{display:block; margin-bottom:15px; font-size:12.5px; font-weight:600; color:var(--ink)}
.ent-campo input{
  width:100%; margin-top:6px; height:46px; padding:0 13px;
  font-size:14px; border-radius:9px;
}
.ent-clave{position:relative; display:block}
.ent-clave input{padding-right:44px}
#e-ver{
  position:absolute; right:5px; top:50%; transform:translateY(calc(-50% + 3px));
  background:transparent; border:0; cursor:pointer; color:var(--faint);
  width:36px; height:36px; display:grid; place-items:center; border-radius:7px;
}
#e-ver:hover{color:var(--ink); background:var(--card-2)}
#e-ver svg{width:18px; height:18px}
.ent-btn{width:100%; height:46px; font-size:14px; border-radius:9px; margin-top:4px}
#e-error, #o-error, #n-error{color:var(--crit); font-size:12.5px; margin-top:10px; min-height:1em}
#e-error.ent-ok, #o-error.ent-ok, #n-error.ent-ok{color:var(--ok)}
.ent-seguro{
  display:flex; align-items:center; gap:7px; justify-content:center;
  margin-top:16px; font-size:12px; color:var(--muted); cursor:default;
}
.ent-seguro svg{width:14px; height:14px; color:var(--ok)}
.ent-div{
  display:flex; align-items:center; gap:12px; margin:20px 0 14px;
  font-size:11.5px; color:var(--faint); text-transform:lowercase;
}
.ent-div::before,.ent-div::after{content:''; flex:1; height:1px; background:var(--divisor)}
.ent-pie{margin-top:30px; text-align:center; font-size:11.5px; color:var(--faint)}
#modal-demo{
  position:fixed; inset:0; z-index:70; display:none;
  background:rgba(13,21,38,.5); place-items:center; padding:18px;
}
#modal-demo.on{display:grid}
.md-caja{
  background:var(--card); border:1px solid var(--linea); border-radius:16px;
  box-shadow:var(--sombra-lg); width:100%; max-width:520px; max-height:90vh;
  max-height:min(90vh, calc(100dvh - 36px)); overflow:auto;
}
.md-h{padding:18px 22px 14px; border-bottom:1px solid var(--divisor); display:flex; gap:12px; align-items:flex-start;
  position:sticky; top:0; z-index:2; background:var(--card)}
.md-h h3{margin:0 0 3px; font-size:16.5px; font-weight:700}
.md-h .cerrar{
  margin-left:auto; background:transparent; border:0; color:var(--faint);
  font-size:18px; cursor:pointer; line-height:1; padding:2px 6px;
}
.md-h .cerrar:hover{color:var(--ink)}
.md-b{padding:14px 22px 20px; display:grid; gap:8px}
.md-rol{
  display:flex; gap:12px; align-items:center; text-align:left; width:100%;
  padding:11px 13px; border-radius:11px; cursor:pointer; font-family:inherit;
  background:var(--card); border:1px solid var(--linea); color:var(--ink);
  transition:border-color .15s, background .15s;
}
.md-rol:hover{border-color:var(--acc); background:var(--acc-soft)}
.md-rol b{font-size:13.5px; font-weight:600; display:block}
.md-rol span{font-size:11.8px; color:var(--muted)}
.md-rol.principal{border-color:var(--acc-line)}
.ent-logo-movil{display:none}
.ent-logo-movil img{height:34px; width:auto; display:block}
@media (max-width:1024px){
  #entrada{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  #entrada{grid-template-columns:1fr}
  .ent-caja{order:-1; min-height:100vh}
  .ent-marca{padding:28px 22px 36px}
  .ent-preview{display:none}
  .ent-tit{font-size:26px; max-width:none}
  .ent-logo-movil{display:block; margin:0 0 22px}
}
.unidades{display:grid; grid-template-columns:repeat(auto-fill, minmax(84px, 1fr)); gap:9px}
.u{
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:2px;
  padding:9px 10px; min-height:56px; border-radius:var(--r-sm); cursor:pointer;
  font-family:inherit; text-align:left; border:1px solid var(--linea-fuerte);
  background:var(--card-2); color:var(--ink);
  transition:border-color .12s, box-shadow .12s;
}
.u:hover:not(:disabled){border-color:var(--faint); box-shadow:var(--sombra)}
.u:disabled{cursor:default}
.u-cod{font-weight:650; font-size:13.5px; letter-spacing:-.01em}
.u-area{font-size:10.5px; color:var(--muted)}
.u-ok{background:var(--ok-soft); border-color:var(--ok-line)}
.u-ok .u-cod{color:var(--ok)}
.u-warn{background:var(--warn-soft); border-color:var(--warn-line)}
.u-warn .u-cod{color:var(--warn)}
.u-crit{background:var(--crit-soft); border-color:var(--crit-line)}
.u-crit .u-cod{color:var(--crit)}
.u-leyenda{
  display:inline-block; width:9px; height:9px; border-radius:3px; margin-right:4px;
  border:1px solid var(--linea-fuerte); vertical-align:baseline;
}
.at-grupo{
  font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:650;
  color:var(--muted); margin:18px 0 8px; display:flex; align-items:center; gap:8px;
}
.at-grupo:first-child{margin-top:0}
.at-grupo::before{content:''; width:7px; height:7px; border-radius:var(--r-full); background:var(--faint)}
.at-grupo.crit{color:var(--crit)} .at-grupo.crit::before{background:var(--crit)}
.at-grupo.warn{color:var(--warn)} .at-grupo.warn::before{background:var(--warn)}
.at-lista{display:flex; flex-direction:column; gap:8px}
.alerta{
  display:flex; gap:13px; align-items:flex-start;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r);
  padding:12px 14px 12px 16px; position:relative; overflow:hidden;
  transition:border-color .12s, box-shadow .12s;
}
.alerta::before{content:''; position:absolute; inset:0 auto 0 0; width:3px; background:var(--linea-fuerte)}
.alerta.crit::before{background:var(--crit)}
.alerta.warn::before{background:var(--warn)}
.alerta.neu::before{background:var(--acc)}
.alerta:hover{border-color:var(--linea-fuerte); box-shadow:var(--sombra)}
.al-ic{
  width:34px; height:34px; border-radius:var(--r-sm); flex-shrink:0;
  display:grid; place-items:center; background:var(--neu-soft); color:var(--muted);
}
.al-ic svg{width:17px; height:17px}
.alerta.crit .al-ic{background:var(--crit-soft); color:var(--crit)}
.alerta.warn .al-ic{background:var(--warn-soft); color:var(--warn)}
.alerta.neu .al-ic{background:var(--acc-soft); color:var(--acc)}
.al-cuerpo{min-width:0; flex:1}
.al-tit{font-weight:600; font-size:13.5px; line-height:1.35; letter-spacing:-.005em}
.al-det{font-size:12.3px; color:var(--muted); line-height:1.5; margin-top:2px}
.al-cta{flex-shrink:0; align-self:center; display:flex; gap:8px; align-items:center}
.tarjetas{display:grid; grid-template-columns:repeat(auto-fill, minmax(330px, 1fr)); gap:var(--gap)}
.tj{
  display:grid; grid-template-columns:auto 1fr; grid-template-areas:"ic cuerpo" "pie pie";
  gap:4px 13px; position:relative; overflow:hidden;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r);
  padding:15px 16px 13px 19px;
  transition:border-color .12s, box-shadow .12s;
}
.tj:hover{border-color:var(--linea-fuerte); box-shadow:var(--sombra)}
.tj::before{content:''; position:absolute; inset:0 auto 0 0; width:3px; background:var(--linea-fuerte)}
.tj-crit::before{background:var(--crit)}
.tj-warn::before{background:var(--warn)}
.tj-neu::before{background:var(--acc)}
.tj-ic{
  grid-area:ic; width:34px; height:34px; border-radius:var(--r-sm);
  display:grid; place-items:center; font-size:16px; background:var(--neu-soft);
}
.tj-crit .tj-ic{background:var(--crit-soft); color:var(--crit)}
.tj-warn .tj-ic{background:var(--warn-soft); color:var(--warn)}
.tj-neu .tj-ic{background:var(--acc-soft); color:var(--acc)}
.tj-cuerpo{grid-area:cuerpo; min-width:0}
.tj-tit{font-weight:600; font-size:13.5px; line-height:1.35}
.tj-det{font-size:12.3px; color:var(--muted); line-height:1.5; margin-top:3px}
.tj-pie{
  grid-area:pie; display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin-top:11px; padding-top:11px; border-top:1px solid var(--divisor);
}
.tj-pie .btn{margin-left:auto}
.gantt{position:relative; --g-nom:210px; --g-sep:14px}
.g-caja{max-height:72vh; overflow-y:auto; overflow-x:hidden}
.g-caja .g-cab{position:sticky; top:0; z-index:3; background:var(--panel)}
.g-fila{display:flex; align-items:center; gap:var(--g-sep); padding:5px 0}
.g-nom{flex:0 0 var(--g-nom); min-width:0}
.g-pista{
  position:relative; flex:1; height:30px; min-width:0;
  border-radius:var(--r-sm); background:var(--card-2);
}
.g-mes{
  position:absolute; top:0; bottom:0; display:block;
  border-left:1px solid var(--linea);
}
.gantt .g-fila:not(.g-cab) .g-pista{
  background-image:var(--g-meses); background-position:var(--g-meses-en);
  background-size:1px 100%; background-repeat:no-repeat;
}
.g-cab{padding-bottom:2px}
.g-cab .g-pista{height:20px; background:transparent}
.g-etq{
  position:absolute; top:2px; padding-left:5px;
  font-size:10px; letter-spacing:.07em; text-transform:uppercase;
  color:var(--faint); font-weight:600;
}
.g-barra{
  position:absolute; top:5px; height:20px; border-radius:5px;
  overflow:hidden; display:flex; align-items:center;
  min-width:10px; background:var(--acc);
}
.g-barra i{display:block; height:100%; background:rgba(255,255,255,.34)}
.g-pct{
  position:absolute; right:8px; font-size:10px; font-weight:650; color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.35); letter-spacing:.02em;
}
.g-ok{background:var(--ok)}
.g-plan{position:absolute; top:26px; height:3px; border-radius:2px; background:var(--muted); opacity:.8}
.g-real{position:absolute; top:1px; height:3px; border-radius:2px; background:var(--acc)}
.g-plan-muestra{display:inline-block; width:18px; height:3px; border-radius:2px; background:var(--muted); vertical-align:middle; margin:0 3px 0 8px}
.g-hito{position:absolute; top:4px; margin-left:-7px; font-size:16px; line-height:20px; color:var(--acc)}
.g-warn{background:var(--warn)}
.g-crit{background:var(--crit)}
.g-freno{
  position:absolute; top:4px; margin-left:-19px; line-height:22px;
  background:transparent; border:0; padding:0; cursor:pointer; color:var(--warn);
}
.g-freno:hover{color:var(--ink)}
.g-hoy{
  position:absolute; top:22px; bottom:0; width:2px; background:var(--acc);
  opacity:.75; pointer-events:none;
  left:calc(var(--g-nom) + var(--g-sep) + (100% - var(--g-nom) - var(--g-sep)) * var(--x));
}
.g-hoy span{
  position:absolute; top:-16px; left:50%; transform:translateX(-50%);
  background:var(--acc); color:#fff; font-size:9.5px; font-weight:650;
  padding:1px 6px; border-radius:var(--r-full); letter-spacing:.06em;
}
#desglose{
  position:fixed; inset:0; z-index:60; display:none;
  background:rgba(13,21,38,.42);
}
#desglose.on{display:block}
#desglose .caja{
  position:absolute; top:0; right:0; bottom:0;
  background:var(--card); border-left:1px solid var(--linea-fuerte);
  box-shadow:var(--sombra-lg); width:min(440px, 100%);
  display:flex; flex-direction:column;
  animation:drawer .18s ease-out;
}
@keyframes drawer{from{transform:translateX(24px); opacity:.4}to{transform:none; opacity:1}}
#desglose .dh{
  padding:16px 20px; border-bottom:1px solid var(--linea);
  display:flex; align-items:flex-start; gap:12px; flex-shrink:0;
}
#desglose .dh h3{margin:0; font-size:15px; letter-spacing:-.01em; font-weight:650}
#desglose .dh .cerrar{
  margin-left:auto; background:transparent; border:0; color:var(--faint);
  font-size:18px; cursor:pointer; line-height:1; padding:2px 6px;
}
#desglose .dh .cerrar:hover{color:var(--ink)}
#desglose .db{padding:8px 20px 18px; overflow-y:auto; flex:1}
#desglose table{min-width:0}
#desglose td.num{white-space:nowrap}
#desglose th{white-space:normal}
#desglose th, #desglose td{padding-left:8px; padding-right:8px}
#desglose .dfila{
  display:flex; gap:12px; padding:9px 0; border-bottom:1px solid var(--divisor);
  font-size:13px; align-items:flex-start;
}
#desglose .dfila:last-child{border-bottom:0}
#desglose .dk{color:var(--muted); min-width:44%}
#desglose .dv{font-weight:600; margin-left:auto; text-align:right}
#desglose .dpie{
  font-size:12px; color:var(--muted); line-height:1.6; flex-shrink:0;
  border-top:1px solid var(--linea); padding:13px 20px; background:var(--card-2);
}
#cajabuscar{position:relative; margin-left:8px; flex:1 1 300px; min-width:190px; max-width:460px}
#buscar{
  width:100%; background:#fff; color:var(--acc); font-weight:550;
  border:1px solid #fff;
  border-radius:var(--r-sm); padding:7px 11px; font-size:12.8px; font-family:inherit;
}
#buscar:hover{border-color:var(--nav-acc)}
#buscar:focus{border-color:var(--nav-acc); outline:none}
#buscar::placeholder{color:var(--acc); opacity:.65; font-weight:500}
#resultados{
  position:absolute; top:38px; left:0; width:min(480px, 92vw); max-height:70vh; overflow-y:auto;
  background:var(--card); border:1px solid var(--linea-fuerte); border-radius:var(--r);
  box-shadow:var(--sombra-lg); z-index:50; display:none;
}
#resultados .bgrupo{
  font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint);
  padding:10px 14px 5px; border-top:1px solid var(--divisor); font-weight:650;
}
#resultados .bgrupo:first-child{border-top:0}
#resultados .bitem{padding:9px 14px; cursor:pointer; display:flex; gap:10px; align-items:flex-start}
#resultados .bitem:hover,#resultados .bitem.sel{background:var(--acc-soft)}
#resultados .bt{font-size:12.8px; font-weight:600; color:var(--ink)}
#resultados .bs{font-size:11.5px; color:var(--muted)}
#resultados .bc{
  font-size:10.5px; color:var(--faint); font-family:var(--fm);
  margin-left:auto; white-space:nowrap; padding-left:8px;
}
#resultados .bnota{padding:10px 14px; font-size:11.5px; color:var(--faint); border-top:1px solid var(--divisor)}
#resultados .bbuscando{color:var(--muted); animation:bbusca 1.2s ease-in-out infinite alternate}
@media (max-width:900px){ #resultados{left:auto; right:0; width:min(480px, 92vw)} }
@keyframes bbusca{from{opacity:.55}to{opacity:1}}
@media (prefers-reduced-motion: reduce){#resultados .bbuscando{animation:none}}
#campana{position:relative; padding:6px 10px; line-height:1; color:#fff}
#campana:hover{color:#fff}
#campana-n{
  position:absolute; top:-4px; right:-4px;
  background:var(--crit); color:#fff;
  border-radius:var(--r-full); font-size:10px; font-weight:650;
  min-width:16px; height:16px; padding:0 4px;
  display:none; align-items:center; justify-content:center;
}
#campana-n.on{display:inline-flex}
#notifs-panel{
  display:none; position:fixed; z-index:60;
  top:calc(var(--h) + 6px); right:10px;
  width:min(400px, calc(100vw - 20px)); max-height:70vh; overflow:auto;
  background:var(--panel); border:1px solid var(--linea-fuerte);
  border-radius:var(--r); box-shadow:var(--sombra-lg);
}
#notifs-panel.on{display:block}
.notif-item{display:flex; gap:10px; padding:11px 14px;
  border-bottom:1px solid var(--divisor); cursor:pointer}
.notif-item:hover{background:var(--card-2)}
.notif-item .punto{width:8px; height:8px; border-radius:50%; margin-top:6px;
  background:var(--crit); flex:none}
.notif-item.leida .punto{background:transparent}
.notif-item .cuando{font-size:11px; color:var(--faint); margin-top:3px}
@media (max-width:1180px){
  :root{--menu:64px}
  .marca{justify-content:center; padding:15px 0 13px}
  .marca .wm{display:none}
  .marca .logo-cuadro{display:block}
  .navitem{justify-content:center; padding:11px 0; gap:0}
  .navitem span:not(.ni){
    position:absolute; left:64px; background:var(--nav); color:#fff;
    padding:6px 11px; border-radius:var(--r-sm); font-size:12.5px; white-space:nowrap;
    box-shadow:var(--sombra-md); opacity:0; pointer-events:none; transition:opacity .1s;
    z-index:30;
  }
  .navitem{position:relative}
  @media (hover:hover){ .navitem:hover span:not(.ni){opacity:1; transition-delay:.15s} }
  .navsec,.navfoot,.navsub{display:none}
}
@media (max-width:900px){
  :root{--menu:250px}
  :root{--h:104px}
  header{flex-wrap:wrap; align-content:center; row-gap:8px;
    padding:calc(8px + env(safe-area-inset-top, 0px)) max(12px, env(safe-area-inset-right, 0px))
            8px max(12px, env(safe-area-inset-left, 0px))}
  header .mk{display:block}
  #usuario{order:8}
  #cajabuscar{order:9; flex:1 1 200px; min-width:170px; max-width:none; margin-left:0}
  .menu-btn{display:flex}
  .sidebar{
    position:fixed; top:var(--h); left:0; height:calc(100vh - var(--h)); z-index:45;
    transform:translateX(-100%); visibility:hidden;
    transition:transform .2s ease;
    box-shadow:var(--sombra-lg);
  }
  body.menu-abierto .sidebar{transform:translateX(0); visibility:visible}
  body.menu-abierto::after{
    content:''; position:fixed; inset:var(--h) 0 0 0; background:rgba(13,21,38,.45); z-index:44;
  }
  .marca{justify-content:flex-start; padding:15px 18px 13px}
  .marca .wm{display:block}
  .marca .logo-cuadro{display:none}
  .navitem{justify-content:flex-start; padding:11px 18px; gap:11px}
  .navitem span:not(.ni){position:static; background:none; padding:0; box-shadow:none; opacity:1; pointer-events:auto}
  .navsec,.navfoot,.navsub{display:block}
  .row2{grid-template-columns:minmax(0,1fr)}
  #proy{max-width:150px; font-size:12px}
  header select#usuario{max-width:160px}
}
@media (max-width:620px){
  :root{--h:116px}
  header{column-gap:8px}
  #proy{flex:1 1 0; min-width:0; max-width:none}
  #proy-nuevo{display:none !important}
  #perfil{margin-left:0; padding:3px; max-width:none}
  #quien,#perfil .perfil-chev{display:none}
  #cajabuscar{flex:1 1 100%; min-width:0}
}
@media (max-width:1024px){
  td .fila[style*="nowrap"]:has(> .btn){flex-wrap:wrap !important}
}
@media (max-width:900px){
  .sidebar .marca{display:none}
}
@media (pointer:coarse){
  .btn{min-height:44px; padding:11px 18px; font-size:13.5px}
  .btn.gh{min-height:40px}
  .seg button{min-height:40px; padding:5px 13px}
  input[type=number],input[type=text],input[type=password],
  input[type=email],input[type=tel],input[type=url],input[type=search],
  input[type=date],input[type=time],input[type=datetime-local],input[type=month],
  select,textarea{
    min-height:44px; font-size:16px;
  }
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
  select,textarea{font-size:16px !important}
  .navitem{padding:13px 18px}
  .menu-btn{width:44px; height:40px}
  #desglose .dh .cerrar{padding:8px 12px; font-size:22px}
  .kpi[data-expl]::after{width:22px; height:22px; font-size:12px}
}
@media (max-width:620px){
  :root{--gap:12px}
  .kpis{grid-template-columns:1fr 1fr; gap:10px}
  .kpi{padding:12px 13px}
  .kv{font-size:21px}
  .kl{font-size:9.5px}
  .kd{font-size:11px}
  header{gap:9px;
    padding:calc(8px + env(safe-area-inset-top, 0px)) max(11px, env(safe-area-inset-right, 0px))
            10px max(11px, env(safe-area-inset-left, 0px))}
  #lbl-vercomo, #lbl-proy{display:none !important}
  body:not(.suplantando) header select#usuario{display:none !important}
  header select#usuario{max-width:132px}
  #cajabuscar{max-width:none}
  .panel-b{padding:14px}
  .aviso{padding:11px 13px; font-size:12.8px}
  .alerta{flex-wrap:wrap}
  .al-cta{margin-left:47px; flex-basis:calc(100% - 47px); flex-wrap:wrap}
  .gantt{--g-nom:0px; --g-sep:0px}
  .g-fila{flex-direction:column; align-items:stretch; gap:3px; padding:7px 0}
  .g-nom{flex:none}
  .g-pista{flex:none; height:30px}
  .g-cab{display:none}
  .g-hoy{top:0}
  .g-hoy span{top:0}
  .tabla-scroll{overflow-x:visible}
  table,thead,tbody,tr,td{display:block; width:100%}
  tr[hidden]{display:none}
  table{min-width:0}
  thead{display:none}
  tbody tr{
    border:1px solid var(--linea); border-radius:var(--r-sm);
    margin-bottom:10px; padding:4px 0; background:var(--card);
  }
  tbody tr:hover{background:var(--card)}
  td{
    border-bottom:1px solid var(--divisor); padding:9px 13px;
    display:flex; gap:12px; align-items:flex-start; flex-wrap:wrap;
  }
  td > *:not(:first-child){flex:1 1 100%; margin-left:calc(38% + 12px)}
  td:last-child{border-bottom:0}
  td::before{
    content:attr(data-col); flex:0 0 38%;
    font-size:10px; letter-spacing:.07em; text-transform:uppercase;
    color:var(--muted); font-weight:600; padding-top:2px;
  }
  td:not([data-col])::before{display:none}
  td.num{text-align:left}
}
@media (max-width:760px){
  .nd-fila{flex-wrap:wrap}
  .nd-cuerpo{min-width:0; flex:1 1 100%}
  .nd-acc{flex:1 0 100%; margin-top:4px}
  .panel-b.arbol{overflow-x:auto}
}
.col-compra{width:220px}
@media (max-width:760px){ .col-compra{width:auto; min-width:0} }
@media (max-width:760px){
  .nr-fila{flex-wrap:wrap}
  .nr-fila > *{min-width:0}
  .nr-frase{flex:1 0 100%}
  .nr-frase .pill.mono{white-space:normal; word-break:break-word}
}
@media (max-width:400px){
  .kpis{grid-template-columns:1fr}
}
@media (min-width:1600px){
  :root{--gap:20px}
  body{font-size:14.5px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none !important; animation:none !important}
}
.avatar{
  position:relative; display:inline-grid; place-items:center; flex-shrink:0;
  border-radius:50%; overflow:hidden;
  background:var(--acc-soft); color:var(--acc);
}
.avatar img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.av-ini{font-weight:650; letter-spacing:.02em; user-select:none}
.av-24{width:24px; height:24px} .av-24 .av-ini{font-size:9px}
.av-28{width:28px; height:28px} .av-28 .av-ini{font-size:10px}
.av-32{width:32px; height:32px} .av-32 .av-ini{font-size:11px}
.av-40{width:40px; height:40px} .av-40 .av-ini{font-size:13.5px}
.av-56{width:56px; height:56px} .av-56 .av-ini{font-size:19px}
.av-grupo{display:inline-flex; align-items:center}
.av-grupo .avatar{margin-left:-8px; box-shadow:0 0 0 2px var(--card)}
.av-grupo .avatar:first-child{margin-left:0}
.av-mas{
  margin-left:-8px; box-shadow:0 0 0 2px var(--card);
  background:var(--neu-soft); color:var(--muted);
}
.hoy-card{
  background:var(--card); border:1px solid var(--linea-caja); border-radius:var(--r-xl);
  box-shadow:var(--sombra-suave); padding:18px 20px;
  transition:box-shadow .18s, border-color .18s, transform .18s;
}
.kpis-r{
  display:grid; grid-template-columns:repeat(2, 1fr);
  gap:var(--gap); margin-bottom:var(--gap);
}
@media (max-width:720px){ .kpis-r{grid-template-columns:1fr} }
.kpi.kpir{
  display:flex; align-items:center; gap:16px; min-height:128px;
  border-radius:var(--r-xl); box-shadow:var(--sombra-suave); padding:18px 20px;
  transition:box-shadow .18s, border-color .18s, transform .18s;
}
.kpi.kpir:hover{transform:translateY(-1px)}
.kpir-radial{position:relative; width:72px; height:72px; flex-shrink:0}
.kpir-radial svg{width:100%; height:100%; transform:rotate(-90deg)}
.kpir-radial .aro-pista{fill:none; stroke:var(--divisor); stroke-width:6}
.kpir-radial .aro-arco{fill:none; stroke-width:6; stroke-linecap:round}
.kpir-radial .kpir-ic{
  position:absolute; inset:0; display:grid; place-items:center; color:var(--muted);
}
.kpir-radial .kpir-ic svg{width:22px; height:22px; transform:none}
.kpir.acc .aro-arco{stroke:var(--acc)} .kpir.acc .kpir-ic{color:var(--acc)}
.kpir.ok .aro-arco{stroke:var(--ok)}   .kpir.ok .kpir-ic{color:var(--ok)}
.kpir.warn .aro-arco{stroke:var(--warn)} .kpir.warn .kpir-ic{color:var(--warn)}
.kpir.crit .aro-arco{stroke:var(--crit)} .kpir.crit .kpir-ic{color:var(--crit)}
.kpir.cero .aro-arco{stroke:var(--linea)} .kpir.cero .kpir-ic{color:var(--faint)}
.kpir-cuerpo{min-width:0; flex:1}
.kpir-v{
  font-size:clamp(30px, 2.6vw, 38px); font-weight:750; line-height:1.05;
  letter-spacing:-.025em; font-variant-numeric:tabular-nums;
}
.kpir.crit .kpir-v{color:var(--crit)}
.kpir-v.txt{font-size:clamp(17px, 1.6vw, 21px); line-height:1.2; letter-spacing:-.01em}
.kpir-l{font-size:14.5px; font-weight:600; margin-top:3px; letter-spacing:-.005em}
.kpir-d{font-size:12.3px; color:var(--muted); margin-top:1px; line-height:1.45}
.kpir-ir{
  align-self:flex-start; flex-shrink:0; width:30px; height:30px;
  border-radius:50%; border:1px solid var(--linea); background:transparent;
  color:var(--muted); cursor:pointer; display:grid; place-items:center;
  transition:background .15s, color .15s, border-color .15s;
}
.kpir-ir:hover{background:var(--acc); border-color:var(--acc); color:#fff}
.kpir-ir svg{width:15px; height:15px}
.kpi.kpir[data-expl]::after{top:auto; bottom:12px; right:14px}
.aten{border-radius:var(--r-xl); box-shadow:var(--sombra-suave); overflow:hidden}
.aten .panel-h{padding:14px 20px}
.aten.con-criticas .panel-h{
  background:var(--crit-soft); border-bottom-color:var(--crit-line);
}
.aten-ic{
  width:30px; height:30px; border-radius:var(--r-sm); flex-shrink:0;
  display:grid; place-items:center; background:var(--crit-soft); color:var(--crit);
}
.aten.con-criticas .aten-ic{background:#fff; }
@media (prefers-color-scheme:dark){ .aten.con-criticas .aten-ic{background:var(--card)} }
.aten-ic svg{width:17px; height:17px}
.badge-crit{
  background:var(--crit-fuerte); color:#fff; font-weight:650; font-size:11.5px;
  border-radius:7px; padding:3px 10px; letter-spacing:.01em; white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.aten-orden{display:inline-flex; align-items:center; gap:6px; font-size:11.8px; color:var(--muted)}
.aten .alerta{padding:16px 18px; border-radius:var(--r-lg)}
.aten .alerta::before{width:4px}
.aten .al-tit{font-size:15px; font-weight:650}
.aten .al-det{font-size:13px; margin-top:3px}
.aten .al-cta .btn{padding:9px 22px; border-radius:8px}
.aten .al-urg{
  font-size:10px; letter-spacing:.08em; text-transform:uppercase; font-weight:650;
  display:inline-flex; align-items:center; gap:6px; margin-bottom:3px;
}
.aten .al-urg::before{content:''; width:7px; height:7px; border-radius:50%; background:currentColor}
.aten .al-urg.crit{color:var(--crit)} .aten .al-urg.warn{color:var(--warn)}
.aten .al-urg.med{color:var(--med)} .aten .al-urg.neu{color:var(--muted)}
.zona-ana{
  display:grid; grid-template-columns:1fr 1.1fr 1fr 1fr; gap:var(--gap);
  margin-top:var(--gap); align-items:stretch;
}
@media (max-width:1280px){ .zona-ana{grid-template-columns:1fr 1fr} }
@media (max-width:680px){ .zona-ana{grid-template-columns:1fr} }
.ana-card{display:flex; flex-direction:column; min-width:0}
.ana-h{display:flex; align-items:center; gap:8px; margin-bottom:14px}
.ana-h h3{margin:0; font-size:15px; font-weight:650; letter-spacing:-.005em; flex:1 1 auto; min-width:0}
.ana-h > .tsub{flex:0 1 auto; min-width:0}
@media (max-width:760px){ .ana-h{flex-wrap:wrap} .ana-h > .tsub{margin-left:0 !important; flex-basis:100%} }
.ana-h .btn.gh{font-size:12px; padding:4px 6px; white-space:nowrap}
.ana-pie{
  margin-top:auto; padding-top:12px; border-top:1px solid var(--divisor);
  font-size:11.8px; color:var(--muted); line-height:1.55;
}
.ana-pie svg{width:14px; height:14px; vertical-align:-2px; margin-right:6px}
.ana-vacio{
  flex:1; display:grid; place-items:center; text-align:center;
  color:var(--muted); font-size:12.6px; line-height:1.6; padding:18px 8px;
}
.ana-vacio b{color:var(--ink)}
.dona-caja{display:flex; align-items:center; gap:18px}
.dona{position:relative; width:124px; height:124px; flex-shrink:0}
.dona svg{width:100%; height:100%; transform:rotate(-90deg)}
.dona circle{fill:none; stroke-width:12}
.dona-centro{
  position:absolute; inset:0; display:grid; place-items:center; text-align:center;
}
.dona-centro b{
  font-size:26px; font-weight:750; line-height:1; letter-spacing:-.02em;
  font-variant-numeric:tabular-nums; display:block;
}
.dona-centro span{font-size:10.5px; color:var(--muted); text-transform:uppercase; letter-spacing:.06em}
.dona-leyenda{flex:1; min-width:0; display:flex; flex-direction:column; gap:8px}
.dl-fila{display:flex; align-items:center; gap:8px; font-size:12.8px}
.dl-fila i{width:9px; height:9px; border-radius:3px; flex-shrink:0}
.dl-fila .dl-n{margin-left:auto; font-weight:650; font-variant-numeric:tabular-nums}
.dl-fila .dl-pct{color:var(--muted); font-variant-numeric:tabular-nums; width:38px; text-align:right}
.grafica-linea{width:100%; height:auto; display:block}
.grafica-linea .gl-grid{stroke:var(--divisor); stroke-width:1}
.grafica-linea .gl-linea{stroke:var(--warn); stroke-width:2; fill:none}
.grafica-linea .gl-area{fill:var(--warn); opacity:.07}
.grafica-linea .gl-punto{fill:var(--card); stroke:var(--warn); stroke-width:2; cursor:pointer}
.grafica-linea .gl-dia{font-size:9.5px; fill:var(--muted)}
.grafica-linea .gl-num{font-size:9px; fill:var(--faint)}
.gl-tip{
  position:absolute; pointer-events:none; display:none; z-index:5;
  background:var(--nav); color:#fff; font-size:11.5px; line-height:1.45;
  border-radius:8px; padding:6px 10px; box-shadow:var(--sombra-md);
  transform:translate(-50%, calc(-100% - 8px)); white-space:nowrap;
}
.gl-tip b{font-variant-numeric:tabular-nums}
.gl-tip.on{display:block}
.fila-persona,.fila-prox{
  display:flex; align-items:center; gap:11px; padding:9px 0;
  border-bottom:1px solid var(--divisor);
}
.fila-persona:last-of-type,.fila-prox:last-of-type{border-bottom:0}
.fp-datos{min-width:0; flex:1}
.fp-nombre{font-size:13.2px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.fp-rol{font-size:11.5px; color:var(--muted)}
.fp-n{
  font-size:12px; font-weight:650; font-variant-numeric:tabular-nums;
  background:var(--neu-soft); color:var(--ink); border-radius:7px; padding:2px 9px;
}
.fp-n.crit{background:var(--crit-soft); color:var(--crit)}
.fila-prox .al-ic{width:32px; height:32px}
.fila-prox .al-ic svg{width:16px; height:16px}
.panel-info{
  display:flex; gap:14px; align-items:flex-start;
  background:var(--acc-soft); border:1px solid var(--acc-line);
  border-radius:var(--r-lg); padding:16px 18px; margin-top:var(--gap);
  font-size:12.8px; line-height:1.65; color:var(--ink);
}
.panel-info b{font-weight:650}
.pi-ic{
  width:32px; height:32px; border-radius:50%; flex-shrink:0;
  background:var(--nav); color:#fff; display:grid; place-items:center;
}
.pi-ic svg{width:16px; height:16px}
.navsub{
  font-size:9px; letter-spacing:.09em; text-transform:uppercase;
  color:#fff; opacity:.8; font-weight:650;
  padding:12px 22px 3px; user-select:none;
}
.kpis.kpis-c{gap:10px; margin-bottom:var(--gap)}
.kpis-c .kpi{padding:10px 14px; border-radius:var(--r)}
.kpis-c .kv{font-size:20px; margin:4px 0 1px}
.kpis-c .kl{font-size:10px}
.kpis-c .kd{font-size:11px}
.kpis-c .kpi[data-expl]::after{top:9px; right:10px; width:15px; height:15px; font-size:9.5px}
@media (max-width:400px){
  .kpis.kpis-c{grid-template-columns:1fr 1fr; gap:8px}
  .kpis-c .kpi{padding:9px 11px}
  .kpis-c .kpi[data-expl] .kl{padding-right:18px}
}
.estado-vacio{
  display:grid; place-items:center; text-align:center;
  padding:56px 24px; color:var(--muted);
}
.estado-vacio .ev-ic{
  width:52px; height:52px; border-radius:14px; display:grid; place-items:center;
  background:var(--acc-soft); color:var(--acc); margin:0 auto 14px;
}
.estado-vacio .ev-ic svg{width:24px; height:24px}
.estado-vacio h3{margin:0 0 6px; font-size:16px; color:var(--ink); font-weight:650}
.estado-vacio p{margin:0 auto 16px; font-size:13px; line-height:1.6; max-width:44ch}
.estado-vacio .fila{justify-content:center; flex-wrap:wrap}
.callout{
  display:flex; gap:10px; align-items:flex-start; flex-wrap:wrap;
  background:var(--card-2); border:1px solid var(--linea); border-radius:var(--r);
  padding:10px 14px; margin:12px 0; font-size:12.4px; line-height:1.55; color:var(--muted);
}
.callout b{color:var(--ink); font-weight:600}
.callout>svg{width:15px; height:15px; flex-shrink:0; margin-top:2px; color:var(--acc)}
.callout .btn.gh{margin-left:auto; align-self:center; font-size:12px; white-space:nowrap}
.apilada{margin:4px 0 8px}
.apilada-b{display:flex; height:14px; border-radius:var(--r-full); overflow:hidden; background:var(--divisor)}
.apilada-b i{display:block; height:100%}
.apilada-l{display:flex; flex-wrap:wrap; gap:14px; margin-top:8px; font-size:12px; color:var(--muted)}
.apilada-l span{display:inline-flex; align-items:center; gap:6px}
.apilada-l i{width:9px; height:9px; border-radius:3px}
.apilada-l b{color:var(--ink); font-variant-numeric:tabular-nums}
.t-ok{background:var(--ok)} .t-warn{background:var(--warn)} .t-crit{background:var(--crit)}
.t-acc{background:var(--acc)} .t-neu{background:var(--linea-fuerte)} .t-med{background:var(--med)}
.comparar{display:flex; flex-direction:column; gap:10px; margin:6px 0}
.comparar .cp-fila{display:grid; grid-template-columns:150px 1fr 52px; gap:12px; align-items:center}
.comparar .cp-l{font-size:12.6px; color:var(--muted)}
.comparar .cp-n{font-size:13.5px; font-weight:700; text-align:right; font-variant-numeric:tabular-nums}
.comparar .bar{margin:0}
.countdown{
  text-align:center; padding:10px 18px; border-radius:var(--r-lg);
  background:var(--card-2); border:1px solid var(--linea); min-width:86px;
}
.countdown b{
  display:block; font-size:30px; font-weight:750; line-height:1;
  font-variant-numeric:tabular-nums; letter-spacing:-.02em;
}
.countdown span{font-size:10px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600}
.countdown.crit{border-color:var(--crit-line); background:var(--crit-soft)}
.countdown.crit b{color:var(--crit)}
.countdown.warn{border-color:var(--warn-line); background:var(--warn-soft)}
.countdown.warn b{color:var(--warn)}
.pipeline{
  display:grid; grid-auto-flow:column; grid-auto-columns:minmax(128px, 1fr);
  gap:8px; overflow-x:auto; padding-bottom:6px; margin-bottom:var(--gap);
}
.pl-etapa{
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r);
  padding:10px 12px; cursor:pointer; text-align:left; font-family:inherit;
  transition:border-color .15s, box-shadow .15s, background .15s; min-width:0;
}
.pl-etapa:hover{border-color:var(--acc-line); box-shadow:var(--sombra-suave)}
.pl-etapa.on{background:var(--acc); border-color:var(--acc); color:#fff}
.pl-etapa.on .pl-p, .pl-etapa.on .pl-sub{color:rgba(255,255,255,.75)}
.pl-nom{
  font-size:10px; letter-spacing:.06em; text-transform:uppercase; font-weight:650;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.pl-p{font-size:11px; color:var(--muted); margin-top:2px; font-variant-numeric:tabular-nums}
.pl-n{font-size:19px; font-weight:750; margin-top:5px; font-variant-numeric:tabular-nums; line-height:1.1}
.pl-sub{font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.tb-barra{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-bottom:12px}
.tb-barra select{max-width:220px; min-width:0}
.tb-check{display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:var(--ink); cursor:pointer}
.tb-cuenta{margin-left:auto; font-variant-numeric:tabular-nums}
.tb-marco{
  max-width:100%; overflow-x:auto; overscroll-behavior-x:contain; padding-bottom:8px;
  margin-bottom:var(--gap); border-radius:var(--r-lg);
}
.tb-marco:focus-visible{outline:2px solid var(--acc); outline-offset:2px}
.tb-cols{display:flex; gap:10px; align-items:flex-start; width:max-content}
.tb-col{
  width:262px; flex:0 0 262px; background:var(--card-2); border:1px solid var(--linea);
  border-radius:var(--r-lg); display:flex; flex-direction:column; max-height:72vh;
  transition:border-color .12s, background .12s;
}
.tb-col.sobre{border-color:var(--acc); background:var(--acc-soft)}
.tb-col.no-acepta{border-color:var(--crit-line); background:var(--crit-soft)}
.tb-col.tb-bloq .tb-cab{background:var(--card-2)}
.tb-cab{padding:10px 12px 8px; border-bottom:1px solid var(--linea); border-radius:var(--r-lg) var(--r-lg) 0 0; background:var(--card); flex-shrink:0}
.tb-nom{font-size:12.5px; font-weight:700; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.tb-pct{color:var(--muted); font-weight:600}
.tb-met{font-size:11.5px; color:var(--muted); margin-top:2px; font-variant-numeric:tabular-nums}
.tb-met b{color:var(--ink)}
.tb-nota{font-size:11px; color:var(--muted); margin-top:6px; line-height:1.35}
.tb-nota svg{width:12px; height:12px; vertical-align:-2px}
.tb-lista{padding:8px; display:grid; gap:8px; overflow-y:auto; min-height:64px}
.tb-vacia{font-size:11.5px; color:var(--faint); text-align:center; padding:14px 6px}
.tb-tarjeta{
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r);
  box-shadow:var(--sombra); display:flex; flex-direction:column; cursor:grab;
}
.tb-tarjeta.tb-vencido{border-left:3px solid var(--crit)}
.tb-tarjeta.tb-hoy{border-left:3px solid var(--warn)}
.tb-tarjeta.arrastrando{opacity:.45}
.tb-tarjeta[draggable="false"]{cursor:default}
.tb-abrir{
  display:grid; gap:3px; text-align:left; padding:10px 11px 6px; background:transparent; border:0;
  font:inherit; color:inherit; cursor:pointer; border-radius:var(--r) var(--r) 0 0; min-width:0;
}
.tb-abrir:hover .tb-t1 b{color:var(--acc)}
.tb-abrir:focus-visible{outline:2px solid var(--acc); outline-offset:-2px}
.tb-t1{display:flex; align-items:center; gap:6px; font-size:13px; min-width:0}
.tb-t1 b{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:650}
.tb-t2{font-size:11px; color:var(--muted); overflow:hidden; display:-webkit-box; -webkit-box-orient:vertical;
  -webkit-line-clamp:2; line-clamp:2; overflow-wrap:anywhere}
.tb-valor{font-size:13px; font-weight:700; font-variant-numeric:tabular-nums}
.tb-prox{font-size:11.5px; color:var(--muted); display:flex; gap:5px; align-items:flex-start; line-height:1.3}
.tb-prox svg{flex-shrink:0; margin-top:1px}
.tb-pie{display:flex; align-items:center; gap:6px; font-size:11px; color:var(--muted); margin-top:3px}
.tb-mover{align-self:flex-end; margin:0 6px 6px; padding:3px 8px; font-size:11.5px}
.tb-cierres{width:200px; flex-basis:200px}
.tb-cierre{
  display:flex; flex-direction:column; gap:2px; text-align:left; padding:10px 12px; font:inherit; cursor:pointer;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r); color:var(--ink);
}
.tb-cierre b{font-size:20px; font-variant-numeric:tabular-nums; line-height:1.15}
.tb-cierre:hover{border-color:var(--acc-line); box-shadow:var(--sombra-suave)}
.tb-ganadas b{color:var(--ok)}
.tb-perdidas b{color:var(--muted)}
.seg-punto{display:inline-block; width:9px; height:9px; border-radius:50%; flex-shrink:0; margin-right:6px; vertical-align:1px}
.seg-punto.seg-crit{background:var(--crit); box-shadow:0 0 0 3px var(--crit-soft)}
.seg-punto.seg-warn{background:var(--warn); box-shadow:0 0 0 3px var(--warn-soft)}
tr.seg-cerrado td{opacity:.75}
.enlace-min{background:none; border:0; padding:0; font:inherit; color:var(--acc); cursor:pointer; text-decoration:underline; text-underline-offset:2px; text-align:left}
@media (max-width:620px){
  .tb-col{width:236px; flex-basis:236px; max-height:none}
  .tb-cuenta{margin-left:0; flex-basis:100%}
  .tb-barra select{max-width:100%; flex:1 1 150px}
}
.cola-fila{
  display:flex; gap:14px; align-items:flex-start;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r-lg);
  padding:14px 16px; margin-bottom:10px; box-shadow:var(--sombra-suave);
}
.cf-score{
  flex-shrink:0; width:58px; text-align:center; border-radius:var(--r);
  padding:8px 4px 7px; background:var(--card-2); border:1px solid var(--linea);
}
.cf-score b{display:block; font-size:24px; font-weight:750; line-height:1; font-variant-numeric:tabular-nums}
.cf-score span{font-size:9px; letter-spacing:.08em; text-transform:uppercase; font-weight:650; color:var(--muted)}
.cf-score.alta{background:var(--crit-soft); border-color:var(--crit-line)}
.cf-score.alta b, .cf-score.alta span{color:var(--crit)}
.cf-score.media{background:var(--warn-soft); border-color:var(--warn-line)}
.cf-score.media b, .cf-score.media span{color:var(--warn)}
.cf-chips{display:flex; flex-wrap:wrap; gap:6px; margin-top:7px}
.cf-cuerpo{flex:1; min-width:0}
.cf-lado{flex-shrink:0; text-align:right}
.cf-acciones{justify-content:flex-end}
.cf-motivo{width:150px}
@media (max-width:620px){
  .cola-fila{flex-wrap:wrap; padding:12px 13px}
  .cf-cuerpo{flex:1 1 0}
  .cf-lado{flex:1 1 100%; text-align:left}
  .cf-acciones{justify-content:flex-start}
  .cf-motivo{flex:1 1 auto; width:auto; min-width:0}
}
.inbox{display:grid; grid-template-columns:minmax(280px, 380px) 1fr; gap:var(--gap); align-items:start}
@media (max-width:960px){ .inbox{grid-template-columns:1fr} }
.hilo{
  display:flex; gap:11px; align-items:flex-start; padding:12px 14px; cursor:pointer;
  border-bottom:1px solid var(--divisor); transition:background .12s;
}
.hilo:hover{background:var(--card-2)}
.hilo.on{background:var(--acc-soft)}
.hilo:last-child{border-bottom:0}
.hilo-datos{min-width:0; flex:1}
.hilo-quien{font-size:13px; font-weight:600; display:flex; gap:8px; align-items:baseline}
.hilo-quien .tsub{margin:0}
.hilo-prev{
  font-size:12.3px; color:var(--muted); margin-top:2px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.hilo-meta{flex-shrink:0; text-align:right; font-size:11px; color:var(--muted)}
.mensajes{display:flex; flex-direction:column; gap:10px; padding:4px 0}
.msg{max-width:72%; border-radius:12px; padding:9px 13px; font-size:13px; line-height:1.5}
.msg.cliente{align-self:flex-start; background:var(--card-2); border:1px solid var(--linea); border-bottom-left-radius:4px}
.msg.asesor{align-self:flex-end; background:var(--acc-soft); border:1px solid var(--acc-line); border-bottom-right-radius:4px}
.msg .tsub{margin-top:4px}
.agenda-linea{position:relative; padding-left:20px}
.agenda-linea::before{content:''; position:absolute; left:5px; top:8px; bottom:8px; width:2px; background:var(--divisor)}
.ag-item{position:relative; display:flex; gap:12px; align-items:flex-start; padding:10px 0}
.ag-item::before{
  content:''; position:absolute; left:-19px; top:16px; width:10px; height:10px;
  border-radius:50%; background:var(--card); border:2px solid var(--acc);
}
.ag-item.vencido::before{border-color:var(--crit)}
.ag-item.cerrado::before{border-color:var(--linea-fuerte)}
.ag-hora{flex-shrink:0; width:84px; font-variant-numeric:tabular-nums; font-weight:650; font-size:13px}
.ag-hora .tsub{font-weight:400}
.ag-cuerpo{flex:1; min-width:0}
.ag-item.vencido .ag-cuerpo{border-left:3px solid var(--crit); padding-left:10px; margin-left:-13px}
.ag-lado{flex-shrink:0; gap:9px}
@media (max-width:620px){
  .ag-item{flex-wrap:wrap; row-gap:6px}
  .ag-hora{width:64px}
  .ag-lado{flex:1 1 100%; flex-shrink:1; flex-wrap:wrap; min-width:0; margin-left:76px; row-gap:6px}
}
.cal-h{flex-wrap:wrap; gap:10px}
.cal-nav{display:flex; align-items:center; gap:6px}
.cal-nav h3{margin:0; min-width:132px; text-transform:capitalize}
.cal-flecha{padding:2px 10px; font-size:17px; line-height:1.1}
.segmento{display:inline-flex; border:1px solid var(--linea-fuerte); border-radius:var(--r-full);
  overflow:hidden; background:var(--fondo2)}
.segmento button{
  border:0; background:transparent; cursor:pointer; padding:5px 14px;
  font:inherit; font-size:12.5px; color:var(--faint);
}
.segmento button.on{background:var(--acc); color:#fff; font-weight:600}
.cal-b{padding:14px 16px}
.cal-scroll{overflow-x:auto}
.cal-mes{
  display:grid; grid-template-columns:repeat(7, minmax(104px, 1fr)); gap:1px;
  background:var(--linea); border:1px solid var(--linea); border-radius:var(--r);
  overflow:hidden; min-width:728px;
}
.cal-dow{
  background:var(--fondo2); padding:7px 9px; font-size:11px; font-weight:650;
  letter-spacing:.04em; text-transform:uppercase; color:var(--faint);
}
.cal-celda{
  position:relative; background:var(--card); min-height:104px; padding:5px 6px 7px;
  display:flex; flex-direction:column; gap:4px;
}
.cal-celda.fuera{background:var(--fondo2)}
.cal-celda.fuera .cal-num{color:var(--faint)}
.cal-celda.hoy{box-shadow:inset 0 0 0 2px var(--acc)}
.cal-agregar{position:absolute; inset:0; border:0; background:transparent; cursor:pointer; z-index:0}
.cal-agregar::after{content:'+'; position:absolute; right:6px; bottom:3px; font-size:15px; line-height:1;
  color:var(--acc); opacity:0; transition:opacity .12s}
.cal-agregar:hover::after, .cal-agregar:focus-visible::after{opacity:1}
.cal-agregar:focus-visible{outline:2px solid var(--acc); outline-offset:-2px}
.cal-num{position:relative; z-index:1; font-size:12px; font-weight:650; align-self:flex-start;
  pointer-events:none}
.cal-celda.hoy .cal-num{
  background:var(--acc); color:#fff; border-radius:var(--r-full);
  min-width:21px; height:21px; display:grid; place-items:center;
}
.cal-evs{position:relative; z-index:1; display:grid; gap:3px}
.cal-ev{
  display:flex; align-items:baseline; gap:5px; width:100%; text-align:left;
  border:0; border-radius:4px; padding:3px 6px; cursor:pointer;
  font:inherit; font-size:11.5px; line-height:1.25;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.cal-ev i{font-style:normal; font-variant-numeric:tabular-nums; opacity:.8; font-size:10.5px}
.cal-ev:hover{filter:brightness(1.08)}
.cal-mas{
  border:0; background:transparent; cursor:pointer; font:inherit; font-size:11px;
  color:var(--faint); text-align:left; padding:1px 6px;
}
.cal-mas:hover{color:var(--acc); text-decoration:underline}
.ev-acc{background:var(--acc); color:#fff}
.ev-warn{background:var(--warn); color:#fff}
.ev-crit{background:var(--crit); color:#fff}
.ev-ok{background:var(--ok); color:#fff}
.ev-gris{background:var(--linea-fuerte); color:var(--ink)}
.ev-anulado{background:transparent; color:var(--faint); text-decoration:line-through;
  box-shadow:inset 0 0 0 1px var(--linea-fuerte)}
.cal-leyenda{display:flex; flex-wrap:wrap; gap:14px; margin-top:11px}
.cal-leyenda span{display:flex; align-items:center; gap:6px}
.cal-leyenda i{width:11px; height:11px; border-radius:3px; display:inline-block}
@media (max-width:760px){
  .cal-h{gap:8px}
  .cal-nav h3{min-width:0; font-size:14px}
  .cal-b{padding:12px}
  .cal-celda{min-height:82px}
}
.dist{display:grid; grid-template-columns:repeat(11, 1fr); gap:5px; align-items:end; height:148px}
.dist-col{display:flex; flex-direction:column; justify-content:flex-end; height:100%; gap:4px}
.dist-b{border-radius:4px 4px 0 0; min-height:3px; width:100%}
.dist-n{font-size:11px; font-weight:650; text-align:center; color:var(--faint);
  font-variant-numeric:tabular-nums; min-height:14px}
.dist-x{font-size:11px; text-align:center; color:var(--faint); font-variant-numeric:tabular-nums}
.mes-graf{display:flex; gap:12px; align-items:flex-end; height:148px}
.mes-col{flex:1; display:flex; flex-direction:column; justify-content:flex-end; gap:4px; height:100%}
.mes-pila{display:flex; flex-direction:column; border-radius:4px 4px 0 0; overflow:hidden;
  min-height:4px}
.mes-pila i{display:block; width:100%}
.citas{display:grid; gap:7px}
.cita{font-size:12.8px; color:var(--ink); border-left:2px solid var(--linea-fuerte);
  padding-left:10px}
.preg-lista{display:grid; gap:8px}
.preg-fila{display:flex; align-items:center; gap:9px; flex-wrap:wrap}
.preg-fila input[type="text"]{flex:1; min-width:200px}
.preg-fila select{width:190px}
.preg-n{width:22px; height:22px; flex-shrink:0; border-radius:var(--r-full);
  background:var(--fondo2); border:1px solid var(--linea); display:grid; place-items:center;
  font-size:11px; font-weight:650; color:var(--faint)}
.preg-res{padding:11px 0; border-bottom:1px solid var(--divisor)}
.preg-res:last-child{border-bottom:0}
@media (max-width:760px){
  .dist{gap:3px; height:120px}
  .dist-n,.dist-x{font-size:10px}
  .preg-fila select{width:100%}
}
.form-enc{max-width:560px; margin:0 auto}
.fe-cab{text-align:center; padding:6px 0 18px; border-bottom:1px solid var(--divisor); margin-bottom:18px}
.fe-marca{font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--acc); margin-bottom:7px}
.fe-cab h2{margin:0 0 5px; font-size:19px; font-weight:700}
.fe-cab p{margin:0}
.fe-preg{margin-bottom:20px}
.fe-q{display:flex; gap:9px; align-items:flex-start; font-size:14px; font-weight:600;
  line-height:1.45; margin-bottom:10px}
.fe-n{width:21px; height:21px; flex-shrink:0; border-radius:var(--r-full); background:var(--acc);
  color:#fff; display:grid; place-items:center; font-size:11px; font-weight:700; margin-top:1px}
.fe-obl{color:var(--crit); margin-left:2px}
.fe-ops{display:flex; gap:5px; flex-wrap:wrap}
.fe-nps .fe-op{flex:1; min-width:34px}
.fe-escala .fe-op{min-width:44px}
.fe-sino .fe-op{min-width:86px}
.fe-op{
  padding:9px 6px; border:1px solid var(--linea-fuerte); background:var(--card);
  color:var(--ink); border-radius:var(--r-sm); cursor:pointer; font:inherit; font-size:13.5px;
  font-weight:600; font-variant-numeric:tabular-nums; transition:background .12s, border-color .12s;
}
.fe-op:hover{border-color:var(--acc); background:var(--acc-soft)}
.fe-op.on{color:#fff; border-color:transparent}
.fe-op.tok.on{background:var(--ok)}
.fe-op.tcrit.on{background:var(--crit)}
.fe-op.tneu.on{background:var(--linea-fuerte); color:var(--ink)}
.fe-op.tacc.on,.fe-sino .fe-op.on{background:var(--acc)}
.fe-extremos{display:flex; justify-content:space-between; margin-top:6px; font-size:11px}
.fe-texto{
  width:100%; padding:10px 12px; font:inherit; font-size:13.5px; background:var(--card-2);
  color:var(--ink); border:1px solid var(--linea-fuerte); border-radius:var(--r-sm);
  resize:vertical;
}
.fe-pie{display:flex; align-items:center; gap:12px; padding-top:16px;
  border-top:1px solid var(--divisor); margin-top:6px}
.fe-pie .btn{min-width:150px; justify-content:center}
#modal-form{
  position:fixed; inset:0; z-index:70; display:none;
  background:rgba(13,21,38,.5); place-items:center; padding:18px;
}
#modal-form.on{display:grid}
.fe-caja-md{max-width:640px}
.fe-marco{
  border:1px solid var(--linea-caja); border-radius:var(--r); background:var(--card-2);
  padding:18px 20px; max-height:520px; overflow:auto;
}
.fe-marco .form-enc{max-width:none}
@media (max-width:560px){
  .fe-nps{display:grid; grid-template-columns:repeat(6, 1fr)}
  .fe-nps .fe-op{min-width:0; padding:11px 2px}
  .fe-cab h2{font-size:17px}
  .fe-pie{flex-wrap:wrap}
  .fe-pie .btn{width:100%}
}
.camp-graf{display:grid; gap:13px}
.cg-fila{display:grid; grid-template-columns:minmax(150px, 210px) 1fr minmax(120px, auto);
  gap:14px; align-items:center; min-width:0}
.cg-etq{min-width:0}
.cg-etq .tprim{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cg-barras{display:grid; gap:4px}
.cg-b{display:flex; align-items:center; gap:8px}
.cg-b i{display:block; height:13px; border-radius:4px; min-width:2px}
.cg-b span{font-size:11.5px; color:var(--faint); font-variant-numeric:tabular-nums; white-space:nowrap}
.cg-valor{text-align:right}
.cg-valor b{display:block; font-size:13.5px; font-variant-numeric:tabular-nums}
@media (max-width:700px){
  .cg-fila{grid-template-columns:1fr; gap:6px}
  .cg-valor{text-align:left}
}
.rep-graf{display:grid; gap:7px}
.rg-fila{display:grid; grid-template-columns:minmax(110px, 220px) 1fr auto;
  gap:10px; align-items:center; min-width:0}
.rg-etq{font-size:12.4px; color:var(--muted); overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap}
.rg-barra{height:14px; background:var(--divisor); border-radius:4px; overflow:hidden}
.rg-barra i{display:block; height:100%; background:var(--acc); border-radius:4px}
.rg-v{font-size:12px; font-variant-numeric:tabular-nums; font-weight:650; white-space:nowrap}
@media (max-width:560px){
  .rg-fila{grid-template-columns:1fr auto; gap:3px 10px}
  .rg-etq{grid-column:1 / -1; white-space:normal; overflow:visible; text-overflow:clip; overflow-wrap:anywhere}
}
.rep-frec{padding:5px 8px; font:inherit; font-size:12.3px; background:var(--card-2);
  color:var(--ink); border:1px solid var(--linea-fuerte); border-radius:var(--r-sm)}
.versiones{display:flex; gap:8px; flex-wrap:wrap; margin:2px 0 10px}
.version{
  border:1px solid var(--linea); border-radius:var(--r-sm); padding:5px 12px;
  font-size:12px; color:var(--muted); background:var(--card-2);
  font-variant-numeric:tabular-nums;
}
.version.viva{background:var(--acc-soft); border-color:var(--acc-line); color:var(--acc); font-weight:650}
.proyectos-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:var(--gap)}
.proy-card{display:flex; flex-direction:column; gap:0; padding:0; overflow:hidden}
.proy-card .pc-cab{padding:16px 18px 12px; border-bottom:1px solid var(--divisor)}
.proy-card .pc-cuerpo{padding:12px 18px; flex:1}
.proy-card .pc-pie{padding:12px 18px; border-top:1px solid var(--divisor); display:flex; align-items:center; gap:10px}
.pc-datos{display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; font-size:12.4px}
.pc-datos .tsub{margin:0}
.pc-datos b{font-variant-numeric:tabular-nums}
.pc-senal{
  display:block; width:100%; text-align:left; background:transparent; border:0;
  padding:2px 0; font-family:inherit; font-size:11.8px; line-height:1.45;
  overflow-wrap:anywhere; cursor:pointer; border-radius:var(--r-sm);
}
.pc-senal:hover{text-decoration:underline}
@media (max-width:767px){
  .pc-senal{min-height:44px; display:flex; align-items:center}
}
.banda-mets{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  border:1px solid var(--linea); border-radius:var(--r-lg); overflow:hidden;
  background:var(--card); box-shadow:var(--sombra-suave); margin-bottom:var(--gap);
}
.banda-mets .kpi{border:0; border-left:1px solid var(--divisor); border-radius:0; box-shadow:none}
.banda-mets .kpi:first-child{border-left:0}
.dos-col{display:grid; grid-template-columns:minmax(0, 1fr) minmax(280px, 340px); gap:var(--gap); align-items:start}
.dos-col.mitades{grid-template-columns:minmax(0, 1fr) minmax(0, 1fr)}
.dos-col.mitades>div>table,.ali-portal table{min-width:0}
.dos-col.izq{grid-template-columns:minmax(280px, 380px) minmax(0, 1fr)}
@media (max-width:1020px){
  .dos-col,.dos-col.mitades,.dos-col.izq{grid-template-columns:minmax(0, 1fr)}
}
.ficha-cab{
  display:flex; gap:16px; align-items:flex-start; flex-wrap:wrap;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r-xl);
  box-shadow:var(--sombra-suave); padding:18px 20px; margin-bottom:var(--gap);
}
.ficha-cab h2{margin:0; font-size:19px; font-weight:700; letter-spacing:-.015em}
.ficha-cab .fc-sub{font-size:13px; color:var(--muted); margin-top:3px}
.ficha-cab .fc-datos{flex:1; min-width:220px}
.ficha-cab .fc-pills{display:flex; gap:6px; flex-wrap:wrap; margin-top:9px}
.ficha-cab .fc-lado{display:flex; gap:18px; align-items:center; flex-wrap:wrap}
.fc-resp{display:flex; gap:9px; align-items:center}
.fc-resp .tsub{margin:0}
.nps-caja{display:flex; align-items:center; gap:20px}
.nps-v{font-size:44px; font-weight:750; line-height:1; font-variant-numeric:tabular-nums; letter-spacing:-.03em}
.resp-score{
  flex-shrink:0; width:52px; height:52px; border-radius:12px;
  display:grid; place-items:center; font-size:19px; font-weight:750;
  font-variant-numeric:tabular-nums;
}
.resp-score.ok{background:var(--ok-soft); color:var(--ok)}
.resp-score.warn{background:var(--warn-soft); color:var(--warn)}
.resp-score.crit{background:var(--crit-soft); color:var(--crit)}
.toggle{
  position:relative; width:38px; height:22px; border-radius:var(--r-full);
  background:var(--linea-fuerte); border:0; cursor:pointer; flex-shrink:0;
  transition:background .15s;
}
.toggle::after{
  content:''; position:absolute; top:3px; left:3px; width:16px; height:16px;
  border-radius:50%; background:#fff; transition:left .15s;
  box-shadow:0 1px 2px rgba(0,0,0,.25);
}
.toggle[aria-checked="true"]{background:var(--ok)}
.toggle[aria-checked="true"]::after{left:19px}
.galeria{display:grid; grid-template-columns:repeat(auto-fill, minmax(210px, 1fr)); gap:14px}
.gal-card{
  margin:0; border:1px solid var(--linea); border-radius:var(--r-lg); overflow:hidden;
  background:var(--card); cursor:pointer; box-shadow:var(--sombra-suave);
  transition:box-shadow .18s, border-color .18s;
}
.gal-card:hover{box-shadow:var(--sombra-suave-hover); border-color:var(--acc-line)}
.gal-marco{position:relative; aspect-ratio:4/3; background:var(--card-2); overflow:hidden}
.gal-img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.gal-ph{
  position:absolute; inset:0; display:grid; place-items:center; text-align:center;
  color:var(--faint); font-size:10.5px; line-height:1.5; gap:0; align-content:center;
}
.gal-ph svg{width:26px; height:26px; margin-bottom:6px}
.gal-badge{position:absolute; top:8px; left:8px}
.gal-card figcaption{padding:9px 11px}
.matriz{
  display:grid; grid-template-columns:auto repeat(3, 1fr); gap:5px;
  max-width:340px;
}
.mz-cab{
  font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:650;
  color:var(--muted); text-align:center; padding-bottom:2px; align-self:end;
}
.mz-lado{
  font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; font-weight:650;
  color:var(--muted); align-self:center; padding-right:6px; text-align:right;
}
.mz-celda{
  aspect-ratio:2.1; border-radius:8px; border:1px solid transparent;
  display:grid; place-items:center; font-size:16px; font-weight:750;
  font-variant-numeric:tabular-nums; cursor:pointer; font-family:inherit;
  transition:border-color .15s, transform .15s;
}
.mz-celda:disabled{cursor:default; opacity:.55}
.mz-celda:not(:disabled):hover{border-color:var(--acc); transform:translateY(-1px)}
.mz-celda.on{border-color:var(--acc); box-shadow:0 0 0 2px var(--acc-soft)}
.mz-ok{background:var(--ok-soft); color:var(--ok)}
.mz-warn{background:var(--warn-soft); color:var(--warn)}
.mz-crit{background:var(--crit-soft); color:var(--crit)}
.mz-eje{min-height:0}
.cadena-ev{display:inline-flex; align-items:center; gap:4px; flex-wrap:wrap}
.ev-pieza{
  font-family:var(--fm); font-size:10.5px; color:var(--ink);
  background:var(--neu-soft); border:1px solid var(--linea);
  border-radius:6px; padding:1px 7px; white-space:nowrap;
}
.ev-fl{color:var(--faint); font-size:11px}
.ev-puntos{display:inline-flex; gap:3px}
.ev-puntos i{
  width:9px; height:9px; border-radius:50%;
  background:var(--crit-soft); border:1px solid var(--crit-line);
}
.ev-puntos i.si{background:var(--st-ok); border-color:var(--st-ok)}
.visor-area{
  background:var(--card-2); border:1px solid var(--linea); border-radius:var(--r-lg);
  min-height:calc(100vh - var(--h) - 210px); display:flex; flex-direction:column;
  justify-content:center; overflow:auto;
}
.visor-lienzo{padding:18px; text-align:center}
.visor-cad{display:flex; flex-direction:column; flex:1; min-height:min(78vh, 900px); align-self:stretch}
.visor-cad-marco{flex:1; display:flex; min-height:0}
.cad-cargando{margin:auto; color:var(--muted); display:flex; gap:8px; align-items:center; padding:40px}
.cad{display:flex; flex-direction:column; flex:1; min-height:0}
.cad-barra{display:flex; flex-wrap:wrap; gap:6px; padding:8px; border-bottom:1px solid var(--linea); background:var(--card)}
.cad-b{padding:5px 10px; font-size:12.5px}
.cad-aviso{padding:8px 12px; font-size:13px; line-height:1.4; border-bottom:1px solid var(--linea);
  background:var(--card); color:var(--ink); overflow-wrap:anywhere}
.cad-b.activo{background:var(--acc-soft); color:var(--acc); border-color:var(--acc-line)}
.cad-lienzo{position:relative; flex:1; min-height:360px; overflow:hidden; background:#10151f}
.cad-lienzo canvas{position:absolute; inset:0; display:block}
.cad-capas{position:absolute; top:8px; right:8px; bottom:8px; width:min(280px, 80%); overflow:auto;
  background:var(--card); color:var(--ink); border:1px solid var(--linea); border-radius:var(--r);
  box-shadow:var(--sombra-lg); padding:8px; font-size:12.5px}
.cad-capas-cab{display:flex; gap:6px; margin-bottom:6px; position:sticky; top:-8px; background:var(--card); padding:4px 0}
.cad-capa{display:flex; gap:8px; align-items:center; padding:3px 2px; cursor:pointer; overflow-wrap:anywhere}
.cad-muestra{width:12px; height:12px; border-radius:3px; flex:none; border:1px solid var(--linea-fuerte)}
.cad-estado{font:12px var(--fm); color:var(--muted); padding:5px 10px; min-height:26px; border-top:1px solid var(--linea); background:var(--card)}
.cad-nota{padding:6px 10px}
.visor-lienzo img{
  max-width:100%; border:1px solid var(--linea-fuerte); border-radius:6px;
  background:#fff; box-shadow:var(--sombra-md);
}
.radar{width:100%; max-width:280px; height:auto}
.rd-grid{fill:none; stroke:var(--divisor); stroke-width:1}
.rd-serie{fill:var(--acc); fill-opacity:.16; stroke:var(--acc); stroke-width:2}
.rd-punto{fill:var(--acc)}
.rd-etq{font-size:9.5px; fill:var(--muted); font-weight:600}
.alc{
  display:inline-flex; align-items:center; gap:5px; vertical-align:middle;
  font-size:10px; font-weight:650; letter-spacing:.06em; text-transform:uppercase;
  color:var(--muted); background:var(--card-2); border:1px solid var(--linea);
  border-radius:var(--r-full); padding:2px 9px; margin-right:8px;
}
.alc svg{width:11px; height:11px}
.txt-warn{color:var(--warn)}
.txt-crit{color:var(--crit)}
.expl-i[data-expl]{cursor:pointer}
.expl-i[data-expl]:hover{text-decoration:underline; text-decoration-color:var(--faint); text-underline-offset:3px}
header{flex-wrap:wrap}
#banner-prev{
  flex-basis:100%; order:-1; display:flex; align-items:center; gap:8px;
  margin:0 -20px; padding:7px 20px; background:var(--nav); color:#fff; font-size:12.5px;
}
#banner-prev svg{flex-shrink:0}
#banner-prev b{font-weight:650; white-space:nowrap}
#banner-prev span{color:rgba(255,255,255,.72); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0}
#banner-prev .btn{
  margin-left:auto; flex-shrink:0; background:#fff; color:var(--nav);
  border-color:#fff; padding:4px 12px; font-size:12px;
}
#modal-conf{
  position:fixed; inset:0; z-index:70; display:none;
  background:rgba(13,21,38,.5); place-items:center; padding:18px;
}
#modal-conf.on{display:grid}
#modal-conf .md-caja{max-width:480px}
.mc-impacto{display:grid; gap:8px; margin:2px 0 14px}
.mc-impacto>div{display:flex; gap:9px; align-items:flex-start; font-size:12.8px; color:var(--muted); line-height:1.5}
.mc-impacto svg{width:15px; height:15px; flex-shrink:0; margin-top:2px; color:var(--warn)}
.mc-campo{display:block; font-size:11.5px; font-weight:600; color:var(--muted); margin-bottom:11px}
.mc-campo input,.mc-campo select,.mc-campo textarea{
  display:block; width:100%; margin-top:4px; padding:9px 11px; font-size:13px;
  background:var(--card-2); color:var(--ink); border:1px solid var(--linea-fuerte);
  border-radius:var(--r-sm); font-family:inherit;
}
.mc-campo textarea{resize:vertical; min-height:74px; line-height:1.55}
.ent-olvide{
  display:block; width:100%; margin-top:10px; padding:6px; background:none; border:0;
  color:var(--acc); font:inherit; font-size:12.5px; cursor:pointer; text-align:center;
}
.ent-olvide:hover{text-decoration:underline}
.ent-ok{color:var(--ok); font-size:12.5px; margin-top:8px; line-height:1.5}
.btn.sin-permiso, .btn.sin-permiso:hover{
  opacity:.42; cursor:not-allowed; filter:grayscale(.7);
  background:var(--card-2); color:var(--faint); border-color:var(--linea);
}
.mc-casillas{display:flex; flex-direction:column; gap:2px; margin-top:5px}
.mc-casilla{display:flex; gap:9px; align-items:flex-start; padding:8px 10px;
  border:1px solid var(--linea); border-radius:var(--r-sm); cursor:pointer;
  font-weight:400; color:var(--ink); background:var(--card-2)}
.mc-casilla:hover{border-color:var(--linea-fuerte)}
.mc-casilla input{width:16px; height:16px; margin:1px 0 0; flex:none; accent-color:var(--acc)}
.mc-casilla span{display:block; font-size:12.5px; line-height:1.45}
.mc-casilla b{display:block; font-size:12.5px; font-weight:600}
.mc-casilla .tsub{display:block; margin-top:1px}
.mc-casilla:has(input:checked){border-color:var(--acc-line); background:var(--acc-soft)}
#mc-vista{min-height:0}
.mc-pie{display:flex; gap:9px; justify-content:flex-end; margin-top:4px;
  position:sticky; bottom:0; z-index:2; background:var(--card); padding:10px 0 4px}
.md-caja{scroll-padding-top:76px; scroll-padding-bottom:72px}
.btn.peligro{background:var(--st-crit); border-color:var(--st-crit); color:#fff}
.btn.peligro:hover{filter:brightness(1.08)}
.setup-cab .setup-fila{display:flex; gap:22px; align-items:flex-start; flex-wrap:wrap}
.setup-izq{flex:1; min-width:220px}
.setup-n{font-size:26px; font-weight:700; letter-spacing:-.02em; margin-top:2px}
.setup-pct{color:var(--muted); font-size:17px; font-weight:600}
.setup-metas{display:flex; gap:16px; margin-top:8px; font-size:12.5px; color:var(--muted); flex-wrap:wrap}
.setup-metas svg{vertical-align:-3px; margin-right:3px}
.setup-cta{
  min-width:200px; text-align:right; display:flex; flex-direction:column;
  gap:4px; align-items:flex-end;
}
.setup-cta .btn{margin-top:6px}
.setup-bar{height:9px; margin-top:16px}
.setup-bar i{background:var(--acc)}
.chk{display:grid; gap:2px; padding-top:8px; padding-bottom:8px}
.chk-paso{
  display:flex; gap:12px; align-items:flex-start; padding:11px 6px;
  border-bottom:1px solid var(--divisor);
}
.chk-paso:last-child{border-bottom:0}
.chk-ic{
  width:26px; height:26px; border-radius:var(--r-full); flex-shrink:0;
  display:grid; place-items:center; margin-top:1px;
  border:1.5px solid var(--linea-fuerte); color:var(--faint);
}
.chk-paso.listo .chk-ic{background:var(--st-ok); border-color:var(--st-ok); color:#fff}
.chk-paso.actual .chk-ic{border-color:var(--acc); color:var(--acc)}
.chk-paso.bloq .chk-ic{background:var(--st-crit); border-color:var(--st-crit); color:#fff}
.chk-paso.listo .tprim{color:var(--muted)}
.chk-cuerpo{flex:1; min-width:0}
.chk-min{flex-shrink:0; font-size:11.5px; color:var(--faint); font-variant-numeric:tabular-nums; margin-top:4px}
.chk-crit{margin-top:5px}
.chk-crit summary{
  cursor:pointer; font-size:11.5px; color:var(--acc); list-style:none; width:fit-content;
}
.chk-crit summary::before{content:'▸ '; font-size:10px}
.chk-crit[open] summary::before{content:'▾ '}
.chk-crit>div{font-size:12px; color:var(--muted); padding:6px 0 2px; line-height:1.55}
.wiz{display:flex; align-items:center; gap:10px; margin-bottom:var(--gap); flex-wrap:wrap}
.wiz-p{display:inline-flex; align-items:center; gap:7px; font-size:12.5px; color:var(--faint); font-weight:600}
.wiz-p i{
  width:24px; height:24px; border-radius:var(--r-full); font-style:normal; font-size:11.5px;
  display:grid; place-items:center; border:1.5px solid var(--linea-fuerte); color:var(--faint);
}
.wiz-p.actual{color:var(--ink)}
.wiz-p.actual i{border-color:var(--acc); background:var(--acc); color:#fff}
.wiz-p.hecho{color:var(--muted)}
.wiz-p.hecho i{border-color:var(--st-ok); background:var(--st-ok); color:#fff}
.wiz-sep{flex:0 0 22px; height:1px; background:var(--linea-fuerte)}
.imp-cols{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:10px}
.imp-cols .kl{margin-right:4px}
.imp-area{
  width:100%; font-family:var(--fm); font-size:12px; padding:11px;
  background:var(--card-2); color:var(--ink); border:1px dashed var(--linea-fuerte);
  border-radius:var(--r-md);
}
.imp-area:focus{border-style:solid; border-color:var(--acc); outline:none}
.plegado{margin-bottom:var(--gap)}
.plegado>summary{
  cursor:pointer; list-style:none; font-size:13px; font-weight:600; color:var(--ink);
  padding:11px 14px; background:var(--card); border:1px solid var(--linea); border-radius:var(--r-md);
  display:flex; align-items:center; gap:8px;
}
.plegado>summary svg{color:var(--muted)}
.plegado[open]>summary{border-bottom-left-radius:0; border-bottom-right-radius:0}
.org-cab .org-fila{display:flex; gap:16px; align-items:center; flex-wrap:wrap}
.org-ic{
  width:46px; height:46px; border-radius:var(--r-md); flex-shrink:0;
  background:var(--nav); color:#fff; display:grid; place-items:center;
}
.org-ic svg{width:22px; height:22px}
.org-id{flex:1; min-width:240px}
.org-nombre{font-size:21px; font-weight:700; letter-spacing:-.02em}
.org-mets{
  display:flex; flex-direction:column; gap:6px; font-size:12.8px; color:var(--muted);
  border-left:1px solid var(--divisor); padding-left:18px;
}
.org-mets b{color:var(--ink)}
.tl-id{display:grid; gap:0}
.tl-hito{display:flex; gap:13px; position:relative; padding-bottom:16px}
.tl-hito:last-child{padding-bottom:0}
.tl-hito::before{
  content:''; position:absolute; left:5px; top:14px; bottom:0; width:1.5px;
  background:var(--divisor);
}
.tl-hito:last-child::before{display:none}
.tl-hito>i{
  width:12px; height:12px; border-radius:var(--r-full); flex-shrink:0; margin-top:4px;
  background:var(--card); border:2px solid var(--faint); position:relative; z-index:1;
}
.tl-hito.vivo>i{border-color:var(--ok); background:var(--ok)}
.tl-hito:not(.vivo) .tprim{color:var(--muted); font-weight:500}
.arbol{padding-top:6px; padding-bottom:6px}
.nd-fila{
  display:flex; align-items:center; gap:9px; padding:7px 6px 7px calc(6px + var(--prof, 0) * 22px);
  border-bottom:1px solid var(--divisor);
}
.arbol>.nd-fila:last-child{border-bottom:0}
.nd-tog{
  width:22px; height:22px; flex-shrink:0; display:grid; place-items:center;
  background:transparent; border:0; border-radius:var(--r-sm); cursor:pointer; color:var(--faint);
}
.nd-tog:hover{background:var(--card-2); color:var(--ink)}
.nd-tog svg{width:14px; height:14px; transition:transform .15s}
.nd-tog.cerrado svg{transform:rotate(-90deg)}
.nd-tog.vacio{cursor:default}
.nd-cuerpo{flex:1; min-width:0; display:flex; align-items:baseline; gap:9px; flex-wrap:wrap}
.nd-conteo{font-size:11.5px; color:var(--faint)}
.plantilla-cards{display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:11px}
.plantilla-card{
  border:1px solid var(--linea); border-radius:var(--r-md); padding:13px 15px;
  background:var(--card-2);
}
.plantilla-card.aplicada{border-color:var(--ok-line); background:var(--ok-soft)}
.plantilla-cadena{font-size:12px; color:var(--muted); margin-top:7px; line-height:1.6}
.plantilla-cadena span{color:var(--faint)}
.flujo-diag{display:grid; gap:0; max-width:640px}
.fd-paso{
  display:flex; gap:12px; align-items:flex-start; padding:11px 13px;
  border:1px solid var(--linea); border-radius:var(--r-md); background:var(--card-2);
}
.fd-paso.hueco{border-color:var(--warn-line); background:var(--warn-soft)}
.fd-n{
  width:24px; height:24px; border-radius:var(--r-full); flex-shrink:0; margin-top:1px;
  background:var(--nav); color:#fff; font-size:11.5px; font-weight:700;
  display:grid; place-items:center;
}
.fd-cuerpo{flex:1; min-width:0}
.fd-quien{display:flex; align-items:center; gap:8px; margin-top:5px; flex-wrap:wrap; font-size:12.5px}
.fd-plazo{flex-shrink:0; font-size:11.5px; color:var(--faint); font-variant-numeric:tabular-nums; margin-top:4px}
.fd-linea{width:1.5px; height:14px; background:var(--linea-fuerte); margin-left:24px}
.nr-lista{display:grid; gap:0}
.nr-fila{
  display:flex; gap:14px; align-items:flex-start; padding:12px 6px;
  border-bottom:1px solid var(--divisor);
}
.nr-fila:last-child{border-bottom:0}
.nr-frase{flex:1; min-width:0; font-size:13px; line-height:1.6}
.nr-k{
  font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:var(--faint);
}
.nr-msj{font-size:12.3px; color:var(--muted); margin-top:3px; font-style:italic}
.nr-gen{
  flex-shrink:0; text-align:center; min-width:56px; padding-top:2px;
}
.nr-gen b{display:block; font-size:17px; font-variant-numeric:tabular-nums}
.nr-gen span{font-size:10.5px; color:var(--faint)}
.canales{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:11px}
.canal-card{
  display:flex; gap:11px; align-items:center; padding:13px 15px;
  border:1px solid var(--linea); border-radius:var(--r-md); background:var(--card-2);
}
.canal-ic{color:var(--muted); flex-shrink:0}
.canal-cuerpo{flex:1; min-width:0}
.canal-card .pill{flex-shrink:0}
.accmenu{position:relative}
.accmenu summary{
  list-style:none; cursor:pointer; width:30px; height:30px; border-radius:var(--r-sm);
  display:grid; place-items:center; color:var(--muted); border:1px solid transparent;
}
.accmenu summary:hover{background:var(--card-2); border-color:var(--linea)}
.accmenu[open] summary{background:var(--card-2); border-color:var(--linea-fuerte)}
.accmenu:not([open]) .accmenu-m{display:none}
.accmenu-m{
  position:absolute; right:0; top:34px; z-index:30; min-width:170px;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r-md);
  box-shadow:var(--sombra-md); padding:5px; display:grid; gap:1px;
  max-width:min(260px, calc(100vw - 24px));
}
.accmenu-m .mp-item{white-space:normal; overflow-wrap:anywhere}
@media (max-width:767px){
  .accmenu-m{right:auto; left:0}
}
.perfil-cab{
  display:flex; align-items:center; gap:14px; padding-bottom:14px; margin-bottom:8px;
  border-bottom:1px solid var(--divisor);
}
.ext-card .ext-fila{display:flex; gap:14px; align-items:flex-start; flex-wrap:wrap}
.ext-ic{
  width:40px; height:40px; border-radius:var(--r-md); flex-shrink:0;
  background:var(--card-2); border:1px solid var(--linea); color:var(--muted);
  display:grid; place-items:center;
}
.ext-cuerpo{flex:1; min-width:230px}
.ext-acciones{display:flex; flex-direction:column; gap:7px; align-items:stretch; flex-shrink:0}
.pv-lista{display:grid; gap:7px}
.pv-si,.pv-no{display:flex; gap:9px; align-items:flex-start; font-size:12.8px; line-height:1.5}
.pv-si svg{color:var(--ok); flex-shrink:0; margin-top:2px}
.pv-no svg{color:var(--crit); flex-shrink:0; margin-top:2px}
.pv-no span{color:var(--muted)}
@media (max-width:620px){
  .org-mets{border-left:0; padding-left:0; flex-direction:row; flex-wrap:wrap; gap:12px}
  .setup-cta{text-align:left; align-items:flex-start}
  .ext-acciones{flex-direction:row; flex-wrap:wrap; width:100%}
  .fd-plazo{display:none}
  #banner-prev span{display:none}
}
@media print{
  header,.sidebar,.menu-btn,.btn,#desglose,#toast,#notifs-panel,#menu-perfil,#modal-demo,.nota{display:none !important}
  .app{display:block}
  main{width:100%; padding:0}
  .g-caja{max-height:none; overflow:visible}
  .g-pista{-webkit-print-color-adjust:exact; print-color-adjust:exact}
  body{background:#fff; color:#000; font-size:12px}
  .panel,.kpi,.aviso{box-shadow:none; border-color:#bbb; break-inside:avoid}
  .kpis{grid-template-columns:repeat(4, 1fr)}
  a{color:#000; text-decoration:none}
}
.tiras { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 10px; }
.tira {
  flex: 0 0 148px; display: flex; flex-direction: column; gap: 6px; padding: 6px;
  background: var(--fondo-2); border: 1px solid var(--linea); border-radius: var(--r);
  cursor: pointer; text-align: left; font: inherit; color: inherit;
}
.tira:hover { border-color: var(--acc); }
.tira.sel { border-color: var(--acc); box-shadow: 0 0 0 2px color-mix(in srgb, var(--acc) 25%, transparent); }
.tira img { width: 100%; height: 84px; object-fit: cover; border-radius: 3px; background: var(--fondo); }
.tira span { font-size: 11px; line-height: 1.25; color: var(--txt-2); }
.visor-lienzo #vista-grande { width: 100%; max-height: min(62vh, 700px); object-fit: contain; }
#senal {
  position: fixed;
  left: 12px; right: 12px;
  bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  z-index: 55;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 11px 14px;
  border-radius: 12px;
  font-size: 14px; font-weight: 500;
  box-shadow: 0 6px 24px -8px rgba(0,0,0,.4);
}
#senal .btn { padding: 5px 11px; font-size: 13px; }
#senal b { font-variant-numeric: tabular-nums; }
.senal-sin  { background: var(--crit);  color: #fff; }
.senal-cola { background: var(--warn);  color: #1b1300; }
.senal-ok   { display: none; }
@media (min-width: 900px) {
  #senal { left: auto; right: 18px; max-width: 420px; }
}
.ppto-grupo { background: var(--fondo-2, rgba(127, 127, 127, .07)); }
.ppto-grupo td { font-weight: 600; }
input.cifra-mal{border-color:var(--crit) !important; box-shadow:0 0 0 2px var(--crit-line)}
.cart-barra-h{flex-wrap:wrap; gap:10px; align-items:flex-end}
.cart-filtro{display:flex; flex-direction:column; gap:2px; min-width:0}
.cart-filtro select{max-width:220px}
.cart-check{display:inline-flex; align-items:center; gap:6px; font-size:13px; white-space:nowrap}
.cart-tablero{
  display:grid; grid-auto-flow:column; grid-auto-columns:minmax(220px, 1fr);
  gap:10px; overflow-x:auto; padding-bottom:6px; -webkit-overflow-scrolling:touch;
}
.cart-col{background:var(--card-2); border:1px solid var(--linea); border-radius:var(--r-lg); padding:10px;
  display:flex; flex-direction:column; gap:8px; min-width:0}
.cart-col-h{padding:2px 2px 6px; border-bottom:1px solid var(--divisor)}
.cart-col-n{font-size:11px; letter-spacing:.05em; text-transform:uppercase; font-weight:650}
.cart-vacia{padding:8px 2px}
.cart-tarjeta{
  display:flex; flex-direction:column; gap:4px; text-align:left; font-family:inherit; color:inherit;
  background:var(--card); border:1px solid var(--linea); border-radius:var(--r); padding:10px 11px; cursor:pointer;
  transition:border-color .15s, box-shadow .15s;
}
.cart-tarjeta:hover{border-color:var(--acc-line); box-shadow:var(--sombra-suave)}
.cart-tarjeta.mora{border-left:3px solid var(--crit)}
.cart-t-v{font-weight:700; font-variant-numeric:tabular-nums}
.cart-barra{height:6px; border-radius:999px; background:var(--neu-soft); overflow:hidden; margin:3px 0}
.cart-barra i{display:block; height:100%; border-radius:999px}
.punto-mora{width:9px; height:9px; border-radius:50%; background:var(--crit); flex-shrink:0}
.cart-hitos{display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:6px; margin-bottom:var(--gap)}
.cart-hito{display:flex; flex-direction:column; gap:2px; padding:9px 10px; border-radius:var(--r);
  border:1px solid var(--linea); background:var(--card); font-size:12.5px; min-width:0}
.cart-hito.ok{background:var(--ok-soft); border-color:var(--ok-line)}
.cart-hito-p{font-weight:700}
.cart-hito.ok .cart-hito-p{color:var(--ok)}
@media (max-width: 760px){
  .cart-hitos{grid-template-columns:repeat(2, minmax(0, 1fr))}
  .cart-filtro select{max-width:100%}
}
#modal-cot{position:fixed; inset:0; z-index:70; display:none; background:rgba(13,21,38,.5); place-items:center; padding:18px}
#modal-cot.on{display:grid}
#modal-cot .md-caja{max-width:920px}
.cv-seccion{margin:16px 0 6px; padding-top:10px; border-top:1px solid var(--linea); font-size:13px}
.cv-seccion:first-child{margin-top:0; padding-top:0; border-top:0}
.cv-grid{display:grid; grid-template-columns:1fr 1fr; gap:0 14px}
.cv-grid-3{grid-template-columns:repeat(3, 1fr)}
.cv-ficha, .cv-resumen{display:grid; grid-template-columns:repeat(3, 1fr); gap:8px 14px; padding:10px 12px;
  border:1px solid var(--linea); border-radius:var(--r-sm); background:var(--card-2); font-size:12.8px; margin:2px 0 8px}
.cv-resumen{margin-top:10px}
.cv-ficha .kl, .cv-resumen .kl, .sub-datos .kl{display:block}
.cv-apagada{opacity:.6; cursor:not-allowed}
.cv-cuadre{margin:10px 0 4px}
.plan-tabla{max-height:420px; overflow:auto; border:1px solid var(--linea); border-radius:var(--r-sm)}
.plan-tabla table{margin:0}
.plan-tabla thead th{position:sticky; top:0; background:var(--card); z-index:1}
.plan-tabla input{width:100%; min-width:120px; padding:6px 8px; font-size:12.8px; background:var(--card-2); color:var(--ink);
  border:1px solid var(--linea-fuerte); border-radius:var(--r-sm); font-family:inherit}
.plan-tabla input.plan-pesos{text-align:right; font-variant-numeric:tabular-nums}
.plan-tabla tr.plan-fijada td{background:var(--acc-soft)}
.plan-tabla tr.plan-extra td{background:var(--warn-soft)}
.plan-tabla tfoot td{border-top:2px solid var(--linea-fuerte)}
.plan-det{margin-top:8px}
.plan-det summary{cursor:pointer; font-size:12.8px; font-weight:600; color:var(--acc)}
.sub-tarjetas{display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:12px}
.sub-tarjeta{border:1px solid var(--linea); border-radius:var(--r-md, 12px); padding:12px; display:grid; gap:8px; background:var(--card)}
.sub-datos{display:grid; grid-template-columns:1fr 1fr; gap:6px 12px; font-size:12.5px}
.sub-logo{max-height:34px; max-width:110px; object-fit:contain}
.inv-detalle td{vertical-align:top}
@media (max-width:720px){
  .cv-grid, .cv-grid-3{grid-template-columns:1fr}
  .cv-ficha, .cv-resumen{grid-template-columns:1fr 1fr}
  #modal-cot{padding:8px}
  .plan-tabla input{min-width:96px}
}
:root{
  --serie-1:#1E56C9; --serie-2:#1F8C80; --serie-3:#B7791F; --serie-4:#C2567A;
  --serie-5:#2B8FB3; --serie-6:#3E8E48; --serie-7:#7486A6; --serie-8:#B4BECB;
}
@media (prefers-color-scheme:dark){:root{
  --serie-1:#5B92F5; --serie-2:#3CC2B2; --serie-3:#E0A33E; --serie-4:#E07FA0;
  --serie-5:#56BEDE; --serie-6:#5FB868; --serie-7:#94A4C0; --serie-8:#56637A;
}}
.rc-filtros{align-items:flex-end}
.rc-filtros input[type="date"]{max-width:170px}
.rc-cabeza{display:flex; flex-wrap:wrap; gap:8px; align-items:center; border-top:1px solid var(--divisor)}
.rc-entrada{align-items:center; margin-bottom:var(--gap)}
.rc-entrada>div:first-child{color:var(--acc)}
.kpi.rc-kpi{font:inherit; color:inherit; text-align:left; cursor:pointer; width:100%;
  transition:border-color .15s, box-shadow .15s}
.kpi.rc-kpi:hover,.kpi.rc-kpi:focus-visible{border-color:var(--acc-line); box-shadow:var(--sombra-suave)}
.kpi.rc-kpi.ok .kv{color:var(--ok)}
.rc-cifra{font:inherit; font-weight:650; color:var(--acc); background:none; border:0; padding:0 2px; cursor:pointer;
  font-variant-numeric:tabular-nums; text-decoration:underline; text-decoration-color:var(--acc-line); text-underline-offset:3px}
.rc-cifra:hover,.rc-cifra:focus-visible{color:var(--acc-hover); text-decoration-color:currentColor}
.rc-cifra.btn{text-decoration:none; font-weight:500}
.rc-cifra.rc-crit{color:var(--crit)}
.rc-graf-marco{overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:4px; max-width:100%}
.rc-seg{cursor:pointer}
.rc-seg:hover,.rc-seg:focus{opacity:.8; outline:none}
.rc-leyenda{display:flex; flex-wrap:wrap; gap:6px 14px; margin:10px 0 4px}
.rc-ley{display:inline-flex; align-items:center; gap:6px; font:inherit; font-size:12.5px; color:var(--ink);
  background:none; border:0; padding:2px 0; cursor:pointer}
.rc-ley i{width:10px; height:10px; border-radius:3px; flex-shrink:0}
.rc-ley b{font-variant-numeric:tabular-nums}
.rc-ley:hover b,.rc-ley:focus-visible b{color:var(--acc)}
.rc-calif{margin-top:12px; padding-top:10px; border-top:1px solid var(--divisor)}
.rc-calif-n{gap:6px 14px; flex-wrap:wrap; align-items:baseline}
.rc-tabla{margin-top:10px}
.rc-tabla summary{cursor:pointer; margin-bottom:6px}
.rc-embudo-n{gap:6px; flex-wrap:wrap; align-items:baseline; margin-bottom:12px; font-size:13.5px}
.rc-fila{font:inherit; color:inherit; background:none; border:0; padding:3px 0; cursor:pointer; text-align:left; width:100%}
.rc-fila:hover .rg-etq,.rc-fila:focus-visible .rg-etq{color:var(--acc)}
.rc-metas{display:grid; gap:12px}
.rc-meta{border:1px solid var(--linea); border-radius:var(--r); padding:10px 12px; display:grid; gap:6px; min-width:0}
.rc-meta-l{display:grid; grid-template-columns:70px minmax(0, 1fr) auto; gap:10px; align-items:center}
.rc-meta-b{position:relative; height:12px; border-radius:var(--r-full); background:var(--divisor); overflow:hidden}
.rc-meta-b i{position:absolute; left:0; top:0; bottom:0; border-radius:var(--r-full)}
.rc-real{background:var(--acc)}
.rc-proy{background:var(--acc-line)}
.rc-meta-v{font-size:12.5px; font-variant-numeric:tabular-nums; white-space:nowrap}
.rc-meta-ley{display:flex; gap:14px; margin-top:8px}
.rc-meta-ley span{display:inline-flex; align-items:center; gap:6px}
.rc-meta-ley i{display:inline-block; width:14px; height:8px; border-radius:4px}
.rc-des{display:grid; gap:2px}
.rc-des-f{display:flex; gap:10px; justify-content:space-between; align-items:flex-start; padding:8px 0;
  border-bottom:1px solid var(--divisor)}
.rc-des-t{min-width:0; flex:1}
.rc-des-d{display:flex; flex-direction:column; gap:4px; align-items:flex-end; flex-shrink:0; max-width:48%}
@media (max-width: 760px){
  .rc-filtros .cart-filtro{flex:1 1 44%}
  .rc-filtros .cart-filtro select,.rc-filtros input[type="date"]{max-width:100%; width:100%}
  .rc-cabeza .btn{flex:1 1 100%}
  .rc-meta-l{grid-template-columns:54px minmax(0, 1fr); }
  .rc-meta-v{grid-column:1 / -1}
  .rc-des-f{flex-direction:column}
  .rc-des-d{align-items:flex-start; max-width:100%}
  .rc-des-d .tsub{text-align:left !important}
}
.ali-lista{display:grid; gap:10px}
.ali-card{border:1px solid var(--linea); border-radius:var(--r-lg); padding:12px 14px; background:var(--card)}
.ali-pasos{display:grid; grid-template-columns:repeat(auto-fit, minmax(118px, 1fr)); gap:6px; margin-bottom:var(--gap)}
.ali-paso{display:flex; align-items:center; gap:7px; padding:8px 10px; border-radius:var(--r); background:var(--card-2);
  border:1px solid var(--linea); font-size:12.5px; color:var(--muted); font-weight:600; min-width:0}
.ali-paso span{display:grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--neu-soft);
  font-size:11px; flex-shrink:0}
.ali-paso.on{background:var(--acc-soft); border-color:var(--acc-line); color:var(--acc)}
.ali-paso.on span{background:var(--acc); color:#fff}
.ali-paso.hecho{color:var(--ok)}
.ali-paso.hecho span{background:var(--ok-soft); color:var(--ok)}
.ali-tarjetas{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:12px}
.ali-tarjeta{position:relative; display:flex; flex-direction:column; gap:5px; text-align:left; font-family:inherit;
  color:inherit; background:var(--card); border:1px solid var(--linea); border-radius:var(--r-lg); padding:14px;
  cursor:pointer; transition:border-color .15s, box-shadow .15s}
.ali-tarjeta:hover, .ali-tarjeta:focus-visible{border-color:var(--acc-line); box-shadow:var(--sombra-suave)}
.ali-tarjeta.unidas{border-left:3px solid var(--area-crm)}
.ali-t-titulo{font-size:15px; font-weight:650}
.ali-t-dato{font-size:12.8px}
.ali-t-precio{font-size:17px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--ink)}
.ali-t-ir{margin-top:6px; font-size:12.5px; font-weight:600; color:var(--acc)}
.ali-etq{align-self:flex-start; font-size:10.5px; letter-spacing:.04em; text-transform:uppercase; font-weight:650;
  padding:2px 8px; border-radius:var(--r-full); background:var(--acc-soft); color:var(--acc)}
.ali-logo{max-height:36px; max-width:150px; object-fit:contain; align-self:flex-start; margin-bottom:4px}
.ali-ficha{display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:10px 18px}
.ali-ficha .kl{display:block}
.ali-opciones{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.ali-opcion{display:flex; flex-direction:column; gap:3px; text-align:left; font-family:inherit; color:inherit; cursor:pointer;
  border:1px solid var(--linea-fuerte); border-radius:var(--r-lg); padding:12px 14px; background:var(--card)}
.ali-opcion.on{border-color:var(--acc); background:var(--acc-soft)}
.ali-form{display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:0 14px}
.ali-politica{max-height:150px; overflow:auto; padding:10px 12px; margin:6px 0 10px; border:1px solid var(--linea);
  border-radius:var(--r-sm); background:var(--card-2); font-size:12.3px; line-height:1.55}
.ali-politica .pol-titulo{font-weight:650; color:var(--ink); margin:10px 0 3px}
.ali-politica .pol-primero{font-size:13.5px; margin-top:0}
.ali-politica .pol-p{margin:0 0 6px}
.ali-politica .pol-lista{margin:2px 0 8px; padding-left:18px}
.ali-politica .pol-lista li{margin:2px 0}
.ali-autoriza{display:flex; gap:9px; align-items:flex-start; font-size:13px; line-height:1.5; cursor:pointer}
.ali-autoriza input{margin-top:3px; flex-shrink:0}
.ali-total td{font-weight:700; border-top:2px solid var(--linea-fuerte)}
.ali-cuota{display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-top:14px; padding:12px 16px;
  border-radius:var(--r-lg); background:var(--acc-soft); border:1px solid var(--acc-line)}
.ali-cifra{font-size:20px; font-weight:700; font-variant-numeric:tabular-nums}
.ali-plan{margin-top:12px}
.ali-plan summary{cursor:pointer; font-size:12.8px; font-weight:600; color:var(--acc); margin-bottom:6px}
.ali-noimprime{display:none}
@media (max-width:620px){
  .ali-opciones, .ali-tarjetas{grid-template-columns:1fr}
  .ali-pasos{grid-template-columns:repeat(3, minmax(0, 1fr))}
}
@media print{
  .ali-portal{display:none !important}
  .ali-noimprime{display:block; padding:24px; font-size:14px}
}
@media (max-width:480px){
  .tb-barra select{flex:1 1 100%}
  .rc-filtros .cart-filtro{flex:1 1 100%}
}
.chk{grid-template-columns:minmax(0, 1fr)}
@media (max-width:767px){
  .pill{white-space:normal; max-width:100%}
  .seg{flex-wrap:wrap; max-width:100%}
  .btn[data-ejemplo]{white-space:normal; text-align:left; max-width:100%}
}
@media (max-width:480px){
  .chk-paso{flex-wrap:wrap}
  .chk-paso .chk-cuerpo{flex:1 1 calc(100% - 44px)}
  .chk-paso > .btn, .chk-paso > .pill{margin-left:auto}
  .chk-cuerpo .btn{white-space:normal; text-align:left}
}
.cx-grilla{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr)); gap:var(--gap)}
.cx-tarjeta{border:1px solid var(--linea); border-radius:var(--r-lg); background:var(--card); display:flex; flex-direction:column; min-width:0}
.cx-cab{display:flex; align-items:center; gap:10px; padding:12px 14px; border-bottom:1px solid var(--divisor); flex-wrap:wrap}
.cx-cab h4{margin:0; font-size:14px}
.cx-ic{width:32px; height:32px; border-radius:8px; background:var(--acc-soft); color:var(--acc); display:grid; place-items:center; flex:none}
.cx-cuerpo{padding:12px 14px; display:flex; flex-direction:column; gap:10px; min-width:0}
.cx-pasos{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px}
.cx-paso{display:flex; gap:10px; align-items:flex-start; min-width:0}
.cx-num{flex:none; width:24px; height:24px; border-radius:50%; border:1.5px solid var(--acc); color:var(--acc);
  font-weight:600; font-size:12px; display:grid; place-items:center; background:var(--card)}
.cx-paso.hecho .cx-num,.cx-conectada .cx-num{background:var(--ok); border-color:var(--ok); color:#fff}
.cx-paso.apagado{opacity:.55}
.cx-paso-b{min-width:0; flex:1}
.cx-paso-t{font-size:12.8px; color:var(--muted); margin-top:2px}
.cx-instr{margin:8px 0 0; padding-left:18px; font-size:12.8px; color:var(--ink)}
.cx-instr li{margin:3px 0}
.cx-dato{margin-top:8px}
.cx-dato-v{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:2px}
.cx-mono{font-family:var(--fm); font-size:12px; background:var(--card-2); border:1px solid var(--linea); border-radius:6px;
  padding:4px 8px; overflow-wrap:anywhere; color:var(--ink); min-width:0; max-width:100%}
.cx-espera{display:inline-flex; align-items:center; gap:6px; color:var(--warn)}
.cx-espera svg{animation:cx-gira 1.6s linear infinite}
@keyframes cx-gira{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.cx-espera svg{animation:none}}
.cx-pie{font-size:12.5px; color:var(--muted); border-top:1px solid var(--divisor); padding-top:8px}
.cx-opc summary{cursor:pointer; font-size:12.8px; color:var(--acc); font-weight:600}
.cx-opc[open] summary{margin-bottom:6px}
.cx-elegir{border:1px solid var(--acc-line); background:var(--acc-soft); border-radius:8px; padding:10px 12px}
.cx-pagina{display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 0;
  border-bottom:1px solid var(--divisor); flex-wrap:wrap}
.cx-pagina:last-child{border-bottom:0}
.cx-conectada{display:flex; gap:10px; align-items:flex-start; background:var(--ok-soft); border:1px solid var(--ok-line);
  border-radius:8px; padding:8px 10px}
.cx-pre{white-space:pre-wrap; overflow-wrap:anywhere; font-family:var(--fm); font-size:11.5px; background:var(--card-2);
  border:1px solid var(--linea); border-radius:8px; padding:10px; max-height:280px; overflow:auto; margin:6px 0}
.cx-campo{display:block; font-size:12.5px; color:var(--muted); margin-top:8px}
.cx-campo select{display:block; width:100%; margin-top:4px}
.cx-form{display:flex; gap:10px; align-items:flex-start; padding:8px 0; border-bottom:1px solid var(--divisor); cursor:pointer; min-width:0}
.cx-form:last-of-type{border-bottom:0}
.cx-form input{flex:none; margin-top:3px; width:16px; height:16px; accent-color:var(--acc)}
.cx-form input:disabled{cursor:default}
.cx-form{font-size:13px; font-weight:400; color:var(--ink); text-transform:none; letter-spacing:normal}
.cx-form .tprim{font-size:13px; font-weight:600; color:var(--ink)}
.cx-form .tsub{overflow-wrap:anywhere; font-size:12.5px; font-weight:400; color:var(--muted)}
[data-corte-tarjeta] .btn{white-space:normal; max-width:100%; text-align:left}
.kpis > .kpi{min-width:0; container-type:inline-size}
.kv{overflow-wrap:anywhere}
@container (max-width:185px){ .kpis > .kpi .kv{font-size:17px; letter-spacing:-.03em} }
@container (max-width:150px){ .kpis > .kpi .kv{font-size:15px} }
.desplegable{
  position:absolute; z-index:30; margin-top:4px; padding:8px;
  min-width:min(240px, calc(100vw - 32px)); max-width:min(340px, calc(100vw - 32px));
  background:var(--panel); border:1px solid var(--linea-caja); border-radius:var(--r);
  box-shadow:var(--sombra-suave);
}
@media (max-width:620px){
  .btn{white-space:normal; max-width:100%; text-align:left}
  .fila-prox,.fila-persona{flex-wrap:wrap}
}
details:not([open]) > .desplegable{display:none}
@media (max-width:620px){
  td > *{min-width:0; max-width:100%}
}
td.vacio{padding:26px 18px}
@media (max-width:620px){
  td.vacio{display:block; padding:18px 14px}
}
.motivo-apagado{flex-basis:100%; margin-top:4px; font-size:12.5px}
@media (hover:none), (max-width:760px){
  button[disabled][title]{pointer-events:none}
}
.tb-etq{display:flex; flex-wrap:wrap; gap:4px; min-width:0}
.tb-sub,.tb-tipo{display:inline-flex; align-items:center; gap:4px; max-width:100%; font-size:10.5px; line-height:1.2;
  padding:2px 7px; border-radius:999px; border:1px solid var(--linea); color:var(--ink); background:var(--card);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.tb-sub{background:var(--acc-soft); border-color:var(--acc-line)}
.tb-sub img{height:14px; max-width:44px; object-fit:contain; flex-shrink:0}
td .tb-etq{margin-top:4px}
.rc-vistas{margin:0 0 var(--gap); overflow-x:auto}
.rc-vistas .seg{flex-wrap:wrap}
.rc-filtros-abrir{display:none}
@media (max-width:620px){
  .rc-filtros-abrir{display:flex; justify-content:flex-start; width:calc(100% - 24px); margin:12px 12px 0}
  .rc-filtros-panel:not(.abierto) .rc-filtros{display:none}
}
.rc-torta{display:flex; gap:22px; align-items:center; flex-wrap:wrap}
.rc-torta svg circle.rc-seg{cursor:pointer}
.rc-torta svg circle.rc-seg:focus-visible{outline:none; stroke-width:34}
.rc-torta-l{display:grid; gap:6px; min-width:200px}
.cde-estado{display:inline-flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; padding:3px 9px 3px 8px;
  border-radius:var(--r-full); border:1px solid var(--linea); background:var(--card-2); color:var(--ink); white-space:nowrap}
.cde-estado i{width:8px; height:8px; border-radius:50%; background:var(--muted)}
.cde-estado b{font-weight:600; font-size:11.5px; opacity:.8}
.cde-wip{background:var(--warn-soft); border-color:var(--warn-line); color:var(--warn)} .cde-wip i{background:var(--warn)}
.cde-compartido{background:var(--acc-soft); border-color:var(--acc-line); color:var(--acc)} .cde-compartido i{background:var(--acc)}
.cde-publicado{background:var(--ok-soft); border-color:var(--ok-line); color:var(--ok)} .cde-publicado i{background:var(--ok)}
.cde-archivado, .cde-anulada, .cde-sin_revision{color:var(--muted)}
.cde-estados{display:flex; align-items:stretch; gap:6px; flex-wrap:wrap}
.cde-tarjeta{display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:10px; align-items:center; text-align:left;
  min-width:150px; padding:12px 14px; border-radius:var(--r-lg); border:1px solid var(--linea); background:var(--card); cursor:pointer;
  color:var(--ink); font:inherit; transition:border-color .15s, box-shadow .15s, transform .15s}
.cde-tarjeta:hover{border-color:var(--linea-fuerte); transform:translateY(-1px)}
.cde-tarjeta.on{box-shadow:0 0 0 2px var(--acc) inset}
.cde-t-n{grid-row:1 / span 2; font-size:28px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums}
.cde-t-l{font-weight:600; font-size:14px}
.cde-t-s{font-size:11.5px; color:var(--muted); font-weight:600; letter-spacing:.04em}
.cde-t-wip .cde-t-n{color:var(--warn)} .cde-t-compartido .cde-t-n{color:var(--acc)} .cde-t-publicado .cde-t-n{color:var(--ok)} .cde-t-archivado .cde-t-n{color:var(--muted)}
.cde-flecha{align-self:center; width:18px; height:2px; background:var(--linea-fuerte); position:relative}
.cde-flecha::after{content:""; position:absolute; right:-1px; top:-4px; border:5px solid transparent; border-left-color:var(--linea-fuerte); border-right:0}
.cde-mini{display:grid; gap:2px; font-size:12.5px; color:var(--muted); align-self:center; padding:4px 6px}
.cde-mini b{color:var(--ink); font-variant-numeric:tabular-nums}
.cde-mini b.warn{color:var(--warn)}
.cde-tabla td{vertical-align:middle}
.cde-tabla td:nth-child(4){white-space:nowrap}
.oculto{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
.cde-doc{display:grid; gap:2px; text-align:left; background:none; border:0; padding:0; color:inherit; font:inherit; cursor:pointer}
.cde-doc:hover .tprim{color:var(--acc)}
.cde-fuera{display:inline-block; margin-left:6px; font:600 10.5px var(--fs, inherit); color:var(--warn); background:var(--warn-soft);
  border:1px solid var(--warn-line); padding:0 6px; border-radius:var(--r-full); letter-spacing:.02em; vertical-align:1px}
.cde-burbuja{display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 6px; border-radius:var(--r-full);
  background:var(--warn-soft); color:var(--warn); font-weight:700; font-size:12px; border:1px solid var(--warn-line)}
.cde-barra-sel{display:flex; align-items:center; gap:10px; padding:10px 14px; background:var(--acc-soft); border-bottom:1px solid var(--acc-line)}
.cde-barra-sel[hidden]{display:none}
.cde-tarjetas-rev{display:grid; grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)); gap:var(--gap)}
.cde-rev{border:1px solid var(--linea); border-radius:var(--r-lg); background:var(--card); padding:14px 16px}
.cde-rev h4{margin:10px 0 2px; font-size:15px}
.cde-dict{display:flex; gap:6px; flex-wrap:wrap; margin-top:6px}
.cde-d{font-size:11.5px; font-weight:600; padding:2px 8px; border-radius:var(--r-full); border:1px solid var(--linea)}
.cde-d-A{color:var(--ok); background:var(--ok-soft); border-color:var(--ok-line)}
.cde-d-B{color:var(--warn); background:var(--warn-soft); border-color:var(--warn-line)}
.cde-d-C{color:var(--crit); background:var(--crit-soft); border-color:var(--crit-line)}
.cde-dos{display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:var(--gap)}
.cde-nombre{display:flex; flex-wrap:wrap; align-items:stretch; gap:4px}
.cde-campo{display:grid; gap:1px; padding:8px 10px; border:1px solid var(--acc-line); background:var(--acc-soft); border-radius:var(--r-sm); min-width:84px}
.cde-campo b{font-size:12.5px; color:var(--acc)} .cde-campo small{font-size:11px; color:var(--muted)}
.cde-sep{align-self:center; font:700 18px var(--fm); color:var(--muted)}
.cde-codigos{margin-top:14px} .cde-codigos summary{cursor:pointer; font-weight:600; font-size:13px}
.cde-codigos table td{padding:3px 8px; font-size:12.5px}
.cde-leyenda{display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:8px}
.cde-leyenda > div{display:flex; gap:10px; align-items:center; font-size:13px}
.cde-ficha .cde-partes{display:grid; grid-template-columns:repeat(auto-fill, minmax(92px, 1fr)); gap:6px; margin-top:12px}
.cde-partes > div{display:grid; padding:6px 8px; border:1px solid var(--linea); border-radius:var(--r-sm); background:var(--card-2)}
.cde-partes small{font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted)}
.cde-coms{display:grid; gap:4px; margin-top:6px}
.cde-com{font-size:13px; padding:5px 8px; border-left:3px solid var(--warn); background:var(--card-2); border-radius:0 6px 6px 0}
.cde-com.resuelto{border-left-color:var(--ok); opacity:.8}
.cde-mensaje{margin-top:10px; padding:10px 12px; background:var(--card-2); border:1px solid var(--linea); border-radius:var(--r); white-space:pre-wrap; font-size:13.5px}
.cde-acuse{display:flex; align-items:center; gap:8px; min-width:120px}
.cde-acuse .bar{flex:1; margin:0}
.cde-acuse span{font-size:12px; font-variant-numeric:tabular-nums; color:var(--muted)}
button.enlace{background:none; border:0; padding:0; color:var(--acc); font:inherit; cursor:pointer; text-decoration:underline}
.visor-cde.con-panel{display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:var(--gap); align-items:start}
.visor-cde .visor-area{min-width:0}
.cde-herr{display:flex; align-items:center; gap:4px; flex-wrap:wrap; padding:6px 8px; border:1px solid var(--linea); border-bottom:0;
  border-radius:var(--r) var(--r) 0 0; background:var(--card)}
.cde-h{width:34px; height:32px; display:grid; place-items:center; border:1px solid transparent; border-radius:8px; background:none; color:var(--ink); cursor:pointer}
.cde-h:hover{background:var(--card-2)} .cde-h.on{background:var(--acc-soft); color:var(--acc); border-color:var(--acc-line)}
.cde-colores{display:flex; gap:4px; margin-left:8px; padding-left:8px; border-left:1px solid var(--linea)}
.cde-color{width:20px; height:20px; border-radius:50%; background:var(--c); border:2px solid var(--card); box-shadow:0 0 0 1px var(--linea-fuerte); cursor:pointer}
.cde-color.on{box-shadow:0 0 0 2px var(--ink)}
.cde-panel-rev{position:sticky; top:12px; border:1px solid var(--linea); border-radius:var(--r-lg); background:var(--card); padding:14px; max-height:calc(100vh - 120px); overflow:auto}
.cde-pr-cab{display:flex; align-items:center; gap:8px; justify-content:space-between}
.cde-pr-cab h3{margin:0; font-size:15px}
.cde-pr-lista{display:grid; gap:8px}
.cde-pr-com{border:1px solid var(--linea); border-radius:var(--r); padding:9px 10px; background:var(--card); transition:box-shadow .3s, border-color .3s}
.cde-pr-com.resuelto{background:var(--card-2)}
.cde-pr-com.elegido{border-color:var(--acc); box-shadow:0 0 0 3px var(--acc-soft)}
.cde-num{display:inline-grid; place-items:center; min-width:26px; height:20px; padding:0 6px; border-radius:6px; background:var(--c); color:#fff; font-size:11.5px}
.cde-pr-texto{margin-top:6px; font-size:13.5px; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere}
.cde-pr-resp{margin-top:6px; font-size:13px; padding:6px 8px; background:var(--ok-soft); border-radius:6px}
.cde-img-marco{position:relative; display:inline-block; max-width:100%}
.cde-img-marco img{display:block}
.cde-svg{position:absolute; inset:0; width:100%; height:100%; overflow:visible}
.cde-svg.marcando{cursor:crosshair}
.cde-svg-t{font:600 22px var(--fs, sans-serif); paint-order:stroke; stroke:#fff; stroke-width:4px}
.cde-svg-g{cursor:pointer} .cde-svg-g.elegida{filter:drop-shadow(0 0 6px rgba(47,128,237,.9))}
.cad-comparando{position:relative; flex-direction:column}
.cad-comparar-fondo, .cad-comparar-frente{position:absolute; inset:0; display:flex}
.cad-comparar-fondo{pointer-events:none}
.cad-comparar-fondo .cad-barra, .cad-comparar-fondo .cad-estado, .cad-comparar-fondo .cad-aviso{visibility:hidden}
.cad-comparar-frente .cad-lienzo canvas{mix-blend-mode:screen}
.cad-comparar-frente .cad-lienzo{background:transparent}
.cad-leyenda{position:absolute; left:12px; bottom:40px; display:flex; gap:12px; flex-wrap:wrap; padding:6px 10px; border-radius:8px;
  background:rgba(10,14,24,.82); color:#e6ebf3; font-size:12px; pointer-events:none}
.cad-leyenda i{display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:5px; vertical-align:-1px}
.fed-panel{border:1px solid var(--linea); border-radius:var(--r-xl); background:var(--card); overflow:hidden; margin-bottom:var(--gap)}
.fed-cab{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:10px 12px; border-bottom:1px solid var(--linea)}
.fed-modelos{display:flex; gap:6px; flex-wrap:wrap}
.fed-modelo{display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border:1px solid var(--linea); border-radius:var(--r-full); font-size:12.5px; cursor:pointer; background:var(--card-2)}
.fed-modelo i{width:10px; height:10px; border-radius:3px; border:1px solid rgba(0,0,0,.15)}
.fed-modelo.sin{opacity:.55; cursor:not-allowed}
.fed-cuerpo{display:grid; grid-template-columns:minmax(0,1fr) 330px; min-height:min(72vh, 760px)}
.fed-lienzo{position:relative; min-height:420px; background:radial-gradient(ellipse at 50% 30%, #2a3550, #121a2c 75%)}
.fed-host{position:absolute; inset:0}
.fed-sin{position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:8px; text-align:center; color:#c9d3e6; padding:24px}
.fed-sin svg{width:34px; height:34px; opacity:.7} .fed-sin span{max-width:46ch; font-size:13.5px; color:#9aa8c2}
.fed-lado{border-left:1px solid var(--linea); display:flex; flex-direction:column; min-width:0; max-height:min(72vh, 760px)}
.fed-tabs{display:flex; border-bottom:1px solid var(--linea)}
.fed-tabs button{flex:1; padding:10px 6px; border:0; background:none; font:600 12.5px inherit; color:var(--muted); cursor:pointer; border-bottom:2px solid transparent}
.fed-tabs button.on{color:var(--acc); border-bottom-color:var(--acc)}
.fed-n{display:inline-block; min-width:18px; padding:0 5px; border-radius:var(--r-full); background:var(--card-2); color:var(--ink); font-size:11px}
.fed-lista{overflow:auto; flex:1; padding:6px}
.fed-item{display:grid; grid-template-columns:10px minmax(0,1fr); column-gap:10px; row-gap:2px; width:100%; text-align:left; padding:9px 10px; border:1px solid transparent;
  border-radius:var(--r); background:none; color:var(--ink); font:inherit; cursor:pointer}
.fed-item:hover{background:var(--card-2)} .fed-item.on{border-color:var(--acc-line); background:var(--acc-soft)}
.fed-item.cerrada{opacity:.6}
.fed-item > .tsub, .fed-item > .fed-mini{grid-column:2}
.fed-item-t{font-size:13px; line-height:1.35; overflow-wrap:anywhere}
.fed-prio{grid-row:1 / span 2; width:10px; height:10px; border-radius:50%; margin-top:4px; background:var(--acc)}
.fed-p-critica{background:#dc2626} .fed-p-alta{background:#f97316} .fed-p-media{background:#2f80ed} .fed-p-baja{background:#64748b}
.fed-mini{max-width:100%; border-radius:6px; margin-top:6px; border:1px solid var(--linea)}
.fed-vista{display:flex; align-items:flex-start; gap:6px; padding:4px}
.fed-vista-b{flex:1; display:grid; gap:2px; text-align:left; background:none; border:0; padding:6px; border-radius:var(--r); cursor:pointer; color:inherit; font:inherit}
.fed-vista-b:hover{background:var(--card-2)}
.fed-vacio{padding:18px 12px; line-height:1.5}
.fed-prop{padding:6px}
.fed-prop-cab{padding:6px 6px 10px; border-bottom:1px solid var(--linea); margin-bottom:6px}
.fed-guid{font-size:11.5px; background:var(--card-2); padding:2px 6px; border-radius:4px; overflow-wrap:anywhere}
.fed-pset{margin:4px 0} .fed-pset summary{cursor:pointer; font-weight:600; font-size:12.5px; padding:6px}
.fed-pset table td{padding:3px 6px; font-size:12.5px; vertical-align:top; overflow-wrap:anywhere}
.fed-pset table td:first-child{color:var(--muted); width:46%}
@media (max-width: 1100px){
  .visor-cde.con-panel{grid-template-columns:minmax(0,1fr)}
  .cde-panel-rev{position:static; max-height:none}
  .fed-cuerpo{grid-template-columns:minmax(0,1fr)}
  .fed-lado{border-left:0; border-top:1px solid var(--linea); max-height:420px}
  .fed-lienzo{min-height:min(62vh, 520px)}
}
@media (max-width: 640px){
  .cde-tarjeta{min-width:calc(50% - 8px); padding:10px 12px}
  .cde-flecha{display:none}
  .cde-t-n{font-size:22px}
  .cde-mini{width:100%; grid-template-columns:repeat(3, auto); justify-content:space-between}
  .fed-cab .btn{flex:1 1 auto}
}
select[size] option:checked{background:var(--acc) linear-gradient(0deg,var(--acc),var(--acc));color:#fff}
.mc-escogido{color:var(--ok, inherit)}
select[hidden]{display:none}
#desglose .caja{padding-top:env(safe-area-inset-top, 0px); padding-bottom:env(safe-area-inset-bottom, 0px);
  padding-right:env(safe-area-inset-right, 0px)}
#modal-demo,#modal-form,#modal-conf,#modal-cot{
  padding-top:max(18px, env(safe-area-inset-top, 0px)) !important;
  padding-bottom:max(18px, env(safe-area-inset-bottom, 0px)) !important;
  padding-left:max(18px, env(safe-area-inset-left, 0px)) !important;
  padding-right:max(18px, env(safe-area-inset-right, 0px)) !important;
}
@media (max-width:720px){
  #modal-cot{
    padding-top:max(8px, env(safe-area-inset-top, 0px)) !important;
    padding-bottom:max(8px, env(safe-area-inset-bottom, 0px)) !important;
    padding-left:max(8px, env(safe-area-inset-left, 0px)) !important;
    padding-right:max(8px, env(safe-area-inset-right, 0px)) !important;
  }
}
#modal-plano{
  padding-top:max(14px, env(safe-area-inset-top, 0px)) !important;
  padding-bottom:max(14px, env(safe-area-inset-bottom, 0px)) !important;
  padding-left:max(14px, env(safe-area-inset-left, 0px)) !important;
  padding-right:max(14px, env(safe-area-inset-right, 0px)) !important;
}
#visor-pdf{
  padding-top:max(12px, env(safe-area-inset-top, 0px)) !important;
  padding-bottom:max(12px, env(safe-area-inset-bottom, 0px)) !important;
  padding-left:max(12px, env(safe-area-inset-left, 0px)) !important;
  padding-right:max(12px, env(safe-area-inset-right, 0px)) !important;
}
.doc-par{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.doc-par-t{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--muted);margin-right:2px}
.doc-par-b{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.word-hoja{background:#fff;color:#111;max-width:816px;margin:0 auto;padding:48px 56px;border-radius:10px;
  font:14px/1.45 Calibri, Arial, system-ui, sans-serif;overflow-wrap:anywhere}
.word-hoja p{margin:0 0 6px}
.word-hoja .word-tabla{border-collapse:collapse;width:100%;margin:6px 0;background:#fff}
.word-hoja .word-tabla td{border:1px solid #bbb;padding:4px 6px;vertical-align:top;color:#111}
.word-hoja .word-tabla td.word-sigue{border-top:0}
.word-hoja hr.word-pag{border:0;border-top:1px dashed #bbb;margin:18px 0}
@media (max-width:620px){ .word-hoja{padding:20px 14px;font-size:13px} .word-hoja p[style*="justify"]{text-align:left !important} }
.md-caja{max-height:min(90vh, calc(100dvh - 36px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)))}
.sidebar{padding-bottom:calc(30px + env(safe-area-inset-bottom, 0px))}
#toast{bottom:calc(22px + env(safe-area-inset-bottom, 0px))}
#vid-subiendo{bottom:calc(18px + env(safe-area-inset-bottom, 0px)) !important}
.kpi[data-expl] > .ana-h{padding-right:26px}
@media (max-width:620px){
  .kpis > .kpi:has(.kv > span[style*="font-size:18px"]){grid-column:1 / -1}
  .kv{overflow-wrap:normal; word-break:keep-all}
  .alc{display:block; width:fit-content; max-width:100%; border-radius:12px; line-height:1.55; margin-bottom:6px}
  .alc svg{vertical-align:-1px; margin-right:4px}
  .aviso{flex-wrap:wrap}
  .aviso > div[style*="flex:1"]{min-width:min(210px, 100%)}
  main label{max-width:100%; min-width:0}
  main label > select, main label > input{max-width:100%}
}
.en-la-app [data-gantt-imprimir],.en-la-app [data-semanal-imprimir]{display:none !important}
@media (orientation:landscape) and (max-height:500px) and (pointer:coarse){
  :root{--h:calc(62px + env(safe-area-inset-top, 0px))}
  header{flex-wrap:nowrap; row-gap:0; column-gap:8px}
  #lbl-proy,#proy-nuevo{display:none !important}
  #quien,#perfil .perfil-chev{display:none}
  #perfil{margin-left:0; padding:3px; max-width:none}
  #proy{flex:0 1 280px; min-width:0}
  #cajabuscar{order:0; flex:1 1 160px; min-width:120px; max-width:none; margin-left:0}
}
.app{padding-left:env(safe-area-inset-left, 0px); padding-right:env(safe-area-inset-right, 0px)}
@media (max-width:900px){
  .sidebar{padding-left:env(safe-area-inset-left, 0px); width:calc(var(--menu) + env(safe-area-inset-left, 0px))}
}
#menu-perfil{right:max(14px, env(safe-area-inset-right, 0px))}
#notifs-panel{right:max(10px, env(safe-area-inset-right, 0px))}
header{overflow-x:clip}
