:root{
  --color-primary:#2A9D8F;
  --color-secondary:#1A3A4A;
  --color-accent:#6FC9BD;
  --color-bg:#FFFFFF;
  --color-bg-alt:#F4F9F9;
  --color-text:#1A3A4A;
  --color-text-secondary:#4A6572;
  --font-heading:'Space Grotesk', sans-serif;
  --font-title:'Space Grotesk', sans-serif;
  --font-body:'Inter', sans-serif;
  --container-w:1180px;
}

*,*::before,*::after{box-sizing:border-box;}
*{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden;}
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--color-text);
  background:var(--color-bg);
  line-height:1.6;
  overflow-x:hidden;
  max-width:100%;
  position:relative;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
h1,h2,h3{font-family:var(--font-heading);font-weight:700;letter-spacing:-0.02em;line-height:1.08;margin:0 0 .5em;color:var(--color-secondary);}
p{margin:0 0 1em;}

.container{max-width:var(--container-w);margin:0 auto;padding:0 24px;position:relative;z-index:1;}

/* ---------- Loader ---------- */
#loader{
  position:fixed;
  inset:0;
  background:#fff;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:18px;
  z-index:9999;
  transition:opacity .6s ease, visibility .6s ease;
}
#loader.hidden{opacity:0; visibility:hidden;}
#loader-logo{
  width:56px;height:56px;
  animation:loaderPulse 1.1s ease-in-out infinite;
}
@keyframes loaderPulse{
  0%,100%{opacity:1; transform:scale(1);}
  50%{opacity:.55; transform:scale(.9);}
}
#loader-bar{
  width:140px;
  height:3px;
  background:var(--color-bg-alt);
  border-radius:2px;
  overflow:hidden;
  position:relative;
}
#loader-bar::after{
  content:'';
  position:absolute;
  inset:0;
  background:var(--color-primary);
  transform:scaleX(0);
  transform-origin:left;
  animation:loaderBar 1s ease forwards;
}
@keyframes loaderBar{
  from{transform:scaleX(0);}
  to{transform:scaleX(1);}
}

