/* =========================================================================
   Clases Cerca — brand.css  (marca `sports` del molde B)

   Dirección de marca: "Rótulo de barrio". La fachada pintada a mano de la
   academia de la esquina: letra ancha y pesada, alto contraste, cero degradados.
   Kit completo en `docs`/handoff (BRAND.md). Tres colores y nada más: tinta,
   nopal, cempasúchil.

   ─────────────────────────────────────────────────────────────────────────
   CÓMO GANA ESTE ARCHIVO  (leer antes de añadir una regla)
   ─────────────────────────────────────────────────────────────────────────
   Astro inyecta los <link> de su CSS empaquetado al FINAL del <head>, o sea
   DESPUÉS del <link> de este archivo. Como el orden en la cascada sólo decide
   entre declaraciones de la MISMA especificidad, un `:root { --brand: … }` aquí
   perdería contra el `:root { --brand: … }` de design-system.css, que llega
   después. Por eso todo lo de aquí lleva especificidad subida a mano:

     :root:root            (0,2,0)  → gana a `:root` del design system
     :root:root .clase     (0,3,0)  → gana a `.clase[data-astro-cid-…]` de un
                                      componente, que es (0,2,0)
     5 y 7 × :root + body …(0,5,1) y (0,7,1) → ganan a los `!important` de
                                      tipografía del design system; el número
                                      sale de medir, ver el bloque TIPOGRAFÍA

   No es cosmético: quitar una repetición de `:root` desactiva la regla en
   silencio. Si algún día el <link> se mueve al final del <body>, esto sobra —
   pero seguirá siendo correcto.

   ─────────────────────────────────────────────────────────────────────────
   REGLA DE COLOR heredada del design system: TODO en sRGB (hex, rgb(),
   color-mix(in srgb, …)). Nada de oklch()/lab()/color(display-p3 …). Mezclar
   espacios hace que la página se mueva al arrastrarla entre monitores, y
   color-mix(in oklch, <casi-blanco>, white) pinta rosa en Chrome.

   REGLAS DEL KIT que este archivo hace cumplir:
   - Cempasúchil (#f0a31c) NUNCA es color de texto. Sólo fondo, con texto tinta.
   - Sin degradados, sin glow, sin sombras de color: la única sombra permitida
     es 0 1px 2px rgb(22 33 28 / .08).
   - Radio de esquina 3 px en todo.
   ========================================================================= */

