/**
 * iink-as-global.css — Blueprint: Animales Sueltos
 * Estética: Fabrica Studio — editorial suizo, Inter, lime neón
 * Cargado antes de cualquier block CSS vía functions.php
 */

/* ── 1. Design tokens — sistema completo ──────────────────────────────────── */
:root {

  /* Paleta — light base, dark sections */
  --iink-bg:            #ffffff;
  --iink-bg-dark:       #0a0a0a;
  --iink-bg-card:       #f5f5f5;
  --iink-text:          #0a0a0a;
  --iink-text-light:    #ffffff;
  --iink-text-muted:    rgba(9, 9, 9, 0.6);
  --iink-text-muted-lt: rgba(255, 255, 255, 0.5);
  --iink-accent:        #d2ff37;
  --iink-border:        rgba(0, 0, 0, 0.08);
  --iink-border-lt:     rgba(255, 255, 255, 0.08);

  /* Tipografía */
  --iink-font-heading:  'Inter', system-ui, sans-serif;
  --iink-font-body:     'Inter', system-ui, sans-serif;
  --iink-font-mono:     'Fragment Mono', 'Courier New', monospace;
  --iink-font-weight-bold: 600;

  /* Escala tipográfica */
  --iink-text-hero:     clamp(64px, 14vw, 210px);
  --iink-text-xl:       clamp(38px, 6vw, 90px);
  --iink-text-lg:       clamp(22px, 3vw, 45px);
  --iink-text-md:       17px;
  --iink-text-sm:       13px;
  --iink-text-xs:       11px;

  /* Letter-spacing — negativo agresivo, firma de Fabrica */
  --iink-ls-hero:       -0.06em;
  --iink-ls-heading:    -0.05em;
  --iink-ls-body:       -0.04em;
  --iink-ls-caps:       0.08em;

  /* Line-height */
  --iink-lh-hero:       85%;
  --iink-lh-heading:    110%;
  --iink-lh-body:       140%;

  /* Geometría */
  --iink-radius-card:   18px;
  --iink-radius-sm:     8px;
  --iink-radius:        8px;
  --iink-radius-pill:   50px;

  /* Layout */
  --iink-container-max:     1520px;
  --iink-section-padding-y: 120px;
  --iink-section-padding-x: 36px;

  /* Transiciones */
  --iink-transition: 0.2s ease;
  --iink-transition-md: 0.35s ease;

  /* Sombras */
  --iink-shadow-sm:  0 1px 3px rgba(0, 0, 0, 0.08);
  --iink-shadow-md:  0 4px 16px rgba(0, 0, 0, 0.08);
  --iink-shadow-nav: 0 1px 0 var(--iink-border);
}

/* ── 2. Reset / base ──────────────────────────────────────────────────────── */

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

html {
  -webkit-text-size-adjust: 100%;
  /* scroll-behavior gestionado por Lenis — no duplicar aquí */
}

