/* ============ MURO · Web pública del tenant ============
   Usa el contrato de tokens (tokens.css); la paleta y las
   fuentes del tenant se inyectan como overrides inline.   */

/* Los valores por defecto del sistema de secciones viven en el <body>:
   las mismas piezas (tarjetas de producto, galerías) también se usan en
   páginas de módulos, fuera de una .sec, y necesitan resolverlos. */
body.site {
  font-size: 1.125rem;
  --sec-cols: 3;
  --sec-cols-sm: 2;
  --sec-radius: var(--radius-lg);
  --sec-gap: var(--space-5);
  /* Las fotos que salen a lo ancho se miden con `100vw`, que en el
     escritorio incluye la barra de desplazamiento: sin este recorte
     asomaban unos píxeles y aparecía scroll horizontal. `clip` —y no
     `hidden`— no crea contenedor de scroll, así el menú pegajoso y el
     visor de fotos siguen funcionando igual. */
  overflow-x: clip;
}
.site .wrap { max-width: var(--content-max); margin: 0 auto; padding: 0 var(--content-pad); }
/* `:not(.sec)`: las secciones del sistema traen su propio respiro y cada
   diseño puede ajustarlo (una cinta o una portada no llevan el mismo).
   Sin esta exclusión, esta regla —más específica— les quitaba el de abajo. */
.site section:not(.sec) { padding: var(--section-y) 0 0; }
.site section:not(.sec):last-of-type { padding-bottom: var(--section-y); }

/* ================== Sistema de secciones (.sec--*) ==================
   Cada opción de estilo elegida en el panel se traduce a una clase.
   Los modificadores de fondo redefinen los tokens de texto y superficie
   dentro de la sección, así que todo lo que va dentro (títulos, botones,
   tarjetas) se adapta solo. Ver src/Service/SectionStyle.php.         */

.sec {
  position: relative;
  padding: var(--section-y) 0;
  --sec-max: var(--content-max);
}
.site .sec > .wrap { position: relative; z-index: 1; max-width: var(--sec-max); }

/* ---- Fondo ---- */
.site .sec--bg-card   { background: var(--surface-card); }
.site .sec--bg-raised { background: var(--surface-raised); }
.site .sec--bg-accent { background: var(--accent); }
.site .sec--bg-band   { background: var(--surface-band); }
/* La foto de fondo se pinta en una capa propia (::before), un poco más
   alta que la sección: así puede desplazarse con el scroll —efecto
   parallax, lo mueve site.js— sin descubrir el borde. */
.site .sec--bg-image  {
  background: var(--surface-raised); overflow: hidden;
  --sec-scrim: linear-gradient(180deg, rgba(12,10,9,0.35) 0%, rgba(12,10,9,0.72) 100%);
}

/* ---- Tono: fondos oscuros invierten los tokens dentro de la sección ---- */
.site .sec--bg-band, .site .sec--bg-image, .site .sec--tone-dark, .site .sec--bg-accent {
  --text-heading: var(--on-band);
  --text-body:    color-mix(in srgb, var(--on-band) 88%, transparent);
  --text-muted:   color-mix(in srgb, var(--on-band) 64%, transparent);
  --surface-card:   color-mix(in srgb, var(--on-band) 8%, transparent);
  --surface-raised: color-mix(in srgb, var(--on-band) 14%, transparent);
  --border-subtle: color-mix(in srgb, var(--on-band) 18%, transparent);
  --border-strong: color-mix(in srgb, var(--on-band) 36%, transparent);
  color: var(--text-body);
}
.site .sec--bg-accent { --on-band: var(--on-accent); }
.site .sec--bg-band .s-btn-primary, .site .sec--bg-image .s-btn-primary, .site .sec--tone-dark .s-btn-primary { background: var(--accent); color: var(--on-accent) !important; }
.site .sec--bg-accent .s-btn-primary { background: var(--on-accent); color: var(--accent) !important; }
.site .sec--bg-accent .s-btn-primary:hover { filter: brightness(0.94); }
.site .sec--bg-band .s-overline, .site .sec--bg-image .s-overline, .site .sec--tone-dark .s-overline { color: color-mix(in srgb, var(--detail) 70%, #FFFFFF); }

/* ---- Foto de fondo + velo (una sola capa, la que hace parallax) ---- */
.site .sec--bg-image::before {
  content: ""; position: absolute; inset: -8% 0; z-index: 0;
  background: var(--sec-scrim), var(--sec-bg-image, var(--sec-bg-preset, none)) center / cover no-repeat;
  transform: translate3d(0, var(--sec-shift, 0px), 0);
}
.site .sec--overlay-soft   { --sec-scrim: linear-gradient(180deg, rgba(12,10,9,0.18) 0%, rgba(12,10,9,0.48) 100%); }
.site .sec--overlay-strong { --sec-scrim: linear-gradient(180deg, rgba(12,10,9,0.62) 0%, rgba(12,10,9,0.88) 100%); }

/* ---- Textura ---- */
.site .sec--texture-grain::after, .site .sec--texture-grid::after,
.site .sec--texture-dots::after, .site .sec--texture-circles::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: 0.32;
}
.site .sec--texture-grain::after { background-image: var(--texture-grain); mix-blend-mode: overlay; opacity: 0.5; }
.site .sec--texture-grid::after  { background-image: var(--texture-grid); opacity: 0.22; }
.site .sec--texture-dots::after  { background-image: var(--texture-dots); opacity: 0.26; }
.site .sec--texture-circles::after {
  background-image: var(--texture-circles); background-size: clamp(320px, 44vw, 620px); opacity: 0.4;
}

/* ---- Alineación, alto, ancho, columnas, esquinas, separación ---- */
.site .sec--align-center { text-align: center; }
.site .sec--align-center :is(.s-head, .sec-copy, .copy) { margin-left: auto; margin-right: auto; justify-items: center; }
.site .sec--align-center .sec-ctas { justify-content: center; }

.site .sec--align-right { text-align: right; }
.site .sec--align-right :is(.s-head, .sec-copy, .copy) { margin-left: auto; justify-items: end; }
.site .sec--align-right .sec-ctas { justify-content: flex-end; }
.site .sec--align-right .sec-copy > :is(.sec-chip, .lt-badge) { justify-self: end; }

.site .sec--height-sm { padding: clamp(36px, 4vw, 56px) 0; }
.site .sec--height-lg { min-height: min(92dvh, 900px); display: grid; align-items: center; }

.site .sec--width-narrow { --sec-max: 780px; }
.site .sec--width-wide   { --sec-max: 1400px; }
.site .sec--width-full   { --sec-max: none; }
.site .sec--width-full > .wrap { padding: 0; }

/* Cada opción trae su valor de escritorio y el de móvil: cuatro columnas
   en un teléfono son miniaturas ilegibles, pero «1 columna» sí se respeta. */
.site .sec--cols-1 { --sec-cols: 1; --sec-cols-sm: 1; }
.site .sec--cols-2 { --sec-cols: 2; --sec-cols-sm: 2; }
.site .sec--cols-3 { --sec-cols: 3; --sec-cols-sm: 2; }
.site .sec--cols-4 { --sec-cols: 4; --sec-cols-sm: 2; }

.site .sec--radius-none { --sec-radius: 0; }
.site .sec--radius-md   { --sec-radius: var(--radius-md); }
.site .sec--radius-lg   { --sec-radius: var(--radius-lg); }
.site .sec--radius-xl   { --sec-radius: var(--radius-2xl); }

/* Las esquinas se aplican al fondo de la sección (color o foto), no solo
   a sus fotos: en las secciones sin foto la opción no hacía nada. */
.site :is(.sec--bg-card, .sec--bg-raised, .sec--bg-accent, .sec--bg-band, .sec--bg-image, .has-image):is(.sec--radius-md, .sec--radius-lg, .sec--radius-xl) {
  border-radius: var(--sec-radius);
  overflow: hidden;
}

.site .sec--gap-sm { --sec-gap: var(--space-3); }
.site .sec--gap-lg { --sec-gap: var(--space-7); }

/* ---- Composición: dónde va la foto de la sección ----
   Las secciones que reparten foto y texto usan `.sec-split` con dos
   hijos (`.sec-media` y el bloque de texto). La opción decide el reparto,
   así un mismo diseño sirve para media docena de composiciones.
   El orden lo manda la opción, no el orden del HTML: cada diseño escribe
   sus bloques como le conviene. */
.sec-split { display: grid; gap: var(--space-6); align-items: center; }
.site .sec--layout-hidden .sec-split > .sec-media { display: none; }
.site .sec--layout-left .sec-split > .sec-media,
.site .sec--layout-top .sec-split > .sec-media { order: -1; }
.site .sec--layout-right .sec-split > .sec-media,
.site .sec--layout-bottom .sec-split > .sec-media { order: 1; }
@media (min-width: 900px) {
  .site :is(.sec--layout-left, .sec--layout-right) .sec-split {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-7);
  }
}

