/* Portal Vifer v3 · base: reset, tipografia y utilidades. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; color-scheme: var(--scheme, light); }
body { margin: 0; min-height: 100vh; background: var(--bg); color: var(--fg); font-family: var(--font-body); font-size: 15px; line-height: 1.55; -webkit-font-smoothing: antialiased; overflow-x: clip; }
img, svg { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
a { color: var(--cyan); text-decoration: none; }
a:hover { color: var(--cyan-bright); }
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; border-radius: 4px; }
h1, h2, h3, h4 { margin: 0; font-weight: 600; line-height: 1.15; letter-spacing: -0.005em; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }
.display { font-family: var(--font-display); font-weight: 400; letter-spacing: 0.01em; line-height: 0.95; text-transform: uppercase; }
.mono { font-family: var(--font-mono); }
.eyebrow { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--cyan); }
.muted { color: var(--fg-muted); }
.dim { color: var(--fg-dim); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 1000; padding: 10px 14px; border-radius: var(--r-md); background: var(--cyan); color: var(--fg-on-cyan); font-weight: 600; }
.skip:focus { top: 12px; }
.noscript { max-width: 520px; margin: 20vh auto; padding: 0 24px; text-align: center; color: var(--fg-muted); }
.boot { display: grid; place-items: center; gap: 16px; min-height: 100vh; align-content: center; color: var(--fg-muted); font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; }
.boot img { animation: boot-pulse 1.4s ease-in-out infinite; }
@keyframes boot-pulse { 50% { opacity: 0.4; transform: scale(0.94); } }
.hue { --hue: var(--cyan); }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
}

[hidden] { display: none !important; }

/* Claro ejecutivo: fondo suave con un velo de marca arriba; cifras siempre tabulares */
body { background: radial-gradient(1200px 520px at 15% -12%, var(--glow-top), transparent 70%), var(--bg); font-feature-settings: "tnum"; }
.mono { letter-spacing: 0 !important; }

/* Lo de terminal fuera: la cinta de cotizaciones no se ensena; tarjetas blancas con sombra suave */
.ticker { display: none !important; }
.side { border-right: 1px solid var(--border-subtle); }
@media (min-width: 900px) { .side { top: var(--top-h) !important; height: calc(100vh - var(--top-h)) !important; } } /* sin la cinta, el menu sube */
.top { backdrop-filter: blur(12px); box-shadow: 0 1px 0 var(--border-subtle); }
.ai-fab { color: var(--fg-on-cyan); border-color: transparent; }
