/* Identidad nueva, común a todo el sitio. Va después del CSS propio de cada página,
   que ya llega traducido a la paleta nueva; aquí van los ajustes que no son de color. */
:root {
  --ds-white: #ffffff; --ds-paper: #f6f5f2; --ds-ink: #1f2326; --ds-stone: #5d605d; --ds-azur: #1e4f74; --ds-rule: #dcdedc; --ds-wa: #25d366;
  --ds-display: "Newsreader", "Iowan Old Style", Georgia, serif;
  --ds-body: "Jost", "Futura", "Avenir Next", "Segoe UI", sans-serif;
}
html, body { background: var(--ds-white); color: var(--ds-ink); }
* { font-synthesis: none; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--ds-azur); outline-offset: 3px; }

/* Títulos: serif fino, sin la palabra final en cursiva dorada */
h1, h2, .hero-title, .section-title, .spot-name, .pricing-name { font-family: var(--ds-display) !important; font-weight: 300 !important; letter-spacing: -.015em; }
h1 em, h2 em, h3 em, h1 i, h2 i, h3 i, .hero-title em, .section-title em, .svcs-title em, .where-title em, .testimonials-title em { font-style: normal !important; color: inherit !important; }
h1, h2 { text-wrap: balance; }

/* Cabeceras que eran foto oscurecida con texto encima: pasan a cabecera clara */
.c-hero { background: var(--ds-paper) !important; background-image: none !important; min-height: 0 !important; padding-top: clamp(8rem, 14vw, 11rem) !important; padding-bottom: clamp(3rem, 6vw, 5rem) !important; color: var(--ds-ink) !important; }
.c-hero::before, .c-hero::after { display: none !important; }
.c-hero h1 { color: var(--ds-ink) !important; }
.c-hero p, .c-hero .c-eyebrow, .c-hero span { color: var(--ds-stone) !important; }

/* Barra de navegación de las páginas interiores: blanca, con filete fino */
body > nav, .topbar, .legal-nav { background: rgba(255, 255, 255, .96) !important; border-bottom: 1px solid var(--ds-rule) !important; box-shadow: none !important; }
body > nav a, body > nav button, .topbar a, .topbar button { color: var(--ds-ink); }
.nav-logo, .brand { font-family: var(--ds-display) !important; font-weight: 300 !important; letter-spacing: .3em !important; text-transform: uppercase; color: var(--ds-ink) !important; }
.nav-logo span { font-family: var(--ds-body); letter-spacing: .24em; color: var(--ds-stone) !important; }

/* WhatsApp: el verde se queda en el icono, que es lo que se reconoce */
#ltFab { background: var(--ds-white) !important; color: var(--ds-ink) !important; border: 1px solid var(--ds-rule) !important; box-shadow: 0 10px 30px -18px rgba(31, 35, 38, .55) !important; }
#ltFab::before { color: var(--ds-wa); }
#ltFab svg, #ltFab svg path { fill: var(--ds-wa) !important; }
.m-action-bar .mab-wa, .fcta-wa { background: var(--ds-white) !important; color: var(--ds-ink) !important; border: 1px solid var(--ds-ink) !important; }
.m-action-bar .mab-wa svg, .fcta-wa svg { fill: var(--ds-wa) !important; }

/* Etiquetas como "Most popular": versalitas, sin píldora */
.proposal-badge, .pr-badge, .badge, .most-popular, .pricing-badge { background: transparent !important; color: var(--ds-azur) !important; border: 0 !important; padding: 0 !important; border-radius: 0 !important; letter-spacing: .2em; text-transform: uppercase; font-size: .78rem !important; }
.pricing-card--featured, .pr-card--featured, .pr-card.featured { box-shadow: inset 0 1px 0 var(--ds-ink) !important; }

/* Tarjetas: sin sombras ni esquinas redondeadas */
.pricing-card, .pr-card, .svc, .testimonial, .rv-card, .included-item, .process-step, .post, .book-card { border-radius: 0 !important; box-shadow: none !important; }

/* Aviso de la vista previa en formularios */
.preview-note { margin-top: .8rem; font: 400 .9rem/1.5 var(--ds-body); color: var(--ds-azur); }

/* Idiomas: solo el código, sin banderas */
.lang-switch { background: transparent !important; border: 0 !important; box-shadow: none !important; color: var(--ds-stone) !important; min-width: 0 !important; padding-inline: .35rem !important; }
.lang-switch svg, .lang-switch img, .lang-switch .flag { display: none !important; }
.lang-switch .lang-code { letter-spacing: .18em; }

