/* =========================================================
   Groundless — newsletter-form.css
   Aesthetic: "Laboratory instrument · editorial datasheet"
   - Numeración prominente (anchor visual de instrumento)
   - Líneas técnicas como elementos estructurales
   - Tipografía con tracking apretado, jerarquía fuerte
   - Hereda gl-btn / gl-input del sistema base (no compite)
   ========================================================= */

/* =========================================================
   1) TOKENS LOCALES — derivados del sistema global
   ========================================================= */
:root {
  --nl-mono: var(--gl-font-mono, ui-monospace, "SF Mono", "Cascadia Code", monospace);
  --nl-rule: color-mix(in oklab, var(--gl-accent) 22%, transparent);
  --nl-rule-soft: color-mix(in oklab, var(--gl-accent) 12%, transparent);
  --nl-anchor-bg: color-mix(in oklab, var(--gl-accent) 14%, transparent);
  --nl-anchor-fg: color-mix(in oklab, var(--gl-accent) 92%, var(--gl-fg));
  --nl-surface: color-mix(in oklab, var(--gl-ink, #0a2201) 70%, transparent);
  --nl-grid-line: color-mix(in oklab, var(--gl-accent) 7%, transparent);
}

/* =========================================================
   2) LANDING /newsletter — hero editorial
   ========================================================= */
.gl-newsletter-hero {
  position: relative;
  max-width: 920px;
  margin: 0 auto;
  padding: clamp(3.5rem, 7vw, 6rem) clamp(1rem, 4vw, 3rem) clamp(2.5rem, 4vw, 4rem);
  text-align: left;
  overflow: hidden;
}

/* Grid técnico de fondo — sutil, atmospheric, no decora por decorar */
.gl-newsletter-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, var(--nl-grid-line) 1px, transparent 1px),
    linear-gradient(to bottom, var(--nl-grid-line) 1px, transparent 1px);
  background-size: 72px 72px;
  background-position: -1px -1px;
  mask-image: radial-gradient(ellipse at 50% 35%, #000 0%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at 50% 35%, #000 0%, transparent 75%);
  pointer-events: none;
  z-index: 0;
}

.gl-newsletter-hero > * {
  position: relative;
  z-index: 1;
}

/* Anchor superior — "Método Groundless" en mono con barra técnica */
.gl-newsletter-hero__k {
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  font-family: var(--nl-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  margin-bottom: clamp(1.6rem, 3vw, 2.4rem);
  opacity: 0.9;
}

.gl-newsletter-hero__k::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nl-rule);
  display: inline-block;
}

/* H1 — editorial size, tracking apretado */
.gl-newsletter-hero h1 {
  font-family: var(--gl-font);
  font-size: clamp(2.2rem, 5.4vw, 3.6rem);
  line-height: 1.02;
  letter-spacing: -0.025em;
  font-weight: 600;
  margin: 0 0 clamp(1.2rem, 2vw, 1.6rem) 0;
  color: var(--gl-fg);
  max-width: 16ch;
}

.gl-newsletter-hero h1 br {
  display: inline;
}

/* Lead — sand text con weight refinado */
.gl-newsletter-hero p.lead {
  font-size: clamp(1.05rem, 1.6vw, 1.18rem);
  line-height: 1.5;
  color: var(--gl-fg-dim);
  max-width: 44ch;
  margin: 0 0 clamp(2rem, 3vw, 2.8rem) 0;
  font-weight: 400;
}

/* Form en hero — alineado a la izquierda, ancho contenido y proporcionado */
.gl-newsletter-hero .gl-nl-form--landing {
  max-width: 440px;
  margin: 0;
}

/* Nota bajo el form en el hero */
.gl-newsletter-hero__note {
  font-family: var(--nl-mono);
  font-size: 0.74rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--gl-fg-soft);
  margin: 1rem 0 0 0;
  max-width: 44ch;
  line-height: 1.5;
}

