/* =====================================================================================
   financiapyme · identidad visual de la app (usuario y admin) — «blanco con relieve»
   Dirección (usuario, 7-oct): fondo blanco no puro, con relieve y cosas detrás; un punto futurista sin
   pasarse; personalidad en los gráficos y el detalle. Rasgos propios, tomados del papel de seguridad:
   sello guilloché holográfico único por empresa, microtexto, ondas de seguridad, marcas de registro.
   Nada de: tarjetas blancas por todas partes, pastillas, iconos en círculos, mayúsculas espaciadas.
   ===================================================================================== */

/* Newsreader (titulares y cifras), Schibsted Grotesk (texto e interfaz), Marcellus (logotipo Odilo Capital) */
@font-face{font-family:"Newsreader";src:url("/static/fonts/newsreader-latin-var.woff2") format("woff2");font-weight:300 700;font-style:normal;font-display:swap}
@font-face{font-family:"Newsreader";src:url("/static/fonts/newsreader-latin-italic-var.woff2") format("woff2");font-weight:300 700;font-style:italic;font-display:swap}
@font-face{font-family:"Schibsted Grotesk";src:url("/static/fonts/schibsted-grotesk-latin-var.woff2") format("woff2");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Schibsted Grotesk";src:url("/static/fonts/schibsted-grotesk-latin-italic-var.woff2") format("woff2");font-weight:400 900;font-style:italic;font-display:swap}
/* versiones completas de las fundiciones (Production Type, Schibsted), no el recorte de Google Fonts: tamaño óptico,
   mayúsculas contextuales, ordinales y superíndices reales. Sin versalitas en estas familias: no se sintetizan. */
@font-face{font-family:"Marcellus";src:url("/static/fonts/marcellus-latin-400.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("/static/fonts/inter-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Inter";src:url("/static/fonts/inter-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}

/* ---------------------------------------------------------------- base de la app (10-oct: un solo sistema)
   Las pantallas de la app ya no cargan style.css (la hoja de la portada antigua: Fraunces, papel crema, línea dorada sobre
   los títulos, etiquetas en mayúsculas). Aquí queda solo lo estructural que daban sus reglas genéricas, con la paleta de la
   escena y la MISMA especificidad baja (:where), para que las reglas propias de cada pantalla sigan mandando como hasta ahora. */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
html:has(body.app.shell),body.app.shell{overflow-x:clip;max-width:100%}
:where(body.app.shell){margin:0;position:relative}
:where(body.app.shell) :is(h1,h2,h3,h4){font-family:var(--f-sans);font-weight:600;line-height:1.25;letter-spacing:-.01em;text-wrap:balance;color:var(--f-tinta)}
:where(body.app.shell) h1{font-size:1.5rem;margin:0 0 .4em}
:where(body.app.shell) h2{font-size:1.35rem;margin:0 0 .35em}
:where(body.app.shell) h3{font-size:1rem;margin:.2em 0 .45em}
:where(body.app.shell) h4{font-size:.92rem;margin:.9em 0 .4em}
:where(body.app.shell) p{text-wrap:pretty}
:where(body.app.shell) button.btn{cursor:pointer}
:where(body.app.shell) button[disabled]{opacity:.55;cursor:progress}
:where(body.app.shell) .hp{position:absolute;left:-5000px}
/* desplegables: sin caja; el resumen lleva un cheurón que gira (antes, un «+» dorado sobre una tarjeta blanca) */
:where(body.app.shell) details{margin:0}
:where(body.app.shell) details summary{cursor:pointer;list-style:none;position:relative;padding-right:24px;font-weight:550;color:var(--f-tinta)}
:where(body.app.shell) details summary::-webkit-details-marker{display:none}
:where(body.app.shell) details summary::after{content:"";position:absolute;right:6px;top:.5em;width:7px;height:7px;border:solid currentColor;
  border-width:0 1.6px 1.6px 0;transform:rotate(45deg);opacity:.7;transition:transform .25s cubic-bezier(.22,.8,.24,1)}
:where(body.app.shell) details[open] summary::after{transform:translateY(3px) rotate(225deg)}
:where(body.app.shell) details p{margin:.6em 0 .2em}
/* formularios heredados (subida de texto, plantilla, póliza): etiqueta encima del campo, campos al ancho */
:where(body.app.shell) .grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px 16px}
:where(body.app.shell) .grid-form label{min-width:0}
:where(body.app.shell) .expres label,:where(body.app.shell) .row-send label{display:flex;flex-direction:column;gap:6px}
:where(body.app.shell) .expres :is(input,textarea,select){width:100%;min-width:0}
:where(body.app.shell) .row-send{align-items:flex-end;gap:12px 16px;margin-top:14px}
:where(body.app.shell) .pega{margin:14px 0 4px}
:where(body.app.shell) .pega textarea{width:100%;margin-top:10px}
:where(body.app.shell) .row2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}
/* tablas de cifras: primera columna fija al desplazar en horizontal, cifras en una línea */
:where(body.app.shell) .dash-t{width:100%;border-collapse:separate;border-spacing:0;line-height:1.35}
:where(body.app.shell) .dash-t :is(th,td){white-space:nowrap}
:where(body.app.shell) .dash-scroll .dash-t :is(th,td):first-child{position:sticky;left:0;z-index:1;text-align:left;background:var(--e-lamina-1,#f6f7f9)}
:where(body.app.shell) .dash-t tr.sep td{padding-top:20px}
:where(body.app.shell) .dash-t td.banda{font-weight:700}
:where(body.app.shell) .dash-t td.banda::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:7px;background:currentColor}
:where(body.app.shell) .yoy{font-size:.72rem;font-weight:600;margin-left:7px}
:where(body.app.shell) .yoy.neutro,:where(body.app.shell) .pctl.neutro{color:var(--f-tenue)}
:where(body.app.shell) .pctl{font-weight:650}
:where(body.app.shell) .del-ej{display:inline}
:where(body.app.shell) .del-ej button{border:0;background:none;color:var(--f-tenue);font-size:.8rem;cursor:pointer;padding:0 2px;margin-left:4px;line-height:1;vertical-align:super}
:where(body.app.shell) .rat-riesgo_bajo{color:var(--f-ok)}
:where(body.app.shell) .rat-riesgo_medio_bajo{color:var(--f-acento)}
:where(body.app.shell) .rat-riesgo_medio_alto{color:var(--f-warn)}
:where(body.app.shell) .rat-riesgo_alto{color:var(--f-ko)}
:where(body.app.shell) .rat-no_disponible,:where(body.app.shell) .hg-na{color:var(--f-tenue)}
:where(body.app.shell) .trib-alta{color:var(--f-warn)}
/* análisis puntuales (historial en Mi expediente) y vista completa heredada: comprobaciones y palanca, sin cajas crema */
:where(body.app.shell) .checks{list-style:none;padding:0;margin:.4em 0}
:where(body.app.shell) .checks li{position:relative;padding:.42em 0 .42em 1.6em;font-size:.9rem;border-bottom:1px solid var(--f-linea)}
:where(body.app.shell) .checks li::before{content:"";position:absolute;left:.2em;top:.95em;width:8px;height:8px;border-radius:50%;background:var(--f-linea-3)}
:where(body.app.shell) .checks .ok::before{background:var(--f-ok)}
:where(body.app.shell) .checks .ko{color:var(--f-ko)}
:where(body.app.shell) .checks .ko::before{background:var(--f-ko)}
:where(body.app.shell) .checks .na{color:var(--f-tenue)}
:where(body.app.shell) .palanca{margin:0;padding:2px 0 2px 14px;box-shadow:inset 2px 0 0 var(--f-acento)}
:where(body.app.shell) .doc-badge{display:inline-flex;align-items:center;gap:.45em;font:600 .8rem var(--f-sans);color:var(--f-ok)}
:where(body.app.shell) .hero-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 22px;margin-top:12px}
:where(body.app.shell) .hg{display:flex;flex-direction:column;gap:2px;padding:8px 0 6px;border-top:1px solid var(--f-linea)}
:where(body.app.shell) .hg-l{font:550 .76rem var(--f-sans);color:var(--f-tenue)}
:where(body.app.shell) .hg-v{font:600 1.3rem/1.2 var(--f-sans);color:var(--f-tinta);font-variant-numeric:tabular-nums}
:where(body.app.shell) .hg-v.hg-vs{font-size:1rem}
:where(body.app.shell) .hg-sub{font-size:.74rem;font-weight:500;color:var(--f-tenue)}
:where(body.app.shell) .g-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px 28px;margin:14px 0 10px}
:where(body.app.shell) .g-fig{margin:0}
:where(body.app.shell) :is(.g-barras,.g-lineas){display:block;max-width:100%;height:auto}
:where(body.app.shell) .analista{margin-top:14px;padding:2px 0 2px 14px;box-shadow:inset 2px 0 0 var(--f-acento)}
:where(body.app.shell) .analista-t{margin:0;font-size:.95rem;line-height:1.55}
:where(body.app.shell) .chat-f{display:flex;gap:8px;margin-top:10px}
:where(body.app.shell) .chat-f input{flex:1}
:where(body.app.shell) .chat-qa{padding:2px 0 2px 12px;margin:6px 0 2px;box-shadow:inset 2px 0 0 var(--f-acento)}
:where(body.app.shell) .chat-q{font-weight:600;margin:0}
:where(body.app.shell) .chat-a{margin:6px 0 0;white-space:pre-line}
:where(body.app.shell) .v-banda{display:grid;place-items:center;width:92px;height:92px;border-radius:14px;background:var(--e-pozo-2,#eff1f4);box-shadow:var(--e-pozo,none)}
:where(body.app.shell) .v-banda .v-letra{font:600 3rem/1 var(--f-sans)}
:where(body.app.shell) .v-tag{font:550 .7rem var(--f-sans);color:var(--f-tenue)}
:where(body.app.shell) .v-cuerpo{flex:1;min-width:240px}
:where(body.app.shell) .v-frase{font:600 1.35rem/1.2 var(--f-sans);color:var(--f-tinta);margin:0 0 .3em}
:where(body.app.shell) .v-sub,:where(body.app.shell) .v-lectura{margin:.1em 0 .8em;font-size:.95rem}
:where(body.app.shell) .v-mini{color:var(--f-tenue);font-size:.86em}
:where(body.app.shell) .v-lect{margin:.8em 0 0;padding:2px 0 2px 12px;box-shadow:inset 2px 0 0 var(--f-acento);font-size:.92rem}

body.app{
  --f-fondo:#f3f5f6; --f-sup:#fbfcfc; --f-sup-2:#f7f9f9; --f-hundido:#eceff1;
  --f-tinta:#141d26; --f-tinta-2:#33404c; --f-suave:#5b6773; --f-tenue:#8a949e;
  --f-linea:rgba(20,29,38,.085); --f-linea-2:rgba(20,29,38,.16); --f-linea-3:rgba(20,29,38,.28);
  --f-acento:#22408f; --f-acento-2:#2f56b8; --f-acento-velo:rgba(34,64,143,.07);
  --f-ok:#1d7a55; --f-ok-velo:rgba(29,122,85,.09);
  --f-warn:#a66c15; --f-warn-velo:rgba(196,138,40,.12);
  --f-ko:#b3412f; --f-ko-velo:rgba(179,65,47,.09);
  --f-iris:linear-gradient(90deg,#6fd3ff 0%,#9a8cff 34%,#ff92c9 66%,#ffd27a 100%);
  --f-relieve:0 1px 0 rgba(255,255,255,.95) inset,0 0 0 1px rgba(20,29,38,.055),0 1px 2px rgba(20,29,38,.05),0 14px 34px -20px rgba(20,29,38,.28);
  --f-relieve-alto:0 1px 0 rgba(255,255,255,.95) inset,0 0 0 1px rgba(20,29,38,.06),0 2px 6px rgba(20,29,38,.05),0 34px 70px -34px rgba(20,29,38,.38);
  --f-hundido-sombra:inset 0 1px 2px rgba(20,29,38,.07),inset 0 0 0 1px rgba(20,29,38,.05);
  --f-serif:"Newsreader",Georgia,serif; --f-sans:"Schibsted Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.22,.8,.24,1); --ease-sal:cubic-bezier(.34,1.4,.64,1);
  margin:0;font:400 15px/1.58 var(--f-sans);color:var(--f-tinta-2);-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1200px 700px at 12% -10%,#ffffff 0%,rgba(255,255,255,0) 60%),
    radial-gradient(900px 600px at 100% 10%,rgba(214,226,240,.55),rgba(214,226,240,0) 60%),
    linear-gradient(rgba(20,29,38,.022) 1px,transparent 1px) 0 0/32px 32px,
    linear-gradient(90deg,rgba(20,29,38,.022) 1px,transparent 1px) 0 0/32px 32px,
    var(--f-fondo);
  background-attachment:fixed;
}
body.app::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.35;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .5  0 0 0 0 .55  0 0 0 0 .6  0 0 0 .09 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
body.app ::selection{background:rgba(34,64,143,.16);color:var(--f-tinta)}
body.app :focus-visible{outline:2px solid var(--f-acento);outline-offset:2px}
body.app b,body.app strong{font-variant-numeric:normal}          /* las cifras en el texto, proporcionales */
body.app .num,body.app .kpi-v,body.app .cifra b{font-variant-numeric:tabular-nums}
body.app td{font-variant-numeric:lining-nums proportional-nums}
body.app h1,body.app h2,body.app h3,body.app h4{color:var(--f-tinta);letter-spacing:-.012em;font-optical-sizing:auto}
body.app .microtexto,body.app .marca-logo small{font-feature-settings:"case"}
body.app sup{font-size:inherit;vertical-align:baseline;font-feature-settings:"sups"}
body.app a{color:var(--f-acento);text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:rgba(34,64,143,.35)}
body.app .fine{font-size:.82rem;color:var(--f-suave)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.saltar{position:absolute;left:-999px;top:8px;z-index:100;background:#fff;padding:8px 12px;border-radius:8px}
.saltar:focus{left:8px}
.ico{flex:0 0 auto;vertical-align:-3px}
body.app .app-side,body.app .barra-empresa{display:none}

/* ---------------------------------------------------------------- mancheta (cabecera) */
.mancheta{position:sticky;top:0;z-index:40;background:rgba(251,252,252,.78);backdrop-filter:saturate(1.4) blur(16px);
  -webkit-backdrop-filter:saturate(1.4) blur(16px);box-shadow:0 1px 0 var(--f-linea);transition:box-shadow .3s}
.mancheta.compacta{box-shadow:0 1px 0 var(--f-linea),0 10px 30px -22px rgba(20,29,38,.35)}
.mancheta-fila{display:flex;align-items:center;gap:22px;max-width:1320px;margin:0 auto;padding:14px 40px 8px;transition:padding .3s var(--ease)}
.mancheta.compacta .mancheta-fila{padding-top:9px;padding-bottom:4px}
body.app .marca{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--f-tinta)}
.marca-logo{display:flex;flex-direction:column;align-items:center;line-height:1;color:var(--f-tinta)}
.marca-logo b{font:400 1.58rem/1 "Marcellus",var(--f-serif);letter-spacing:.07em;font-weight:400}
.marca-logo small{margin-top:3px;font:600 .5rem/1 var(--f-sans);letter-spacing:.42em;padding-left:.42em;color:var(--f-suave)}
.mancheta-empresa{display:flex;align-items:baseline;gap:10px;min-width:0;padding-left:22px;margin-left:4px;border-left:1px solid var(--f-linea-2)}
body.app .mancheta-empresa select{appearance:none;border:0;background:transparent url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235b6773' stroke-width='2'><path d='m6 9 6 6 6-6'/></svg>") no-repeat right 2px center;
  padding:2px 20px 2px 0;font:600 1rem var(--f-sans);color:var(--f-tinta);cursor:pointer;max-width:320px;text-overflow:ellipsis;box-shadow:none}
.mancheta-meta{font-size:.76rem;color:var(--f-tenue);white-space:nowrap;font-variant-numeric:tabular-nums}
.mancheta-acciones{margin-left:auto;display:flex;align-items:center;gap:8px}
.mancheta-icono{position:relative;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;color:var(--f-suave);transition:background .2s,color .2s}
.mancheta-icono:hover{background:var(--f-hundido);color:var(--f-tinta)}
.mancheta-icono .badge-n{position:absolute;top:2px;right:0}
body.app .enlace-analista{display:inline-flex;align-items:center;gap:7px;border:0;background:none;padding:9px 12px;border-radius:10px;
  font:600 .87rem var(--f-sans);color:var(--f-tinta);cursor:pointer;transition:background .2s}
body.app .enlace-analista:hover{background:var(--f-hundido)}
body.app details.mancheta-cuenta{position:relative;background:none;border:0;padding:0;margin:0;box-shadow:none}
.mancheta-cuenta>summary{list-style:none;display:grid;place-items:center;width:36px;height:36px;padding:0;border-radius:50%;cursor:pointer;
  font:500 1rem var(--f-serif);color:var(--f-tinta);background:linear-gradient(145deg,#fff,#e5e9ec);box-shadow:var(--f-relieve)}
.mancheta-cuenta>summary::-webkit-details-marker{display:none}
body.app .mancheta-cuenta>summary::after{content:none}
.menu-cuenta{position:absolute;right:0;top:calc(100% + 10px);width:270px;padding:8px;border-radius:14px;background:var(--f-sup);
  box-shadow:var(--f-relieve-alto);display:flex;flex-direction:column;animation:a-menu .25s var(--ease) both}
.menu-cuenta-email{margin:4px 10px 8px;font-size:.78rem;color:var(--f-tenue);overflow:hidden;text-overflow:ellipsis}
body.app .menu-cuenta a,body.app .menu-cuenta summary{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;color:var(--f-tinta-2);
  text-decoration:none;font-size:.88rem;cursor:pointer;list-style:none}
body.app .menu-cuenta a:hover,body.app .menu-cuenta summary:hover{background:var(--f-hundido);color:var(--f-tinta)}
body.app details.app-nueva{background:none;border:0;padding:0;margin:0;box-shadow:none}
body.app .app-nueva summary::after{content:none}
.app-nueva form{display:flex;flex-direction:column;gap:8px;padding:8px 10px 10px}
.app-nueva label{display:flex;flex-direction:column;gap:3px;font-size:.74rem;color:var(--f-suave)}

.app-nav{position:relative;display:flex;gap:2px;max-width:1320px;margin:0 auto;padding:0 28px;overflow-x:auto;scrollbar-width:none}
.app-nav::-webkit-scrollbar{display:none}
body.app .app-nav a{position:relative;display:inline-flex;align-items:center;gap:6px;padding:10px 12px 12px;white-space:nowrap;text-decoration:none;
  font:500 .9rem var(--f-sans);color:var(--f-suave);transition:color .2s}
body.app .app-nav a:hover{color:var(--f-tinta)}
body.app .app-nav a.on{color:var(--f-tinta);font-weight:650}
.nav-indicador{position:absolute;left:0;bottom:0;height:2px;width:0;border-radius:2px;background:var(--f-iris);opacity:0;
  transition:transform .45s var(--ease),width .45s var(--ease),opacity .3s}
.nav-indicador.sin-transicion{transition:none}
.badge-n{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 5px;border-radius:9px;box-sizing:border-box;
  background:var(--f-ko);color:#fff;font:700 .62rem var(--f-sans);box-shadow:0 0 0 2px var(--f-sup);animation:a-pulso 2.4s ease-in-out 1}
.microtexto{overflow:hidden;white-space:nowrap;padding:3px 0;border-top:1px solid var(--f-linea);
  font:600 5.6px/1 var(--f-sans);letter-spacing:.32em;color:rgba(20,29,38,.32);user-select:none}
.mancheta.compacta .microtexto{display:none}

/* ---------------------------------------------------------------- página */
.app-cuerpo{max-width:1320px;margin:0 auto;padding:0 40px 80px;box-sizing:border-box}
.pagina-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:30px 0 6px}
.pagina-cab h1{margin:0;font:450 2.15rem/1.1 var(--f-serif);letter-spacing:-.022em;color:var(--f-tinta)}
.app-sub{margin:6px 0 0;color:var(--f-tenue);font-size:.86rem}
.pagina-acciones{display:flex;gap:10px}
.app-contenido{display:flex;flex-direction:column;gap:46px;padding-top:18px;container:contenido / inline-size}
.app-contenido > :is(.rejilla-2,.rejilla-3,.seccion,.resultado,.expres,.dropzona,.analista-nota):not(:first-child){position:relative;padding-top:36px}
.app-contenido > :is(.rejilla-2,.rejilla-3,.seccion,.resultado,.expres,.dropzona,.analista-nota):not(:first-child)::before{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,var(--f-linea-2),var(--f-linea) 40%,transparent)}
body.app .pie{max-width:1320px;margin:40px auto 0;padding:0 40px 40px;box-sizing:border-box;background:none;color:var(--f-tenue);border:0}
.pie p{font-size:.78rem;color:var(--f-tenue);margin:14px 0 0}

/* ---------------------------------------------------------------- botones y formularios */
body.app .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:9px;padding:10px 17px;
  font:600 .87rem var(--f-sans);text-decoration:none;cursor:pointer;line-height:1.2;margin:0;
  transition:transform .2s var(--ease),box-shadow .25s,background .25s,color .2s}
body.app .btn:hover{transform:translateY(-1px)}
body.app .btn:active{transform:translateY(0) scale(.985)}
body.app .btn-p{color:#fff;background:linear-gradient(180deg,#2c4ea6,#1f3d8a);
  box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 0 0 1px rgba(20,40,100,.5),0 8px 18px -10px rgba(34,64,143,.75)}
body.app .btn-p:hover{box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 0 0 1px rgba(20,40,100,.5),0 14px 26px -12px rgba(34,64,143,.8)}
body.app .btn-sec,body.app .btn-s,body.app .app-contenido button:not(.btn):not(.chip):not(.aviso-x):not(.chat-cerrar){
  color:var(--f-tinta);background:linear-gradient(180deg,#fff,#f1f4f5);border:0;border-radius:9px;padding:9px 16px;
  font:600 .86rem var(--f-sans);cursor:pointer;box-shadow:var(--f-relieve);transition:transform .2s var(--ease),box-shadow .25s}
body.app .btn-sec:hover,body.app .btn-s:hover,body.app .app-contenido button:not(.btn):not(.chip):not(.aviso-x):hover{transform:translateY(-1px)}
body.app .btn-ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--f-linea-2);color:var(--f-acento)}
body.app input:not([type=file]):not([type=checkbox]):not([type=radio]):not([type=range]),body.app select:not(.mancheta-empresa select),body.app textarea{
  font:400 .92rem var(--f-sans);color:var(--f-tinta);background:var(--f-sup);border:0;border-radius:9px;padding:9px 12px;
  box-shadow:var(--f-hundido-sombra);transition:box-shadow .2s,background .2s;max-width:100%;box-sizing:border-box}
body.app input:not([type=range]):focus,body.app textarea:focus,body.app select:focus{outline:none;background:#fff;box-shadow:inset 0 0 0 1px rgba(34,64,143,.45),0 0 0 4px rgba(34,64,143,.1)}
body.app label{font-size:.82rem;color:var(--f-suave);font-weight:500}
body.app .row-send{display:flex;gap:10px;flex-wrap:wrap}

/* ---------------------------------------------------------------- secciones */
body.app .resultado,body.app .expres,.tarjeta{position:relative;margin:0;background:none;border:0;border-radius:0;box-shadow:none;padding:0}
body.app .resultado::after,body.app .resultado h3::before,body.app .resultado h3::after{content:none!important;display:none!important}
body.app .resultado h3,body.app .expres h3{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 16px;font:500 1.42rem/1.25 var(--f-serif);color:var(--f-tinta)}
body.app .resultado h4,body.app .expres h4{font:650 .92rem var(--f-sans);margin:18px 0 6px}
body.app .cat{display:inline;padding:0;background:none;border:0;font:500 .82rem var(--f-sans);color:var(--f-tenue);letter-spacing:0;text-transform:none}
body.app .dato{background:var(--f-acento-velo);border:0;border-radius:10px;padding:12px 16px;margin:0}
body.app .error{color:var(--f-ko)}
.tarjeta-cab{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:16px}
.tarjeta-cab h3{margin:0!important;font:500 1.32rem/1.25 var(--f-serif);color:var(--f-tinta)}
.tarjeta-cab p{margin:3px 0 0;color:var(--f-tenue);font-size:.84rem}
.tarjeta-ico{display:none}
.rejilla-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 56px}
.rejilla-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 44px}
.seccion{display:flex;flex-direction:column;gap:16px}
.seccion-cab{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.seccion-cab h3{margin:0;font:500 1.42rem var(--f-serif)}
.seccion-cab p{margin:0;color:var(--f-tenue);font-size:.86rem}
body.app .seccion-cab .enlace-mas{margin:0 0 0 auto;padding:0}
/* panel con relieve (pocos: portada, instrumentos) */
.relieve{position:relative;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(249,251,251,.86));box-shadow:var(--f-relieve-alto)}
.marcas{position:absolute;inset:12px;pointer-events:none;z-index:0}
.marcas::before,.marcas::after{content:"";position:absolute;width:18px;height:18px;border-color:var(--f-linea-3);border-style:solid}
.marcas::before{top:0;left:0;border-width:1px 0 0 1px}
.marcas::after{bottom:0;right:0;border-width:0 1px 1px 0}

/* estados */
.estado{display:inline-flex;align-items:center;gap:6px;font:650 .78rem var(--f-sans)}
.estado::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.estado-ok{color:var(--f-ok)}.estado-warn{color:var(--f-warn)}.estado-ko{color:var(--f-ko)}.estado-neutro{color:var(--f-tenue)}

/* tablas */
body.app .dash-t,body.app table{width:100%;border-collapse:separate;border-spacing:0;font-size:.88rem;background:none}
body.app .dash-t th,body.app table th{font:550 .76rem var(--f-sans);letter-spacing:.01em;color:var(--f-tenue);
  text-align:right;padding:10px 12px;border-bottom:1px solid var(--f-linea-2);background:transparent;white-space:nowrap}
body.app .dash-t th:first-child,body.app .dash-t td.et{text-align:left}
body.app .dash-t td,body.app table td{padding:10px 12px;border-bottom:1px solid var(--f-linea);color:var(--f-tinta-2);background:none}
body.app .dash-t td.v{text-align:right}
body.app .dash-t tbody tr{transition:background .2s}
body.app .dash-t tbody tr:hover{background:rgba(255,255,255,.7)}
body.app .dash-t tbody tr:last-child td{border-bottom:0}
body.app .table-scroll,body.app .dash-scroll{overflow-x:auto}

/* avisos flotantes */
.avisos{position:fixed;top:92px;right:22px;z-index:60;display:flex;flex-direction:column;gap:10px;max-width:min(440px,calc(100vw - 44px))}
.aviso{display:flex;align-items:flex-start;gap:10px;padding:13px 12px 13px 15px;border-radius:12px;background:rgba(251,252,252,.96);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--f-relieve-alto);animation:a-aviso .5s var(--ease-sal) both;border-left:3px solid var(--f-ok)}
.aviso-ko{border-left-color:var(--f-ko)}
.aviso p{margin:0;flex:1;font-size:.88rem;line-height:1.45;color:var(--f-tinta-2)}
.aviso-ok>.ico{color:var(--f-ok)}.aviso-ko>.ico{color:var(--f-ko)}
.aviso-x{background:none;border:0;color:var(--f-tenue);cursor:pointer;padding:2px;border-radius:6px}
.aviso.saliendo{animation:a-aviso-sal .35s var(--ease) both}

/* ---------------------------------------------------------------- portada de Inicio */
.portada{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,350px);gap:30px 48px;align-items:center;
  padding:42px 46px 38px;overflow:hidden;isolation:isolate}
