/* ==========================================================================
   GINNOA · Base — reset + tokens aplicados a HTML
   --------------------------------------------------------------------------
   Orden de carga recomendado en _partials/head.html:
     1. tokens/colors.css
     2. tokens/typography.css
     3. tokens/spacing.css
     4. base.css                ← este archivo
     5. layout.css
     6. components.css
     7. utilities.css
     8. pages/<page>.css        ← solo el de la página actual
   ========================================================================== */

@import url('./tokens/colors.css');
@import url('./tokens/typography.css');
@import url('./tokens/spacing.css');

/* ==========================================================================
   1. Reset moderno (basado en Josh Comeau + Andy Bell)
   ========================================================================== */

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

* {
  margin: 0;
  padding: 0;
}

html {
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

body {
  min-height: 100dvh;
  font-family: var(--font-body);
  font-size: var(--body-size);
  line-height: var(--body-leading);
  color: var(--text-primary);
  background-color: var(--surface-page);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
  height: auto;
}

input, button, textarea, select {
  font: inherit;
  color: inherit;
}

button {
  background: none;
  border: none;
  cursor: pointer;
}

button:disabled, [aria-disabled="true"] {
  cursor: not-allowed;
}

p, h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}

ul, ol {
  list-style: none;
}

a {
  color: var(--text-link);
  text-decoration: none;
  transition: var(--transition-color);
}

a:hover {
  color: var(--text-link-hover);
}

#root, #app {
  isolation: isolate;
}

/* ==========================================================================
   2. Tipografía base — los elementos HTML usan los tokens directamente
   ========================================================================== */

h1, .h1 {
  font-family: var(--font-heading);
  font-size: var(--heading-1-clamp);
  font-weight: var(--heading-1-weight);
  line-height: var(--heading-1-leading);
  letter-spacing: var(--heading-1-tracking);
  color: var(--text-primary);
}

h2, .h2 {
  font-family: var(--font-heading);
  font-size: var(--heading-2-clamp);
  font-weight: var(--heading-2-weight);
  line-height: var(--heading-2-leading);
  letter-spacing: var(--heading-2-tracking);
  color: var(--text-primary);
}

h3, .h3 {
  font-family: var(--font-heading);
  font-size: var(--heading-3-clamp);
  font-weight: var(--heading-3-weight);
  line-height: var(--heading-3-leading);
  color: var(--text-primary);
}

h4, .h4 {
  font-family: var(--font-heading);
  font-size: var(--heading-4-size);
  font-weight: var(--heading-4-weight);
  line-height: var(--heading-4-leading);
  color: var(--text-primary);
}

h5, .h5 {
  font-family: var(--font-heading);
  font-size: var(--heading-5-size);
  font-weight: var(--heading-5-weight);
  line-height: var(--heading-5-leading);
  color: var(--text-primary);
}

h6, .h6 {
  font-family: var(--font-heading);
  font-size: var(--heading-6-size);
  font-weight: var(--heading-6-weight);
  line-height: var(--heading-6-leading);
  color: var(--text-primary);
}

.display {
  font-family: var(--font-heading);
  font-size: var(--display-clamp);
  font-weight: var(--heading-display-weight);
  line-height: var(--heading-display-leading);
  letter-spacing: var(--heading-display-tracking);
}

.lead {
  font-size: var(--body-lg-size);
  line-height: var(--body-lg-leading);
  color: var(--text-secondary);
}

.eyebrow {
  font-size: var(--eyebrow-size);
  font-weight: var(--eyebrow-weight);
  letter-spacing: var(--eyebrow-tracking);
  text-transform: uppercase;
  color: var(--text-accent);
}

small, .small {
  font-size: var(--body-sm-size);
  line-height: var(--body-sm-leading);
  color: var(--text-secondary);
}

code, kbd, samp, pre {
  font-family: var(--font-mono);
  font-size: 0.9em;
}

/* ==========================================================================
   3. Selección y foco — usan el brand
   ========================================================================== */

::selection {
  background-color: var(--color-amber-200);
  color: var(--color-neutral-900);
}

:focus-visible {
  outline: 2px solid var(--brand-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* ==========================================================================
   4. Scrollbar (opcional, sutil)
   ========================================================================== */

* {
  scrollbar-width: thin;
  scrollbar-color: var(--color-neutral-300) transparent;
}

*::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
*::-webkit-scrollbar-track {
  background: transparent;
}
*::-webkit-scrollbar-thumb {
  background: var(--color-neutral-300);
  border-radius: var(--radius-full);
  border: 2px solid var(--surface-page);
}
*::-webkit-scrollbar-thumb:hover {
  background: var(--color-neutral-400);
}

/* ==========================================================================
   5. Accesibilidad — skip link y screen reader only
   ========================================================================== */

.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-link {
  position: absolute;
  top: -100px;
  left: var(--space-4);
  background: var(--brand-primary);
  color: var(--text-on-brand);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-md);
  z-index: var(--z-max);
  transition: top var(--duration-fast) var(--ease-default);
}
.skip-link:focus {
  top: var(--space-4);
}
