/* NOVALINK — esquema NOVAFUNDING: barra lateral, saludo grande, chips de estado, tarjetas de vidrio
   con borde luminoso, números con gradiente, la protección como «Guardián» y la curva de equidad.
   Sirve al panel (app.html) y a la consola del equipo (admin.html). Va DESPUÉS de nova.css.
   Sin JS se ve igual (solo CSS); con «reducir movimiento» no hay animaciones. */

/* ===================== utilidades NOVAFUNDING ===================== */
.nf-grad{background-image:var(--nv-grad);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:nfShine 7s ease-in-out infinite alternate}
.nf-grad--cool{background-image:linear-gradient(100deg,#a6f8ff,#62f1f9 35%,#00f5a0 80%,#9ffbd9)}
.nf-grad--warm{background-image:linear-gradient(100deg,#ffe0b8,#ffb46b 40%,#ff9a2e 70%,#ff6c12)}
:root[data-theme="light"] .nf-grad{background-image:linear-gradient(100deg,#006F80,#0B8F9C 40%,#E57A00 75%,#C24E00)}
:root[data-theme="light"] .nf-grad--cool{background-image:linear-gradient(100deg,#006F80,#00875A)}
:root[data-theme="light"] .nf-grad--warm{background-image:linear-gradient(100deg,#B85000,#8F4700)}
@keyframes nfShine{from{background-position:0% 50%}to{background-position:100% 50%}}
.nf-label{font:600 11px/1.2 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.nf-mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.nf-sub{font-size:14px;color:var(--muted);line-height:1.5}
.nf-mute{color:var(--muted)}
.nf-pos{color:var(--gain);text-shadow:0 0 22px rgba(0,245,160,.35)}
.nf-neg{color:var(--loss);text-shadow:0 0 22px rgba(255,154,46,.35)}
.nf-warm{color:var(--warn-text)}
.nf-up{color:var(--gain)}
.nf-dn{color:var(--loss)}
:root[data-theme="light"] :is(.nf-pos,.nf-neg){text-shadow:none}
.nf-live{flex:none;display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--nv-green);box-shadow:0 0 10px var(--nv-green);animation:nfPulse 1.8s infinite}
@keyframes nfPulse{0%{box-shadow:0 0 0 0 rgba(0,245,160,.65)}70%{box-shadow:0 0 0 10px rgba(0,245,160,0)}100%{box-shadow:0 0 0 0 rgba(0,245,160,0)}}
.nf-dot{flex:none;display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--muted)}
.nf-dot.on{background:var(--nv-green);box-shadow:0 0 8px var(--nv-green)}
.nf-spin{flex:none;display:inline-block;width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent-2);animation:nfRot .8s linear infinite}
@keyframes nfRot{to{transform:rotate(360deg)}}
.nf-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;font:700 11px/1 var(--mono);color:var(--accent-text);background:var(--accent-tint);border:1px solid var(--accent-line)}

/* chips de estado */
.nf-status{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:999px;font:600 12px/1 var(--mono);color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);white-space:nowrap}
.nf-status:first-child{color:var(--ok-text);border-color:var(--ok-line);background:var(--ok-tint)}
.nf-status.bad{color:var(--bad-text);border-color:var(--bad-line);background:var(--bad-tint)}
.nf-status.bad .nf-dot{background:var(--bad)}
.nf-chip-s{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font:600 11px/1 var(--mono);letter-spacing:.06em;white-space:nowrap;text-transform:uppercase;vertical-align:middle}
.nf-chip-s.ok{color:var(--ok-text);background:var(--ok-tint);border:1px solid var(--ok-line)}
.nf-chip-s.warn{color:var(--warn-text);background:var(--warn-tint);border:1px solid var(--warn-line)}
.nf-chip-s.bad{color:var(--bad-text);background:var(--bad-tint);border:1px solid var(--bad-line)}
.nf-chip-s.info{color:var(--accent-text);background:var(--accent-tint);border:1px solid var(--accent-line)}
.nf-chip-s.mute{color:var(--muted);background:var(--surface-2);border:1px solid var(--line)}
.nf-envivo{margin-left:10px;font-size:10.5px}
.nf-envivo .nf-live{width:6px;height:6px}

/* botones */
.nf-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;font:600 14px/1 var(--ff);cursor:pointer;border:0;white-space:nowrap;text-decoration:none;transition:transform .35s var(--ease-out),box-shadow .35s,background .3s,color .3s}
.nf-btn--primary{color:#1c1206;background:var(--nv-grad-warm);box-shadow:0 12px 34px -12px rgba(255,108,18,.8),inset 0 1px 0 rgba(255,255,255,.45)}
.nf-btn--ghost{color:var(--ink);background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-line)}
.nf-btn--ghost:hover{background:color-mix(in srgb,var(--accent) 20%,transparent);box-shadow:inset 0 0 0 1px var(--accent-2),0 0 24px -8px var(--nv-glow)}
.nf-btn--cool{color:#04121a;background:var(--nv-grad-cool);box-shadow:0 12px 30px -12px var(--nv-glow)}
.nf-btn--cool:hover,.nf-btn--primary:hover{transform:translateY(-2px)}
.nf-btn--warn{color:var(--warn-text);background:var(--warn-tint);box-shadow:inset 0 0 0 1px var(--warn-line)}
.nf-btn--sm{min-height:38px;padding:0 15px;font-size:13px}
.nf-btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}
.nf-icon{width:36px;height:36px;border:0;border-radius:11px;background:var(--accent-tint);color:var(--ink-2);cursor:pointer;display:grid;place-items:center;transition:background .25s,color .25s,transform .25s var(--ease-out)}
.nf-icon:hover{color:var(--ink);background:color-mix(in srgb,var(--accent) 22%,transparent);transform:translateY(-1px)}
.nf-switch{position:relative;flex:none;width:58px;height:32px;border-radius:99px;border:0;cursor:pointer;background:color-mix(in srgb,var(--muted) 30%,transparent);transition:background .3s,box-shadow .3s}
.nf-switch::after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:var(--ink-2);transition:transform .4s var(--ease-out),background .3s}
.nf-switch.is-on{background:linear-gradient(135deg,#14d6e6,#00f5a0);box-shadow:0 0 22px -4px var(--nv-glow)}
.nf-switch.is-on::after{transform:translateX(26px);background:#04121a}
.nf-seg{display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.nf-seg button{min-height:34px;padding:0 13px;border-radius:9px;border:0;background:transparent;color:var(--muted);font:600 12px/1 var(--mono);cursor:pointer;transition:all .25s}
.nf-seg button:hover{color:var(--ink)}
.nf-seg button.is-on{background:var(--accent-tint);color:var(--accent-text);box-shadow:inset 0 0 0 1px var(--accent-line)}
.nf-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}

/* ===================== tarjetas del panel ===================== */
.nf-dash{display:flex;flex-direction:column;gap:18px}
.nf-dash[hidden]{display:none}
.nf-dash .card{margin:0 !important;padding:22px 24px;border-radius:22px;background:var(--nv-card);border:1px solid var(--line);
  box-shadow:var(--e2),inset 0 1px 0 var(--nv-card-top);position:relative;min-width:0;transition:border-color .4s,box-shadow .5s,transform .5s var(--ease-out)}
.nf-dash .card:hover{border-color:var(--accent-line);box-shadow:0 36px 70px -34px rgba(0,0,0,.9),0 0 40px -18px var(--nv-glow),inset 0 1px 0 var(--nv-card-top)}
:root[data-theme="light"] .nf-dash .card:hover{box-shadow:var(--e2),0 0 30px -16px var(--nv-glow)}
.nf-card-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px}
.nf-card-h h2,.nf-dash h2{font:700 17px/1.25 var(--fh);letter-spacing:-.02em;margin:0;color:var(--ink)}
.nf-card-h .nf-sub{margin-top:4px;font-size:13.5px}

.nf-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:-6px}
.nf-acc-chip{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border-radius:999px;cursor:pointer;
  font:600 12px/1 var(--mono);color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);transition:all .3s var(--ease-out)}
.nf-acc-chip:hover{color:var(--ink);border-color:var(--accent-line)}
.nf-acc-chip.is-on{color:#04121a;background:linear-gradient(135deg,var(--nv-cyan-2),var(--nv-cyan) 60%,var(--nv-green));border-color:transparent;box-shadow:0 10px 26px -10px var(--nv-glow)}
.nf-acc-chip.is-on .nf-dot{background:#04121a;box-shadow:none}

.nf-kpis{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr))}
.nf-dash .nf-kpi{padding:18px 20px;display:flex;flex-direction:column;gap:10px;overflow:hidden}
.nf-kpi .nf-num{font:800 clamp(22px,2vw,30px)/1.05 var(--fh);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink);overflow-wrap:anywhere}
.nf-delta{display:inline-flex;align-items:center;gap:4px;max-width:100%;width:max-content;padding:5px 9px;border-radius:10px;font:600 11.5px/1.35 var(--mono);background:var(--surface-2);white-space:normal}
.nf-delta svg{flex:none}
.nf-delta.up{color:var(--gain);background:var(--ok-tint)}
.nf-delta.dn{color:var(--loss);background:var(--warn-tint)}
.nf-delta.mid{color:var(--accent-text);background:var(--accent-tint)}

.nf-row{display:grid;gap:18px;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr)}
.nf-row3{grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);align-items:start}
@media (max-width:1180px){.nf-row,.nf-row3{grid-template-columns:1fr}}

/* resultado grande con anillo que gira */
@property --nf-a{syntax:'<angle>';inherits:false;initial-value:0deg}
.nf-ring{border-color:color-mix(in srgb,var(--accent) 40%,transparent) !important}
.nf-ring::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;pointer-events:none;
  background:conic-gradient(from var(--nf-a),rgba(20,214,230,0) 0deg,#14d6e6 60deg,#00f5a0 110deg,rgba(255,154,46,0) 170deg,rgba(255,154,46,0) 220deg,#ff9a2e 290deg,rgba(20,214,230,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:nfSpin 5s linear infinite}
@keyframes nfSpin{to{--nf-a:360deg}}
.nf-hero{display:flex;flex-direction:column;gap:12px;overflow:hidden}
.nf-hero::after{content:"";position:absolute;right:-120px;top:-140px;width:360px;height:360px;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 14%,transparent),transparent 65%)}
.nf-hero-st .pill{margin:0}
.nf-hero-num{margin-top:2px}
.nf-num--big{display:inline-block;font:800 clamp(34px,3.6vw,48px)/1 var(--fh);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.nf-hero-sub{margin:0;font-size:15px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.nf-hero-sub span{display:inline-flex;align-items:center;gap:3px;font-weight:600}
.nf-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));gap:12px;margin-top:6px}
.nf-tile{padding:14px;border-radius:14px;background:var(--surface-2);border:1px solid var(--hairline);display:flex;flex-direction:column;gap:6px;min-width:0}
.nf-tile .nf-label{font-size:10.5px}
.nf-tile .v{font:700 18px/1.15 var(--mono);letter-spacing:-.02em;color:var(--ink);overflow-wrap:anywhere}
.nf-tile .s{font-size:12px;color:var(--muted)}

