*{box-sizing:border-box;}
html, body{ margin:0; padding:0; width:100%; }
[hidden]{ display:none !important; }

/* ============================================================
   PALETA ÚNICA — azul marino con dorado
   ============================================================ */
:root{
  color-scheme:dark;
  --navy:#12345c;
  --navy-deep:#081b33;
  --navy-soft:#132844;
  --title:#f4f7fb;
  --on-accent:#0a1626;
  --orange:#c9a468;
  --orange-deep:#9c7a3f;
  --ink:#eef1f5;
  --ink-soft:#a9b6c6;
  --bg:#0a1626;
  --bg-alt:#0e1e33;
  --line:#22344c;
  --ph-bg:#1c3350;
  --ph-icon:#7d93ac;
  --card-bg:#0f2035;
  --ok:#6fcf97;
  --err:#f28b82;
  --shadow:0 14px 34px -18px rgba(0,0,0,0.6);
}

html{
  scroll-behavior:smooth;
  scroll-snap-type:y mandatory;
  scroll-padding-top:var(--header-h,112px);
}
html.page-reviews, html.page-attorney, html.page-cases, html.page-faq{ scroll-snap-type:none; }
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; scroll-snap-type:none; }
}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:"Poppins","Segoe UI",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{
  font-family:"Cinzel","Trajan Pro 3",Georgia,serif;
  color:var(--title);
  text-wrap:balance;
  margin:0;
}
p{ line-height:1.65; color:var(--ink-soft); margin:0; }
a{ color:inherit; text-decoration:none; }
ul{ list-style:none; margin:0; padding:0; }
img{ max-width:100%; }
:focus-visible{ outline:2px solid var(--orange); outline-offset:2px; }
.container{ max-width:1180px; margin:0 auto; padding-inline:20px; width:100%; }
.eyebrow{ font-size:0.72rem; letter-spacing:0.16em; text-transform:uppercase; color:var(--orange); font-weight:600; }
.section-head{ text-align:center; display:flex; flex-direction:column; gap:10px; align-items:center; margin-bottom:32px; }
.section-head h2{ font-size:clamp(1.45rem,2.4vw,1.95rem); }
.section-head p{ max-width:680px; font-size:0.9rem; }
.cta-row{ display:flex; gap:20px; align-items:center; justify-content:center; flex-wrap:wrap; margin-top:32px; }
.cta-row.cta-start{ justify-content:flex-start; margin-top:8px; }

/* ---------- jerarquía de botones ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:13px 28px; border-radius:2px; font-weight:600; font-size:0.86rem;
  letter-spacing:0.03em; cursor:pointer; border:1.5px solid transparent; font-family:inherit;
  text-align:center;
  transition:transform .15s ease, background .2s ease, color .2s ease, border-color .2s ease;
}
.btn:hover{ transform:translateY(-2px); }
.btn:disabled{ opacity:0.6; cursor:progress; transform:none; }
.btn-solid{ background:var(--orange); color:var(--on-accent); }
.btn-solid:hover{ background:#dcba85; color:var(--on-accent); }
.btn-ghost{ background:transparent; border-color:var(--orange-deep); color:var(--title); }
.btn-ghost:hover{ border-color:var(--orange); color:var(--orange); }
.btn-light{ background:transparent; border-color:rgba(255,255,255,0.55); color:#fff; }
.btn-light:hover{ border-color:var(--orange); color:var(--orange); }
.btn-link{ display:inline-flex; align-items:center; gap:6px; font-weight:600; font-size:0.86rem; color:var(--orange); }
.btn-link:hover{ color:#dcba85; }
.btn-link .arrow{ transition:transform .15s ease; }
.btn-link:hover .arrow{ transform:translateX(3px); }
/* Botonera: dos columnas arriba, un botón ancho debajo */
.btn-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; width:100%; max-width:440px; }
.btn-grid .btn{ padding:11px 14px; font-size:0.8rem; width:100%; }
.btn-grid .btn-wide{ grid-column:1 / -1; }
@media (max-width:360px){ .btn-grid{ grid-template-columns:1fr; } }

/* ---------- esqueletos de carga ---------- */
.sk{ background:rgba(255,255,255,0.09); border-radius:4px; animation:skPulse 1.5s ease-in-out infinite; }
@keyframes skPulse{ 0%,100%{ opacity:.5; } 50%{ opacity:.9; } }
@media (prefers-reduced-motion:reduce){ .sk{ animation:none; } }
.sk-line{ height:12px; width:100%; }
.sk-line.short{ width:58%; }
.sk-line.tiny{ height:9px; width:80%; }
.sk-stars{ width:88px; height:15px; }
.sk-avatar{ width:42px; height:42px; border-radius:50%; flex-shrink:0; }
.sk-num{ width:92px; height:62px; border-radius:6px; }
.sk-cred{ display:inline-block; width:118px; height:9px; vertical-align:middle; }

/* ---------- encabezado fijo ---------- */
.site-header{ position:sticky; top:0; z-index:40; background:var(--bg); }
.credibility-bar{ background:var(--bg-alt); border-bottom:1px solid var(--line); font-size:0.72rem; color:var(--ink-soft); }
.cred-row{ display:flex; justify-content:space-between; align-items:center; gap:10px 12px; padding-block:6px; flex-wrap:wrap; }
.cred-left{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; letter-spacing:0.01em; min-width:0; }
/*
  Reseñas en la barra superior, en dos líneas con jerarquía:
      4.9   +230 reseñas          ← principal (más grande)
            ★★★★★ en Google       ← apoyo (más pequeña)
  Las dos líneas caben en la altura del selector ES/EN, así la barra no crece.
*/
.cred-rating{ color:var(--title); display:inline-flex; align-items:center; gap:9px; min-height:26px; }
.cred-rating:hover .cred-count{ color:var(--orange); }
.cred-score{
  font-family:"Cinzel",serif; font-size:1.5rem; font-weight:600; line-height:1; color:var(--title);
  font-variant-numeric:tabular-nums;
}
.cred-lines{ display:flex; flex-direction:column; gap:2px; line-height:1.05; }
.cred-count{ font-size:0.9rem; font-weight:700; color:var(--title); letter-spacing:0.005em; transition:color .15s ease; white-space:nowrap; }
.cred-sub{ display:inline-flex; align-items:center; gap:5px; font-size:0.62rem; font-weight:500; color:var(--ink-soft); white-space:nowrap; }
.cred-stars{ color:var(--orange); letter-spacing:1px; line-height:1; font-size:0.66rem; }
.cred-src{ letter-spacing:0.02em; }
.cred-extra{ color:var(--ink-soft); font-weight:500; }
.cred-right{ display:flex; align-items:center; gap:18px; margin-left:auto; }
@media (max-width:1100px){ .cred-law{ display:none; } }
@media (max-width:900px){ .cred-years{ display:none; } }
@media (max-width:640px){ .cred-extra{ display:none; } }
@media (max-width:460px){
  .credibility-bar{ font-size:0.66rem; }
  .cred-row{ gap:8px; }
  .lang-btn{ padding:3px 10px; }
}
.lang-switch{ display:inline-flex; border:1px solid var(--line); border-radius:999px; overflow:hidden; background:var(--bg); }
.lang-btn{
  font-family:inherit; font-size:0.68rem; font-weight:600; letter-spacing:0.06em;
  padding:3px 12px; border:0; background:transparent; color:var(--ink-soft); cursor:pointer;
  transition:background .2s ease, color .2s ease;
}
.lang-btn:hover{ color:var(--title); }
.lang-btn.on{ background:var(--orange); color:var(--on-accent); }