/* Arriba o abajo: la foto sale del ancho del contenido (el truco clásico
   de `50% - 50vw`) y llega al borde de la sección. */
.site :is(.sec--layout-top, .sec--layout-bottom) .sec-split > .sec-media {
  width: 100vw; margin-inline: calc(50% - 50vw); border-radius: 0;
}
.site .sec--layout-top .sec-split > .sec-media { margin-top: calc(var(--section-y) * -1); }
.site .sec--layout-bottom .sec-split > .sec-media { margin-bottom: calc(var(--section-y) * -1); }
.site :is(.sec--layout-top, .sec--layout-bottom) .sec-split > .sec-media img { aspect-ratio: 16 / 9; max-height: 62dvh; }
@media (min-width: 900px) {
  .site :is(.sec--layout-top, .sec--layout-bottom) .sec-split { grid-template-columns: minmax(0, 1fr); }
  .site .sec--layout-top .sec-split > :not(.sec-media) { margin-top: clamp(-160px, -12vw, -48px); position: relative; }
  .site .sec--layout-bottom .sec-split > :not(.sec-media) { margin-bottom: clamp(-160px, -12vw, -48px); position: relative; }
}

/* ---- Recuadro del texto (lo pide el diseño con `.sec-panel`) ---- */
.site :is(.sec--panel-card, .sec--panel-dark, .sec--panel-accent, .sec--panel-glass) .sec-panel {
  padding: clamp(22px, 3.4vw, 40px);
  border-radius: var(--sec-radius);
}
/* La tarjeta se apoya sobre fotos y bandas oscuras: recupera los colores
   de página para no volverse translúcida ni perder el contraste. */
.site .sec--panel-card .sec-panel {
  background: var(--surface-card-solid);
  --text-heading: var(--text-heading-page);
  --text-body: var(--text-body-page);
  --text-muted: var(--text-muted-page);
  --border-subtle: rgba(36, 32, 28, 0.10);
  --border-strong: rgba(36, 32, 28, 0.28);
  color: var(--text-body);
  border: 1px solid var(--border-subtle); box-shadow: var(--shadow-md);
}
.site .sec--panel-dark .sec-panel, .site .sec--panel-glass .sec-panel {
  --text-heading: var(--on-band);
  --text-body: color-mix(in srgb, var(--on-band) 88%, transparent);
  --text-muted: color-mix(in srgb, var(--on-band) 70%, transparent);
  color: var(--text-body);
}
.site .sec--panel-dark .sec-panel { background: color-mix(in srgb, var(--surface-band) 88%, transparent); }
.site .sec--panel-accent .sec-panel { background: var(--accent); color: var(--on-accent); --text-heading: var(--on-accent); --text-body: var(--on-accent); --text-muted: color-mix(in srgb, var(--on-accent) 78%, transparent); }
/* Con recuadro y la foto a lo ancho, el texto se monta encima de la foto:
   comparten celda y la opción «Dónde cae el texto» (más la alineación)
   deciden en qué punto de los nueve se apoya. */
.site :is(.sec--layout-top, .sec--layout-bottom):is(.sec--panel-card, .sec--panel-dark, .sec--panel-accent, .sec--panel-glass) .sec-split {
  grid-template-columns: minmax(0, 1fr);
}
/* Comparten celda para encimarse; la foto conserva su salida a lo ancho. */
.site :is(.sec--layout-top, .sec--layout-bottom):is(.sec--panel-card, .sec--panel-dark, .sec--panel-accent, .sec--panel-glass) .sec-split > * {
  grid-area: 1 / 1;
}
.site :is(.sec--layout-top, .sec--layout-bottom):is(.sec--panel-card, .sec--panel-dark, .sec--panel-accent, .sec--panel-glass) .sec-split > :not(.sec-media) {
  z-index: 1; margin: clamp(14px, 4vw, 56px); max-width: min(620px, 92%);
  align-self: var(--spot-y, center); justify-self: var(--spot-x, start);
}
.site .sec--spot-top { --spot-y: start; }
.site .sec--spot-center { --spot-y: center; }
.site .sec--spot-bottom { --spot-y: end; }
.site .sec--align-left { --spot-x: start; }
.site .sec--align-center { --spot-x: center; }
.site .sec--align-right { --spot-x: end; }

/* Cristal: el desenfoque lleva prefijo por Safari/iOS y, donde no exista,
   queda un fondo más sólido para que el texto siga legible. */
.site .sec--panel-glass .sec-panel {
  background: rgba(20, 17, 15, 0.42);
  border: 1px solid rgba(255, 255, 255, 0.18);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site .sec--panel-glass .sec-panel { background: rgba(20, 17, 15, 0.82); }
}