:root:root {
  /* --- Paleta de marca --------------------------------------------------
     Nopal es el color de acción: contactar, WhatsApp, entrar. 5.4:1 sobre cal. */
  --brand: #1e6b44;
  --brand-dark: #175537;          /* hover del primario */
  --brand-soft: #c6dfd2;          /* primary-100 del kit: bordes y rellenos tenues */
  --brand-tint: #e4efe9;          /* primary-50: el lavado más claro */

  /* Cempasúchil. No existe en el design system de LPE porque LPE no tiene un
     segundo color de marca; aquí sí, y por eso el token es nuevo. Se usa como
     FONDO (badge "Verificado", botón de la banda del footer, arco interior del
     símbolo) y el texto encima siempre es tinta: 9.6:1. */
  --brand-accent: #f0a31c;
  --brand-accent-soft: #fdf0d8;
  --brand-accent-strong: #b87a0c;
  --on-accent: #16211c;

  /* --- Neutros ----------------------------------------------------------
     Gris tibio, sin una gota de azul. El "negro" es tinta. */
  --bp-black: #16211c;
  --bp-white: #ffffff;
  --bp-gray-100: #efede6;
  --bp-gray-200: #cfcbbd;
  --bp-gray-300: #b3b0a3;
  --bp-gray-400: #94978d;
  --bp-gray-600: #54605a;
  --bp-gray-800: #26312c;

  /* --- Texto ------------------------------------------------------------ */
  --text-main: #16211c;           /* tinta, 15.4:1 sobre cal */
  --text-support: #3a4741;
  --text-muted: #54605a;
  --text-on-brand: #faf9f6;       /* cal sobre nopal, no blanco puro */

  /* --- Superficies ------------------------------------------------------
     Cal es el suelo, blanco es lo que se apoya encima. Al revés que en LPE,
     donde el lienzo es blanco puro: aquí la cal es el papel del rótulo y las
     tarjetas se levantan de él en blanco. */
  --surface-page: #faf9f6;
  --surface-paper: #ffffff;
  --surface-warm: #ffffff;
  --surface-soft: #efede6;
  /* La barra de navegación es cal, igual que el lienzo, y lo que la separa es
     el filete de 1.5 px de tinta que se pinta más abajo — no un cambio de
     fondo. Es literalmente cómo se separa un rótulo de su pared. */
  --surface-header: #faf9f6;
  --surface-dark: #16211c;        /* tinta: el footer */

  /* --- Texto sobre tinta ------------------------------------------------
     `--on-dark-accent` NO es cempasúchil aunque sea "el acento": en LPE este
     token colorea texto y enlaces del footer, y el kit prohíbe cempasúchil como
     color de texto. Va un nopal claro. El cempasúchil aparece en el footer sólo
     como relleno: el arco exterior del símbolo y el botón de la banda.

     El valor era `#3e9468`, el "primario de modo oscuro" que BRAND.md §1 anota
     como 4.9:1 sobre tinta. Ese 4.9 no sale: medido con la fórmula de WCAG
     (luminancia relativa sRGB, (L1+0.05)/(L2+0.05)) contra el ÚNICO fondo sobre
     el que este token se pinta de verdad —`--surface-dark` #16211c, el fondo del
     footer— da 4.45:1, por debajo del 4.5:1 que AA pide para texto normal, y
     el token se usa precisamente en texto normal: el enlace de correo, los
     enlaces destacados de columna y la cursiva del lockup. Fallaba por dos
     centésimas, que es la peor forma de fallar: nadie lo nota a ojo y cualquier
     auditoría lo marca.

     Ahora vale `#4fa87a`, que sobre esa misma tinta mide 5.69:1. Se sube la
     luminosidad y se deja el tono donde estaba (sigue siendo nopal, no un verde
     nuevo): el margen extra es para el objetivo real del kit §0.5 —Android
     barato bajo el sol—, no para presumir el número.

     Este token es SÓLO para sobre tinta. Sobre cal cae a 2.76:1 y no se puede
     usar; ahí el verde de texto es `--brand` (#1e6b44, 5.4:1). El caso que
     queda corto no es de este archivo: `.tools-label` del footer pinta
     `color-mix(in srgb, var(--on-dark-accent) 78%, var(--surface-dark))`, que
     con este valor resuelve a #428a65 → 3.99:1, suficiente para texto grande
     pero no para sus 0.78rem en negrita. Se arregla en el componente (subir el
     porcentaje de la mezcla), no aclarando más este token, porque aclararlo
     rompería el escalón contra `--on-dark-main`. */
  --on-dark-main: #faf9f6;
  --on-dark-accent: #4fa87a;
  --on-dark-muted: #9baaa2;

  /* --- Semánticos -------------------------------------------------------
     Éxito es el propio nopal: en este directorio "listo" y "contactar" son el
     mismo verde a propósito, porque no hay un tercer color que gastar. */
  --status-success: #1e6b44;
  --status-success-strong: #175537;
  --status-success-soft: #e4efe9;
  --status-success-bright: #3e9468;   /* para puntos y píldoras sobre tinta */

  /* Ladrillo. El paso `strong` es el mismo tono bajado en luminosidad para
     texto sobre el fondo tenue; el kit da el par principal y el fondo. */
  --status-danger: #b23a20;
  --status-danger-strong: #7d2916;
  --status-danger-soft: #f7e5e0;

  --status-info: #3a4741;
  --status-info-soft: #efede6;

  /* Advertencia = cempasúchil. No existe como token en design-system.css (LPE
     nunca lo necesitó); se declara aquí porque el kit sí lo define, y para que
     el día que el molde lo use no se invente un cuarto amarillo. */
  --status-warning: #f0a31c;
  --status-warning-soft: #fdf0d8;

  /* --- WhatsApp ---------------------------------------------------------
     En LPE este token es el verde de WhatsApp a propósito, para que el botón se
     reconozca. El kit lo prohíbe (regla 9): el botón lleva color propio —
     nopal — y la palabra "WhatsApp", sin el verde ni el logotipo ajenos. */
  --brand-whatsapp: #1e6b44;
  --brand-whatsapp-dark: #175537;

  /* --- Filetes y lavados de sección -------------------------------------
     En LPE son rgba de la terracota. Aquí son tinta: el sistema separa por
     línea, no por color. */
  --section-border: rgba(22, 33, 28, 0.16);
  --section-border-soft: rgba(22, 33, 28, 0.1);
  --section-accent-wash: rgba(30, 107, 68, 0.055);

  /* --- Radios -----------------------------------------------------------
     3 px en todo (kit §0.3). `--radius-pill` se queda en 999 px porque el propio
     theme.css del kit lo mantiene: es la forma de la píldora de rating y del
     avatar, no una esquina redondeada. */
  --radius-sm: 3px;
  --radius-button: 3px;
  --radius-md: 3px;
  --radius-pill: 999px;

  /* --- Tipografía: familias --------------------------------------------
     Los tokens no existen en design-system.css (LPE escribe las familias a mano
     en 40 reglas). Se declaran aquí para que las sobrescrituras de abajo tengan
     un único sitio donde cambiar la fuente. */
  --font-display: "Archivo", "Bricolage Grotesque", system-ui, sans-serif;
  --font-body: "Instrument Sans", system-ui, -apple-system, BlinkMacSystemFont,
    "Segoe UI", sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;

  /* --- Tipografía: escala ----------------------------------------------
     El titular del kit es bastante más pequeño que el de LPE (2 rem móvil /
     2.75 rem escritorio contra 2.2/4.35): el rótulo gana peso por ancho y por
     versales, no por tamaño. */
  --hero-display-size: clamp(2rem, 4.4vw, 2.75rem);
  --hero-display-size-mobile: clamp(1.85rem, 8.5vw, 2rem);
  --hero-tool-size: clamp(2rem, 4.2vw, 2.6rem);
  --hero-tool-size-mobile: clamp(1.8rem, 8vw, 2rem);
  --hero-util-size: clamp(2rem, 4.2vw, 2.6rem);
  --hero-util-size-mobile: clamp(1.8rem, 8vw, 2rem);
  --hero-article-size: clamp(2rem, 4.2vw, 2.6rem);
  --hero-article-size-mobile: clamp(1.8rem, 8vw, 2rem);
  --hero-line-height: 0.95;
  --hero-letter-spacing: -0.015em;

  --body-size: 1.0625rem;
  --body-line: 1.6;
  --type-body-copy: 1.0625rem;
}