/* =========================================================
   2.5) MUESTRA DEL EMAIL 1 — autoridad por ejecución
   ========================================================= */
.gl-newsletter-sample {
  position: relative;
  max-width: 820px;
  margin: 0 auto;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1rem, 4vw, 3rem) clamp(1.5rem, 3vw, 2.5rem);
}

.gl-newsletter-sample__k {
  font-family: var(--nl-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  opacity: 0.88;
  margin: 0 0 1.2rem 0;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}

.gl-newsletter-sample__k::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nl-rule);
}

.gl-newsletter-sample__h {
  font-family: var(--gl-font);
  font-size: clamp(1.4rem, 2.4vw, 1.8rem);
  line-height: 1.18;
  letter-spacing: -0.018em;
  font-weight: 600;
  color: var(--gl-fg);
  margin: 0 0 clamp(1.4rem, 2.5vw, 2rem) 0;
}

.gl-newsletter-sample__quote {
  margin: 0;
  padding: clamp(1.4rem, 2.4vw, 1.8rem) clamp(1.4rem, 3vw, 2.2rem);
  background:
    radial-gradient(120% 100% at 0% 0%, var(--nl-anchor-bg), transparent 60%),
    var(--nl-surface);
  border: 1px solid var(--gl-border-1);
  border-left: 3px solid var(--gl-accent);
  border-radius: var(--gl-r-1, 14px);
  font-family: var(--gl-font);
  font-size: clamp(1rem, 1.55vw, 1.1rem);
  line-height: 1.7;
  color: var(--gl-fg);
}

.gl-newsletter-sample__quote p {
  margin: 0 0 1em 0;
}

.gl-newsletter-sample__quote p:last-child {
  margin-bottom: 0;
}

.gl-newsletter-sample__foot {
  font-family: var(--nl-mono);
  font-size: 0.74rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--gl-fg-soft);
  margin: 1.4rem 0 0 0;
}

/* =========================================================
   2.6) LAS SIETE PIEZAS — índice, no bullets
   ========================================================= */
.gl-newsletter-pieces {
  position: relative;
  max-width: 920px;
  margin: 0 auto;
  padding: clamp(2.5rem, 5vw, 4rem) clamp(1rem, 4vw, 3rem);
}

.gl-newsletter-pieces__k {
  font-family: var(--nl-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  opacity: 0.85;
  margin: 0 0 clamp(1.8rem, 3vw, 2.4rem) 0;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}

.gl-newsletter-pieces__k::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nl-rule);
}

.gl-newsletter-pieces__list {
  list-style: none;
  padding: 0;
  margin: 0;
  counter-reset: nl-piece -1;
}

.gl-newsletter-pieces__list li {
  counter-increment: nl-piece;
  position: relative;
  padding: clamp(1.1rem, 2vw, 1.5rem) 0 clamp(1.1rem, 2vw, 1.5rem) clamp(3rem, 5vw, 4rem);
  border-top: 1px solid var(--nl-rule-soft);
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  transition: padding-left var(--gl-t-fast, 0.18s ease);
}

.gl-newsletter-pieces__list li:last-child {
  border-bottom: 1px solid var(--nl-rule-soft);
}

.gl-newsletter-pieces__list li::before {
  content: counter(nl-piece, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: clamp(1.1rem, 2vw, 1.5rem);
  font-family: var(--nl-mono);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--gl-accent);
  opacity: 0.8;
}

.gl-newsletter-pieces__h {
  font-family: var(--gl-font);
  font-size: clamp(1.02rem, 1.6vw, 1.18rem);
  font-weight: 600;
  line-height: 1.3;
  color: var(--gl-fg);
}

.gl-newsletter-pieces__sub {
  font-size: clamp(0.92rem, 1.35vw, 1rem);
  line-height: 1.5;
  color: var(--gl-fg-dim);
}

/* =========================================================
   2.7) CLOSER — autoridad + segundo form de captura
   ========================================================= */
