[hidden] { display: none !important; }

:root {
  --color-bg: #FAF9F7;
  --color-bg-alt: #F2EDE6;
  --color-surface: #FFFFFF;
  --color-text: #14213F;
  --color-text-muted: #5B6178;
  --color-primary: #E5852B;
  --color-primary-ink: #B05A10;
  --color-primary-claro: #F2B27A;
  --color-secondary: #12305C;
  --color-cta: #12305C;
  --color-cta-hover: #0D2447;
  --color-cta-text: #FFFFFF;
  --color-ink: #12254A;
  --color-error: #A23A2E;
  --tint-orange: #FDEBDA;
  --tint-blue: #E8EDF5;
  --line: rgba(20, 33, 63, .13);
  --brand-plus: #E5852B;
  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-body: "Figtree", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out: cubic-bezier(0.32, 0.72, 0, 1);
  --ease-rev: cubic-bezier(0.32, 0.72, 0, 1);
  --radius: 18px;
  --section-pad-y: clamp(2.75rem, 5.5vw, 4.5rem);
  --fs-h1: clamp(2.2rem, 4.4vw, 3.7rem);
  --fs-h2: clamp(1.7rem, 3vw, 2.45rem);
  --fs-h3: clamp(1.15rem, 1.6vw, 1.35rem);
  --fs-body: clamp(1rem, 1.1vw, 1.0625rem);
  --container: 1240px;
  --gutter: clamp(1rem, 4vw, 2rem);
  --sp-1: .5rem;
  --sp-2: 1rem;
  --sp-3: 1.5rem;
  --sp-4: 2rem;
  --sp-5: 2.5rem;
  --sp-6: 3rem;
  --sp-7: 3.5rem;
  --sp-8: 4rem;
  --shadow-lg: 0 24px 60px -18px rgba(18, 37, 74, .34);
  --shadow-soft: 0 20px 44px -24px rgba(18, 37, 74, .4);
  --header-h: 96px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; overflow-x: clip; max-width: 100vw; }
body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.65;
  overflow-x: clip;
  max-width: 100vw;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; -webkit-user-drag: none; pointer-events: auto; }
figure { margin: 0; }
h1, h2, h3, p, ul, ol { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: 0; padding: 0; }
::selection { background: var(--tint-orange); color: var(--color-text); }
:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 3px; border-radius: 6px; }

html, body { -webkit-user-select: none; -moz-user-select: none; user-select: none; }
input, textarea, [contenteditable] { -webkit-user-select: text; user-select: text; }

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 600;
  color: var(--color-text);
  letter-spacing: -.015em;
  text-wrap: balance;
}
h1 { font-size: var(--fs-h1); line-height: 1.06; }
h2 { font-size: var(--fs-h2); line-height: 1.12; }
h3 { font-size: var(--fs-h3); line-height: 1.25; }
p { max-width: 65ch; }