@media (min-width: 768px) {
  :root:root {
    --body-size: 1.125rem;
    --type-body-copy: 1.125rem;
  }
}

/* =========================================================================
   TIPOGRAFÍA — remapeo de familias

   design-system.css escribe "Bricolage Grotesque" y "Literata" a mano en 40
   reglas, muchas con !important, y Layout.astro repite las dos familias en su
   <style is:global>. No hay un token que interceptar, así que se remapea desde
   aquí con especificidad suficiente para ganarle a todas ellas.

   Con `PUBLIC_SITE=sports` el <head> ni siquiera pide Bricolage ni Literata
   (la URL de Google Fonts sale de la ficha), así que sin estas reglas el sitio
   caería a la sans-serif del sistema. Éstas son las que ponen Archivo e
   Instrument Sans donde toca.
   ========================================================================= */

/* Cuántas veces se repite `:root` no es decoración. Medido sobre el CSS
   empaquetado del build:
     - la regla `font-family … !important` más específica del sitio es
       `.meta-info--pro[cid] .meta-subtype[cid]` → (0,4,0);
     - las de `letter-spacing`/`line-height !important` llegan a (0,5,1)
       (`.faq-section--tool[cid] .faq-header[cid] h2[cid]`).
   De ahí los cinco `:root` del cuerpo (0,5,1) y los siete del bloque de
   titulares (0,7,1). Si alguien añade una regla más específica que ésas en un
   componente, esto deja de aplicar sin avisar: el número se vuelve a medir con
   `grep` sobre `dist/client/_astro/*.css`, no se adivina. */

/* Cuerpo: todo lo que no sea titular. (0,5,1) */
:root:root:root:root:root body,
:root:root:root:root:root body * {
  font-family: var(--font-body) !important;
}

/* Titulares y todo lo que el kit pinta con el rótulo. (0,7,1) */
:root:root:root:root:root:root:root body :is(h1, h2, h3, h4, h5, h6),
:root:root:root:root:root:root:root body :is(.logo-line--single, .footer-logo-line--single),
:root:root:root:root:root:root:root body :is(.lpe-hero-title, .lpe-hero-title-accent),
:root:root:root:root:root:root:root body :is(.section-title, .editorial-headline),
:root:root:root:root:root:root:root body .footer-cta-text {
  font-family: var(--font-display) !important;
}

