/* InstallHome · piezas nuevas de Impulser sobre su sistema visual (tokens de ih.css). */
html.intro-on, html.intro-on body { overflow: hidden }
.intro-skip { position: absolute; right: 22px; bottom: 22px; background: none; border: 1px solid var(--line); border-radius: 30px; padding: 9px 16px; font-size: 11px; color: var(--muted) }
.intro-skip:hover { color: var(--ink); border-color: var(--ink) }

/* ---------- navegación con desplegables ---------- */
.nav-drop { position: relative }
.nav-drop-btn { background: none; border: 0; border-bottom: 1px solid #0000; padding: 10px 0; display: inline-flex; align-items: center; gap: 5px; font-size: inherit }
.nav-drop-btn svg { transition: transform .2s }
.nav-drop.open .nav-drop-btn, .nav-drop-btn:hover { color: var(--blue) }
.nav-drop.open .nav-drop-btn svg { transform: rotate(180deg) }
.nav-drop-panel { display: none; position: absolute; top: calc(100% + 22px); left: -24px; z-index: 40; background: #fff; border: 1px solid var(--line); border-radius: 6px; box-shadow: 0 18px 50px #142e371f; padding: 22px 24px; width: 560px }
.nav-drop-zonas { width: 470px }
.nav-drop.open .nav-drop-panel { display: block }
.nav-drop-title { font-size: 9px; letter-spacing: 1.6px; font-weight: 700; color: var(--ink); text-transform: uppercase; margin: 0 0 10px }
.nav-drop-title:not(:first-child) { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line) }
.nav-drop-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 18px }
.nav-drop-grid a { display: flex; align-items: center; gap: 10px; padding: 8px 0; font-size: 12px; color: var(--ink); border-bottom: 1px solid #0000 }
.nav-drop-grid a svg { color: var(--blue); flex-shrink: 0 }
.nav-drop-grid a:hover { color: var(--blue) }
@media (max-width:1280px) { .nav > a[href="/obras-realizadas/"] { display: none } }
@media (max-width:800px) {
  .nav.open { max-height: calc(100dvh - 76px); overflow-y: auto }
  .nav.open .nav-drop-btn { width: 100%; justify-content: space-between; font-size: 14px; padding: 4px 0 }
  .nav.open .nav-drop-panel { position: static; width: auto; box-shadow: none; border: 0; border-left: 2px solid var(--line); border-radius: 0; padding: 6px 0 6px 14px; margin-top: 8px }
  .nav.open .nav-drop-grid { grid-template-columns: 1fr }
  .nav.open > a[href="/obras-realizadas/"] { display: block }
}

/* ---------- hero: acciones y checks ---------- */
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px }
.hero-wa { display: inline-flex; align-items: center; gap: 10px; padding: 16px 4px; font-size: 13px; font-weight: 600; color: #15734d; border-bottom: 1px solid #15734d55 }
.hero-wa:hover { border-color: #15734d }
.hero-checks { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-top: 30px; font-size: 11px; color: #4f6166 }
.hero-checks span { display: inline-flex; align-items: center; gap: 7px }
.hero-checks svg { color: var(--blue) }

/* ---------- pestañas: enlaces a páginas ---------- */
.story-links { display: flex; flex-wrap: wrap; gap: 0 22px }
.story-pages { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 20px; font-size: 11px; color: var(--muted) }
.story-pages a { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--line); border-radius: 30px; padding: 7px 12px; color: var(--ink); background: #fff }
.story-pages a:hover { border-color: var(--blue); color: var(--blue) }

/* ---------- todos los servicios ---------- */
.all-services { border-top: 1px solid var(--line) }
.all-services h2 span, .pg-rel h2 span, .section h2 span { color: var(--blue) }
.approach h2 span { color: #8db3f6 }
.svc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px }
.svc-card { background: var(--paper); border: 1px solid var(--line); border-radius: 6px; padding: 28px 26px 24px; display: flex; flex-direction: column; gap: 10px; transition: background .2s }
.svc-card:hover { background: #fff; border-color: #c7d3e8; box-shadow: 0 10px 30px #142e3712 }
.svc-card .svc-ico { color: var(--blue); width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 50%; display: grid; place-items: center; margin-bottom: 8px; background: #fff }
.svc-card strong { font-size: 17px; font-weight: 600; letter-spacing: -.4px }
.svc-card p { font-size: 12px; margin: 0 0 6px; line-height: 1.65; flex: 1 }
.svc-go { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 600; color: var(--blue); transition: gap .2s }
.svc-card:hover .svc-go { gap: 14px }

/* ---------- zonas ---------- */
.zona-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 24px 0 8px }
.zona-chips a { font-size: 11px; padding: 8px 13px; border: 1px solid #c9d4c8; border-radius: 30px; background: #f4f6f1 }
.zona-chips a:hover { border-color: var(--blue); color: var(--blue); background: #fff }

/* ---------- pie ampliado ---------- */
.footer-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 30px; padding: 32px 0 30px; border-bottom: 1px solid #d0d8d0 }
.footer-links p { font-size: 9px; letter-spacing: 1.6px; font-weight: 700; color: var(--ink); text-transform: uppercase; margin-bottom: 12px }
.footer-links a { display: block; font-size: 11px; color: #4f6166; padding: 5px 0; overflow-wrap: anywhere }
.footer-links a:hover { color: var(--blue) }
.impulser-badge { opacity: .8 }
@media (max-width:800px) { .footer-links { grid-template-columns: 1fr 1fr; gap: 22px } }

/* ---------- páginas internas ---------- */
.crumbs { padding: 18px var(--pad) 0; font-size: 11px; color: var(--muted); display: flex; flex-wrap: wrap; gap: 8px }
.crumbs a:hover { color: var(--blue) }
.crumbs [aria-current] { color: var(--ink) }
.page-hero { min-height: 560px }
.page-hero .eyebrow { margin-bottom: 22px }
.page-hero h1 { letter-spacing: -2.4px; font-size: clamp(40px, 4.4vw, 68px); line-height: 1.06; margin: 0 0 26px; font-weight: 500 }
.page-hero h1 span { color: var(--blue) }
.page-hero .hero-lead a { color: var(--blue); border-bottom: 1px solid #2365e455 }
.page-hero .hero-copy { padding-top: 20px }
.page-hero .hero-image { min-height: 520px }
.page-hero .hero-image > img { position: absolute; inset: 0; object-fit: cover; width: 100%; height: 100% }
.page-hero .hero-image figcaption { font-size: 10px; max-width: 70%; line-height: 1.5 }
@media (max-width:800px) { .page-hero .hero-image { min-height: 360px } .page-hero h1 { font-size: clamp(34px, 9vw, 46px); letter-spacing: -1.6px } }

.section-heading > p a, .pg-precio p a, .faq-item p a, .principles p a { color: var(--blue) }
.service-list.two-cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: 50px }
@media (max-width:800px) { .service-list.two-cols { grid-template-columns: 1fr } }
.principles.cols-4 { grid-template-columns: repeat(4, 1fr); gap: 40px }
.principles.cols-2 { grid-template-columns: repeat(2, 1fr) }
@media (max-width:1100px) { .principles.cols-4 { grid-template-columns: 1fr 1fr } }
@media (max-width:800px) { .principles.cols-4, .principles.cols-2 { grid-template-columns: 1fr } }
.pg-cards .principles { padding-bottom: 20px }

.obra-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 18px }
.obra { position: relative; border: 0; padding: 0; border-radius: 4px; overflow: hidden; aspect-ratio: 3/4; background: #dfe6dc }
.obra img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s }
.obra:hover img { transform: scale(1.04) }
.obra > span { position: absolute; right: 10px; bottom: 10px; width: 32px; height: 32px; border-radius: 50%; background: #fffffff0; display: grid; place-items: center; color: var(--ink) }
@media (max-width:1000px) { .obra-grid { grid-template-columns: repeat(3, 1fr) } }
@media (max-width:600px) { .obra-grid { grid-template-columns: 1fr 1fr } }
.page-obras .obra-grid { grid-template-columns: repeat(4, 1fr) }

.pg-precio { background: #fff; border-block: 1px solid var(--line) }
.precio-grid { display: grid; grid-template-columns: .9fr 1fr; gap: 10%; align-items: start }
.precio-grid p:not(.eyebrow) { font-size: 14px; max-width: 460px }
.precio-grid p strong { color: var(--ink) }
.precio-grid .button { margin-top: 10px }
.factores { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line) }
.factores li { display: flex; gap: 22px; align-items: baseline; padding: 18px 0; border-bottom: 1px solid var(--line); font-size: 13px; line-height: 1.6 }
.factores li span { color: var(--blue); font-size: 10px; font-weight: 700; letter-spacing: 1px }
@media (max-width:800px) { .precio-grid { grid-template-columns: 1fr; gap: 30px } }

.cuando-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px }
.cuando-grid > div { display: flex; gap: 14px; align-items: flex-start; padding: 20px; background: #fff; border: 1px solid var(--line); border-radius: 5px; font-size: 13px; line-height: 1.55 }
.cuando-grid svg { color: var(--blue); margin-top: 1px }

.ad-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px }
.ad-pair figure { margin: 0; position: relative; border-radius: 4px; overflow: hidden; aspect-ratio: 3/2; background: #dfe6dc }
.ad-pair img { width: 100%; height: 100%; object-fit: cover }
.ad-pair figcaption { position: absolute; left: 14px; top: 14px; background: #fff; border-radius: 3px; padding: 6px 10px; font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase }
@media (max-width:600px) { .ad-pair { grid-template-columns: 1fr } }

.process.light { border-top: 1px solid var(--line); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) }
.process.light > div > span { color: var(--blue) }
.process.light div > p { color: var(--muted); max-width: 260px; font-size: 12px }
.pg-proceso, .pg-rel, .pg-incluye, .pg-cuando, .pg-obras, .pg-antes { border-top: 1px solid var(--line) }
.pg-obras + .approach, .trust-bar + .approach { border-top: 0 }
.pg-zonas { background: #e9ede7 }

.legal-page { max-width: 900px }
.legal-page h1 { font-size: clamp(36px, 4vw, 56px); letter-spacing: -2px; font-weight: 500; margin-bottom: 40px }
.legal-body h2 { font-size: 22px; letter-spacing: -.5px; margin: 34px 0 12px }
.legal-body h3 { font-size: 17px; margin: 24px 0 10px }
.legal-body p, .legal-body li { font-size: 14px; line-height: 1.8; color: var(--muted) }
.legal-body a { color: var(--blue) }
.legal-body table { border-collapse: collapse; width: 100%; font-size: 13px; margin: 14px 0 }
.legal-body td, .legal-body th { border: 1px solid var(--line); padding: 9px 12px; text-align: left; vertical-align: top }

.nf { min-height: 60vh; display: flex; flex-direction: column; justify-content: center }
.nf h1 { font-size: clamp(42px, 6vw, 84px); letter-spacing: -3px; font-weight: 500; line-height: 1.04; margin-bottom: 24px }
.nf h1 span { color: var(--blue) }
.error a { margin-left: 6px; padding: 0 }
.success:focus { outline: none }

/* ajustes de revisión */
.terrain > p svg { width: 14px; height: 14px }
.map-pin svg { width: 18px; height: 18px }
.map-link { color: var(--blue) }
.section-heading > p { max-width: 430px }
@media (min-width:801px) { .footer-bottom { padding-right: 150px } }
.hero-foot { flex-wrap: wrap; row-gap: 8px }
.hero-foot span { white-space: nowrap }
@media (max-width:800px) {
  .hero-wa { display: none }
  .all-services .svc-grid, .pg-rel .svc-grid { grid-template-columns: 1fr; gap: 8px }
  .svc-card { display: grid; grid-template-columns: 40px 1fr auto; align-items: center; column-gap: 14px; padding: 14px 16px }
  .svc-card .svc-ico { width: 40px; height: 40px; margin: 0; grid-row: 1 / 3 }
  .svc-card strong { font-size: 15px }
  .svc-card p { grid-column: 2; font-size: 11px; margin: 2px 0 0; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden }
  .svc-card .svc-go { grid-column: 3; grid-row: 1 / 3; font-size: 0; gap: 0 }
  .svc-card .svc-go svg { width: 18px; height: 18px }
}

.about-photo { margin: 43px 0 0; position: sticky; top: 140px; border-radius: 6px; overflow: hidden; background: #dfe6dc }
.about-photo img { display: block; width: 100%; aspect-ratio: 4/5; object-fit: cover; object-position: center 20% }
.about-photo figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 22px 18px; background: linear-gradient(#0000, #061d28cc); color: #fff; display: grid; gap: 4px }
.about-photo figcaption strong { font-size: 20px; font-weight: 600; letter-spacing: -.4px }
.about-photo figcaption span { font-size: 11px; color: #d6e2e6 }
@media (max-width:1000px) { .about-photo { position: relative; top: 0; margin: 0 auto; max-width: 420px; width: 100% } }
.factores li div { color: var(--muted) }
.factores li strong { color: var(--ink); font-weight: 600 }

/* narrativa v2 */
.hero-tel { color: var(--ink); border-color: #142e3740 }
.hero-tel:hover { border-color: var(--ink) }
@media (max-width:800px) { .hero-tel { display: none } }
.problem { border-bottom: 1px solid var(--line) }
.problem-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; border-top: 1px solid var(--line); padding-top: 34px }
.problem-grid span { color: #c0392b; font-size: 10px; font-weight: 700; letter-spacing: 1px; display: block; margin-bottom: 16px }
.problem-grid h3 { font-size: 20px; margin-bottom: 12px }
.problem-grid p { font-size: 13px; margin: 0 }
.bridge { margin: 46px 0 0; font-size: clamp(20px, 2vw, 28px); letter-spacing: -.6px; color: var(--ink); line-height: 1.35 }
.bridge strong { color: var(--blue); font-weight: 500 }
@media (max-width:800px) { .problem-grid { grid-template-columns: 1fr; gap: 26px } }
.process.dark-steps { grid-template-columns: repeat(3, 1fr); margin-top: 40px }
.process.dark-steps > div > span { color: #9dbff5 }
.process.dark-steps h3 { font-size: 19px }
.process.dark-steps div > p { max-width: 300px; font-size: 12px }
.page-is .process.dark-steps, .pg-proceso .process.dark-steps { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) }
@media (max-width:800px) { .process.dark-steps { grid-template-columns: 1fr } }
.brands h2 span, .about h2 span { color: var(--blue) }
.next-steps { list-style: none; padding: 0; margin: 28px 0 30px; display: grid; gap: 16px; max-width: 380px }
.next-steps li { display: flex; gap: 14px; align-items: flex-start }
.next-steps b { flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%; background: var(--blue); color: #fff; font-size: 11px; display: grid; place-items: center }
.next-steps span { font-size: 12px; color: var(--muted); line-height: 1.55 }
.next-steps strong { display: block; color: var(--ink); font-size: 13px; font-weight: 600 }
.request-card .form-title { font-size: 26px; letter-spacing: -.8px; color: var(--ink); margin: 0 0 4px }
.request-card .type-choices { margin: 18px 0 20px; display: flex; flex-wrap: wrap; gap: 8px; grid-template-columns: none }
.request-card .type-choices button { width: auto; padding: 10px 14px; font-size: 12px; min-height: 0 }
.request-card .field-grid { margin-top: 4px }
.related-links { padding: 0 var(--pad) 50px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 11px; color: var(--muted) }
.related-links a { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--line); border-radius: 30px; padding: 7px 12px; color: var(--ink); background: #fff }
.related-links a:hover { color: var(--blue); border-color: var(--blue) }
.pg-servicios { border-top: 1px solid var(--line) }
.is-home .hero h1 { font-size: clamp(34px, 3.6vw, 56px); letter-spacing: -1.8px; line-height: 1.08 }
@media (max-width:800px) { .is-home .hero h1 { font-size: clamp(30px, 8.4vw, 40px); letter-spacing: -1.2px } }
.about-photo { max-width: 420px; width: 100%; justify-self: end }
.about { grid-template-columns: minmax(0,300px) minmax(0,1fr) !important; gap: 70px !important; align-items: center !important }
.about-photo { max-width: 300px !important; margin: 0 !important; position: relative !important; top: 0 !important; justify-self: start }
.about-photo img { aspect-ratio: 1/1 !important; object-position: center 25% }
.about-photo figcaption { padding: 30px 16px 12px }
.about-photo figcaption strong { font-size: 16px }
@media (max-width:1000px) { .about { grid-template-columns: 1fr !important; gap: 28px !important } .about-photo { max-width: 220px !important } }
.about { display: block !important }
.about .about-copy { max-width: 760px; margin: 0 auto }
.owner { display: flex; align-items: center; gap: 18px; margin: 6px 0 26px; padding: 14px 18px 14px 14px; background: #fff; border: 1px solid var(--line); border-radius: 60px; width: fit-content; max-width: 100% }
.owner img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; object-position: center 30%; flex-shrink: 0 }
.owner strong { display: block; font-size: 16px; color: var(--ink); font-weight: 600 }
.owner span { display: block; font-size: 12px; color: var(--muted); margin-top: 2px }

.precios-box { background: #fff; border: 1px solid var(--line); border-radius: 6px; padding: 18px 20px; margin: 4px 0 24px; max-width: 460px }
.precios-box .eyebrow { margin-bottom: 10px }
.precios-box > div { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: 13px; color: var(--ink) }
.precios-box > div:last-of-type { border-bottom: 0 }
.precios-box strong { color: var(--blue); white-space: nowrap; font-weight: 700 }
.precios-box small { display: block; margin-top: 8px; font-size: 11px; color: var(--muted) }

/* ===== galería v2: protagonista, deslizable, sin franjas grises ===== */
@media (min-width:1001px){.service-panel.with-gallery{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:5%}}
.g2{position:relative;border-radius:6px;overflow:hidden;background:#dfe5e3}
.g2-track{display:flex;height:560px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;outline:0}
.g2-track::-webkit-scrollbar{display:none}
.g2-slide{flex:0 0 100%;height:100%;margin:0;position:relative;overflow:hidden;scroll-snap-align:center;scroll-snap-stop:always}
.g2-bg{position:absolute;inset:-40px;width:calc(100% + 80px);height:calc(100% + 80px);object-fit:cover;filter:blur(26px) saturate(1.1) brightness(.88)}
.g2-main{position:relative;display:block;width:100%;height:100%;object-fit:contain;cursor:zoom-in}
video.g2-main{cursor:auto;background:#132d35}
.g2-count{position:absolute;left:14px;bottom:14px;padding:6px 11px;border-radius:20px;background:#0a181ea8;color:#fff;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;pointer-events:none}
.g2-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:50%;background:#f7f7f2eb;color:var(--ink);display:grid;place-items:center;box-shadow:0 2px 14px #132d3530;cursor:pointer}
.g2-nav:hover{background:#fff}
.g2-nav.g-prev{left:14px}.g2-nav.g-next{right:14px}
.project-gallery .gallery-thumbnails{margin-top:12px}
.project-gallery .gallery-thumbnails button{flex-basis:76px;height:64px}
@media (max-width:1100px){.g2-track{height:470px}}
@media (max-width:800px){
 .service-panel.with-gallery{gap:26px}
 .service-panel.with-gallery .project-gallery{order:-1;width:100vw;margin-left:calc(50% - 50vw)}
 .project-gallery .gallery-heading{padding:0 20px}
 .g2{border-radius:0}
 .g2-track{height:auto;aspect-ratio:4/5;max-height:74svh}
 .g2-nav,.project-gallery .gallery-thumbnails{display:none}
 .g2-count::after{content:"  ·  desliza →";opacity:.8;font-weight:500}
}

/* ===== zona: mapa real con pueblos enlazados ===== */
.zmap{position:relative;margin:0;border-radius:6px;overflow:hidden;background:#eef0ec;align-self:center}
.zmap img{display:block;width:100%;height:auto}
.zpin{position:absolute;transform:translate(-7px,-7px);display:flex;align-items:center;gap:6px;color:var(--ink);text-decoration:none;white-space:nowrap}
.zpin i{width:14px;height:14px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 6px #142e3740;flex:none}
.zpin.nolabel b{display:none}
.zpin.nolabel:hover b,.zpin.nolabel:focus b{display:block;position:absolute;left:18px;z-index:3}
.zpin b{font-size:11px;font-weight:600;background:#ffffffe6;padding:3px 7px;border-radius:12px;box-shadow:0 1px 6px #142e3720}
.zpin.base{z-index:2;transform:translate(-11px,-11px)}
.zpin.base i{width:22px;height:22px;background:var(--ink)}
.zpin.base b{font-size:12px;background:var(--ink);color:#fff}
a.zpin:hover b{background:var(--blue);color:#fff}
.zmap figcaption{position:absolute;right:6px;bottom:4px;font-size:9px;color:#6b7a7e;background:#ffffffb3;padding:1px 5px;border-radius:3px}
.zmap figcaption a{color:inherit}
@media (max-width:800px){.zmap{margin-top:26px}.zpin:not(.base) b{display:none}.zpin i{width:12px;height:12px}}

/* ===== dock de contacto con frases de refuerzo ===== */
.contact-dock{flex-direction:column;align-items:flex-end;gap:8px}
.dock-note{margin:0;display:flex;flex-direction:column;gap:3px;background:#fff;border-radius:10px;padding:9px 13px;box-shadow:0 4px 22px #142e3722;font-size:11.5px;color:var(--ink);font-weight:500}
.dock-note span{display:flex;align-items:center;gap:6px}
.dock-note svg{color:#15734d;flex:none}
@media (max-width:800px){
 .contact-dock{gap:1px 6px}
 .dock-note{grid-column:1/-1;flex-direction:row;justify-content:center;flex-wrap:wrap;gap:4px 14px;background:none;box-shadow:none;padding:2px 0 6px;font-size:11px;border-radius:0}
}

/* ===== firma Impulser visible ===== */
.impulser-badge{display:flex;width:fit-content;align-items:center;gap:10px;margin:28px auto 0;padding:10px 16px 10px 10px;border-radius:40px;background:#0f2530;color:#fff!important;font-size:13px;font-weight:500;text-decoration:none;box-shadow:0 4px 18px #0f253025;transition:transform .15s,background .15s}
.impulser-badge strong{font-weight:700}
.impulser-badge svg{flex:none;border-radius:6px}
.impulser-badge:hover{background:#1A6BFF;transform:translateY(-1px)}
@media (max-width:800px){.impulser-badge{margin:24px auto 84px;font-size:12px}}

/* ===== CTA = WhatsApp / llamar ===== */
.hero-button svg,.button.small svg,.consult svg{flex:none}
@media (max-width:800px){.hero-actions .hero-tel{display:inline-flex!important}}
/* dock: oculto hasta hacer scroll */
.contact-dock{transition:transform .28s ease,opacity .28s ease;transform:translateY(140%);opacity:0;pointer-events:none}
.contact-dock.on{transform:none;opacity:1;pointer-events:auto}
@media (prefers-reduced-motion:reduce){.contact-dock{transition:none}}

/* ===== reseñas ===== */
.stars{color:#f5a623;letter-spacing:1px}
.hero-rating{display:inline-flex;align-items:center;gap:7px;margin-top:18px;padding:7px 13px 7px 9px;border-radius:30px;background:#fff;box-shadow:0 2px 14px #142e3714;color:var(--ink);font-size:12.5px;text-decoration:none;width:fit-content}
.hero-rating strong{font-size:13.5px}
.hero-rating span:last-child{color:#5c6e72}
.hero-rating:hover{box-shadow:0 3px 18px #142e3726}
.reviews .section-heading{align-items:end}
.reviews-score{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;background:#fff;border-radius:12px;padding:12px 18px;box-shadow:0 2px 14px #142e3712}
.reviews-score div{display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center}
.reviews-score strong{font-size:26px;font-weight:600;line-height:1}
.reviews-score span:last-child{grid-column:1/-1;font-size:11px;color:#5c6e72;margin-top:3px}
.reviews-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:34px 0 22px}
.review{margin:0;background:#fff;border-radius:10px;padding:22px 22px 18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 2px 16px #142e370f}
.review blockquote{margin:0;font-size:14px;line-height:1.6;color:#253a42;display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden;flex:1}
.review figcaption{display:flex;align-items:center;gap:10px}
.review figcaption img,.review figcaption i{width:36px;height:36px;border-radius:50%;flex:none}
.review figcaption i{display:grid;place-items:center;background:#dfe7f5;color:var(--blue);font-style:normal;font-weight:700}
.review figcaption span{display:grid}
.review figcaption a{color:var(--ink);font-weight:600;font-size:13px;text-decoration:none}
.review figcaption small{font-size:11px;color:#6b7a7e}
@media (max-width:1000px){.reviews-track{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:800px){
 .reviews .section-heading{display:grid;gap:18px}
 .reviews-score{width:fit-content}
 .reviews-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin:26px calc(50% - 50vw) 18px;padding:2px 20px 10px;scrollbar-width:none}
 .reviews-track::-webkit-scrollbar{display:none}
 .review{flex:0 0 84%;scroll-snap-align:center}
}

/* ===== plantilla oficios v3 ===== */
.brand-logo{display:block;height:40px;width:auto;max-width:220px;object-fit:contain}
.footer .brand-logo{height:44px}
.brand-text{font-size:20px;font-weight:700;color:var(--ink);letter-spacing:-.3px}
.hero-tpl{align-items:center}
.hero-tpl .hero-image{margin:0;border-radius:8px;overflow:hidden;position:relative;aspect-ratio:4/5;max-height:640px}
.hero-tpl .hero-image img{width:100%;height:100%;object-fit:cover;display:block}
.hero-tpl .hero-image figcaption{position:absolute;left:14px;bottom:14px;background:#0a181ea8;color:#fff;font-size:11px;padding:6px 11px;border-radius:20px}
.hero-tpl h1 span,.hero-tpl h1 mark{color:var(--blue);background:none}
.hero-checks{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;font-size:12.5px;color:var(--ink)}
.hero-checks span{display:inline-flex;align-items:center;gap:6px}
.hero-checks svg{color:var(--blue)}
.owner-points{margin-top:22px}
.hero-tpl>*{min-width:0}
.hero-tpl .hero-image{width:100%;max-width:100%}
.owner-points>div{display:flex;gap:10px;align-items:flex-start}
.owner-points>div>span{flex:none;margin-top:2px}
.owner-points p{margin:0}
.owner-points strong{margin-right:4px}
@media (min-width:1001px){.hero-tpl{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}}
@media (max-width:800px){.hero-tpl .hero-image{aspect-ratio:4/3;margin-top:24px}}
\n.zpin.izq{flex-direction:row-reverse;transform:translate(calc(-100% + 7px),-7px)}\n.zpin.base.izq{transform:translate(calc(-100% + 11px),-11px)}\n