.gl-newsletter-closer {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
  padding: clamp(3rem, 5vw, 4.5rem) clamp(1rem, 4vw, 3rem) clamp(4rem, 7vw, 6rem);
  text-align: left;
}

.gl-newsletter-closer::before {
  content: "";
  display: block;
  width: 100%;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--nl-rule), transparent);
  margin-bottom: clamp(2.5rem, 4vw, 3.5rem);
}

.gl-newsletter-closer__authority {
  font-family: var(--gl-font);
  font-size: clamp(1.05rem, 1.7vw, 1.22rem);
  line-height: 1.5;
  color: var(--gl-fg);
  font-weight: 500;
  margin: 0 0 clamp(1.8rem, 3vw, 2.4rem) 0;
  max-width: 50ch;
}

.gl-newsletter-closer .gl-nl-form--landing {
  max-width: 460px;
  margin: 0;
}

/* Utility: ocultar visualmente manteniendo accesibilidad (no existe global) */
.gl-nl-form .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;
}

/* =========================================================
   3a) "PARA QUIÉN ES ESTO" — callout antes de outcomes
   ========================================================= */
.gl-newsletter-callout {
  position: relative;
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(2rem, 4vw, 3rem) clamp(1rem, 4vw, 3rem) clamp(1rem, 2vw, 1.5rem);
}

.gl-newsletter-callout__k {
  font-family: var(--nl-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  opacity: 0.88;
  margin: 0 0 1rem 0;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}

.gl-newsletter-callout__k::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nl-rule);
}

.gl-newsletter-callout__body {
  font-size: clamp(1.05rem, 1.6vw, 1.2rem);
  line-height: 1.55;
  color: var(--gl-fg);
  margin: 0;
  max-width: 58ch;
  font-weight: 400;
}

/* =========================================================
   3b) "QUÉ TE LLEVÁS" — datasheet de outcomes con grid
   ========================================================= */
.gl-newsletter-value {
  position: relative;
  max-width: 1080px;
  margin: 0 auto;
  padding: clamp(2rem, 4vw, 3.5rem) clamp(1rem, 4vw, 3rem) clamp(4rem, 7vw, 6rem);
}

.gl-newsletter-value::before {
  content: "";
  display: block;
  width: 100%;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--nl-rule), transparent);
  margin-bottom: clamp(2.5rem, 4vw, 3.5rem);
}

.gl-newsletter-value h2 {
  font-family: var(--nl-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  margin: 0 0 clamp(2rem, 3vw, 2.8rem) 0;
  opacity: 0.85;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
}

.gl-newsletter-value h2::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--nl-rule);
}

.gl-newsletter-value ul {
  list-style: none;
  padding: 0;
  margin: 0 0 clamp(2rem, 3vw, 2.8rem) 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: 0;
  counter-reset: nl-item;
}

.gl-newsletter-value li {
  counter-increment: nl-item;
  position: relative;
  padding: clamp(1.4rem, 2.5vw, 1.8rem) clamp(1.2rem, 2vw, 1.6rem) clamp(1.4rem, 2.5vw, 1.8rem) 0;
  font-size: clamp(0.98rem, 1.4vw, 1.05rem);
  line-height: 1.55;
  color: var(--gl-fg-dim);
  border-top: 1px solid var(--nl-rule-soft);
  transition: color var(--gl-t-fast, 0.18s ease);
}

.gl-newsletter-value li::before {
  content: counter(nl-item, decimal-leading-zero);
  display: block;
  font-family: var(--nl-mono);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--gl-accent);
  margin-bottom: 0.85rem;
  opacity: 0.78;
  transition: opacity var(--gl-t-fast, 0.18s ease), transform var(--gl-t-fast, 0.18s ease);
}

.gl-newsletter-value li:hover {
  color: var(--gl-fg);
}

.gl-newsletter-value li:hover::before {
  opacity: 1;
  transform: translateX(2px);
}