/* ---- Piezas reutilizables dentro de una sección ---- */
.sec-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
@media (min-width: 900px) { .sec-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }
.sec-copy { display: grid; gap: var(--space-4); align-content: center; max-width: 62ch; }
.sec-ctas { display: flex; flex-wrap: wrap; gap: 12px; }
.sec-media { border-radius: var(--sec-radius); overflow: hidden; }
.sec-media img { object-position: var(--focus, 50% 50%); }
.sec-media img { width: 100%; height: 100%; object-fit: cover; }
.sec-chip {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 18px; border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--surface-card) 88%, transparent); border: 1px solid var(--border-subtle);
  font: 600 0.9rem var(--font-body); color: var(--text-heading); backdrop-filter: blur(8px);
}
.sec-ellipse {
  display: grid; place-items: center; text-align: center; padding: clamp(24px, 4vw, 40px);
  border: 1px solid color-mix(in srgb, var(--on-band) 45%, transparent); border-radius: 50%;
  aspect-ratio: 1.35; max-width: 320px; font-size: 0.95rem; color: var(--text-body);
}

/* ---- Botones ---- */
.s-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 48px; padding: 0 26px; border-radius: var(--radius-pill);
  font: 600 1rem var(--font-body); text-decoration: none; cursor: pointer;
  border: 1.5px solid transparent;
  transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
}
.s-btn:active { transform: scale(0.98); }
.s-btn-primary { background: var(--accent); color: var(--on-accent) !important; }
.s-btn-primary:hover { background: var(--accent-strong); }
.s-btn-outline { border-color: var(--accent); color: var(--accent) !important; }
.s-btn-outline:hover { background: var(--accent-soft); }
.s-btn-lg { min-height: 56px; padding: 0 32px; font-size: 1.125rem; }

/* ---- Nav ---- */
.s-nav {
  position: sticky; top: 0; z-index: 50; border-bottom: 1px solid var(--border-subtle);
  background: color-mix(in srgb, var(--surface-page) 78%, transparent);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
}
.s-nav-in { display: flex; align-items: center; gap: 16px; min-height: 76px; }
.s-wordmark { text-decoration: none; display: flex; align-items: center; gap: 12px; }
.s-wordmark img { height: 44px; width: auto; border-radius: 10px; }
.s-wordmark b { font: 600 1.35rem var(--font-display); color: var(--text-heading); }
/* Con la web completa en el menú (secciones + módulos) la fila puede
   quedarse corta: envuelve a una segunda línea antes que desbordar. */
.s-links { display: none; gap: 6px 2px; margin-left: auto; flex-wrap: wrap; justify-content: flex-end; min-width: 0; }
.s-links a {
  white-space: nowrap; font: 600 1rem var(--font-body); color: var(--text-body);
  text-decoration: none; padding: 10px 14px; border-radius: var(--radius-pill);
}
.s-links a:hover { background: var(--surface-raised); color: var(--text-heading); }
.s-actions { display: flex; gap: 10px; margin-left: auto; align-items: center; }
.s-icon-btn {
  display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%;
  cursor: pointer; background: var(--surface-raised); color: var(--text-heading);
  border: 1.5px solid var(--border-subtle);
  transition: background var(--dur-fast) var(--ease-out);
}
.s-icon-btn:hover { background: var(--accent-soft); }
.s-mobile-menu { display: none; border-top: 1px solid var(--border-subtle); padding: 12px 0 20px; }
.s-mobile-menu.open { display: grid; gap: 4px; }
.s-mobile-menu a {
  font: 600 1.125rem var(--font-body); color: var(--text-heading); text-decoration: none;
  padding: 14px 8px; border-radius: var(--radius-sm);
}
.s-mobile-menu a:hover { background: var(--surface-raised); }
@media (min-width: 900px) {
  .s-links { display: flex; }
  .s-actions { margin-left: 0; }
  .s-menu-btn { display: none; }
}

/* ---- Texto común ---- */
.s-overline {
  font: 600 0.85rem var(--font-body); letter-spacing: var(--tracking-wide);
  text-transform: uppercase; color: var(--detail);
}
.s-head { display: grid; gap: 10px; max-width: 640px; margin-bottom: clamp(28px, 4vw, 48px); }
.s-head h2 { font-size: var(--text-3xl); }
.s-head p { margin: 0; font-size: var(--text-lg); color: var(--text-muted); text-wrap: pretty; }

/* ---- Hero centrado ---- */
.hero-c { position: relative; display: grid; place-items: center; min-height: min(88dvh, 760px); overflow: hidden; padding: 0; }
.hero-c .bg { position: absolute; inset: 0; overflow: hidden; }
.hero-c .bg img {
  width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%);
  transform: translate3d(0, var(--sec-shift, 0px), 0) scale(1.08);
}
.hero-c .bg::after { content: ""; position: absolute; inset: 0; background: var(--scrim); }
.hero-c .inner {
  position: relative; z-index: 1; display: grid; gap: 20px; justify-items: center;
  text-align: center; padding: clamp(64px, 10vw, 128px) var(--content-pad); max-width: 820px;
}
.hero-c.has-image h1, .hero-c.has-image .lede, .hero-c.has-image .s-overline { color: #FFF8F5; }
.hero-c h1 { font-size: var(--text-4xl); font-weight: 600; }
.hero-c .lede { font-size: var(--text-lg); max-width: 52ch; color: var(--text-muted); text-wrap: pretty; margin: 0; }
.hero-c.has-image .lede { color: rgba(255,248,245,0.85); }

/* ---- Hero split ---- */
.hero-s { padding: 0; border-bottom: 1px solid var(--border-subtle); }
.hero-s .inner { display: grid; gap: 40px; padding: clamp(48px, 7vw, 96px) 0; }
.hero-s .copy { display: grid; gap: 20px; align-content: center; justify-items: start; }
.hero-s h1 { font-size: var(--text-4xl); font-weight: 600; }
.hero-s .lede { font-size: var(--text-lg); color: var(--text-muted); max-width: 46ch; margin: 0; text-wrap: pretty; }
.hero-s .media { border-radius: var(--sec-radius); overflow: hidden; }
.hero-s .media img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); aspect-ratio: 4 / 3; }
@media (min-width: 900px) {
  .hero-s .inner { grid-template-columns: 1fr 1fr; }
  .hero-s .media img { aspect-ratio: auto; min-height: 480px; }
}