/* H1 y H2: versales, ancho 78, peso 800 (kit §2). El eje `wdth` es lo que da el
   aire de rótulo; sin `font-variation-settings` Archivo sale en ancho normal y
   el titular deja de parecerse a la marca. */
:root:root:root:root:root:root:root body :is(h1, h2),
:root:root:root:root:root:root:root body :is(.lpe-hero-title, .section-title, .editorial-headline) {
  font-variation-settings: "wdth" 78, "wght" 800 !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  letter-spacing: -0.015em !important;
  line-height: 0.95 !important;
}

/* H3 y H4: ancho 92, peso 700, caja normal. Son nombres de academia y rótulos
   de tarjeta — en versales se leerían peor y competirían con el H1. */
:root:root:root:root:root:root:root body :is(h3, h4) {
  font-variation-settings: "wdth" 92, "wght" 700 !important;
  text-transform: none !important;
  letter-spacing: -0.01em !important;
}

/* Los placeholders del kit llevan etiqueta monoespaciada; la regla del cuerpo se
   los llevaría por delante. Va después del bloque de titulares y con la misma
   especificidad, así que gana por orden — y ningún elemento casa con las dos. */
:root:root:root:root:root:root:root body :is(code, pre, kbd, samp) {
  font-family: var(--font-mono) !important;
}

/* =========================================================================
   NAVEGACIÓN — kit §4: fondo cal, filete inferior de 1.5 px de tinta
   ========================================================================= */

/* El fondo ya viene de --surface-header. Lo que cambia es el filete: en LPE es
   1 px de la marca al 12 %, casi invisible sobre su lienzo; aquí es la línea que
   separa el rótulo de la pared, y va a plena tinta. (0,3,0) */
:root:root .navbar {
  border-bottom: 1.5px solid var(--text-main);
}

/* Lockup de una sola línea: "CLASES CERCA" en Archivo 800, ancho 76, tinta.
   El ancho 76 es el del logotipo del kit — dos puntos por debajo del titular,
   que es lo que hace que la firma se lea como firma y no como otro H1. */
:root:root .logo-line--single {
  font-size: 1.32rem;
  font-weight: 800;
  font-variation-settings: "wdth" 76, "wght" 800;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  line-height: 1;
  color: var(--text-main);
  white-space: nowrap;
}

@media (max-width: 430px) {
  :root:root .logo-line--single {
    font-size: 1.1rem;
  }
}

/* =========================================================================
   FOOTER — tinta, con banda nopal de cierre
   ========================================================================= */

:root:root .footer-logo-line--single {
  font-size: 1.26rem;
  font-weight: 800;
  font-variation-settings: "wdth" 76, "wght" 800;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  line-height: 1;
  color: var(--on-dark-main);
  white-space: nowrap;
}

/* La banda. Fondo nopal, texto cal, botón cempasúchil con texto tinta — el
   único sitio del footer donde el cempasúchil aparece, y como relleno. */
:root:root .footer-cta-band {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  margin: 2.25rem 0 1.5rem;
  padding: 1.5rem 1.75rem;
  background: var(--brand);
  border-radius: var(--radius-md);
}

:root:root .footer-cta-text {
  margin: 0;
  max-width: 34ch;
  color: var(--text-on-brand);
  font-size: 1.22rem;
  font-weight: 700;
  font-variation-settings: "wdth" 85, "wght" 700;
  line-height: 1.1;
}

:root:root .footer-cta-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* 48 px es la altura táctil mínima del kit, y aquí no es un detalle: la mitad
     de las altas llegan desde un teléfono. */
  min-height: 48px;
  padding: 0.875rem 1.375rem;
  background: var(--brand-accent);
  color: var(--on-accent);
  border-radius: var(--radius-button);
  font-weight: 700;
  font-size: 1rem;
  text-decoration: none;
  white-space: nowrap;
}

:root:root .footer-cta-button:hover {
  background: var(--brand-accent-strong);
  color: var(--on-accent);
}

@media (max-width: 640px) {
  :root:root .footer-cta-band {
    padding: 1.25rem;
  }

  :root:root .footer-cta-button {
    width: 100%;
  }
}

