/*
Theme Name:   CETRADEC Child
Theme URI:    https://cetradec.com/
Description:  Tema hijo de CETRADEC S.L. — centro de traumatología del deporte y columna en Valencia. Contiene las personalizaciones del proyecto para que las actualizaciones del tema padre no las sobrescriban.
Author:       CETRADEC S.L.
Author URI:   https://cetradec.com/
Template:     twentytwentyfive
Version:      1.3.1
Requires at least: 6.0
Requires PHP: 8.0
License:      GNU General Public License v2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  cetradec-child
Tags:         salud, clinica, traumatologia
*/

/* =============================================================================
   TEMA PADRE — resuelto el 26/08/2026 (validación de compatibilidad)
   Template: twentytwentyfive — Twenty Twenty-Five, tema núcleo de WordPress,
   ya instalado (inactivo) en el hosting. Elegido sobre «Extendable» (Extendify,
   el que trae IONOS por defecto) por ser mantenido por el propio equipo de
   WordPress, sin dependencia de un plugin de onboarding de terceros.

   Twenty Twenty-Five es un tema de bloques (FSE): las plantillas van en
   /templates/ y /parts/, no en ficheros PHP clásicos. Por eso 404.php ya NO
   se usa — ver /templates/404.html, que sustituye su contenido con bloques
   nativos (Page List en vez del array de enlaces, mismo criterio: solo
   enlazar páginas que existen realmente). 404.php se conserva en el paquete
   solo como referencia histórica; no lo carga WordPress con este tema padre.

   Este fichero solo debe contener CSS propio del proyecto. El CSS del tema padre
   se carga desde functions.php, no con @import (que bloquea el renderizado).

   Variables de la identidad visual «Impulso» aplicada a la maqueta el 25/07/2026
   (preview/index.html). Ajusta los valores si el cliente valida otro diseño.
   PENDIENTE: verificar el contraste de esta paleta contra WCAG 2.1 AA — acción #44.
   ============================================================================= */

:root {
  /* Actualizado 2026-09-06 a la paleta corporativa CETRADEC. */
  --cet-bg:        #FFFFFF;  /* fondo general */
  --cet-surface:   #F2F7F8;  /* tarjetas y bloques */
  --cet-ink:       #26383D;  /* texto principal */
  --cet-muted:     #617277;  /* texto secundario */
  --cet-line:      #E1E9EB;  /* separadores */
  --cet-brand:     #2F6F8F;  /* azul sanitario */
  --cet-brand-2:   #174A5B;  /* azul petroleo */
  --cet-accent:    #5FA89B;  /* verde salud */
  --cet-focus:     #5A9CBE;  /* anillo de foco accesible sobre claro u oscuro */
}

/* Foco visible en toda la web: requisito WCAG y hoy ausente en la maqueta. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--cet-focus);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Enlace de salto al contenido, para navegación por teclado y lectores de pantalla. */
.cet-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 10000;
  padding: 12px 18px;
  background: var(--cet-brand-2);
  color: #fff;
  font-weight: 700;
  text-decoration: none;
}
.cet-skip-link:focus {
  left: 8px;
  top: 8px;
}

/* Barra fija de contacto en móvil — acción #34, hoy inexistente en la maqueta.
   El markup lo inyecta functions.php. */
.cet-mobile-bar {
  display: none;
}
@media (max-width: 780px) {
  .cet-mobile-bar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9990;
    background: var(--cet-line);
    box-shadow: 0 -6px 18px rgba(0, 0, 0, .35);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .cet-mobile-bar a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 56px;
    font-weight: 600;
    font-size: .95rem;
    text-decoration: none;
    background: var(--cet-surface);
    color: var(--cet-ink);
  }
  .cet-mobile-bar a.cet-cta {
    background: var(--cet-brand-2);
    color: #fff;
  }
  /* Evita que la barra tape el final de la página */
  body {
    padding-bottom: 60px;
  }
}