/* ---- Sobre mí ---- */
.about { }
.about .cols { display: grid; gap: 40px; }
.about .media { max-width: 460px; }
.about .media img { aspect-ratio: 3 / 4; object-fit: cover; object-position: var(--focus, 50% 50%); width: 100%; border-radius: var(--sec-radius); }
.about .copy { display: grid; gap: 18px; align-content: center; }
.about .copy p { margin: 0; max-width: 58ch; white-space: pre-line; }
.about .stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 10px; max-width: 560px; }
.about .stat b { display: block; font: 600 clamp(30px, 4vw, 42px) var(--font-display); color: var(--accent); line-height: 1.1; }
.about .stat span { font: 400 0.9rem var(--font-body); color: var(--text-muted); }
@media (min-width: 900px) { .about .cols { grid-template-columns: minmax(0, 460px) 1fr; } }

/* ---- Galería ---- */
.gallery-grid { display: grid; grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); gap: var(--sec-gap); }
.gallery-grid figure { margin: 0; border-radius: var(--sec-radius); overflow: hidden; aspect-ratio: 1; background: var(--surface-raised); position: relative; }
.gallery-grid figure.wide { grid-column: span 2; aspect-ratio: 2 / 1; }
/* Con una sola columna nada se estira al doble. */
.site .sec--cols-1 .gallery-grid figure.wide { grid-column: auto; aspect-ratio: 3 / 2; }
.gallery-grid img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); transition: transform var(--dur-slow) var(--ease-out); }
.gallery-grid figure:hover img { transform: scale(1.03); }
.gallery-grid figcaption {
  position: absolute; inset: auto 0 0 0; padding: 26px 14px 12px;
  background: linear-gradient(180deg, rgba(12,10,9,0) 0%, rgba(12,10,9,0.72) 100%);
  color: #FFF8F5; font: 500 0.92rem var(--font-body); text-align: left;
}
@media (min-width: 760px) { .gallery-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }

/* ---- Franja CTA ---- */
.cta-band { padding: 0; }
.cta-band .inner {
  display: grid; gap: 18px; justify-items: center; text-align: center;
  background: linear-gradient(120deg, var(--accent) 0%, var(--accent-strong) 100%);
  border-radius: var(--sec-radius); padding: clamp(40px, 6vw, 72px) var(--content-pad);
  margin-top: var(--section-y);
}
.cta-band h2 { color: var(--on-accent); font-size: var(--text-3xl); }
.cta-band p { margin: 0; color: color-mix(in srgb, var(--on-accent) 82%, transparent); font-size: var(--text-lg); max-width: 52ch; }
.cta-band .s-btn { background: var(--on-accent); color: var(--accent) !important; }
.cta-band .s-btn:hover { filter: brightness(0.95); }

/* ---- Contacto ---- */
.contact .cols { display: grid; gap: 40px; }
.contact .info { display: grid; gap: 14px; align-content: start; }
.contact .info a { font-weight: 600; }
.contact form { display: grid; gap: 16px; }
.contact .field { display: grid; gap: 7px; }
.contact label { font: 600 0.95rem var(--font-body); color: var(--text-heading); }
.contact .input {
  width: 100%; min-height: 52px; padding: 12px 16px; font: 400 1.05rem var(--font-body);
  color: var(--text-heading); background: var(--surface-card);
  border: 1.5px solid var(--border-strong); border-radius: var(--radius-md);
}
.contact textarea.input { min-height: 130px; resize: vertical; }
.contact .input:focus { border-color: var(--accent); outline: none; }
.contact .error-message { font-size: 0.85rem; color: var(--danger); font-weight: 600; }
.contact .sent { display: none; padding: 18px 22px; border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent); font-weight: 600; }
@media (min-width: 900px) { .contact .cols { grid-template-columns: 1fr 1.4fr; } }

/* ---- Footer ---- */
.site-footer { border-top: 1px solid var(--border-subtle); padding: 28px 0; font-size: 0.95rem; color: var(--text-muted); }
.site-footer .flex-between { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.site-footer .muted { color: var(--text-muted); }

/* ---- Página no publicada ---- */
.unpublished { min-height: 100dvh; display: grid; place-items: center; text-align: center; padding: var(--space-6); }
.unpublished .box { display: grid; gap: 12px; max-width: 46ch; }

/* ---- Animación de entrada ---- */
@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity: 0; transform: translateY(14px); transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
  .reveal.in { opacity: 1; transform: none; }
}

/* ================== Fase 2 · Páginas de módulos ================== */

.subpage { padding-top: clamp(40px, 6vw, 80px); }

/* ---- Página de enlaces (link-tree) ---- */
.lt { display: grid; place-items: center; min-height: 100dvh; padding: max(40px, env(safe-area-inset-top)) var(--content-pad) calc(40px + env(safe-area-inset-bottom)); }
.lt-in { width: min(94vw, 480px); display: grid; justify-items: center; text-align: center; gap: var(--space-3); position: relative; z-index: 1; }
.lt h1 { font-size: var(--text-2xl); margin: 0; }
.lt-bio { margin: 0; color: var(--text-muted); max-width: 34ch; text-wrap: pretty; }
.lt-avatar { width: 112px; height: 112px; border-radius: 50%; object-fit: cover; box-shadow: var(--shadow-md); }
.lt-ring {
  display: grid; place-items: center; width: 124px; height: 124px; border-radius: 50%; padding: 4px;
  background: linear-gradient(140deg, var(--detail), var(--accent)); box-shadow: var(--shadow-lg);
}
.lt-ring img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.lt-badge {
  display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: var(--radius-pill);
  background: var(--accent-soft); color: var(--accent); font: 600 0.85rem var(--font-body);
}
.lt-links { display: grid; gap: 12px; width: 100%; margin-top: var(--space-3); }
.lt-tile {
  display: flex; align-items: center; gap: 14px; min-height: 60px; padding: 10px 20px; box-sizing: border-box;
  border-radius: var(--radius-pill); text-decoration: none; color: var(--text-heading);
  background: var(--surface-card); border: 1.5px solid var(--border-subtle); box-shadow: var(--shadow-sm);
  transition: transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);
}
.lt-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); color: var(--text-heading); }
.lt-tile:active { transform: scale(0.98); }
.lt-tile .ic { display: grid; place-items: center; width: 28px; flex: none; }
.lt-tile .lbl { flex: 1; display: grid; gap: 1px; text-align: center; }
.lt-tile .lbl b { font: 600 1.05rem var(--font-body); }
.lt-tile .lbl small { font: 400 0.8rem var(--font-body); opacity: 0.72; }
.lt-tile .arr { width: 28px; flex: none; text-align: right; opacity: 0.5; }
.lt-tile-web { background: var(--accent); color: var(--on-accent) !important; border-color: transparent; }
.lt-tile-web:hover { background: var(--accent-strong); color: var(--on-accent) !important; }
.lt-socials { display: flex; gap: 14px; margin-top: var(--space-4); }
.lt-socials a {
  display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%;
  color: var(--text-heading); background: var(--surface-card); border: 1px solid var(--border-subtle);
  transition: background var(--dur-fast) var(--ease-out);
}
.lt-socials a:hover { background: var(--accent-soft); color: var(--accent); }
.lt-fineprint { font-size: 0.8rem; color: var(--text-muted); margin-top: var(--space-4); }