.container {
  width: 100%;
  max-width: calc(var(--container) + var(--gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
section { padding-block: var(--section-pad-y); }
.ico { width: 20px; height: 20px; flex: none; }
.glifo-wa { width: 22px; height: 22px; flex: none; }

.wm {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(2.2rem, 2.9vw, 2.6rem);
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--color-text);
  white-space: nowrap;
}
.wm__mas {
  position: relative;
  display: inline-block;
  width: .56em;
  height: .56em;
  margin-left: .06em;
  color: transparent;
  overflow: hidden;
  transform: translateY(-.1em);
}
.wm__mas::before, .wm__mas::after {
  content: "";
  position: absolute;
  background: var(--brand-plus);
  border-radius: .035em;
}
.wm__mas::before { left: 0; right: 0; top: 50%; height: .17em; transform: translateY(-50%); }
.wm__mas::after { top: 0; bottom: 0; left: 50%; width: .17em; transform: translateX(-50%); }
.wm__lema {
  display: block;
  margin-top: .4rem;
  font-size: .64rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--color-text-muted);
  white-space: nowrap;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  min-height: 52px;
  padding: .85rem 1.5rem;
  border-radius: 999px;
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.2;
  text-align: center;
  transition: background-color .3s var(--ease), color .3s var(--ease), transform .2s var(--ease);
}
.btn .ico { transition: transform .35s var(--ease); }
.btn:hover .ico { transform: translateX(4px); }
.btn:active { transform: scale(.97); }
.btn--primario { background: var(--color-cta); color: var(--color-cta-text); }
.btn--primario:hover { background: var(--color-cta-hover); }
.btn--wa {
  gap: .75rem;
  padding: .4rem 1rem .4rem .4rem;
  background: transparent;
  color: var(--color-text);
  text-align: left;
  font-size: 1.05rem;
}
.btn--wa .glifo-wa {
  width: 44px;
  height: 44px;
  padding: 11px;
  border-radius: 50%;
  background: var(--tint-orange);
  color: var(--color-primary-ink);
}
.btn--wa small { display: block; font-size: .78rem; font-weight: 400; color: var(--color-text-muted); }
.btn--wa:hover .glifo-wa { background: #F9DDC2; }

.etiqueta {
  font-size: .76rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--color-primary-ink);
}
.cabecera { display: grid; gap: .9rem; max-width: 42rem; margin-bottom: clamp(1.75rem, 3.5vw, 2.75rem); }
.raya { display: block; width: 44px; height: 3px; border-radius: 3px; background: var(--color-primary); }

.lista-mas { display: grid; gap: .6rem; }
.lista-mas li { position: relative; padding-left: 1.75rem; }
.lista-mas li::before, .lista-mas li::after {
  content: "";
  position: absolute;
  top: .82em;
  background: var(--color-primary);
  border-radius: 2px;
}
.lista-mas li::before { left: .1rem; width: .8rem; height: 3px; transform: translateY(-50%); }
.lista-mas li::after { left: calc(.1rem + .4rem - 1.5px); width: 3px; height: .8rem; transform: translateY(-50%); }

.site-header { position: relative; z-index: 15; background: var(--color-bg); border-bottom: 1px solid var(--line); }
.header-inner { display: flex; align-items: center; gap: clamp(1rem, 2.4vw, 2.5rem); min-height: var(--header-h); padding-block: .75rem; }
.brand { position: relative; z-index: 100; overflow: visible; display: flex; align-items: center; gap: .85rem; flex: none; }
.brand__emblema { width: auto; height: 58px; flex: none; }
.brand__txt { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.main-nav { display: flex; align-items: center; gap: clamp(1rem, 1.7vw, 1.75rem); margin-left: auto; }
.main-nav a { position: relative; padding-block: .45rem; font-weight: 600; font-size: .95rem; color: var(--color-text); }
.main-nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  border-radius: 2px;
  background: var(--color-primary);
  transform: scaleX(0);
  transform-origin: 0 50%;
  transition: transform .35s var(--ease);
}
.main-nav a:hover::after { transform: scaleX(1); }
.nav-wa { display: none; }
.nav-close { display: none; }
.header-cta {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  flex: none;
  padding: .55rem 1.2rem .55rem .95rem;
  min-height: 52px;
  border-radius: 999px;
  background: var(--color-cta);
  color: #fff;
  font-weight: 600;
  font-size: .95rem;
  line-height: 1.15;
  transition: background-color .3s var(--ease), transform .2s var(--ease);
}
.header-cta small { display: block; font-size: .72rem; font-weight: 400; opacity: .82; }
.header-cta:hover { background: var(--color-cta-hover); }
.header-cta:active { transform: scale(.97); }
.menu-toggle { display: none; }
.nav-backdrop { position: fixed; inset: 0; background: rgba(18, 37, 74, .45); opacity: 0; visibility: hidden; transition: opacity .3s var(--ease-out), visibility 0s .3s; z-index: 110; }
.nav-backdrop.open { opacity: 1; visibility: visible; transition: opacity .3s var(--ease-out); }
body.no-scroll { overflow: hidden; }

@media (max-width: 1099px) {
  .main-nav {
    position: fixed;
    top: 0;
    right: 0;
    max-height: 100dvh;
    overflow-y: auto;
    width: 74%;
    max-width: 320px;
    margin-left: 0;
    background: var(--color-surface);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: .15rem;
    padding: 1.3rem 1.5rem calc(1.5rem + env(safe-area-inset-bottom));
    transform: translateX(100%);
    visibility: hidden;
    transition: transform .38s var(--ease-rev), visibility 0s .38s, box-shadow 0s .38s;
    z-index: 120;
    box-shadow: none;
  }
  .main-nav.open { transform: translateX(0); visibility: visible; box-shadow: var(--shadow-lg); transition: transform .38s var(--ease-rev); }
  .nav-close { display: flex; align-items: center; justify-content: center; align-self: flex-end; width: 44px; height: 44px; margin-bottom: .4rem; border-radius: 50%; background: var(--color-bg-alt); color: var(--color-text); }
  .nav-close svg { width: 20px; height: 20px; }
  .main-nav a { padding: .85rem .25rem; font-size: 1.05rem; border-bottom: 1px solid var(--line); }
  .main-nav a::after { display: none; }
  .main-nav .nav-wa { display: block; margin-top: .9rem; padding: .9rem 1rem; text-align: center; border-radius: 999px; border-bottom: 0; background: var(--color-cta); color: #fff; }
  .header-cta { margin-left: auto; }
  .menu-toggle { display: grid; place-items: center; width: 44px; height: 44px; border: 0; background: transparent; color: inherit; cursor: pointer; }
  .menu-toggle svg { width: 24px; height: 24px; }
}
@media (max-width: 640px) {
  :root { --header-h: 78px; }
  .header-cta { display: none; }
  .menu-toggle { margin-left: auto; }
  .wm { font-size: 2.2rem; }
  .wm__lema { font-size: .58rem; letter-spacing: .18em; }
  .brand__emblema { height: 48px; }
}

.hero { position: relative; padding-block: 0; }
.hero-eyebrow { font-size: .8rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--color-primary-ink); }
.hero-lead { font-size: clamp(1.05rem, 1.3vw, 1.2rem); color: var(--color-text-muted); max-width: 33rem; }
.hero-ctas { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.1rem; margin-top: .5rem; }
.hero-badges { display: flex; flex-wrap: wrap; gap: .6rem 1.4rem; margin-top: .75rem; font-size: .92rem; color: var(--color-text-muted); }
.hero-badges li { display: inline-flex; align-items: center; gap: .5rem; }
.hero-badges .ico { color: var(--color-primary); }
.hero__texto { display: grid; gap: 1.2rem; max-width: 35rem; }
.hero__media { overflow: hidden; }
.hero__media picture { display: block; width: 100%; height: 100%; }
.hero__media img { width: 100%; height: 100%; object-fit: cover; }
figure[data-parallax] img { position: relative; top: -4%; height: 108%; }

.hero--dividido { display: grid; align-items: center; min-height: clamp(540px, 42vw, 660px); }
.hero--dividido .hero__inner { position: relative; z-index: 2; padding-block: clamp(2.5rem, 5vw, 4rem); }
.hero--dividido .hero__media { position: absolute; top: 0; right: 0; bottom: 0; width: 61%; border-bottom-left-radius: 56px; }
.hero--dividido .hero__media img { object-position: 60% 40%; }
.hero--dividido .hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, var(--color-bg) 0%, rgba(250, 249, 247, .74) 15%, rgba(250, 249, 247, 0) 38%);
  pointer-events: none;
}
.nota-marca {
  position: absolute;
  z-index: 3;
  right: max(var(--gutter), calc((100% - var(--container)) / 2));
  bottom: -52px;
  width: min(300px, calc(100% - var(--gutter) * 2));
  display: grid;
  gap: .55rem;
  padding: 1.25rem 1.4rem 1.35rem;
  border-radius: var(--radius);
  background: var(--color-surface);
  box-shadow: var(--shadow-soft);
}
.nota-marca p { font-family: var(--font-display); font-weight: 500; font-size: 1.12rem; line-height: 1.3; }
.wm--nota { font-size: 2.3rem; }