body {
  margin: 0;
  padding: 0;
  background-color: var(--iink-bg);
  color: var(--iink-text);
  font-family: var(--iink-font-body);
  font-size: var(--iink-text-md);
  font-weight: 400;
  letter-spacing: var(--iink-ls-body);
  line-height: var(--iink-lh-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── 3. WP overrides ──────────────────────────────────────────────────────── */

.wp-site-blocks,
.entry-content,
.wp-block-post-content {
  padding: 0 !important;
  margin: 0 !important;
  max-width: none !important;
}

/* ── 4. Base elements ─────────────────────────────────────────────────────── */

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

a {
  color: inherit;
  text-decoration: none;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  font-weight: var(--iink-font-weight-bold);
  letter-spacing: var(--iink-ls-heading);
  line-height: var(--iink-lh-heading);
}

p { margin: 0; }
ul, ol { list-style: none; margin: 0; padding: 0; }
button { cursor: pointer; border: none; background: none; }

/* ── 5. Utilidades globales de animación ──────────────────────────────────── */

/*
 * Estado inicial gestionado por GSAP (gsap.set / gsap.fromTo).
 * No se oculta por CSS para que el contenido sea visible si el JS falla.
 * Ver iink-as-animations.js → initFadeUp() e initStaggerReveal().
 */
.as-fade-up,
.as-stagger {
  will-change: opacity, transform;
}

/*
 * Revelado de emergencia. iink-as-animations.js pone .iink-as-sin-animacion en
 * <html> cuando GSAP o ScrollTrigger no llegan a cargar. Sin esto, todo lo que
 * arranca oculto esperando a GSAP se queda invisible para siempre y la portada
 * aparece en blanco. Mismo conjunto de selectores que el bloque de
 * prefers-reduced-motion más abajo.
 *
 * D8: .as-line-h (separador de prensa, scaleX:0 hasta que GSAP lo dibuja)
 * faltaba en este guard heredado del WP original — con GSAP caído o
 * reduced-motion, el separador quedaba invisible para siempre. Fix aplicado
 * aquí (ya no hay WP de referencia que mantener bit a bit).
 */
.iink-as-sin-animacion .as-fade-up,
.iink-as-sin-animacion .as-stagger,
.iink-as-sin-animacion [data-as-fade-in],
.iink-as-sin-animacion .iink-as-hero__inner,
.iink-as-sin-animacion .iink-as-manifesto__linea,
.iink-as-sin-animacion .iink-as-manifesto__secundario,
.iink-as-sin-animacion .as-line-h {
  opacity: 1 !important;
  transform: none !important;
}

/* ── 6. Pill / badge compartido ───────────────────────────────────────────── */

.iink-pill {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: var(--iink-radius-pill);
  font-family: var(--iink-font-body);
  font-size: var(--iink-text-xs);
  font-weight: 500;
  letter-spacing: var(--iink-ls-body);
  line-height: 1;
  white-space: nowrap;
}

/* ── 7. Contenedor global ─────────────────────────────────────────────────── */

.iink-container {
  max-width: var(--iink-container-max);
  margin-inline: auto;
  padding-inline: clamp(20px, 4vw, var(--iink-section-padding-x));
  width: 100%;
}

/* ── 8. Movimiento reducido ───────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  /* Cancelar animaciones CSS */
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  /* Revelar elementos de animación inmediatamente */
  .as-fade-up,
  .as-stagger,
  [data-as-fade-in] {
    opacity: 1 !important;
    transform: none !important;
  }

  /*
   * Hero y manifiesto NO llevan las clases de arriba: su estado inicial oculto
   * está escrito a mano en el CSS de cada bloque (opacity:0 en
   * iink-as-hero/style.css, translateY(110%) dentro de un overflow:hidden en
   * iink-as-manifesto/style.css) esperando que GSAP los revele. Pero
   * iink-as-animations.js encierra initHeroReveal() e initManifestoReveal()
   * dentro de un if (!prefersReducedMotion), así que con esta preferencia
   * activa nadie los mostraba nunca y quedaban en blanco. Revelarlos aquí.
   */
  .iink-as-hero__inner,
  .iink-as-manifesto__linea,
  .iink-as-manifesto__secundario {
    opacity: 1 !important;
    transform: none !important;
  }

  /* Desactivar Lenis cuando está activo */
  html.lenis {
    scroll-behavior: auto !important;
  }
}

/* ── 9. Mobile — reducir padding entre secciones ─────────────────────────── */

@media (max-width: 639px) {
  :root {
    --iink-section-padding-y: 64px;
  }
}

/* ── 10. Icono laurel — máscara SVG compartida ───────────────────────────── */

.iink-laurel-mask {
  -webkit-mask-image: url('../blockstudio/blueprint-animales-sueltos/assets/iink-as-laurel.svg');
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: contain;
  mask-image: url('../blockstudio/blueprint-animales-sueltos/assets/iink-as-laurel.svg');
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}