/* Variante con foto de fondo: botones de cristal sobre la imagen. */
.lt-glass { position: relative; overflow: hidden; background: var(--surface-band); }
/* Igual que en las secciones: la foto va en su capa para el parallax. */
.lt-glass::before {
  content: ""; position: absolute; inset: -8% 0; z-index: 0;
  background: linear-gradient(180deg, rgba(12,10,9,0.35) 0%, rgba(12,10,9,0.55) 45%, rgba(12,10,9,0.85) 100%),
              var(--sec-bg-image, var(--sec-bg-preset, none)) center / cover no-repeat;
  transform: translate3d(0, var(--sec-shift, 0px), 0);
}
.lt-glass, .site .lt-glass {
  --text-heading: var(--on-band);
  --text-body: color-mix(in srgb, var(--on-band) 88%, transparent);
  --text-muted: color-mix(in srgb, var(--on-band) 70%, transparent);
  color: var(--text-body);
}
.lt-glass .lt-tile {
  background: rgba(20,17,15,0.52); border-color: rgba(255,255,255,0.22); color: var(--on-band);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: none;
}
.lt-glass .lt-tile:hover { background: rgba(20,17,15,0.72); color: var(--on-band); }
.lt-glass .lt-badge {
  background: rgba(20,17,15,0.5); color: var(--detail); border: 1px solid color-mix(in srgb, var(--detail) 55%, transparent);
  backdrop-filter: blur(8px);
}
.lt-glass .lt-socials a { background: rgba(20,17,15,0.42); border-color: rgba(255,255,255,0.16); color: var(--on-band); }
.lt-glass .lt-socials a:hover { background: var(--accent); }

/* ---- Tarjeta-resumen de enlaces (home) ---- */
.link-profile .wrap { display: flex; justify-content: center; }
.lp-card {
  width: min(94vw, 480px); display: grid; gap: var(--space-3); justify-items: center; text-align: center;
  padding: clamp(32px, 5vw, 48px) var(--content-pad); background: var(--surface-card);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); box-shadow: var(--shadow-sm);
}
.lp-avatar { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; box-shadow: var(--shadow-md); }
.lp-card h2 { font-size: var(--text-2xl); margin: 0; }
.lp-card p { margin: 0; color: var(--text-muted); max-width: 46ch; }
.lp-badge {
  display: inline-flex; align-items: center; padding: 6px 16px; border-radius: var(--radius-pill);
  background: var(--accent-soft); color: var(--accent); font: 600 0.85rem var(--font-body);
}

/* ---- Servicios ---- */
.svc-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); }
@media (max-width: 559px) { .svc-grid { grid-template-columns: 1fr; } }
@media (min-width: 760px) { .svc-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }
.svc-card {
  display: grid; gap: 10px; align-content: start; padding: var(--space-6);
  background: var(--surface-card); border: 1px solid var(--border-subtle);
  border-radius: var(--sec-radius); box-shadow: var(--shadow-sm);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.svc-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.svc-icon { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent); }
.svc-card h3 { font-size: var(--text-xl); }
.svc-card p { margin: 0; font-size: 1rem; color: var(--text-muted); }
.svc-meta { font: 600 0.9rem var(--font-body); color: var(--detail); }

/* ---- Productos: cards y carrusel ---- */
.carousel { display: flex; gap: var(--sec-gap); overflow-x: auto; scroll-snap-type: x mandatory; padding: 6px 6px 22px; margin: 0 -6px; scrollbar-width: none; }
.carousel::-webkit-scrollbar { display: none; }
.carousel .p-card { flex: 0 0 min(82vw, 330px); scroll-snap-align: start; }
.p-card {
  background: var(--surface-card); border: 1px solid var(--border-subtle); border-radius: var(--sec-radius);
  overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--shadow-sm);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.p-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.p-media { position: relative; aspect-ratio: 4 / 3; background: var(--surface-raised); }
.p-media img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); }
.p-cat { position: absolute; top: 14px; left: 14px; padding: 6px 14px; border-radius: var(--radius-pill);
  background: rgba(23,20,18,0.55); color: #FFF8F5; font: 600 0.8rem var(--font-body); backdrop-filter: blur(8px); }
.p-body { padding: var(--space-5); display: grid; gap: 10px; flex: 1; align-content: start; }
.p-title { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.p-title h3 { font-size: var(--text-xl); }
.p-title .price { font: 600 1rem var(--font-body); color: var(--detail); white-space: nowrap; }
.p-body p { margin: 0; font-size: 0.95rem; line-height: 1.55; color: var(--text-muted); }
.car-dots { display: flex; gap: 8px; justify-content: center; }
.car-dots button { width: 10px; height: 10px; border-radius: 50%; border: 0; padding: 0; cursor: pointer; background: var(--border-strong); }
.car-dots button[aria-current="true"] { background: var(--accent); width: 26px; border-radius: 999px; }

/* ---- Catálogo ---- */
.cat-filters { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: var(--space-5); }
.chip {
  min-height: 42px; padding: 0 18px; border-radius: var(--radius-pill); cursor: pointer;
  background: var(--surface-card); color: var(--text-body); border: 1.5px solid var(--border-strong);
  font: 600 0.95rem var(--font-body); transition: all var(--dur-fast) var(--ease-out);
}
.chip[aria-selected="true"] { background: var(--accent); color: var(--on-accent); border-color: transparent; }
.cat-grid { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); }

/* ---- Blog ---- */
.blog-grid { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.blog-card {
  display: flex; flex-direction: column; text-decoration: none; overflow: hidden;
  background: var(--surface-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm); color: var(--text-body);
  transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);
}
.blog-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); color: var(--text-body); }
.blog-media { aspect-ratio: 16 / 9; background: var(--surface-raised); }
.blog-media img { width: 100%; height: 100%; object-fit: cover; }
.blog-body { padding: var(--space-5); display: grid; gap: 8px; }
.blog-body h2 { font-size: var(--text-xl); }
.blog-body p { margin: 0; font-size: 0.95rem; color: var(--text-muted); }
.blog-cover { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--radius-lg); margin-bottom: var(--space-5); }
.prose { display: grid; gap: 1em; font-size: 1.125rem; line-height: 1.75; }
.prose h2 { font-size: var(--text-2xl); margin-top: 0.6em; }
.prose h3 { font-size: var(--text-xl); }
.prose blockquote { margin: 0; padding: 12px 24px; border-left: 3px solid var(--accent); background: var(--surface-card); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; color: var(--text-muted); }
.prose ul, .prose ol { margin: 0; padding-left: 26px; display: grid; gap: 6px; }

/* ================== Secciones editoriales (Fase 3) ================== */