@media (max-width: 1023px) {
  .hero--dividido { display: flex; flex-direction: column; min-height: 0; }
  .hero--dividido .hero__inner { padding-block: 1.75rem 1.5rem; }
  .hero--dividido .hero__media {
    position: relative;
    width: auto;
    aspect-ratio: 16 / 9;
    margin-inline: var(--gutter);
    border-radius: var(--radius);
  }
  .hero--dividido .hero__media::after { display: none; }
  .m1 .nota-marca { bottom: -72px; width: min(280px, calc(100% - var(--gutter) * 2 - 1.5rem)); padding: 1rem 1.15rem; right: calc(var(--gutter) + .75rem); }
  .m1 .servicios { padding-top: calc(var(--section-pad-y) + 4.5rem); }
  .wm--nota { font-size: 1.9rem; }
  .nota-marca p { font-size: 1rem; }
}
@media (max-width: 640px) {
  .hero--dividido .hero__media { aspect-ratio: 4 / 3; }
  .hero--dividido .hero__media img { object-position: 62% 50%; }
}

.servicios { background: var(--color-bg-alt); padding-top: calc(var(--section-pad-y) + 1rem); }
.serv-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.75rem); }
.serv-card { display: flex; flex-direction: column; }
.serv-card[data-animate] { transition: opacity .9s var(--ease), transform 1.1s var(--ease), translate .35s var(--ease); }
.serv-card:hover { translate: 0 -4px; }
.serv-card__foto { aspect-ratio: 1 / 1; width: 100%; overflow: hidden; border-radius: var(--radius); }
.serv-card__foto img { width: 100%; height: 100%; object-fit: cover; }
.serv-card:hover .serv-card__foto img { transform: scale(1.04); }
.serv-card__cuerpo {
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .55rem;
  margin: -3.5rem 1rem 0;
  padding: 1.5rem 1.4rem 1rem;
  background: var(--color-surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.serv-card__ico {
  position: absolute;
  top: -26px;
  right: 1.25rem;
  width: 52px;
  height: 52px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--tint-orange);
  color: var(--color-primary-ink);
  transition: transform .5s var(--ease);
}
.serv-card__ico .ico { width: 24px; height: 24px; }
.serv-card:hover .serv-card__ico { transform: rotate(-8deg) scale(1.06); }
.serv-card__cuerpo > p:not(.etiqueta) { color: var(--color-text-muted); font-size: .98rem; }
.serv-card__mas {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  min-height: 44px;
  margin-top: auto;
  padding-block: .5rem;
  font-weight: 600;
  color: var(--color-secondary);
}
.serv-card__mas .ico { transition: transform .35s var(--ease); }
.serv-card__mas:hover .ico { transform: translateX(4px); }

@media (max-width: 899px) {
  .serv-grid { grid-template-columns: minmax(0, 1fr); max-width: 560px; margin-inline: auto; }
}
@media (min-width: 600px) and (max-width: 899px) {
  .serv-grid { max-width: none; }
  .serv-card { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); align-items: center; }
  .serv-card__cuerpo { margin: 0 0 0 -2.5rem; }
}