/* protección («Guardián») */
.nf-guard{display:flex;flex-direction:column;gap:18px}
.nf-rule{display:flex;flex-direction:column;gap:8px}
.nf-rule-h{display:flex;justify-content:space-between;gap:10px;font-size:14px;color:var(--ink)}
.nf-rule-h .nf-mono{font-size:12.5px;font-weight:600}
.nf-track{height:10px}
.nf-trk{display:block;width:100%;height:10px;overflow:visible}
.nf-trk .t{fill:color-mix(in srgb,var(--muted) 18%,transparent)}
.nf-trk .u{fill:var(--nv-cyan);animation:nfGrow 1.4s var(--ease-out) both;transform-origin:0 50%}
.nf-trk .u.warn{fill:var(--nv-orange)}
.nf-trk .u.bad{fill:var(--nv-red)}
@keyframes nfGrow{from{transform:scaleX(0)}}
.nf-rule-n{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted)}
.nf-guard .nf-actions{margin-top:auto}
.nf-guard .nf-actions .nf-btn{flex:1 1 auto}

/* curva de equidad */
.nf-chart{display:flex;flex-direction:column;gap:16px}
.nf-chart-box{position:relative;height:300px;border-radius:14px;background:var(--surface-2);border:1px solid var(--hairline);overflow:hidden}
.nf-chart-svg{display:block}
.nf-chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:20px;text-align:center;color:var(--muted);font-size:14px}
.nf-st0{stop-color:var(--nv-cyan);stop-opacity:.42}
.nf-st1{stop-color:var(--nv-cyan);stop-opacity:0}
.nf-line{fill:none;stroke:var(--nv-cyan-2);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 6px rgba(20,214,230,.75));
  stroke-dasharray:1;stroke-dashoffset:1;animation:nfDraw 1.6s var(--ease-out) forwards}