/* ---- Portada editorial ---- */
.hero-ed { display: grid; align-items: end; min-height: min(88dvh, 860px); }
.hero-ed-in { display: grid; gap: var(--space-6); align-items: end; }
.hero-ed h1 { font-size: var(--text-5xl); font-weight: 500; line-height: 1.02; letter-spacing: -0.015em; }
.hero-ed .lede { font-size: var(--text-lg); max-width: 46ch; color: var(--text-muted); margin: 0; text-wrap: pretty; }
@media (min-width: 900px) {
  /* Dos columnas solo si hay nota en elipse: si no, el texto ocupa todo. */
  .hero-ed-in:has(.sec-ellipse) { grid-template-columns: minmax(0, 1.6fr) minmax(0, 320px); }
  .hero-ed .sec-ellipse { justify-self: end; }
}

/* ---- Bloques de contenido ---- */
.feature-in { display: grid; gap: var(--space-7); align-items: start; }
.feature-title { font-size: var(--text-4xl); font-weight: 500; line-height: 1.05; }
.feature-items { display: grid; gap: var(--space-6); }
.feature-items article { display: grid; gap: 8px; }
.feature-items p { margin: 0; color: var(--text-muted); font-size: 1rem; line-height: 1.6; max-width: 56ch; }
.feature-items h3 {
  font: 600 0.95rem var(--font-body); letter-spacing: var(--tracking-wide);
  text-transform: uppercase; color: var(--text-heading);
}
@media (min-width: 900px) { .feature-in:has(.feature-items > *) { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); } }

/* ---- Mosaico ---- */
.mosaic-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); }
.mosaic-cell {
  position: relative; display: block; overflow: hidden; margin: 0; aspect-ratio: 1;
  border-radius: var(--sec-radius); background: var(--surface-raised);
}
.mosaic-cell img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); transition: transform var(--dur-slow) var(--ease-out); }
.mosaic-cell:hover img { transform: scale(1.04); }
.mosaic-label {
  position: absolute; inset: auto 12px 12px 12px; display: grid; place-items: center; text-align: center;
  padding: 12px 18px; border-radius: var(--radius-pill); color: #FFF8F5;
  background: rgba(12,10,9,0.42); border: 1px solid rgba(255,248,245,0.5);
  font: 600 0.95rem var(--font-body); backdrop-filter: blur(6px);
}
@media (min-width: 760px) {
  .mosaic-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); }
  .mosaic-cell.is-wide { grid-column: span 2; aspect-ratio: 2 / 1.05; }
  .site .sec--cols-1 .mosaic-cell.is-wide { grid-column: auto; aspect-ratio: 3 / 2; }
  .mosaic-label { inset: auto 18px 18px 18px; }
}

/* ---- Historia en banda ---- */
.about-band-in { display: grid; gap: var(--space-6); align-items: center; }
.about-band-media img { aspect-ratio: 4 / 5; width: 100%; }
.about-band-body { margin: 0; white-space: pre-line; font-size: 1.05rem; line-height: 1.7; }
@media (min-width: 900px) { .about-band-in:has(.about-band-media) { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: var(--space-7); } }

/* ---- Marca asociada ---- */
.logo-band-in { display: grid; gap: var(--space-5); align-items: center; justify-items: start; }
.logo-band h2 { font-size: var(--text-2xl); font-weight: 500; }
.logo-band-mark {
  display: grid; place-items: center; padding: var(--space-5) var(--space-6); width: 100%;
  background: #FFFFFF; border-radius: var(--sec-radius); box-shadow: var(--shadow-sm);
}
.logo-band-mark img { max-height: 120px; width: auto; object-fit: contain; }
@media (min-width: 760px) { .logo-band-in:has(.logo-band-mark) { grid-template-columns: 1fr minmax(0, 420px); } }

/* ---- Invitación sobre foto ---- */
.cta-image-in { display: grid; gap: var(--space-4); justify-items: center; text-align: center; padding: var(--space-6) 0; }
.cta-image h2 { font-size: var(--text-3xl); max-width: 22ch; }
.cta-image p { margin: 0; font-size: var(--text-lg); max-width: 48ch; color: var(--text-muted); }

/* ---- Cierre de contacto ---- */
.contact-band-in { display: grid; gap: var(--space-6); justify-items: center; text-align: center; }
.contact-band h2 { font-size: var(--text-3xl); max-width: 24ch; font-weight: 500; }
.contact-band-data { display: grid; gap: 4px; font-size: 1rem; color: var(--text-muted); }
.contact-band-data p { margin: 0; }
.contact-band-data a { color: inherit; text-decoration: none; }
.contact-band-data a:hover { color: var(--text-heading); }
.contact-band-cta {
  display: grid; place-items: center; width: 148px; height: 148px; border-radius: 50%; text-align: center;
  border: 1.5px solid var(--border-strong); color: var(--text-heading); text-decoration: none;
  font: 600 0.9rem var(--font-body); letter-spacing: var(--tracking-wide); text-transform: uppercase;
  transition: background var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);
}
.contact-band-cta:hover { background: var(--accent); color: var(--on-accent); border-color: transparent; transform: translateY(-2px); }

/* Chips y elipses dentro de una columna de texto no se estiran. */
.sec-copy > .sec-chip, .sec-copy > .lt-badge { justify-self: start; }
.sec--align-center .sec-copy > .sec-chip { justify-self: center; }

/* ================== Movimiento de la web pública ==================
   Entradas y salidas suaves de cada pieza (título, texto, foto…) y
   parallax de las fotos de fondo. Las clases las reparte site.js y
   todo se apaga con `prefers-reduced-motion`.                      */

@media (prefers-reduced-motion: no-preference) {
  .site .rv {
    opacity: 0; transform: translateY(24px);
    transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);
    /* El escalonado se corta a la 6ª pieza: en una galería larga nadie
       espera dos segundos a que aparezca la última. */
    transition-delay: calc(min(var(--rv-i, 0), 6) * 70ms);
  }
  .site .rv.in { opacity: 1; transform: none; }
  /* Al salir por arriba no hay escalonado: la sección se va de una pieza. */
  .site .rv:not(.in) { transition-delay: 0ms; }
  .site [data-parallax] { will-change: transform; }
}
/* Al imprimir no hay scroll que dispare las entradas: todo visible. */
@media print {
  .site .rv { opacity: 1 !important; transform: none !important; }
}

/* ---- Foto a pantalla completa (se abre al tocarla) ---- */
.site .zoomable { cursor: zoom-in; }
.lightbox {
  width: 100%; max-width: 100vw; height: 100%; max-height: 100dvh;
  margin: 0; padding: 0; border: 0; background: transparent; overflow: hidden;
}
.lightbox::backdrop { background: rgba(8, 6, 5, 0.97); }
/* `margin: 0`: el margen que trae `figure` por defecto (40px a los lados)
   descuadraba la foto hacia la derecha en pantallas pequeñas. */
