/* ═══ VISTOSIDAD (1-nov-2026) — ver app-vistosidad.js ═══ */

/* ── Huchi respira y parpadea ── */
.flm-cuerpo{transform-box:view-box;transform-origin:60px 106px;animation:flmRespira 3.4s ease-in-out infinite}
@keyframes flmRespira{0%,100%{transform:scale(1,1)}50%{transform:scale(1.025,.975)}}
.flm-ojos{transform-box:fill-box;transform-origin:center;animation:flmParpadeo 5s infinite}
@keyframes flmParpadeo{0%,91%,97%,100%{transform:scaleY(1)}94%{transform:scaleY(.08)}}

/* ── Lluvia de monedas ── */
.fl-monedas{position:fixed;inset:0;pointer-events:none;z-index:9500;overflow:hidden}
.fl-moneda{position:absolute;top:-40px;width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe58a,#f5c542 55%,#c99412);border:2px solid #d9a21b;color:#9a6c06;font:800 14px/24px system-ui,sans-serif;text-align:center;box-shadow:0 3px 8px rgba(0,0,0,.25);animation:flMonedaCae 1.4s cubic-bezier(.45,.05,.7,.4) forwards}
@keyframes flMonedaCae{0%{transform:translateY(0) rotateY(0)}100%{transform:translateY(calc(100vh + 60px)) rotateY(720deg)}}

/* ── Camino de módulos en zigzag ── */
.f28z{display:flex;flex-direction:column;gap:10px}
.f28z-rama{border:1px solid var(--border);border-radius:16px;background:var(--bg2);overflow:hidden}
.f28z-cab{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;padding:12px 14px;cursor:pointer}
.f28z-cab:focus-visible{outline:2px solid var(--rc);outline-offset:-2px;border-radius:16px}
.f28z-emoji{font-size:18px}
.f28z-nombre{font-size:14px;font-weight:800;color:var(--text);flex-shrink:0;max-width:44%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f28z-barra{flex:1;height:6px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden;min-width:30px}
.f28z-barra span{display:block;height:100%;border-radius:99px;background:var(--rc);transition:width .6s ease}
.f28z-cuenta{font-size:12px;font-weight:700;color:var(--rc)}
.f28z-flecha{font-size:12px;color:var(--text3);transition:transform .25s}
.f28z-rama.abierta .f28z-flecha{transform:rotate(180deg)}
.f28z-cert-btn{all:unset;box-sizing:border-box;display:block;margin:-4px 14px 10px;padding:6px 12px;border-radius:99px;font-size:12px;font-weight:700;color:var(--rc);border:1px solid var(--rc);cursor:pointer;width:max-content}

.f28z-camino{position:relative;margin:4px 0 6px}
.f28z-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.f28z-linea-fondo{fill:none;stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:2 14}
.f28z-linea-hecha{fill:none;stroke:var(--rc);stroke-width:8;stroke-linecap:round;opacity:.55}
.f28z-linea-brillo{fill:none;stroke:#fff;stroke-width:8;stroke-linecap:round;filter:drop-shadow(0 0 6px var(--rc));animation:f28zBrillo 1.3s ease-in-out .3s 2 both}
@keyframes f28zBrillo{from{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:calc(-1 * var(--L));opacity:.9}}

.f28z-fila{position:absolute;left:50%;width:0;display:flex;flex-direction:column;align-items:center;transform:translateX(var(--dx))}
.f28z-nodo{position:relative;width:64px;height:60px;margin-left:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;cursor:pointer;flex-shrink:0;transition:transform .12s, box-shadow .12s;-webkit-tap-highlight-color:transparent}
.f28z-nodo.hecho{background:var(--rc);color:#06281d;font-weight:900;box-shadow:0 6px 0 color-mix(in srgb,var(--rc) 55%,#000)}
.f28z-nodo.libre{background:var(--rc);box-shadow:0 6px 0 color-mix(in srgb,var(--rc) 55%,#000),0 0 0 6px color-mix(in srgb,var(--rc) 22%,transparent)}
.f28z-nodo.f28z-bloq{background:#2a3340;color:var(--text3);cursor:default;font-size:18px;box-shadow:0 6px 0 #1a2029}
.f28z-nodo:not(.f28z-bloq):active{transform:translateY(5px);box-shadow:0 1px 0 color-mix(in srgb,var(--rc) 55%,#000)}
.f28z-nodo.siguiente{animation:f28zLate 2s ease-in-out infinite}
@keyframes f28zLate{0%,100%{box-shadow:0 6px 0 color-mix(in srgb,var(--rc) 55%,#000),0 0 0 6px color-mix(in srgb,var(--rc) 22%,transparent)}50%{box-shadow:0 6px 0 color-mix(in srgb,var(--rc) 55%,#000),0 0 0 12px color-mix(in srgb,var(--rc) 10%,transparent)}}
.f28z-nodo.recien{animation:f28zNace .9s cubic-bezier(.34,1.56,.64,1) .9s both}
@keyframes f28zNace{0%{transform:scale(.4);filter:grayscale(1)}60%{transform:scale(1.2);filter:none}100%{transform:scale(1)}}
.f28z-ico{pointer-events:none;line-height:1}
/* El fondo tapa la línea que pasa por detrás del título */
.f28z-titulo{margin-top:10px;max-width:124px;text-align:center;font-size:11px;line-height:1.25;color:var(--text2);font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;background:var(--bg2);padding:1px 6px;border-radius:6px;position:relative}
/* Bocadillo al lado del nodo (al lado contrario de hacia donde se desplaza) */
.f28z-bocadillo{position:absolute;top:16px;white-space:nowrap;background:var(--text);color:var(--bg2);font-size:11px;font-weight:800;padding:5px 10px;border-radius:10px;animation:f28zFlota 1.6s ease-in-out infinite;z-index:2}
.f28z-bocadillo.der{left:42px}
.f28z-bocadillo.izq{right:42px}
.f28z-bocadillo::after{content:'';position:absolute;top:50%;transform:translateY(-50%);border:5px solid transparent}
.f28z-bocadillo.der::after{right:100%;border-right-color:var(--text)}
.f28z-bocadillo.izq::after{left:100%;border-left-color:var(--text)}
@keyframes f28zFlota{0%,100%{transform:translateX(0)}50%{transform:translateX(3px)}}
.f28z-fila:has(.f28z-bocadillo){z-index:2}

/* ── Llama de la racha ── */
/* animation:none quita el parpadeo del emoji anterior (scFireFlicker), que pisaba el tamaño */
.fl-llama{display:inline-flex;align-items:flex-end;justify-content:center;font-size:0!important;transform:scale(var(--esc,1));transform-origin:50% 90%;animation:none}
.fl-llama svg{overflow:visible;filter:drop-shadow(0 2px 8px rgba(249,115,22,.35))}
.fl-llama .fl-llama-ext{transform-box:fill-box;transform-origin:50% 100%;animation:flLlamaBaila 1.2s ease-in-out infinite alternate}
.fl-llama .fl-llama-int{transform-box:fill-box;transform-origin:50% 100%;animation:flLlamaBaila .8s ease-in-out infinite alternate-reverse}
@keyframes flLlamaBaila{0%{transform:scale(1,1) skewX(0)}50%{transform:scale(.96,1.05) skewX(-2deg)}100%{transform:scale(1.03,.97) skewX(2deg)}}
.fl-llama.apagada svg{filter:none;opacity:.5}
.fl-llama.apagada .fl-llama-ext,.fl-llama.apagada .fl-llama-int{animation:none}
.fl-llama.encendiendo{animation:flLlamaPrende 1.1s cubic-bezier(.34,1.56,.64,1) both}
@keyframes flLlamaPrende{0%{transform:scale(0);filter:brightness(3)}55%{transform:scale(calc(var(--esc,1) * 1.4));filter:brightness(1.8) drop-shadow(0 0 16px #fbbf24)}100%{transform:scale(var(--esc,1));filter:none}}
.fl-llama-nivel{font-size:11px;color:var(--text3);margin-top:3px;font-weight:600}

/* ── Mi Dinero Real ── */
.fl-rm-grafica{margin:4px 0 14px}
.fl-rm-grafica-t{font-size:11px;color:var(--text3);margin-bottom:4px;font-weight:600}
.fl-rm-grafica svg{width:100%;height:90px;display:block}
.fl-dib .fl-dib-area{animation:flDibArea 1.2s ease both}
.fl-dib .fl-dib-punto{animation:flDibPunto .4s cubic-bezier(.34,1.56,.64,1) 1s both;transform-box:fill-box;transform-origin:center}
@keyframes flDibArea{0%,30%{opacity:0}100%{opacity:1}}
@keyframes flDibPunto{from{transform:scale(0)}to{transform:scale(1)}}

/* ── Rama completada: Huchi de fiesta sobre el certificado existente ── */
.fl-rama-huchi{text-align:center;margin-bottom:4px}
.fl-rama-huchi .fl-masc{animation:flRamaFiesta 1.2s ease-in-out .3s 3}
@keyframes flRamaFiesta{0%,100%{transform:translateY(0) rotate(0)}20%{transform:translateY(-26px) rotate(-10deg)}40%{transform:translateY(0) rotate(0)}60%{transform:translateY(-18px) rotate(10deg)}80%{transform:translateY(0) rotate(0)}}

/* Modo claro */
body.light-mode .f28z-rama{background:rgba(255,252,245,.9);border-color:var(--border)}
body.light-mode .f28z-barra{background:rgba(50,40,20,.08)}
body.light-mode .f28z-nodo.f28z-bloq{background:#d9d3c4;box-shadow:0 6px 0 #b9b2a1}
body.light-mode .f28z-linea-fondo{stroke:rgba(50,40,20,.15)}

@media (prefers-reduced-motion: reduce){
  .flm-cuerpo,.flm-ojos,.fl-llama .fl-llama-ext,.fl-llama .fl-llama-int,.f28z-nodo.siguiente,.f28z-bocadillo,.f28z-nodo.recien,.fl-rama-huchi .fl-masc,.fl-llama.encendiendo{animation:none!important}
}

/* ── Huchi celebra los aciertos seguidos ── */
.fl-huchi-pop{position:fixed;left:12px;bottom:calc(150px + env(safe-area-inset-bottom,0px));z-index:9200;display:flex;align-items:center;gap:6px;pointer-events:none;animation:flPopEntra .45s cubic-bezier(.34,1.56,.64,1) both}
.fl-huchi-pop.sale{animation:flPopSale .45s ease-in forwards}
.fl-huchi-pop-txt{background:var(--text);color:var(--bg2);font-weight:800;font-size:13px;padding:7px 12px;border-radius:12px 12px 12px 3px;box-shadow:0 6px 18px rgba(0,0,0,.3);max-width:190px}
@keyframes flPopEntra{from{transform:translateX(-120%) rotate(-12deg)}to{transform:none}}
@keyframes flPopSale{to{transform:translateX(-130%);opacity:0}}

/* ── Tu semana en FinLearn ── */
.fls{position:fixed;inset:0;z-index:9300;background:#05080f;color:#fff;animation:flRamaFondo .3s ease both;user-select:none;-webkit-user-select:none}
.fls.cierra{animation:flPopSale .3s ease forwards}
@keyframes flRamaFondo{from{opacity:0}to{opacity:1}}
.fls-barras{position:absolute;top:calc(10px + env(safe-area-inset-top,0px));left:12px;right:12px;display:flex;gap:4px;z-index:2}
.fls-barras span{flex:1;height:3px;border-radius:3px;background:rgba(255,255,255,.25);overflow:hidden}
.fls-barras span i{display:block;height:100%;width:0;background:#fff}
.fls-barras span.hecha i{width:100%}
.fls-barras span.actual i{animation:flsBarra 4.5s linear forwards}
@keyframes flsBarra{to{width:100%}}
.fls-x{all:unset;position:absolute;top:calc(22px + env(safe-area-inset-top,0px));right:14px;z-index:3;font-size:20px;padding:6px 10px;cursor:pointer;color:rgba(255,255,255,.8)}
.fls-slide{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 24px 40px;gap:10px}
.fls-slide.activa{display:flex;animation:flsEntra .5s cubic-bezier(.34,1.3,.64,1) both}
@keyframes flsEntra{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.fls-fa{background:radial-gradient(circle at 50% 30%,#0f3d33,#05080f 70%)}
.fls-fb{background:radial-gradient(circle at 50% 40%,#1d3a6b,#05080f 70%)}
.fls-fc{background:radial-gradient(circle at 50% 40%,#3b2470,#05080f 70%)}
.fls-fd{background:radial-gradient(circle at 50% 45%,#5a2a0c,#05080f 70%)}
.fls-fe{background:radial-gradient(circle at 50% 40%,#4a1622,#05080f 70%)}
.fls-mini{font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.7);font-weight:700}
.fls-titulo{font-family:'Syne',sans-serif;font-size:30px;font-weight:900;line-height:1.1}
.fls-sub{font-size:15px;color:rgba(255,255,255,.8);max-width:300px}
.fls-num{font-family:'Syne',sans-serif;font-size:56px;font-weight:900;line-height:1;letter-spacing:-.02em;background:linear-gradient(180deg,#fff,#9ff5d6);-webkit-background-clip:text;background-clip:text;color:transparent}
.fls-filas{display:flex;flex-direction:column;gap:8px;font-size:16px;margin-top:6px}
.fls-filas b{font-size:20px}
.fls-llama{margin-bottom:24px}
.fls-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:8px 0 18px}
.fls-chips span{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);padding:7px 12px;border-radius:99px;font-weight:700;font-size:14px}
.fls .btn-block{max-width:320px}
.fls-cerrar-txt{all:unset;cursor:pointer;color:rgba(255,255,255,.7);padding:10px;font-size:14px}
@media (prefers-reduced-motion: reduce){.fl-huchi-pop,.fls-slide.activa,.fls-barras span.actual i{animation:none!important}.fls-barras span.actual i{width:100%}}

/* ── Carta de personaje: el dibujo elegido en vez del emoji ── */
.cc-avatar{overflow:hidden}
.cc-avatar .cc-avatar-img{width:100%;height:100%;object-fit:cover;object-position:center 12%;image-rendering:pixelated;display:block}
.hero-supuesto{font-size:11px;color:var(--text3);text-align:center;margin:-2px 0 8px}
.income-panel-cta{all:unset;box-sizing:border-box;display:block;width:100%;margin-top:10px;padding:9px 12px;border-radius:10px;background:rgba(0,229,160,.1);border:1px dashed rgba(0,229,160,.4);color:var(--accent);font-size:12px;font-weight:700;text-align:center;cursor:pointer}

/* ── Comparador de estilos de vida ── */
.lsc-hap{display:flex;flex-direction:column;gap:10px}
.lsc-hap-row{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.45;color:var(--text2)}
.lsc-hap-row strong{color:var(--text)}
.lsc-hap-i{font-size:20px;line-height:1.1;flex-shrink:0}
.lsc-hap-nota{margin-top:12px;font-size:11px;color:var(--text3);line-height:1.45;border-top:1px solid var(--border);padding-top:10px}
/* En móvil estrecho las tres tarjetas no cabían con cifras como "€1.23M" */
@media (max-width:400px){
  .lsc-summary{gap:6px}
  .lsc-card{padding:12px 6px;min-width:0}
  .lsc-card-final{font-size:15px;word-break:break-word}
  .lsc-card-rate,.lsc-card-fire{font-size:10px}
}

/* ── Avisos de mercado real (app-mercado-real.js) ── */
.fl-mercado{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));left:12px;right:12px;max-width:440px;margin:0 auto;z-index:9100;display:flex;gap:10px;align-items:flex-start;padding:12px 38px 12px 12px;border-radius:16px;background:var(--bg2);border:1px solid var(--border);box-shadow:0 12px 30px rgba(0,0,0,.4);animation:flMercadoEntra .45s cubic-bezier(.34,1.4,.64,1) both}
.fl-mercado.baja{border-left:4px solid #ef4444}
.fl-mercado.sube{border-left:4px solid #00e5a0}
.fl-mercado.sale{animation:flMercadoSale .35s ease-in forwards}
@keyframes flMercadoEntra{from{transform:translateY(-140%)}to{transform:none}}
@keyframes flMercadoSale{to{transform:translateY(-140%);opacity:0}}
.fl-mercado-masc{flex-shrink:0}
.fl-mercado-txt{min-width:0}
.fl-mercado-eti{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text3)}
.fl-mercado-tit{font-size:14px;font-weight:800;color:var(--text);margin:2px 0 4px;line-height:1.3}
.fl-mercado-lec{font-size:12px;color:var(--text2);line-height:1.4}
.fl-mercado-fuente{font-size:10px;color:var(--text3);margin-top:5px}
.fl-mercado-x{all:unset;position:absolute;top:8px;right:10px;padding:4px 6px;cursor:pointer;color:var(--text3);font-size:14px}

/* ── Test de personalidad: botón de salir (no había) ── */
.pers-header{position:relative;padding-right:44px}
.pers-x{all:unset;position:absolute;right:0;top:50%;transform:translateY(-50%);width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(255,255,255,.08);color:var(--text2);font-size:15px;cursor:pointer}
.pers-x:active{transform:translateY(-50%) scale(.92)}

/* ── Avatares bloqueados por nivel ── */
.av-opt{position:relative}
.av-opt.av-bloq .av-sprite{filter:grayscale(1) brightness(.55);opacity:.7}
.av-opt.av-bloq .av-nm{opacity:.6}
.av-req{display:block;font-size:9px;font-weight:800;color:var(--text3);margin-top:2px}
#coach-ans-text{white-space:pre-line}

/* ── Mensaje flotante del coach (FinAI) ──
   Se centraba con transform:translateX(-50%) y la animación de entrada
   ponía transform:translateY(...), así que se perdía el centrado y la caja
   salía desplazada media pantalla a la derecha, cortada. */
.finai-float-alert{left:16px!important;right:16px!important;width:auto!important;margin:0 auto;transform:none;max-height:60vh;overflow-y:auto}

/* ── Botón de cuenta ── */
.nav-cuenta{all:unset;box-sizing:border-box;flex-shrink:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.nav-cuenta.fuera{gap:4px;height:30px;padding:0 10px;border-radius:99px;border:1.5px solid rgba(0,229,160,.55);background:rgba(0,229,160,.1);color:var(--accent);font-size:12px;font-weight:800}
.nav-cuenta.fuera .nav-cuenta-ico{font-size:13px}
.nav-cuenta.fuera.llama-atencion{animation:navCuentaLatido 2.6s ease-in-out infinite}
@keyframes navCuentaLatido{0%,100%{box-shadow:0 0 0 0 rgba(0,229,160,.0)}50%{box-shadow:0 0 0 5px rgba(0,229,160,.18)}}
.nav-cuenta.dentro{position:relative;width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#00e5a0,#0091ff);color:#04140f;font-weight:900;font-size:13px}
.nav-cuenta-ok{position:absolute;right:-3px;bottom:-3px;width:14px;height:14px;border-radius:50%;background:#00e5a0;color:#04140f;font-size:9px;font-weight:900;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg)}
@media (max-width:360px){.nav-cuenta.fuera .nav-cuenta-txt{display:none}.nav-cuenta.fuera{padding:0 8px}}
@media (prefers-reduced-motion: reduce){.nav-cuenta.fuera.llama-atencion{animation:none}}

/* ── Mi Dinero Real reordenado ── */
.fl-rm-cab{display:flex;gap:12px;align-items:center;margin-bottom:14px;padding:14px;border-radius:20px;background:linear-gradient(135deg,rgba(0,229,160,.10),rgba(96,165,250,.06));border:1px solid rgba(0,229,160,.18);animation:flRmEntra .45s cubic-bezier(.34,1.3,.64,1) both}
.fl-rm-cab-txt{min-width:0;flex:1}
.fl-rm-cab-mes{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.fl-rm-cab-msg{font-size:14px;line-height:1.4;color:var(--text);margin-top:2px}
.fl-rm-cab-btn{margin-top:10px}
.fl-rm-editor{margin-bottom:16px!important;border-radius:20px!important}
.fl-rm-flujo{margin-bottom:16px;padding:16px 18px;border-radius:20px;background:var(--bg2);border:1px solid var(--border);animation:flRmEntra .5s ease both .1s}
.fl-rm-tit{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);margin-bottom:12px}
.fl-rm-barra{display:flex;height:16px;border-radius:99px;overflow:hidden;background:rgba(255,255,255,.06);gap:2px}
.fl-rm-barra span{height:100%;transform-origin:left;animation:flRmCrece .7s cubic-bezier(.4,0,.2,1) both}
@keyframes flRmCrece{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.fl-rm-leyenda{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:14px;font-size:12px;color:var(--text2)}
.fl-rm-leyenda>div{display:flex;align-items:center;gap:5px;min-width:0}
.fl-rm-leyenda b{margin-left:auto;color:var(--text);font-weight:800}
.fl-rm-leyenda em{font-style:normal;color:var(--text3);font-size:10px;width:30px;text-align:right}
.fl-rm-pt{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.fl-rm-aviso{margin-top:12px;font-size:12px;font-weight:700;color:#f87171}
.fl-rm-cmp{margin-top:12px;border-top:1px solid var(--border);padding-top:12px;background:none!important;border-radius:0!important}
.fl-rm-patr{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:100%;margin-top:4px;padding:16px 18px;border-radius:20px;cursor:pointer;background:linear-gradient(135deg,rgba(96,165,250,.12),rgba(192,132,252,.08));border:1px solid rgba(96,165,250,.3)}
.fl-rm-patr-i{font-size:26px}
.fl-rm-patr-t{flex:1;min-width:0;display:flex;flex-direction:column}
.fl-rm-patr-t b{font-size:15px;color:var(--text)}
.fl-rm-patr-t small{font-size:12px;color:var(--text2);margin-top:2px}
.fl-rm-patr-f{font-size:24px;color:var(--text3)}
@keyframes flRmEntra{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (max-width:360px){.fl-rm-leyenda{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){.fl-rm-cab,.fl-rm-flujo,.fl-rm-barra span{animation:none!important}}

/* ── Huchi en los avisos ── */
.toast.con-huchi{display:flex;align-items:center;gap:10px}
.toast.con-huchi .fl-masc{flex-shrink:0;animation:flToastHuchi .5s cubic-bezier(.34,1.56,.64,1) both}
.toast-txt{min-width:0}
@keyframes flToastHuchi{from{transform:scale(.3) rotate(-20deg)}to{transform:none}}

/* ── Huchi en el inicio ── */
.fl-huchi-inicio{display:flex;gap:12px;align-items:center;margin-bottom:12px;padding:12px 14px;border-radius:20px;background:linear-gradient(135deg,rgba(0,229,160,.10),rgba(124,58,237,.08));border:1px solid rgba(0,229,160,.18);animation:flRmEntra .5s cubic-bezier(.34,1.3,.64,1) both}
.fl-hi-txt{min-width:0;flex:1}
.fl-hi-saludo{font-family:'Syne',sans-serif;font-weight:800;font-size:15px;color:var(--text)}
.fl-hi-msg{font-size:13px;line-height:1.4;color:var(--text2);margin-top:2px}
.fl-hi-btn{all:unset;cursor:pointer;margin-top:8px;display:inline-block;padding:7px 12px;border-radius:99px;background:var(--accent);color:#04140f;font-size:12px;font-weight:800}

/* ── Tacto: botones y tarjetas se hunden un poco al tocarlos ── */
.btn,.fl-hi-btn,.f28z-cab,.fl-rm-patr,.quiz-opt,.dca-opt,.card[onclick],[class*="-card"][onclick]{transition:transform .12s ease,filter .12s ease}
.btn:active,.fl-hi-btn:active,.f28z-cab:active,.fl-rm-patr:active,.card[onclick]:active,[class*="-card"][onclick]:active{transform:scale(.97);filter:brightness(1.08)}
.quiz-opt:active,.dca-opt:active{transform:scale(.98)}
@media (prefers-reduced-motion: reduce){.fl-huchi-inicio,.toast.con-huchi .fl-masc{animation:none!important}}

/* ── Nómina con IA (app-nomina.js) ── */
.fl-rm-nomina{margin:0 0 14px;background:linear-gradient(135deg,rgba(0,229,160,.12),rgba(251,191,36,.08));border-color:rgba(0,229,160,.3)}
.tool-nuevo{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:6px;background:var(--accent);color:#04140f;font-size:9px;font-weight:900;letter-spacing:.05em;vertical-align:middle}
.fl-nom{position:fixed;inset:0;z-index:9400;background:rgba(5,8,15,.86);backdrop-filter:blur(6px);display:flex;justify-content:center;overflow-y:auto;padding:16px;animation:flRamaFondo .25s ease both}
.fl-nom-caja{position:relative;width:100%;max-width:460px;margin:auto 0;background:var(--bg2);border:1px solid var(--border);border-radius:24px;padding:22px 18px 18px;box-shadow:0 20px 50px rgba(0,0,0,.5);animation:flRmEntra .4s cubic-bezier(.34,1.3,.64,1) both}
.fl-nom-x{all:unset;position:absolute;top:12px;right:12px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(255,255,255,.08);color:var(--text2);cursor:pointer;z-index:2}
.fl-nom-cab{text-align:center}
.fl-nom-cab-res{display:flex;gap:12px;align-items:center;text-align:left;padding-right:36px}
.fl-nom-tit{font-family:'Syne',sans-serif;font-size:22px;font-weight:900;color:var(--text);margin-top:6px}
.fl-nom-sub{font-size:13px;line-height:1.5;color:var(--text2);margin-top:4px}
.fl-nom-err{color:var(--text)}
.fl-nom-botones{display:flex;flex-direction:column;gap:8px;margin:18px 0 12px}
.fl-nom-subir{cursor:pointer;text-align:center}
.fl-nom-priv{font-size:12px;line-height:1.5;color:var(--text2);background:rgba(0,229,160,.06);border:1px solid rgba(0,229,160,.18);border-radius:14px;padding:10px 12px}
.fl-nom-priv b{color:var(--text)}
.fl-nom-plan{font-size:12px;color:var(--text3);text-align:center;margin-top:10px}
.fl-nom-prev-t{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text3);margin:16px 0 6px}
.fl-nom-prev{all:unset;box-sizing:border-box;display:block;width:100%;padding:10px 12px;margin-bottom:6px;border-radius:12px;border:1px solid var(--border);font-size:13px;color:var(--text);cursor:pointer}
.fl-nom-barra{height:8px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:16px}
.fl-nom-barra span{display:block;height:100%;background:var(--accent);border-radius:99px;transition:width .3s}
.fl-nom-lista{display:flex;flex-direction:column;gap:10px;margin:16px 0 12px}
.fl-nom-dato{position:relative;padding:14px;border-radius:16px;background:rgba(255,255,255,.03);border:1px solid var(--border);animation:flRmEntra .4s ease both;overflow:hidden}
.fl-nom-dato-cab{display:flex;align-items:center;gap:8px}
.fl-nom-dato-i{font-size:20px}
.fl-nom-dato-t{flex:1;font-size:13px;font-weight:800;color:var(--text)}
.fl-nom-dato-n{font-size:10px;color:var(--text3);font-weight:700}
.fl-nom-dato-v{font-family:'Syne',sans-serif;font-size:24px;font-weight:900;color:var(--accent);margin-top:6px}
.fl-nom-dato-s{font-size:12px;color:var(--text2)}
.fl-nom-dato-x{font-size:12px;line-height:1.5;color:var(--text2);margin-top:6px}
.fl-nom-dato-l{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.fl-nom-dato-l>div{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--text2)}
.fl-nom-dato-l b{color:var(--text)}
.fl-nom-usar{margin-top:10px}
.fl-nom-dato.bloq>*:not(.fl-nom-dato-cab):not(.fl-nom-candado){filter:blur(6px);user-select:none;pointer-events:none}
.fl-nom-candado{all:unset;box-sizing:border-box;display:block;width:100%;margin-top:10px;padding:9px;border-radius:12px;text-align:center;font-size:12px;font-weight:800;color:#1a1200;background:linear-gradient(135deg,#fbbf24,#f59e0b);cursor:pointer}
.fl-nom-nota{font-size:11px;line-height:1.5;color:var(--text3);text-align:center;margin-top:10px}