:root[data-theme="light"] .nf-line{stroke:var(--accent-deep);filter:none}
@keyframes nfDraw{to{stroke-dashoffset:0}}
.nf-area{opacity:0;animation:nfFadeIn 1.2s .3s ease forwards}
@keyframes nfFadeIn{to{opacity:1}}
.nf-end{fill:var(--nv-cyan-2);stroke:#04121a;stroke-width:2;filter:drop-shadow(0 0 8px var(--nv-cyan))}
.nf-ref{stroke-width:1.2;stroke-dasharray:5 5;opacity:.85}
.nf-ref.peak{stroke:var(--nv-cyan-2)}
.nf-ref.base{stroke:var(--muted)}
.nf-ref.floor{stroke:var(--nv-orange)}
.nf-ax{font:600 11px var(--mono);fill:var(--muted)}
.nf-ax.peak{fill:var(--accent-text)}
.nf-ax.floor{fill:var(--warn-text)}
.nf-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:12.5px;color:var(--muted)}
.nf-legend span{display:flex;align-items:center;gap:7px}
.nf-legend i{width:12px;height:12px;border-radius:4px}
.nf-legend i.peak{background:var(--nv-cyan-2)}
.nf-legend i.base{background:var(--muted)}
.nf-legend i.floor{background:var(--nv-orange)}