.gl-newsletter-value__close {
  font-family: var(--nl-mono);
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gl-fg-soft);
  margin: clamp(2rem, 3vw, 2.6rem) 0 0 0;
  padding-top: clamp(2rem, 3vw, 2.6rem);
  border-top: 1px solid var(--nl-rule-soft);
  text-align: center;
}

/* =========================================================
   3c) HOME — sección de captura, contenedor calmo
   Padding reducido — el peso visual vive en el panel de
   instrumento (sección 9), no en el wrap exterior.
   ========================================================= */
.gl-home-newsletter {
  position: relative;
  padding: clamp(3.5rem, 6vw, 5.5rem) 0;
  border-top: 1px solid var(--nl-rule-soft);
  border-bottom: 1px solid var(--nl-rule-soft);
  background:
    radial-gradient(50% 70% at 50% 0%, color-mix(in oklab, var(--gl-accent) 7%, transparent), transparent 70%),
    color-mix(in oklab, var(--gl-ink, #0a2201) 26%, transparent);
}

.gl-home-newsletter > .container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 clamp(1rem, 4vw, 3rem);
}

.gl-home-newsletter .gl-nl-banner-wrap {
  margin: 0;
}

/* =========================================================
   4) BANNER INLINE en /biblioteca/* — grid asimétrico
   ========================================================= */
.gl-nl-banner-wrap {
  margin: clamp(1.5rem, 3vw, 2.5rem) 0 clamp(2rem, 4vw, 3rem) 0;
}

.gl-nl-form--banner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  padding: clamp(2rem, 3.5vw, 3rem) clamp(1.8rem, 3.5vw, 3rem);
  background:
    radial-gradient(120% 100% at 0% 50%, var(--nl-anchor-bg), transparent 55%),
    var(--nl-surface);
  border: 1px solid var(--gl-border-1);
  border-radius: var(--gl-r-2, 18px);
  overflow: hidden;
  transition: border-color var(--gl-t-fast, 0.18s ease), box-shadow var(--gl-t-fast, 0.18s ease);
}

/* Cuando el banner no trae visual lateral (biblioteca_top), colapsa a 1 columna */
.gl-nl-form--banner:not(:has(.gl-nl-form__visual)) {
  grid-template-columns: 1fr;
}

/* Variantes por hook — peso visual diferenciado */
.gl-nl-form--hook-home_bottom,
.gl-nl-form--hook-home_top {
  padding: clamp(2.4rem, 4vw, 3.6rem) clamp(2rem, 4vw, 3.4rem);
}

.gl-nl-form--hook-home_bottom .gl-nl-form__h,
.gl-nl-form--hook-home_top .gl-nl-form__h {
  font-size: clamp(1.5rem, 2.8vw, 2.1rem);
  line-height: 1.12;
}

.gl-nl-form--hook-biblioteca_top {
  padding: clamp(1.2rem, 2vw, 1.6rem) clamp(1.4rem, 2.5vw, 2rem);
}

.gl-nl-form--hook-biblioteca_top .gl-nl-form__h {
  font-size: clamp(1.05rem, 1.8vw, 1.25rem);
}

.gl-nl-form--hook-biblioteca_end {
  padding: clamp(2rem, 3.5vw, 2.8rem) clamp(1.8rem, 3vw, 2.4rem);
  margin-top: clamp(3rem, 5vw, 4rem);
}

.gl-nl-form--hook-biblioteca_end .gl-nl-form__h {
  font-size: clamp(1.3rem, 2.3vw, 1.6rem);
}

/* Visual lateral del banner */
.gl-nl-form__visual {
  margin: 0;
  padding: 0;
  min-width: 0;
}

.gl-nl-form__visual img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--gl-r-1, 14px);
  border: 1px solid var(--nl-rule-soft);
  opacity: 0.96;
}