.portada::before{content:"";position:absolute;inset:0;z-index:-1;background:url("/static/img/fondo-seguridad.svg") center/cover no-repeat;opacity:.075;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 35%,#000 70%,transparent);mask-image:linear-gradient(90deg,transparent,#000 35%,#000 70%,transparent)}
.portada-linea{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 16px;font:500 .8rem var(--f-sans);color:var(--f-tenue);font-variant-numeric:lining-nums proportional-nums}
.portada-linea .estado{font-size:.8rem}
body.app .portada h2{margin:0;font:420 2.75rem/1.06 var(--f-serif);letter-spacing:-.028em;color:var(--f-tinta);font-variation-settings:"opsz" 72;max-width:16ch}
.portada-entradilla{margin:16px 0 0;max-width:60ch;font:400 1.12rem/1.6 var(--f-serif);color:var(--f-tinta-2)}
.portada-entradilla b{font:650 1.02rem var(--f-sans);color:var(--f-tinta);font-variant-numeric:proportional-nums}
body.app .kpi-pie b,body.app .medida-et i,body.app .avisos-lista p,body.app .paso-imp{font-variant-numeric:proportional-nums}
.pista{display:inline-flex;align-items:center;gap:5px;font:600 .8rem var(--f-sans);color:var(--f-warn);text-decoration:none;white-space:nowrap}
body.app a.pista:hover{text-decoration:underline}
.cifras{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:26px 0 0;border-top:1px solid var(--f-linea-2)}
.cifra{padding:14px 18px 0 0;margin-right:18px;border-right:1px solid var(--f-linea)}
.cifra:last-child{border-right:0;margin-right:0}
.cifra>span{display:block;font:550 .8rem var(--f-sans);letter-spacing:.005em;color:var(--f-tenue)}
.cifra b{display:block;margin-top:4px;font:450 2rem/1.1 var(--f-serif);letter-spacing:-.025em;color:var(--f-tinta);white-space:nowrap}
.cifra b small{font:500 .9rem var(--f-sans);color:var(--f-tenue);letter-spacing:0}
.cifra>small{display:block;margin-top:3px;font-size:.78rem;color:var(--f-suave)}
.portada-acciones{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.portada-sello{position:relative;margin:0;display:flex;flex-direction:column;align-items:center;gap:12px;perspective:900px}
.portada-sello svg{width:min(330px,100%);height:auto;filter:drop-shadow(0 22px 26px rgba(20,29,38,.22));
  transform-style:preserve-3d;transition:transform .6s var(--ease)}
.portada-sello figcaption{font:500 .76rem var(--f-sans);color:var(--f-tenue)}
.bienvenida-pasos{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.bienvenida-pasos li{display:grid;grid-template-columns:34px 1fr;gap:4px 12px;align-items:baseline}
.bienvenida-pasos li span{grid-row:span 2;font:400 1.6rem/1 var(--f-serif);color:var(--f-tenue)}
.bienvenida-pasos li.on span{color:var(--f-acento)}
.bienvenida-pasos b{font:650 .95rem var(--f-sans);color:var(--f-tinta)}
.bienvenida-pasos small{color:var(--f-suave)}

/* franjas (vetos, revisión pendiente) */
.franja{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border-radius:12px;text-decoration:none;transition:transform .25s var(--ease),box-shadow .25s}
.franja p{margin:3px 0 0;font-size:.88rem}
.franja b{font:650 .95rem var(--f-sans)}
.franja-ko{background:var(--f-ko-velo);color:var(--f-ko);box-shadow:inset 3px 0 0 var(--f-ko)}
.franja-ko b,.franja-ko p{color:#7a2a1e}
.franja-warn{background:var(--f-warn-velo);color:var(--f-warn);box-shadow:inset 3px 0 0 var(--f-warn)}
body.app a.franja-warn b{color:#6b4610}body.app a.franja-warn p{color:#7a5520}
a.franja:hover{transform:translateY(-1px)}
/* el resultado entero de un envío (QA de subidas, §4.6): en la página, sin caja blanca, tonal como las franjas */
.lote{position:relative;margin:0 0 18px;padding:14px 44px 12px 18px;border-radius:12px;background:var(--f-acento-velo);box-shadow:inset 3px 0 0 var(--f-acento)}
.lote-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.lote-cab b{font:650 .95rem var(--f-sans);color:#1a2f6b}
.lote-cab span{font-size:.8rem;color:var(--f-tenue)}
.lote-x{position:absolute;top:11px;right:12px}
.lote-lista{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:7px}
.lote-lista li{display:grid;grid-template-columns:16px minmax(0,1fr);gap:9px;font-size:.86rem;line-height:1.45;color:var(--f-tinta-2);overflow-wrap:anywhere}
.lote-lista .ico{margin-top:2px}
.lote-ok .ico{color:var(--f-ok)}.lote-ko .ico{color:var(--f-ko)}
.franja-confirmar{flex-wrap:wrap;align-items:center;margin:0 0 18px}
.franja-confirmar>div{flex:1 1 320px}
body.app .franja-confirmar b{color:#6b4610}body.app .franja-confirmar p{color:#7a5520}
.franja-confirmar form{display:flex;flex-wrap:wrap;gap:8px;margin:0}
@media (max-width:640px){.franja-confirmar form,.franja-confirmar form .btn{width:100%}}
.franja-ir{margin-left:auto;align-self:center;display:inline-flex;align-items:center;gap:6px;font:650 .84rem var(--f-sans);white-space:nowrap}
.franja-ir .ico{transition:transform .25s var(--ease)}
a.franja:hover .franja-ir .ico{transform:translateX(3px)}

/* escala del banco */
.escala{padding:24px 28px 18px}
.escala svg{display:block;width:100%;height:auto;overflow:visible}
.g-escala .esc-hoy{animation:a-marcador 1.4s var(--ease) .3s both}
.g-escala .esc-arco{animation:a-aparecer .8s var(--ease) 1.2s both}
@keyframes a-aparecer{from{opacity:0}to{opacity:1}}
.g-escala .esc-obj{animation:a-entrar .6s var(--ease) 1.6s both}
.g-escala .esc-zona{transform-box:fill-box;transform-origin:left;animation:a-ancho .9s var(--ease) both}

/* comentario del analista */
.analista-nota{margin:0;max-width:880px}
.analista-nota blockquote{margin:0;font:400 1.18rem/1.65 var(--f-serif);color:var(--f-tinta-2)}
.analista-nota blockquote::before{content:"“";display:block;height:.55em;font:400 3.2rem/1 var(--f-serif);color:var(--f-tenue)}
.analista-nota figcaption{margin-top:10px;font-size:.78rem;color:var(--f-tenue)}

/* pasos del expediente */
.anillo{position:relative;flex:0 0 auto;width:54px;height:54px;display:grid;place-items:center}
.anillo svg{position:absolute;inset:0;transform:rotate(-90deg)}
.anillo circle{fill:none;stroke:var(--f-linea);stroke-width:3}
.anillo .anillo-v{stroke:url(#iris-anillo);stroke:var(--f-acento);stroke-linecap:round;stroke-dasharray:calc(var(--p) * 1) 100;animation:a-anillo 1.3s var(--ease) .25s both}
.anillo span{position:relative;font:450 1.02rem var(--f-serif);color:var(--f-tinta)}
.anillo span small{font:600 .6rem var(--f-sans);color:var(--f-tenue)}
.expediente-cab{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.expediente-cab h3{margin:0;font:500 1.32rem var(--f-serif)}
.expediente-cab p{margin:2px 0 0;color:var(--f-tenue);font-size:.84rem}
.pasos{list-style:none;margin:0;padding:0;counter-reset:paso}
.pasos li{position:relative;border-top:1px solid var(--f-linea)}
.pasos li:last-child{border-bottom:1px solid var(--f-linea)}
body.app .pasos a{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 6px;text-decoration:none;color:var(--f-tinta-2);
  transition:background .25s var(--ease),padding .25s var(--ease)}
body.app .pasos a:hover{background:rgba(255,255,255,.75);padding-left:12px}
.paso-n{font:400 1.45rem/1 var(--f-serif);color:var(--f-tenue);transition:color .25s}
body.app .pasos a:hover .paso-n{color:var(--f-acento)}
.paso-txt{display:flex;flex-direction:column;min-width:0}
.paso-txt b{font:650 .93rem var(--f-sans);color:var(--f-tinta)}
.paso-txt small{color:var(--f-suave);font-size:.8rem;line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.paso-imp{margin-left:8px;font:650 .74rem var(--f-sans);font-style:normal;color:var(--f-ok);white-space:nowrap}
.paso-ir{color:var(--f-tenue);display:flex;transition:transform .25s var(--ease),color .2s}
body.app .pasos a:hover .paso-ir{color:var(--f-acento);transform:translateX(3px)}
body.app .enlace-mas{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font:650 .86rem var(--f-sans);color:var(--f-acento);text-decoration:none}
body.app .enlace-mas .ico{transition:transform .25s var(--ease)}
body.app .enlace-mas:hover .ico{transform:translateX(4px)}
.vacio{display:flex;align-items:flex-start;gap:10px;margin:0;color:var(--f-suave);font-size:.92rem}
.vacio .ico{color:var(--f-ok);margin-top:2px}
.avisos-lista{list-style:none;margin:0;padding:0}
.avisos-lista li{display:grid;grid-template-columns:14px 1fr;gap:10px;padding:12px 0;border-top:1px solid var(--f-linea)}
.avisos-lista li:last-child{border-bottom:1px solid var(--f-linea)}
.avisos-lista .punto{width:7px;height:7px;margin-top:8px;border-radius:50%;background:var(--f-linea-3)}
.avisos-lista li.nuevo .punto{background:var(--f-acento);box-shadow:0 0 0 4px var(--f-acento-velo)}
.avisos-lista p{margin:0;font-size:.9rem;color:var(--f-tinta-2)}
.avisos-lista small{color:var(--f-tenue);font-size:.75rem;font-variant-numeric:tabular-nums}

/* lo que valora / penaliza */
.medidas{list-style:none;margin:0;padding:0}
.medidas li{display:grid;grid-template-columns:minmax(0,1fr) 44px;grid-template-rows:auto auto;column-gap:16px;row-gap:8px;padding:12px 0;border-top:1px solid var(--f-linea)}
.medidas li:last-child{border-bottom:1px solid var(--f-linea)}
.medida-et{grid-column:1;grid-row:1;font:500 .92rem var(--f-sans);color:var(--f-tinta)}
.medida-et i{font-style:normal;color:var(--f-tenue);margin-left:6px;font-variant-numeric:tabular-nums}
.medida-barra{grid-column:1;grid-row:2;position:relative;height:6px;border-radius:6px;box-shadow:var(--f-hundido-sombra);background:var(--f-hundido);overflow:hidden}
.medida-barra::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(10% - 1px),rgba(255,255,255,.9) calc(10% - 1px) 10%)}
.medidas li>b{grid-column:2;grid-row:1 / span 2;align-self:center;text-align:right;font:450 1.35rem var(--f-serif);color:var(--f-tinta)}
.medida-barra span{display:block;height:100%;width:calc(var(--v) * 1%);border-radius:inherit;transform-origin:left;animation:a-ancho 1.2s var(--ease) .25s both}
.medida-barra .ok{background:linear-gradient(90deg,#7fc3a2,#1d7a55)}
.medida-barra .warn{background:linear-gradient(90deg,#f0cf8f,#c48a28)}
.medida-barra .ko{background:linear-gradient(90deg,#efa596,#b3412f)}

/* indicadores: tira de instrumento */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0;overflow:hidden;border-top:1px solid var(--f-linea-2);border-bottom:1px solid var(--f-linea-2)}
.kpi{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"et et" "v mini" "pie pie";align-content:start;
  column-gap:10px;row-gap:3px;padding:16px 20px;margin:0 0 -1px -1px;border-left:1px solid var(--f-linea);border-bottom:1px solid var(--f-linea);transition:background .3s}
.kpi:hover{background:rgba(255,255,255,.7)}
.kpi-et{grid-area:et;font:550 .78rem var(--f-sans);letter-spacing:.005em;color:var(--f-tenue)}
.kpi-v{grid-area:v;white-space:nowrap;font:450 1.85rem/1.15 var(--f-serif);letter-spacing:-.025em;color:var(--f-tinta)}
.kpi-v small{font:600 .74rem var(--f-sans);color:var(--f-tenue);letter-spacing:0;margin-left:2px}
.kpi-pie{grid-area:pie;display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;font-size:.76rem;color:var(--f-tenue);margin-top:4px}
.kpi-pie b{display:inline-flex;align-items:center;gap:3px;font-weight:650}
.kpi-verde{color:var(--f-ok)}.kpi-rojo{color:var(--f-ko)}.kpi-neutro{color:var(--f-suave)}
.kpi-sector{font-weight:650}
.kpi-mini{grid-area:mini;align-self:center}
.kpi-mini svg{display:block;width:88px;height:auto}

/* subida única */
.dropzona{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,1fr) auto;gap:24px;align-items:center}
.dropzona h3{margin:0;font:500 1.32rem var(--f-serif);color:var(--f-tinta)}
.dropzona-caja{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;min-height:104px;padding:14px;
  border-radius:14px;background:repeating-linear-gradient(135deg,rgba(20,29,38,.025) 0 8px,transparent 8px 16px),var(--f-sup-2);
  box-shadow:var(--f-hundido-sombra);color:var(--f-suave);font-size:.88rem;cursor:pointer;transition:box-shadow .25s,transform .3s var(--ease)}
.dropzona-caja::before{content:"";position:absolute;inset:8px;border:1px dashed var(--f-linea-3);border-radius:9px;pointer-events:none}
.dropzona-caja input{position:absolute;inset:0;opacity:0;cursor:pointer}
.dropzona-caja:hover,.dropzona-caja.encima{transform:scale(1.01);box-shadow:inset 0 0 0 1px rgba(34,64,143,.35),0 0 0 4px rgba(34,64,143,.07)}
.dropzona-caja.con-ficheros{color:var(--f-ok);box-shadow:inset 0 0 0 1px rgba(29,122,85,.4)}

/* ---------------------------------------------------------------- Mi expediente */
.nivel{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:24px 44px;align-items:center;padding:34px 40px}
.nivel-eti{margin:0 0 6px;font:550 .8rem var(--f-sans);color:var(--f-tenue)}
body.app .nivel h2{margin:0;font:420 2.1rem/1.1 var(--f-serif);letter-spacing:-.025em}
.nivel-texto p{margin:10px 0 0;color:var(--f-suave);max-width:52ch}
.nivel-pasos{position:relative;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.nivel-pasos::before{content:"";position:absolute;left:16px;right:16px;top:16px;height:2px;background:var(--f-hundido);border-radius:2px}
.nivel-pasos li{position:relative;display:flex;flex-direction:column;gap:3px}
.nivel-punto{position:relative;z-index:1;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;margin-bottom:8px;
  font:450 1rem var(--f-serif);color:var(--f-tenue);background:var(--f-sup);box-shadow:var(--f-relieve)}
.nivel-pasos li.hecho .nivel-punto{color:#fff;background:linear-gradient(180deg,#2c9468,#1d7a55);box-shadow:0 6px 14px -8px rgba(29,122,85,.8)}
.nivel-pasos li.actual .nivel-punto{color:var(--f-acento);box-shadow:var(--f-relieve),0 0 0 4px var(--f-acento-velo)}
.nivel-pasos b{font:650 .92rem var(--f-sans);color:var(--f-tinta)}
.nivel-pasos small{color:var(--f-suave);font-size:.8rem;line-height:1.4}
.docs{list-style:none;margin:0;padding:0;border-top:1px solid var(--f-linea-2)}
.doc{border-bottom:1px solid var(--f-linea)}
body.app .doc details{border:0;padding:0;margin:0;background:none}
body.app .doc summary{list-style:none;display:grid;grid-template-columns:14px minmax(0,1.3fr) minmax(0,1fr) 92px;gap:16px;align-items:center;
  padding:14px 8px;cursor:pointer;border-radius:10px;transition:background .25s var(--ease)}
body.app .doc summary::after{content:none}
body.app .doc summary::-webkit-details-marker{display:none}
body.app .doc summary:hover{background:rgba(255,255,255,.7)}
.doc-marca{width:10px;height:10px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--f-linea-3)}
.doc-ok .doc-marca,.doc-auto .doc-marca{background:var(--f-ok);box-shadow:0 0 0 4px var(--f-ok-velo)}
.doc-auto .doc-marca{background:none;box-shadow:inset 0 0 0 2px var(--f-ok)}
.doc-parcial .doc-marca,.doc-caducado .doc-marca{background:var(--f-warn);box-shadow:0 0 0 4px var(--f-warn-velo)}
.doc-ko .doc-marca{background:var(--f-ko);box-shadow:0 0 0 4px var(--f-ko-velo)}
.doc-nombre{display:flex;flex-direction:column;min-width:0}
.doc-nombre b{font:650 .95rem var(--f-sans);color:var(--f-tinta)}
.doc-nombre small{color:var(--f-suave);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-aporta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.78rem;color:var(--f-tenue)}
.doc-aporta i{font-style:normal}
.doc-estado{justify-self:end;font:650 .8rem var(--f-sans);color:var(--f-tenue)}
.doc-ok .doc-estado,.doc-auto .doc-estado{color:var(--f-ok)}
.doc-caducado .doc-estado,.doc-parcial .doc-estado{color:var(--f-warn)}
.doc-ko .doc-estado{color:var(--f-ko)}
.doc-falta .doc-estado{color:var(--f-acento)}
.doc-detalle{padding:2px 8px 18px 38px;display:grid;gap:8px;max-width:820px;animation:a-entrar .45s var(--ease) both}
.doc-detalle p{margin:0;font-size:.9rem;color:var(--f-tinta-2)}
.doc-detalle b{color:var(--f-tinta)}
.doc-formatos{color:var(--f-suave)!important;font-size:.82rem!important}
.doc-subir{margin-top:4px}
.doc-subir label{cursor:pointer}
@container contenido (max-width:760px){
  .nivel{grid-template-columns:1fr;padding:26px}
  .nivel-pasos{grid-template-columns:1fr}.nivel-pasos::before{display:none}
  body.app .doc summary{grid-template-columns:14px minmax(0,1fr) auto}.doc-aporta{display:none}
}
/* B5 (auditoría de perfiles): en el móvil, el estado de cada documento parte línea; con elipsis se perdía lo importante */
@media (max-width:640px){.doc-nombre small{white-space:normal;overflow-wrap:anywhere}}

/* score (página propia) */
.sc-cabecera{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:30px;align-items:center}
/* QA recorridos (9-oct): a 390 px la columna de 220 px mínimo empujaba «ver el detalle y la metodología →» 37 px fuera */
@media (max-width:640px){.sc-cabecera{grid-template-columns:minmax(0,1fr)}}
.sc-cifras .v-frase{font-size:1.1rem;margin:0}
.sc-radar{grid-column:1 / -1;display:flex;justify-content:center}
.sc-tres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 44px}
.g-wrap,.g-marco{overflow-x:auto}
.g-marco svg{display:block;width:100%;height:auto}

/* ---------------------------------------------------------------- gestión bancaria */
.banca-portada{grid-template-columns:minmax(0,1fr) minmax(250px,300px)}
body.app .banca-portada h2{max-width:20ch}
.cifras-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cifras-4 .cifra b{font-size:1.7rem}
/* «Tu sector en tu comunidad» (coyuntura): dos o tres cifras y las lecturas debajo, con su filete */
.cifras-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.coyuntura .ops-notas{margin-top:20px}.coyuntura .fine{margin:12px 0 0}
.banca-segunda{margin:12px 0 0;max-width:52ch;font:italic 400 1.12rem/1.45 var(--f-serif);color:var(--f-suave);font-variant-numeric:lining-nums proportional-nums}
.talon b span{font:inherit;color:inherit}
.toca-caducidad time{color:var(--f-tenue)}
.toca-tarea{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.toca-tarea .btn{padding:5px 11px;font-size:.8rem}
.toca li.toca-hecha{opacity:.55}.toca li.toca-hecha b{text-decoration:line-through;text-decoration-thickness:1px}
body.app a.cifra-enlace{text-decoration:none;color:inherit;transition:background .2s}
body.app a.cifra-enlace:hover .cifra-ko{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.cifra b.cifra-ko{color:#a8432f}
/* talón: el sobreprecio como importe de un cheque — perforación, microtexto y trama de seguridad */
.talon{position:relative;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:270px;
  padding:42px 28px;border-radius:16px;text-align:center;box-shadow:var(--f-relieve-alto);
  background:repeating-linear-gradient(135deg,rgba(34,64,143,.03) 0 1px,transparent 1px 7px),
    radial-gradient(120% 80% at 50% 0%,rgba(255,255,255,.95),rgba(255,255,255,0) 60%),linear-gradient(165deg,#fdfefe,#edf1f3)}
.talon::before{content:"";position:absolute;left:-1px;top:16px;bottom:16px;width:9px;
  background:radial-gradient(circle at 0 50%,var(--f-fondo) 0 3.6px,transparent 4.2px) left top/9px 13px repeat-y}
.talon::after{content:"";position:absolute;inset:10px;border:1px dashed rgba(20,29,38,.14);border-radius:10px;pointer-events:none}
.talon b{font:420 3.3rem/1 var(--f-serif);letter-spacing:-.03em;color:var(--f-tinta);font-variation-settings:"opsz" 72;font-variant-numeric:lining-nums}
.talon-caro b{color:#a8432f}
.talon-ok b{color:var(--f-ok);font-size:2.5rem}
.talon-vacio b{color:var(--f-tenue)}
.talon-et{font:650 .72rem var(--f-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--f-tenue)}
.talon-per{font:italic 400 1.08rem var(--f-serif);color:var(--f-suave)}
.talon small{margin-top:10px;max-width:26ch;font-size:.76rem;line-height:1.45;color:var(--f-suave)}
.talon-micro{position:absolute;left:22px;right:22px;font:600 5.4px/1 var(--f-sans);font-style:normal;letter-spacing:.3em;
  color:rgba(20,29,38,.3);white-space:nowrap;overflow:hidden;user-select:none}
.talon-micro:first-child{top:18px}.talon-micro:last-child{bottom:18px}
/* instrumentos (carta de precios, calendario) */
.instrumento{padding:22px 26px 12px;overflow-x:auto}
.instrumento svg{display:block;width:100%;min-width:640px;height:auto;overflow:visible}
.g-precios .pp-fila{animation:a-entrar .6s var(--ease) both;animation-delay:calc(var(--i) * 90ms + .1s)}
.g-precios .pp-exceso{stroke-dashoffset:1;animation:a-grabar .9s var(--ease) both;animation-delay:calc(var(--i) * 90ms + .7s)}
.g-precios .pp-rango{transform-box:fill-box;transform-origin:center;animation:a-ancho .7s var(--ease) both;animation-delay:calc(var(--i) * 90ms + .3s)}
.g-calendario .cal-serv{transform-box:fill-box;transform-origin:bottom;animation:a-crecer .6s var(--ease) both;animation-delay:calc(var(--i) * 22ms)}
.g-calendario .cal-ventana{transform-box:fill-box;transform-origin:right;animation:a-ancho .9s var(--ease) .5s both}
.ops-notas{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px 30px}
.ops-notas li{padding:1px 0 1px 14px;box-shadow:inset 2px 0 0 var(--f-linea-2);font-size:.9rem;line-height:1.5;color:var(--f-tinta-2)}
.ops-notas li b{display:block;font:650 .9rem var(--f-sans);color:var(--f-tinta)}
.ops-notas li.ops-caro{box-shadow:inset 2px 0 0 #c0564a}.ops-notas li.ops-barato{box-shadow:inset 2px 0 0 var(--f-ok)}
.nota-fuente{margin:0;max-width:92ch;font-size:.78rem;line-height:1.5;color:var(--f-tenue)}
.toca{list-style:none;margin:0;padding:0}
.toca li{display:grid;grid-template-columns:132px minmax(0,1fr);gap:20px;padding:15px 0;border-top:1px solid var(--f-linea)}
.toca li:first-child{border-top:0}
.toca time{font:450 1.08rem/1.2 var(--f-serif);color:var(--f-tinta);font-variant-numeric:lining-nums}
.toca time small{display:block;margin-top:2px;font:500 .74rem var(--f-sans);color:var(--f-tenue)}
.toca b{font:650 .95rem var(--f-sans);color:var(--f-tinta)}
.toca p{margin:3px 0 0;max-width:82ch;font-size:.88rem;line-height:1.55;color:var(--f-tinta-2)}
.toca-renovacion time{color:#8a5b12}.toca-refinanciar time{color:var(--f-acento);font-size:.9rem}
.toca-urgente time small{color:var(--f-ko);font-weight:650}

/* simulador de reestructuración */
.rs-form{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:22px 34px;padding:26px 28px}
.rs-form fieldset{border:0;margin:0;padding:0;min-width:0}
.rs-form legend{font:600 .8rem var(--f-sans);color:var(--f-tenue);margin-bottom:10px;padding:0}
.rs-acciones{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-content:start}
.rs-accion,.rs-op{position:relative;display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;cursor:pointer;
  background:var(--f-sup);box-shadow:var(--f-hundido-sombra);transition:box-shadow .2s,background .2s}
.rs-accion{flex-direction:column;gap:2px;padding-left:38px}
.rs-accion input,.rs-op input{accent-color:var(--f-acento)}
.rs-accion input{position:absolute;left:14px;top:15px}
.rs-accion:has(input:checked),.rs-op:has(input:checked){background:#fff;box-shadow:inset 0 0 0 1.5px var(--f-acento),var(--f-relieve)}
.rs-accion b,.rs-op b{font:650 .9rem var(--f-sans);color:var(--f-tinta)}
.rs-accion small,.rs-op small{display:block;font-size:.78rem;color:var(--f-suave)}
.rs-ops{display:grid;gap:8px;align-content:start}
.rs-op span{display:flex;flex-direction:column}
.rs-campos{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;padding-top:6px;border-top:1px solid var(--f-linea)}
.rs-campos label{display:flex;flex-direction:column;gap:4px;width:150px}
.rs-campos label.rs-sgr{flex-direction:row;align-items:center;gap:8px;width:auto;padding-bottom:10px;color:var(--f-tinta-2);font-weight:600}
.rs-campos .btn{margin-left:auto}
.rs-resultado{display:flex;flex-direction:column;gap:16px}
.rs-titulo{margin:6px 0 0;font:500 1.3rem var(--f-serif);color:var(--f-tinta)}
.rs-op-nueva{margin:0;font-size:.95rem;color:var(--f-tinta-2)}
.rs-tabla{max-width:760px}
.rs-tabla td.rs-flecha{text-align:center;color:var(--f-tenue);width:30px}
.rs-tabla tr.rs-mejor td b{color:var(--f-ok)}.rs-tabla tr.rs-peor td b{color:var(--f-ko)}
.rs-tabla tr.rs-mejor td.et::after,.rs-tabla tr.rs-peor td.et::after{margin-left:8px;padding:1px 7px;border-radius:10px;font:600 .68rem var(--f-sans)}
.rs-tabla tr.rs-mejor td.et::after{content:"mejora";color:var(--f-ok);background:var(--f-ok-velo)}
.rs-tabla tr.rs-peor td.et::after{content:"empeora";color:var(--f-ko);background:var(--f-ko-velo)}

/* mesa de negociación */
.mesa-gestiones{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
.mesa-g{display:flex;flex-direction:column;gap:10px;padding:18px 20px;border-radius:16px}
.mesa-g header{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.mesa-g header b{font:500 1.18rem var(--f-serif);color:var(--f-tinta)}
.mesa-g header small{font:650 .7rem var(--f-sans);letter-spacing:.08em;color:var(--f-tenue)}
.mesa-estado{margin-left:auto;font:650 .76rem var(--f-sans);padding:3px 9px;border-radius:20px;background:var(--f-hundido);color:var(--f-suave)}
.estado-oferta .mesa-estado,.estado-contraoferta .mesa-estado{background:var(--f-acento-velo);color:var(--f-acento)}
.estado-firmado .mesa-estado,.estado-firmado_parcial .mesa-estado{background:var(--f-ok-velo);color:var(--f-ok)}
.estado-denegado .mesa-estado{background:var(--f-ko-velo);color:var(--f-ko)}
.estado-desistido{opacity:.6}
.mesa-oferta{padding:12px 0 4px;border-top:1px solid var(--f-linea)}
.mesa-oferta.mesa-mejor{margin:0 -20px;padding:12px 20px 4px;background:linear-gradient(90deg,var(--f-ok-velo),transparent 70%);box-shadow:inset 3px 0 0 var(--f-ok)}
.mesa-oferta.of-rechazada{opacity:.55}
.mesa-of-cifras{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px}
.mesa-of-cifras b{font:450 1.55rem/1 var(--f-serif);color:var(--f-tinta);font-variant-numeric:lining-nums}
.mesa-of-cifras span{font-size:.82rem;color:var(--f-suave)}
.mesa-oferta p{margin:6px 0 0}
.mesa-chips{display:flex;flex-wrap:wrap;gap:6px}
.mesa-contrato-ok{display:flex;align-items:center;gap:6px;margin:8px 0 0;color:var(--f-ok)}
.etiq{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font:600 .72rem var(--f-sans);background:var(--f-hundido);color:var(--f-suave)}
.etiq-ok{background:var(--f-ok-velo);color:var(--f-ok)}.etiq-warn{background:var(--f-warn-velo);color:var(--f-warn)}
body.app details.mesa-registrar,body.app details.mesa-aceptar{background:none;border:0;border-top:1px dashed var(--f-linea-2);border-radius:0;box-shadow:none;padding:10px 0 0;margin:6px 0 0}
body.app details.mesa-registrar summary::after,body.app details.mesa-aceptar summary::after{content:none}
.mesa-registrar summary,.mesa-aceptar summary{display:inline-flex;align-items:center;gap:6px;font:600 .84rem var(--f-sans);color:var(--f-acento);cursor:pointer}
.mesa-registrar form,.mesa-aceptar form{margin-top:12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.mesa-registrar form .ancho,.mesa-registrar form .btn,.mesa-aceptar form label,.mesa-aceptar form .btn{grid-column:1 / -1}
.mesa-registrar label,.mesa-aceptar label,.mesa-form label{display:flex;flex-direction:column;gap:4px}
.mesa-estados{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-top:8px;border-top:1px solid var(--f-linea)}
.mesa-estados .btn{padding:5px 11px;font-size:.8rem}
.mesa-motivo{flex:1;min-width:140px;font-size:.8rem!important;padding:6px 10px!important}
.mesa-sin{margin:4px 0 0}
.mesa-cerrada .mesa-g{box-shadow:var(--f-relieve)}
.mesa-form{display:block}
.mesa-form .grid-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;margin-bottom:16px}
.mesa-form .grid-form .ancho{grid-column:1 / -1}

/* plan de estructura */
.plan-portada{grid-template-columns:minmax(0,1fr) minmax(300px,420px)}
body.app .plan-portada h2{max-width:20ch}
.plan-escalera{margin:0;display:flex;flex-direction:column;gap:6px}
.plan-escalera svg{width:100%;height:auto;overflow:visible}
.plan-escalera figcaption{font-size:.76rem;color:var(--f-tenue);text-align:center}
.g-escalera .esc-peldano{animation:a-entrar .6s var(--ease) both;animation-delay:calc(var(--i) * 140ms + .15s)}
.radiografia{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:0;border-top:1px solid var(--f-linea-2)}
.rx{position:relative;display:flex;flex-direction:column;gap:3px;padding:16px 18px 14px 18px;border-right:1px solid var(--f-linea);border-bottom:1px solid var(--f-linea)}
.rx::before{content:"";position:absolute;left:0;top:18px;width:3px;height:22px;border-radius:2px;background:var(--f-linea-3)}
.rx-ok::before{background:var(--f-ok)}.rx-warn::before{background:var(--f-warn)}.rx-ko::before{background:var(--f-ko)}
.rx span{font:550 .78rem var(--f-sans);color:var(--f-tenue)}
.rx b{font:450 1.7rem/1.15 var(--f-serif);color:var(--f-tinta);font-variant-numeric:lining-nums}
.rx small{font-size:.76rem;line-height:1.4;color:var(--f-suave)}
.objetivo{padding:22px 26px;display:flex;flex-direction:column;gap:16px}
.obj-fila{display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px 18px;align-items:center}
.obj-et{font:500 1.1rem var(--f-serif);color:var(--f-tinta)}
.obj-meta .obj-et{color:var(--f-acento)}
.obj-barra{display:flex;height:16px;border-radius:9px;overflow:hidden;background:var(--f-hundido)}
.obj-barra i{display:block;width:var(--w);transform-origin:left;animation:a-ancho .9s var(--ease) both}
i.obj-cp{background:#c48a28;opacity:.75}i.obj-lp{background:#22408f;opacity:.7}
.obj-datos{grid-column:2;display:flex;flex-wrap:wrap;gap:4px 18px;font-size:.84rem;color:var(--f-suave)}
.obj-datos b{color:var(--f-tinta)}
.obj-ley{margin:0;display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--f-tenue)}
.obj-ley i{display:inline-block;width:14px;height:8px;border-radius:4px}
.pasos-plan{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.paso-plan{display:grid;grid-template-columns:46px minmax(0,1fr);gap:18px;padding:22px 26px;border-radius:16px}
.paso-plan .paso-n{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;font:500 1.2rem var(--f-serif);color:var(--f-acento);
  background:var(--f-sup);box-shadow:var(--f-relieve)}
.paso-cuerpo h4{margin:2px 0 6px;font:500 1.25rem var(--f-serif);color:var(--f-tinta)}
.paso-cuerpo>p{margin:0;max-width:80ch;color:var(--f-tinta-2);line-height:1.55}
.paso-efecto{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.paso-efecto span{padding:4px 10px;border-radius:20px;background:var(--f-ok-velo);font-size:.8rem;color:var(--f-ok)}
.paso-efecto b{font-weight:650}
.paso-dl{display:grid;grid-template-columns:120px minmax(0,1fr);gap:4px 14px;margin:0 0 12px;font-size:.84rem}
.paso-dl dt{color:var(--f-tenue);font-weight:550}.paso-dl dd{margin:0;color:var(--f-tinta-2)}
.paso-tarea{display:flex;gap:8px}
.paso-tarea .btn{padding:6px 12px;font-size:.82rem}
.plan-otras-t{margin:6px 0 0;font:500 1.1rem var(--f-serif);color:var(--f-tinta)}
.perfil-rejilla h4{margin:0 0 10px;font:500 1.05rem var(--f-serif);color:var(--f-tinta)}
.territorio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:6px 0}
.territorio>div{display:flex;flex-direction:column;gap:3px;padding:14px 22px;border-right:1px solid var(--f-linea)}
.territorio>div:last-child{border-right:0}
.territorio span{font:550 .78rem var(--f-sans);color:var(--f-tenue)}
.territorio b{font:500 1.15rem var(--f-serif);color:var(--f-tinta)}
.territorio small{font-size:.78rem;color:var(--f-suave);line-height:1.45}
.subida-mini{display:flex;gap:10px;align-items:stretch;margin-top:10px}
.subida-mini .subida-caja{flex:1;min-height:52px;flex-direction:row;padding:10px 14px;font-size:.86rem;color:var(--f-suave)}
.subida-mini .subida-caja::before{inset:5px}
.subida-mini .subida-caja span{display:inline-flex;align-items:center;gap:8px}
.subidas h4{margin:0 0 6px;font:500 1.1rem var(--f-serif);color:var(--f-tinta)}
.etiquetas{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.etiquetas li{padding:3px 10px;border-radius:20px;background:var(--f-hundido);font:550 .78rem var(--f-sans);color:var(--f-tinta-2)}
.vigilados{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.vigilados li{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;box-shadow:var(--f-hundido-sombra)}
.vigilados li span{font-size:.78rem;color:var(--f-tenue)}
.vigilados li form{margin-left:auto}.vigilados li .btn{padding:4px 8px}
.campo-boton{display:flex;align-items:flex-end}
.rx-neutro::before{background:var(--f-linea-3)}
.portada.portada-sola{grid-template-columns:1fr}
body.app .portada-sola h2{max-width:26ch}
.portada-sola .portada-entradilla{max-width:72ch}

/* bancos: CIRBE, cuentas y cartera */
.linea-estado{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 16px;font-size:.9rem;color:var(--f-suave)}
.linea-estado .estado{font:600 .86rem var(--f-sans)}
.reparto{margin:22px 0 4px}
.reparto-barra{display:flex;height:12px;border-radius:999px;overflow:hidden;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra)}
.reparto-barra i{width:var(--w);background:hsl(calc(222 - var(--i) * 14) calc(56% - var(--i) * 4%) calc(28% + var(--i) * 13%));
  animation:a-ancho .8s var(--ease) both;animation-delay:calc(var(--i) * 60ms);transform-origin:left}
.reparto-barra i + i{box-shadow:inset 1px 0 0 rgba(255,255,255,.7)}
.reparto-barra i.otras{background:var(--f-linea-3)}
.reparto-leyenda{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 22px}
.reparto-leyenda li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:baseline;gap:4px 8px;font-size:.86rem;color:var(--f-tinta-2)}
.reparto-leyenda li::before{content:"";width:8px;height:8px;border-radius:2px;background:hsl(calc(222 - var(--i) * 14) calc(56% - var(--i) * 4%) calc(28% + var(--i) * 13%))}
.reparto-leyenda span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.reparto-leyenda b{font:500 .9rem var(--f-sans);font-variant-numeric:tabular-nums}
.reparto-leyenda small{grid-column:2/4;color:var(--f-tenue);font-size:.74rem;margin-top:-3px}
.cambios-cirbe{margin:22px 0 0}
.cambios-cirbe h4,.cartera-col h4{margin:0 0 8px;font:600 .9rem var(--f-sans);color:var(--f-tinta)}
.cambios-cirbe ul,.mejoras{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.cambios-cirbe li,.mejoras li{position:relative;padding-left:16px;font-size:.9rem;color:var(--f-tinta-2)}
.cambios-cirbe li::before,.mejoras li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:currentColor}
.cambios-cirbe li.estado-neutro::before,.mejoras li::before{background:var(--f-linea-3)}
.cambios-cirbe li.estado-ko,.cambios-cirbe li.estado-warn{color:var(--f-tinta-2)}
.cambios-cirbe li.estado-ko::before{background:var(--f-ko)}.cambios-cirbe li.estado-warn::before{background:var(--f-warn)}
.vacio-guia{display:flex;flex-direction:column;gap:14px;padding:22px 26px}
.vacio-guia p{margin:0;max-width:78ch;color:var(--f-tinta-2);line-height:1.55}
.seccion > .subida-mini{margin-top:18px}
.cartera{gap:24px 56px}
.cifras-col{margin:0;display:flex;flex-direction:column}
.cifras-col div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:9px 0;border-bottom:1px solid var(--f-linea)}
.cifras-col dt{font-size:.86rem;color:var(--f-suave)}
.cifras-col dd{margin:0;font:500 1rem var(--f-sans);color:var(--f-tinta);font-variant-numeric:tabular-nums}
.cartera-col h4 small{font-weight:450;color:var(--f-tenue);margin-left:6px}
.mejoras{margin-top:16px}
td .tenue,.tenue{color:var(--f-tenue)}

/* bancos: pool y capacidad */
.pool-tabla td{vertical-align:middle}
.en-linea{display:inline;margin:0}
.btn-icono{display:inline-grid;place-items:center;width:28px;height:28px;border:0;border-radius:8px;background:none;color:var(--f-tenue);cursor:pointer;transition:background .2s,color .2s}
.btn-icono:hover{background:var(--f-ko-velo);color:var(--f-ko)}
body.app .btn-icono{box-shadow:none;padding:0;min-height:0}
body.app .dash-t th.izq,body.app .dash-t td.izq{text-align:left}
.pool-grafico{margin:24px 0 0}
.pool-grafico h4{margin:0 0 8px;font:600 .9rem var(--f-sans);color:var(--f-tinta)}
.pool-grafico h4 small{font-weight:450;color:var(--f-tenue);margin-left:6px}
.seccion .detalle-vars{margin-top:16px}
.pool-form{display:flex;flex-direction:column;gap:14px;padding:22px 26px;margin-top:24px}
.pool-form h4{margin:0;font:600 .95rem var(--f-sans);color:var(--f-tinta)}
.pool-form .grid-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px}
.pool-form .grid-form label{display:flex;flex-direction:column;gap:5px;font-size:.84rem;color:var(--f-suave)}
/* QA de recorridos (pendiente 2): la operación vencida, fuera de la deuda viva; el impagado y el excedido, señalados */
.pool-form .grid-form label.pool-pendiente{flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:10px;color:var(--f-tinta-2)}
.pool-form .grid-form label.pool-pendiente input{width:auto;margin:0}
.pool-tabla tr.pool-fuera td{color:var(--f-tenue)}
.btn-texto{background:none;border:0;padding:0 0 0 6px;font:inherit;font-size:.78rem;color:var(--f-acento);text-decoration:underline;text-underline-offset:2px;cursor:pointer}
body.app .btn-texto{box-shadow:none;min-height:0}
.pool-form .pool-mas summary{cursor:pointer;font-size:.86rem;color:var(--f-acento)}
.pool-form .pool-mas[open] summary{margin-bottom:12px}
.pool-importar{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.pool-importar textarea{width:100%;box-sizing:border-box;margin-top:5px}
.capacidad-barras{display:flex;flex-direction:column;gap:2px;margin:6px 0 0}
.cap-fila{display:grid;grid-template-columns:70px minmax(0,1fr) 130px;grid-template-rows:auto auto;align-items:center;gap:2px 16px;padding:10px 0;border-bottom:1px solid var(--f-linea)}
.cap-plazo{font:550 .86rem var(--f-sans);color:var(--f-suave)}
.cap-barra{height:10px;border-radius:999px;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra);overflow:hidden}
.cap-barra i{display:block;position:relative;height:100%;width:var(--w);border-radius:inherit;background:rgba(34,64,143,.22);
  transform-origin:left;animation:a-ancho .9s var(--ease) both;animation-delay:calc(var(--i) * 70ms)}
.cap-barra em{position:absolute;inset:0 auto 0 0;width:var(--r);border-radius:inherit;background:linear-gradient(90deg,var(--f-acento),var(--f-acento-2))}
.cap-fila b{font:500 1.05rem var(--f-sans);color:var(--f-tinta);text-align:right;font-variant-numeric:tabular-nums}
.cap-fila small{grid-column:2/4;font-size:.76rem;color:var(--f-tenue)}
.sim-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:20px 0 0}
.sim-form label{display:flex;flex-direction:column;gap:5px;font-size:.84rem;color:var(--f-suave)}
.sim-resultado{margin-top:16px}

.portada-falta{display:flex;gap:8px;align-items:flex-start;margin:14px 0 0;max-width:62ch;font-size:.95rem;color:var(--f-tinta-2)}
.portada-falta .ico{flex:none;margin-top:3px;color:var(--f-acento)}

/* ---------------------------------------------------------------- inicio como app (cabina) */
.cabina{display:grid;grid-template-columns:minmax(250px,300px) minmax(0,1fr) minmax(240px,290px);gap:18px;align-items:stretch}
.cab-nota{display:flex;flex-direction:column;gap:6px;padding:18px 20px 16px;perspective:900px}
.cab-nota{overflow:visible}
.cab-sello{position:absolute;right:-14px;top:-18px;width:74px;height:74px;border-radius:50%;perspective:600px;z-index:2;
  filter:drop-shadow(0 10px 16px rgba(20,29,38,.22));transition:transform .7s var(--ease-sal)}
.cab-sello svg{width:100%;height:100%;transition:transform .9s var(--ease-sal);transform-style:preserve-3d}
.cab-sello:hover svg{transform:rotateY(180deg) rotateZ(-8deg)}
.cab-sello:hover{transform:translateY(-3px)}
.cab-nota-cab{display:flex;flex-direction:column;gap:2px;padding-right:56px;justify-content:space-between;align-items:baseline;font-size:.8rem}
.cab-nota-cab .estado{font:600 .82rem var(--f-sans);white-space:nowrap}
.cab-nota-cab .tenue{font-size:.74rem}
.cab-gauge{display:grid;place-items:center;transform:rotateX(8deg);transform-origin:50% 100%;transition:transform .6s var(--ease)}
.cab-nota:hover .cab-gauge{transform:rotateX(0)}
.cab-gauge svg{width:100%;max-width:250px;height:auto;filter:drop-shadow(0 10px 14px rgba(20,29,38,.12))}
.cab-nota-pie{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--f-linea);padding-top:10px}
.cab-nota-pie div{display:flex;flex-direction:column;gap:2px}
.cab-nota-pie span{font-size:.72rem;color:var(--f-tenue)}
.cab-nota-pie b{font:450 1.35rem/1 var(--f-serif);color:var(--f-tinta)}
.cab-nota-pie small{font:500 .75rem var(--f-sans);color:var(--f-tenue)}
.banda-A{color:var(--f-ok)!important}.banda-B{color:#3f7d5c!important}.banda-C{color:var(--f-warn)!important}.banda-D{color:var(--f-ko)!important}
.cab-mas{margin-top:4px;font:550 .8rem var(--f-sans);color:var(--f-acento);text-decoration:none;display:inline-flex;gap:6px;align-items:center}
.cab-metricas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.metrica{display:flex;flex-direction:column;gap:6px;padding:16px 18px;text-decoration:none;color:inherit;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.metrica:hover{transform:translateY(-3px);box-shadow:var(--f-relieve-alto),0 22px 40px -26px rgba(34,64,143,.45)}
.m-et{display:inline-flex;align-items:center;gap:7px;font:550 .78rem var(--f-sans);color:var(--f-suave)}
.m-et .ico{color:var(--f-acento)}
.m-v{font:450 1.9rem/1.05 var(--f-serif);color:var(--f-tinta);font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.01em}
.m-v small{font:500 .8rem var(--f-sans);color:var(--f-tenue)}
.metrica-ko .m-v{color:var(--f-ko)}
.m-pie{font-size:.76rem;color:var(--f-tenue)}
.m-barra,.m-escala{position:relative;display:block;height:6px;border-radius:999px;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra);margin-top:auto}
.m-barra i{position:absolute;inset:0 auto 0 0;width:var(--w);border-radius:inherit;background:linear-gradient(90deg,var(--f-acento),var(--f-acento-2));
  transform-origin:left;animation:a-ancho 1s var(--ease) .3s both}
.m-escala i{position:absolute;top:-3px;left:var(--x);width:12px;height:12px;margin-left:-6px;border-radius:50%;background:var(--f-acento);
  box-shadow:0 0 0 3px #fff,0 2px 6px rgba(20,29,38,.3);animation:a-entrar .6s var(--ease-sal) .4s both}
.m-escala em{position:absolute;top:-4px;bottom:-4px;left:var(--x);width:2px;background:var(--f-warn);border-radius:2px}
.cab-paso{display:flex;flex-direction:column;gap:10px;padding:18px 20px}
.paso-titulo{margin:0;font:450 1.18rem/1.3 var(--f-serif);color:var(--f-tinta)}
.paso-efecto{margin:0;font-size:.84rem;color:var(--f-suave)}
.paso-efecto b{color:var(--f-ok)}
.cab-paso .btn{align-self:flex-start}
.paso-exp{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:12px;border-top:1px solid var(--f-linea);text-decoration:none;color:inherit}
.paso-exp span{display:flex;flex-direction:column;font-size:.84rem}.paso-exp small{color:var(--f-tenue);font-size:.74rem}
/* el anillo-svg de la cabina; el anillo con cifra de la portada clásica (div.anillo) no se gira entero: la cifra salía de lado */
svg.anillo{width:40px;height:40px;transform:rotate(-90deg)}
svg.anillo circle{fill:none;stroke:var(--f-hundido);stroke-width:4}
svg.anillo .anillo-v{stroke:var(--f-acento);stroke-linecap:round;stroke-dasharray:97.4;stroke-dashoffset:calc(97.4 - 97.4 * var(--p) / 100);
  transition:stroke-dashoffset 1.2s var(--ease)}
.widgets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}
.widgets-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.widget{display:flex;flex-direction:column;gap:14px;padding:20px 22px}
.widget-plano{padding:6px 2px}
.w-cab{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.w-cab h3{margin:0;font:450 1.2rem var(--f-serif);color:var(--f-tinta)}
.w-cab .tenue,.w-cab .enlace-mas{font-size:.78rem}
.w-control{display:flex;flex-direction:column;gap:8px;font-size:.84rem;color:var(--f-suave)}
.w-control output{font:500 1.05rem var(--f-sans);letter-spacing:0;font-variant-numeric:proportional-nums;color:var(--f-tinta);margin-left:6px;font-variant-numeric:tabular-nums}
.w-control input[type=range],body.app .w-control input[type=range]{-webkit-appearance:none;appearance:none;padding:0;border:0;width:100%;height:8px;border-radius:999px;
  background:linear-gradient(90deg,var(--f-acento) var(--p,40%),var(--f-hundido) var(--p,40%));box-shadow:var(--f-hundido-sombra);outline-offset:6px}
.w-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;
  box-shadow:0 0 0 1px rgba(20,29,38,.12),0 4px 10px rgba(20,29,38,.25);cursor:grab;transition:transform .2s}
.w-control input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15);cursor:grabbing}
.w-control input[type=range]::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:#fff;box-shadow:0 0 0 1px rgba(20,29,38,.12),0 4px 10px rgba(20,29,38,.25)}
.w-segmentos{display:inline-flex;align-self:flex-start;padding:3px;border-radius:10px;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra)}
.w-segmentos input{position:absolute;opacity:0;pointer-events:none}
.w-segmentos span{display:block;padding:6px 14px;border-radius:8px;font:550 .82rem var(--f-sans);color:var(--f-suave);cursor:pointer;transition:background .25s,color .25s,box-shadow .25s}
.w-segmentos input:checked + span{background:#fff;color:var(--f-tinta);box-shadow:0 1px 3px rgba(20,29,38,.15)}
.w-segmentos input:focus-visible + span{outline:2px solid var(--f-acento)}
.sim-salida{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--f-linea);padding-top:12px}
.sim-salida div{display:flex;flex-direction:column;gap:3px}
.sim-salida span{font-size:.72rem;color:var(--f-tenue)}
.sim-salida b{font:500 1.15rem var(--f-sans);color:var(--f-tinta);font-variant-numeric:tabular-nums;transition:color .3s}
.sim-salida b.estado-ok{color:var(--f-ok)}.sim-salida b.estado-warn{color:var(--f-warn)}.sim-salida b.estado-ko{color:var(--f-ko)}
.sim-pista{position:relative;height:10px;border-radius:999px;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra)}
.sim-pista i{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:var(--f-ok);transition:width .25s var(--ease),background .3s}
.sim-pista i[data-est=warn]{background:var(--f-warn)}.sim-pista i[data-est=ko]{background:var(--f-ko)}
.sim-pista em{position:absolute;top:-5px;bottom:-5px;width:2px;margin-left:-1px;border-radius:2px;background:var(--f-ok);transition:left .3s var(--ease)}
.sim-pista em.max{background:var(--f-tinta-2)}
.sim-leyenda{display:flex;gap:16px;font-size:.72rem;color:var(--f-tenue)}
.sim-veto{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;font-size:.84rem;line-height:1.45;color:var(--f-ko)}
.sim-veto svg{flex:none;margin-top:2px}
.sim-leyenda i{display:inline-block;width:2px;height:10px;margin-right:6px;vertical-align:-1px;background:var(--f-ok)}.sim-leyenda i.max{background:var(--f-tinta-2)}
.palancas{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.interruptor{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;cursor:pointer;transition:background .25s}
.interruptor:hover{background:var(--f-acento-velo)}
.interruptor input{position:absolute;opacity:0}
.int-pista{flex:none;position:relative;width:38px;height:22px;border-radius:999px;background:var(--f-hundido);box-shadow:var(--f-hundido-sombra);transition:background .3s var(--ease)}
.int-pista i{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(20,29,38,.3);transition:transform .35s var(--ease-sal)}
.interruptor input:checked + .int-pista{background:var(--f-ok)}
.interruptor input:checked + .int-pista i{transform:translateX(16px)}
.interruptor input:focus-visible + .int-pista{outline:2px solid var(--f-acento);outline-offset:2px}
.int-txt{display:flex;flex-direction:column;font-size:.86rem}.int-txt b{font-weight:550;color:var(--f-tinta)}.int-txt small{color:var(--f-tenue);font-size:.74rem}
.escalera{position:relative;display:grid;grid-template-columns:repeat(8,1fr);gap:4px;padding-bottom:14px}
.esc-g{display:grid;place-items:center;height:30px;border-radius:7px;font:600 .8rem var(--f-sans);color:#fff;opacity:.35;transition:opacity .35s,transform .35s var(--ease)}
.esc-g.g1,.esc-g.g2{background:var(--f-ok)}.esc-g.g3,.esc-g.g4{background:#5c9a74}.esc-g.g5,.esc-g.g6{background:var(--f-warn)}.esc-g.g7,.esc-g.g8{background:var(--f-ko)}
.esc-g.hoy{opacity:.75}.esc-g.meta{opacity:1;transform:translateY(-3px);box-shadow:0 8px 16px -8px rgba(20,29,38,.5)}
.esc-cursor{position:absolute;bottom:0;left:calc((var(--g) - .5) * 12.5%);width:0;height:0;margin-left:-6px;border:6px solid transparent;border-bottom-color:var(--f-tinta);
  transition:left .55s var(--ease-sal)}
.feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.feed li:has(> a){display:block;padding:0}
.feed li > a{border-bottom:0!important}
.feed li,.feed a{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--f-linea);text-decoration:none;color:inherit}
.feed li:last-child{border-bottom:0}
.feed b{display:block;font:500 .86rem/1.35 var(--f-sans);color:var(--f-tinta-2)}
.feed small{font-size:.74rem;color:var(--f-tenue)}
.feed-punto{flex:none;width:8px;height:8px;margin-top:6px;border-radius:50%;background:var(--f-linea-3)}
.feed-punto.warn{background:var(--f-warn)}.feed-punto.acento{background:var(--f-acento)}
.mini-kpis{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.mini-kpis li{display:grid;grid-template-columns:minmax(0,1fr) auto 80px;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--f-linea);font-size:.84rem;color:var(--f-suave)}
.mini-kpis span{display:flex;flex-direction:column;gap:1px}
.mini-kpis em{font:500 .7rem var(--f-sans);font-style:normal;color:var(--f-tenue)}
.mini-kpis em.kpi-verde{color:var(--f-ok)}.mini-kpis em.kpi-rojo{color:var(--f-ko)}
.analista-app{margin:18px 0 0}
.mini-kpis b{font:500 .95rem var(--f-sans);color:var(--f-tinta);font-variant-numeric:tabular-nums}
.mini-kpis i svg{width:80px;height:24px}
@media (max-width:1100px){.cabina{grid-template-columns:1fr 1fr}.cab-paso{grid-column:1/-1}.widgets-3{grid-template-columns:1fr 1fr}}
@media (max-width:720px){.cabina,.widgets,.widgets-3,.cab-metricas{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.cab-gauge,.metrica,.esc-cursor,.int-pista i,.sim-pista i,.sim-pista em{transition:none}}

/* ---------------------------------------------------------------- plan como app */
.plan-cabina{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.9fr);gap:28px;padding:26px 30px 26px}
.plan-cab-texto{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px}
body.app .plan-cabina h2{margin:0;font:420 clamp(1.7rem,2.6vw,2.3rem)/1.1 var(--f-serif);letter-spacing:-.015em;max-width:22ch;color:var(--f-tinta)}
.plan-lema{margin:0;font-size:.82rem;color:var(--f-tenue)}
.trayecto{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;margin:10px 0 6px;perspective:700px}
.tr-g{position:relative;display:grid;place-items:center;height:44px;border-radius:9px;font:600 .9rem var(--f-sans);color:#fff;opacity:.28;
  transform:rotateX(18deg);transform-origin:bottom;animation:tr-entra .7s var(--ease) both;animation-delay:calc(var(--i) * 55ms)}
@keyframes tr-entra{from{opacity:0;transform:rotateX(70deg) translateY(8px)}}
.tr-g.g1,.tr-g.g2{background:linear-gradient(180deg,#2a8a62,#1d7a55)}.tr-g.g3,.tr-g.g4{background:linear-gradient(180deg,#6aa883,#5c9a74)}
.tr-g.g5,.tr-g.g6{background:linear-gradient(180deg,#bf8a33,#a66c15)}.tr-g.g7,.tr-g.g8{background:linear-gradient(180deg,#c45a47,#b3412f)}
.tr-g.camino{opacity:.55}
.tr-g.hoy,.tr-g.meta{opacity:1;transform:rotateX(0) translateY(-4px);box-shadow:0 14px 22px -12px rgba(20,29,38,.55)}
.tr-g.meta{outline:2px solid #fff;outline-offset:-4px}
.tr-g em{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);white-space:nowrap;font:600 .68rem var(--f-sans);
  font-style:normal;color:var(--f-suave)}
.tr-g.meta em{color:var(--f-ok)}
.plan-cab-cifras{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:0;align-content:start;border-left:1px solid var(--f-linea);padding-left:24px}
.antes-despues{display:flex;flex-direction:column;gap:4px;padding:14px 4px 14px 0;border-bottom:1px solid var(--f-linea)}
.antes-despues:nth-last-child(-n+2){border-bottom:0}
.ad-et{font:550 .76rem var(--f-sans);color:var(--f-tenue)}
.ad-v{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ad-a{font:450 1.05rem var(--f-serif);color:var(--f-tenue);text-decoration:line-through;text-decoration-color:var(--f-linea-3)}
.ad-flecha{color:var(--f-linea-3);align-self:center;display:inline-flex}.ad-flecha.mejor{color:var(--f-ok)}
.ad-v b{font:450 1.65rem/1 var(--f-serif);color:var(--f-tinta);font-variant-numeric:lining-nums}
.ad-v b small{font:500 .78rem var(--f-sans);color:var(--f-tenue);margin-left:2px}
.ad-pie{font-size:.72rem;color:var(--f-tenue)}
.ad-ahorro b{color:var(--f-ok)}
.linea-pasos{list-style:none;margin:0;padding:0 0 0 0;position:relative;display:flex;flex-direction:column;gap:10px}
.linea-pasos::before{content:"";position:absolute;left:21px;top:22px;bottom:22px;width:2px;background:linear-gradient(var(--f-acento),var(--f-linea-2))}
.lp-paso{position:relative;animation:a-entrar .5s var(--ease) both;animation-delay:calc(var(--i) * 80ms)}
.lp-paso details,body.app .lp-paso details{border:0;padding:0;margin:0;border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(249,251,251,.82));box-shadow:var(--f-relieve);
  transition:box-shadow .3s var(--ease),transform .3s var(--ease)}
.lp-paso details:hover{box-shadow:var(--f-relieve-alto)}
.lp-paso summary{list-style:none;display:grid;grid-template-columns:44px minmax(0,1fr) auto 20px;align-items:center;gap:14px;padding:14px 16px 14px 0;cursor:pointer}
.lp-paso summary::-webkit-details-marker{display:none}
body.app .lp-paso summary::after{content:none}
body.app .lp-paso details[open] summary,body.app .lp-paso summary:hover{color:inherit}
.lp-n{position:relative;z-index:1;display:grid;place-items:center;width:30px;height:30px;margin-left:7px;border-radius:50%;background:#fff;
  font:600 .85rem var(--f-sans);color:var(--f-acento);box-shadow:0 0 0 2px var(--f-acento),0 6px 12px -6px rgba(34,64,143,.6)}
details[open] .lp-n{background:var(--f-acento);color:#fff}
.lp-tit{display:flex;flex-direction:column;gap:2px;min-width:0}
.lp-tit b{font:550 .98rem var(--f-sans);color:var(--f-tinta)}
.lp-tit small{font-size:.76rem;color:var(--f-tenue)}
.lp-chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.chip-ef{padding:4px 9px;border-radius:999px;background:var(--f-hundido);font:500 .74rem var(--f-sans);color:var(--f-suave);white-space:nowrap}
.chip-ef b{color:var(--f-tinta)}.chip-ok{background:var(--f-ok-velo);color:var(--f-ok)}
.chip-warn{background:var(--f-warn-velo,var(--f-hundido));color:var(--f-warn,var(--f-suave))}
.lp-abrir{color:var(--f-tenue);transition:transform .3s var(--ease)}
details[open] .lp-abrir{transform:rotate(90deg)}
.lp-detalle{padding:0 22px 18px 58px;display:flex;flex-direction:column;gap:12px;animation:a-entrar .4s var(--ease) both}
.lp-detalle p{margin:0;color:var(--f-tinta-2);max-width:75ch}
@media (max-width:900px){.plan-cabina{grid-template-columns:1fr}.plan-cab-cifras{border-left:0;padding-left:0;border-top:1px solid var(--f-linea)}
  .lp-paso summary{grid-template-columns:44px minmax(0,1fr) 20px}.lp-chips{grid-column:2;justify-content:flex-start}}

/* ---------------------------------------------------------------- páginas públicas (portada, registro, acceso) */
body.app.publico{padding:0}
.pub-cab{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:14px max(20px,calc((100vw - 1200px) / 2));background:rgba(243,245,246,.78);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--f-linea)}
.pub-nav{display:flex;align-items:center;gap:22px;font:550 .86rem var(--f-sans)}
.pub-nav a:not(.btn){color:var(--f-tinta-2);text-decoration:none;transition:color .2s}.pub-nav a:not(.btn):hover{color:var(--f-acento)}
.publico main{max-width:1200px;margin:0 auto;padding:0 20px}
.btn-grande{padding:14px 22px!important;font-size:.98rem!important}
.pub-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center;min-height:min(78vh,720px);padding:56px 0 40px}
.pub-sello{display:inline-flex;align-items:center;gap:8px;margin:0 0 20px;padding:7px 12px;border-radius:999px;background:var(--f-acento-velo);
  font:550 .8rem var(--f-sans);color:var(--f-acento)}
.pub-hero h1{margin:0;font:420 clamp(2.2rem,3.8vw,3.25rem)/1.06 var(--f-serif);letter-spacing:-.02em;color:var(--f-tinta);max-width:19ch}
.pub-hero h1 span{display:block;color:var(--f-acento)}
.pub-entradilla{margin:22px 0 28px;max-width:56ch;font-size:1.08rem;line-height:1.6;color:var(--f-tinta-2)}
.pub-acciones{display:flex;flex-wrap:wrap;gap:12px}
.pub-datos{list-style:none;margin:34px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px;border-top:1px solid var(--f-linea);padding-top:20px}
.pub-datos li{font-size:.8rem;color:var(--f-suave);line-height:1.4}.pub-datos b{display:block;font:450 1.6rem var(--f-serif);color:var(--f-tinta)}
.pub-hero-visual{perspective:1400px}
.maqueta{position:relative;height:440px;transform:rotateY(-14deg) rotateX(6deg);transform-style:preserve-3d;animation:maq-flota 9s ease-in-out infinite}
@keyframes maq-flota{50%{transform:rotateY(-10deg) rotateX(4deg) translateY(-8px)}}
.maq-tarjeta{position:absolute;padding:16px 18px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(247,249,250,.9));
  box-shadow:var(--f-relieve-alto);animation:maq-ap .9s var(--ease) both}
@keyframes maq-ap{from{opacity:0}to{opacity:1}}
.maq-et{display:block;font:550 .72rem var(--f-sans);color:var(--f-tenue);margin-bottom:6px}
.maq-nota{left:4%;top:6%;width:56%;transform:translateZ(40px)}
.maq-gauge svg{width:100%}.maq-num{font:420 40px var(--f-serif);fill:#141d26}.maq-sub{font:600 9px var(--f-sans);fill:#1d7a55;letter-spacing:.06em;text-transform:uppercase}
.maq-arco{stroke-dasharray:100;stroke-dashoffset:100;animation:maq-arco 1.8s var(--ease) .4s forwards}
@keyframes maq-arco{to{stroke-dashoffset:22}}
.maq-kpi b{display:block;font:450 1.5rem var(--f-serif);color:var(--f-tinta)}.maq-kpi b.ko{color:var(--f-ko)}.maq-kpi small{font-size:.72rem;color:var(--f-tenue)}
.maq-k1{right:2%;top:2%;width:38%;transform:translateZ(90px);animation-delay:.25s}
.maq-k2{right:6%;top:36%;width:36%;transform:translateZ(60px);animation-delay:.4s}
.maq-barra{display:block;height:6px;margin-top:10px;border-radius:9px;background:linear-gradient(90deg,var(--f-acento) 70%,var(--f-hundido) 70%)}
.maq-pasos{left:12%;bottom:4%;width:70%;transform:translateZ(120px);animation-delay:.55s}
.maq-escalera{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:4px 0 8px}
.maq-escalera span{height:22px;border-radius:5px;opacity:.3}
.maq-escalera .g1,.maq-escalera .g2{background:var(--f-ok)}.maq-escalera .g3,.maq-escalera .g4{background:#5c9a74}
.maq-escalera .g5,.maq-escalera .g6{background:var(--f-warn)}.maq-escalera .g7,.maq-escalera .g8{background:var(--f-ko)}
.maq-escalera .hoy{opacity:.95}.maq-escalera .meta{opacity:1;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--f-ok)}
.maq-pasos small{font-size:.75rem;color:var(--f-suave)}
.publico main:not(.auth) > section{padding:64px 0}
.publico main > section.pub-hero{padding:56px 0 40px}
.publico h2{margin:0 0 26px;font:420 clamp(1.7rem,2.8vw,2.3rem)/1.12 var(--f-serif);letter-spacing:-.015em;color:var(--f-tinta);max-width:24ch}
.senales-6{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--f-linea-2)}
.senales-6 li{position:relative;display:flex;flex-direction:column;gap:6px;padding:22px 22px 24px 0;border-bottom:1px solid var(--f-linea)}
.senales-6 .s-n{font:420 2rem var(--f-serif);color:var(--f-acento);opacity:.35}
.senales-6 b{font:550 1rem var(--f-sans);color:var(--f-tinta)}.senales-6 small{font-size:.86rem;color:var(--f-suave);line-height:1.45}
.metodo-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;position:relative}
.m-paso{position:relative;padding:22px 20px 24px;transition:transform .35s var(--ease)}
.m-paso:hover{transform:translateY(-4px)}
.m-ico{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--f-acento-velo);color:var(--f-acento)}
.m-num{position:absolute;right:18px;top:16px;font:420 1.6rem var(--f-serif);color:var(--f-linea-3)}
.m-paso h3{margin:16px 0 8px;font:450 1.25rem var(--f-serif);color:var(--f-tinta)}.m-paso p{margin:0;font-size:.88rem;line-height:1.55;color:var(--f-suave)}
.pub-app{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:center}
.app-lista{list-style:none;margin:0 0 26px;padding:0;display:flex;flex-direction:column;gap:18px}
.app-lista li{display:flex;gap:14px}.app-lista .ico{flex:none;margin-top:3px;color:var(--f-acento)}
.app-lista b{display:block;font:550 1rem var(--f-sans);color:var(--f-tinta)}.app-lista span{font-size:.9rem;color:var(--f-suave);line-height:1.5}
.pub-app-visual{margin:0;padding:26px;display:flex;flex-direction:column;gap:14px;transform:perspective(1200px) rotateY(6deg);transition:transform .6s var(--ease)}
.pub-app-visual:hover{transform:perspective(1200px) rotateY(0)}
.pav-fila{display:grid;grid-template-columns:150px minmax(0,1fr) 110px;align-items:center;gap:14px;font-size:.86rem;color:var(--f-tinta-2)}
.pav-fila i{display:block;height:10px;width:var(--w);border-radius:9px;background:var(--f-ok);transform-origin:left;animation:a-ancho 1s var(--ease) both}
.pav-fila i.ko{background:var(--f-ko)}.pav-fila i.warn{background:var(--f-warn)}
.pav-fila b{font-weight:600;text-align:right}.pav-fila b.ok{color:var(--f-ok)}.pav-fila b.ko{color:var(--f-ko)}.pav-fila b.warn{color:var(--f-warn)}
.pub-app-visual figcaption{font-size:.74rem;color:var(--f-tenue)}
.expres-cab p{max-width:68ch;color:var(--f-suave);margin:-12px 0 24px}
.expres-form{padding:24px 26px;display:flex;flex-direction:column;gap:16px}
.expres-form .grid-form{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px 14px}
.expres-form label,.expres-pie label{display:flex;flex-direction:column;gap:5px;font-size:.78rem;color:var(--f-suave)}
.expres-form details.pega{background:none;border:0;padding:0;margin:0}
.expres-form details.pega summary{font-size:.86rem;color:var(--f-acento)}
.expres-form textarea{width:100%;box-sizing:border-box;margin-top:8px}
.expres-pie{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.expres-resultado{margin-top:20px;padding:24px 26px;display:flex;flex-direction:column;gap:16px;animation:a-entrar .6s var(--ease) both}
.er-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 22px;font-size:.92rem;color:var(--f-suave)}
.er-banda{font:450 1.8rem var(--f-serif)}
.er-categoria{margin:0;color:var(--f-tinta-2)}
.er-mejora{display:flex;gap:8px;margin:0;color:var(--f-tinta-2)}.er-mejora .ico{flex:none;color:var(--f-warn);margin-top:3px}
.er-cols{display:grid;grid-template-columns:1fr 1fr;gap:28px}.er-cols h4{margin:0 0 8px;font:600 .9rem var(--f-sans)}
.er-checks,.er-senales{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.88rem}
.er-checks li{display:flex;gap:8px;align-items:center}.er-checks .ok .ico{color:var(--f-ok)}.er-checks .ko .ico{color:var(--f-ko)}.er-checks .na{color:var(--f-tenue)}
.pub-precio-caja{display:flex;justify-content:space-between;align-items:center;gap:28px;padding:34px 38px}
.pub-precio-caja h2{margin-bottom:10px}.pub-precio-caja p{margin:0;max-width:62ch;color:var(--f-suave);line-height:1.6}
.pub-pie{max-width:1200px;margin:40px auto 0;padding:34px 20px 40px;border-top:1px solid var(--f-linea-2);display:grid;grid-template-columns:1fr auto;gap:18px 40px}
.pub-pie p{margin:8px 0 0;font-size:.84rem;color:var(--f-suave);max-width:46ch}
.pub-pie nav{display:flex;gap:18px;font-size:.86rem}.pub-pie nav a{color:var(--f-tinta-2)}
.pub-legal{grid-column:1/-1;font-size:.74rem!important;color:var(--f-tenue)!important;max-width:none!important}
.marca-pie b{font-size:1.2rem}
.auth{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,440px);gap:56px;align-items:center;min-height:calc(100vh - 140px);padding:40px 20px}
.auth-lado{position:relative;display:flex;flex-direction:column;gap:20px}
.auth-lado h2{margin:0;font:420 clamp(2rem,3.4vw,2.9rem)/1.08 var(--f-serif);letter-spacing:-.02em;color:var(--f-tinta);max-width:18ch}
.auth-sub{margin:0;color:var(--f-suave);font-size:1.05rem}
.auth-pasos{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:16px}
.auth-pasos li{display:flex;gap:14px;align-items:flex-start}
.auth-pasos li>span{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--f-acento);
  font:600 .85rem var(--f-sans);color:var(--f-acento)}
.auth-pasos b{display:block;font:550 .98rem var(--f-sans);color:var(--f-tinta)}.auth-pasos small{font-size:.84rem;color:var(--f-suave)}
.auth-garantia{display:flex;gap:8px;align-items:center;margin:0;font-size:.84rem;color:var(--f-suave)}
.auth-sello{width:200px;height:200px;margin-top:10px;perspective:800px;filter:drop-shadow(0 18px 26px rgba(20,29,38,.18))}
.auth-sello svg{width:100%;height:100%;animation:sello-gira 14s linear infinite;transform-style:preserve-3d}
@keyframes sello-gira{0%{transform:rotateY(0)}50%{transform:rotateY(18deg) rotateX(6deg)}100%{transform:rotateY(0)}}
.auth-form{padding:34px 32px;display:flex;flex-direction:column;gap:18px}
.auth-form h1{margin:0;font:420 1.9rem var(--f-serif);color:var(--f-tinta)}
.auth-form form{display:flex;flex-direction:column;gap:16px}
.auth-form label{display:flex;flex-direction:column;gap:6px;font:550 .82rem var(--f-sans);color:var(--f-tinta-2)}
.auth-form label small{font-weight:450;color:var(--f-tenue)}
.auth-form input{padding:12px 14px!important;font-size:1rem!important}
.auth-form button{align-self:stretch;justify-content:center}
.auth-pie{margin:0;font-size:.84rem;color:var(--f-suave)}
.auth-aviso{margin:0}
.hp{position:absolute!important;left:-9999px!important}
@media (max-width:980px){.pub-hero,.pub-app,.auth{grid-template-columns:1fr}.pub-hero-visual{display:none}.metodo-4{grid-template-columns:1fr 1fr}
  .senales-6{grid-template-columns:1fr 1fr}.expres-form .grid-form{grid-template-columns:repeat(2,1fr)}.auth-sello{display:none}}
@media (max-width:620px){.pub-nav a:not(.btn):not(.pub-entrar){display:none}.metodo-4,.senales-6,.pub-datos,.er-cols{grid-template-columns:1fr}
  .pub-precio-caja{flex-direction:column;align-items:flex-start}.pub-pie{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.maqueta,.auth-sello svg,.maq-arco{animation:none}.maq-arco{stroke-dashoffset:22}}

/* mi cuenta */
.cuenta-form{display:flex;flex-direction:column;gap:14px;align-items:flex-start;padding:22px 26px}
.campos-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 18px;width:100%}
.campos-3 label{display:flex;flex-direction:column;gap:5px}
.campos-2{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px 18px;width:100%}
.campos-2 label,.campo-ancho{display:flex;flex-direction:column;gap:5px}
.campo-ancho{width:100%}
.ruta-cnae{margin:-6px 0 0;font-size:.8rem;color:var(--f-tenue)}
.detectado{font:600 .7rem var(--f-sans);color:var(--f-warn);margin-left:4px}
input.mayus{text-transform:uppercase}
.fila-botones{display:flex;gap:8px}
body.app pre.codigo{margin:10px 0 0;padding:14px 16px;border-radius:10px;background:var(--f-hundido);font:500 .78rem/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;
  color:var(--f-tinta-2);white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:auto;max-width:100%}
code.clave{font-size:1rem;user-select:all}
.conectar{display:flex;flex-direction:column;gap:6px;padding:16px 18px;border-radius:12px;box-shadow:var(--f-hundido-sombra);width:100%;box-sizing:border-box}
.conectar p{margin:0}
.cuenta-baja{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px}
.cuenta-baja label{display:flex;flex-direction:column;gap:5px}
body.app .btn-peligro{color:var(--f-ko);box-shadow:inset 0 0 0 1px rgba(179,65,47,.35)}

/* ---------------------------------------------------------------- rating y metodología */
.rating-portada{grid-template-columns:minmax(0,1fr) minmax(260px,340px)}
body.app .rating-portada h2{max-width:20ch}
.rating-radar{margin:0;display:flex;flex-direction:column;align-items:center;gap:8px}
.rating-radar svg{width:100%;max-width:340px;height:auto}
.rating-radar figcaption{font-size:.76rem;color:var(--f-tenue)}
.maestra svg{min-width:720px}
.g-maestra .em-celda{animation:a-entrar .5s var(--ease) both;animation-delay:calc(var(--i) * 45ms)}
.g-maestra .em-rango{transform-box:fill-box;transform-origin:center;animation:a-ancho .8s var(--ease) .55s both}
.g-maestra .em-pd{animation:a-entrar .6s var(--ease-sal) .45s both}
.limites{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px 30px}
.limites li{display:flex;flex-direction:column;gap:2px;padding:2px 0 2px 14px;box-shadow:inset 2px 0 0 var(--f-linea-2)}
.limites li.limite-ov{box-shadow:inset 2px 0 0 var(--f-warn)}
.limites b{font:650 .92rem var(--f-sans);color:var(--f-tinta)}
.limites span{font-size:.86rem;color:var(--f-suave)}
.lista-sc{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:10px}
.lista-sc li{display:flex;flex-direction:column;padding-left:16px;position:relative}
.lista-sc li::before{content:"";position:absolute;left:0;top:.55em;width:7px;height:7px;border-radius:50%;background:var(--f-linea-3)}
.lista-sc li.ok::before{background:var(--f-ok)}.lista-sc li.ko::before{background:var(--f-ko)}.lista-sc li.mas::before{background:var(--f-acento)}
.lista-sc li.vacio{color:var(--f-tenue)}
.lista-sc b{font:600 .92rem var(--f-sans);color:var(--f-tinta)}
.lista-sc span{font-size:.84rem;color:var(--f-suave)}
body.app details.detalle-vars{background:none;border:0;border-top:1px solid var(--f-linea);border-radius:0;box-shadow:none;padding:12px 0 0}
.detalle-vars summary{cursor:pointer;font:600 .88rem var(--f-sans);color:var(--f-acento)}
.contrib svg{min-width:760px}
.g-contrib .ct-barra{animation:a-entrar .6s var(--ease) both}
.detalle-vars td .fine{display:block;max-width:46ch;margin-top:2px;font-weight:400}
.franja-info{background:var(--f-acento-velo);color:var(--f-acento);box-shadow:inset 3px 0 0 var(--f-acento)}
body.app a.franja-info b{color:#1a2f6b}body.app a.franja-info p{color:var(--f-tinta-2)}
.metodo-portada{grid-template-columns:minmax(0,1fr) minmax(220px,280px)}
body.app .metodo-portada h2{max-width:18ch}
.cadena{list-style:none;margin:0;padding:0;display:grid;gap:0;counter-reset:paso;position:relative}
.cadena::before{content:"";position:absolute;left:13px;top:14px;bottom:14px;width:1px;background:linear-gradient(var(--f-acento),rgba(34,64,143,.15))}
.cadena li{position:relative;display:flex;flex-direction:column;padding:7px 0 7px 38px;counter-increment:paso}
.cadena li::before{content:counter(paso);position:absolute;left:0;top:7px;width:27px;height:27px;border-radius:50%;display:grid;place-items:center;
  font:500 .86rem var(--f-serif);color:var(--f-acento);background:var(--f-sup);box-shadow:var(--f-relieve)}
.cadena b{font:650 .9rem var(--f-sans);color:var(--f-tinta)}
.cadena small{font-size:.78rem;color:var(--f-tenue)}
.qeq{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;border-top:1px solid var(--f-linea-2)}
.qeq-col{padding:16px 18px 6px 0;margin-right:18px;border-right:1px solid var(--f-linea)}
.qeq-col:last-child{border-right:0;margin-right:0}
.qeq-col>b{display:block;font:500 1.15rem var(--f-serif);color:var(--f-tinta);margin-bottom:8px}
.qeq-dato>b{color:var(--f-ok)}.qeq-criterio>b{color:var(--f-acento)}.qeq-proxy>b{color:var(--f-warn)}.qeq-pendiente>b{color:var(--f-tenue)}
.qeq ul{margin:0;padding:0 0 0 14px;display:grid;gap:8px;font-size:.84rem;line-height:1.5;color:var(--f-tinta-2)}
.frescura{max-width:820px}
.fichas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 36px}
body.app details.ficha{background:none;border:0;border-top:1px solid var(--f-linea);border-radius:0;box-shadow:none;padding:0;margin:0}
body.app details.ficha summary::after,body.app details.detalle-vars summary::after{content:none}
body.app details.ficha summary:hover b,body.app details.ficha[open] summary b{color:var(--f-acento)}
body.app .ficha summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;align-items:baseline;padding:12px 0;cursor:pointer;list-style:none}
.ficha summary::-webkit-details-marker{display:none}
.ficha summary b{font:600 .92rem var(--f-sans);color:var(--f-tinta)}
.ficha summary span{grid-column:1;font-size:.78rem;color:var(--f-tenue)}
.ficha summary{position:relative;padding-right:26px!important}
.ficha summary::before{content:"+";position:absolute;right:2px;top:12px;font:300 1.2rem/1 var(--f-sans);color:var(--f-tenue);transition:transform .25s var(--ease)}
.ficha[open] summary::before{transform:rotate(45deg)}
.ficha-clase{grid-row:1 / span 2;grid-column:2;font:600 .7rem var(--f-sans);font-style:normal;padding:3px 8px;border-radius:20px;
  background:var(--f-ok-velo);color:var(--f-ok)}
.ficha-clase.ficha-proxy{background:var(--f-warn-velo);color:var(--f-warn)}
.ficha:target{background:linear-gradient(90deg,var(--f-acento-velo),transparent)}
.ficha dl{display:grid;grid-template-columns:150px minmax(0,1fr);gap:6px 14px;margin:0 0 14px;font-size:.86rem}
.ficha dt{color:var(--f-tenue);font-weight:550}
.ficha dd{margin:0;color:var(--f-tinta-2);line-height:1.5}
.ficha dd.tramos{font-variant-numeric:lining-nums;color:var(--f-suave)}
.puntos{margin:0;padding:0 0 0 18px;display:grid;gap:10px;font-size:.92rem;line-height:1.6;color:var(--f-tinta-2);max-width:92ch}

/* gráficos: movimiento con propósito */
.g-score,.g-gauge,.g-radar,.g-contrib,.g-servicio,.g-cascada,.g-evol-score{overflow:visible}
.g-score .arco-v{animation:a-arco 1.3s var(--ease) .15s both}
.aguja{transform-box:view-box;animation:a-aguja 1.3s var(--ease) .15s both}
.aguja .marca{filter:drop-shadow(0 2px 4px rgba(20,29,38,.22))}
.g-radar polygon:last-of-type{transform-box:fill-box;transform-origin:center;animation:a-radar 1s var(--ease-sal) .2s both}
.g-servicio rect,.g-evol-score rect,.g-cascada rect,.g-barras rect{transform-box:fill-box;transform-origin:bottom;animation:a-crecer .9s var(--ease) both}
.g-contrib rect{transform-box:fill-box;transform-origin:left;animation:a-ancho .9s var(--ease) both}
.g-sello .gl{stroke-dasharray:1;stroke-dashoffset:1;animation:a-grabar 2.2s var(--ease) both}
.g-sello .gl:nth-of-type(3n){animation-delay:.15s}.g-sello .gl:nth-of-type(3n+1){animation-delay:.3s}
.g-sello .brillo{animation:a-brillo 2.4s var(--ease) .6s both;mix-blend-mode:screen}
.g-sello .holo{mix-blend-mode:overlay;opacity:.8;transform:translate(-9%,-9%);transition:transform 1.8s var(--ease)}
.portada-sello:hover .g-sello .holo{transform:translate(11%,11%)}
.portada-sello .g-sello{animation:a-sello 1.4s var(--ease) both}

/* ---------------------------------------------------------------- analista (panel lateral) */
.chat-velo{position:fixed;inset:0;z-index:70;background:rgba(20,29,38,.16);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;transition:opacity .3s}
.chat-velo.visible{opacity:1}
.app-chat{position:fixed;top:0;right:0;bottom:0;z-index:80;width:min(420px,100vw);display:flex;flex-direction:column;box-sizing:border-box;
  background:linear-gradient(180deg,#fdfefe,#f5f7f8);box-shadow:-30px 0 70px -40px rgba(20,29,38,.45),-1px 0 0 var(--f-linea);
  transform:translateX(104%);transition:transform .45s var(--ease)}
.app-chat.abierto{transform:none}
.chat-cab{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:22px 22px 14px;border-bottom:1px solid var(--f-linea)}
.chat-cab b{display:flex;align-items:center;gap:9px;font:500 1.3rem var(--f-serif);color:var(--f-tinta)}
.chat-cab b::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--f-ok);box-shadow:0 0 0 4px var(--f-ok-velo)}
.chat-cab span{display:block;margin-top:4px}
.chat-cerrar{background:none;border:0;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--f-tenue);border-radius:8px;padding:2px 8px}
.chat-cerrar:hover{background:var(--f-hundido);color:var(--f-tinta)}
.chat-hist{flex:1;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:14px;scroll-behavior:smooth}
.msg{max-width:92%;font-size:.92rem;line-height:1.6;white-space:pre-wrap;animation:a-msg .4s var(--ease) both}
.msg.asistente{align-self:flex-start;font:400 1.04rem/1.62 var(--f-serif);color:var(--f-tinta-2)}
.msg.usuario{align-self:flex-end;padding:10px 14px;border-radius:12px 12px 4px 12px;background:var(--f-sup);box-shadow:var(--f-relieve);color:var(--f-tinta)}
.msg.pensando{color:var(--f-tenue)}
.msg.pensando::after{content:"";display:inline-block;width:22px;height:8px;margin-left:6px;vertical-align:middle;
  background:radial-gradient(circle,currentColor 2px,transparent 2.5px) 0 50%/8px 8px repeat-x;animation:a-puntos 1s steps(3) infinite}
.chat-sug{display:flex;flex-wrap:wrap;gap:6px;padding:0 22px 12px}
.chip{border:0;border-radius:8px;padding:6px 11px;font:500 .8rem var(--f-sans);color:var(--f-tinta-2);background:var(--f-sup);box-shadow:var(--f-relieve);
  cursor:pointer;transition:transform .2s var(--ease),color .2s}
.chip:hover{transform:translateY(-1px);color:var(--f-acento)}
.chat-form{display:flex;gap:8px;padding:14px 22px;border-top:1px solid var(--f-linea)}
.chat-form input{flex:1;min-width:0}
body.app .chat-form button{border:0;border-radius:9px;padding:0 16px;color:#fff;background:linear-gradient(180deg,#2c4ea6,#1f3d8a);font:600 .86rem var(--f-sans);cursor:pointer}
.chat-aviso{padding:0 22px;margin:0 0 8px}

/* ---------------------------------------------------------------- bloques heredados del panel */
body.app .g-fig{background:none;border:0;border-radius:0;padding:0}
body.app .g-fig figcaption{color:var(--f-tenue);opacity:1;letter-spacing:0;text-transform:none;font:550 .8rem var(--f-sans)}
body.app .v-hero{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
body.app .v-extra{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:14px;padding-top:14px;border-top:1px solid var(--f-linea)}
body.app .v-extra span{display:flex;flex-direction:column;font-size:.82rem;color:var(--f-suave)}
body.app .v-extra span i{font-style:normal;font-size:.76rem;color:var(--f-tenue)}
body.app .v-extra span b{color:var(--f-tinta);font-size:1rem}
body.app .estados-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}
body.app .resultado details,body.app .expres details{background:none;border:0;border-top:1px solid var(--f-linea);border-radius:0;padding:12px 0;box-shadow:none}
body.app .doc details{background:none;border:0;border-radius:0;box-shadow:none}

/* ---------------------------------------------------------------- transiciones */
@view-transition{navigation:auto}
::view-transition-old(root){animation:a-vt-sal .2s var(--ease) both}
::view-transition-new(root){animation:a-vt-ent .4s var(--ease) both}
.mancheta{view-transition-name:mancheta}
::view-transition-group(mancheta){animation:none}

.app-contenido > *{animation:a-entrar .75s var(--ease) both;animation-delay:calc(var(--i,0) * 70ms)}
.kpi-grid > .kpi{animation:a-entrar .7s var(--ease) both;animation-delay:calc(140ms + var(--i,0) * 50ms)}
.app-contenido > .por-ver{animation:none;opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.app-contenido > .por-ver.visto{opacity:1;transform:none}

@keyframes a-entrar{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes a-grabar{to{stroke-dashoffset:0}}
@keyframes a-brillo{from{transform:translate(-60%,-40%) rotate(-20deg);opacity:0}40%{opacity:1}to{transform:translate(70%,60%) rotate(-20deg);opacity:0}}
@keyframes a-sello{from{opacity:0;transform:rotate(-30deg) scale(.9)}to{opacity:1;transform:none}}
@keyframes a-arco{from{stroke-dasharray:0 100}}
@keyframes a-aguja{from{transform:rotate(var(--desde,-180deg))}}
@keyframes a-radar{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes a-crecer{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes a-ancho{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes a-aviso{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes a-aviso-sal{to{opacity:0;transform:translateY(-8px)}}
@keyframes a-menu{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes a-msg{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes a-puntos{from{background-position:0 50%}to{background-position:24px 50%}}
@keyframes a-pulso{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes a-vt-sal{to{opacity:0;transform:translateY(-4px)}}
@keyframes a-vt-ent{from{opacity:0;transform:translateY(8px)}}
@keyframes a-anillo{from{stroke-dasharray:0 100}}
@keyframes a-marcador{from{transform:translateX(var(--desde-x,0))}}

@media (prefers-reduced-motion:reduce){
  body.app *,body.app *::before,body.app *::after{animation-duration:.001ms!important;animation-delay:0s!important;transition-duration:.001ms!important}
  .app-contenido > .por-ver{opacity:1;transform:none}
  .g-sello .gl{stroke-dashoffset:0}
  @view-transition{navigation:none}
}

/* ---------------------------------------------------------------- adaptación */
@container contenido (max-width:900px){
  .portada,.banca-portada,.rating-portada,.metodo-portada{grid-template-columns:1fr;padding:30px 26px}
  .qeq{grid-template-columns:repeat(2,minmax(0,1fr))}.qeq-col:nth-child(2n){border-right:0}
  .fichas{grid-template-columns:1fr}
  .rs-form{grid-template-columns:1fr;padding:20px}
  .plan-portada{grid-template-columns:1fr}
  .paso-plan{grid-template-columns:1fr;padding:18px}.paso-dl{grid-template-columns:1fr}
  .obj-fila{grid-template-columns:1fr}.obj-datos{grid-column:1}
  .mesa-form .grid-form{grid-template-columns:1fr}
  .campos-3,.campos-2,.pool-form .grid-form{grid-template-columns:1fr}
  .cap-fila{grid-template-columns:56px minmax(0,1fr);}.cap-fila b{grid-column:2;text-align:left}
  .territorio{grid-template-columns:1fr}.territorio>div{border-right:0;border-bottom:1px solid var(--f-linea)}
  .cifras-4{grid-template-columns:repeat(2,minmax(0,1fr))}.cifras-4 .cifra:nth-child(2n){border-right:0}
  .talon{min-height:200px}
  .portada-sello{order:-1}.portada-sello svg{max-width:220px}
  .rejilla-2,.rejilla-3,.sc-tres,.dropzona{grid-template-columns:1fr}
}
@container contenido (max-width:620px){
  body.app .portada h2{font-size:2rem}
  .cifras{grid-template-columns:1fr}.cifra{border-right:0;margin:0;border-bottom:1px solid var(--f-linea);padding:12px 0}
  .toca li{grid-template-columns:1fr;gap:4px}
  .qeq{grid-template-columns:1fr}.qeq-col{border-right:0;margin:0}
  .ficha dl{grid-template-columns:1fr}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi{padding:12px 14px}.kpi-v{font-size:1.4rem}.kpi-mini{display:none}
}
@media (max-width:900px){
  .mancheta-fila{padding:10px 16px 6px;gap:12px;flex-wrap:wrap}
  .mancheta-empresa{order:3;flex-basis:100%;padding:0;border:0}
  .marca-nombre{font-size:1.2rem}
  .enlace-analista span,.mancheta-acciones .btn span{display:none}
  .app-nav{padding:0 6px}
  .app-cuerpo,.pie{padding-left:16px;padding-right:16px}
  .pagina-cab h1{font-size:1.65rem}
  .avisos{top:130px;right:12px}
}

/* =====================================================================================================================
   SISTEMA PROFESIONAL (8-oct: «que no se vea de juguete, que se vea aplicación profesional y sólida»). Esta capa va al
   final y manda: marco con barra lateral, superficies blancas con borde fino y radio pequeño, sombras mínimas, sans con
   cifras tabulares (serif solo en la marca), sin adornos, más densidad. Móvil: menú lateral desplegable + barra inferior.
   ===================================================================================================================== */
body.app.shell{
  --f-fondo:#f5f6f8; --f-sup:#ffffff; --f-hundido:#f0f2f5;
  --f-tinta:#101828; --f-tinta-2:#344054; --f-suave:#475467; --f-tenue:#667085;
  --f-linea:#eaecf0; --f-linea-2:#d0d5dd; --f-linea-3:#98a2b3;
  --f-acento:#1f3a8a; --f-acento-2:#2a4fb3; --f-acento-velo:#eef2fb;
  --f-ok:#067647; --f-ok-velo:#ecfdf3; --f-warn:#b54708; --f-warn-velo:#fffaeb; --f-ko:#b42318; --f-ko-velo:#fef3f2;
  --f-relieve:0 0 0 1px #eaecf0,0 1px 2px rgba(16,24,40,.04);
  --f-relieve-alto:0 0 0 1px #e4e7ec,0 6px 16px -6px rgba(16,24,40,.10);
  --f-hundido-sombra:inset 0 0 0 1px #e4e7ec;
  --r:10px; --r-s:6px;
  --f-sans:"Schibsted Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  background:var(--f-fondo);color:var(--f-tinta);font:400 14.5px/1.5 var(--f-sans);
  font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;padding:0}
body.app.shell::before,body.app.shell::after,body.app.shell .marcas,body.app.shell .microtexto{display:none!important}
/* marco */
.sb{position:fixed;inset:0 auto 0 0;z-index:40;width:236px;display:flex;flex-direction:column;gap:6px;padding:16px 12px 12px;
  background:#fff;border-right:1px solid var(--f-linea);overflow-y:auto}
.sb-marca{display:flex;padding:4px 10px 14px}
.sb-marca .marca-logo b{font-size:1.25rem}
.sb-empresa{position:relative;display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:8px 10px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--f-linea);
  transition:box-shadow .2s}
.sb-empresa:hover{box-shadow:inset 0 0 0 1px var(--f-linea-2)}
.sb-emp-ini{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:6px;background:var(--f-acento);color:#fff;font:600 .8rem var(--f-sans)}
body.app .sb-empresa select{flex:1;min-width:0;appearance:none;-webkit-appearance:none;border:0;background:none;box-shadow:none;padding:0;
  font:600 .86rem var(--f-sans);color:var(--f-tinta);cursor:pointer;text-overflow:ellipsis}
/* el nombre, en un span con puntos suspensivos (Safari no los pone dentro de un <select> y cortaba «Montajes Eléctricos de»);
   el select, invisible encima de toda la pieza, abre el selector nativo (a 16 px: iOS no acerca la página al tocarlo) */
.sb-emp-nombre{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:600 .86rem var(--f-sans);color:var(--f-tinta)}
body.app .sb-empresa .sb-emp-nombre~select{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px}
body.app .sb-empresa:has(select:focus-visible){outline:2px solid var(--f-acento);outline-offset:2px}
.sb-nav{display:flex;flex-direction:column;gap:1px}
.sb-grupo{margin:14px 10px 4px;font:600 .72rem var(--f-sans);color:var(--f-tenue)}
.sb-nav a,.sb-item{position:relative;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;text-decoration:none;
  font:500 .9rem var(--f-sans);color:var(--f-tinta-2);transition:background .15s,color .15s}
.sb-nav a .ico,.sb-item .ico{color:var(--f-tenue);transition:color .15s}
.sb-nav a:hover,.sb-item:hover{background:var(--f-hundido);color:var(--f-tinta)}
.sb-nav a.on,.sb-item.on{background:var(--f-acento-velo);color:var(--f-acento);font-weight:600}
.sb-nav a.on .ico,.sb-item.on .ico{color:var(--f-acento)}
.sb-nav a.on::before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--f-acento)}
.sb .badge-n{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;display:grid;place-items:center;background:var(--f-ko);color:#fff;font:600 .7rem var(--f-sans)}
.sb-pie{margin-top:auto;padding-top:10px;border-top:1px solid var(--f-linea);display:flex;flex-direction:column;gap:1px}
body.app details.sb-cuenta{position:relative;background:none;border:0;padding:0;margin:4px 0 0;box-shadow:none}
.sb-cuenta>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:7px;cursor:pointer}
.sb-cuenta>summary::-webkit-details-marker{display:none}
body.app .sb-cuenta>summary::after{content:none}
.sb-cuenta>summary:hover{background:var(--f-hundido)}
.sb-avatar{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--f-hundido);font:600 .8rem var(--f-sans);color:var(--f-tinta-2)}
.sb-email{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;color:var(--f-suave)}
.sb-cuenta .menu-cuenta{position:absolute;left:0;right:0;bottom:calc(100% + 6px);top:auto;z-index:50}
.shell-main{margin-left:236px;min-height:100vh;display:flex;flex-direction:column}
.tb{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:16px;min-height:64px;padding:10px 32px;
  background:rgba(245,246,248,.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--f-linea)}
.tb-menu{display:none;border:0;background:none;padding:6px;border-radius:8px;color:var(--f-tinta-2);cursor:pointer}
body.app.shell .tb h1{margin:0;font:600 1.2rem/1.25 var(--f-sans);letter-spacing:-.01em;color:var(--f-tinta)}
body.app.shell .tb .app-sub{margin:1px 0 0;font-size:.8rem;color:var(--f-tenue)}
.tb-titulo{flex:1;min-width:0}
.tb-acciones{display:flex;align-items:center;gap:8px}
body.app.shell .app-cuerpo{width:100%;max-width:1320px;margin:0;padding:24px 32px 48px;box-sizing:border-box}
body.app.shell .app-contenido{gap:28px;padding-top:0}
body.app.shell .app-contenido > :is(.rejilla-2,.rejilla-3,.seccion,.resultado,.expres,.dropzona,.analista-nota):not(:first-child){padding-top:0}
body.app.shell .app-contenido > :is(.rejilla-2,.rejilla-3,.seccion,.resultado,.expres,.dropzona,.analista-nota):not(:first-child)::before{display:none}
body.app.shell .pie{margin:auto 0 0;padding:16px 32px 24px;border-top:1px solid var(--f-linea);background:none}
body.app.shell .pie p{margin:0;font-size:.76rem;color:var(--f-tenue);max-width:none}
.tabbar{display:none}
/* superficies */
body.app.shell .relieve{border-radius:var(--r);background:#fff;box-shadow:var(--f-relieve)}
body.app.shell .metrica:hover,body.app.shell .m-paso:hover,body.app.shell .lp-paso details:hover{transform:none;box-shadow:var(--f-relieve-alto)}
body.app.shell .portada,body.app.shell .plan-cabina,body.app.shell .bienvenida{border-radius:var(--r);padding:24px 28px}
body.app.shell .widget{padding:18px 20px}
body.app.shell .lp-paso details{border-radius:var(--r);background:#fff}
/* tipografía: sans en títulos y cifras; serif solo en la marca */
body.app.shell :is(h2,h3,h4){font-family:var(--f-sans);letter-spacing:-.01em}
body.app.shell .portada h2,body.app.shell .plan-cabina h2,body.app.shell .bienvenida h2,body.app.shell .rating-portada h2{
  font:600 clamp(1.35rem,2vw,1.7rem)/1.25 var(--f-sans);letter-spacing:-.015em;max-width:34ch}
body.app.shell .seccion-cab h3,body.app.shell .w-cab h3,body.app.shell .tarjeta-cab h3{font:600 1rem var(--f-sans);color:var(--f-tinta)}
body.app.shell .seccion-cab p,body.app.shell .w-cab .tenue{font-size:.8rem}
body.app.shell .portada-entradilla,body.app.shell .bv-sub{font-size:.92rem;line-height:1.55;color:var(--f-suave);max-width:70ch}
body.app.shell :is(.m-v,.rx b,.ad-v b,.cab-nota-pie b,.cifra b,.sim-salida b,.paso-titulo,.er-banda,.obj-et){
  font-family:var(--f-sans);font-weight:600;letter-spacing:-.015em;font-variant-numeric:tabular-nums lining-nums}
body.app.shell .m-v{font-size:1.6rem}
body.app.shell .rx b{font-size:1.35rem}
body.app.shell .ad-v b{font-size:1.4rem}
body.app.shell .ad-a{font-family:var(--f-sans);font-size:.95rem}
body.app.shell .paso-titulo{font-size:1rem;font-weight:600;line-height:1.4}
body.app.shell .cab-nota-pie b{font-size:1.2rem}
/* controles */
body.app.shell .btn{border-radius:8px;padding:8px 14px;font:550 .86rem var(--f-sans);min-height:36px;box-sizing:border-box}
body.app.shell .btn-p{background:var(--f-acento);color:#fff;box-shadow:0 1px 2px rgba(16,24,40,.08)}
body.app.shell .btn-p:hover{background:var(--f-acento-2)}
body.app.shell .btn-sec,body.app.shell .btn-ghost{background:#fff;color:var(--f-tinta-2);box-shadow:inset 0 0 0 1px var(--f-linea-2),0 1px 2px rgba(16,24,40,.04)}
body.app.shell .btn-sec:hover{background:var(--f-hundido)}
body.app.shell input:not([type=file]):not([type=checkbox]):not([type=radio]):not([type=range]),body.app.shell select,body.app.shell textarea{
  background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px var(--f-linea-2),0 1px 2px rgba(16,24,40,.04)}
body.app.shell .chip-ef,body.app.shell .etiq,body.app.shell .pub-sello{border-radius:var(--r-s)}
body.app.shell .estado{font-weight:600}
body.app.shell .franja{border-radius:var(--r)}
body.app.shell .dash-t th{font-size:.74rem;color:var(--f-tenue);background:var(--f-hundido)}
body.app.shell .dash-t td{font-size:.86rem}
/* menos juguete: sin sello holográfico ni 3D decorativo; escalas de grado en tonos sobrios */
body.app.shell .cab-sello{display:none}
body.app.shell .cab-nota-cab{padding-right:0}
body.app.shell .cab-gauge{transform:none}
body.app.shell .cab-gauge svg{filter:none;max-width:220px}
body.app.shell .tr-g{transform:none;height:36px;border-radius:6px;animation:a-entrar .5s var(--ease) both;animation-delay:calc(var(--i) * 40ms)}
body.app.shell .tr-g.hoy,body.app.shell .tr-g.meta{transform:none;box-shadow:0 0 0 2px #fff,0 0 0 4px currentColor}
body.app.shell :is(.tr-g,.esc-g).g1,body.app.shell :is(.tr-g,.esc-g).g2{background:#2e7d5b;color:#fff}
body.app.shell :is(.tr-g,.esc-g).g3,body.app.shell :is(.tr-g,.esc-g).g4{background:#6f9a82;color:#fff}
body.app.shell :is(.tr-g,.esc-g).g5,body.app.shell :is(.tr-g,.esc-g).g6{background:#b98a4a;color:#fff}
body.app.shell :is(.tr-g,.esc-g).g7,body.app.shell :is(.tr-g,.esc-g).g8{background:#b5574a;color:#fff}
body.app.shell .tr-g.hoy{color:#475467}body.app.shell .tr-g.meta{color:var(--f-ok)}
body.app.shell .esc-g{height:26px;border-radius:5px}
/* bienvenida */
.bienvenida{display:flex;flex-direction:column;gap:22px}
.bv-cab h2{margin:6px 0 6px}
.bv-pasos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.bv-paso{display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;padding:18px 0;border-top:1px solid var(--f-linea)}
.bv-n{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--f-linea-2);font:600 .85rem var(--f-sans);color:var(--f-tenue)}
.bv-paso.activo .bv-n{box-shadow:none;background:var(--f-acento);color:#fff}
.bv-paso.hecho .bv-n{box-shadow:none;background:var(--f-ok);color:#fff}
.bv-cuerpo{display:flex;flex-direction:column;gap:10px;min-width:0}
.bv-cuerpo h3{margin:4px 0 0;font:600 1rem var(--f-sans)}.bv-cuerpo h3 small{font-weight:450;color:var(--f-tenue);margin-left:6px}
.bv-cuerpo p{margin:0;color:var(--f-suave);font-size:.9rem;max-width:72ch}
.bv-form{display:grid;grid-template-columns:1.2fr 1.6fr .8fr auto;gap:10px;align-items:end}
.bv-form label{display:flex;flex-direction:column;gap:5px;font:550 .78rem var(--f-sans);color:var(--f-suave)}
.bv-form label small{font-weight:450;color:var(--f-tenue)}
.bv-subida{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.bv-zona{display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;min-height:140px;border-radius:var(--r);
  border:1.5px dashed var(--f-linea-2);background:var(--f-hundido);text-align:center;color:var(--f-suave);cursor:pointer;transition:border-color .2s,background .2s;box-sizing:border-box}
.bv-zona:hover,.bv-zona.arrastrando{border-color:var(--f-acento);background:var(--f-acento-velo)}
.bv-zona input{position:absolute;opacity:0;pointer-events:none}
.bv-zona-ico{color:var(--f-acento)}
.bv-nota{display:flex;align-items:center;gap:6px;font-size:.8rem!important;color:var(--f-tenue)!important}
.bv-docs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.bv-docs div{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--f-linea)}
.bv-docs b{display:flex;align-items:center;gap:6px;font:600 .86rem var(--f-sans)}.bv-docs span{font-size:.8rem;color:var(--f-suave)}
/* móvil */
@media (max-width:1000px){
  .sb{transform:translateX(-102%);transition:transform .28s var(--ease);box-shadow:0 0 0 1px var(--f-linea),20px 0 40px -20px rgba(16,24,40,.25)}
  body.sb-abierta .sb{transform:none}
  .sb-velo{position:fixed;inset:0;z-index:35;background:rgba(16,24,40,.32);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:a-entrar .2s both}
  .shell-main{margin-left:0}
  .tb{padding:8px 16px;min-height:56px}
  .tb-menu{display:inline-flex}
  .tb-acciones .btn span{display:none}
  .tb-acciones .btn{padding:8px 10px}
  body.app.shell .app-cuerpo{padding:16px 16px 96px}
  .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);
    padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--f-linea)}
  .tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;border:0;background:none;border-radius:8px;
    font:550 .68rem var(--f-sans);color:var(--f-tenue);text-decoration:none;cursor:pointer}
  .tabbar .on{color:var(--f-acento)}
  body.app.shell .pie{padding-bottom:90px}
  .bv-form,.bv-docs{grid-template-columns:1fr}
  .cabina{grid-template-columns:1fr 1fr}
}
@media (max-width:620px){
  .cabina,.cab-metricas,.widgets,.widgets-3{grid-template-columns:1fr}
  body.app.shell .portada,body.app.shell .plan-cabina,body.app.shell .bienvenida{padding:18px}
  .tb .app-sub{display:none}
  .plan-cab-cifras{grid-template-columns:1fr 1fr}
  .lp-paso summary{grid-template-columns:40px minmax(0,1fr) 18px;padding-right:10px}
  .lp-detalle{padding:0 14px 16px 54px}
}
/* ajustes del marco frente a estilos heredados de la cabecera antigua */
body.app.shell{font-variant-numeric:normal}
body.app.shell :is(td,th,.dash-t,.sim-salida b,.mini-kpis b,.reparto-leyenda b,.cifras-col dd){font-variant-numeric:tabular-nums}
/* las cifras alineadas en columna, en Inter: con «tnum» la Schibsted hace el punto y la coma tan anchos como un dígito
   («396 . 731 €»); la Inter los deja estrechos, como en las tablas (td.v) */
body.app.shell :is(.mini-kpis b,.reparto-leyenda b,.cifras-col dd){font-family:"Inter",var(--f-sans);font-weight:600;font-feature-settings:"tnum" 1,"cv11" 1;letter-spacing:-.005em}
body.app.shell :is(.m-v,.rx b,.ad-v b,.cab-nota-pie b,.cifra b,.paso-titulo,.er-banda,.w-control output,.m-pie,.cab-nota-cab,.paso-efecto){font-variant-numeric:lining-nums proportional-nums}
body.app.shell .sim-salida b{font-variant-numeric:lining-nums proportional-nums}
body.app.shell .sb .app-nav{display:flex;flex-direction:column;gap:1px;max-width:none;margin:0;padding:0;overflow:visible}
body.app.shell .sb .app-nav::before,body.app.shell .sb .app-nav::after,body.app.shell .sb .app-nav a::after{display:none!important;content:none!important}
body.app.shell .sb .app-nav a{display:flex;gap:10px;padding:8px 10px;white-space:nowrap;font:500 .9rem var(--f-sans);color:var(--f-tinta-2)}
body.app.shell .sb .app-nav a.on{color:var(--f-acento);font-weight:600}
body.app.shell .sb-empresa select{box-shadow:none!important;background:none!important;padding:0!important;border:0}
body.app.shell .sb-cuenta>summary{display:flex;width:auto;height:auto;padding:8px 10px;border-radius:7px;background:none;box-shadow:none;place-items:initial}
body.app.shell .tb.pagina-cab,body.app.shell .tb .pagina-cab{padding:0}
body.app.shell .tb-titulo{display:block}
body.app.shell .tb-titulo h1{font:600 1.2rem/1.25 var(--f-sans)}
body.app.shell .nav-indicador{display:none!important}
body.app.shell .sb a.sb-item{color:var(--f-tinta-2);font:500 .9rem var(--f-sans)}
body.app.shell .sb a.sb-item.on{color:var(--f-acento);font-weight:600}
body.app.shell .sb-cuenta>summary,body.app.shell .sb-email{font-family:var(--f-sans)}
/* tesorería */
.kpis-fila{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.kpi-t{display:flex;flex-direction:column;gap:6px;padding:16px 18px}
.kpi-ko .m-v{color:var(--f-ko)}.kpi-ok .m-v{color:var(--f-ok)}
.kpi-ko .m-et .ico{color:var(--f-ko)}.kpi-ok .m-et .ico{color:var(--f-ok)}
.panel-caja{padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.g-caja{width:100%;height:auto;overflow:visible}
.cj-rej{stroke:var(--f-linea);stroke-width:1}.cj-eje{font:500 11px var(--f-sans);fill:var(--f-tenue)}
.cj-cero{stroke:var(--f-linea-3);stroke-width:1;stroke-dasharray:3 3}
.cj-banda{fill:rgba(31,58,138,.08)}
.cj-linea{fill:none;stroke:var(--f-acento);stroke-width:2;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;animation:cj-traza 1.2s var(--ease) .1s forwards}
@keyframes cj-traza{to{stroke-dashoffset:0}}
.cj-colchon{fill:none;stroke:var(--f-tinta-2);stroke-width:1.5;stroke-dasharray:5 4;opacity:.55}
.cj-p{fill:#fff;stroke:var(--f-acento);stroke-width:2;transition:r .15s}.cj-p:hover{r:5.5}
.cj-p.cj-neg{stroke:var(--f-ko)}
.cj-hueco{stroke:var(--f-ko);stroke-width:1.5}.cj-hueco-t{font:600 11px var(--f-sans);fill:var(--f-ko)}
.cj-leyenda i{width:14px!important;height:2px!important;vertical-align:3px}
.cj-leyenda .cj-l-saldo{background:var(--f-acento)!important}.cj-leyenda .cj-l-banda{height:8px!important;background:rgba(31,58,138,.12)!important;vertical-align:0}
.cj-leyenda .cj-l-colchon{background:repeating-linear-gradient(90deg,var(--f-tinta-2) 0 4px,transparent 4px 7px)!important}
@media (max-width:1000px){.kpis-fila{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.kpis-fila{grid-template-columns:1fr}}

/* garantías */
.garantias-cab{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:16px;margin-bottom:12px}
.garantias-reparto{padding:16px 18px;display:flex;flex-direction:column;justify-content:center;gap:12px}
.garantias-reparto .reparto-barra i{background:var(--c)}
.garantias-ley{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 18px;font-size:.84rem}
.garantias-ley li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center;color:var(--f-tinta-2)}
.garantias-ley i{width:9px;height:9px;border-radius:2px;background:var(--c)}
.gt-personal{--c:#b42318}.gt-sgr{--c:#1f3a8a}.gt-publica{--c:#3e5c9a}.gt-hipotecaria{--c:#475467}.gt-pignoracion{--c:#98a2b3}.gt-real_otra{--c:#7a8699}.gt-ninguna{--c:#6f9a82}.gt-desconocida{--c:#d0d5dd}
@media (max-width:620px){.garantias-cab{grid-template-columns:1fr}}
/* en la app la serif es solo de la marca: todo lo que usaba --f-serif pasa a la sans */
body.app.shell{--f-serif:var(--f-sans)}
body.app.shell .marca-logo b{font-family:"Marcellus",Georgia,serif}
body.app.shell svg text{font-family:var(--f-sans)}
body.app.shell :is(em,i,cite){font-style:normal}
/* sin adornos de «papel moneda» dentro de la app */
body.app.shell .portada::before{display:none}
body.app.shell .banca-segunda,body.app.shell .talon-per{font-style:normal;font-family:var(--f-sans);font-size:.95rem}
body.app.shell .talon{background:var(--f-hundido);box-shadow:none;border-radius:var(--r);min-height:220px}
body.app.shell .talon::before,body.app.shell .talon::after,body.app.shell .talon-micro{display:none}
body.app.shell .talon b,body.app.shell .talon strong{font-family:var(--f-sans);font-weight:600}

/* agenda */
.agenda-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.agenda-lista li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--f-linea)}
.agenda-lista li:last-child{border-bottom:0}
.ag-dia{display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:#fff;
  box-shadow:inset 0 0 0 1px var(--f-linea);border-top:3px solid var(--c,var(--f-linea-3))}
.ag-dia b{font:600 1rem/1 var(--f-sans);color:var(--f-tinta)}.ag-dia small{font:550 .62rem var(--f-sans);color:var(--f-tenue);text-transform:lowercase}
.agenda-lista li > div{display:flex;flex-direction:column;min-width:0}
.agenda-lista li > div b{font:550 .86rem/1.35 var(--f-sans);color:var(--f-tinta-2)}.agenda-lista li > div small{font-size:.74rem;color:var(--f-tenue)}
.ag-en{font:550 .76rem var(--f-sans);color:var(--f-suave);white-space:nowrap}
.ag-hacienda{--c:#1f3a8a}.ag-registro{--c:#475467}.ag-banco{--c:#b54708}.ag-documento{--c:#067647}
.agenda-larga{background:#fff;border-radius:var(--r);box-shadow:var(--f-relieve);padding:4px 18px}
body.app.shell .widgets-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:24px 28px}
body.app.shell .mini-kpis b{font-variant-numeric:lining-nums proportional-nums}

/* paquete para el banco */
.mesa-paquete form{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.paquete-piezas{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px 16px;font-size:.86rem}
.paquete-piezas label,.paquete-autorizo{display:flex;align-items:center;gap:8px;cursor:pointer}
.paquete-autorizo{font:550 .86rem var(--f-sans);color:var(--f-tinta-2)}

.aapp-pmp{padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.aapp-pmp .mini-kpis li{grid-template-columns:minmax(0,1fr) auto 110px}.aapp-pmp .mini-kpis i{font-style:normal;text-align:right;font-size:.8rem}

/* vías de financiación */
.vias-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:16px}
.via{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-top:3px solid var(--c,var(--f-linea-2))}
.via-encaja{--c:var(--f-ok)}.via-a-comprobar{--c:var(--f-warn)}.via-no-encaja{--c:var(--f-linea-3);opacity:.75}
.via header{display:flex;gap:8px;align-items:center}
.via-encaje{font:600 .74rem var(--f-sans);color:var(--c)}
.via-perfil{font:550 .7rem var(--f-sans);padding:2px 7px;border-radius:var(--r-s);background:var(--f-acento-velo);color:var(--f-acento)}
.via h4{margin:0;font:600 .98rem var(--f-sans);color:var(--f-tinta)}
.via-quien{margin:-4px 0 0;font-size:.8rem;color:var(--f-tenue)}
.via ul{margin:0;padding-left:16px;font-size:.84rem;color:var(--f-tinta-2);display:flex;flex-direction:column;gap:3px}
.via-aporta{margin:0;font-size:.84rem;color:var(--f-suave)}
.via-paso{margin:auto 0 0;display:flex;gap:6px;align-items:flex-start;font:550 .82rem var(--f-sans);color:var(--f-acento)}
.via-paso .ico{flex:none;margin-top:2px}

body.app.shell details.via-gestoras{background:none;border:0;padding:0;margin:0;box-shadow:none}
body.app.shell details.via-gestoras summary{font:550 .8rem var(--f-sans);color:var(--f-acento);cursor:pointer}
body.app.shell details.via-gestoras summary::after{content:none}
.via-gestoras ul{list-style:none;padding:6px 0 0;margin:0;gap:6px}.via-gestoras li{display:flex;flex-direction:column}
.via-gestoras b{font:550 .8rem var(--f-sans);color:var(--f-tinta-2)}.via-gestoras small{font-size:.72rem;color:var(--f-tenue)}

/* avisos */
.avisos-rejilla{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);gap:24px;align-items:start}
.avisos-col{display:flex;flex-direction:column;gap:24px}
.avisos-pend,.avisos-agenda{padding:16px 20px}
.avisos-agenda{position:sticky;top:84px}
.avisos-lista-sec{display:flex;flex-direction:column;gap:14px}
.filtros-avisos{flex-wrap:wrap}
.grupo-avisos{padding:14px 20px}
.grupo-avisos h4{margin:0 0 6px;font:600 .9rem var(--f-sans);color:var(--f-tinta)}
.aviso-items{list-style:none;margin:0;padding:0}
.aviso-items li{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 0;border-top:1px solid var(--f-linea)}
.aviso-items li:first-child{border-top:0}
.aviso-items p{margin:0;font-size:.86rem;color:var(--f-tinta-2);line-height:1.45}
.aviso-items time{font-size:.74rem;color:var(--f-tenue);white-space:nowrap}
.aviso-dot{width:7px;height:7px;border-radius:50%;background:transparent;transform:translateY(-1px)}
.aviso-items li.nuevo .aviso-dot{background:var(--f-acento)}
.aviso-items li.nuevo p{color:var(--f-tinta);font-weight:500}
body.app.shell :is(.kpi-v,.kpi-v *){font-variant-numeric:lining-nums proportional-nums}
@media (max-width:1000px){.avisos-rejilla{grid-template-columns:1fr}.avisos-agenda{position:static}}
body.app.shell .spark-wrap{background:#fff;border-radius:var(--r);box-shadow:var(--f-relieve);padding:10px 14px}
/* mesa: ahorro de la mejor oferta frente a lo que se paga hoy */
.mesa-ahorro{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 0;font-size:.92rem;color:var(--tinta-2,#475467)}
/* avisos: informe mensual de tutela */
.informe-mes{padding:20px 22px;display:flex;flex-direction:column;gap:12px}
.informe-mes p{margin:0;color:var(--tinta-2,#475467);font-size:.93rem;line-height:1.5}
.informe-acciones{display:flex;gap:10px;flex-wrap:wrap}
.informe-comentario summary{cursor:pointer;font-size:.9rem;color:var(--acento,#1f3a8a)}
.informe-comentario form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.informe-comentario textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--linea,#e4e7ec);border-radius:8px;resize:vertical}
.informes-hist{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.9rem}
.informes-hist small{margin-left:6px;color:var(--f-tenue)}
/* consultor: cartera y ficha */
.cartera-t td.et a{color:inherit;text-decoration:none}.cartera-t td.et a:hover b{text-decoration:underline}
.cartera-t td.et small{display:block;font-size:.78rem;margin-top:2px}
.cartera-t{min-width:900px}.cartera-t th,.cartera-t td{white-space:nowrap;padding-left:9px;padding-right:9px}
.cartera-t td.et{white-space:normal;min-width:190px}.cartera-t td.renov{white-space:normal;min-width:150px;max-width:210px}
.ficha-cons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.panel-ficha{padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.ficha-form{display:flex;flex-direction:column;gap:10px}
.ficha-form textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid var(--linea,#e4e7ec);border-radius:8px;resize:vertical}
.fila-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;margin-top:6px}
.fila-form label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--tinta-2,#475467)}
.fila-form input,.fila-form select{font:inherit;padding:8px 10px;border:1px solid var(--linea,#e4e7ec);border-radius:8px}
@media (max-width:1000px){.ficha-cons{grid-template-columns:1fr}}

/* cifras de las tablas: Schibsted aplica el ancho tabular también a comas y puntos («1 , 3x»); Inter solo a los dígitos */
body.app.shell .dash-t td.v,body.app.shell table td.v{font-family:"Inter",var(--f-sans);font-size:.84rem;font-feature-settings:"tnum" 1,"cv11" 1}
/* el texto de las tablas (nombres, correos, «S.A.») sin cifras tabulares: con la Schibsted el punto ocupa lo que un dígito */
body.app.shell :is(td.et,td.izq,td.et small,td.izq small){font-variant-numeric:normal;font-feature-settings:normal}
.cab-provisional{display:block;margin:6px 0 0;font-size:.8rem;line-height:1.35;color:var(--f-warn,#b54708);text-decoration:none}
.cab-provisional:hover{text-decoration:underline}
/* tesorería: escenario de retraso del mayor cliente */
.g-caja .cj-esc{fill:none;stroke:var(--f-ko,#b42318);stroke-width:2;stroke-dasharray:6 5;opacity:.9}
.cj-escenario{padding:18px 20px;display:flex;flex-direction:column;gap:10px;margin-top:16px}
.cj-escenario p{margin:0;line-height:1.55}
.cj-leyenda .cj-l-esc{background:repeating-linear-gradient(90deg,var(--f-ko,#b42318) 0 5px,transparent 5px 9px)!important}
/* seguridad y privacidad */
.seg-sec{padding:20px 22px;margin-bottom:16px}
.seg-sec h3{margin:0 0 10px;font-size:1.02rem}
.seg-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.seg-lista li{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start}
.seg-lista li>.ico{color:var(--f-acento,#1f3a8a);margin-top:2px}
.seg-lista b{display:block;font-weight:600;color:var(--f-tinta,#101828)}
.seg-lista p{margin:3px 0 0;color:var(--f-tinta-2,#475467);line-height:1.5;font-size:.93rem}
/* plan: checklist de cierre */
.cierre-lista{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:12px}
.cierre-lista li{padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.cierre-cab{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}
.cierre-lista p{margin:0;color:var(--f-tinta-2,#475467);line-height:1.5}
.cierre-pie{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;font-size:.86rem}
/* administración: armazón propio con el estilo de la app (la capa profesional ocultaba .app-side y el admin se quedaba
   sin menú) */
body.app.shell.admin .app-shell{display:grid;grid-template-columns:262px minmax(0,1fr);min-height:100vh}
body.app.shell.admin .resultado::before{content:none!important;display:none!important}       /* raya dorada de la web antigua */
body.app.shell.admin .resultado{margin-top:34px!important}
body.app.shell.admin .resultado h3{font-size:1.2rem}
body.app.shell.admin .dash-t th:first-child{width:1%;white-space:nowrap}
body.app.shell.admin .app-side .app-nav a span{white-space:nowrap}
body.app.shell.admin .kpi-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
body.app.shell.admin .app-side{display:flex;flex-direction:column;gap:10px;position:sticky;top:0;height:100vh;overflow-y:auto;
  padding:20px 12px;background:#fff;border-right:1px solid var(--f-linea,#eaecf0)}
body.app.shell.admin .admin-sub{margin:-4px 10px 8px;font-size:.78rem;color:var(--f-tenue,#667085)}
body.app.shell.admin .app-side .app-nav{display:flex;flex-direction:column;gap:2px}
body.app.shell.admin .app-side .app-nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;
  color:var(--f-tinta-2,#344054);text-decoration:none;font-size:.92rem}
body.app.shell.admin .app-side .app-nav a:hover{background:var(--f-hundido,#f2f4f7)}
body.app.shell.admin .app-side .app-nav a.on{background:var(--f-acento-velo,#eef2fb);color:var(--f-acento,#1f3a8a);font-weight:550}
body.app.shell.admin .app-side-pie{margin-top:auto;display:flex;flex-direction:column;gap:4px;padding:10px;border-top:1px solid var(--f-linea,#eaecf0)}
body.app.shell.admin .app-side-pie a{color:var(--f-tinta-2,#344054);text-decoration:none;font-size:.88rem;padding:4px 0}
body.app.shell.admin .app-cuerpo{padding:22px 32px 48px;min-width:0}
body.app.shell.admin .app-cabecera{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px}
body.app.shell.admin .app-cabecera h1{font:600 1.35rem/1.2 var(--f-sans);margin:0 0 4px;color:var(--f-tinta,#101828)}
@media (max-width:1000px){
  body.app.shell.admin .app-shell{grid-template-columns:1fr}
  body.app.shell.admin .app-side{position:static;height:auto;flex-direction:column}
  body.app.shell.admin .app-side .app-nav{flex-direction:row;overflow-x:auto;gap:4px}
  body.app.shell.admin .app-side .app-nav a{white-space:nowrap}
  body.app.shell.admin .app-side-pie{flex-direction:row;gap:14px;border-top:0}
  body.app.shell.admin .app-cuerpo{padding:16px}
}
body.app.shell.admin .app-side .app-nav a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.app.shell.admin .app-side .app-nav a .ico{flex:0 0 auto}

/* Ayudas públicas a tu nombre (BDNS) */
.ayudas .ayu-cifras{display:flex;flex-wrap:wrap;gap:8px 34px;margin:6px 0 14px}
.ayu-c{display:flex;flex-direction:column;gap:2px}
.ayu-c b{font:600 1.35rem var(--f-sans);color:var(--f-tinta);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.ayu-c span{font-size:.8rem;color:var(--f-tenue)}
.ayu-h{margin:18px 0 4px;font:650 .82rem var(--f-sans);color:var(--f-tinta-2);text-transform:none}
.ayu-lista{list-style:none;margin:0;padding:0}
.ayu-lista li{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:6px 16px;padding:10px 0;border-bottom:1px solid var(--f-linea);font-size:.86rem}
.ayu-lista li>span:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.ayu-lista li>span:first-child i{font-style:normal;font-size:.78rem;line-height:1.35}
.ayu-lista em{font-style:normal;font-size:.78rem;color:var(--f-tenue);white-space:nowrap}
.ayu-lista .ayu-imp{font-weight:600;white-space:nowrap;text-align:right}
.ayu-accion{font-size:.78rem;font-weight:600;color:var(--f-acento);text-decoration:none;white-space:nowrap}
.ayu-accion:hover{text-decoration:underline}
.ayu-ok{font-size:.74rem;color:var(--f-tenue);white-space:nowrap}
.ayu-minimis{margin:18px 0 4px;max-width:560px}
.ayu-mm-cab{display:flex;justify-content:space-between;gap:12px;font-size:.84rem;color:var(--f-tinta-2);margin-bottom:6px}
.ayu-mm-cab b{font-weight:600;color:var(--f-tinta);font-variant-numeric:tabular-nums}
.ayu-barra{height:6px;border-radius:3px;background:var(--f-linea);overflow:hidden}
.ayu-barra i{display:block;height:100%;border-radius:3px;background:var(--f-acento)}
.ayu-det{margin-top:14px}.ayu-det .ayu-lista li{grid-template-columns:minmax(0,1fr) auto auto}.ayu-det summary{cursor:pointer;font-size:.84rem;color:var(--f-tinta-2)}
@media (max-width:640px){
  .ayu-lista li{grid-template-columns:minmax(0,1fr) auto}
  .ayu-lista li>span:first-child{grid-column:1/-1}
  .ayudas .ayu-cifras{gap:8px 22px}
}

/* Bancos · sensibilidad al Euríbor */
.eur-sens{margin:22px 0 6px}
.eur-sens h4{margin:0 0 10px;font:650 .92rem var(--f-sans);color:var(--f-tinta)}
.eur-sens h4 small{font-weight:400;color:var(--f-tenue);margin-left:6px}
.eur-cifras{display:flex;flex-wrap:wrap;gap:10px 40px;margin-bottom:8px}
.eur-cifras>div{display:flex;flex-direction:column;gap:2px;min-width:150px}
.eur-cifras span{font-size:.78rem;color:var(--f-tenue)}
.eur-cifras b{font:600 1.15rem var(--f-sans);color:var(--f-tinta);letter-spacing:-.01em}
.eur-cifras b.eur-sube{color:var(--f-ko)}.eur-cifras b.eur-baja{color:var(--f-ok)}
.eur-cifras small{font-size:.76rem;color:var(--f-suave)}

/* Plan · cuándo podrás pedir (B14) */
.hitos{margin:22px 0 4px}
.hitos-l{list-style:none;margin:0;padding:0;position:relative}
.hitos-l li{display:grid;grid-template-columns:150px minmax(0,1fr);gap:4px 18px;padding:12px 0 12px;border-bottom:1px solid var(--f-linea)}
.hitos-l li:last-child{border-bottom:0}
.hito-cuando{font:600 .84rem var(--f-sans);color:var(--f-acento);padding-top:1px}
.hito-ya .hito-cuando{color:var(--f-ok)}
.hitos-l b{font:650 .9rem var(--f-sans);color:var(--f-tinta)}
.hitos-l p{margin:4px 0 0;font-size:.88rem;line-height:1.5;color:var(--f-tinta-2)}
@media (max-width:640px){.hitos-l li{grid-template-columns:1fr}}

/* Bancos · ¿préstamo, leasing o renting? (B15) */
.sim-inv{flex-basis:100%;display:flex !important;flex-direction:row !important;align-items:center;gap:8px;font-size:.84rem;color:var(--f-tinta-2)}
.sim-inv input{width:auto !important;margin:0}
.inv-comp{margin:22px 0 8px}
.inv-comp h4{margin:0 0 6px;font:650 .95rem var(--f-sans);color:var(--f-tinta)}
.inv-comp h4 small{font-weight:400;color:var(--f-tenue);margin-left:6px}
.inv-titular{margin:0 0 12px;font-size:.92rem;line-height:1.5;color:var(--f-tinta);max-width:820px}
.inv-t th.inv-rec{color:var(--f-acento)}
.inv-t th.inv-rec::after{content:" · recomendada";font-weight:400;font-size:.74rem;color:var(--f-tenue)}
.inv-t td.inv-baja{color:var(--f-ko)}
.inv-t td small{font-size:.74rem}
.inv-fiscal{margin-top:12px}
@media (max-width:640px){
  .inv-t{table-layout:fixed;width:100%;min-width:0 !important;font-size:.78rem}
  .inv-t th,.inv-t td{padding:8px 4px !important;white-space:normal}
  .inv-t th:first-child,.inv-t td:first-child{width:31%}
  .inv-t td small,.inv-t th.inv-rec::after{display:none}
  .inv-t th.inv-rec{text-decoration:underline;text-underline-offset:4px}
}

/* Bancos · uso real de las pólizas (B6) */
.lin-uso{margin:22px 0 6px}
.lin-uso h4{margin:0 0 8px;font:650 .92rem var(--f-sans);color:var(--f-tinta)}
.lin-uso h4 small{font-weight:400;color:var(--f-tenue);margin-left:6px}
.lin-l{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px 34px}
.lin-l li{padding:6px 0}
.lin-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px}
.lin-cab b{font:650 .9rem var(--f-sans);color:var(--f-tinta)}
.lin-cab span{font-size:.78rem}
.lin-cab .estado{margin-left:auto}
.lin-barra{position:relative;height:8px;border-radius:4px;background:var(--f-linea);overflow:hidden}
.lin-barra i{position:absolute;left:0;top:0;bottom:0;border-radius:4px}
.lin-barra .lin-pico{background:rgba(34,64,143,.28)}
.lin-barra .lin-medio{background:var(--f-acento)}
.lin-corta .lin-barra .lin-medio{background:var(--f-ko)}
.lin-pie{display:flex;flex-wrap:wrap;gap:2px 16px;margin-top:6px;font-size:.78rem;color:var(--f-suave)}
.lin-l .fine{margin:6px 0 0}

/* índice de la página (Bancos): anclas en una fila, deslizable en el móvil */
.anclas{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 0 18px;padding:2px 0 4px;-webkit-overflow-scrolling:touch}
.anclas::-webkit-scrollbar{display:none}
.anclas a{flex:none;font-size:.8rem;color:var(--f-tinta-2);text-decoration:none;padding:6px 12px;border-radius:999px;
  background:var(--f-acento-velo);white-space:nowrap;transition:background .15s,color .15s}
.anclas a:hover{background:rgba(34,64,143,.13);color:var(--f-acento)}
body.app.shell :is(#sobreprecio,#calendario,#reestructurar,#pool,#garantias,#simulador,#inversion,#cirbe,#extractos,#aging){scroll-margin-top:84px}

/* Glosario (C9): la palabra con su definición al pasar o tocar */
.term{position:relative;cursor:help;text-decoration:underline dotted;text-decoration-color:var(--f-linea-3);text-underline-offset:3px;outline:none}
.term:focus-visible{box-shadow:0 0 0 2px var(--f-acento-velo);border-radius:2px}
.term-pop{display:none;position:absolute;z-index:60;left:0;top:calc(100% + 8px);width:max-content;max-width:min(300px,86vw);
  padding:12px 14px;border-radius:10px;background:#16212c;color:#eef1f4;font:400 .82rem/1.5 var(--f-sans);letter-spacing:0;
  text-transform:none;text-align:left;white-space:normal;box-shadow:0 10px 30px rgba(10,20,30,.22);cursor:default}
.term-pop b{display:block;font-weight:650;margin-bottom:3px;color:#fff}
.term-pop a{display:inline-block;margin-top:6px;color:#b9c8f2 !important;font-size:.76rem;text-decoration:underline}
.term:hover .term-pop,.term:focus .term-pop,.term:focus-within .term-pop{display:block}
.glosario-l{list-style:none;margin:0;padding:0;columns:2 380px;column-gap:44px}
.glosario-l li{break-inside:avoid;padding:12px 0 14px;border-bottom:1px solid var(--f-linea);scroll-margin-top:90px}
.glosario-l li:target{background:var(--f-acento-velo)}
.glosario-l b{display:block;font:650 .95rem var(--f-sans);color:var(--f-tinta);margin-bottom:4px}
.glosario-l p{margin:0;font-size:.9rem;line-height:1.55;color:var(--f-tinta-2)}
.js-term .term:hover .term-pop,.js-term .term:focus .term-pop,.js-term .term:focus-within .term-pop{display:none}
.term-capa{position:fixed;z-index:200;width:max-content;max-width:min(300px,86vw);padding:12px 14px;border-radius:10px;
  background:#16212c;color:#eef1f4;font:400 .82rem/1.5 var(--f-sans);letter-spacing:0;text-align:left;
  box-shadow:0 10px 30px rgba(10,20,30,.22)}
.term-capa b{display:block;font:650 .84rem/1.4 var(--f-sans);margin-bottom:3px;color:#fff}
.term-capa a{display:inline-block;margin-top:6px;color:#b9c8f2;font-size:.76rem;text-decoration:underline}
.term-pop b{font:650 .84rem/1.4 var(--f-sans) !important;letter-spacing:0 !important;color:#fff !important}
body.app .term-capa a{color:#b9c8f2;text-decoration-color:rgba(185,200,242,.5)}
/* Mi cuenta: los desplegables con opciones largas no deben ensanchar la rejilla en el móvil */
.campos-3>*,.grid-form>*{min-width:0}
body.app select{max-width:100%}

/* Tesorería · reclamar una factura impagada (B4) */
.recl-form{gap:16px;margin-top:0}
.recl-facturas{display:flex;flex-direction:column;gap:8px}
.recl-cab,.recl-fila{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:10px}
.recl-cab span{font-size:.78rem;color:var(--f-suave)}
.recl-fila input{min-width:0;width:100%}
.recl-form .btn{align-self:flex-start}
@media (max-width:640px){
  .recl-cab{display:none}
  .recl-fila{grid-template-columns:1fr 1fr;padding-bottom:10px;border-bottom:1px solid var(--f-linea)}
}
@media (max-width:640px){.recl-form{padding:18px 16px}.pool-form .grid-form{grid-template-columns:1fr}}
.recl-fila label{display:flex;flex-direction:column;gap:4px;min-width:0}
.recl-fila label span{display:none;font-size:.76rem;color:var(--f-suave)}
@media (max-width:640px){.recl-fila label span{display:block}}

/* Revisar cifras: cuadres con icono y color de estado, sin emojis */
.ident{display:flex;align-items:center;gap:6px}
.ident svg{flex:none}
.ident-ok svg{color:var(--f-ok)}.ident-ko{color:var(--f-ko)}.ident-ko svg{color:var(--f-ko)}

/* Bancos · covenants (B2) */
.cov{margin:22px 0 6px}
.cov h4{margin:0 0 8px;font:650 .92rem var(--f-sans);color:var(--f-tinta)}
.cov h4 small{font-weight:400;color:var(--f-tenue);margin-left:6px}
.cov-l{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px 34px}
.cov-l li{padding:8px 0 8px 14px;box-shadow:inset 2px 0 0 var(--f-linea-2)}
.cov-l li.cov-roto{box-shadow:inset 2px 0 0 var(--f-ko)}.cov-l li.cov-cerca{box-shadow:inset 2px 0 0 var(--f-warn)}
.cov-l li.cov-ok{box-shadow:inset 2px 0 0 var(--f-ok)}
.cov-cab{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:4px}
.cov-cab b{font:650 .9rem var(--f-sans);color:var(--f-tinta)}.cov-cab span{font-size:.78rem}.cov-cab .estado{margin-left:auto}
.cov-l p{margin:2px 0;font-size:.88rem;color:var(--f-tinta-2)}

/* Chat: formato ligero de las respuestas */
.msg.asistente{white-space:normal}
.msg.asistente ul{margin:.3em 0 .3em 1.1em;padding:0}
.msg.asistente li{margin:.15em 0}

/* Análisis · estados financieros: las cifras siempre visibles (Fable demo, C2) */
body.app .estados-2 .dash-t{table-layout:fixed;width:100%;min-width:0 !important}
body.app .estados-2 .dash-t th:first-child,body.app .estados-2 .dash-t td.et{width:52%;white-space:normal;overflow-wrap:break-word;hyphens:auto;line-height:1.3}
body.app .estados-2 .dash-t th:not(:first-child),body.app .estados-2 .dash-t td.v{width:16%;white-space:nowrap}
@media (max-width:900px){body.app .estados-2{grid-template-columns:1fr}}
@media (max-width:640px){body.app .estados-2 .dash-t{font-size:.78rem}body.app .estados-2 .dash-t th:first-child,body.app .estados-2 .dash-t td.et{width:46%}
  body.app .estados-2 .dash-t th:not(:first-child),body.app .estados-2 .dash-t td.v{width:18%;padding-left:4px;padding-right:4px}}
@media (max-width:640px){body.app .estados-2 .dash-t th:nth-child(4),body.app .estados-2 .dash-t td:nth-child(4){display:none}
  body.app .estados-2 .dash-t th:first-child,body.app .estados-2 .dash-t td.et{width:58%}}

/* Fable demo, M18 · móvil: el gráfico de precios del pool pasa a lista; las tablas anchas avisan de que hay más a la derecha */
.precios-movil{display:none;list-style:none;margin:0;padding:6px 16px}
.precios-movil li{display:grid;gap:4px;padding:12px 0;border-bottom:1px solid var(--f-linea)}
.precios-movil li:last-child{border-bottom:0}
.precios-movil .pm-cab b{display:block;color:var(--f-tinta)}.precios-movil .pm-cab small{color:var(--f-tenue);font-size:.8rem}
.precios-movil .pm-cifras{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.86rem;color:var(--f-suave)}
.precios-movil .pm-cifras b{color:var(--f-tinta)}
.precios-movil .pm-veredicto{font-size:.84rem;font-weight:600;color:var(--f-tenue)}
.precios-movil .pm-caro .pm-veredicto{color:var(--f-ko)}.precios-movil .pm-barato .pm-veredicto{color:var(--f-ok)}
.precios-movil .pm-posible_caro .pm-veredicto{color:var(--f-warn)}
.g-caja-movil{display:none}
@media (max-width:640px){
  .g-caja:not(.g-caja-movil){display:none}.g-caja-movil{display:block}
  .instrumento.precios{display:none}
  .precios-movil{display:block}
  body.app .table-scroll,body.app .dash-scroll{
    background:linear-gradient(to right,var(--f-fondo) 30%,rgba(243,245,246,0)) left center/28px 100% no-repeat local,
               linear-gradient(to left,var(--f-fondo) 30%,rgba(243,245,246,0)) right center/28px 100% no-repeat local,
               radial-gradient(farthest-side at 0 50%,rgba(20,29,38,.16),transparent) left center/12px 100% no-repeat scroll,
               radial-gradient(farthest-side at 100% 50%,rgba(20,29,38,.16),transparent) right center/12px 100% no-repeat scroll;
  }
}

/* El momento del crédito a pymes (motor/termometro.py, _termometro.html): contexto sobrio, sin caja propia */
.termometro{margin-top:1.1rem;max-width:62rem}
.termometro p{margin:.35rem 0}
.termometro-tit .estado{margin-right:.45rem}