/* Respeto por quien ha pedido menos animación en su sistema operativo.
   Ausente en la maqueta y presente en las 3 propuestas de landing. */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* Impresión: que una ficha de patología se pueda imprimir y entregar al paciente. */
@media print {
  .cet-mobile-bar,
  .cet-skip-link,
  nav,
  footer .widget,
  .cookie-banner {
    display: none !important;
  }
  body {
    background: #fff !important;
    color: #000 !important;
  }
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: .8em;
  }
}

/* =============================================================================
   SISTEMA DE DISEÑO "IMPULSO" — replicado de preview/index.html el 26/08/2026.
   Mismos nombres de variable y mismos componentes visuales que la maqueta de
   referencia (ver preview/index.html, líneas ~46-308). En la maqueta, header y
   footer eran <header class="site">/<footer class="site"> estáticos dentro de
   una SPA de una sola página (botones onclick="show('id')"); aquí son
   plantillas reales — templates/parts/header.html y templates/parts/footer.html —
   con hrefs a las URL reales del sitio (ver 04_seo/arquitectura-seo.md).
   No se han copiado los estilos «.cookie-consent-*» de la maqueta: el
   consentimiento de cookies real lo gestiona el plugin ya instalado en
   WordPress, no debe duplicarse aquí. Sí se conserva un modal genérico
   (.modal-overlay/.modal-box) para «Pedir cita» y para el visor de la
   galería de «El centro».
   ============================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root{
  /* Paleta corporativa CETRADEC (aplicada 2026-09-06): modo oscuro coherente, derivado
     del azul sanitario / petroleo y verde salud del cliente (paleta clara mas abajo). */
  --bg:#12262D; --surface:#1A333B; --ink:#F2F7F8; --muted:#9FB4BA; --line:#2E4B55;
  --brand:#5A9CBE; --brand-2:#39748D; --brand-soft:rgba(90,156,190,.10); --accent:#ffb020;
  --green:#82C3B4; --green-strong:#82C3B4;
  --pend:#ffcf6b; --pend-bg:rgba(255,176,32,.12); --pend-line:rgba(255,176,32,.4);
  --shadow:0 20px 45px -20px rgba(0,0,0,.65);
  --radius:16px;
  --header-bg:rgba(18,38,45,.86);
  --footer-bg:#0D1E24; --footer-strong:#F2F7F8;
  --footer-tint:rgba(242,247,248,.05); --footer-tint-hover:rgba(242,247,248,.09);
  color-scheme: dark;
}
[data-theme="light"]{
  /* Paleta corporativa CETRADEC (aplicada 2026-09-06): azul sanitario + verde salud
     sobre fondo blanco. --muted ajustado 4% mas oscuro que el #66777C solicitado para
     cumplir WCAG AA (4.5:1) tambien sobre el fondo alterno --bg-alt. --green-strong es una
     variante 4% mas clara del verde para fondos solidos con texto oscuro encima (el verde
     de marca puro, #5FA89B, no alcanza 3:1 como color de texto/borde). */
  --bg:#FFFFFF; --bg-alt:#F2F7F8; --surface:#FFFFFF; --ink:#26383D; --muted:#617277; --line:#E1E9EB;
  --brand:#2F6F8F; --brand-2:#174A5B; --brand-soft:rgba(47,111,143,.08);
  --green:#5FA89B; --green-strong:#65AB9F;
  --shadow:0 20px 45px -20px rgba(20,24,30,.18);
  --header-bg:rgba(255,255,255,.86);
  --footer-bg:#F2F7F8; --footer-strong:#26383D;
  --footer-tint:rgba(38,56,61,.05); --footer-tint-hover:rgba(38,56,61,.09);
  --pend:#8a5a00; --pend-bg:rgba(255,176,32,.14); --pend-line:rgba(255,176,32,.55);
  color-scheme: light;
}
/* La cabecera .hero mantiene un fondo oscuro fijo en ambos temas (efecto visual de
   marca); redefinimos brand/brand-2 aqui a los mismos tonos accesibles del modo oscuro
   para que el texto de acento siga leyendose con contraste AA incluso en tema claro. */