/* ---------- Scroll progress ---------- */
.scroll-progress{
  position:fixed;
  top:0;left:0;
  height:3px;
  width:0%;
  background:linear-gradient(90deg, var(--color-primary), #6fc9bd);
  z-index:400;
}

/* ---------- Cursor Glow ---------- */
.cursor-glow{
  position:fixed;
  top:0;left:0;
  width:420px;height:420px;
  border-radius:50%;
  pointer-events:none;
  background:radial-gradient(circle, rgba(42,157,143,0.35) 0%, rgba(42,157,143,0) 70%);
  transform:translate(-50%,-50%);
  z-index:5;
  opacity:0;
  transition:opacity .3s ease;
  mix-blend-mode:screen;
}
.cursor-glow.active{opacity:1;}

/* ---------- Custom cursor: signo "+" (C-21) ---------- */
.cursor-cross{
  position:fixed;
  top:0;left:0;
  width:22px;height:22px;
  pointer-events:none;
  z-index:401;
  transform:translate(-50%,-50%);
  opacity:0;
  transition:opacity .2s ease, transform .3s cubic-bezier(.34,1.56,.64,1);
  will-change:transform;
}
.cursor-cross .plus-h,.cursor-cross .plus-v{
  position:absolute;
  background:var(--color-primary);
}
.cursor-cross .plus-h{width:100%;height:1.5px;top:50%;left:0;transform:translateY(-50%);}
.cursor-cross .plus-v{width:1.5px;height:100%;left:50%;top:0;transform:translateX(-50%);}
.cursor-cross.visible{opacity:1;}
.cursor-cross.hovered{transform:translate(-50%,-50%) rotate(45deg) scale(1.4);}
body.has-custom-cursor,
body.has-custom-cursor a,
body.has-custom-cursor button,
body.has-custom-cursor .btn{cursor:none;}

/* ---------- Mouse trail ---------- */
.trail-dot{
  position:fixed;
  top:0;left:0;
  width:6px;height:6px;
  border-radius:50%;
  background:radial-gradient(circle, rgba(42,157,143,.85), rgba(42,157,143,0) 70%);
  pointer-events:none;
  z-index:399;
  transform:translate(-50%,-50%);
  animation:trailFade .8s ease-out forwards;
}
@keyframes trailFade{
  0%{opacity:.8; transform:translate(-50%,-50%) scale(1);}
  100%{opacity:0; transform:translate(-50%,-50%) scale(.15);}
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-block;
  position:relative;
  overflow:hidden;
  padding:14px 28px;
  border-radius:50px;
  font-weight:600;
  font-size:.95rem;
  cursor:pointer;
  transition:transform .25s ease, box-shadow .25s ease, background .25s ease, color .25s ease;
  border:2px solid transparent;
  white-space:nowrap;
}
.btn:active{transform:scale(.94);}
.btn-primary{
  background-color:var(--color-primary);
  color:#fff;
  transition:background-color .35s ease, box-shadow .25s ease, transform .25s ease;
}
.btn-primary:hover{
  background-color:#217267;
  box-shadow:0 10px 25px rgba(42,157,143,.35);
  transform:translateY(-3px);
}
.btn-cta{
  background-color:#ffffff;
  color:var(--color-secondary);
  transition:background-color .35s ease, box-shadow .25s ease, color .35s ease, transform .25s ease;
}
.btn-cta:hover{
  background-color:var(--color-primary);
  box-shadow:0 10px 30px rgba(0,0,0,.25);
  color:#fff;
  transform:translateY(-3px);
}
.btn-ripple{
  position:absolute;
  border-radius:50%;
  background:rgba(255,255,255,.5);
  transform:scale(0);
  animation:rippleAnim .6s ease-out forwards;
  pointer-events:none;
}
@keyframes rippleAnim{
  to{transform:scale(2.2); opacity:0;}
}

/* ---------- Navbar ---------- */
.navbar{
  position:fixed;
  top:0;left:0;right:0;
  z-index:100;
  transition:background .35s ease, box-shadow .35s ease, padding .35s ease;
  padding:22px 0;
}
.navbar-inner{
  max-width:var(--container-w);
  margin:0 auto;
  padding:0 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}
.logo{
  display:inline-flex;
  align-items:center;
}
.logo-badge{
  background:#fff;
  padding:6px 16px;
  border-radius:10px;
  box-shadow:0 4px 16px rgba(0,0,0,.12);
  transition:box-shadow .35s ease, transform .35s cubic-bezier(.16,1,.3,1);
}
.logo-badge:hover{
  box-shadow:0 8px 22px rgba(0,0,0,.18);
  transform:scale(1.05) rotate(-1deg);
}
.logo-badge img{
  height:34px;
  width:auto;
  display:block;
}
.nav-links{
  display:flex;
  gap:28px;
  flex:1;
  justify-content:center;
}
.nav-links a{
  color:#fff;
  font-size:.95rem;
  font-weight:500;
  position:relative;
  padding:4px 0;
  transition:color .35s ease;
}
.nav-links a::after{
  content:'';
  position:absolute;
  left:0;bottom:-2px;
  width:0;height:2px;
  background:var(--color-primary);
  transition:width .25s ease;
}
.nav-links a:hover::after{width:100%;}
.nav-cta{padding:11px 22px;font-size:.9rem;}
.nav-toggle{
  display:none;
  flex-direction:column;
  gap:5px;
  background:none;
  border:none;
  cursor:pointer;
  padding:6px;
}
.nav-toggle span{
  width:24px;height:2px;background:#fff;
  transition:background .3s ease, transform .3s ease, opacity .3s ease;
}
.nav-toggle.active span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.active span:nth-child(2){opacity:0;}
.nav-toggle.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.navbar.scrolled{
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  box-shadow:0 4px 20px rgba(0,0,0,.08);
  padding:12px 0;
}
.navbar.scrolled .nav-links a{color:var(--color-secondary);}
.navbar.scrolled .nav-toggle span{background:var(--color-secondary);}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  height:100vh;
  min-height:600px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  overflow:hidden;
}
.hero-bg{
  position:absolute;
  inset:0;
  z-index:0;
}
.hero-bg img{
  width:100%;height:100%;
  object-fit:cover;
}
.hero-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(180deg, rgba(26,58,74,.55) 0%, rgba(26,58,74,.75) 100%);
}
.hero-content{
  position:relative;
  z-index:2;
  color:#fff;
  padding:0 24px;
  max-width:900px;
}
.hero-content h1{
  position:relative;
  color:#fff;
  font-size:clamp(2.4rem, 5.5vw, 4.2rem);
  margin-bottom:.3em;
  letter-spacing:-0.02em;
}
.text-gradient{
  background:linear-gradient(135deg, var(--color-primary) 0%, #ffffff 50%, var(--color-primary) 100%);
  background-size:200% auto;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:textShine 4s linear infinite;
  animation-play-state:paused;
}
.hero.in-view .text-gradient{animation-play-state:running;}
@keyframes textShine{
  from{background-position:200% center;}
  to{background-position:-200% center;}
}

/* ---------- Hero rising particles ---------- */
.hero-bubbles{
  position:absolute;
  inset:0;
  z-index:1;
  overflow:hidden;
  pointer-events:none;
}
.hero-bubble{
  position:absolute;
  bottom:-2%;
  border-radius:50%;
  background:rgba(190,235,227,.55);
  opacity:0;
  animation-name:bubbleRise;
  animation-timing-function:ease-in;
  animation-iteration-count:infinite;
  animation-play-state:paused;
  will-change:transform, opacity;
}
.hero.in-view .hero-bubble{animation-play-state:running;}
@keyframes bubbleRise{
  0%{transform:translate(0,0); opacity:0;}
  12%{opacity:.6;}
  80%{opacity:.25;}
  100%{transform:translate(var(--drift,16px),-135vh); opacity:0;}
}
.hero-subtitle{
  font-size:clamp(1.05rem, 2vw, 1.4rem);
  color:#e6f3f1;
  margin-bottom:1.8em;
  font-weight:400;
}
.hero-ctas{
  display:flex;
  gap:20px;
  justify-content:center;
  flex-wrap:wrap;
}
.scroll-indicator{
  position:absolute;
  bottom:32px;left:50%;
  transform:translateX(-50%);
  width:26px;height:42px;
  border:2px solid rgba(255,255,255,.6);
  border-radius:14px;
  z-index:2;
}
.scroll-indicator span{
  position:absolute;
  top:8px;left:50%;
  width:4px;height:8px;
  background:#fff;
  border-radius:2px;
  transform:translateX(-50%);
  animation:scrollDown 1.6s infinite;
}
@keyframes scrollDown{
  0%{opacity:1;top:8px;}
  100%{opacity:0;top:22px;}
}

/* ---------- Reveal ---------- */
.reveal{
  opacity:0;
  transform:translateY(45px);
  transition:opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1);
  transition-delay:var(--reveal-delay, 0s);
}
.reveal.in-view{
  opacity:1;
  transform:translateY(0);
}
.reveal-left{transform:translate(-60px, 20px);}
.reveal-left.in-view{transform:none;}
.reveal-right{transform:translate(60px, 20px);}
.reveal-right.in-view{transform:none;}

