@view-transition { navigation: auto; }
*,
*::before,
*::after { box-sizing: border-box; }
html { scroll-padding-top: 104px; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; scrollbar-width: none; -ms-overflow-style: none; }
html::-webkit-scrollbar,
body::-webkit-scrollbar { width: 0; height: 0; display: none; }
body {
  margin: 0; background: var(--page); color: var(--text); font-family: var(--font); font-size: 15px; line-height: 1.6;
  text-wrap: pretty; -webkit-font-smoothing: antialiased; position: relative; overflow-x: hidden;
}
h1,
h2,
h3,
h4 { color: var(--strong); font-weight: 700; letter-spacing: -.035em; text-wrap: balance; margin: 0; }
p { margin: 0; }
a { color: var(--accent); text-underline-offset: 4px; }
button,
input,
textarea,
select { font: inherit; color: inherit; }
button { cursor: pointer; }
img,
svg { max-width: 100%; }
.wrap { max-width: 1240px; margin-inline: auto; padding-inline: 24px; }
.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; }
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--sky); outline-offset: 3px; border-radius: 6px; }
.skip-link { position: fixed; left: 16px; top: -100px; z-index: 200; background: var(--btn-bg); color: var(--btn-ink); padding: 10px 16px; border-radius: 12px; font-weight: 700; text-decoration: none; }
.skip-link:focus { top: 10px; }
.mono { font-family: var(--mono); }
.fa-fw { width: 1.25em; text-align: center; }

/* Atmósfera: resplandores muy suaves y polvo estelar. Todo decorativo. */
body::before {
  content: ""; position: fixed; inset: -12%; z-index: -2; pointer-events: none; --neb: inherit; opacity: calc(.58 + var(--neb, 0) * .42); transition: opacity .6s var(--ease);
  background:
    radial-gradient(60% 50% at 82% -8%, rgba(56, 182, 240, .17), transparent 70%),
    radial-gradient(48% 42% at -6% 38%, rgba(27, 157, 184, .13), transparent 70%),
    radial-gradient(40% 36% at 96% 78%, rgba(78, 214, 176, .09), transparent 70%),
    var(--page);
}

/* ---------- Etiquetas, chips y estados ---------- */
.eyebrow { display: inline-flex; align-items: center; gap: 10px; font: 600 11.5px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.eyebrow i { font-size: 12px; }
.muted { color: var(--muted); font-weight: 500; }
.hint { font-size: 12.5px; line-height: 1.55; color: var(--muted); margin-top: 8px; }
@media (max-width: 720px) {
  .wrap { padding-inline: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after { animation: none !important; transition: none !important; }
}
@media print {
  .skip-link { display: none !important; }
}

/* Objetivos táctiles: en pantallas táctiles o angostas todo lo que se toca mide al menos 44 × 44 px (WCAG 2.5.5 / guías de Apple y Google).
   `html …` sube la especificidad para ganarle a los tamaños propios de cada componente sin depender del orden de carga. */
@media (pointer: coarse), (max-width: 900px) {
  html :is(button, [role="button"], [role="tab"], summary, a.btn, .cn, .link-chip) { min-height: 44px; }
  html .icon-btn, html [data-pack], html .module-info { min-width: 44px; }
  html .nb-key, html .link-chip { display: inline-flex; align-items: center; }
}