.hero{ --brand:#5A9CBE; --brand-2:#39748D; --brand-soft:rgba(90,156,190,.10); }
*{box-sizing:border-box}
body{
  background:
    radial-gradient(circle at 8% 0%, rgba(47,111,143,.10), transparent 40%),
    radial-gradient(circle at 92% 12%, rgba(95,168,155,.10), transparent 45%),
    var(--bg);
  color:var(--ink);
  font-family:'Inter',ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  line-height:1.65;
  transition:background-color .4s ease, color .4s ease;
}
@media (prefers-reduced-motion: reduce){
  body,header.site,footer.site,.theme-toggle{transition:none!important}
}
a{color:inherit}
.wrap{width:min(1120px,calc(100% - 32px));margin:0 auto}

/* Header */
header.site{background:var(--header-bg);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:background-color .4s ease}
header.wp-block-template-part{position:sticky;top:0;z-index:20}
.theme-toggle{width:40px;height:40px;flex:none;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:1rem;margin-left:8px;transition:transform .3s cubic-bezier(.34,1.56,.64,1), background .3s ease}
.theme-toggle:hover{transform:rotate(-12deg) scale(1.07)}
.nav{display:flex;align-items:center;gap:20px;padding:16px 0}
.logo{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:1.3rem;letter-spacing:.02em;color:var(--ink);text-decoration:none;font-family:'Inter',sans-serif;text-transform:uppercase}
.logo span{color:var(--brand)}
.logo-img{height:38px;width:auto;display:block;border-radius:8px;filter:drop-shadow(0 0 10px rgba(47,111,143,.35))}
.nav .links{display:flex;align-items:center;gap:4px;margin-left:auto;flex-wrap:wrap}
.nav .links>a,.nav .links .nav-disabled,.nav .links .nav-item .nav-parent{font:inherit;font-weight:600;color:var(--muted);
  padding:9px 13px;border-radius:10px;font-size:.86rem;text-transform:uppercase;letter-spacing:.03em;text-decoration:none;display:inline-block;transition:color .25s ease, background .25s ease}
.nav .links>a.active,.nav .links>a:hover,.nav .links .nav-item:hover .nav-parent,.nav-item.open .nav-parent{color:var(--brand);background:var(--brand-soft)}
.nav .links .nav-disabled{cursor:default;opacity:.55}
.nav .links .nav-item{position:relative;display:flex;align-items:center}
.nav .links .nav-item .nav-parent{padding-right:6px}
.nav-chevron{background:none;border:0;padding:6px;margin:0;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;border-radius:8px}
.nav-chevron:hover{color:var(--brand)}
.nav-chevron .chev{transition:transform .2s ease;opacity:.85;pointer-events:none}
.nav-item.open .nav-chevron .chev{transform:rotate(180deg)}
.dropdown-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:240px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:8px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease,visibility .2s ease;z-index:30}
.dropdown-menu a{display:block;padding:10px 12px;border-radius:10px;color:var(--ink);font-weight:600;font-size:.88rem;text-decoration:none;white-space:nowrap;transition:background .2s ease,color .2s ease}
.dropdown-menu a:hover{background:var(--brand-soft);color:var(--brand)}
.nav-item:hover .dropdown-menu,.nav-item.open .dropdown-menu{opacity:1;visibility:visible;transform:translateY(0)}
@media(max-width:820px){
  .dropdown-menu{position:static;min-width:0;box-shadow:none;border:0;padding:0 0 0 14px;max-height:0;overflow:hidden;opacity:1;visibility:visible;transform:none;transition:max-height .2s ease}
  .nav-item:hover .dropdown-menu{max-height:0}
  .nav-item.open .dropdown-menu,.nav-item.open:hover .dropdown-menu{max-height:220px}
}