/* Números decorativos sin significado sobre las fotos */
.hero-number { display: none !important; }

/* <small> sin regla propia: mínimo 12 px */
small { font-size: max(12px, .8em); }

/* Icono de menú móvil: rayas en tinta */
.h-burger span, .hamburger span, .nav-burger span { background: var(--ds-ink) !important; }
/* Panel decorativo de la Riviera: sin la palabra de fondo */
.riviera-box::before { display: none !important; }

/* Cabecera y pie únicos, los mismos de la portada. Los de cada página se ocultan
   (siguen en el HTML porque sus scripts los buscan). Se fijan las propiedades con
   !important porque el CSS propio de cada página estiliza nav, header, footer y a en general. */
body > nav, body > header.legal-nav, body > footer, body > .top-bar, body > .topbar, #hMenu, #mobileMenu, .h-menu, .mobile-menu { display: none !important; }
/* overflow-x: hidden en body lo vuelve contenedor de scroll y la cabecera deja de quedar fija; clip recorta igual sin ese efecto */
html, body { overflow-x: clip !important; overflow-y: visible !important; }
.ds-top { position: sticky !important; top: 0; z-index: 900; display: flex !important; align-items: center; justify-content: space-between; gap: 1rem 2rem; flex-wrap: wrap;
  padding: .9rem max(clamp(1.1rem, 5vw, 4.5rem), env(safe-area-inset-right, 0px)) .9rem max(clamp(1.1rem, 5vw, 4.5rem), env(safe-area-inset-left, 0px)) !important;
  background: rgba(255, 255, 255, .97) !important; border-bottom: 1px solid var(--ds-rule); margin: 0 !important; }
.ds-brand { font: 300 1.2rem/1 var(--ds-display) !important; letter-spacing: .32em !important; text-transform: uppercase; text-decoration: none !important; white-space: nowrap; color: var(--ds-ink) !important; display: inline-flex; align-items: center; min-height: 44px; }
.ds-nav { display: flex !important; flex-wrap: wrap; align-items: center; gap: 0 clamp(.9rem, 1.6vw, 1.8rem); position: static !important; background: none !important; padding: 0 !important; margin: 0 !important; transform: none !important; opacity: 1 !important; visibility: visible !important; height: auto !important; width: auto !important; box-shadow: none !important; border: 0 !important; }
.ds-nav a, .ds-foot-nav a { font: 400 .78rem/1.5 var(--ds-body) !important; letter-spacing: .2em !important; text-transform: uppercase; text-decoration: none !important; color: var(--ds-stone) !important; display: inline-flex !important; align-items: center; min-height: 44px; padding: 0 !important; background: none !important; border: 0 !important; }
.ds-nav a:hover, .ds-nav a[aria-current="page"], .ds-foot-nav a:hover { color: var(--ds-ink) !important; }
.ds-nav a[aria-current="page"] { box-shadow: inset 0 -1px 0 var(--ds-ink) !important; }
.ds-lang { display: inline-flex; gap: .9rem; margin-left: clamp(.4rem, 1.5vw, 1.4rem); padding-left: clamp(.9rem, 1.6vw, 1.8rem); border-left: 1px solid var(--ds-rule); }
.ds-menu { display: none; }
.ds-foot { display: flex !important; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.2rem 2rem; margin: 0 !important;
  padding: 3rem max(clamp(1.1rem, 5vw, 4.5rem), env(safe-area-inset-right, 0px)) 3.5rem max(clamp(1.1rem, 5vw, 4.5rem), env(safe-area-inset-left, 0px)) !important;
  background: var(--ds-white) !important; border-top: 1px solid var(--ds-rule); color: var(--ds-ink) !important; text-align: left !important; }