/* ---------- Sections ---------- */
.section{padding:110px 0; position:relative;}
.section-alt{background:var(--color-bg-alt);}
.section-primary{
  background:var(--color-primary);
  color:#fff;
}
.section-primary .split-text p{color:#eafaf7;}
.eyebrow{
  display:inline-block;
  color:var(--color-primary);
  font-weight:600;
  letter-spacing:2px;
  text-transform:uppercase;
  font-size:.8rem;
  margin-bottom:12px;
}
.eyebrow-light{color:#e9fbf8;}
.section-head{
  text-align:center;
  max-width:700px;
  margin:0 auto 60px;
}
.section-sub{
  color:var(--color-text-secondary);
  font-size:1.05rem;
}

/* ---------- Split layout ---------- */
.split{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:70px;
  align-items:center;
}
.split-text h2{font-size:clamp(1.9rem,3vw,2.6rem);}
.section-primary h2{color:#fff;}
.img-zoom{
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 25px 60px rgba(26,58,74,.2);
}
.img-zoom img{
  transition:transform .6s ease;
  width:100%;
  height:100%;
  object-fit:cover;
}
.img-zoom:hover img{transform:scale(1.08);}
.img-mask-diagonal{clip-path:polygon(0 0, 100% 0, 100% 88%, 88% 100%, 0 100%);}

/* ---------- Counters ---------- */
.counters{
  display:flex;
  align-items:flex-start;
  gap:40px;
  margin-top:40px;
  flex-wrap:wrap;
}
.counter-item{text-align:left;}
.counter,.counter-static,.counter-suffix{
  font-family:var(--font-heading);
  font-size:2.6rem;
  font-weight:700;
  color:var(--color-primary);
  line-height:1;
}
.counter-item p{
  margin:6px 0 0;
  font-size:.9rem;
  color:var(--color-text-secondary);
}

/* ---------- Team ---------- */
.team-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:36px;
}
.team-card{
  background:transparent;
  border-radius:18px;
  transition:transform .35s ease;
  transform-style:preserve-3d;
  perspective:1200px;
  height:370px;
  cursor:pointer;
  outline:none;
}
.team-card.tilting{will-change:transform;}
.card-flip-inner{
  position:relative;
  width:100%;
  height:100%;
  transition:transform .8s cubic-bezier(.4,.2,.2,1);
  transform-style:preserve-3d;
}
.team-card.flipped .card-flip-inner{transform:rotateY(180deg);}
.card-face{
  position:absolute;
  inset:0;
  background:#fff;
  border-radius:18px;
  box-shadow:0 10px 30px rgba(26,58,74,.06);
  transition:box-shadow .35s ease;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:44px 30px;
  overflow:hidden;
}
.team-card:hover .card-face,
.team-card:focus-visible .card-face{
  box-shadow:0 25px 50px rgba(26,58,74,.15);
}
.card-back{transform:rotateY(180deg);}
.card-face::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(135deg, rgba(42,157,143,.07) 0%, transparent 55%);
  opacity:0;
  transition:opacity .4s ease;
  pointer-events:none;
}
.team-card:hover .card-face::after,
.team-card:focus-visible .card-face::after,
.service-card:hover .card-face::after,
.service-card:focus-visible .card-face::after{opacity:1;}
.flip-hint{
  position:absolute;
  top:16px;right:16px;
  width:30px;height:30px;
  border-radius:50%;
  background:var(--color-bg-alt);
  color:var(--color-primary);
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:0;
  transition:opacity .3s ease, background .3s ease;
}
.flip-hint svg{width:15px;height:15px;}
.team-card:hover .flip-hint,
.team-card:focus-visible .flip-hint{opacity:1;}
.team-photo{
  width:140px;height:140px;
  margin:0 auto 22px;
  border-radius:50%;
  overflow:hidden;
  border:4px solid var(--color-bg-alt);
  transition:border-color .35s ease, transform .35s cubic-bezier(.16,1,.3,1);
}
.team-card:hover .team-photo{
  border-color:var(--color-primary);
  transform:scale(1.06);
}
.team-photo img{width:100%;height:100%;object-fit:cover;}
.team-card h3{font-size:1.35rem;margin-bottom:.2em;}
.team-card .role{
  display:block;
  color:var(--color-primary);
  font-weight:600;
  font-size:.85rem;
  text-transform:uppercase;
  letter-spacing:1px;
}
.card-back h4{
  font-size:1.1rem;
  color:var(--color-primary);
  margin-bottom:.5em;
}
.card-back p{font-size:.92rem;color:var(--color-text-secondary);margin-bottom:0;}

/* ---------- Gallery / Instalaciones ---------- */
.gallery-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
}
.gallery-item{text-align:center;}
.gallery-item .img-zoom{
  height:220px;
  margin-bottom:14px;
  transition:box-shadow .4s ease, transform .4s cubic-bezier(.16,1,.3,1);
}
.gallery-item:hover .img-zoom{
  transform:translateY(-8px);
  box-shadow:0 30px 55px rgba(26,58,74,.28);
}
.gallery-item .img-zoom img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.gallery-caption{
  display:block;
  font-weight:600;
  color:var(--color-secondary);
  font-size:.95rem;
  transition:color .3s ease;
}
.gallery-item:hover .gallery-caption{color:var(--color-primary);}