/* Línea técnica izquierda — ancla visual del módulo */
.gl-nl-form--banner::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1rem;
  bottom: 1rem;
  width: 3px;
  background: linear-gradient(
    to bottom,
    transparent,
    var(--gl-accent) 20%,
    var(--gl-accent) 80%,
    transparent
  );
  opacity: 0.85;
}

.gl-nl-form--banner:hover {
  border-color: var(--gl-border-2);
}

/* Copy column del banner — contiene kicker, h, sub, row y msg */
.gl-nl-form--banner .gl-nl-form__copy {
  display: flex;
  flex-direction: column;
  gap: 0.8rem;
  min-width: 0;
}

.gl-nl-form--banner .gl-nl-form__copy .gl-nl-form__row {
  margin-top: clamp(0.5rem, 1.5vw, 1rem);
}

/* Kicker mono — formato instrumento "M01 · MÓDULO" */
.gl-nl-form__k {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-family: var(--nl-mono);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--nl-anchor-fg);
  opacity: 0.88;
}

.gl-nl-form__k::before {
  content: "";
  display: inline-block;
  width: 18px;
  height: 1px;
  background: var(--nl-rule);
}

/* Hook H3 — peso editorial */
.gl-nl-form__h {
  font-family: var(--gl-font);
  font-size: clamp(1.18rem, 2vw, 1.42rem);
  line-height: 1.18;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--gl-fg);
  margin: 0;
}

/* Sub — sand dim */
.gl-nl-form__sub {
  font-size: 0.94rem;
  line-height: 1.5;
  color: var(--gl-fg-dim);
  margin: 0;
  max-width: 42ch;
}

/* =========================================================
   5) FORM ROW — input + button (perfectly aligned)
   ========================================================= */
.gl-nl-form__row {
  display: flex;
  gap: 0.55rem;
  flex-wrap: wrap;
  align-items: stretch;
}

.gl-nl-form__label {
  display: flex;
  flex: 1 1 220px;
  min-width: 0;
  margin: 0;
}

/* Input: hereda tokens del sistema, height fijo para alinear con button pill */
.gl-nl-form__input {
  width: 100%;
  height: 48px;
  padding: 0 1.05rem;
  font-family: var(--gl-font);
  font-size: 1rem;
  line-height: 1.2;
  color: var(--gl-fg);
  background: var(--gl-field-bg, rgba(0, 0, 0, 0.16));
  border: 1px solid var(--gl-border-2);
  border-radius: var(--gl-btn-radius, 999px);
  box-shadow: inset 0 0 0 1px var(--gl-field-inset, rgba(232, 221, 204, 0.04));
  outline: none;
  transition: border-color var(--gl-t-fast, 0.18s ease), background var(--gl-t-fast, 0.18s ease), box-shadow var(--gl-t-fast, 0.18s ease);
}

.gl-nl-form__input::placeholder {
  color: var(--gl-fg-soft);
}

.gl-nl-form__input:hover {
  border-color: color-mix(in oklab, var(--gl-accent) 24%, var(--gl-border-2));
}

.gl-nl-form__input:focus {
  border-color: color-mix(in oklab, var(--gl-accent) 38%, var(--gl-border-2));
  background: var(--gl-field-bg-focus, rgba(0, 0, 0, 0.2));
  box-shadow:
    inset 0 0 0 1px var(--gl-field-inset, rgba(232, 221, 204, 0.04)),
    0 0 0 3px color-mix(in oklab, var(--gl-accent) 18%, transparent);
}

/* Button: hereda del sistema gl-btn (pill, glow, lift on hover)
   La clase gl-btn ya provee el sistema completo via globals.css.
   Aquí solo agregamos peso visual extra y aseguramos accent. */