.main-nav{ background:var(--bg); border-bottom:1px solid var(--line); }
.site-header .container{ max-width:1320px; }
.main-nav .container{ display:flex; align-items:center; justify-content:space-between; padding-block:12px; gap:24px; }
.logo{ display:flex; align-items:center; gap:11px; font-family:"Cinzel",serif; font-weight:600; color:var(--title); }
.logo-img{ height:44px; width:auto; border-radius:8px; display:block; flex-shrink:0; }
.logo{ flex-shrink:0; }
.logo-text{ display:flex; flex-direction:column; font-size:0.92rem; line-height:1.18; letter-spacing:0.01em; }
@media (min-width:561px){ .logo-text{ white-space:nowrap; } }   /* en teléfono puede partirse para no empujar el botón */
@media (max-width:560px){
  .logo{ gap:8px; }
  .logo-img{ height:38px; }
  .logo-text{ font-size:0.66rem; }
}

.links{ display:flex; align-items:center; gap:22px; }
.links > li > a{ font-size:0.86rem; font-weight:500; padding:8px 0; display:inline-block; white-space:nowrap; }
.links > li > a:hover{ color:var(--orange); }

.nav-actions{ display:flex; align-items:center; gap:16px; flex-shrink:0; }
.nav-phone{ font-size:0.82rem; font-weight:600; color:var(--title); white-space:nowrap; }
.nav-phone:hover{ color:var(--orange); }
@media (max-width:1699px){ .nav-phone{ display:none; } }
@media (min-width:1700px){ .site-header .container{ max-width:1480px; } }
.nav-consult{ padding:9px 16px; font-size:0.8rem; white-space:nowrap; }
.nav-consult .lbl-short{ display:none; }

/* ---------- hamburguesa / cerrar (X) ---------- */
.burger{ display:none; flex-direction:column; justify-content:center; align-items:center; gap:5px; cursor:pointer; background:none; border:0; padding:6px; flex-shrink:0; width:36px; height:36px; }
.burger span{ width:22px; height:2px; background:var(--title); display:block; transition:transform .25s ease, opacity .2s ease; }
.burger.open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.burger.open span:nth-child(2){ opacity:0; }
.burger.open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

@media (max-width: 1339px){
  .links{
    position:fixed; inset:0 0 0 auto; width:min(78vw,320px); height:100vh; height:100svh;
    background:var(--card-bg); flex-direction:column; align-items:flex-start;
    padding:96px 24px 24px; gap:2px; transform:translateX(100%);
    transition:transform .25s ease; overflow-y:auto; box-shadow:var(--shadow);
  }
  .links.open{ transform:translateX(0); }
  .links > li{ width:100%; }
  .links > li > a{ padding:12px 0; }
  .burger{ display:flex; }
}
@media (max-width:560px){
  .main-nav .container{ gap:10px; }
  .nav-actions{ gap:8px; }
  .nav-consult{ padding:8px 12px; font-size:0.72rem; }
  .nav-consult .lbl-full{ display:none; }
  .nav-consult .lbl-short{ display:inline; }
}

/* ---------- puntos de progreso (lateral) ---------- */
.scroll-dots{
  position:fixed; right:26px; top:50%; transform:translateY(-50%);
  display:flex; flex-direction:column; align-items:center; gap:16px; z-index:35;
}
@media (max-width:1260px){
  .scroll-dots{
    right:14px; gap:14px; opacity:0.5;
    filter:drop-shadow(0 2px 5px rgba(0,0,0,0.35));
  }
}
.scroll-dot{
  width:9px; height:9px; border-radius:50%; background:transparent;
  border:1.5px solid rgba(255,255,255,0.3); flex-shrink:0;
  transition:transform .25s ease, background .25s ease, border-color .25s ease;
}
.scroll-dot:hover{ border-color:var(--ink); }
.scroll-dot.active{ background:var(--ink); border-color:var(--ink); transform:scale(1.3); }
.scroll-dot-goal{ border-color:var(--orange-deep); }
.scroll-dot-goal:hover{ border-color:var(--orange); }
.scroll-dot-goal.active{
  background:var(--orange); border-color:var(--orange); transform:scale(1.6);
  box-shadow:0 0 0 5px color-mix(in srgb, var(--orange) 22%, transparent);
}

/* ---------- secciones a pantalla completa ---------- */
.snap-section{
  min-height:100vh; min-height:100svh;
  min-height:calc(100vh - var(--header-h,112px)); min-height:calc(100svh - var(--header-h,112px));
  scroll-snap-align:start;
  display:flex; flex-direction:column; justify-content:center;
  padding-block:48px;
}
/* Las secciones con fondo alterno se funden con las vecinas en vez de cortar en seco */
.bgc{
  background:linear-gradient(to bottom,
    var(--bg) 0, var(--bg-alt) 110px,
    var(--bg-alt) calc(100% - 110px), var(--bg) 100%);
}

/* ---------- hero ---------- */
.hero{ background:var(--bg); position:relative; overflow:hidden; }
.hero .container{ position:relative; z-index:1; }