.ds-foot-nav { display: flex; flex-wrap: wrap; gap: 0 1.6rem; }
@media (min-width: 901px) and (max-width: 1280px) { .ds-nav { gap: 0 .85rem; } .ds-nav a { font-size: .72rem !important; letter-spacing: .1em !important; } .ds-lang { margin-left: .4rem; padding-left: .85rem; } .ds-brand { font-size: 1.05rem !important; letter-spacing: .24em !important; } }
@media (max-width: 900px) {
  .ds-menu { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; justify-content: flex-end; cursor: pointer; font: 400 .78rem/1.5 var(--ds-body); letter-spacing: .2em; text-transform: uppercase; color: var(--ds-ink); }
  .ds-menu:focus-visible { outline: 2px solid var(--ds-azur); outline-offset: 3px; }
  .ds-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: stretch; gap: 0; padding-bottom: .4rem !important; max-height: calc(100dvh - 5rem); overflow-y: auto; }
  .ds-nav.open { display: flex !important; }
  .ds-nav > a { border-top: 1px solid var(--ds-rule) !important; color: var(--ds-ink) !important; min-height: 48px; }
  .ds-lang { margin: 0; padding: 0; border: 0; border-top: 1px solid var(--ds-rule); gap: 1.6rem; }
  .ds-lang a { min-height: 48px; }
}
@media (max-width: 420px) { .ds-brand { font-size: 1rem !important; letter-spacing: .22em !important; } }
/* Página de gracias: su body centra todo con flex y 32 px de margen; la cabecera y el pie ocupan todo el ancho */
body.thank-you-page > .ds-top, body.thank-you-page > .ds-foot { align-self: stretch; width: auto; }
body.thank-you-page > .ds-top { margin: -32px -32px auto !important; }
body.thank-you-page > .ds-foot { margin: auto -32px -32px !important; }