.lightbox-in {
  display: grid; place-items: center; align-content: center; gap: var(--space-3);
  width: 100%; height: 100dvh; margin: 0; padding: clamp(56px, 9vw, 72px) clamp(12px, 4vw, 40px);
  box-sizing: border-box; touch-action: pan-y;
}
.lightbox img {
  max-width: 100%; max-height: calc(100dvh - 150px); width: auto; height: auto;
  object-fit: contain; border-radius: var(--radius-md); box-shadow: var(--shadow-lg);
  animation: lb-in var(--dur-base) var(--ease-out); user-select: none; -webkit-user-drag: none;
}
.lightbox.is-dragging img { animation: none; transition: none; }
.lightbox figcaption { color: rgba(255, 248, 245, 0.82); font-size: 0.95rem; text-align: center; max-width: 60ch; }
.lightbox-close, .lightbox-nav {
  position: fixed; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%;
  cursor: pointer; color: #FFF8F5; background: rgba(255, 255, 255, 0.14);
  border: 1px solid rgba(255, 255, 255, 0.28); backdrop-filter: blur(8px); font-size: 1.25rem;
  transition: background var(--dur-fast) var(--ease-out);
}
.lightbox-close { top: max(16px, env(safe-area-inset-top)); right: 16px; }
.lightbox-nav { top: 50%; transform: translateY(-50%); }
.lightbox-nav[data-step="-1"] { left: 12px; }
.lightbox-nav[data-step="1"] { right: 12px; }
.lightbox-close:hover, .lightbox-nav:hover { background: rgba(255, 255, 255, 0.28); }
.lightbox-count {
  position: fixed; left: 50%; transform: translateX(-50%);
  bottom: max(16px, env(safe-area-inset-bottom)); padding: 6px 14px; border-radius: var(--radius-pill);
  color: rgba(255, 248, 245, 0.86); background: rgba(255, 255, 255, 0.12); font: 600 0.85rem var(--font-body);
}
/* En el teléfono se pasa deslizando: las flechas estorbarían sobre la foto. */
@media (max-width: 640px) { .lightbox-nav { display: none; } }
@keyframes lb-in { from { opacity: 0; transform: scale(0.96); } }

/* ================== Pack editorial (secciones nuevas) ==================
   Todas se apoyan en el sistema de opciones: fondo, composición, recuadro,
   columnas, esquinas y textura las decide el cliente en «Cómo se ve».   */

/* ---- Portada con el título encima ---- */
.hero-ov { display: grid; align-items: stretch; min-height: min(92dvh, 940px); }
/* `align-self`: la sección a pantalla completa centra su contenido; aquí
   el bloque tiene que ocupar todo el alto para separar arriba y abajo. */
.hero-ov-in { display: grid; align-content: space-between; align-self: stretch; gap: var(--space-6); width: 100%; }
.hero-ov h1 { font-size: var(--text-5xl); font-weight: 500; line-height: 0.98; letter-spacing: -0.02em; }
.hero-ov .lede { font-size: var(--text-lg); max-width: 46ch; margin: 0; color: var(--text-muted); text-wrap: pretty; }
.hero-ov-top { align-content: start; }
.hero-ov-foot { align-content: end; }
.hero-ov-note { margin: 0; justify-self: center; }
@media (min-width: 900px) {
  .hero-ov-in { grid-template-columns: minmax(0, 1.5fr) minmax(0, 340px); grid-template-rows: auto 1fr auto; }
  .hero-ov-top, .hero-ov-foot { grid-column: 1; }
  .hero-ov-note { grid-column: 2; grid-row: 1 / 3; justify-self: end; align-self: center; }
}

/* ---- Historia editorial ---- */
.about-ed-text { display: grid; gap: var(--space-5); align-content: center; }
.about-ed-title { font-size: var(--text-4xl); font-weight: 500; line-height: 1.04; }
.about-ed-body { margin: 0; white-space: pre-line; color: var(--text-muted); line-height: 1.7; max-width: 62ch; }
@media (min-width: 900px) {
  .about-ed-text { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-7); align-items: end; }
}

/* ---- Fotos con etiqueta en elipse ---- */
.feat-photos-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); }
@media (min-width: 760px) { .feat-photos-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }
.feat-photo {
  position: relative; display: grid; place-items: center; margin: 0; overflow: hidden;
  aspect-ratio: 3 / 4; border-radius: var(--sec-radius); background: var(--surface-raised);
}
.feat-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); transition: transform var(--dur-slow) var(--ease-out); }
.feat-photo:hover img { transform: scale(1.04); }
.feat-photo-label {
  position: relative; z-index: 1; max-width: 78%; color: #FFF8F5; font-weight: 600;
  border-color: rgba(255, 248, 245, 0.72); background: rgba(12, 10, 9, 0.42);
  text-shadow: 0 1px 10px rgba(12, 10, 9, 0.5);
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}

/* ---- Bloques y servicios en panel ---- */
.feat-panel-in { display: grid; gap: var(--space-6); align-items: center; }
.feat-panel-title { font-size: var(--text-4xl); font-weight: 500; line-height: 1.05; }
.feat-panel-items { display: grid; gap: var(--space-5); align-content: start; }
.feat-panel-items article { display: grid; gap: 6px; }
.feat-panel-items p { margin: 0; font-size: 1rem; line-height: 1.6; color: var(--text-muted); }
.feat-panel-items h3 {
  font: 600 0.95rem var(--font-body); letter-spacing: var(--tracking-wide);
  text-transform: uppercase; color: var(--text-heading);
}
@media (min-width: 900px) { .feat-panel-in { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: var(--space-7); } }

/* ---- Contacto con foto al lado ---- */
.contact-split h2 { font-size: var(--text-3xl); font-weight: 500; max-width: 20ch; }
.contact-split .sec-media img { aspect-ratio: 4 / 5; width: 100%; }
.contact-split .contact-band-cta { justify-self: start; margin-top: var(--space-3); }

/* ---- Catálogo editorial ---- */
.prod-ed-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); }
@media (min-width: 760px) { .prod-ed-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }
.prod-ed-item { display: grid; gap: 10px; }
.prod-ed-item .sec-media img { aspect-ratio: 4 / 5; width: 100%; }
.prod-ed-line { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.prod-ed-line h3 { font-size: var(--text-lg); font-weight: 500; }
.prod-ed-line .price { font: 600 0.95rem var(--font-body); color: var(--detail); white-space: nowrap; }

/* ---- Tira de fotos ---- */
.gal-strip-track {
  display: flex; gap: var(--sec-gap); overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 4px var(--content-pad) 20px; scrollbar-width: none;
}
.gal-strip-track::-webkit-scrollbar { display: none; }
.gal-strip-track figure {
  position: relative; flex: 0 0 min(78vw, 380px); margin: 0; scroll-snap-align: center;
  aspect-ratio: 3 / 4; border-radius: var(--sec-radius); overflow: hidden; background: var(--surface-raised);
}
.gal-strip-track img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); }
.gal-strip-track figcaption {
  position: absolute; inset: auto 0 0 0; padding: 28px 16px 14px; color: #FFF8F5;
  background: linear-gradient(180deg, rgba(12,10,9,0) 0%, rgba(12,10,9,0.72) 100%);
  font: 500 0.92rem var(--font-body);
}

