/* Landing Implantes — Paz Salvador Dental · scoped .psd  */
/* Paleta del sitio: --ast-global-color-0 #96ab60 · 2 #212930 · 3 #404e5c · 4 #f2f3f5 · 6 #1f273a · 7 #4f8389 · 8 #dae59f */
.psd{
  --psd-green: var(--ast-global-color-0, #96ab60);
  --psd-green-hover: var(--ast-global-color-7, #4f8389);
  --psd-green-soft: var(--ast-global-color-8, #dae59f);
  --psd-ink: var(--ast-global-color-2, #212930);
  --psd-body: var(--ast-global-color-1, #3a3a3a);
  --psd-slate: var(--ast-global-color-3, #404e5c);
  --psd-bg: var(--ast-global-color-4, #f2f3f5);
  --psd-dark: var(--ast-global-color-6, #1f273a);
  font-family: 'Lora','Lora Fallback',Georgia,serif;
  color: var(--psd-body);
  font-size: 17px;
  line-height: 1.65;
  overflow-wrap: break-word;
}
.psd *, .psd *::before, .psd *::after{ box-sizing: border-box; }
.psd img{ max-width: 100%; height: auto; display: block; }
.psd a{ color: var(--psd-green-hover); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.psd a:hover{ color: var(--psd-green); }

/* Full-bleed: las secciones ocupan todo el viewport aunque el tema las meta en un contenedor.
   El desbordamiento de la anchura del scrollbar se recorta a nivel de body (nunca en .psd: recortaría el propio full-bleed). */
body{ overflow-x: clip; }
.psd-hero, .psd-strip, .psd-section{ width:100vw; position:relative; left:50%; transform:translateX(-50%); }
.psd-container{ max-width: 1240px; margin: 0 auto; padding: 0 24px; }
.psd-narrow{ max-width: 860px; }
.psd-section{ padding: 72px 0; background: #fff; }
.psd-alt{ background: var(--psd-bg); }
.psd-center{ text-align: center; margin-top: 40px; }

/* Headings — Montserrat como el resto del sitio */
.psd h1, .psd h2, .psd h3, .psd h4{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:700; color: var(--psd-ink); line-height:1.22; margin:0 0 18px; }
.psd h1{ font-size: clamp(32px, 4.4vw, 52px); letter-spacing:-0.5px; }
.psd h2{ font-size: clamp(26px, 3.2vw, 38px); margin-bottom: 22px; }
.psd h3{ font-size: clamp(20px, 2.2vw, 25px); margin-top: 42px; }
.psd h4{ font-size: 18px; }
.psd p{ margin: 0 0 18px; max-width: 72ch; }
.psd .psd-answer{ font-size: 19px; max-width: 78ch; }

/* Botones — píldora del sitio + destello de barrido al hover */
.psd-btn{
  position:relative; overflow:hidden; display:inline-block; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:700; font-size:16px; line-height:1.2;
  background: var(--psd-green); color:#fff !important; border:2px solid var(--psd-green);
  border-radius:50px; padding:15px 30px; text-decoration:none; cursor:pointer;
  transition: background .25s ease, border-color .25s ease, transform .2s ease, box-shadow .25s ease;
  box-shadow: 0 6px 18px rgba(150,171,96,.35);
}
.psd-btn::after{ content:""; position:absolute; top:-40%; bottom:-40%; left:-70%; width:36%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.45), transparent);
  transform: skewX(-20deg) translateX(0); pointer-events:none; }
.psd-btn:hover::after{ animation: psdShine .8s ease-out; }
@keyframes psdShine{ to{ transform: skewX(-20deg) translateX(560%); } }
.psd-btn:hover{ background: var(--psd-green-hover); border-color: var(--psd-green-hover); color:#fff !important; transform: translateY(-2px); box-shadow: 0 10px 24px rgba(79,131,137,.35); }
.psd-btn:active{ transform: translateY(0); box-shadow: 0 3px 10px rgba(79,131,137,.3); }
.psd-btn:disabled{ opacity:.45; cursor:not-allowed; transform:none; box-shadow:none; }
.psd-btn-ghost{ background:transparent; color: var(--psd-ink) !important; border-color: var(--psd-green); box-shadow:none; }
.psd-btn-ghost:hover{ background: var(--psd-green); color:#fff !important; }
.psd-btn-ghost2{ background:transparent; color: var(--psd-slate) !important; border-color: var(--psd-slate); box-shadow:none; }
.psd-btn-ghost2:hover{ background: var(--psd-slate); border-color: var(--psd-slate); color:#fff !important; transform:none; box-shadow:none; }
.psd-btn-wa{ background:#25d366; border-color:#25d366; box-shadow: 0 6px 18px rgba(37,211,102,.3); }
.psd-btn-wa:hover{ background:#1ebe5b; border-color:#1ebe5b; }

/* ===== Hero v3 (fondo clínica velado + gancho + retrato Dra. con halo) ===== */
.psd-hero{ position:relative; overflow:clip; display:flex; align-items:center; min-height: clamp(580px, 78vh, 780px); padding: 44px 0 56px; }
.psd-hero-bg{ position:absolute; inset:-6% 0; z-index:0; }
.psd-hero-bg img{ width:100%; height:100%; object-fit:cover; object-position: 50% 40%; will-change: transform; }
.psd-hero-scrim{ position:absolute; inset:0; z-index:1;
  background:
    radial-gradient(ellipse 58% 66% at 12% 84%, rgba(218,229,159,.30), transparent 66%),
    linear-gradient(90deg, rgba(250,250,247,.97) 0%, rgba(250,250,247,.93) 34%, rgba(250,250,247,.74) 54%, rgba(250,250,247,.44) 74%, rgba(250,250,247,.24) 100%);
}
.psd-hero-inner{ position:relative; z-index:2; width:100%; display:grid; grid-template-columns: minmax(0,7fr) minmax(0,5fr); gap:48px; align-items:center; }
.psd-hero-copy{ max-width: 640px; }
.psd-breadcrumb{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; color: var(--psd-slate); margin-bottom:20px; }
.psd-breadcrumb a{ color: var(--psd-slate); text-decoration:none; }
.psd-breadcrumb a:hover{ color: var(--psd-green); }
/* H1 SEO como kicker discreto (especificidad > .psd h1) */
.psd h1.psd-kicker{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:14px; font-weight:700; letter-spacing:1.6px; text-transform:uppercase; color: var(--psd-slate); margin:0 0 16px; display:flex; align-items:center; gap:10px; line-height:1.5; }
.psd h1.psd-kicker::before{ content:""; width:34px; height:3px; border-radius:3px; background: linear-gradient(90deg, var(--psd-green), var(--psd-green-soft)); flex:0 0 auto; }
/* Gancho persuasivo (párrafo, no heading) */
.psd-hook{ font-family:'Lora','Lora Fallback',Georgia,serif; font-size: clamp(32px, 4.6vw, 56px); line-height:1.14; color: var(--psd-ink); margin:0 0 20px; max-width: 15em; }
.psd-hl{ position:relative; white-space:nowrap;
  background-image: linear-gradient(120deg, rgba(150,171,96,.38), rgba(218,229,159,.65));
  background-repeat:no-repeat; background-size: 0% 40%; background-position: 0 82%; }
.psd-motion .psd-hl{ animation: psdHL .9s ease-out 1s forwards; }
@keyframes psdHL{ to{ background-size: 100% 40%; } }
.psd-hero-sub{ font-size:18px; max-width:58ch; }
.psd-hero-ctas{ display:flex; flex-wrap:wrap; gap:14px; margin:26px 0 24px; }
.psd-hero .psd-btn-ghost{ background: rgba(255,255,255,.55);  -webkit- }
/* Chips de confianza — cristal con borde iridiscente */
.psd-trust{ list-style:none; display:flex; flex-wrap:wrap; gap:10px 12px; padding:0; margin:0; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:14px; color: var(--psd-slate); }
.psd-trust li{ position:relative; display:flex; align-items:center; gap:7px; background: rgba(255,255,255,.66);  -webkit- border-radius:40px; padding:9px 16px; box-shadow: 0 2px 10px rgba(31,39,58,.06); }
.psd-trust li::before{ content:""; position:absolute; inset:0; border-radius:40px; padding:1px;
  background: conic-gradient(from 210deg, rgba(150,171,96,.55), rgba(218,229,159,.35), rgba(79,131,137,.4), rgba(150,171,96,.55));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none; }
.psd-trust-star{ color:#e7b93c; font-size:16px; }
/* Retrato con halo cónico giratorio (efecto halo literal) */
.psd-hero-media{ margin:0; position:relative; justify-self:center; width:min(100%, 430px); }
.psd-hero-media::before{ content:""; position:absolute; inset:-7%; border-radius:50%; z-index:0;
  background: conic-gradient(from 0deg, rgba(150,171,96,.0) 8%, rgba(150,171,96,.55) 26%, rgba(218,229,159,.6) 44%, rgba(79,131,137,.35) 62%, rgba(150,171,96,.0) 86%);
  opacity:.7; }
.psd-motion .psd-hero-media::before{ animation: psdSpin 16s linear infinite; }
@keyframes psdSpin{ to{ transform: rotate(360deg); } }
.psd-hero-media img{ position:relative; z-index:1; border-radius: 46% 54% 52% 48% / 44% 46% 54% 56%; box-shadow: 0 26px 60px rgba(31,39,58,.22); aspect-ratio:1/1; object-fit:cover; }
/* Variante retrato recortado (PNG transparente): figura emergiendo del blob de marca */
.psd-hero-cutout{ display:flex; flex-direction:column; align-items:center; }
.psd-hero-cutout::after{ content:""; position:absolute; left:50%; bottom:30px; transform:translateX(-50%); width:min(94%,400px); aspect-ratio:1/1; border-radius: 46% 54% 52% 48% / 44% 46% 54% 56%; background: linear-gradient(160deg, rgba(218,229,159,.8), rgba(150,171,96,.6) 55%, rgba(79,131,137,.45)); z-index:0; }
.psd-hero-cutout img{ width:min(80%,330px); aspect-ratio:auto; object-fit:contain; border-radius:0; box-shadow:none; filter: drop-shadow(0 24px 40px rgba(31,39,58,.35)); }
.psd-colegiado{ display:block; margin-top:3px; letter-spacing:.5px; color: var(--psd-green-hover); }
.psd-hero-media figcaption{ position:relative; z-index:1; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; font-weight:700; color:var(--psd-ink); text-align:center; margin:-24px auto 0; width:max-content; max-width:100%; background: rgba(255,255,255,.78);  -webkit- border-radius:30px; padding:9px 18px; box-shadow: 0 6px 18px rgba(31,39,58,.12); }
/* Barra de progreso de lectura (goal gradient) */
.psd-progressbar{ position:fixed; top:0; left:0; height:3px; width:0; z-index:9999; background: linear-gradient(90deg, var(--psd-green), var(--psd-green-hover)); border-radius:0 3px 3px 0; }

/* ===== Franja empática ===== */
.psd-strip{ background: var(--psd-dark); padding: 44px 0; }
.psd-strip-quote{ font-family:'Lora','Lora Fallback',serif; font-style:italic; font-size: clamp(20px, 2.6vw, 28px); line-height:1.5; color:#fff; text-align:center; margin:0 auto; max-width:30em; }

/* ===== Precios ===== */
.psd-price-cards{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:24px; margin:38px 0 10px; align-items:stretch; }
.psd-price-card{ position:relative; background:#fff; border:1px solid #e4e7ea; border-radius:22px; padding:30px 28px; display:flex; flex-direction:column; box-shadow: 0 8px 26px rgba(31,39,58,.06); transition: transform .25s ease, box-shadow .25s ease; }
.psd-price-card > *{ position:relative; z-index:2; }
.psd-price-card:hover{ transform: translateY(-4px); box-shadow: 0 16px 38px rgba(31,39,58,.10); }
/* Spotlight que sigue al cursor (atención guiada) */
.psd-spot::after{ content:""; position:absolute; inset:0; border-radius:inherit; z-index:1; opacity:0; transition:opacity .35s ease; pointer-events:none;
  background: radial-gradient(260px circle at var(--mx,50%) var(--my,50%), rgba(150,171,96,.13), transparent 65%); }
.psd-spot:hover::after{ opacity:1; }
/* Tarjeta central: borde aurora cónico giratorio (center-stage + Von Restorff) */
.psd-price-card-mid{ border:none; overflow:hidden; box-shadow: 0 14px 36px rgba(31,39,58,.14); }
.psd-price-card-mid::before{ content:""; position:absolute; inset:-120%; z-index:0;
  background: conic-gradient(var(--psd-green), var(--psd-green-soft), #fff, var(--psd-green-hover), var(--psd-green)); }
.psd-motion .psd-price-card-mid::before{ animation: psdSpin 9s linear infinite; }
.psd-price-card-mid > .psd-card-bg{ position:absolute; inset:2.5px; border-radius:20px; background:#fff; z-index:1; }
/* Cifra que desciende (anclaje 2.200 → 1.190) sin saltos de layout */
.psd-countdown{ font-variant-numeric: tabular-nums; }
/* Respiración sutil del CTA final (solo cierre) */
.psd-motion .psd-cta-final .psd-btn-wa, .psd-motion .psd-cta-final .psd-next:not(:disabled){ animation: psdBreath 5.5s ease-in-out infinite; }
@keyframes psdBreath{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.022); } }
/* Entrada escalonada del hero (cadencia de apertura) */
.psd-motion .psd-hero-copy > *{ opacity:0; transform: translateY(12px); animation: psdUp .7s ease-out forwards; }
.psd-motion .psd-hero-copy > *:nth-child(1){ animation-delay:.05s } .psd-motion .psd-hero-copy > *:nth-child(2){ animation-delay:.14s }
.psd-motion .psd-hero-copy > *:nth-child(3){ animation-delay:.24s } .psd-motion .psd-hero-copy > *:nth-child(4){ animation-delay:.34s }
.psd-motion .psd-hero-copy > *:nth-child(5){ animation-delay:.45s } .psd-motion .psd-hero-copy > *:nth-child(6){ animation-delay:.56s }
.psd-motion .psd-hero-media{ opacity:0; transform: translateY(14px) scale(.98); animation: psdUp .8s ease-out .3s forwards; }
@keyframes psdUp{ to{ opacity:1; transform:none; } }
.psd-price-name{ margin:0 0 4px; }
.psd-price-who{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:14px; color:var(--psd-slate); margin-bottom:14px; }
.psd-price-amount{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:17px; color:var(--psd-ink); margin-bottom:16px; }
.psd-price-amount strong{ font-size:34px; font-weight:900; color:var(--psd-ink); }
.psd-price-incl{ list-style:none; margin:0 0 16px; padding:0; }
.psd-price-incl li{ padding-left:26px; position:relative; margin-bottom:8px; }
.psd-price-incl li::before{ content:"✓"; position:absolute; left:0; top:0; color:var(--psd-green); font-weight:700; }
.psd-price-excl{ font-size:15px; color:var(--psd-body); border-top:1px dashed #d8dce0; padding-top:14px; margin:auto 0 0; }
.psd-table-wrap{ overflow-x:auto; margin: 8px 0 6px; }
.psd-table{ width:100%; border-collapse:collapse; background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 6px 22px rgba(31,39,58,.06); font-size:16px; min-width:640px; }
.psd-table th{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:14px; text-transform:uppercase; letter-spacing:.4px; background:var(--psd-dark); color:#fff; text-align:left; padding:14px 18px; }
.psd-table td{ padding:14px 18px; border-bottom:1px solid #eef0f2; vertical-align:top; }
.psd-table tr:nth-child(even) td{ background:#fafbf7; }
.psd-table td strong{ font-family:'Montserrat','Montserrat Fallback',sans-serif; white-space:nowrap; }
.psd-legal{ font-size:14px; color:#5c6570; max-width:90ch; }

/* ===== Casos (before/after) ===== */
.psd-case{ margin: 46px 0; }
.psd-case h3{ margin-top:0; }
.psd-ba{ position:relative; border-radius:20px; overflow:hidden; box-shadow: 0 14px 40px rgba(31,39,58,.14); touch-action: pan-y; max-width:900px; }
.psd-ba img{ width:100%; height:auto; display:block; user-select:none; -webkit-user-drag:none; pointer-events:none; }
.psd-ba-beforewrap{ position:absolute; inset:0; width: var(--cut, 50%); overflow:hidden; will-change: width; }
.psd-ba-beforewrap img{ width: auto; height:100%; max-width:none; }
.psd-ba-handle{ position:absolute; top:0; bottom:0; left: var(--cut, 50%); width:0; }
.psd-ba-handle::before{ content:""; position:absolute; top:0; bottom:0; left:-1.5px; width:3px; background:#fff; box-shadow:0 0 8px rgba(0,0,0,.35); }
.psd-ba-handle span{ position:absolute; top:50%; left:0; transform:translate(-50%,-50%); width:46px; height:46px; border-radius:50%; background:#fff; box-shadow:0 4px 14px rgba(0,0,0,.3); display:flex; align-items:center; justify-content:center; }
.psd-ba-handle span::before{ content:"◂ ▸"; font-size:13px; color:var(--psd-ink); letter-spacing:2px; }
.psd-ba-range{ position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:ew-resize; margin:0; }
.psd-ba-tag{ position:absolute; bottom:12px; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:12px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; background:rgba(31,39,58,.72); color:#fff; padding:6px 12px; border-radius:30px; pointer-events:none; }
.psd-ba-tag-a{ right:12px; }
.psd-ba-tag-b{ left:12px; opacity:0; transition:opacity .3s; }
.psd-ba.is-revealed .psd-ba-tag-b{ opacity:1; }
.psd-ba-hint{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:14px; color:var(--psd-slate); margin-top:12px; }
.psd-case-more{ margin-top:16px; }
.psd-case-more summary{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:15px; font-weight:700; color:var(--psd-slate); cursor:pointer; padding:10px 0; }
.psd-case-more summary:hover{ color:var(--psd-green); }
.psd-case-more[open] summary{ margin-bottom:12px; }
.psd-case-more .psd-ba{ max-width:760px; }

/* ===== Columnas / tratamientos / pasos ===== */
.psd-cols-2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:40px; align-items:start; }
.psd-cols-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.psd-cols-3 h4{ color:var(--psd-green-hover); margin-bottom:8px; }
.psd-treat-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.psd-treat{ background:#fff; border-radius:18px; padding:28px; box-shadow:0 6px 20px rgba(31,39,58,.05); border-left:4px solid var(--psd-green-soft); }
.psd-treat:hover{ border-left-color: var(--psd-green); }
.psd-treat h3{ margin-top:0; font-size:19px; }
.psd-treat p{ margin-bottom:0; }
.psd-treat-wide{ grid-column:1/-1; }
.psd-steps{ list-style:none; margin:34px 0 0; padding:0; counter-reset:paso; }
.psd-steps > li{ position:relative; padding:0 0 34px 66px; }
.psd-steps > li::before{ content:""; position:absolute; left:21px; top:46px; bottom:0; width:2px; background:linear-gradient(var(--psd-green-soft), rgba(218,229,159,.2)); }
.psd-steps > li:last-child::before{ display:none; }
.psd-steps > li::after{ counter-increment:paso; content:counter(paso); position:absolute; left:0; top:0; width:44px; height:44px; border-radius:50%; background:var(--psd-green); color:#fff; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:900; font-size:18px; display:flex; align-items:center; justify-content:center; box-shadow:0 6px 14px rgba(150,171,96,.4); }
.psd-steps h3{ margin:2px 0 8px; font-size:20px; }
.psd-steps p{ margin-bottom:0; }
.psd-media-row{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin:34px 0 22px; }
.psd-media-row img{ border-radius:16px; aspect-ratio:4/3; object-fit:cover; box-shadow:0 8px 22px rgba(31,39,58,.08); }
.psd-note{ font-size:16px; color:var(--psd-slate); }
.psd-img-round{ border-radius:18px; box-shadow:0 10px 28px rgba(31,39,58,.1); margin-top:10px; }

/* ===== Equipo / reseñas ===== */
.psd-team{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; margin:26px 0 10px; }
.psd-team figure{ margin:0; }
.psd-team img{ display:block; width:100%; height:auto; border-radius:18px; aspect-ratio:1/1; object-fit:cover; box-shadow:0 10px 24px rgba(31,39,58,.1); }
.psd-team figcaption{ font-size:14px; line-height:1.5; margin-top:12px; color:var(--psd-body); }
.psd-team figcaption strong{ font-family:'Montserrat','Montserrat Fallback',sans-serif; color:var(--psd-ink); }
.psd-reviews{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin-top:26px; }
.psd-reviews blockquote{ margin:0; background:var(--psd-bg); border-radius:18px; padding:26px; font-size:16px; position:relative; }
.psd-reviews blockquote::before{ content:"★★★★★"; display:block; color:#e7b93c; font-size:15px; letter-spacing:3px; margin-bottom:10px; }
.psd-reviews p{ margin-bottom:12px; }
.psd-reviews footer{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; color:var(--psd-slate); }

/* ===== Dónde / FAQ ===== */
.psd-phone-big{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:900; font-size:30px; }
.psd-phone-big a{ color:var(--psd-ink); text-decoration:none; }
.psd-phone-big a:hover{ color:var(--psd-green); }
.psd-faq{ background:#fff; border:1px solid #e6e9ec; border-radius:16px; margin-bottom:14px; overflow:hidden; }
.psd-faq summary{ list-style:none; cursor:pointer; padding:20px 56px 20px 24px; position:relative; }
.psd-faq summary::-webkit-details-marker{ display:none; }
.psd-faq summary h3{ display:inline; font-size:18px; margin:0; }
.psd-faq summary::after{ content:"+"; position:absolute; right:22px; top:50%; transform:translateY(-50%); font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:400; font-size:26px; color:var(--psd-green); transition:transform .25s; }
.psd-faq[open] summary::after{ transform:translateY(-50%) rotate(45deg); }
.psd-faq[open] summary{ border-bottom:1px solid #eef0f2; }
.psd-faq p{ padding:18px 24px 20px; margin:0; max-width:none; }
.psd-reviewed{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; color:var(--psd-slate); margin-top:26px; }

/* ===== Contacto final — capítulo oscuro: isla de luz (peak-end) ===== */
.psd-cta-final{ position:relative; overflow:clip; background:
  radial-gradient(ellipse 70% 60% at 85% 10%, rgba(79,131,137,.35), transparent 60%),
  radial-gradient(ellipse 60% 50% at 8% 90%, rgba(150,171,96,.28), transparent 65%),
  linear-gradient(165deg, #1f273a 0%, #232f40 55%, #1c2a2c 100%);
  padding: 84px 0 88px; }
.psd-cta-final h2{ color:#fff; }
.psd-cta-final > .psd-container{ position:relative; z-index:2; }
/* orbes aurora flotantes que mutan de forma y velocidad */
.psd-orb{ position:absolute; z-index:1; opacity:.55; pointer-events:none; }
.psd-orb-a{ width:420px; height:420px; left:-120px; top:-80px; background: radial-gradient(circle at 35% 35%, rgba(150,171,96,.75), rgba(150,171,96,0) 70%); }
.psd-orb-b{ width:520px; height:520px; right:-160px; bottom:-140px; background: radial-gradient(circle at 60% 40%, rgba(79,131,137,.7), rgba(79,131,137,0) 70%); }
.psd-motion .psd-orb-a{ animation: psdOrb 17s ease-in-out infinite alternate; }
.psd-motion .psd-orb-b{ animation: psdOrb 26s ease-in-out infinite alternate-reverse; }
@keyframes psdOrb{
  0%{ transform: translate(0,0) scale(1); }
  50%{ transform: translate(46px,-30px) scale(1.14); }
  100%{ transform: translate(-24px,36px) scale(.94); }
}
.psd-final-kicker{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; font-weight:700; letter-spacing:1.6px; text-transform:uppercase; color: var(--psd-green-soft); margin-bottom:14px; }
.psd-cta-final .psd-after-note{ color:#b9c4cf; }
.psd-cta-final .psd-legal-final{ color:#8d99a6; }
.psd-contact-grid{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:48px; align-items:start; }
/* Tarjeta-formulario: isla de luz con borde aurora vivo (rotación + morfología cambiante) */
.psd-contact-form{ position:relative; }
.psd-formsteps{ position:relative; background:#fff; border-radius:24px; padding:32px 30px; box-shadow:0 26px 70px rgba(0,0,0,.4); z-index:1; }
.psd-contact-form::before{ content:""; position:absolute; inset:-3px; z-index:0; border-radius:27px;
  background: conic-gradient(from 0deg, var(--psd-green), var(--psd-green-soft), #fff, var(--psd-green-hover), var(--psd-green));
  filter: blur(1px); }
.psd-motion .psd-contact-form::before{ animation: psdGlow 7s ease-in-out infinite alternate; }
@keyframes psdGlow{ from{ opacity:.7; transform:scale(1); } to{ opacity:1; transform:scale(1.012); } }
.psd-motion .psd-formsteps{ border-radius:24px; }
.psd-formsteps-meta{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:13px; color:var(--psd-slate); margin-bottom:10px; display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; }
.psd-mini-proof{ color:#a8892e; background: rgba(231,185,60,.14); border-radius:30px; padding:4px 12px; font-weight:700; }
.psd-progress{ height:6px; background:#edf0f2; border-radius:6px; overflow:hidden; margin-bottom:24px; }
.psd-progress span{ display:block; height:100%; width:35%; background:var(--psd-green); border-radius:6px; transition:width .4s ease; }
.psd-step-q{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:700; color:var(--psd-ink); margin-bottom:12px; }
.psd-step-q span{ font-weight:400; color:var(--psd-slate); font-size:14px; }
.psd-step-q2{ margin-top:22px; }
.psd-chips{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:6px; }
.psd-chip{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:15px; background:#fff; color:var(--psd-body); border:2px solid #d9dee2; border-radius:40px; padding:11px 18px; cursor:pointer; transition:all .2s; min-height:44px; }
.psd-chip:hover{ border-color:var(--psd-green); }
.psd-chip.is-on{ background:var(--psd-green); border-color:var(--psd-green); color:#fff; font-weight:700; }
.psd-next{ margin-top:22px; }
.psd-form-alt{ font-size:14px; color:var(--psd-slate); margin-top:14px; }
.psd-formsteps input, .psd-formsteps select, .psd-formsteps textarea{ font-size:16px !important; min-height:44px; }
.psd-formsteps textarea{ min-height:88px; }
.psd-after-note{ font-size:15px; color:var(--psd-slate); margin-top:18px; max-width:60ch; }
.psd-cta-final .psd-side-lead{ font-family:'Montserrat','Montserrat Fallback',sans-serif; font-weight:700; color:#fff; font-size:19px; }
.psd-cta-final .psd-phone-big{ font-size:34px; }
.psd-cta-final .psd-phone-big a{ color:#fff; display:inline-flex; align-items:center; gap:16px; }
.psd-cta-final .psd-phone-big a:hover{ color: var(--psd-green-soft); }
.psd-ring{ position:relative; display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; border-radius:50%; background: var(--psd-green); color:#fff; flex:0 0 auto; }
.psd-ring::before, .psd-ring::after{ content:""; position:absolute; inset:0; border-radius:50%; border:2px solid rgba(150,171,96,.8); opacity:0; }
.psd-motion .psd-ring::before{ animation: psdRipple 5.5s ease-out infinite .4s; }
.psd-motion .psd-ring::after{ animation: psdRipple 5.5s ease-out infinite 1s; }
@keyframes psdRipple{ 0%{ transform:scale(1); opacity:.7; } 26%{ transform:scale(1.85); opacity:0; } 100%{ opacity:0; } }
.psd-phone-note{ font-size:14px; color:#b9c4cf; margin-top:-8px; max-width:34ch; }
.psd-cta-final .psd-side-addr{ color:#b9c4cf; }
.psd-autorizacion{ display:inline-block; margin-top:8px; font-family:'Montserrat','Montserrat Fallback',sans-serif; font-size:12.5px; letter-spacing:.3px; color:#a9c6b0; }
.psd-cta-final .psd-sign{ font-family:'Lora','Lora Fallback',serif; font-style:italic; font-size:20px; color:#fff; margin-top:30px; }
.psd-cta-final .psd-form-alt a{ color: var(--psd-green-hover); }
.psd-legal-final{ margin-top:44px; }

/* ===== Barra móvil fija ===== */
.psd-mobilebar{ position:fixed; left:0; right:0; bottom:0; z-index:9990; display:none; background:rgba(255,255,255,.92);  -webkit- box-shadow:0 -6px 24px rgba(31,39,58,.16); padding:10px 12px calc(10px + env(safe-area-inset-bottom)); gap:10px; transform: translateY(110%); transition: transform .4s ease; }
.psd-mobilebar.is-visible{ transform:none; }
.psd-mobilebar a{ flex:1; text-align:center; font-size:15px; padding:13px 10px; }

/* ===== Reveal (progresivo, solo con JS y sin reduced-motion) ===== */
.psd-motion .psd-reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
.psd-motion .psd-reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .psd *, .psd *::before, .psd *::after{ transition:none !important; animation:none !important; }
  /* estados finales garantizados cuando las animaciones están anuladas */
  .psd-js .psd-reveal, .psd-js .psd-hero-copy > *, .psd-js .psd-hero-media{ opacity:1 !important; transform:none !important; }
  .psd-js .psd-hl{ background-size:100% 40% !important; }
}

/* ===== Responsive ===== */
@media (max-width: 1024px){
  .psd-team{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .psd-reviews{ grid-template-columns:1fr; }
  .psd-cols-3{ grid-template-columns:1fr; gap:18px; }
}
@media (max-width: 880px){
  .psd-section{ padding:54px 0; }
  .psd-hero{ min-height:auto; padding: 30px 0 46px; }
  .psd-hero-inner{ grid-template-columns:1fr; gap:26px; }
  .psd-hero-media{ order:-1; width: 176px; margin: 6px auto 0; }
  .psd-hero-media.psd-hero-cutout{ width: 224px; }
  .psd-hero-media img{ box-shadow: 0 14px 34px rgba(31,39,58,.2); }
  .psd-hero-media figcaption{ font-size:12px; padding:7px 14px; margin-top:-18px; }
  .psd-hero-scrim{ background:
    radial-gradient(ellipse 70% 40% at 50% 0%, rgba(218,229,159,.25), transparent 70%),
    linear-gradient(180deg, rgba(250,250,247,.90) 0%, rgba(250,250,247,.94) 55%, rgba(250,250,247,.985) 100%); }
  .psd-breadcrumb{ margin-bottom:14px; }
  .psd-kicker{ font-size:12px; letter-spacing:1.2px; }
  .psd-hook{ font-size: clamp(30px, 8.6vw, 38px); }
  .psd-hero-sub{ font-size:17px; }
  .psd-hero .psd-btn{ width:100%; text-align:center; }
  .psd-steps > li{ padding-left:58px; }
  .psd-steps > li::before{ left:19px; }
  .psd-container{ padding:0 20px; }
  .psd-price-cards{ grid-template-columns:1fr; }
  .psd-cols-2{ grid-template-columns:1fr; gap:26px; }
  .psd-treat-grid{ grid-template-columns:1fr; }
  .psd-contact-grid{ grid-template-columns:1fr; }
  .psd-media-row{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .psd-media-row img:last-child{ display:none; }
  .psd-mobilebar{ display:flex; }
  .psd-cta-final{ padding-bottom:110px; }
}

.psd-js:not(.psd-motion) .psd-hl{ background-size:100% 40%; }

/* Contraste medido (2026-09-10): botones en verde profundo de la misma familia; hovers en teal oscuro */
.psd-btn{ background:#5f7238; border-color:#5f7238; box-shadow:0 6px 18px rgba(95,114,56,.32); }
.psd-btn:hover{ background:#3f6f76; border-color:#3f6f76; }
.psd-btn-ghost{ background:rgba(255,255,255,.72); color:#212930 !important; border-color:#5f7238; }
.psd-btn-ghost:hover{ background:#5f7238; border-color:#5f7238; color:#fff !important; }
a:hover{ color:#5f7238; }
.psd a{ color:#3f6f76; }
.psd a:hover{ color:#5f7238; }
.psd-breadcrumb a:hover{ color:#5f7238; }
.psd-case-more summary:hover{ color:#5f7238; }
.psd-btn-ghost2{ background:transparent; color:#404e5c !important; border-color:#404e5c; box-shadow:none; }
.psd-btn-ghost2:hover{ background:#404e5c; border-color:#404e5c; color:#fff !important; }
.psd-btn-wa{ background:#25d366; border-color:#25d366; }
.psd-btn-wa:hover{ background:#1ebe5b; border-color:#1ebe5b; }
.psd-cta-final a:hover, .psd-cta-final .psd-phone-big a:hover{ color:#dae59f; }

/* Contraste WCAG AA (12/09/2026): WhatsApp con tinta verde oscura sobre el verde de marca (7,3:1) */
.psd .psd-btn-wa,.psd .psd-btn-wa:hover,.psd .psd-btn-wa:focus-visible{color:#0d2b1e!important}
.psd .psd-cta-final .psd-after-note a{color:var(--psd-green-soft)}
.psd .psd-cta-final .psd-after-note a:hover{color:#fff}

/* Nota «qué pasará» fuera del resplandor de la tarjeta: columna del formulario en escritorio, bajo el formulario en móvil */
.psd .psd-contact-grid>.psd-after-note{grid-column:1;margin-top:0}
@media (max-width:880px){.psd .psd-contact-grid>.psd-after-note{order:2;grid-column:auto}.psd .psd-contact-grid>.psd-contact-side{order:3}}

/* Botón del menú: tamaño del tema (la regla .psd-btn de esta landing lo agrandaba y partía el menú en dos líneas) */
.psd-btn-nav{padding:11px 22px;font-size:15px;white-space:nowrap}



/* Portátiles HD (viewport ≈ 1366×650): hero compacto para que el CTA quede sobre el pliegue (solo espaciado; contenido idéntico) */
@media (min-width:881px) and (max-height:700px){
  .psd .psd-hero{padding-top:12px}
  .psd .psd-hero .psd-breadcrumb{margin-bottom:6px}
  .psd .psd-hero .psd-kicker{margin-bottom:8px}
  .psd .psd-hero .psd-hook{margin-bottom:10px;font-size:clamp(28px,3.5vw,42px)}
  .psd .psd-hero .psd-hero-sub{font-size:15.5px;margin-bottom:0}
  .psd .psd-hero .psd-hero-ctas{margin:14px 0 12px}
}

/* Botón del menú alineado con el tema (cabecera de 9 enlaces, 15/09/2026) */
@media (min-width:1280px){.psd-btn-nav{padding:11px 18px;font-size:14.5px}}
@media (min-width:1100px) and (max-width:1279px){.psd-btn-nav{padding:10px 14px;font-size:13.5px}}
@media (min-width:881px) and (max-width:1099px){.psd-btn-nav{padding:14px 22px;font-size:16px}}
/* 30/09/2026: en móvil la cabecera de la tabla («Precio desde*») se oculta; el «desde» pasa a cada precio para no leerse como precio cerrado */
@media (max-width:880px){ #psd-precios .psd-table td:last-child strong::before{ content:"desde\00a0"; font-weight:600; font-size:.8em; color:var(--psd-slate); } html[lang^="ca"] #psd-precios .psd-table td:last-child strong::before{ content:"des de\00a0"; } }