/*
  Fondo de video (móvil, iPad y escritorio). Un velo azul marino deja el texto legible y,
  abajo, el video se desvanece y se desenfoca hasta el color de la página: así no hay corte
  seco con la sección siguiente.
*/
.hero-video-wrap{
  position:absolute; inset:0; z-index:0; background:var(--navy-deep); overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom, #000 0, #000 68%, rgba(0,0,0,0.55) 86%, transparent 100%);
          mask-image:linear-gradient(to bottom, #000 0, #000 68%, rgba(0,0,0,0.55) 86%, transparent 100%);
}
/* Dos <video> apilados: el activo se ve en opacidad 1, el de mejora entra con un cruce suave. */
.hero-video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:34% 34%; display:block;
  opacity:0; transition:opacity .5s ease;
}
.hero-video.is-active{ opacity:1; }
.hero-video-veil{ position:absolute; inset:0; }
/* desenfoque progresivo: cero arriba, máximo en el borde inferior */
.hero-video-blur{
  position:absolute; left:0; right:0; bottom:0; height:38%; pointer-events:none;
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  -webkit-mask-image:linear-gradient(to bottom, transparent 0, #000 85%);
          mask-image:linear-gradient(to bottom, transparent 0, #000 85%);
}
.hero-inner h1, .hero-inner .hero-p{ text-shadow:0 1px 14px rgba(0,10,25,0.55); }

/* teléfonos y iPad vertical: el velo cubre todo el ancho */
.hero-video-veil{
  background:
    linear-gradient(180deg, rgba(8,22,40,0.84) 0%, rgba(8,22,40,0.76) 42%, rgba(6,18,34,0.90) 100%),
    linear-gradient(90deg, rgba(0,20,45,0.50) 0%, rgba(0,20,45,0.18) 100%);
}
/* escritorio y iPad horizontal: más oscuro donde va el texto (izquierda), más claro a la derecha */
@media (min-width:901px){
  .hero-video{ object-position:50% 30%; }
  .hero-video-veil{
    background:
      linear-gradient(90deg, rgba(6,18,34,0.90) 0%, rgba(6,18,34,0.68) 42%, rgba(6,18,34,0.38) 100%),
      linear-gradient(180deg, rgba(6,18,34,0.22) 0%, rgba(6,18,34,0.30) 100%);
  }
}
.hero-media img{ box-shadow:0 22px 50px -22px rgba(0,0,0,0.75); border:1px solid rgba(201,164,104,0.28); }
.hero-grid{ display:grid; grid-template-columns:0.95fr 1.05fr; gap:48px; align-items:center; width:100%; }
@media (max-width:900px){ .hero-grid{ grid-template-columns:1fr; gap:28px; } }
/* Texto del hero centrado, como una cita de Carmen */
.hero-inner{ display:flex; flex-direction:column; align-items:center; gap:16px; text-align:center; }
.hero-inner h1{ font-size:clamp(2rem,4.2vw,2.9rem); line-height:1.15; }
.hero-tagline{ font-family:"Cinzel",serif; font-size:0.86rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--orange); font-weight:600; }
.hero-inner p{ max-width:520px; margin-inline:auto; }
.hero-inner .hero-p{ font-size:0.94rem; }
.hero-inner .hero-micro{ font-size:0.8rem; }
.hero-media img{ width:100%; height:auto; aspect-ratio:1024/701; object-fit:cover; border-radius:18px; box-shadow:var(--shadow); display:block; }
/* en móvil el hero lleva más texto: lo compactamos para que quepa en una pantalla */
@media (max-width:640px){
  .snap-section{ padding-block:30px; }
  .hero-grid{ gap:20px; }
  .hero-inner{ gap:11px; }
  .hero-inner h1{ font-size:1.72rem; }
  .hero-tagline{ font-size:0.74rem; letter-spacing:0.1em; }
  .hero-inner .hero-p{ font-size:0.88rem; line-height:1.6; }
  .hero-inner .hero-micro{ font-size:0.74rem; }
  .hero .cta-row{ margin-top:2px; gap:12px; }
}

/* ---------- carruseles ---------- */
.carousel-track{
  display:flex; gap:22px; overflow-x:auto; scroll-snap-type:x proximity; scroll-behavior:smooth;
  padding-block:6px; scrollbar-width:none;
}
.carousel-track::-webkit-scrollbar{ display:none; }
.carousel-track > *{ scroll-snap-align:start; flex:0 0 auto; }
/* los márgenes automáticos centran las tarjetas cuando sobra espacio y valen 0 cuando hay que desplazar */
.carousel-track > :first-child, .case-track > :first-child{ margin-left:auto; }
.carousel-track > :last-child, .case-track > :last-child{ margin-right:auto; }
.carousel-nav{ display:flex; gap:10px; justify-content:center; margin-top:22px; }
.carousel-arrow{
  width:42px; height:42px; border-radius:50%; border:1.5px solid var(--line);
  background:var(--card-bg); display:flex; align-items:center; justify-content:center;
  cursor:pointer; color:var(--title); transition:border-color .15s ease;
}
.carousel-arrow:hover{ border-color:var(--orange); }
.carousel-arrow svg{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; }

/* ---------- tarjetas de práctica (solo texto) ---------- */
.practice-card{
  width:290px; flex:0 0 290px; padding:20px 22px 16px;
  background:var(--card-bg); border:1px solid var(--line); border-radius:10px;
  display:flex; flex-direction:column; gap:9px; box-shadow:var(--shadow);
  transition:transform .18s ease, border-color .18s ease;
}
.practice-card:hover{ transform:translateY(-4px); border-color:var(--orange); }
.practice-card .icon-box{ width:40px; height:40px; }
.practice-card .icon-box svg{ width:20px; height:20px; }
.practice-card h3{ font-size:1.08rem; line-height:1.3; min-height:2.6em; display:flex; align-items:flex-start; }
.practice-card .practice-desc{ font-size:0.84rem; line-height:1.55; }
.practice-card a.more{
  margin-top:auto; padding-top:10px; border-top:1px solid var(--line);
  font-size:0.78rem; font-weight:600; letter-spacing:0.02em; color:var(--orange);
}
.practice-card a.more:hover{ color:#dcba85; }

/* ---------- por qué elegirnos ---------- */
.icon-box{ width:52px; height:52px; border-radius:10px; background:var(--navy-soft); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-box svg{ width:24px; height:24px; stroke:var(--title); fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.why-grid{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:26px; }
@media (max-width:1000px){ .why-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:640px){ .why-grid{ grid-template-columns:1fr; gap:18px; } }
.why-item{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px; }
.why-item h3{ font-size:0.98rem; font-family:"Poppins",sans-serif; font-weight:600; line-height:1.35; }
.why-item p{ font-size:0.84rem; line-height:1.55; }
@media (max-width:640px){
  .why-item{ flex-direction:row; align-items:flex-start; text-align:left; gap:14px; }
}

/* ---------- Attorney Carmen Bello (resumen en el inicio) ---------- */
.attorney-feature{ display:grid; grid-template-columns:minmax(0,320px) minmax(0,600px); justify-content:center; gap:56px; align-items:center; }
@media (max-width:820px){ .attorney-feature{ grid-template-columns:1fr; text-align:center; gap:24px; } }
.attorney-feature > img{
  width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:56% 50%;
  border-radius:16px; box-shadow:var(--shadow); display:block;
}
@media (max-width:820px){ .attorney-feature > img{ max-width:300px; margin-inline:auto; } }
.attorney-copy{ display:flex; flex-direction:column; gap:12px; max-width:620px; }
@media (max-width:820px){ .attorney-copy{ margin-inline:auto; align-items:center; } }
.attorney-name{ font-size:clamp(1.4rem,2.4vw,1.8rem); }
.attorney-title{ font-size:0.78rem; font-weight:600; color:var(--orange); letter-spacing:0.05em; text-transform:uppercase; line-height:1.5; }
.attorney-quote{ font-family:"Cinzel",serif; font-weight:500; font-size:1.02rem; line-height:1.5; color:var(--title); }
.attorney-copy p.attorney-bio{ font-size:0.92rem; }
.attorney-actions{ display:flex; gap:18px; align-items:center; flex-wrap:wrap; margin-top:4px; }
@media (max-width:820px){ .attorney-actions{ justify-content:center; } }

.cred-slider{
  width:100%; max-width:440px; margin-top:6px; text-align:left;
  background:var(--card-bg); border:1px solid var(--line); border-radius:12px; padding:16px 20px 14px; box-shadow:var(--shadow);
}
.cred-slides{ display:grid; }
.cred-slide{
  grid-area:1 / 1; display:flex; flex-direction:column; gap:3px; opacity:0; transform:translateY(8px);
  transition:opacity .5s ease, transform .5s ease; pointer-events:none;
}
.cred-slide.is-active{ opacity:1; transform:none; pointer-events:auto; }
.cred-kicker{ font-size:0.66rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--orange); font-weight:600; }
.cred-slide strong{ font-family:"Cinzel",serif; font-size:1.05rem; color:var(--title); font-weight:600; line-height:1.3; }
.cred-d{ font-size:0.84rem; color:var(--ink-soft); line-height:1.45; }
.cred-dots{ display:flex; gap:8px; margin-top:12px; }
.cred-dots button{ width:8px; height:8px; padding:0; border-radius:50%; border:1.5px solid var(--orange); background:transparent; cursor:pointer; transition:background .2s ease, transform .2s ease; }
.cred-dots button.on{ background:var(--orange); transform:scale(1.25); }
@media (prefers-reduced-motion:reduce){ .cred-slide{ transition:none; } }

/* ---------- página de biografía ---------- */
.ap-hero{ padding-block:40px 10px; }
.ap-back{ display:inline-block; margin-bottom:22px; font-size:0.82rem; }
.ap-feature{ display:grid; grid-template-columns:minmax(0,380px) 1fr; gap:48px; align-items:start; padding-bottom:56px; }
@media (max-width:860px){ .ap-feature{ grid-template-columns:1fr; gap:28px; } }
.ap-photo{
  width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:56% 50%;
  border-radius:16px; box-shadow:var(--shadow); display:block;
}
@media (max-width:860px){ .ap-photo{ max-width:340px; margin-inline:auto; } }
.ap-copy{ display:flex; flex-direction:column; gap:14px; }
.ap-copy h1{ font-size:clamp(1.9rem,3.6vw,2.6rem); line-height:1.15; }
.ap-copy .attorney-quote{ font-size:1.1rem; padding-left:16px; border-left:2px solid var(--orange); }
.ap-copy p{ font-size:0.96rem; }
.ap-section{ padding-block:8px 56px; }
.ap-creds{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:18px; margin-top:24px; }
.ap-cred{
  background:var(--card-bg); border:1px solid var(--line); border-radius:12px; padding:20px 22px;
  display:flex; flex-direction:column; gap:4px; box-shadow:var(--shadow);
}
.ap-cred strong{ font-family:"Cinzel",serif; font-size:1.02rem; color:var(--title); font-weight:600; line-height:1.3; }
.ap-note{
  margin-top:24px; padding:20px 24px; border:1px solid var(--line); border-left:3px solid var(--orange);
  border-radius:10px; background:var(--card-bg);
}
.ap-note h3{ font-size:1rem; font-family:"Poppins",sans-serif; font-weight:600; margin-bottom:4px; }
.ap-cta{ margin-bottom:64px; }

/* ---------- equipo ---------- */
/*
  Retrato del equipo completo. Es una foto de grupo: recortarla en banner le corta la
  cabeza a alguien, así que se muestra entera y se limita por la ALTURA, con el copy al
  lado. En teléfono el texto pasa debajo de la foto.
*/
.team-full{
  margin:0 0 22px; display:grid; grid-template-columns:minmax(0,320px) minmax(0,600px);
  gap:56px; align-items:center; justify-content:center;
}
.team-full img{
  width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; display:block; border-radius:16px;
  border:1px solid rgba(201,164,104,0.28); box-shadow:var(--shadow); background:var(--ph-bg);
}
.team-full figcaption{ display:flex; flex-direction:column; gap:10px; }
.team-full figcaption strong{
  font-family:"Cinzel",serif; font-weight:600; color:var(--title);
  font-size:clamp(1.1rem,2vw,1.5rem); letter-spacing:0.01em; line-height:1.25;
}
.team-full figcaption span{ font-size:0.92rem; line-height:1.65; color:var(--ink-soft); }
@media (max-width:820px){
  .team-full{ grid-template-columns:1fr; gap:16px; justify-items:center; text-align:center; }
  .team-full img{ max-width:340px; aspect-ratio:4/3; }
  .team-full figcaption span{ font-size:0.84rem; }
}

/* 5 columnas: las 3 personas ocupan una y la foto de grupo ocupa dos, para verse completa y grande */
.team-row{ display:grid; grid-template-columns:repeat(4,minmax(0,280px)); justify-content:center; gap:24px; align-items:stretch; }
.team-card{
  background:var(--card-bg); border:1px solid var(--line); border-radius:14px; overflow:hidden;
  box-shadow:var(--shadow); display:flex; flex-direction:column; transition:transform .2s ease;
}
.team-card:hover{ transform:translateY(-4px); }
.team-photo{ aspect-ratio:4/5; overflow:hidden; background:var(--ph-bg); }
.team-photo img{ width:100%; height:100%; object-fit:cover; object-position:50% 20%; display:block; }
.team-info{ padding:16px 18px 20px; display:flex; flex-direction:column; gap:4px; }
.team-info h3{ font-size:1.05rem; font-family:"Poppins",sans-serif; font-weight:600; color:var(--ink); }
.team-info p{ font-size:0.82rem; line-height:1.45; }
.slider-dots{ display:none; }
/* con 3 personas caben en fila hasta ~700 px; solo en teléfono pasan a slider */
@media (max-width:700px){
  .team-row{
    display:flex; justify-content:flex-start; overflow-x:auto; scroll-snap-type:x mandatory; gap:16px; padding:2px 20px 8px;
    margin-inline:-20px; scroll-padding-inline:20px; scrollbar-width:none;
  }
  .team-row::-webkit-scrollbar{ display:none; }
  .team-card{ flex:0 0 min(74vw,300px); scroll-snap-align:start; }
}
@media (max-width:1000px){
  .slider-dots{ display:flex; justify-content:center; gap:8px; margin-top:16px; }
  .slider-dots button{ width:8px; height:8px; padding:0; border-radius:50%; border:1.5px solid var(--orange); background:transparent; cursor:pointer; }
  .slider-dots button.on{ background:var(--orange); }
}
@media (min-width:701px){ #teamDots{ display:none; } }
/*
  El retrato de grupo suma altura, así que dentro de #team las tarjetas se compactan
  (foto cuadrada en vez de 4/5) para que la sección siga cabiendo en una pantalla.
*/
#team.snap-section{ padding-block:38px; }
#team .section-head{ margin-bottom:20px !important; }
#team .team-photo{ aspect-ratio:1/1; }
#team .team-info{ padding:12px 16px 15px; }
@media (min-width:701px){
  #team .team-row{ grid-template-columns:repeat(4,minmax(0,215px)); gap:20px; }
}
/* pantallas de escritorio bajas: se recorta todavía un poco más */
@media (min-width:701px) and (max-height:820px){
  #team.snap-section{ padding-block:30px; }
  #team .team-full{ grid-template-columns:minmax(0,240px) minmax(0,560px); gap:36px; }
  #team .team-row{ grid-template-columns:repeat(4,minmax(0,190px)); gap:16px; }
}

/* ---------- casos de éxito ---------- */
.case-track{ display:flex; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth; padding-block:4px; scrollbar-width:none; }
.case-track::-webkit-scrollbar{ display:none; }
.case-track > *{ flex:0 0 clamp(230px,26vw,270px); scroll-snap-align:start; }
.case-board{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:22px; }
.case-card{
  display:flex; flex-direction:column; text-align:left; width:100%; padding:0; cursor:pointer;
  background:var(--card-bg); border:1px solid var(--line); border-radius:14px; overflow:hidden;
  box-shadow:var(--shadow); font-family:inherit; color:inherit;
  transition:transform .2s ease, border-color .2s ease;
}
.case-card:hover{ transform:translateY(-4px); border-color:var(--orange); }
.case-photo{ aspect-ratio:4/3; overflow:hidden; background:var(--ph-bg); }
.case-photo img{ width:100%; height:100%; object-fit:cover; object-position:50% 28%; display:block; }
.case-body{ padding:14px 18px 18px; display:flex; flex-direction:column; gap:6px; flex:1; }
.case-tag{ font-size:0.6rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--orange); font-weight:600; }
.case-body h3{ font-size:1rem; line-height:1.3; }
.case-body p{ font-size:0.82rem; line-height:1.5; }
.case-more{ margin-top:auto; padding-top:8px; font-size:0.76rem; font-weight:600; color:var(--orange); display:inline-flex; gap:5px; }
.case-card:hover .case-more .arrow{ transform:translateX(3px); }
.case-more .arrow{ transition:transform .15s ease; }
.case-note{ font-size:0.72rem; max-width:760px; margin-top:26px; }
/* el carrusel del inicio va más compacto para que la sección quepa en una pantalla */
#cases.snap-section{ padding-block:24px; }
#cases .section-head{ margin-bottom:16px !important; }
#cases .case-photo{ aspect-ratio:3/2; }
#cases .case-body{ padding:12px 16px 16px; }
#cases .carousel-nav{ margin-top:12px; }
#cases .cta-row{ margin-top:10px !important; }
#contact-form.snap-section{ padding-block:34px; }

/* ============================================================
   Ventanas emergentes: historia completa y reseña completa
   - foto → texto con un difuminado (sin corte)
   - flechas siempre abajo y centradas, botón de consulta abajo a la derecha (posición absoluta)
   - el texto se desplaza por dentro y se desvanece bajo los botones
   ============================================================ */
dialog.case-modal{ border:0; padding:0; background:transparent; max-width:none; max-height:none; width:100%; height:100%; overflow:auto; }
dialog.case-modal::backdrop{ background:rgba(0,10,25,0.78); backdrop-filter:blur(3px); }
.case-modal-wrap{ min-height:100%; display:flex; align-items:center; justify-content:center; padding:20px; }

.case-modal-card{
  position:relative; width:100%; max-width:880px; height:min(82vh,640px); background:var(--card-bg); color:var(--ink);
  border:1px solid var(--line); border-radius:16px; overflow:hidden;
  display:grid; grid-template-columns:minmax(0,320px) minmax(0,1fr); grid-template-rows:minmax(0,1fr);
  box-shadow:0 30px 70px -30px rgba(0,0,0,0.7);
}
@media (max-width:760px){
  .case-modal-card{ grid-template-columns:1fr; grid-template-rows:auto minmax(0,1fr); height:min(92vh,720px); }
}
.case-modal-photo{ position:relative; background:var(--navy-deep); overflow:hidden; min-height:0; }
.case-modal-photo img{ width:100%; height:100%; object-fit:cover; object-position:50% 28%; display:block; }
/* difuminado entre la foto y el texto: se aclara y se desenfoca hacia el color de la tarjeta */
.case-modal-photo::after{
  content:""; position:absolute; top:0; right:-2px; bottom:0; width:calc(34% + 2px); pointer-events:none;
  background:linear-gradient(to right, rgba(15,32,53,0) 0%, rgba(15,32,53,0.5) 58%, var(--card-bg) 100%);
  -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px);
  -webkit-mask-image:linear-gradient(to right, transparent 0%, #000 72%);
          mask-image:linear-gradient(to right, transparent 0%, #000 72%);
}
@media (max-width:760px){
  .case-modal-photo{ aspect-ratio:16/10; }
  .case-modal-photo::after{
    top:auto; left:0; right:0; bottom:-2px; width:auto; height:calc(46% + 2px);
    background:linear-gradient(to bottom, rgba(15,32,53,0) 0%, rgba(15,32,53,0.5) 58%, var(--card-bg) 100%);
    -webkit-mask-image:linear-gradient(to bottom, transparent 0%, #000 72%);
            mask-image:linear-gradient(to bottom, transparent 0%, #000 72%);
  }
}

/* columna de texto: el bloque de texto se desplaza; los botones quedan fijos abajo */
.case-modal-scroll{ position:relative; display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.case-modal-text, .rv-modal-text{
  overflow-y:auto; min-height:0; overscroll-behavior:contain;
  scrollbar-width:thin; scrollbar-color:var(--orange-deep) transparent;
}
.case-modal-text::-webkit-scrollbar, .rv-modal-text::-webkit-scrollbar{ width:7px; }
.case-modal-text::-webkit-scrollbar-thumb, .rv-modal-text::-webkit-scrollbar-thumb{ background:var(--orange-deep); border-radius:4px; }
.case-modal-text::-webkit-scrollbar-track, .rv-modal-text::-webkit-scrollbar-track{ background:transparent; }
.case-modal-text{ flex:1; padding:32px 32px 112px 26px; display:flex; flex-direction:column; gap:10px; }
.case-modal-text h2{ font-size:clamp(1.25rem,2.4vw,1.6rem); line-height:1.25; padding-right:34px; }
.case-modal-sub{ font-size:0.9rem; color:var(--orange); font-weight:500; }
.case-modal-body{ display:flex; flex-direction:column; gap:12px; margin-top:4px; }
.case-modal-body p{ font-size:0.92rem; }

/* botones fijos abajo: flechas al centro, consulta en la esquina derecha */
.modal-dock{
  position:absolute; left:0; right:0; bottom:0; z-index:2; pointer-events:none;
  display:flex; align-items:flex-end; justify-content:center; padding:54px 22px 18px;
  background:linear-gradient(to top, var(--card-bg) 0%, var(--card-bg) 46%, rgba(15,32,53,0) 100%);
}
.modal-dock > *{ pointer-events:auto; }
.dock-nav{ display:flex; align-items:center; gap:12px; }
.dock-cta{ position:absolute; right:22px; bottom:18px; padding:10px 18px; font-size:0.78rem; }
.dock-cta .lbl-short{ display:none; }
.case-modal-count{ font-size:0.74rem; color:var(--ink-soft); font-variant-numeric:tabular-nums; min-width:3.2em; text-align:center; }
.case-nav{
  width:34px; height:34px; border-radius:50%; border:1.5px solid var(--line); background:var(--card-bg);
  color:var(--title); cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:border-color .15s ease, color .15s ease;
}
.case-nav:hover{ border-color:var(--orange); color:var(--orange); }
.case-nav svg{ width:15px; height:15px; stroke:currentColor; fill:none; stroke-width:2; }
@media (max-width:520px){
  .modal-dock{ padding-inline:16px; }
  .dock-cta{ right:16px; padding:10px 14px; }
  .dock-cta .lbl-full{ display:none; }
  .dock-cta .lbl-short{ display:inline; }
  .dock-nav{ gap:8px; }
  .case-modal-count{ display:none; }
}
.case-modal-close{
  position:absolute; top:12px; right:12px; z-index:3; width:36px; height:36px; border-radius:50%; border:0;
  background:rgba(8,27,51,0.72); color:#fff; font-size:1.5rem; line-height:1; cursor:pointer;
}
.case-modal-close:hover{ background:var(--orange); color:var(--on-accent); }

/* reseña completa */
.rv-modal-card{
  position:relative; width:100%; max-width:640px; max-height:min(80vh,600px); min-height:min(340px,80vh); background:var(--card-bg); color:var(--ink);
  border:1px solid var(--line); border-radius:16px; overflow:hidden; display:flex; flex-direction:column;
  box-shadow:0 30px 70px -30px rgba(0,0,0,0.7);
}
.rv-modal-head{ flex-shrink:0; display:flex; align-items:center; gap:14px; padding:26px 64px 10px 30px; }
.rv-modal-head .rv-avatar{ width:48px; height:48px; }
.rv-modal-who{ min-width:0; display:flex; flex-direction:column; gap:2px; }
.rv-modal-who h3{ font-family:"Poppins",sans-serif; font-size:1.02rem; font-weight:600; color:var(--ink); line-height:1.3; }
.rv-modal-who p{ font-size:0.76rem; line-height:1.4; }
.rv-modal-link{ font-size:0.76rem; font-weight:600; color:var(--orange); display:inline-flex; gap:5px; }
.rv-modal-link:hover{ color:#dcba85; }
.rv-modal-stars{ flex-shrink:0; padding:2px 30px 10px; }
.rv-modal-stars .stars{ display:flex; gap:4px; }
.rv-modal-stars .stars svg{ width:17px; height:17px; fill:var(--orange); }
.rv-modal-text{ flex:1; padding:6px 30px 112px; display:flex; flex-direction:column; gap:12px; }
.rv-modal-text p{ font-size:0.96rem; line-height:1.7; color:var(--ink); }
@media (max-width:520px){
  .rv-modal-head{ padding:22px 60px 8px 22px; }
  .rv-modal-stars{ padding-inline:22px; }
  .rv-modal-text{ padding-inline:22px; }
}

/* ---------- preguntas frecuentes ---------- */
.faq-list{ display:flex; flex-direction:column; gap:10px; max-width:820px; margin:0 auto; width:100%; }
.faq-item{ background:var(--card-bg); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.faq-item[open]{ border-color:var(--orange-deep); }
.faq-item summary{
  list-style:none; cursor:pointer; padding:15px 48px 15px 18px; position:relative;
  display:flex; align-items:center; gap:10px; min-height:52px;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary:hover .faq-q{ color:var(--orange); }
.faq-q{ font-size:0.92rem; font-weight:500; color:var(--ink); line-height:1.45; transition:color .15s ease; }
.faq-mark{ position:absolute; right:18px; top:50%; width:13px; height:13px; margin-top:-6px; flex-shrink:0; }
.faq-mark::before, .faq-mark::after{
  content:""; position:absolute; background:var(--orange); border-radius:2px; transition:transform .2s ease, opacity .2s ease;
}
.faq-mark::before{ left:0; top:5px; width:13px; height:2px; }
.faq-mark::after{ left:5px; top:0; width:2px; height:13px; }
.faq-item[open] .faq-mark::after{ transform:rotate(90deg); opacity:0; }
.faq-a{ padding:0 48px 18px 18px; }
.faq-a p{ font-size:0.86rem; line-height:1.65; }
.faq-note{ font-size:0.72rem; max-width:820px; margin:26px auto 0; text-align:center; }
@media (prefers-reduced-motion:reduce){ .faq-mark::before, .faq-mark::after{ transition:none; } }

/* ---------- reseñas: resumen ---------- */
.rating-summary{ display:flex; align-items:stretch; justify-content:center; gap:28px; flex-wrap:wrap; margin-bottom:28px; }
.rating-total{ display:flex; align-items:center; gap:18px; }
.rating-num{
  font-family:"Cinzel",serif; font-size:clamp(3.6rem,7vw,5rem); font-weight:600; line-height:0.9;
  color:var(--title); display:flex; align-items:baseline; font-variant-numeric:tabular-nums;
}
.rating-of{ font-size:0.34em; color:var(--ink-soft); font-weight:500; margin-left:2px; }
.rating-side{ display:flex; flex-direction:column; gap:4px; text-align:left; }
.rating-stars{ color:var(--orange); font-size:1.2rem; letter-spacing:3px; line-height:1; }
.rating-count{ font-size:0.92rem; color:var(--ink); white-space:nowrap; }
.rating-count strong{ font-family:"Cinzel",serif; font-size:1.15rem; font-weight:600; color:var(--title); }
.rating-count span{ color:var(--ink-soft); font-size:0.82rem; }
.rating-note{ font-size:0.7rem; color:var(--ink-soft); }
.rating-offices{ display:flex; gap:12px; }
.rating-office{
  display:flex; flex-direction:column; justify-content:center; gap:5px; min-width:132px; padding:12px 18px;
  border:1px solid var(--line); border-radius:10px; background:var(--card-bg);
  transition:border-color .18s ease, transform .18s ease;
}
a.rating-office:hover{ border-color:var(--orange); transform:translateY(-2px); }
.ro-name{
  font-size:0.66rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--orange); font-weight:600;
  display:inline-flex; align-items:center; gap:4px;
}
.ro-pin{ width:11px; height:11px; stroke:var(--orange); fill:none; stroke-width:1.9; flex-shrink:0; }
.ro-score{ color:var(--ink); display:flex; align-items:baseline; gap:3px; }
.ro-score b{ font-family:"Cinzel",serif; font-size:1.6rem; color:var(--title); font-weight:600; line-height:1; font-variant-numeric:tabular-nums; }
.ro-star{ color:var(--orange); font-size:0.95rem; }
.ro-count{ font-size:0.86rem; color:var(--ink); font-weight:600; font-variant-numeric:tabular-nums; }
.ro-count span{ font-size:0.72rem; color:var(--ink-soft); font-weight:400; }
@media (min-width:900px){ .rating-total{ padding-right:28px; border-right:1px solid var(--line); } }
@media (max-width:520px){
  .rating-summary{ gap:16px; margin-bottom:18px; }
  .rating-total{ gap:14px; }
  .rating-offices{ width:100%; gap:10px; }
  .rating-office{ flex:1; min-width:0; padding:11px 14px; }
  #reviewTrack .review-card{ padding:18px 20px; }
}
/* si el Worker no responde: nada inventado, solo el enlace a Google */
.rating-fallback{
  display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center;
  padding:20px 22px; border:1px solid var(--line); border-radius:14px; background:var(--card-bg); max-width:620px;
}
.rating-fallback h3{ font-size:1.05rem; }
.rating-fallback p{ font-size:0.84rem; max-width:460px; }
.rf-text{ display:flex; flex-direction:column; gap:5px; }
@media (min-width:780px){
  .rating-fallback{ flex-direction:row; align-items:center; text-align:left; gap:28px; max-width:760px; }
  .rating-fallback .btn-grid{ max-width:320px; flex-shrink:0; }
}

/* ---------- reseñas: tarjetas ---------- */
.review-card{
  position:relative; width:320px; flex:0 0 320px; background:var(--card-bg); border:1px solid var(--line);
  border-radius:10px; padding:24px; display:flex; flex-direction:column; gap:14px; box-shadow:var(--shadow);
}
.review-card.is-skeleton{ gap:9px; }
.review-card .stars{ display:flex; gap:4px; }
.review-card .stars svg{ width:15px; height:15px; fill:var(--orange); }
.review-card p.review-text{ font-size:0.92rem; line-height:1.6; }
/* El texto se corta en la tarjeta para que todas midan lo mismo; al tocarla se abre la reseña completa. */
.review-card p.review-text{
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:7; line-clamp:7; overflow:hidden;
}
#reviewTrack .review-card p.review-text{ -webkit-line-clamp:5; line-clamp:5; }
@media (max-width:520px){
  #reviewTrack .review-card p.review-text{ -webkit-line-clamp:4; line-clamp:4; }
}
/* tarjetas que se pueden abrir */
.review-card[data-rv-i]{ cursor:pointer; transition:transform .18s ease, border-color .18s ease; }
.review-card[data-rv-i]:hover{ transform:translateY(-3px); border-color:var(--orange); }
.rv-more{ font-size:0.74rem; font-weight:600; color:var(--orange); display:inline-flex; gap:5px; align-self:flex-start; }
.rv-more .arrow{ transition:transform .15s ease; }
.review-card[data-rv-i]:hover .rv-more .arrow{ transform:translateX(3px); }
/* la sección de reseñas con textos reales es más alta: se compacta para que quepa en una pantalla */
#reviews.snap-section{ padding-block:20px; }
#reviews .section-head{ margin-bottom:14px !important; }
#reviews .rating-summary{ margin-bottom:16px; }
#reviews .review-card{ padding:20px 22px; gap:12px; }
#reviews .carousel-nav{ margin-top:12px; }
#reviews .reviews-more{ margin-top:12px; }
.review-foot{ display:flex; align-items:center; gap:12px; margin-top:auto; padding-top:4px; }
.rv-avatar{ width:42px; height:42px; border-radius:50%; flex-shrink:0; object-fit:cover; display:block; }
.rv-avatar-alt{ background:var(--ph-bg); color:var(--ph-icon); display:flex; align-items:center; justify-content:center; }
.rv-avatar-alt svg{ width:55%; height:55%; }
.rv-who{ min-width:0; }
.review-foot h4{ font-size:0.86rem; color:var(--ink); font-family:"Poppins",sans-serif; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.review-foot p{ font-size:0.72rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rv-link{ font-size:0.74rem; font-weight:600; color:var(--orange); white-space:nowrap; align-self:flex-start; display:inline-flex; gap:5px; }
.rv-link:hover{ color:#dcba85; }
.reviews-more{ display:flex; justify-content:center; margin-top:26px; }

/* ---------- página de reseñas ---------- */
.rp-hero{ text-align:center; padding-block:44px 8px; }
.rp-back{ display:inline-block; margin-bottom:18px; font-size:0.82rem; }
.rp-hero h1{ font-size:clamp(1.7rem,3.2vw,2.4rem); margin:10px auto 16px; max-width:820px; line-height:1.2; }
.rp-lead{ max-width:660px; margin:0 auto 30px; font-size:0.92rem; }
.rp-list{ padding-block:24px 64px; }
.rp-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:22px; }
.rp-grid .review-card{ width:auto; flex:none; animation:cardIn .5s ease both; }
@keyframes cardIn{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion:reduce){ .rp-grid .review-card{ animation:none; } }
.rp-decision{ display:grid; grid-template-columns:1fr 1.25fr; gap:22px; margin-top:34px; align-items:stretch; }
@media (max-width:820px){ .rp-decision{ grid-template-columns:1fr; } }
.rp-more{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; text-align:center;
  padding:30px 24px; background:var(--card-bg); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow);
}
.rp-more h3{ font-size:1.15rem; }
.rp-status{ font-size:0.84rem; }
.rp-google{ display:flex; flex-direction:column; align-items:center; gap:10px; width:100%; }
.rp-google-h{ font-size:0.7rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--orange); font-weight:600; }
.rp-note{ font-size:0.72rem; max-width:340px; }
.rp-cta{
  display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:12px;
  padding:32px 30px; background:var(--navy-deep); border:1px solid var(--line); border-radius:14px; color:#fff;
}
.rp-cta h2{ color:#fff; font-size:clamp(1.3rem,2.4vw,1.7rem); }
.rp-cta p{ color:#c7d3e0; }
.rp-cta .cta-row{ margin-top:6px; justify-content:flex-start; gap:12px; }
@media (max-width:820px){ .rp-cta{ align-items:center; text-align:center; } .rp-cta .cta-row{ justify-content:center; } }

/* ---------- contacto: oficinas ---------- */
.contact-lead{ text-align:center; font-size:0.9rem; margin-bottom:18px; }
.office-grid{ display:grid; grid-template-columns:1fr 1fr; gap:24px; max-width:820px; margin:0 auto; width:100%; }
@media (max-width:700px){ .office-grid{ grid-template-columns:1fr; } }
.office-card{
  background:var(--card-bg); border:1px solid var(--line); border-radius:12px;
  padding:28px 26px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:10px;
  box-shadow:var(--shadow);
}
.office-card h3{ font-size:1.1rem; }
.office-card address{ font-style:normal; font-size:0.92rem; line-height:1.55; color:var(--ink); }
.office-hours{ font-size:0.8rem; line-height:1.55; }
.office-links{ margin-top:auto; padding-top:6px; display:flex; flex-direction:column; align-items:center; gap:6px; }
.office-phone{ font-size:1.02rem; font-weight:600; color:var(--title); }
.office-phone:hover{ color:var(--orange); }
.contact-actions{ display:grid; grid-template-columns:1fr 1fr; gap:18px 24px; max-width:820px; margin:0 auto 26px; width:100%; }
@media (max-width:700px){ .contact-actions{ grid-template-columns:1fr; } }
.action-cell{ display:flex; flex-direction:column; gap:8px; text-align:center; }
.action-cell .btn{ width:100%; padding-block:15px; font-size:0.92rem; }
.action-cell p{ font-size:0.8rem; }

/* ---------- contacto: formulario ---------- */
form.quote{
  display:grid; grid-template-columns:1fr 1fr; gap:12px 14px; max-width:720px; margin:0 auto; width:100%;
  background:var(--card-bg); border:1px solid var(--line); border-radius:12px; padding:24px 28px; box-shadow:var(--shadow);
}
@media (max-width:600px){ form.quote{ grid-template-columns:1fr; padding:22px; } }
form.quote .full{ grid-column:1 / -1; }
form.quote label{ font-size:0.72rem; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-soft); display:flex; flex-direction:column; gap:6px; font-weight:500; }
form.quote input, form.quote select, form.quote textarea{
  font-family:inherit; font-size:0.9rem; padding:11px 12px; border-radius:6px; width:100%;
  border:1px solid var(--line); background:var(--bg); color:var(--ink); text-transform:none; letter-spacing:0;
}
form.quote textarea{ resize:vertical; min-height:88px; }
form.quote input:focus, form.quote select:focus, form.quote textarea:focus{ outline:2px solid var(--orange); outline-offset:1px; }
form.quote .hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.form-micro{ font-size:0.76rem; text-align:center; }
.form-status{ font-size:0.86rem; font-weight:500; text-align:center; }
.form-status:empty{ display:none; }
.form-status.ok{ color:var(--ok); }
.form-status.err{ color:var(--err); }
.disclaimer{ font-size:0.7rem; text-align:center; }
/* mensaje de error debajo de un campo puntual (validación) */
.field-err{ font-size:0.72rem; font-weight:500; letter-spacing:0; text-transform:none; color:var(--err); }
.field-err:empty{ display:none; }

/* ---------- ventana "Llamar Ahora" ---------- */
html:has(dialog[open]){ overflow:hidden; }
dialog.modal{ border:0; padding:0; background:transparent; max-width:none; max-height:none; width:100%; height:100%; overflow:auto; }
dialog.modal::backdrop{ background:rgba(0,10,25,0.72); backdrop-filter:blur(3px); }
.modal-wrap{ min-height:100%; display:flex; align-items:center; justify-content:center; padding:20px; }
.modal-card{
  position:relative; width:100%; max-width:440px; background:var(--card-bg); color:var(--ink);
  border:1px solid var(--line); border-radius:14px; padding:30px 28px 26px; box-shadow:0 30px 70px -30px rgba(0,0,0,0.6);
  display:flex; flex-direction:column; gap:12px;
}
.modal-card h3{ font-size:1.25rem; padding-right:28px; }
/* los dos estados del modal "Llamar Ahora" (form vs. contact session) van cada
   uno en su propio contenedor con flex, para conservar el mismo espaciado que
   antes tenían el h3/p/form como hijos directos del .modal-card */
.modal-card [data-call-view]{ display:flex; flex-direction:column; gap:12px; }
.modal-card button.btn-link{
  background:none; border:0; padding:0; font-family:inherit; cursor:pointer;
  align-self:center; margin-top:2px;
}
.modal-close{
  position:absolute; top:12px; right:12px; width:34px; height:34px; border-radius:50%; border:0;
  background:transparent; color:var(--ink-soft); font-size:1.5rem; line-height:1; cursor:pointer;
}
.modal-close:hover{ color:var(--title); background:var(--bg-alt); }
.modal-form{ display:flex; flex-direction:column; gap:12px; margin-top:4px; }
.modal-form label{ font-size:0.72rem; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink-soft); display:flex; flex-direction:column; gap:6px; font-weight:500; }
.modal-form input, .modal-form select{
  font-family:inherit; font-size:0.9rem; padding:11px 12px; border-radius:6px; width:100%;
  border:1px solid var(--line); background:var(--bg); color:var(--ink); text-transform:none; letter-spacing:0;
}
.modal-form input:focus, .modal-form select:focus{ outline:2px solid var(--orange); outline-offset:1px; }
.modal-form .hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.modal-actions{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:4px; }
@media (max-width:420px){ .modal-actions{ grid-template-columns:1fr; } }
.modal-actions .btn{ padding-inline:12px; }

/* ---------- pie de página ---------- */
footer.site-foot{ background:linear-gradient(to bottom, var(--bg) 0, var(--navy-deep) 110px); color:#c7d3e0; scroll-snap-align:end; }
.foot-top{ display:grid; grid-template-columns:1.4fr 0.9fr 1.5fr; gap:36px; padding-block:56px 40px; }
@media (max-width:820px){ .foot-top{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .foot-top{ grid-template-columns:1fr; } }
.foot-top .logo{ color:#fff; margin-bottom:14px; }
.foot-col h3{ color:#fff; font-family:"Poppins",sans-serif; font-size:0.86rem; font-weight:600; letter-spacing:0.03em; margin-bottom:14px; text-transform:uppercase; }
.foot-col ul{ display:flex; flex-direction:column; gap:12px; }
.foot-col a{ font-size:0.85rem; color:#c7d3e0; }
.foot-col a:hover{ color:var(--orange); }
.foot-col li{ font-size:0.85rem; line-height:1.55; }
.foot-col li strong{ color:#fff; font-weight:600; }
.foot-col li.with-icon{ display:flex; gap:10px; align-items:flex-start; }
.foot-col li.with-icon svg{ width:16px; height:16px; stroke:var(--orange); fill:none; flex-shrink:0; margin-top:3px; }
.foot-tag{ color:#93a3b8; font-size:0.85rem; max-width:320px; }
.foot-cities{ color:#c7d3e0; font-size:0.8rem; margin-top:10px; font-weight:500; }
.icon-dot{ width:26px; height:26px; border-radius:50%; background:rgba(255,255,255,0.12); display:flex; align-items:center; justify-content:center; }
.icon-dot svg{ width:13px; height:13px; fill:#dfe8f2; }
.foot-social{ display:flex; gap:10px; margin-top:16px; }
.foot-bottom{ border-top:1px solid rgba(255,255,255,0.12); padding-block:20px; display:flex; flex-direction:column; gap:14px; }
.foot-links{ display:flex; gap:14px; flex-wrap:wrap; font-size:0.78rem; }
.foot-links a:hover{ color:var(--orange); }
.legal{ font-size:0.7rem; color:#93a3b8; max-width:900px; line-height:1.6; }