/* =========================================================================
   FUGAS DE LA MARCA DE LPE QUE NO SON TOKEN

   design-system.css está tokenizado a medias: además de los tokens hay
   diecisiete literales `rgba(166, 80, 52, α)` —la terracota de LPE con
   transparencia— y un `#fffdfb` (su crema), casi todos con `!important`,
   dentro del "normalizador de páginas legacy". Cambiar `--brand` no los mueve,
   y se ven: el borde del botón secundario del 404 salía terracota sobre un
   sitio verde.

   Lo correcto sería que esas reglas usaran `color-mix(in srgb, var(--brand) α%,
   transparent)`. No se toca design-system.css porque cambia el hash del CSS
   empaquetado y con él el `<link>` del HTML de LPE, que es exactamente lo que la
   regla de oro prohíbe. Cuando LPE se toque por otro motivo, ése es el arreglo.

   Aquí se pisan sólo las que pueden aparecer en un directorio de clases. Las que
   viven únicamente en las páginas herramienta de LPE (`.template-table`,
   `.tool-guide`, `.companions-badge`) no se persiguen: `surfaces.tools` es
   `false` y esas páginas no se enlazan desde ningún sitio.

   Las sombras se aplanan de paso. El kit permite UNA sombra —
   `0 1px 2px rgb(22 33 28 / .08)` — y ninguna de color.
   ========================================================================= */

/* Numerales de sección y kickers: el 01/02/03 de las bandas. */
:root:root .lpe-section-number,
:root:root .section-kicker span,
:root:root .about-num {
  color: rgba(30, 107, 68, 0.2) !important;
}

/* Campos: la crema de LPE y su filete terracota. Blanco sobre cal, filete de
   tinta al 22 % — el mismo peso, el color de esta marca. */
:root:root .form-group input,
:root:root .form-group select,
:root:root .form-group textarea,
:root:root .selector-group select,
:root:root .select-wrapper select,
:root:root .sort-select,
:root:root .search-box input {
  background: var(--surface-paper) !important;
  border: 1px solid rgba(22, 33, 28, 0.22) !important;
}

:root:root .form-group input:focus,
:root:root .form-group select:focus,
:root:root .form-group textarea:focus,
:root:root .selector-group select:focus,
:root:root .select-wrapper select:focus,
:root:root .sort-select:focus,
:root:root .search-box input:focus {
  border-color: var(--brand) !important;
  box-shadow: 0 0 0 3px rgba(30, 107, 68, 0.2) !important;
}

/* Chips y pestañas: el fondo era la crema #fbf7f2 al 78 %. */
:root:root .preset-btn,
:root:root .filter-btn,
:root:root .category-btn,
:root:root .tab,
:root:root .option-content {
  background: var(--surface-page) !important;
}

:root:root .category-btn.active,
:root:root .tab:hover,
:root:root .tab.active,
:root:root .option-card:hover .option-content,
:root:root .option-card input:checked + .option-content {
  box-shadow: 0 1px 2px rgb(22 33 28 / 0.08) !important;
}

/* Insignias. El kit las quiere con el filete de la propia familia de color; el
   mínimo honesto aquí es que dejen de ser terracota. */
:root:root .badge-essential,
:root:root .badge-recommended,
:root:root .badge-optional,
:root:root .diff-badge,
:root:root .status-badge,
:root:root .category-badge {
  border-color: rgba(30, 107, 68, 0.24) !important;
}

:root:root .danger-btn,
:root:root .delete-btn {
  border-color: rgba(178, 58, 32, 0.32) !important;
}

/* Botones primarios: fondo y color ya salen de `--brand`; lo que quedaba era la
   sombra de color, prohibida por el kit. */
:root:root .btn-cta--primary,
:root:root .btn-cta--primary:hover,
:root:root .calculate-btn,
:root:root .browse-venues-btn,
:root:root .btn-primary,
:root:root .primary-btn,
:root:root .cta-btn,
:root:root .download-btn,
:root:root .compare-btn,
:root:root .btn-primary:hover,
:root:root .primary-btn:hover,
:root:root .cta-btn:hover,
:root:root .download-btn:hover,
:root:root .compare-btn:hover {
  box-shadow: 0 1px 2px rgb(22 33 28 / 0.08) !important;
}

/* Secundario del kit: filete de 1.5 px de tinta, texto tinta, fondo
   transparente. En LPE es un filete terracota al 36 % con texto de marca. */
:root:root .btn-secondary,
:root:root .secondary-btn {
  border-width: 1.5px !important;
  border-style: solid !important;
  border-color: var(--text-main) !important;
  color: var(--text-main) !important;
}