.modalidades__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.modalidades__foto { position: relative; z-index: 2; align-self: start; width: 100%; max-width: 350px; aspect-ratio: 9 / 16; overflow: hidden; border-radius: var(--radius); }
.modalidades__foto img { width: 100%; height: 100%; object-fit: cover; }
.m1 .modalidades__foto { margin-top: calc(-1 * (var(--section-pad-y) + 3rem)); }
.modalidades__texto { display: grid; gap: 1.5rem; }
.modalidades__texto .cabecera { margin-bottom: 0; }
.lee { font-family: var(--font-display); font-weight: 500; font-size: clamp(1.3rem, 2vw, 1.65rem); line-height: 1.4; max-width: 34ch; text-wrap: balance; }
.lee-w { color: var(--color-text-muted); transition: color .4s var(--ease-out); }
.lee-w.on { color: var(--color-text); }
.modos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.modos li { display: grid; gap: .35rem; align-content: start; padding: 1.2rem 1.25rem; background: var(--color-surface); border: 1px solid var(--line); border-radius: var(--radius); }
.modos__ico { width: 40px; height: 40px; display: grid; place-items: center; margin-bottom: .25rem; border-radius: 50%; background: var(--tint-blue); color: var(--color-secondary); }
.modos h3 { font-size: 1.15rem; }
.modos p { font-size: .95rem; color: var(--color-text-muted); }
.edades { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; }
.edades p { font-weight: 600; font-size: .95rem; }
.edades ul { display: flex; flex-wrap: wrap; gap: .5rem; }
.edades li { padding: .4rem .95rem; border-radius: 999px; background: var(--tint-orange); color: var(--color-primary-ink); font-weight: 600; font-size: .9rem; }

@media (max-width: 899px) {
  .modalidades__grid { grid-template-columns: minmax(0, 1fr); }
  .modalidades__foto { max-width: none; aspect-ratio: 4 / 3; }
  .modalidades__foto img { object-position: 50% 18%; }
  .m1 .modalidades__foto { margin-top: calc(-1 * (var(--section-pad-y) + 1.5rem)); }
}
@media (max-width: 520px) {
  .modos { grid-template-columns: minmax(0, 1fr); gap: .75rem; }
  .modos li { grid-template-columns: 40px minmax(0, 1fr); column-gap: .9rem; row-gap: .15rem; padding: 1rem 1.1rem; }
  .modos__ico { grid-row: span 2; margin-bottom: 0; }
}

.equipo { background: var(--color-bg-alt); }
.equipo__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "texto foto"; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.equipo__foto { grid-area: foto; aspect-ratio: 1 / 1; width: 100%; overflow: hidden; border-radius: var(--radius); }
.equipo__foto img { width: 100%; height: 100%; object-fit: cover; }
.equipo__texto { grid-area: texto; display: grid; gap: 1.25rem; }
.equipo__texto .cabecera { margin-bottom: 0; }
.equipo__bajada { color: var(--color-text-muted); }
.lista-mas--grande { gap: 0; }
.lista-mas--grande li { padding-block: .85rem; font-size: 1.05rem; font-weight: 600; border-bottom: 1px solid var(--line); }
.lista-mas--grande li::before, .lista-mas--grande li::after { top: calc(.85rem + .82em); }

@media (max-width: 899px) {
  .equipo__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "foto" "texto"; }
  .equipo__foto { max-width: 560px; }
}

.pasos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1rem, 2.4vw, 2rem); }
.pasos li { display: grid; gap: .5rem; align-content: start; }
.pasos__n { font-family: var(--font-display); font-weight: 500; font-size: 2.6rem; line-height: 1; color: var(--color-primary); }
.pasos h3 { font-size: 1.2rem; }
.pasos p { font-size: .97rem; color: var(--color-text-muted); }
.m1 .pasos li { position: relative; padding-top: 1.4rem; border-top: 1px solid var(--line); }
.m1 .pasos li::before { content: ""; position: absolute; left: 0; top: -2px; width: 48px; height: 3px; border-radius: 3px; background: var(--color-primary); }
.m1 .pasos__n { margin-bottom: .35rem; }

@media (max-width: 1023px) {
  .pasos { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 2rem; }
}
@media (max-width: 560px) {
  .m1 .pasos { grid-template-columns: minmax(0, 1fr); row-gap: 1.5rem; }
}

.faq { background: var(--color-bg-alt); }
.faq__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.faq__cab { display: grid; gap: 1rem; align-self: start; }
.faq__cab .cabecera { margin-bottom: 0; }
.m1 .faq__cab { position: sticky; top: 2rem; }
.faq__mas { color: var(--color-text-muted); }
.faq__mas a { color: var(--color-secondary); font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.faq-lista { display: grid; gap: .75rem; }
.faq-lista details { background: var(--color-surface); border: 1px solid var(--line); border-radius: var(--radius); }
.faq-lista summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 58px;
  padding: 1.05rem 1.35rem;
  font-weight: 600;
  font-size: 1.04rem;
  line-height: 1.35;
  cursor: pointer;
  list-style: none;
}
.faq-lista summary::-webkit-details-marker { display: none; }
.faq-lista summary .ico { color: var(--color-primary); transition: transform .35s var(--ease); }
.faq-lista details[open] summary .ico { transform: rotate(180deg); }
.faq-lista details p { padding: 0 1.35rem 1.25rem; color: var(--color-text-muted); }

@media (max-width: 899px) {
  .faq__grid { grid-template-columns: minmax(0, 1fr); }
  .m1 .faq__cab { position: static; }
}