/* ---------- Services ---------- */
.services-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
}
.service-card{
  background:transparent;
  border-radius:16px;
  transition:transform .35s ease;
  transform-style:preserve-3d;
  perspective:1200px;
  height:360px;
  cursor:pointer;
  outline:none;
}
.service-card.tilting{will-change:transform;}
.service-card .card-face{
  border:1px solid #e7f0ef;
  border-radius:16px;
  padding:32px 26px;
  transition:box-shadow .35s ease, border-color .35s ease;
}
.service-card:hover .card-face,
.service-card:focus-visible .card-face{
  border-color:transparent;
  box-shadow:0 20px 40px rgba(26,58,74,.1);
}
.service-card.flipped .card-flip-inner{transform:rotateY(180deg);}
.service-card:hover .flip-hint,
.service-card:focus-visible .flip-hint{opacity:1;}
.service-card .card-back{justify-content:center;}
.service-media{
  height:150px;
  width:100%;
  border-radius:12px;
  overflow:hidden;
  margin-bottom:18px;
  background:var(--color-bg-alt);
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
}
.service-media img{
  width:100%;
  height:100%;
  object-fit:contain;
  padding:16px;
  transition:transform .5s ease;
}
.service-card:hover .service-media img{transform:scale(1.06);}
.service-media-icon{
  background:linear-gradient(135deg, rgba(42,157,143,.08), rgba(42,157,143,.18));
}
.service-media-icon svg{
  width:56px;height:56px;
  color:var(--color-primary);
  padding:0;
  transition:transform .5s cubic-bezier(.16,1,.3,1);
}
.service-card:hover .service-media-icon svg{
  transform:rotate(8deg) scale(1.1);
}
.service-media-logo img{padding:24px;}
.service-card h3{font-size:1.2rem;margin-bottom:0;}
.card-back h3{
  font-size:1.05rem;
  margin-bottom:12px;
  padding-bottom:12px;
  border-bottom:2px solid var(--color-bg-alt);
  width:100%;
}
.card-back p{
  font-size:.88rem;
  color:var(--color-text-secondary);
  margin-bottom:0;
  text-align:center;
  overflow-y:auto;
}