/* Galerías de retratos y bodas: el pie va sobre el oscurecido de la foto, así que en blanco */
.gallery-overlay, .gallery-overlay * { color: #fff !important; }
.gallery-overlay .gallery-zoom { border-color: rgba(255, 255, 255, .8) !important; }
/* Comercial: la rejilla de 3 servicios no puede ser más ancha que la pantalla */
.services-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
@media (max-width: 1280px) { .service-block { padding: 3rem 1.8rem !important; } }
@media (max-width: 1100px) { .services { padding-left: 1.5rem !important; padding-right: 1.5rem !important; } .services-grid { grid-template-columns: minmax(0, 1fr) !important; max-width: 46rem; margin-inline: auto; } .service-block { border-right: 0 !important; border-bottom: 1px solid var(--ds-rule) !important; } }
/* Bodas: "Full Wedding" es a consulta, no está desactivada; se lee como las demás */
.pricing-card--muted .pricing-list li { opacity: 1 !important; color: var(--ds-stone) !important; }
.pricing-card--muted .pricing-btn { border-color: var(--ds-ink) !important; color: var(--ds-ink) !important; }

/* ── Correcciones de la revisión ── */
/* Hover visible en todos los botones de contorno: se rellenan de tinta */
:is(.nav-book, .nav-cta, .form-submit, .pr-btn, button.gold, a.ghost, .service-cta, .pricing-btn, .book-btn, .cta-btn, .btn-outline, .ab-cta-actions a, .go):hover { background: var(--ds-ink) !important; color: #fff !important; border-color: var(--ds-ink) !important; }
:is(.nav-book, .nav-cta, .form-submit, .pr-btn, button.gold, a.ghost, .service-cta, .pricing-btn, .book-btn, .cta-btn, .ab-cta-actions a) { transition: background-color .25s, color .25s, border-color .25s !important; }
.location-item:hover { color: var(--ds-ink) !important; }
/* Sin esquinas redondeadas ni píldoras (los círculos de iconos y puntos se quedan) */
:is(a, button, div, li, figure, img, input, select, textarea, section, article, span, label, details, summary):not(.location-dot):not(.gallery-zoom):not(.method-ico):not(.addon-dot):not([class*="icon"]):not([class*="dot"]):not([class*="avatar"]):not(#ltFab):not(.check-circle):not(.ty-check) { border-radius: 0 !important; }
/* Pasos y "qué incluye" en una columna en móviles estrechos */
@media (max-width: 480px) { .included-grid, .process-steps, .policy-steps, .steps, .pr-steps { grid-template-columns: minmax(0, 1fr) !important; } }
/* Plantilla vieja en pantallas bajas: la foto deja ver el título en la primera pantalla */
@media (max-width: 900px) { section.hero:has(> .hero-left) { min-height: 0 !important; height: auto !important; grid-template-rows: auto auto !important; } .hero-left { justify-content: flex-start !important; min-height: 0 !important; } }
/* La foto del hero deja sitio para cabecera (74 px), barra inferior (70 px) y el título entero (~300 px) en cualquier alto */
@media (max-width: 900px) { .hero-right { max-height: max(200px, calc(100svh - 444px)) !important; min-height: 0 !important; overflow: hidden; } .hero-right img { height: max(200px, calc(100svh - 444px)) !important; object-fit: cover; } }
/* "Other places to propose": lista limpia */
.location-list a, .location-item { text-decoration: none !important; }
.location-item { gap: 1rem !important; padding-left: 0 !important; color: var(--ds-ink) !important; font-size: .95rem !important; letter-spacing: 0 !important; }
.location-item small { display: block; margin-top: .2rem; color: var(--ds-stone); letter-spacing: .14em; text-transform: uppercase; font-size: max(12px, .68rem); }
.location-dot { width: 6px !important; height: 6px !important; flex: 0 0 6px; background: var(--ds-ink) !important; }
/* Contacto: "Book →" como botón, y aire antes del pie */
.book-card .go { display: inline-flex !important; align-items: center; justify-content: center; min-height: 44px; margin-top: .9rem; padding: 0 1.4rem; border: 1px solid var(--ds-ink); color: var(--ds-ink) !important; }
.policy-section { padding-bottom: 5rem !important; }
/* Enlace de WhatsApp dentro de una frase: va en la línea, no como bloque aparte */
.included-item-row { display: block !important; padding-left: 1.6rem; position: relative; }
.included-item-row > .check { position: absolute; left: 0; }
li:has(> .addon-dot) { display: block !important; padding-left: 1.4rem; position: relative; }
li:has(> .addon-dot) > .addon-dot { position: absolute; left: 0; }
/* Visor de fotos: sin el dorado ni el negro cálido de la paleta vieja */
.lightbox { background: rgba(20, 22, 24, .96) !important; }
.lightbox.open .lightbox-img-wrap::after { border-color: rgba(255, 255, 255, .2) !important; border-top-color: #fff !important; }
/* Testimonios: flechas legibles, tarjetas a su altura y la flecha ↗ pegada a su texto */
.testimonials-btn { opacity: 1 !important; color: var(--ds-ink) !important; border-color: var(--ds-ink) !important; }
.testimonials-btn:disabled, .testimonials-btn[aria-disabled="true"] { opacity: .35 !important; }
.testimonials-track { align-items: flex-start !important; }
a[href*="google"] { white-space: nowrap; }
/* Enlace "View all N photos" con área táctil de 44 px */
.spot-all { display: inline-flex !important; align-items: center; min-height: 44px; }
/* Gracias: la flecha de "Back to home" se ve */
.back-text { color: var(--ds-ink) !important; border-bottom-color: var(--ds-ink) !important; }
.back-arrow { background: var(--ds-ink) !important; }
.back-arrow::after { border-color: var(--ds-ink) !important; }
/* Anillos decorativos tenues detrás de los títulos */
.hero-left::after, .hero-left::before, .hero-ring, .deco-ring { display: none !important; }

/* About: el botón de WhatsApp como los demás, con el verde solo en la marca */
.ab-cta a.wa { background: transparent !important; color: var(--ds-ink) !important; border: 1px solid var(--ds-ink) !important; }
.ab-cta a.wa:hover { background: var(--ds-ink) !important; color: #fff !important; }

/* ── Segunda revisión ── */
/* El CTA del hero es un enlace de texto, no un botón: al pasar el ratón no se rellena */
.hero-cta:hover { background: transparent !important; color: inherit !important; border-color: transparent !important; }
.hero-cta:hover .hero-cta-text { color: var(--ds-ink) !important; border-bottom-color: var(--ds-ink) !important; }
/* "See real proposals" no se monta sobre el precio */
.hero-cta-group { row-gap: 1.2rem !important; }
.hero-price-hint { margin-top: 1.4rem !important; }
/* Pricing: la nota del ramo no queda tachada por el filete de la lista */
.pr-sec ul + .pr-intro { margin-top: 1.4rem !important; }
/* Hover en los botones que faltaban */
:is(.hub-cta a, .hub-cta button, .rv-cta a, .pr-cta a, .testimonials-btn):hover { background: var(--ds-ink) !important; color: #fff !important; border-color: var(--ds-ink) !important; }
/* Áreas táctiles de 44 px sin mover el texto */
/* área táctil de 44 px sin mover el texto: padding que se compensa con margen negativo (el subrayado queda pegado y la miga en dos líneas no deja hueco) */
:is(.breadcrumb a, a[href*="google."], .hero-service-tag) { display: inline-block; padding-block: .75rem; margin-block: -.75rem; }
.hero-cta { min-height: 44px; }
.back { min-height: 44px; }
/* About en el móvil: la foto deja ver el título en la primera pantalla */
@media (max-width: 900px) { .ab-hero { min-height: 0 !important; } .ab-hero img { max-height: max(200px, calc(100svh - 444px)) !important; } .ab-hero-text { padding-top: 1.6rem !important; } }
/* retratos: pestaña activa y foco visibles (fuera del CSS de la página para que restyle no los apague) */
.st-tabs button[aria-selected="true"] { box-shadow: inset 0 -2px 0 var(--ds-ink); }
.st-tabs button:focus-visible, .st-card:focus-visible, #st-lb button:focus-visible, #st-lb a:focus-visible { outline: 2px solid var(--ds-azur); outline-offset: 3px; }
/* retratos: el hero entra en la primera pantalla con su botón; en el móvil el recorte centra la cara (el alto lo fija la regla general para que el título no quede bajo la barra) */
@media (min-width: 901px) { section.hero.st-hero { min-height: 0 !important; height: clamp(600px, calc(100svh - 74px), 860px) !important; } .st-hero .hero-left { justify-content: center !important; padding-top: 2rem !important; padding-bottom: 2rem !important; } .st-hero .hero-right img { height: 100% !important; object-fit: cover; } }
@media (max-width: 900px) { .st-hero .hero-right img { object-position: center 60% !important; } }
/* retratos: enlaces de texto con área táctil de 44 px */
.form-alternative a, .pricing-compare a, .pricing-cross a, .addons-list a, .reviews-more a, a.see-all-reviews { display: inline-flex; align-items: center; min-height: 44px; }
.st-tabs button { min-width: 44px; min-height: 44px; }
#lbPrev, #lbNext { min-width: 44px; min-height: 44px; }
/* proposals: las etiquetas blancas sobre las fotos necesitan un velo para leerse (≥4,5:1) */
.hub-gal span { background: linear-gradient(to top, rgba(20, 22, 24, .82), rgba(20, 22, 24, .65) 70%, transparent) !important; text-shadow: 0 1px 2px rgba(0, 0, 0, .5); }
/* revisión v13 */
/* foco de pestañas y tarjetas: que el contenedor con scroll no recorte el anillo */
.st-tabs button:focus-visible { outline-offset: -3px; }
.st-row { padding-top: 6px !important; }
/* "See all reviews" y "Reviews on Google": 44 px de alto con el subrayado pegado al texto y alineados */
.testimonials-all a[href] { display: inline-flex; align-items: center; min-height: 44px; padding-block: 0 !important; margin-block: 0 !important; border-bottom: 0 !important; text-decoration: underline !important; text-decoration-color: var(--ds-ink) !important; text-underline-offset: .35em; }
/* visor en el móvil: contador y botón en una sola línea */
@media (max-width: 480px) { .st-lb-bar, .st-lb-foot { letter-spacing: .12em; gap: .5rem; } .st-lb-bar span, .st-lb-foot a { white-space: nowrap; } .st-lb-foot a { padding: 0 1rem; } }
/* revisión de bodas (v16) */
/* visor: sin ancho extra por la barra de scroll y título que se recorta antes que el contador o "Close" */
.st-lb { width: 100% !important; max-width: 100% !important; box-sizing: border-box; }
#st-lb-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#st-lb-c, #st-lb-x { flex: none; }
/* enlaces de WhatsApp dentro del texto y FR/ES: 44 px de área táctil sin mover el texto */
:is(p, li) > a[href*="wa.me"] { display: inline-block; padding-block: .75rem; margin-block: -.75rem; }
.ds-lang a { min-width: 44px; justify-content: center; }
/* visores viejos (data-album): por encima de la cabecera fija (z-index 900) para que "Close" se pueda tocar */
.lightbox { z-index: 1000 !important; }
/* WhatsApp dentro de las respuestas del FAQ */
.acc-body a[href*="wa.me"] { display: inline-block; padding-block: .75rem; margin-block: -.75rem; }
/* bodas: enlace "terms" con el color del texto */
.pricing-deposit a { color: inherit; text-underline-offset: 3px; }