.contacto { background: var(--color-bg); }
.contacto__card {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: clamp(1.75rem, 4vw, 3.5rem);
  margin-bottom: calc(-1 * (var(--section-pad-y) + 4.5rem));
  padding: clamp(1.5rem, 4vw, 3.25rem);
  border-radius: calc(var(--radius) * 1.5);
  background: var(--tint-orange);
}
.contacto__info { display: grid; gap: 1.25rem; align-content: start; }
.contacto__info .cabecera { margin-bottom: 0; }
.contacto__info > p { color: var(--color-text-muted); }
.contacto__numero { display: inline-flex; align-items: center; gap: .85rem; font-family: var(--font-display); font-weight: 600; font-size: clamp(1.35rem, 2.3vw, 1.85rem); line-height: 1.15; color: var(--color-text); }
.contacto__numero .glifo-wa { width: 54px; height: 54px; padding: 13px; border-radius: 50%; background: var(--color-cta); color: #fff; transition: transform .35s var(--ease); }
.contacto__numero:hover .glifo-wa { transform: scale(1.06); }
.contacto__numero small { display: block; margin-bottom: .2rem; font-family: var(--font-body); font-size: .82rem; font-weight: 600; letter-spacing: .02em; color: var(--color-primary-ink); }
.contacto__lista { display: grid; gap: .45rem; font-weight: 600; }
.contacto__lista li { position: relative; padding-left: 1.75rem; }
.contacto__lista li::before, .contacto__lista li::after { content: ""; position: absolute; top: .82em; background: var(--color-primary); border-radius: 2px; }
.contacto__lista li::before { left: .1rem; width: .8rem; height: 3px; transform: translateY(-50%); }
.contacto__lista li::after { left: calc(.1rem + .4rem - 1.5px); width: 3px; height: .8rem; transform: translateY(-50%); }

.form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-content: start; padding: clamp(1.25rem, 3vw, 2rem); border-radius: var(--radius); background: var(--color-surface); }
.campo { display: grid; gap: .4rem; align-content: start; }
.campo--ancho { grid-column: 1 / -1; }
.campo label { font-weight: 600; font-size: .92rem; }
.campo input, .campo select, .campo textarea {
  width: 100%;
  min-height: 48px;
  padding: .75rem .95rem;
  border: 1px solid rgba(18, 37, 74, .22);
  border-radius: 12px;
  background: var(--color-bg);
  transition: border-color .25s var(--ease), box-shadow .25s var(--ease), background-color .25s var(--ease);
}
.campo select {
  appearance: none;
  padding-right: 2.6rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C2632F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .9rem center;
  background-size: 18px;
}
.campo textarea { min-height: 96px; resize: vertical; }
.campo input::placeholder, .campo textarea::placeholder { color: #8A8FA2; }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: none; border-color: var(--color-secondary); background-color: #fff; box-shadow: 0 0 0 3px rgba(18, 48, 92, .16); }
.campo [aria-invalid="true"] { border-color: var(--color-error); box-shadow: 0 0 0 3px rgba(162, 58, 46, .12); }
.campo__error { font-size: .85rem; font-weight: 600; color: var(--color-error); }
.form__envio { display: grid; gap: .55rem; justify-items: start; margin-top: .25rem; }
.form__nota { font-size: .86rem; color: var(--color-text-muted); }

@media (max-width: 899px) {
  .contacto__card { grid-template-columns: minmax(0, 1fr); margin-bottom: calc(-1 * (var(--section-pad-y) + 3rem)); }
}
@media (max-width: 520px) {
  .contacto__card { padding: 1.5rem 1rem 1rem; }
  .form { grid-template-columns: minmax(0, 1fr); padding: 1.15rem; }
  .form .btn { width: 100%; }
  .form__envio { justify-items: stretch; }
}

.site-footer { position: relative; padding-top: calc(var(--section-pad-y) + 4.5rem + 3rem); padding-bottom: 1.5rem; background: var(--color-ink); color: rgba(255, 255, 255, .78); font-size: .97rem; }
.footer__grid { display: grid; grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr)); gap: 2rem; padding-bottom: 2.5rem; border-bottom: 1px solid rgba(255, 255, 255, .14); }
.wm--pie { font-size: clamp(2.2rem, 3.3vw, 3rem); color: #fff; }
.footer__logo { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; }
.footer__emblema { width: auto; height: clamp(64px, 7vw, 80px); flex: none; padding: .55rem .65rem; border-radius: 18px; background: #fff; }
.footer__marca p { margin-top: .75rem; font-size: .72rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.footer__titulo { margin-bottom: .8rem; font-weight: 600; color: #fff; }
.footer__col ul { display: grid; gap: .55rem; }
.footer__col a { transition: color .25s var(--ease); }
.footer__col a:hover { color: #fff; }
.footer__pie { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .75rem 2rem; padding-top: 1.5rem; font-size: .88rem; }
.footer__pie a { font-weight: 600; color: #fff; text-decoration: underline; text-decoration-color: rgba(255, 255, 255, .35); text-underline-offset: 3px; }

@media (max-width: 899px) {
  .site-footer { padding-top: calc(var(--section-pad-y) + 3rem + 2.5rem); }
  .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .footer__marca { grid-column: 1 / -1; }
}
@media (max-width: 480px) {
  .footer__grid { grid-template-columns: minmax(0, 1fr); }
}

dialog.modal {
  width: min(900px, calc(100vw - 2rem));
  max-width: none;
  max-height: calc(100dvh - 2rem);
  padding: 0;
  border: 0;
  border-radius: calc(var(--radius) * 1.3);
  background: var(--color-surface);
  color: var(--color-text);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
dialog.modal[open] { animation: modalIn .45s var(--ease); }
dialog.modal::backdrop { background: rgba(18, 37, 74, .55); }
.modal__caja { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); max-height: calc(100dvh - 2rem); overflow-y: auto; }
.modal__foto { align-self: start; aspect-ratio: 1 / 1; width: 100%; overflow: hidden; }
.modal__foto img { width: 100%; height: 100%; object-fit: cover; }
.modal__cuerpo { display: grid; gap: .9rem; align-content: start; padding: clamp(1.5rem, 3vw, 2.4rem); }
.modal__cuerpo h3 { font-size: clamp(1.5rem, 2.4vw, 1.9rem); }
.modal__cuerpo > p:not(.etiqueta) { color: var(--color-text-muted); }
.modal__cuerpo .btn { justify-self: start; margin-top: .5rem; }
.modal-cerrar { position: absolute; top: .75rem; right: .75rem; z-index: 2; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .94); color: var(--color-text); box-shadow: 0 8px 20px -10px rgba(18, 37, 74, .4); transition: transform .2s var(--ease); }
.modal-cerrar:active { transform: scale(.94); }
@keyframes modalIn { from { opacity: 0; transform: translateY(16px) scale(.98); } }
@media (max-width: 700px) {
  .modal__caja { grid-template-columns: minmax(0, 1fr); }
  .modal__foto { aspect-ratio: 16 / 10; }
  .modal__cuerpo .btn { justify-self: stretch; }
}

.wsp-float {
  position: fixed;
  right: max(16px, env(safe-area-inset-right));
  bottom: calc(18px + env(safe-area-inset-bottom));
  z-index: 90;
  width: 58px;
  height: 58px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #25D366;
  color: #fff;
  box-shadow: 0 14px 30px -12px rgba(0, 0, 0, .38);
  opacity: 0;
  transform: translateY(16px) scale(.92);
  pointer-events: none;
  transition: opacity .45s var(--ease), transform .45s var(--ease);
}
.wsp-float.visible { opacity: 1; transform: none; pointer-events: auto; }
.wsp-float svg { width: 30px; height: 30px; }
.wsp-float::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 50%; background: #25D366; animation: pulso 2.6s var(--ease) infinite; }
@keyframes pulso { 0% { transform: scale(1); opacity: .45; } 100% { transform: scale(1.65); opacity: 0; } }
body.no-scroll .wsp-float { opacity: 0; pointer-events: none; }

.toast-wrap { position: fixed; left: 50%; bottom: calc(20px + env(safe-area-inset-bottom)); z-index: 130; display: grid; gap: .5rem; width: min(440px, calc(100vw - 2rem)); transform: translateX(-50%); pointer-events: none; }
.toast { display: flex; align-items: center; gap: .65rem; padding: .85rem 1.1rem; border-radius: 14px; background: var(--color-ink); color: #fff; box-shadow: var(--shadow-lg); font-size: .95rem; animation: toastIn .35s var(--ease); }
.toast svg { width: 18px; height: 18px; flex: none; color: var(--color-primary-claro); }
.toast.hiding { opacity: 0; transform: translateY(8px); transition: opacity .2s ease-out, transform .2s ease-out; }
@keyframes toastIn { from { opacity: 0; transform: translateY(10px); } }

.hero--fondo { display: flex; align-items: flex-end; min-height: clamp(560px, calc(100svh - var(--header-h)), 800px); margin-inline: clamp(0px, 1.1vw, 16px); border-radius: 0 0 36px 36px; }
.hero--fondo .hero__media { position: absolute; inset: 0; border-radius: inherit; }
.hero--fondo .hero__media img { object-position: 64% 40%; }
.hero--fondo .hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(18, 37, 74, .88) 0%, rgba(18, 37, 74, .66) 34%, rgba(18, 37, 74, .1) 64%),
    linear-gradient(0deg, rgba(18, 37, 74, .5) 0%, rgba(18, 37, 74, 0) 46%);
  pointer-events: none;
}
.hero--fondo .hero__inner { position: relative; z-index: 2; padding-block: 3rem clamp(4rem, 7vw, 5.5rem); }
.hero--fondo h1 { color: #fff; }
.hero--fondo .hero-eyebrow { color: var(--color-primary-claro); }
.hero--fondo .hero-lead { color: rgba(255, 255, 255, .86); }
.hero--fondo .btn--primario { background: var(--color-bg); color: var(--color-text); }
.hero--fondo .btn--primario:hover { background: #fff; }
.hero--fondo .btn--wa { color: #fff; }
.hero--fondo .btn--wa small { color: rgba(255, 255, 255, .74); }
.hero--fondo .btn--wa .glifo-wa { background: rgba(255, 255, 255, .14); color: #fff; }
.hero--fondo .btn--wa:hover .glifo-wa { background: rgba(255, 255, 255, .24); }
.hero--fondo .hero-badges { color: rgba(255, 255, 255, .88); }
.hero--fondo .hero-badges .ico { color: var(--color-primary-claro); }

.ficha {
  position: absolute;
  z-index: 3;
  right: max(calc(var(--gutter) + 1rem), calc((100% - var(--container)) / 2));
  bottom: -64px;
  width: 340px;
  display: grid;
  gap: .6rem;
  padding: 1.4rem 1.5rem 1rem;
  border-radius: var(--radius);
  background: var(--color-surface);
  box-shadow: var(--shadow-soft);
}
.ficha > p { font-family: var(--font-display); font-weight: 500; font-size: 1.1rem; line-height: 1.3; }
.ficha__links { margin-top: .35rem; border-top: 1px solid var(--line); }
.ficha__links a { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 48px; padding-block: .55rem; font-weight: 600; font-size: .97rem; border-bottom: 1px solid var(--line); transition: color .25s var(--ease); }
.ficha__links li:last-child a { border-bottom: 0; }
.ficha__links a .ico { color: var(--color-primary); transition: transform .35s var(--ease); }
.ficha__links a:hover { color: var(--color-secondary); }
.ficha__links a:hover .ico { transform: translateX(4px); }

@media (max-width: 1023px) {
  .hero--fondo { flex-direction: column; align-items: stretch; min-height: 0; margin-inline: 0; border-radius: 0; background: var(--color-ink); }
  .hero--fondo .hero__inner { order: 1; padding-block: 1.75rem 1.75rem; }
  .hero--fondo .hero__media { position: relative; order: 2; inset: auto; aspect-ratio: 16 / 9; border-radius: 0; }
  .hero--fondo .hero__media::after { display: none; }
  .ficha { position: relative; order: 3; right: auto; bottom: auto; width: auto; max-width: 420px; margin: -3rem var(--gutter) -3rem auto; }
}
@media (max-width: 700px) {
  .hero--fondo .hero__media { aspect-ratio: 4 / 3; }
  .hero--fondo .hero__media img { object-position: 50% 14%; }
  .ficha { margin-left: var(--gutter); max-width: none; padding: 1.15rem 1.2rem .8rem; }
}

body.m2 .servicios { background: var(--color-bg); padding-top: calc(var(--section-pad-y) + 1.5rem); }
body.m2 .servicios .cabecera { justify-items: center; margin-inline: auto; text-align: center; }
.tabs {
  display: flex;
  justify-content: center;
  gap: .35rem;
  width: fit-content;
  max-width: 100%;
  margin: 0 auto clamp(1.5rem, 3vw, 2.25rem);
  padding: .35rem;
  border-radius: 999px;
  background: var(--color-bg-alt);
  overflow-x: auto;
  scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab { display: inline-flex; align-items: center; gap: .55rem; flex: none; min-height: 48px; padding: .6rem 1.2rem; border-radius: 999px; font-weight: 600; white-space: nowrap; color: var(--color-text-muted); transition: background-color .3s var(--ease), color .3s var(--ease); }
.tab:hover { color: var(--color-text); }
.tab[aria-selected="true"] { background: var(--color-cta); color: #fff; }
.serv-panel { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: center; }
.serv-panel.is-cambiando { animation: panelIn .6s var(--ease); }
@keyframes panelIn { from { opacity: 0; transform: translateY(12px); } }
.serv-panel__foto { aspect-ratio: 1 / 1; width: 100%; overflow: hidden; border-radius: var(--radius); }
.serv-panel__foto img { width: 100%; height: 100%; object-fit: cover; }
.serv-panel__cuerpo { display: grid; gap: 1rem; align-content: center; }
.serv-panel__cuerpo h3 { font-size: clamp(1.6rem, 2.6vw, 2.15rem); }
.serv-panel__cuerpo > p:not(.etiqueta) { color: var(--color-text-muted); font-size: 1.05rem; }
.serv-panel__cuerpo .btn { justify-self: start; margin-top: .4rem; }
@media (max-width: 899px) {
  .serv-panel { grid-template-columns: minmax(0, 1fr); }
  .serv-panel__foto { aspect-ratio: 4 / 3; }
}
@media (max-width: 480px) {
  .tab .ico { display: none; }
  .tab { padding: .5rem .65rem; font-size: .88rem; }
  .serv-panel__cuerpo .btn { justify-self: stretch; }
}
@media (max-width: 400px) {
  .tab__extra { display: none; }
}
@media (max-width: 360px) {
  .serv-card__cuerpo { margin-inline: .6rem; padding: 1.3rem 1.1rem .75rem; gap: .45rem; }
  .serv-card__cuerpo > p:not(.etiqueta) { font-size: .94rem; }
}

body.m2 .equipo { background: var(--color-ink); color: rgba(255, 255, 255, .8); }
body.m2 .equipo h2 { color: #fff; }
body.m2 .equipo .raya { background: var(--color-primary-claro); }
body.m2 .equipo__grid { position: relative; z-index: 2; align-items: start; margin-bottom: calc(-1 * (var(--section-pad-y) + 4rem)); }
body.m2 .equipo__texto { align-self: start; padding-top: clamp(0rem, 2vw, 1.5rem); }
body.m2 .equipo__bajada { color: rgba(255, 255, 255, .76); }
body.m2 .lista-mas--grande li { border-bottom-color: rgba(255, 255, 255, .14); color: #fff; }
body.m2 .lista-mas--grande li::before, body.m2 .lista-mas--grande li::after { background: var(--color-primary-claro); }
@media (max-width: 899px) {
  body.m2 .equipo__grid { grid-template-areas: "texto" "foto"; margin-bottom: calc(-1 * (var(--section-pad-y) + 2rem)); }
}

body.m2 .modalidades__grid {
  grid-template-columns: minmax(0, 330px) minmax(0, 1fr);
  grid-template-areas: "cab cab" "lee lee" "foto modos" "foto edades" "foto cta";
  row-gap: 1.5rem;
  align-items: start;
}
body.m2 .modalidades { padding-top: calc(var(--section-pad-y) + 4rem); }
body.m2 .modalidades__texto { display: contents; }
body.m2 .modalidades__texto > .cabecera { grid-area: cab; }
body.m2 .modalidades__texto > .lee-wrap { grid-area: lee; }
body.m2 .modalidades__texto > .modos { grid-area: modos; }
body.m2 .modalidades__texto > .edades { grid-area: edades; }
body.m2 .modalidades__texto > .modalidades__cta { grid-area: cta; }
body.m2 .modalidades__foto { grid-area: foto; grid-row: 3 / span 3; max-width: 330px; }
body.m2 .lee { max-width: 42ch; font-size: clamp(1.35rem, 2.3vw, 1.9rem); }
@media (max-width: 899px) {
  body.m2 .modalidades { padding-top: calc(var(--section-pad-y) + 2rem); }
  body.m2 .modalidades__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "cab" "lee" "foto" "modos" "edades" "cta"; }
  body.m2 .modalidades__foto { grid-row: auto; max-width: none; }
}

body.m2 .proceso { background: var(--color-bg-alt); }
body.m2 .pasos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.m2 .pasos li { grid-template-columns: auto minmax(0, 1fr); column-gap: 1.35rem; row-gap: .4rem; padding: 1.6rem 1.6rem 1.7rem; background: var(--color-surface); border: 1px solid var(--line); border-radius: var(--radius); }
body.m2 .pasos__n { grid-row: span 2; font-size: clamp(2.8rem, 4vw, 3.4rem); }
@media (max-width: 760px) {
  body.m2 .pasos { grid-template-columns: minmax(0, 1fr); row-gap: 1rem; }
}

body.m2 .faq { background: var(--color-bg); }
body.m2 .faq__grid { grid-template-columns: minmax(0, 1fr); max-width: 860px; gap: 0; }
body.m2 .faq__cab { justify-items: center; text-align: center; margin-bottom: clamp(1.75rem, 3.5vw, 2.5rem); }
body.m2 .faq__cab .cabecera { justify-items: center; }
body.m2 .contacto { background: var(--color-bg-alt); }
body.m2 .contacto__card { background: var(--color-surface); }
body.m2 .contacto .form { background: var(--color-bg); }
body.m2 .contacto .campo input, body.m2 .contacto .campo select, body.m2 .contacto .campo textarea { background: var(--color-surface); }

[data-animate] { transition: opacity .9s var(--ease), transform 1.1s var(--ease), clip-path 1.2s var(--ease), filter 1s var(--ease); }
[data-animate].in { opacity: 1 !important; transform: none !important; }
[data-animate="blur"].in { filter: none !important; }
[data-animate="mascara"].in, [data-animate="cortina"].in { clip-path: inset(0 0 0 0) !important; }
[data-animate="linea"] { transform-origin: 0 50%; }
[data-animate="zoom"] { transition: transform 1.8s var(--ease); }
[data-animate="mascara"] > img, [data-animate="mascara"] > picture > img, [data-animate] .serv-card__foto img, [data-animate] .serv-panel__foto img { scale: 1.12; transition: scale 1.5s var(--ease), transform .8s var(--ease); }
[data-animate="mascara"].in > img, [data-animate="mascara"].in > picture > img, [data-animate].in .serv-card__foto img, [data-animate].in .serv-panel__foto img { scale: 1; }
body.m2 .servicios .cabecera .raya, body.m2 .faq__cab .raya { transform-origin: 50% 50%; }

@media (prefers-reduced-motion: reduce) {
  [data-animate] { transition: none !important; }
  [data-animate="mascara"] > img, [data-animate="mascara"] > picture > img, [data-animate] .serv-card__foto img, [data-animate] .serv-panel__foto img { scale: 1; }
  .lee-w { color: var(--color-text); transition: none; }
  .wsp-float::before { animation: none; display: none; }
  dialog.modal[open], .serv-panel.is-cambiando, .toast { animation: none; }
}

.contacto__otros { display: flex; flex-wrap: wrap; gap: .6rem 1.6rem; font-weight: 600; }
.contacto__otros a { display: inline-flex; align-items: center; gap: .55rem; color: var(--color-text); transition: color .25s var(--ease); }
.contacto__otros a:hover { color: var(--color-primary-ink); text-decoration: underline; text-underline-offset: 4px; }
.contacto__otros .ico { width: 20px; height: 20px; flex: none; color: var(--color-primary); }
