/* ══════════════════════════════════════════════════════════════
   APEX DASHBOARD V3 · BASE
   Reset acotado, tipografía y primitivas de texto.
   ══════════════════════════════════════════════════════════════ */

*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}

html{-webkit-text-size-adjust:100%;height:100%}
body{
  height:100%;
  font-family:var(--font);
  font-size:var(--fs-body);
  line-height:var(--lh);
  color:var(--ink);
  background:var(--shell-bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow:hidden;              /* el scroll vive dentro del panel */
}

img,svg,video{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:none;cursor:pointer;color:inherit}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}

:focus-visible{
  outline:2px solid var(--apex-accent);
  outline-offset:2px;
  border-radius:var(--r-xs);
}
:focus:not(:focus-visible){outline:none}

::selection{background:var(--apex-accent-soft);color:var(--ink)}

/* scrollbars discretas */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}
::-webkit-scrollbar-track{background:transparent}

/* ── primitivas tipográficas ─────────────────────────────────── */
.t-display{
  font-size:var(--fs-display);font-weight:var(--fw-semi);
  letter-spacing:var(--ls-display);line-height:var(--lh-tight);
}
.t-h1{font-size:var(--fs-h1);font-weight:var(--fw-semi);letter-spacing:-.026em;line-height:1.2}
.t-h2{font-size:var(--fs-h2);font-weight:var(--fw-semi);letter-spacing:-.018em;line-height:1.3}
.t-body{font-size:var(--fs-body)}
.t-sm{font-size:var(--fs-sm)}
.t-xs{font-size:var(--fs-xs)}
.t-label{
  font-size:var(--fs-2xs);font-weight:var(--fw-semi);
  letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--ink-3);
}
.t-muted{color:var(--ink-2)}
.t-dim{color:var(--ink-3)}

/* números: siempre tabulares, para que no bailen al actualizarse */
.num{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
  letter-spacing:var(--ls-num);
}
.mono{font-family:var(--font-num);font-size:.92em}

.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

.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;
}

/* ── accesibilidad de movimiento ─────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
}

/* Sello de versión de esta hoja. Sin efecto visual: lo lee el panel
   de diagnóstico para saber si el navegador está ejecutando esta
   versión o una cacheada. Ver la nota en tokens.css. */
:root{ --build-base: cierre-2; }