.gl-nl-form__btn {
  /* Activamos el sistema gl-btn declarativamente:
     el button con data-track="cta" ya hereda el sistema gl-btn según globals.css. */
  height: 48px;
  min-height: 48px;
  padding: 0 1.5rem;
  font-family: var(--gl-font);
  font-size: 0.98rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  background: var(--gl-accent);
  color: color-mix(in oklab, #000 92%, transparent);
  border-color: color-mix(in oklab, var(--gl-accent) 28%, transparent);
  white-space: nowrap;
  cursor: pointer;
  flex: 0 0 auto;
}

.gl-nl-form__btn:disabled {
  opacity: 0.55;
  cursor: progress;
  transform: none !important;
}

/* =========================================================
   6) MENSAJES — feedback post-submit
   ========================================================= */
.gl-nl-form__msg {
  font-size: 0.94rem;
  line-height: 1.55;
  min-height: 1.2em;
  color: var(--gl-fg-dim);
  font-family: var(--gl-font);
}

.gl-nl-form__msg--ok {
  color: var(--gl-fg);
  padding: 1rem 1.1rem;
  background: color-mix(in oklab, var(--gl-accent) 10%, transparent);
  border: 1px solid color-mix(in oklab, var(--gl-accent) 22%, transparent);
  border-radius: var(--gl-r-1, 14px);
  margin-top: 0.4rem;
}

.gl-nl-form__msg--ok strong {
  color: var(--nl-anchor-fg);
  font-weight: 600;
}

.gl-nl-form__msg--err {
  color: color-mix(in oklab, #d18a8a 86%, var(--gl-fg));
  padding-top: 0.4rem;
}

/* =========================================================
   7) STAGGERED FADE-IN ON LOAD (only on hero/banner mount)
   ========================================================= */
@keyframes nl-fade-up {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.gl-newsletter-hero > .gl-newsletter-hero__k,
.gl-newsletter-hero > h1,
.gl-newsletter-hero > p.lead,
.gl-newsletter-hero > [data-gl-newsletter-form] {
  animation: nl-fade-up 0.6s ease-out backwards;
}

.gl-newsletter-hero > .gl-newsletter-hero__k { animation-delay: 0.05s; }
.gl-newsletter-hero > h1                     { animation-delay: 0.15s; }
.gl-newsletter-hero > p.lead                 { animation-delay: 0.28s; }
.gl-newsletter-hero > [data-gl-newsletter-form] { animation-delay: 0.42s; }

.gl-nl-form--banner {
  animation: nl-fade-up 0.5s ease-out 0.1s backwards;
}

@media (prefers-reduced-motion: reduce) {
  .gl-newsletter-hero > *,
  .gl-nl-form--banner {
    animation: none;
  }
}

/* =========================================================
   9) HOME_BOTTOM — captura sobria, coherente con el sitio
   Una sola columna editorial: kicker + headline + sub + form
   + signature de doctrina al pie. Sin imagen, sin strips,
   sin brackets, sin decoración fuera de línea.
   Hereda el tratamiento base del .gl-nl-form--banner pero
   con respiración + jerarquía aumentada para el hero del
   home.
   ========================================================= */

/* Esconder la imagen del visual en home_bottom (no aporta
   y le roba protagonismo al copy). El <figure> sigue en el
   DOM pero no ocupa espacio. */
.gl-nl-form--hook-home_bottom .gl-nl-form__visual {
  display: none;
}

/* Forzar columna única — el :has(.gl-nl-form__visual) no
   alcanza porque el visual existe en DOM aunque esté hidden. */
.gl-nl-form--hook-home_bottom {
  grid-template-columns: 1fr !important;
  padding:
    clamp(2.6rem, 4.5vw, 3.6rem)
    clamp(1.8rem, 3.6vw, 3rem);
  max-width: 880px;
  margin: 0 auto;
}

/* Copy column — jerarquía clara, respiración generosa */
.gl-nl-form--hook-home_bottom .gl-nl-form__copy {
  gap: 1rem;
}

/* Kicker — tono coherente con el resto del sitio */
.gl-nl-form--hook-home_bottom .gl-nl-form__k {
  font-size: 0.68rem;
  letter-spacing: 0.24em;
  font-weight: 600;
  color: color-mix(in oklab, var(--gl-accent) 88%, var(--gl-fg));
  opacity: 1;
  margin-bottom: 0.15rem;
  gap: 0.65rem;
}

.gl-nl-form--hook-home_bottom .gl-nl-form__k::before {
  width: 24px;
  height: 1px;
  background: var(--gl-accent);
  opacity: 0.78;
}

/* Headline — peso editorial fuerte, igual que en otras secciones del sitio */
.gl-nl-form--hook-home_bottom .gl-nl-form__h {
  font-size: clamp(1.65rem, 3vw, 2.4rem);
  line-height: 1.08;
  letter-spacing: -0.022em;
  font-weight: 600;
  max-width: 22ch;
  color: var(--gl-fg);
}

/* Sub más justo, sin ruido */
.gl-nl-form--hook-home_bottom .gl-nl-form__sub {
  font-size: clamp(1rem, 1.5vw, 1.1rem);
  line-height: 1.55;
  max-width: 52ch;
  color: var(--gl-fg-dim);
  margin-top: 0.1rem;
  font-weight: 400;
}

/* Form row — pill estándar del sistema (coherente con otros CTAs del sitio) */
.gl-nl-form--hook-home_bottom .gl-nl-form__row {
  margin-top: 1.1rem;
  max-width: 480px;
}

.gl-nl-form--hook-home_bottom .gl-nl-form__btn {
  /* CTA principal — usa pill del sistema, sin overrides de mono/uppercase */
  letter-spacing: 0.02em;
  font-weight: 600;
}

/* Signature de doctrina al pie — "señal → decisión → verificación".
   Reemplaza cualquier strip decorativo. Discreto pero presente. */
.gl-nl-form--hook-home_bottom .gl-nl-form__copy::after {
  content: "señal → decisión → verificación";
  display: block;
  margin-top: 1.6rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--nl-rule-soft);
  font-family: var(--nl-mono);
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gl-fg-soft);
  pointer-events: none;
}

/* Hover del panel — sutil, coherente con el sitio (no "instrumento que se enciende") */
.gl-nl-form--hook-home_bottom:hover {
  border-color: color-mix(in oklab, var(--gl-accent) 26%, var(--gl-border-2));
}

/* =========================================================
   9.1) Responsive — preservar respiración en mobile
   ========================================================= */
@media (max-width: 640px) {
  .gl-nl-form--hook-home_bottom {
    padding:
      clamp(2rem, 6vw, 2.6rem)
      clamp(1.4rem, 5vw, 1.8rem);
  }

  .gl-nl-form--hook-home_bottom .gl-nl-form__h {
    max-width: none;
  }

  .gl-nl-form--hook-home_bottom .gl-nl-form__copy::after {
    margin-top: 1.3rem;
    padding-top: 1.1rem;
    font-size: 0.6rem;
    letter-spacing: 0.18em;
  }
}

/* =========================================================
   8) RESPONSIVE
   ========================================================= */
@media (max-width: 860px) {
  .gl-nl-form--banner {
    grid-template-columns: 1fr;
    gap: 1.4rem;
  }
  .gl-nl-form__visual {
    order: 2;
    max-width: 380px;
    margin: 0 auto;
  }
}

@media (max-width: 640px) {
  .gl-newsletter-hero h1 {
    max-width: none;
  }
  .gl-nl-form__row {
    flex-direction: column;
  }
  .gl-nl-form__label {
    flex: 1 1 auto;
  }
  .gl-nl-form__btn {
    width: 100%;
  }
  .gl-newsletter-value ul {
    grid-template-columns: 1fr;
  }
  .gl-newsletter-value li {
    border-top: 1px solid var(--nl-rule-soft);
    padding-right: 0;
  }
  .gl-newsletter-value li:first-child {
    border-top: 1px solid var(--nl-rule-soft);
  }
  .gl-newsletter-pieces__list li {
    padding-left: clamp(2.4rem, 8vw, 3.2rem);
  }
}