/* ---------- Schedule ---------- */
.schedule-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:36px;
}
.schedule-card{
  background:#fff;
  border-radius:18px;
  padding:40px 36px;
  box-shadow:0 10px 30px rgba(26,58,74,.06);
  transition:transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s ease;
}
.schedule-card:hover{
  transform:translateY(-8px);
  box-shadow:0 25px 50px rgba(26,58,74,.14);
}
.schedule-list li{transition:padding-left .25s ease, color .25s ease;}
.schedule-list li:hover{padding-left:6px;}
.schedule-list li:hover span:first-child{color:var(--color-primary);}
.schedule-card h3{
  color:var(--color-primary);
  font-size:1.4rem;
  margin-bottom:24px;
  border-bottom:2px solid var(--color-bg-alt);
  padding-bottom:16px;
}
.schedule-list li{
  display:flex;
  justify-content:space-between;
  padding:12px 0;
  border-bottom:1px solid #eef4f4;
  font-size:.95rem;
}
.schedule-list li:last-child{border-bottom:none;}
.schedule-list li span:first-child{font-weight:600;color:var(--color-secondary);}
.schedule-list li span:last-child{color:var(--color-text-secondary);}
.schedule-list li.closed span:last-child{color:#c0504d;font-weight:600;}
.highlight-note{
  text-align:center;
  margin:44px auto 0;
  display:table;
  background:var(--color-primary);
  color:#fff;
  padding:14px 32px;
  border-radius:50px;
  font-weight:600;
  transition:transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease;
  cursor:default;
}
.highlight-note:hover{
  transform:scale(1.05);
  box-shadow:0 10px 25px rgba(42,157,143,.35);
}

/* ---------- Map ---------- */
.map-wrap{
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 25px 60px rgba(26,58,74,.15);
  margin-bottom:36px;
  transition:box-shadow .4s ease, transform .4s cubic-bezier(.16,1,.3,1);
}
.map-wrap:hover{
  transform:translateY(-4px);
  box-shadow:0 32px 70px rgba(26,58,74,.22);
}
.map-wrap iframe{display:block;}
.location-ctas{
  display:flex;
  gap:20px;
  justify-content:center;
  flex-wrap:wrap;
}

/* ---------- Modal (Aviso legal / Privacidad) ---------- */
.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(26,58,74,.55);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  z-index:500;
  opacity:0;
  visibility:hidden;
  transition:opacity .3s ease, visibility .3s ease;
}
.modal-overlay.open{opacity:1;visibility:visible;}
.modal-box{
  background:#fff;
  border-radius:16px;
  padding:44px 40px;
  max-width:560px;
  max-height:80vh;
  overflow-y:auto;
  position:relative;
  transform:translateY(20px) scale(.97);
  transition:transform .35s cubic-bezier(.4,.2,.2,1);
  box-shadow:0 30px 80px rgba(0,0,0,.3);
}
.modal-overlay.open .modal-box{transform:translateY(0) scale(1);}
.modal-box h3{color:var(--color-primary);margin-bottom:.6em;}
.modal-box p{font-size:.95rem;color:var(--color-text-secondary);}
.modal-close{
  position:absolute;
  top:16px;right:16px;
  width:32px;height:32px;
  border-radius:50%;
  border:none;
  background:var(--color-bg-alt);
  color:var(--color-secondary);
  cursor:pointer;
  font-size:1rem;
  transition:background .25s ease, color .25s ease;
}
.modal-close:hover{background:var(--color-primary);color:#fff;}

/* ---------- Footer ---------- */
.footer{
  background:var(--color-secondary);
  color:#cfe3e6;
  padding:70px 0 0;
}
.footer-inner{
  display:grid;
  grid-template-columns:1fr 1.4fr 1.2fr;
  gap:40px;
  padding-bottom:50px;
  border-bottom:1px solid rgba(255,255,255,.1);
}
.logo-footer{
  margin-bottom:14px;
}
.logo-footer img{height:38px;}
.footer-col p{margin-bottom:8px;color:#a9c2c7;}
.footer-links{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.footer-links a{
  position:relative;
  display:inline-block;
  color:#cfe3e6;
  font-size:.95rem;
  transition:color .25s ease, transform .25s ease;
}
.footer-links a::after{
  content:'';
  position:absolute;
  left:0;bottom:-3px;
  width:0;height:1px;
  background:var(--color-primary);
  transition:width .3s ease;
}
.footer-links a:hover{color:var(--color-primary); transform:translateX(4px);}
.footer-links a:hover::after{width:100%;}
.footer-contact a{color:#cfe3e6;transition:color .25s ease, transform .25s ease;display:inline-block;}
.footer-contact a:hover{color:var(--color-primary); transform:translateX(4px);}
.footer-bottom{
  text-align:center;
  padding:24px;
  font-size:.85rem;
  color:#8aa8ad;
}
.footer-bottom a{color:#8aa8ad;text-decoration:underline;}
.footer-bottom a:hover{color:#fff;}

/* ---------- Extras profesionales ---------- */

/* Scrollbar personalizado (EXTRA-02) */
::-webkit-scrollbar{width:8px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:4px;}
::-webkit-scrollbar-thumb:hover{background:var(--color-secondary);}
*{scrollbar-width:thin; scrollbar-color:var(--color-primary) transparent;}

/* Grano de película sutil (EXTRA-04) */
body::after{
  content:'';
  position:fixed;
  inset:0;
  z-index:250;
  pointer-events:none;
  opacity:.025;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");
  background-size:200px;
}

/* Botón volver arriba (EXTRA-10) */
.back-top{
  position:fixed;
  right:2rem;bottom:2.5rem;
  z-index:399;
  width:46px;height:46px;
  background:var(--color-primary);
  color:#fff;
  border:none;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  opacity:0;
  transform:translateY(16px);
  pointer-events:none;
  transition:opacity .4s ease, transform .4s ease, background .3s ease;
  box-shadow:0 4px 20px rgba(26,58,74,.25);
}
.back-top.visible{opacity:1;transform:translateY(0);pointer-events:auto;}
.back-top:hover{transform:translateY(-4px);background:var(--color-secondary);}
.back-top:active{transform:translateY(-1px) scale(.94);}
@media (max-width:640px){
  .back-top{right:1.2rem;bottom:1.5rem;width:42px;height:42px;}
}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .nav-links{
    position:fixed;
    top:0;right:-100%;
    height:100vh;
    width:280px;
    background:#fff;
    flex-direction:column;
    justify-content:center;
    align-items:flex-start;
    padding:40px;
    gap:22px;
    box-shadow:-10px 0 40px rgba(0,0,0,.15);
    transition:right .35s ease;
    z-index:99;
  }
  .nav-links.open{right:0;}
  .nav-links a{color:var(--color-secondary) !important;}
  .nav-cta{display:none;}
  .nav-toggle{display:flex;}

  .split,.schedule-grid{grid-template-columns:1fr;}
  .split-media{order:-1;}
  .team-grid,.services-grid,.gallery-grid{grid-template-columns:repeat(2,1fr);}
  .footer-inner{grid-template-columns:1fr;text-align:center;}
  .footer-links{align-items:center;}
  .team-card{height:400px;}
  .service-card{height:400px;}
}

@media (max-width:640px){
  .section{padding:70px 0;}
  .team-grid,.services-grid,.gallery-grid{grid-template-columns:1fr;}
  .hero-ctas{flex-direction:column;width:100%;}
  .hero-ctas .btn{width:100%;}
  .counters{gap:26px;}
  .cursor-glow{display:none;}
  .team-card{height:360px;}
  .service-card{height:360px;}
  .modal-box{padding:32px 26px;}
}

/* ---------- Reduced motion & touch ---------- */
@media (hover:none), (pointer:coarse){
  .cursor-cross,.trail-dot{display:none;}
}
@media (prefers-reduced-motion: reduce){
  .cursor-cross,.trail-dot,.cursor-glow{display:none;}
  .reveal{transition-duration:.01ms !important; transition-delay:0s !important;}
  .scroll-indicator span{animation:none;}
  .card-flip-inner{transition-duration:.01ms !important;}
  #loader{transition:none;}
  #loader-logo{animation:none;}
  #loader-bar::after{animation:none; transform:scaleX(1);}
  .text-gradient{animation:none; background-position:0 center;}
  .hero-bubbles{display:none;}
}