/* Menu movil "bocadillo" (hamburguesa) - 07/09/2026 */
.menu-toggle{display:none;width:40px;height:40px;flex:none;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);align-items:center;justify-content:center;cursor:pointer;padding:0;transition:color .25s ease,background .25s ease}
.menu-toggle:hover{color:var(--brand)}
.menu-toggle svg{pointer-events:none}
@media(max-width:820px){
  .menu-toggle{display:inline-flex;margin-left:auto}
  .nav .links{display:none;position:absolute;top:calc(100% + 12px);left:16px;right:16px;margin-left:0;flex-direction:column;align-items:stretch;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:10px;z-index:40}
  .nav .links::before{content:"";position:absolute;top:-7px;right:26px;width:14px;height:14px;background:var(--surface);border-left:1px solid var(--line);border-top:1px solid var(--line);border-radius:3px 0 0 0;transform:rotate(45deg)}
  .nav .links.open{display:flex}
  .nav .links .nav-item{flex-wrap:wrap;width:100%}
  .nav .links .nav-item .dropdown-menu{flex-basis:100%;width:100%}
  .nav .links>a,.nav .links .nav-disabled,.nav .links .nav-item .nav-parent{width:100%}
}

.btn{display:inline-flex;align-items:center;gap:9px;font-weight:600;text-decoration:none;
  border-radius:12px;padding:12px 20px;cursor:pointer;border:0;font-size:.86rem;text-transform:uppercase;letter-spacing:.03em;font-family:'Inter',sans-serif;transition:transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s ease, background .3s ease}
.btn-primary{background:var(--brand-2);color:#fff;box-shadow:0 14px 28px -12px rgba(23,74,91,.45)}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 18px 36px -14px rgba(95,168,155,.5)}
.btn-ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px)}
.btn-tel{background:var(--brand-soft);color:var(--brand)}
.btn-tel:hover{transform:translateY(-2px)}
.btn-outline-brand{background:transparent;color:var(--brand);border:1.5px solid var(--brand);font-weight:600}
.btn-outline-brand:hover{background:var(--brand-soft)}
.nav .cta{margin-left:8px}