/* ---- Pared de marcas ---- */
.logo-wall-grid { display: grid; gap: var(--sec-gap); grid-template-columns: repeat(var(--sec-cols-sm), minmax(0, 1fr)); align-items: stretch; }
@media (min-width: 760px) { .logo-wall-grid { grid-template-columns: repeat(var(--sec-cols), minmax(0, 1fr)); } }
.logo-wall .logo-band-mark { padding: var(--space-5); }
.logo-wall .logo-band-mark img { max-height: 76px; }

/* ---- Cinta en movimiento ---- */
.marquee { padding: clamp(14px, 2vw, 22px) 0; overflow: hidden; }
.marquee-track { display: flex; width: max-content; }
.marquee-run { display: flex; align-items: center; gap: clamp(18px, 3vw, 36px); padding-right: clamp(18px, 3vw, 36px); }
.marquee-run span {
  font: 500 clamp(1.1rem, 2.4vw, 1.9rem) var(--font-display);
  letter-spacing: 0.01em; white-space: nowrap; color: var(--text-heading);
}
.marquee-run i { font-style: normal; color: color-mix(in srgb, currentColor 55%, transparent); font-size: clamp(0.9rem, 1.6vw, 1.3rem); }
@media (prefers-reduced-motion: no-preference) {
  /* El desplazamiento lo escribe site.js frame a frame (el scroll la
     acelera y la frena), así que aquí solo se avisa al compositor. */
  .marquee-track { will-change: transform; }
}

/* ---- Portada con el nombre de fondo ---- */
.hero-word { position: relative; display: grid; align-content: end; overflow: hidden; padding-bottom: 0; }
.hero-word-in { display: grid; gap: var(--space-4); justify-items: center; text-align: center; position: relative; z-index: 1; }
.hero-word-mark {
  font-family: var(--font-display); font-weight: 500;
  /* Cabe siempre en una línea: el ancho manda sobre el tamaño. */
  font-size: min(16vw, calc(175vw / var(--word-chars, 8)));
  line-height: 0.86; letter-spacing: -0.03em; text-transform: uppercase;
  width: 100%; text-align: center; white-space: nowrap;
}
.hero-word .lede { margin: 0; max-width: 52ch; color: var(--text-muted); }
/* La foto se apoya sobre el nombre sin taparlo: solape corto y alto
   acotado, que es como funciona un recorte en PNG. */
.hero-word-media { position: relative; z-index: 2; margin-top: clamp(-44px, -3.5vw, -12px); }
.hero-word-media img {
  display: block; margin-inline: auto; width: auto; max-width: 100%;
  max-height: min(46dvh, 460px); height: auto; object-fit: contain;
}

/* ---- Blog en la home (secciones `blog_grid` y `blog_editorial`) ----
   Las tarjetas son las mismas de /blog; aquí siguen las opciones de la
   sección (columnas, separación y esquinas) en vez de valores fijos. */
.blog-sec .sec-grid > .blog-card { border-radius: var(--sec-radius); }
.blog-sec .blog-body h3 { font-size: var(--text-xl); }
.blog-sec .blog-body p { margin: 0; font-size: 0.95rem; color: var(--text-muted); }
.blog-sec .blog-media img { object-position: var(--focus, 50% 50%); }

.blog-ed-in { display: grid; gap: var(--sec-gap); align-items: start; }
@media (min-width: 900px) { .blog-ed-in { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); } }
.blog-ed-lead { display: grid; gap: 12px; text-decoration: none; color: var(--text-body); }
.blog-ed-lead .sec-media img { aspect-ratio: 16 / 10; width: 100%; }
.blog-ed-lead h3 { font-size: var(--text-2xl); color: var(--text-heading); text-wrap: balance; }
.blog-ed-lead p { margin: 0; color: var(--text-muted); max-width: 56ch; }
.blog-ed-lead:hover h3 { color: var(--accent); }
.blog-ed-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.blog-ed-list li { border-top: 1px solid var(--border-subtle); }
.blog-ed-list li:last-child { border-bottom: 1px solid var(--border-subtle); }
.blog-ed-list a { display: grid; gap: 6px; padding: var(--space-4) 0; text-decoration: none; color: var(--text-body); }
.blog-ed-list h4 { font-size: var(--text-lg); color: var(--text-heading); }
.blog-ed-list a:hover h4 { color: var(--accent); }
/* El botón cierra la lista: ni línea arriba ni abajo, solo aire. */
.blog-ed-list li.blog-ed-more { border: 0; padding-top: var(--space-4); }

/* ---- Citas en la home (`bookings_band` y `bookings_card`) ----
   El horario semanal es una lista, no una tabla: en el móvil se lee en
   una columna y en el escritorio se reparte sola. */
.bk-days { list-style: none; margin: 0 0 var(--space-6); padding: 0; display: grid; gap: 10px; }
@media (min-width: 700px) {
  .bk-days:not(.is-stacked) { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
}
.bk-days li {
  display: grid; gap: 2px; padding: 12px 16px; border-radius: var(--sec-radius);
  background: color-mix(in srgb, var(--surface-card) 88%, transparent);
  border: 1px solid var(--border-subtle);
}
.bk-days b { font: 600 0.95rem var(--font-body); color: var(--text-heading); }
.bk-days span { font-size: 0.95rem; color: var(--text-muted); }
.bk-note { margin: var(--space-4) 0 0; font-size: 0.95rem; color: var(--text-muted); }
.bk-card .sec-media img { aspect-ratio: 4 / 5; width: 100%; }

/* ---- Consulta en la home (`inquiry_form` e `inquiry_invite`) ---- */
.iq-sec form { max-width: 620px; }
.iq-sec .help { margin: 0; font-size: 0.9rem; color: var(--text-muted); }
.site .iq-sec.sec--align-center form { margin-inline: auto; }
.iq-point {
  display: grid; gap: 8px; padding: clamp(18px, 2.4vw, 26px); border-radius: var(--sec-radius);
  background: color-mix(in srgb, var(--surface-card) 90%, transparent);
  border: 1px solid var(--border-subtle);
}
.iq-point h3 { font-size: var(--text-lg); }
.iq-point p { margin: 0; font-size: 0.95rem; color: var(--text-muted); }