/* ficha del copiador */
.nf-acc{display:flex;flex-direction:column;gap:16px}
.nf-acc-n{font:800 30px/1.05 var(--fh) !important;letter-spacing:-.03em;margin-top:6px !important;background-image:var(--nv-grad-cool);-webkit-background-clip:text;background-clip:text;color:transparent !important}
:root[data-theme="light"] .nf-acc-n{background-image:linear-gradient(100deg,#006F80,#00875A)}
.nf-copy{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;font-weight:600;font-size:14px}
.nf-copy.ok{color:var(--ok-text);background:var(--ok-tint);border:1px solid var(--ok-line)}
.nf-copy.wait{color:var(--warn-text);background:var(--warn-tint);border:1px solid var(--warn-line)}
.nf-copy.off{color:var(--muted);background:var(--surface-2);border:1px solid var(--line)}
.nf-kv{display:flex;flex-direction:column;gap:12px;font-size:14px}
.nf-kv div{display:flex;justify-content:space-between;gap:12px}
.nf-kv div span:first-child{color:var(--muted)}
.nf-kv div span:last-child{font-family:var(--mono);font-size:13px;text-align:right;overflow-wrap:anywhere;color:var(--ink)}
.nf-acc .nf-actions{margin-top:auto}

/* operaciones y avisos */
.nf-row3 > .card.nf-ops{padding:22px 0 8px}
.nf-row3 > .card.nf-ops > h2{padding:0 24px;display:flex;flex-wrap:wrap;align-items:center}
.nf-row3 > .card.nf-ops > h2 small{flex-basis:100%}
.nf-row3 > .card.nf-ops > .empty{margin:0 24px 16px}
.nf-tls{display:flex;flex-direction:column;margin-top:14px}
.nf-tl{position:relative;display:flex;gap:14px;padding-bottom:16px}
.nf-tl::before{content:"";position:absolute;left:5px;top:16px;bottom:0;width:1px;background:linear-gradient(180deg,var(--accent-line),var(--hairline))}
.nf-tl:last-child::before{display:none}
.nf-tl-dot{position:relative;z-index:1;flex:none;width:11px;height:11px;margin-top:4px;border-radius:50%;background:var(--nv-cyan);box-shadow:0 0 10px var(--nv-cyan)}
.nf-tl-dot.sys{background:var(--nv-orange);box-shadow:0 0 10px var(--nv-orange)}
.nf-tl-dot.me{background:var(--muted);box-shadow:none}
.nf-tl b{display:block;font-size:14px;color:var(--ink)}
.nf-tl p{margin:3px 0 4px;font-size:12.5px;line-height:1.45;color:var(--muted)}
.nf-tl .nf-mono{font-size:11px;color:var(--muted)}

/* el saludo es el título del Resumen; las cifras viejas quedan bajo el panel nuevo */
#scr-resumen > .head h1{font-size:clamp(26px,2.6vw,34px);line-height:1.15;max-width:30ch}
#scr-resumen > .head .rule{display:none}
:root[data-skin="nova"] #scr-resumen.on > #nfDash{order:2}
:root[data-skin="nova"] #scr-resumen.on > #guia{order:3}
:root[data-skin="nova"] #scr-resumen.on > #tiles{display:none}
body.nf-sin-cuentas #nfDash .nf-row,body.nf-sin-cuentas #nfKpis{display:none}

/* ===================== barra lateral (escritorio) ===================== */
@media (min-width:1000px){
  :root{--side-w:264px;--dock-h:0px;--dock-gap:16px}
  body{padding-left:var(--side-w)}
  header.bar{position:fixed;left:0;top:0;bottom:0;width:var(--side-w);padding:0;z-index:45}
  header.bar > .wrap{max-width:none;padding:0;height:100%}
  :root[data-skin="nova"] header.bar .in,header.bar .in{height:100%;flex-direction:column;align-items:stretch;gap:14px;border:0;border-radius:0;
    border-right:1px solid var(--line);padding:calc(22px + var(--sat)) 16px 18px;box-shadow:none;
    background:linear-gradient(180deg,color-mix(in srgb,var(--bg-2) 94%,transparent),color-mix(in srgb,var(--bg) 97%,transparent));
    -webkit-backdrop-filter:none;backdrop-filter:none}
  :root[data-skin="nova"] header.bar .in::after{left:auto;right:-1px;top:0;bottom:0;width:1px;height:auto;
    background:linear-gradient(180deg,transparent,rgba(20,214,230,.5) 30%,rgba(255,154,46,.4) 70%,transparent);opacity:.6}
  header.bar .brand{padding:4px 8px;gap:12px}
  :root[data-skin="nova"] header.bar .brand .badge{width:38px;height:38px}
  header.bar .brand .wm{font:700 18px/1 var(--fh);letter-spacing:-.01em}
  header.bar .in > .live{align-self:flex-start;margin-left:10px}
  .bar .who{margin:auto 0 0;flex:none;flex-wrap:wrap;justify-content:flex-start;gap:8px}
  .who .chip{order:-2;flex:1 1 100%;display:grid !important;grid-template-columns:34px minmax(0,1fr);column-gap:10px;row-gap:3px;align-items:center;
    min-height:58px;padding:10px 12px;border-radius:16px;
    background:radial-gradient(circle at 20% 0%,color-mix(in srgb,var(--accent) 22%,transparent),var(--surface-2) 70%);border:1px solid var(--accent-line);
    box-shadow:0 0 30px -16px var(--nv-glow)}
  .who .chip::before{content:"";grid-row:1 / 3;width:34px;height:34px;border-radius:50%;
    background:url(novalink-emblema.png) center/62% no-repeat,linear-gradient(135deg,#ffc27a,#ff6c12);box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px rgba(255,154,46,.55)}
  .who .chip .em{grid-column:2;align-self:end;font-size:13px}
  .who .chip .role{grid-column:2;justify-self:start;align-self:start;margin:0}
  header.bar .brand .wm{overflow:visible}
  header.bar .brand .wm-x{display:block;font-size:0;margin-top:6px}
  header.bar .brand .wm-x::after{content:"CONSOLA ADMIN";font:600 10px/1 var(--mono);letter-spacing:.2em;color:var(--warn-text)}
  .who > .live{order:-3;flex-basis:100%;margin:0 0 4px 10px}
  .who .bellwrap,.who .menuwrap{display:inline-flex}
  .side-admin{order:-1;flex:1 1 100%}

  nav.dock,:root[data-skin="nova"] nav.dock{position:fixed;left:16px;top:calc(var(--sat) + 132px);bottom:auto;transform:none;
    width:calc(var(--side-w) - 32px);max-width:none;flex-direction:column;gap:4px;padding:0;z-index:46;
    background:none;border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
  body.adm nav.dock,body:not(:has(header.bar .in > .live)) nav.dock{top:calc(var(--sat) + 96px)}
  :root[data-skin="nova"] nav.dock::before{display:none}
  .dock .tab,:root[data-skin="nova"] .dock .tab{flex-direction:row;justify-content:flex-start;gap:12px;min-height:46px;min-width:0;flex:none;
    padding:0 14px;border-radius:12px;font:500 14px/1 var(--ff);letter-spacing:0;text-transform:none;color:var(--ink-2);transition:color .25s,transform .25s var(--ease-out)}
  .dock .tab:hover{color:var(--ink);transform:translateX(2px)}
  .dock .tab .ico,.dock .tab .ico svg{width:20px;height:20px}
  .dock .tab .lbl{text-align:left}
  .dock .tab .halo{border-radius:12px}
  .dock .tab .badge-n{position:static;margin-left:auto}
  .dock .dock-label-full{display:inline}
  .dock .dock-label-short{display:none}
  :root[data-skin="nova"] .dock .tab.on{color:var(--ink)}
  :root[data-skin="nova"] .dock .tab.on .ico{animation:none}
  nav.dock .nv-pill{top:0;bottom:auto;left:0;right:0;width:auto;height:var(--ph,46px);border-radius:12px;
    transform:translateY(var(--py,0));transition:transform .55s var(--spring),height .55s var(--spring);
    background:linear-gradient(90deg,rgba(20,214,230,.22),rgba(20,214,230,.04));border:0;box-shadow:inset 0 0 0 1px rgba(98,241,249,.28)}
  nav.dock .nv-pill::after{left:-16px;right:auto;top:10px;bottom:10px;width:3px;height:auto;border-radius:0 3px 3px 0;
    background:linear-gradient(180deg,var(--nv-cyan-2),var(--nv-green))}
  :root[data-theme="light"] nav.dock .nv-pill{background:linear-gradient(90deg,rgba(15,194,211,.18),rgba(15,194,211,.03));box-shadow:inset 0 0 0 1px var(--accent-line)}

  main{padding:26px 0 56px}
  main > .wrap{max-width:1380px;padding:0 clamp(20px,2.6vw,40px)}
  .notipanel{top:auto;bottom:24px;left:calc(var(--side-w) + 12px);right:auto}
  #toast{left:calc(var(--side-w) + 16px)}
}
/* el enlace a la consola: fila en la barra lateral, icono en móvil */
.side-admin{display:inline-flex;align-items:center;gap:12px;min-height:44px;padding:0 14px;border-radius:12px;font:500 14px/1 var(--ff);
  color:var(--ink-2);background:var(--warn-tint);border:1px solid var(--warn-line);text-decoration:none;transition:all .25s}
.side-admin svg{color:var(--warn-text);flex:none}
.side-admin:hover{color:var(--ink);box-shadow:0 0 22px -8px rgba(255,154,46,.7)}
.side-admin[hidden]{display:none}
@media (max-width:999px){
  .side-admin{width:38px;height:38px;min-height:0;padding:0;justify-content:center;border-radius:999px}
  .side-admin .t{display:none}
}

@media (prefers-reduced-motion:reduce){
  .nf-grad,.nf-live,.nf-ring::before,.nf-line,.nf-area,.nf-trk .u{animation:none !important}
  .nf-line{stroke-dashoffset:0}.nf-area{opacity:1}
}
.nf-hero .nf-tiles{margin-top:auto}
.nf-row3 > .card.nf-ops .tblwrap{padding:0 12px}
@media (max-width:640px){
  .nf-chips{flex-wrap:nowrap;overflow-x:auto;margin-inline:-4px;padding:2px 4px 6px;scrollbar-width:none}
  .nf-chips::-webkit-scrollbar{display:none}
  .nf-chips > *{flex:none}
  .nf-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .nf-dash .card{padding:18px}
  .nf-dash .nf-kpi{padding:14px;gap:8px}
  .nf-kpi .nf-num{font-size:20px}
  .nf-delta{font-size:10.5px}
  .nf-chart-box{height:240px}
  #scr-resumen > .head h1{font-size:26px}
}
.nf-spark-box{flex:1 1 auto;min-height:56px;position:relative;margin:4px -4px 0}
.nf-spark{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.nf-spark .l{fill:none;stroke-width:2;stroke:var(--nv-cyan-2);filter:drop-shadow(0 0 5px rgba(20,214,230,.6))}
.nf-spark .a{fill:color-mix(in srgb,var(--nv-cyan) 14%,transparent)}
.nf-spark.dn .l{stroke:var(--nv-orange);filter:drop-shadow(0 0 5px rgba(255,154,46,.6))}
.nf-spark.dn .a{fill:color-mix(in srgb,var(--nv-orange) 12%,transparent)}
:root[data-theme="light"] .nf-spark .l{filter:none}
/* entradas escalonadas como NOVAFUNDING (blur + subida) */
@keyframes nfReveal{from{opacity:0;transform:translateY(18px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
.screen.on > .head,.nf-dash > *,.screen.on > .card{animation:nfReveal .9s var(--ease-out) both}
.nf-dash > .nf-kpis{animation-delay:.06s}
.nf-dash > .nf-row:nth-of-type(1){animation-delay:.15s}.nf-dash > .nf-row:nth-of-type(2){animation-delay:.25s}.nf-dash > .nf-row:nth-of-type(3){animation-delay:.35s}
@media (prefers-reduced-motion:reduce){.screen.on > .head,.nf-dash > *,.screen.on > .card{animation:none}}

/* ===== candado de la consola: la tarjeta de acceso de NOVAFUNDING ===== */
#lockLogin{background:radial-gradient(ellipse 70% 60% at 50% 46%,rgba(10,120,140,.32),transparent 70%),radial-gradient(ellipse 50% 50% at 90% 100%,rgba(255,108,18,.10),transparent 70%),#060a15}
.nfl-market{position:absolute;inset:0;z-index:0;pointer-events:none}
.nfl-market canvas{width:100% !important;height:100% !important;display:block}
#lockLogin .box.nfl-card{position:relative;z-index:1;max-width:448px;border-radius:26px;padding:30px clamp(22px,3vw,34px) 26px;
  background:linear-gradient(180deg,rgba(18,28,48,.74),rgba(7,11,22,.84));border:1px solid rgba(160,205,245,.12);
  box-shadow:0 50px 100px -40px rgba(0,0,0,.95),inset 0 1px 0 rgba(255,255,255,.06);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%)}
.nfl-corner{position:absolute;width:18px;height:18px;border:0 solid #62f1f9;opacity:.85;pointer-events:none}
.nfl-corner.tl{top:-7px;left:-7px;border-top-width:2px;border-left-width:2px;border-top-left-radius:6px}
.nfl-corner.tr{top:-7px;right:-7px;border-top-width:2px;border-right-width:2px;border-top-right-radius:6px}
.nfl-corner.bl{bottom:-7px;left:-7px;border-bottom-width:2px;border-left-width:2px;border-bottom-left-radius:6px;border-color:#ff9a2e}
.nfl-corner.br{bottom:-7px;right:-7px;border-bottom-width:2px;border-right-width:2px;border-bottom-right-radius:6px;border-color:#ff9a2e}
.nfl-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px;font:500 10.5px/1 var(--mono);letter-spacing:.16em}
.nfl-eyebrow{color:#62f1f9;letter-spacing:.2em}
.nfl-secure{display:inline-flex;align-items:center;gap:7px;color:#8e9eb2}
.nfl-secure i{width:6px;height:6px;border-radius:50%;background:#00f5a0;box-shadow:0 0 10px #00f5a0}
#lockLogin .nv-hud{display:none}
#lockLogin .box.nfl-card input{min-height:54px;border-radius:15px;background:rgba(4,8,18,.72);border:1px solid rgba(160,205,245,.16)}
#lockLogin .box.nfl-card input:focus{border-color:rgba(20,214,230,.85);box-shadow:0 0 0 4px rgba(20,214,230,.12),0 0 30px -8px rgba(20,214,230,.5)}
#lockLogin .box.nfl-card .btn.primary{min-height:54px;border-radius:999px;font-weight:700}