main{padding-bottom:40px}
section{padding:56px 0}
.hero{background:
    radial-gradient(circle at 15% 20%, rgba(90,156,190,.22), transparent 45%),
    radial-gradient(circle at 85% 10%, rgba(130,195,180,.20), transparent 50%),
    linear-gradient(135deg,#0a0d11,#141922 60%,#1c1420);
  color:#fff;position:relative;overflow:hidden}
.hero .kicker{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:.85;margin:0 0 14px;color:var(--brand)}
.hero h1{font-family:'Inter',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:-.01em;font-size:clamp(2rem,4.6vw,3.1rem);line-height:1.06;margin:0 0 16px;max-width:none}
.hero p.lead{font-size:1.1rem;opacity:.92;max-width:none;margin:0 0 26px;font-weight:500}
.hero .cta-row{display:flex;gap:12px;flex-wrap:wrap}
h2.sec{font-family:'Inter',sans-serif;font-weight:600;text-transform:uppercase;letter-spacing:-.01em;font-size:1.6rem;margin:0 0 10px;color:var(--ink)}
.sec-sub{color:var(--muted);margin:0 0 30px;max-width:60ch}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.16,1,.3,1), border-color .35s ease}
.card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--brand),var(--brand-2));transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.16,1,.3,1)}
.card:hover{transform:translateY(-6px);border-color:var(--brand)}
.card:hover::before{transform:scaleX(1)}
.card h3{margin:0 0 10px;font-size:1.15rem;color:var(--ink);font-family:'Inter',sans-serif;font-weight:600}
.card p{margin:0 0 10px;color:var(--muted)}
.card .lnk{font-weight:700;color:var(--brand);text-decoration:none;font-size:.88rem;text-transform:uppercase;letter-spacing:.02em}
.card .lnk:hover{color:var(--brand-2)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:s}
.step{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:22px;transition:transform .3s ease}
.step:hover{transform:translateY(-4px)}
.step::before{counter-increment:s;content:counter(s);display:inline-flex;width:34px;height:34px;
  align-items:center;justify-content:center;background:var(--brand-2);color:#fff;border-radius:10px;font-weight:700;margin-bottom:12px;font-family:'Inter',sans-serif}
.step h4{margin:0 0 6px;font-size:1rem;font-family:'Inter',sans-serif;font-weight:600;text-transform:none}
.step p{margin:0;color:var(--muted);font-size:.9rem}
.highlight-note{margin-top:24px;background:rgba(47,111,143,.08);border:1px solid rgba(47,111,143,.35);border-radius:14px;padding:16px 20px;color:var(--brand);font-weight:600;font-size:.95rem}
.pills{display:flex;flex-wrap:wrap;gap:10px}
.pill{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:10px 18px;font-weight:600;color:var(--ink);text-decoration:none;font:inherit;cursor:pointer;text-transform:uppercase;font-size:.82rem;letter-spacing:.02em;transition:all .3s cubic-bezier(.34,1.56,.64,1)}
.pill:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-3px)}
.pill.active{background:var(--brand-2);color:#fff;border-color:transparent}
.pat-panel{width:100%;margin-top:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;box-shadow:var(--shadow)}
.pat-panel h4{margin:0 0 10px;color:var(--brand);font-size:1.15rem;font-family:'Inter',sans-serif;font-weight:600}
.pat-panel p{margin:0 0 10px;color:var(--ink);line-height:1.65}
.pat-panel .pat-panel-note{margin:0;font-size:.8rem;color:var(--muted)}

.pend{background:var(--pend-bg);border:1px dashed var(--pend-line);color:var(--pend);
  border-radius:10px;padding:3px 9px;font-size:.8rem;font-weight:700;display:inline-block}
.pend-block{background:var(--pend-bg);border:1px dashed var(--pend-line);border-radius:14px;padding:16px 18px;color:var(--pend)}
.pend-block b{color:var(--pend)}
.pend-block code,.hero code,.legend code{background:rgba(255,255,255,.06);border:1px solid var(--pend-line);border-radius:6px;padding:1px 6px;font-size:.85em;color:var(--pend)}
.hero code{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:#fff}
.legend code{background:rgba(255,255,255,.05);border-color:var(--line);color:var(--brand)}

table.tarifas{width:100%;border-collapse:collapse;background:var(--surface);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
table.tarifas th,table.tarifas td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);font-size:.92rem;color:var(--ink)}
table.tarifas th{background:var(--brand-soft);color:var(--brand);font-family:'Inter',sans-serif;font-weight:600;text-transform:uppercase;font-size:.78rem;letter-spacing:.03em}

.band{background:linear-gradient(120deg, rgba(47,111,143,.1), rgba(95,168,155,.1));border:1px solid var(--line);border-radius:24px;padding:40px;text-align:center}
.band h2{color:var(--ink);margin:0 0 10px;font-family:'Inter',sans-serif;text-transform:uppercase;font-weight:600}
.band .cta-row{justify-content:center;display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}

footer.site{background:var(--footer-bg);color:var(--muted);padding:44px 0 26px;margin-top:20px;border-top:1px solid var(--line);transition:background-color .4s ease}
footer.site .cols{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:24px}
footer.site h5{color:var(--footer-strong);margin:0 0 12px;font-size:1rem;display:flex;align-items:center;gap:8px;font-family:'Inter',sans-serif;font-weight:600;text-transform:uppercase}
.footer-logo-img{height:30px;width:auto;display:block;border-radius:6px}
footer.site a{color:var(--muted);text-decoration:none;display:block;margin-bottom:7px;font-size:.9rem;transition:color .25s ease}
footer.site a:hover{color:var(--brand)}
footer.site .legal{border-top:1px solid var(--line);margin-top:28px;padding-top:16px;font-size:.8rem;color:var(--muted)}
footer.site .quick-actions{display:flex;flex-direction:column;gap:10px}
footer.site .quick-actions a{display:inline-flex;align-items:center;gap:9px;font-weight:700;color:var(--footer-strong);background:var(--footer-tint);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:0;font-size:.84rem;cursor:pointer;transition:all .25s ease}
footer.site .quick-actions a:hover{background:var(--footer-tint-hover);border-color:var(--brand);transform:translateY(-2px)}
footer.site .quick-actions .qa-dot{width:8px;height:8px;border-radius:50%;flex:none}

@media(max-width:820px){
  .grid2,.grid3,.steps,footer.site .cols{grid-template-columns:1fr}
  .nav .cta{display:none}
}

/* Modal genérico — usado por "Pedir cita" y por el visor de la galería de "El centro". */
.modal-overlay{position:fixed;inset:0;background:rgba(5,7,10,.75);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
.modal-overlay.open{display:flex}
.modal-box{background:var(--surface);border:1px solid var(--line);border-radius:20px;max-width:440px;width:100%;padding:32px;position:relative;box-shadow:0 30px 70px -20px rgba(0,0,0,.7);max-height:90vh;overflow:auto}
.modal-box-wide{max-width:600px}
.modal-close{position:absolute;top:16px;right:18px;background:none;border:0;font-size:1.7rem;line-height:1;color:var(--muted);cursor:pointer;transition:color .2s ease}
.modal-close:hover{color:var(--brand-2)}
.form-row{margin-bottom:14px;display:flex;flex-direction:column;gap:6px}
.form-row label{font-weight:700;font-size:.86rem;color:var(--ink)}
.form-row input,.form-row textarea{font:inherit;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical;width:100%}
.form-row input:focus,.form-row textarea:focus{outline:2px solid var(--brand);outline-offset:1px}
.modal-note{font-size:.78rem;color:var(--muted);margin-top:2px}
.map-placeholder{padding:46px 20px;text-align:center;color:var(--muted);font-size:.9rem}
.map-placeholder p{max-width:44ch;margin-left:auto;margin-right:auto}
.map-placeholder .btn{margin-top:12px}

/* Servicios estructurados */
.svc-page-sec{padding:48px 0}
.legend{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 16px;margin-bottom:28px;font-size:.85rem;color:var(--muted)}
.svc-tag{display:inline-block;font-size:.66rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:3px 10px;vertical-align:middle}
.tag-pat{background:rgba(47,111,143,.14);color:var(--brand)}
.tag-svc{background:rgba(23,74,91,.14);color:var(--brand)}
.svc-group{margin-bottom:42px;scroll-margin-top:90px}
.svc-group-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 4px}
.svc-group-head h2{color:var(--ink);font-size:1.5rem;margin:0;font-family:'Inter',sans-serif;text-transform:uppercase;font-weight:600}
.svc-group-head .url{font-size:.75rem;color:var(--brand);font-weight:700;font-family:ui-monospace,monospace}
.svc-group>p.intro{color:var(--muted);margin:0 0 22px;max-width:72ch}
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.svc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .3s cubic-bezier(.16,1,.3,1),border-color .3s ease}
.svc-card:hover{transform:translateY(-5px);border-color:var(--brand)}
.svc-img{display:block;width:100%;aspect-ratio:4/3;height:auto}
.svc-body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.svc-head{display:flex;align-items:center;gap:8px;justify-content:space-between;margin:0 0 8px}
.svc-head h3{margin:0;font-size:1.02rem;color:var(--ink);font-family:'Inter',sans-serif;font-weight:600}
.svc-body p{margin:0 0 14px;color:var(--muted);font-size:.9rem;line-height:1.5;flex:1}
.svc-body a.more{font-weight:700;color:var(--brand);text-decoration:none;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em}
.svc-body a.more:hover{color:var(--brand-2)}
.svc-url{font-size:.7rem;color:var(--muted);font-family:ui-monospace,monospace;margin-top:8px;word-break:break-all}
@media(max-width:980px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.svc-grid{grid-template-columns:1fr}}

/* Galería "El centro" */
.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.gallery-item{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);cursor:pointer;padding:0;text-align:left;font:inherit;color:inherit;display:flex;flex-direction:column;transition:border-color .3s ease}
.gallery-item:hover{border-color:var(--brand)}
.gallery-item img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s cubic-bezier(.16,1,.3,1)}
.gallery-item:hover img{transform:scale(1.08)}
.gallery-item:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
@media(max-width:980px){.gallery-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.gallery-grid{grid-template-columns:1fr}}
.gallery-modal-box{max-width:780px;padding:22px}
.gallery-modal-box img{display:block;width:100%;border-radius:14px;max-height:70vh;object-fit:contain;background:#000}
.gallery-modal-caption{margin:14px 0 0;color:var(--ink);font-size:.92rem;line-height:1.5}
.gallery-modal-nav{display:flex;justify-content:space-between;align-items:center;margin-top:14px}
.gallery-modal-nav .btn{padding:10px 15px}
.gallery-modal-count{font-size:.82rem;color:var(--muted);font-weight:600}

/* Opiniones */
.rating-summary{display:flex;align-items:center;gap:24px;flex-wrap:wrap;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:24px 28px;margin-top:26px}
.rating-summary .rating-number{font-size:2.7rem;font-weight:700;line-height:1;font-family:'Inter',sans-serif;background:linear-gradient(120deg,var(--brand),var(--brand-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.rating-summary .rating-stars{color:var(--accent);font-size:1.35rem;letter-spacing:2px}
.rating-summary .rating-meta{font-size:.85rem;opacity:.92;max-width:32ch}
.review-channels{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.review-channel-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow);text-align:center;display:flex;flex-direction:column;align-items:center;transition:transform .3s ease}
.review-channel-card:hover{transform:translateY(-4px)}
.review-channel-card .badge-logo{width:46px;height:46px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:1.25rem;color:#fff;margin-bottom:14px}
.review-channel-card h3{margin:0 0 6px;color:var(--ink);font-size:1.08rem;font-family:'Inter',sans-serif;font-weight:600}
.review-channel-card p{margin:0 0 16px;color:var(--muted);font-size:.88rem}
.review-form-card{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:36px;box-shadow:var(--shadow)}
.star-input{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:4px;margin-bottom:4px}
.star-input input{position:absolute;opacity:0;width:0;height:0}
.star-input label{font-size:1.9rem;color:var(--line);cursor:pointer;transition:color .15s ease;line-height:1}
.star-input label:hover,.star-input label:hover~label,.star-input input:checked~label{color:var(--accent)}
.consent-row{display:flex;align-items:flex-start;gap:10px;font-size:.83rem;color:var(--muted);margin:16px 0}
.consent-row input{margin-top:3px;flex:none}
.consent-row a{color:var(--brand);font-weight:600}
@media(max-width:820px){.review-channels{grid-template-columns:1fr}}

/* Noticias */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.news-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .3s ease}
.news-card:hover{transform:translateY(-4px)}
.news-card .news-tag{align-self:flex-start;margin-bottom:12px}
.news-card h3{margin:0 0 8px;color:var(--ink);font-size:1.06rem;font-family:'Inter',sans-serif;font-weight:600}
.news-card p{margin:0;color:var(--muted);font-size:.9rem;flex:1}
.news-card .news-date{margin-top:16px;font-size:.74rem;color:var(--muted);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.newsletter-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.newsletter-row input{flex:1;min-width:220px;font:inherit;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:11px 14px}
@media(max-width:980px){.news-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.news-grid{grid-template-columns:1fr}}
