/* ============================================================
   Dra. EvE — Medicina Estética Regenerativa
   Sistema visual basado en el prototipo aprobado por la clienta.
   ============================================================ */

:root{
  --teal:#0E7C86;
  --teal-soft:#7BC6C9;
  --ice:#E9F5F5;
  --champagne:#D8C3A5;
  --carbon:#2E2E2E;
  --carbon-soft: rgba(46,46,46,0.65);
  --line: rgba(46,46,46,0.12);
  --line-on-dark: rgba(233,245,245,0.16);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  background:var(--ice);
  color:var(--carbon);
  font-family:'Montserrat',sans-serif;
  font-weight:300;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:var(--teal-soft); color:var(--carbon);}
a{color:inherit;}
img{display:block; max-width:100%;}
ul, ol{list-style:none;}

h1,h2,h3,.serif{font-family:'Poppins',sans-serif; font-weight:400; letter-spacing:-0.01em; overflow-wrap:break-word;}

.container{max-width:1360px; margin:0 auto; padding:0 6vw;}

.skip-link{
  position:absolute; left:-999px; top:auto;
  background:var(--carbon); color:var(--ice); padding:14px 22px; z-index:999;
  font-size:12px; letter-spacing:0.08em; text-transform:uppercase;
}
.skip-link:focus{left:16px; top:16px;}

.eyebrow{
  font-family:'Montserrat',sans-serif;
  font-size:12px;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--teal);
  display:flex; align-items:center; gap:14px; font-weight:500;
}
.eyebrow::before{content:''; width:26px; height:1px; background:var(--champagne);}

/* ---------- SCROLL PROGRESS ---------- */
.scroll-progress{
  position:fixed; top:0; left:0; height:2px; width:0%;
  background:var(--teal); z-index:200; transition:width .1s linear;
}

/* ---------- NAV ---------- */
.site-nav{
  position:fixed; top:0; left:0; width:100%;
  display:flex; align-items:center; justify-content:space-between;
  padding:22px 6vw;
  z-index:100;
  transition:padding .4s ease, background .4s ease, box-shadow .4s ease;
}
.site-nav.scrolled, .site-nav.solid{
  padding:14px 6vw;
  background:rgba(233,245,245,0.92);
  backdrop-filter:blur(10px);
  box-shadow:0 1px 0 var(--line);
}
.nav-logo-link{display:block; line-height:0;}
.nav-logo{
  height:46px; transition:height .4s ease, filter .4s ease; display:block;
  filter:brightness(0) invert(1); /* logo blanco sobre el hero oscuro */
}
.site-nav.scrolled .nav-logo, .site-nav.solid .nav-logo{
  height:38px; filter:none; /* color real una vez el nav tiene fondo claro */
}

.nav-links{display:flex; gap:32px; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; font-weight:500;}
.nav-links a{
  text-decoration:none; opacity:0.9; position:relative;
  color:var(--ice); transition:color .4s ease;
}
.site-nav.scrolled .nav-links a, .site-nav.solid .nav-links a{color:var(--carbon);}
.nav-links a::after{
  content:''; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background:var(--teal); transition:width .35s ease;
}
.nav-links a:hover::after{width:100%;}

.nav-cta{
  font-size:11px; letter-spacing:0.12em; text-transform:uppercase; font-weight:500;
  border:1px solid var(--ice); color:var(--ice); padding:11px 20px; text-decoration:none;
  transition:background .4s ease, color .4s ease, border-color .4s ease;
  white-space:nowrap;
}
.site-nav.scrolled .nav-cta, .site-nav.solid .nav-cta{border-color:var(--teal); color:var(--teal);}
.nav-cta:hover{background:var(--teal); color:var(--ice); border-color:var(--teal);}

.nav-burger{display:none; flex-direction:column; gap:5px; background:none; border:0; cursor:pointer; z-index:101;}
.nav-burger span{width:24px; height:1px; background:var(--ice); transition:background .3s ease;}
.site-nav.scrolled .nav-burger span, .site-nav.solid .nav-burger span{background:var(--carbon);}

@media(max-width:900px){
  .nav-links{
    position:fixed; inset:0; height:100svh; width:100%;
    background:var(--ice);
    flex-direction:column; align-items:center; justify-content:center; gap:30px;
    font-size:15px;
    transform:translateY(-100%); transition:transform .5s cubic-bezier(.16,.8,.24,1);
  }
  .nav-links.open{transform:translateY(0);}
  .nav-links a{color:var(--carbon) !important;}
  .nav-burger{display:flex;}
  .nav-cta{display:none;}
}

/* ---------- REVEAL ---------- */
.reveal{opacity:0; transform:translateY(46px); transition:opacity 1s cubic-bezier(.16,.8,.24,1), transform 1s cubic-bezier(.16,.8,.24,1);}
.reveal.in{opacity:1; transform:translateY(0);}
.reveal-delay-1{transition-delay:.12s;}
.reveal-delay-2{transition-delay:.24s;}
.reveal-delay-3{transition-delay:.36s;}

section{position:relative;}

/* ---------- HERO ---------- */
.hero{
  position:relative; height:100svh; width:100%; overflow:hidden;
  display:flex; align-items:flex-end;
  padding-top:150px; /* reserva el alto del nav + aire visible para que el texto nunca se sienta pegado */
  background:var(--carbon);
}
.hero-bg{position:absolute; inset:0; width:100%; height:120%; will-change:transform;}
.hero-slide{
  position:absolute; inset:0; opacity:0; transition:opacity 1.6s ease;
}
.hero-slide.is-active{opacity:1;}
.hero-slide img{width:100%; height:100%; object-fit:cover; object-position:center 20%;}
.hero-bg::after{
  content:'';
  position:absolute; inset:0; z-index:1;
  background:
    linear-gradient(180deg, rgba(46,46,46,0.25) 0%, rgba(46,46,46,0.08) 30%, rgba(46,46,46,0.62) 78%, rgba(46,46,46,0.9) 100%),
    linear-gradient(90deg, rgba(46,46,46,0.5) 0%, rgba(46,46,46,0.02) 45%);
}
.hero-content{
  position:relative; z-index:2;
  padding:0 6vw clamp(90px, 9vh, 140px);
  max-width:1100px;
  min-width:0; width:100%;
}
.hero-eyebrow{
  font-family:'Montserrat',sans-serif; font-size:12.5px; font-weight:500;
  letter-spacing:0.22em; text-transform:uppercase; color:var(--teal-soft);
  margin-bottom:26px; display:flex; align-items:center; gap:16px;
  opacity:0; animation:fadeUp 1.1s 1.9s ease forwards;
}
.hero-eyebrow::before{content:''; width:40px; height:1px; background:var(--champagne);}
.hero h1{
  font-size:clamp(34px, 5.4vw, 80px);
  line-height:1.1;
  color:var(--ice);
  font-weight:300;
  text-shadow:0 2px 8px rgba(46,46,46,0.35), 0 8px 30px rgba(46,46,46,0.4);
  opacity:0; animation:fadeUp 1.2s 2.1s ease forwards;
}
.hero h1 em{
  font-style:italic; color:var(--champagne); font-weight:300;
  text-shadow:0 2px 10px rgba(46,46,46,0.55), 0 8px 30px rgba(46,46,46,0.5);
}
.hero-sub{
  margin-top:28px; max-width:480px; font-size:15.5px; line-height:1.8; color:rgba(233,245,245,0.85);
  opacity:0; animation:fadeUp 1.2s 2.35s ease forwards;
}
.hero-cta{
  margin-top:38px; display:flex; gap:16px; flex-wrap:wrap;
  opacity:0; animation:fadeUp 1.2s 2.55s ease forwards;
}
.hero-scroll{
  position:absolute; bottom:36px; left:6vw; z-index:2;
  display:flex; align-items:center; gap:12px;
  font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:rgba(233,245,245,0.65);
  opacity:0; animation:fadeUp 1.2s 2.75s ease forwards;
}
.hero-scroll .line{width:1px; height:34px; background:rgba(233,245,245,0.35); position:relative; overflow:hidden;}
.hero-scroll .line::after{
  content:''; position:absolute; top:-100%; left:0; width:100%; height:100%;
  background:var(--champagne); animation:scrollLine 1.8s ease-in-out infinite;
}
.hero-counter{
  position:absolute; bottom:110px; right:6vw; z-index:2;
  font-size:11px; letter-spacing:0.14em; color:rgba(233,245,245,0.65);
}
@keyframes scrollLine{ 0%{top:-100%;} 60%{top:100%;} 100%{top:100%;} }
@keyframes fadeUp{ from{opacity:0; transform:translateY(26px);} to{opacity:1; transform:translateY(0);} }

/* Pantallas bajas (portátil con barra de marcadores, ventana no maximizada, etc.):
   el contenido del hero se achica para no invadir el nav ni el indicador "Descubrir". */
@media(max-height:920px){
  .hero-eyebrow{margin-bottom:14px;}
  .hero h1{font-size:clamp(28px, 4.4vw, 52px); line-height:1.15;}
  .hero-sub{margin-top:14px;}
  .hero-cta{margin-top:18px;}
}
@media(max-height:680px){
  .hero-scroll{display:none;}
}

/* ---------- BUTTONS ---------- */
.btn{
  display:inline-block;
  font-size:12px; letter-spacing:0.14em; text-transform:uppercase; font-weight:500;
  padding:16px 32px; text-decoration:none; transition:all .4s cubic-bezier(.16,.8,.24,1);
}
.btn-primary{background:var(--teal); color:var(--ice); border:1px solid var(--teal);}
.btn-primary:hover{background:transparent; color:var(--teal);}
.btn-on-dark.btn-primary:hover{color:var(--ice); border-color:var(--ice);}
.btn-secondary{border:1px solid rgba(233,245,245,0.5); color:var(--ice); background:transparent;}
.btn-secondary:hover{background:rgba(233,245,245,0.12);}
.btn-outline{border:1px solid var(--teal); color:var(--teal); background:transparent;}
.btn-outline:hover{background:var(--teal); color:var(--ice);}

/* ---------- FILOSOFIA ---------- */
.philosophy{
  padding:150px 0 120px;
  display:grid; grid-template-columns:0.95fr 1.3fr; gap:80px;
  max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;
  border-bottom:1px solid var(--line);
}
.philosophy .statement{
  font-family:'Poppins',sans-serif; font-weight:300;
  font-size:clamp(24px, 2.7vw, 38px); line-height:1.4; color:var(--carbon);
  min-width:0;
}
.philosophy .statement .accent{color:var(--teal); font-style:italic;}
.philosophy .side p{font-size:15px; line-height:1.9; color:var(--carbon-soft); margin-bottom:22px;}
.philosophy .side{padding-top:6px; min-width:0;}
.not-sell{margin-top:30px; display:flex; gap:10px; flex-wrap:wrap;}
.not-sell span{
  font-size:11px; letter-spacing:0.06em; padding:8px 14px; border:1px solid var(--line);
  color:var(--carbon-soft); text-transform:uppercase;
}
@media(max-width:900px){ .philosophy{grid-template-columns:1fr; padding-top:120px; padding-bottom:80px;} }

/* ---------- AMBIENTE ---------- */
.ambiente{padding:140px 0; max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.ambiente h2{font-size:clamp(28px,3.2vw,46px); max-width:640px; font-weight:400;}
.section-intro{font-size:15px; line-height:1.8; color:var(--carbon-soft); max-width:560px; margin-top:20px;}
.ambiente-grid{
  margin-top:60px; display:grid; grid-template-columns:1.15fr 1fr 1fr; gap:18px;
}
.ambiente-item{position:relative; z-index:0; overflow:hidden; aspect-ratio:3/4;}
.ambiente-item-tall{grid-row:span 1;}
.ambiente-item img{width:100%; height:100%; object-fit:cover; transition:transform 1.4s cubic-bezier(.16,.8,.24,1);}
.ambiente-item:hover img{transform:scale(1.05);}
.ambiente-item figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:22px;
  background:linear-gradient(0deg, rgba(46,46,46,0.75), transparent 70%);
  color:var(--ice); font-size:12.5px; line-height:1.6; letter-spacing:0.02em;
}
@media(max-width:820px){ .ambiente-grid{grid-template-columns:1fr;} }

/* ---------- PILARES / CAROUSEL (signature) ---------- */
.carousel-section{position:relative; height:440vh; background:var(--ice);}
.carousel-head{
  position:absolute; top:80px; left:0; width:100%;
  padding:0 6vw; z-index:5;
  display:flex; justify-content:space-between; align-items:flex-end;
}
.carousel-head h2{font-size:clamp(26px,2.6vw,38px); font-weight:400; min-width:0;}
.carousel-head h2 br{display:none;}
.carousel-count{
  font-family:'Montserrat',sans-serif; font-size:13px; color:var(--teal); font-weight:500;
  letter-spacing:0.08em; white-space:nowrap;
}
.carousel-viewport{position:sticky; top:0; height:100vh; overflow:hidden; display:flex; align-items:flex-start; padding:clamp(140px,15vh,175px) 0 34px; box-sizing:border-box;}
.carousel-track{display:flex; gap:2.4vw; padding-left:6vw; padding-right:16vw; will-change:transform;}
.pcard{
  flex:0 0 auto; width:min(38vw, 440px); min-height:min(56vh,540px); position:relative;
  display:flex; background:#fff;
  border:1px solid var(--line); overflow:hidden;
}
.pcard .pbody{padding:34px 36px; display:flex; flex-direction:column; justify-content:center;}
.pcard .picon{width:36px; height:36px; color:var(--champagne); margin-bottom:22px;}
.pcard .pnum{font-family:'Poppins',sans-serif; font-size:13px; color:var(--teal); margin-bottom:16px; letter-spacing:0.05em;}
.pcard h3{font-size:25px; font-weight:400; margin-bottom:6px; color:var(--carbon);}
.pcard .featured{font-size:12px; color:var(--teal); letter-spacing:0.05em; margin-bottom:16px; font-weight:500; display:block;}
.pcard p.desc{font-size:13.5px; line-height:1.8; color:var(--carbon-soft); margin-bottom:22px;}
.tags{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:22px;}
.tags span{
  font-size:10.5px; letter-spacing:0.04em; padding:6px 11px; border:1px solid var(--line);
  color:var(--carbon-soft); text-transform:uppercase;
}
.tags span.star{border-color:var(--champagne); color:var(--carbon); background:rgba(216,195,165,0.18);}
.pcard .pcta{
  font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--teal);
  text-decoration:none; font-weight:500; display:inline-flex; align-items:center; gap:8px;
}
.pcard .pcta::after{content:'→'; transition:transform .3s ease;}
.pcard .pcta:hover::after{transform:translateX(4px);}
.pcard.first{width:min(38vw, 320px); background:transparent; border:none; display:flex; align-items:center;}
.pcard.first p{font-size:16px; line-height:1.85; color:var(--carbon-soft); font-family:'Poppins',sans-serif; font-weight:300;}
@media(max-width:720px){
  .pcard{width:82vw; min-height:auto;}
  .carousel-viewport{padding:150px 0 24px; align-items:flex-start;}
  .carousel-head h2 br{display:inline;}
  .carousel-head h2{font-size:26px;}
}

/* ---------- GALERIA TEASER ---------- */
.gallery-teaser{padding:140px 0; max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.gallery-teaser h2{font-size:clamp(28px,3.2vw,46px); max-width:640px; font-weight:400;}
.gallery-teaser-grid{
  margin-top:56px; display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
}
.gt-card{position:relative; z-index:0; aspect-ratio:4/5; overflow:hidden; text-decoration:none; display:block;}
.gt-card img{width:100%; height:100%; object-fit:cover; transition:transform 1.2s cubic-bezier(.16,.8,.24,1);}
.gt-card:hover img{transform:scale(1.08);}
.gt-card::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(0deg, rgba(46,46,46,0.82) 0%, rgba(46,46,46,0.15) 55%, rgba(46,46,46,0.05) 100%);
}
.gt-card .gt-label{
  position:absolute; left:20px; right:20px; bottom:20px; z-index:2; color:var(--ice);
}
.gt-label .n{font-size:19px; font-family:'Poppins',sans-serif; display:block;}
.gt-label .c{font-size:10.5px; letter-spacing:0.14em; text-transform:uppercase; color:var(--champagne); margin-top:6px; display:block;}
.gallery-teaser-more{margin-top:44px; text-align:center;}
@media(max-width:820px){ .gallery-teaser-grid{grid-template-columns:repeat(2,1fr);} }
@media(max-width:560px){ .gallery-teaser-grid{grid-template-columns:1fr 1fr;} }

/* ---------- PARALLAX QUOTE ---------- */
.parallax{height:90vh; position:relative; overflow:hidden; display:flex; align-items:center; justify-content:center;}
.parallax-bg{position:absolute; inset:0; height:130%; top:-15%; will-change:transform;}
.parallax-bg img{width:100%; height:100%; object-fit:cover; object-position:center 15%;}
.parallax-bg::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(46,46,46,0.55), rgba(46,46,46,0.75));
}
.parallax blockquote{
  position:relative; z-index:2; max-width:820px; text-align:center; padding:0 6vw;
  font-family:'Poppins',sans-serif; font-weight:300;
  font-size:clamp(22px, 3vw, 40px); line-height:1.45; color:var(--ice);
}
.parallax cite{
  display:block; margin-top:30px; font-style:normal; font-family:'Montserrat'; font-size:11px;
  letter-spacing:0.2em; text-transform:uppercase; color:var(--champagne); font-weight:500;
}

/* ---------- ABOUT / DOCTORA ---------- */
.about{
  display:grid; grid-template-columns:0.85fr 1.15fr;
  max-width:1360px; margin:150px auto; padding:0 6vw; gap:90px; align-items:center;
}
.about-img{position:relative; z-index:0; aspect-ratio:4/5; overflow:hidden; min-width:0;}
.about-img img{width:100%; height:100%; object-fit:cover;}
.about-img .frame{position:absolute; inset:16px; border:1px solid rgba(233,245,245,0.55); pointer-events:none;}
.about-text{min-width:0;}
.about-text h2{font-size:clamp(26px,3vw,42px); margin-bottom:24px; margin-top:22px; line-height:1.15; font-weight:400;}
.about-text p{font-size:15px; line-height:1.9; color:var(--carbon-soft); margin-bottom:20px; max-width:520px;}
.credentials-title{
  font-family:'Montserrat',sans-serif; font-size:11px; font-weight:500; letter-spacing:0.16em;
  text-transform:uppercase; color:var(--teal); margin:30px 0 10px;
}
.credentials-list{margin-top:0;}
.credentials-list li{
  font-size:13px; color:var(--carbon-soft); padding:11px 0; border-top:1px solid var(--line); line-height:1.6;
}
.credentials-list li strong{display:block; font-weight:500; font-size:13.5px; color:var(--carbon);}
.credentials-list li span{display:block; font-size:12.5px;}
.training-close{max-width:720px; margin:0 auto; padding:20px 6vw 90px; text-align:center;}
.training-close h2{font-size:clamp(22px,2.4vw,32px); font-weight:400; margin-bottom:22px;}
.training-close p{font-size:14.5px; line-height:1.9; color:var(--carbon-soft);}
.training-close .training-close-note{margin-top:14px; font-style:italic; color:var(--carbon);}
.credentials-list li:last-child{border-bottom:1px solid var(--line);}
.about-stats{display:flex; gap:46px; margin-top:36px; flex-wrap:wrap;}
.about-stats div{border-top:1px solid var(--line); padding-top:14px;}
.about-stats .n{font-family:'Poppins',sans-serif; font-size:30px; color:var(--teal); display:block; font-weight:400;}
.about-stats .l{font-size:10.5px; letter-spacing:0.1em; text-transform:uppercase; color:var(--carbon-soft);}
@media(max-width:900px){ .about{grid-template-columns:1fr; margin:100px auto; gap:44px;} }

/* ---------- VALORES STRIP ---------- */
.values{background:var(--carbon); color:var(--ice); padding:110px 6vw; text-align:center;}
.values h2{font-size:clamp(24px,2.6vw,36px); font-weight:300; max-width:760px; margin:0 auto 60px; line-height:1.5;}
.values h2 em{font-style:italic; color:var(--champagne);}
.values-grid{display:flex; justify-content:center; gap:0; flex-wrap:wrap; max-width:1100px; margin:0 auto;}
.values-grid span{
  font-family:'Poppins',sans-serif; font-size:13px; letter-spacing:0.05em;
  padding:14px 24px; border-right:1px solid var(--line-on-dark); color:rgba(233,245,245,0.78);
}
.values-grid span:last-child{border-right:none;}
@media(max-width:800px){ .values-grid span{border-right:none; border-bottom:1px solid var(--line-on-dark); width:100%;} }

/* ---------- DIFERENCIADORES ---------- */
.differentiators{padding:140px 0; max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.differentiators h2{font-size:clamp(26px,3vw,42px); max-width:720px; font-weight:400; margin-bottom:70px;}
.differentiators-list{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line);}
.differentiators-list li{background:var(--ice); padding:38px;}
.differentiators-list h3{font-size:18px; font-weight:400; margin-bottom:12px;}
.differentiators-list p{font-size:13.5px; line-height:1.8; color:var(--carbon-soft);}
@media(max-width:800px){ .differentiators-list{grid-template-columns:1fr;} }
.differentiators-cta{display:flex; flex-wrap:wrap; gap:18px; margin-top:50px;}

/* ---------- PARA QUIEN ES (fit-check) ---------- */
.fit-check{
  padding:120px 0; max-width:900px; margin:0 auto; padding-left:6vw; padding-right:6vw; text-align:center;
}
.fit-check h2{font-size:clamp(24px,2.6vw,36px); font-weight:400; margin-bottom:50px;}
.fit-check-list{text-align:left; max-width:640px; margin:0 auto;}
.fit-check-list li{
  display:flex; align-items:flex-start; gap:16px; padding:20px 0; border-top:1px solid var(--line);
  font-size:15px; line-height:1.6; color:var(--carbon-soft);
}
.fit-check-list li:last-child{border-bottom:1px solid var(--line);}
.fit-check-list .check{
  flex:0 0 auto; color:var(--teal); font-size:16px; font-weight:500; line-height:1.6;
}
.fit-check-close{margin-top:44px; font-size:16px; font-style:italic; color:var(--carbon);}
.fit-check .cta-btn{display:inline-block; margin-top:36px;}

/* ---------- PROCESO ---------- */
.proceso{padding:140px 0; max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.proceso h2{font-size:clamp(26px,3vw,42px); font-weight:400; margin-bottom:70px; max-width:700px;}
.process-steps{
  counter-reset:step;
  display:grid; grid-template-columns:repeat(2, 1fr); gap:1px; background:var(--line);
}
.process-steps li{background:var(--ice); padding:40px;}
.process-steps li:last-child{grid-column:1 / -1;}
.process-steps li::before{
  display:block;
  counter-increment:step; content:counter(step, decimal-leading-zero);
  font-family:'Poppins',sans-serif; font-size:22px; color:var(--teal); font-weight:400;
  margin-bottom:18px;
}
.process-steps h3{font-size:18px; font-weight:400; margin-bottom:8px;}
.process-steps p{font-size:13.5px; line-height:1.8; color:var(--carbon-soft); max-width:460px;}
@media(max-width:800px){
  .process-steps{grid-template-columns:1fr;}
  .process-steps li:last-child{grid-column:1;}
}

/* ---------- TESTIMONIOS ---------- */
.testimonios{padding:140px 0; max-width:1360px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.testimonios h2{font-size:clamp(26px,3vw,42px); font-weight:400; max-width:640px;}
.testimonials-grid{margin-top:56px; display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
.testimonial-card{
  border:1px solid var(--line); padding:34px; background:#fff;
  transition:transform .5s cubic-bezier(.16,.8,.24,1);
}
.testimonial-card p{font-family:'Poppins',sans-serif; font-size:15px; line-height:1.8; color:var(--carbon); font-weight:300; margin-bottom:18px;}
.testimonial-card.placeholder p{color:var(--carbon-soft); font-style:italic;}
.testimonial-card cite{font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--teal); font-style:normal;}
@media(max-width:820px){ .testimonials-grid{grid-template-columns:1fr;} }

/* ---------- COBERTURA ---------- */
.cobertura{padding:0 0 60px; max-width:900px; margin:0 auto; padding-left:6vw; padding-right:6vw; text-align:center;}
.cobertura h2{font-size:clamp(24px,2.8vw,36px); font-weight:400; margin-bottom:22px;}
.cobertura p{font-size:14.5px; line-height:1.9; color:var(--carbon-soft);}
.cobertura p.address{margin-top:18px; font-size:14.5px; color:var(--carbon); font-weight:500; letter-spacing:0.02em;}
.cobertura p.schedule,
.contact-info p.schedule{
  margin-top:26px; padding-top:26px; border-top:1px solid var(--line);
  font-size:13px; letter-spacing:0.03em; color:var(--carbon);
}

/* ---------- FAQ ---------- */
.faq{padding:140px 0; max-width:1000px; margin:0 auto; padding-left:6vw; padding-right:6vw;}
.faq h2{font-size:clamp(26px,3vw,42px); font-weight:400; margin-bottom:56px;}
.faq-item{border-top:1px solid var(--line);}
.faq-item:last-child{border-bottom:1px solid var(--line);}
.faq-item summary{
  list-style:none; cursor:pointer; padding:26px 0;
  display:flex; justify-content:space-between; align-items:center; gap:24px;
  font-family:'Poppins',sans-serif; font-size:16px; font-weight:400;
}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{
  content:'+'; font-family:'Montserrat',sans-serif; font-size:20px; color:var(--teal);
  flex:0 0 auto; transition:transform .3s ease;
}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item p{font-size:14px; line-height:1.85; color:var(--carbon-soft); padding-bottom:26px; max-width:760px;}

/* ---------- CTA ---------- */
.cta{padding:190px 6vw 130px; text-align:center; display:flex; flex-direction:column; align-items:center;}
.cta h2{font-size:clamp(32px,5vw,68px); line-height:1.1; margin:26px 0 40px; font-weight:300;}
.cta h2 em{font-style:italic; color:var(--teal); font-weight:300;}
.cta p{font-size:15px; color:var(--carbon-soft); max-width:520px; margin:0 auto 36px; line-height:1.8;}
.cta-btn{
  font-size:12px; letter-spacing:0.16em; text-transform:uppercase; font-weight:500;
  padding:20px 46px; border:1px solid var(--teal); color:var(--carbon);
  text-decoration:none; position:relative; overflow:hidden; transition:color .5s ease;
}
.cta-btn span{position:relative; z-index:2;}
.cta-btn::before{
  content:''; position:absolute; inset:0; background:var(--teal);
  transform:scaleX(0); transform-origin:left; transition:transform .5s cubic-bezier(.16,.8,.24,1); z-index:1;
}
.cta-btn:hover{color:var(--ice);}
.cta-btn:hover::before{transform:scaleX(1);}

/* ---------- FOOTER ---------- */
.site-footer{
  border-top:1px solid var(--line); padding:80px 6vw 40px;
  background:var(--ice);
}
.footer-inner{
  max-width:1360px; margin:0 auto;
  display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:60px;
  padding-bottom:50px;
}
.footer-brand img{height:40px; margin-bottom:18px;}
.footer-brand p{font-size:13px; line-height:1.8; color:var(--carbon-soft); max-width:280px;}
.footer-col h4{
  font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--carbon-soft);
  margin-bottom:18px; font-weight:500; font-family:'Montserrat',sans-serif;
}
.footer-col ul li{margin-bottom:12px;}
.footer-col a{font-size:13.5px; text-decoration:none; color:var(--carbon); opacity:0.85;}
.footer-col a:hover{opacity:1; color:var(--teal);}
.footer-col address{font-size:13.5px; line-height:2; color:var(--carbon); font-style:normal;}

/* ---- iconos de redes sociales (footer + pagina de contacto) ---- */
.social-icons{display:flex; align-items:center; gap:14px; margin-top:6px;}
.contact-methods .social-icons{margin-top:2px;}
.social-icons a{
  display:inline-flex; align-items:center; justify-content:center;
  color:var(--carbon-soft); transition:color .3s ease, transform .3s ease;
}
.social-icons a:hover{color:var(--teal); transform:translateY(-2px);}
.social-icons svg{width:19px; height:19px; display:block;}
.footer-bottom{
  max-width:1360px; margin:0 auto; padding-top:30px; border-top:1px solid var(--line);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;
  font-size:10.5px; letter-spacing:0.08em; color:var(--carbon-soft); text-transform:uppercase;
}
@media(max-width:820px){ .footer-inner{grid-template-columns:1fr; gap:38px;} }

.visually-hidden{
  position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap;
}

/* ============================================================
   WHATSAPP AGENT WIDGET — boton flotante con mini-asistente
   ============================================================ */
:root{
  --icon-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5c-5.25 0-9.5 3.7-9.5 8.26 0 2.53 1.31 4.8 3.37 6.32-.1.98-.46 2.55-1.32 3.7-.12.16 0 .38.2.36 2.02-.2 3.6-1.02 4.5-1.6.86.2 1.77.3 2.75.3 5.25 0 9.5-3.7 9.5-8.26S17.25 2.5 12 2.5z'/%3E%3C/svg%3E");
  --icon-send: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 20l18-8L3 4l0 7 12 1-12 1z'/%3E%3C/svg%3E");
}

/* Nota: a pedido expreso de la clienta, el pulso del boton y el resto de las animaciones
   del sitio NO respetan "prefers-reduced-motion" (ver script.js). Si en algun momento se
   quiere volver al comportamiento accesible por defecto, agregar de nuevo el bloque
   @media(prefers-reduced-motion: reduce){ .wa-agent-launcher{ animation:none; } } aqui. */
.wa-agent{
  position:fixed; right:24px; bottom:24px; z-index:150;
  display:flex; flex-direction:column; align-items:flex-end;
  pointer-events:none;
}
.wa-agent-panel, .wa-agent-tooltip, .wa-agent-launcher{ pointer-events:auto; }

/* ---- launcher ---- */
.wa-agent-launcher{
  position:relative; flex:0 0 auto;
  width:60px; height:60px; border-radius:50%; border:0; cursor:pointer;
  background:var(--teal); box-shadow:0 10px 30px rgba(14,124,134,0.38);
  display:flex; align-items:center; justify-content:center;
  transition:transform .3s ease;
  animation:waPulseShadow 2.4s ease-out infinite;
}
.wa-agent-launcher:hover{transform:scale(1.07);}
.wa-agent.is-open .wa-agent-launcher{ animation:none; box-shadow:0 10px 30px rgba(14,124,134,0.38); }
@keyframes waPulseShadow{
  0%   { box-shadow:0 10px 30px rgba(14,124,134,0.38), 0 0 0 0 rgba(14,124,134,0.65); }
  60%  { box-shadow:0 10px 30px rgba(14,124,134,0.38), 0 0 0 26px rgba(14,124,134,0); }
  100% { box-shadow:0 10px 30px rgba(14,124,134,0.38), 0 0 0 26px rgba(14,124,134,0); }
}
.wa-agent-launcher-icon{
  position:absolute; width:24px; height:24px;
  transition:opacity .25s ease, transform .3s ease;
}
.wa-agent-icon-chat{
  background-color:var(--ice);
  -webkit-mask:var(--icon-chat) no-repeat center / contain;
  mask:var(--icon-chat) no-repeat center / contain;
}
.wa-agent-icon-close{
  color:var(--ice); font-size:22px; line-height:1; display:flex; align-items:center; justify-content:center;
  opacity:0; transform:rotate(-40deg);
}
.wa-agent.is-open .wa-agent-icon-chat{opacity:0; transform:rotate(40deg);}
.wa-agent.is-open .wa-agent-icon-close{opacity:1; transform:rotate(0deg);}
.wa-agent-badge{
  position:absolute; top:1px; right:1px; width:13px; height:13px; border-radius:50%;
  background:#25D366; border:2px solid var(--ice); transition:opacity .2s ease;
}
.wa-agent.is-open .wa-agent-badge{opacity:0;}

/* ---- tooltip de invitacion ---- */
.wa-agent-tooltip{
  position:absolute; right:0; bottom:80px;
  width:250px; background:var(--carbon); color:var(--ice);
  border-radius:18px;
  padding:16px 32px 16px 18px; font-size:12.5px; line-height:1.6;
  box-shadow:0 16px 38px rgba(46,46,46,0.32);
  opacity:0; visibility:hidden; transform:translateY(10px) scale(.96);
  transition:opacity .35s ease, transform .35s ease, visibility 0s linear .35s;
}
.wa-agent-tooltip.is-visible{
  opacity:1; visibility:visible; transform:translateY(0) scale(1);
  transition:opacity .35s ease, transform .35s ease, visibility 0s linear 0s;
}
.wa-agent-tooltip::after{
  content:''; position:absolute; right:27px; bottom:-6px; width:14px; height:14px;
  background:var(--carbon); transform:rotate(45deg); border-radius:0 0 4px 0;
}
.wa-agent-tooltip p{margin:0; font-family:'Montserrat',sans-serif;}
.wa-agent-tooltip-close{
  position:absolute; top:8px; right:8px; background:none; border:0; color:rgba(233,245,245,0.65);
  cursor:pointer; font-size:12px; padding:6px; line-height:1; border-radius:50%;
}
.wa-agent-tooltip-close:hover{color:var(--ice); background:rgba(233,245,245,0.12);}

/* ---- panel del chat ---- */
.wa-agent-panel{
  width:min(370px, calc(100vw - 32px));
  max-height:min(600px, calc(100vh - 110px));
  background:var(--ice);
  border-radius:26px;
  box-shadow:0 26px 70px rgba(46,46,46,0.28), 0 4px 18px rgba(46,46,46,0.1);
  display:flex; flex-direction:column;
  margin-bottom:18px;
  overflow:hidden;
  opacity:0; visibility:hidden; transform:translateY(22px) scale(.96);
  transform-origin:bottom right;
  transition:opacity .35s cubic-bezier(.16,.8,.24,1), transform .35s cubic-bezier(.16,.8,.24,1), visibility 0s linear .35s;
}
.wa-agent.is-open .wa-agent-panel{
  opacity:1; visibility:visible; transform:translateY(0) scale(1);
  transition:opacity .35s cubic-bezier(.16,.8,.24,1), transform .35s cubic-bezier(.16,.8,.24,1), visibility 0s linear 0s;
}

.wa-agent-head{
  background:linear-gradient(135deg, var(--carbon) 0%, #23423f 140%);
  color:var(--ice); padding:18px 16px 18px 20px;
  display:flex; align-items:center; justify-content:space-between; flex:0 0 auto; gap:10px;
}
.wa-agent-head-info{display:flex; align-items:center; gap:12px; min-width:0;}
.wa-agent-avatar{
  width:40px; height:40px; border-radius:50%; background:var(--teal); flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  font-family:'Poppins',sans-serif; font-size:13px; color:var(--ice);
  box-shadow:0 0 0 2px rgba(233,245,245,0.25);
}
.wa-agent-head strong{display:block; font-family:'Poppins',sans-serif; font-weight:400; font-size:14.5px;}
.wa-agent-status{display:flex; align-items:center; gap:6px; font-size:11px; color:rgba(233,245,245,0.72); margin-top:3px;}
.wa-agent-status i{width:7px; height:7px; border-radius:50%; background:#25D366; display:inline-block; font-style:normal; flex:0 0 auto;}
.wa-agent-head-actions{display:flex; align-items:center; gap:2px; flex:0 0 auto;}
.wa-agent-restart, .wa-agent-close{
  background:none; border:0; color:var(--ice); opacity:.7; cursor:pointer;
  width:30px; height:30px; border-radius:50%; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center; font-size:14px;
  transition:opacity .2s ease, background .2s ease, transform .3s ease;
}
.wa-agent-restart:hover, .wa-agent-close:hover{opacity:1; background:rgba(233,245,245,0.14);}
.wa-agent-restart:active{transform:rotate(-140deg);}

.wa-agent-body{
  padding:22px 20px; overflow-y:auto; flex:1 1 auto;
  display:flex; flex-direction:column; gap:12px;
  scroll-behavior:smooth;
}
.wa-msg{
  max-width:86%; padding:12px 16px; line-height:1.6; font-size:13px;
  border-radius:18px; animation:waMsgIn .3s cubic-bezier(.16,.8,.24,1);
}
@keyframes waMsgIn{ from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:translateY(0);} }
.wa-msg.bot{background:#fff; border:1px solid var(--line); align-self:flex-start; color:var(--carbon); border-bottom-left-radius:5px;}
.wa-msg.user{background:var(--teal); color:var(--ice); align-self:flex-end; border-bottom-right-radius:5px;}
.wa-agent-options{display:flex; flex-wrap:wrap; gap:8px; align-self:flex-start; max-width:100%;}
.wa-agent-options button{
  border:1.5px solid var(--teal); color:var(--teal); background:#fff; border-radius:999px;
  font-size:12px; padding:10px 16px; cursor:pointer; transition:all .25s ease; text-align:left;
}
.wa-agent-options button:hover{background:var(--teal); color:var(--ice); transform:translateY(-1px);}
.wa-agent-form-row{
  display:flex; gap:6px; align-self:stretch; flex:0 0 auto;
  background:#fff; border:1.5px solid var(--line); border-radius:999px; padding:4px 4px 4px 16px;
  transition:border-color .25s ease;
}
.wa-agent-form-row:focus-within{border-color:var(--teal);}
.wa-agent-form-row input{
  flex:1; min-width:0; border:0; background:none; padding:9px 0;
  font-family:'Montserrat',sans-serif; font-size:13px; color:var(--carbon);
}
.wa-agent-form-row input:focus{outline:none;}
.wa-agent-form-row button{
  flex:0 0 auto; width:36px; height:36px; border:0; background:var(--teal); color:var(--ice); cursor:pointer;
  border-radius:50%; display:flex; align-items:center; justify-content:center; transition:background .3s ease;
}
.wa-agent-form-row button:hover{background:#0a636b;}
.wa-agent-form-row button span{
  width:15px; height:15px; background-color:var(--ice);
  -webkit-mask:var(--icon-send) no-repeat center / contain;
  mask:var(--icon-send) no-repeat center / contain;
}
.wa-agent-hint{
  align-self:flex-start; font-size:11.5px; color:#c0554f; margin-top:-6px; padding-left:16px;
}
.wa-agent-skip{
  align-self:flex-start; background:none; border:0; color:var(--carbon-soft);
  font-size:11.5px; text-decoration:underline; cursor:pointer; padding:0;
}
.wa-agent-skip:hover{color:var(--teal);}
.wa-agent-restart-msg{
  align-self:center; background:none; border:1px solid var(--line); color:var(--carbon-soft);
  border-radius:999px; font-size:11.5px; padding:8px 16px; cursor:pointer; transition:all .25s ease;
}
.wa-agent-restart-msg:hover{border-color:var(--teal); color:var(--teal);}

@media(max-width:480px){
  .wa-agent{right:14px; bottom:14px;}
  .wa-agent-tooltip{width:min(250px, calc(100vw - 28px));}
  .wa-agent-panel{border-radius:22px;}
}

/* ============================================================
   PAGINAS INTERIORES (contacto, galería) — nav siempre sólido
   ============================================================ */
.page-hero{
  padding:190px 6vw 90px; max-width:1100px; margin:0 auto; text-align:left;
}
.page-hero h1{font-size:clamp(32px,4.6vw,58px); font-weight:300; line-height:1.15;}
.page-hero p{margin-top:24px; font-size:15px; line-height:1.8; color:var(--carbon-soft); max-width:520px;}

/* ---------- CONTACTO ---------- */
.contact-grid{
  display:grid; grid-template-columns:1fr 1fr; gap:70px;
  padding-bottom:150px; max-width:1200px; margin:0 auto; padding-left:6vw; padding-right:6vw;
}
.contact-info h2{font-size:clamp(22px,2.4vw,30px); font-weight:400; margin-bottom:30px;}
.contact-methods li{padding:26px 0; border-top:1px solid var(--line);}
.contact-methods li:last-child{border-bottom:1px solid var(--line);}
.contact-methods h3{font-size:15px; font-weight:500; font-family:'Montserrat'; margin-bottom:8px; letter-spacing:0.04em;}
.contact-methods p{font-size:14px; color:var(--carbon-soft); margin-bottom:14px; line-height:1.7;}
.contact-methods a.btn{margin-top:4px;}
.contact-info address{font-size:14.5px; line-height:1.9; color:var(--carbon-soft); font-style:normal; margin-bottom:20px;}
.contact-info .note{font-size:13px; color:var(--carbon-soft); line-height:1.8; margin-top:20px;}
.map-embed{
  margin-top:28px; border:1px solid var(--line); aspect-ratio:4/3; overflow:hidden; background:var(--ice);
}
.map-embed iframe{width:100%; height:100%; border:0; display:block; filter:grayscale(.15) contrast(1.02);}
.map-link{
  display:inline-flex; align-items:center; gap:6px; margin-top:16px;
  font-size:12px; letter-spacing:0.06em; text-transform:uppercase; font-weight:500;
  color:var(--teal); text-decoration:none;
}
.map-link:hover{color:var(--carbon);}
@media(max-width:820px){ .contact-grid{grid-template-columns:1fr; gap:50px;} }

/* ---------- GALERIA (página completa) ---------- */
.gallery-nav{
  position:sticky; top:78px; z-index:40; background:rgba(233,245,245,0.94); backdrop-filter:blur(10px);
  padding:18px 6vw; border-bottom:1px solid var(--line); border-top:1px solid var(--line);
  display:flex; gap:10px; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.gallery-nav a{
  flex:0 0 auto;
  font-size:11px; letter-spacing:0.08em; text-transform:uppercase; text-decoration:none;
  color:var(--carbon-soft); padding:9px 16px; border:1px solid var(--line); white-space:nowrap;
  transition:all .3s ease;
}
.gallery-nav a:hover, .gallery-nav a.is-active{border-color:var(--teal); color:var(--teal);}

.gallery-groups{max-width:1360px; margin:0 auto; padding:80px 6vw 160px;}
.gallery-group{padding-top:70px; scroll-margin-top:150px;}
.gallery-group:first-child{padding-top:0;}
.gallery-group-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:34px; flex-wrap:wrap; gap:10px;}
.gallery-group-head h2{font-size:clamp(22px,2.6vw,32px); font-weight:400;}
.gallery-group-head span{font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--carbon-soft);}
.gallery-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:14px;}
.gallery-grid button{
  border:0; padding:0; background:none; cursor:zoom-in; aspect-ratio:1/1; overflow:hidden; position:relative; display:block;
}
.gallery-grid img{width:100%; height:100%; object-fit:cover; transition:transform .5s cubic-bezier(.16,.8,.24,1);}
.gallery-grid button:hover img{transform:scale(1.06);}
@media(max-width:900px){ .gallery-grid{grid-template-columns:repeat(3,1fr);} }
@media(max-width:600px){ .gallery-grid{grid-template-columns:repeat(2,1fr); gap:8px;} .gallery-groups{padding-top:50px;} }

.lightbox{
  position:fixed; inset:0; z-index:300; background:rgba(46,46,46,0.94);
  display:flex; align-items:center; justify-content:center; padding:5vh 5vw;
  opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.lightbox.is-open{opacity:1; pointer-events:auto;}
.lightbox img{max-width:100%; max-height:90vh; object-fit:contain;}
.lightbox-close, .lightbox-prev, .lightbox-next{
  position:absolute; background:none; border:1px solid rgba(233,245,245,0.4); color:var(--ice);
  cursor:pointer; font-size:16px; width:46px; height:46px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; transition:background .3s ease;
}
.lightbox-close:hover, .lightbox-prev:hover, .lightbox-next:hover{background:rgba(233,245,245,0.15);}
.lightbox-close{top:26px; right:26px;}
.lightbox-prev{left:26px; top:50%; transform:translateY(-50%);}
.lightbox-next{right:26px; top:50%; transform:translateY(-50%);}
@media(max-width:700px){ .lightbox-prev, .lightbox-next{width:38px; height:38px;} }

/* ============================================================
   CINEMATOGRAFIA — titulares con mascara, imagenes con cortina,
   cursor propio, grano de pelicula, contador animado, intro.
   ============================================================ */

/* ---- imagenes: panel solido que se retira + zoom ken-burns ---- */
.reveal.curtain-media{ opacity:1; transform:none; position:relative; overflow:hidden; }
.reveal.curtain-media > img{
  transform:scale(1.15);
  transition:transform 1.7s cubic-bezier(.16,1,.3,1);
}
.reveal.curtain-media.in > img{ transform:scale(1); }
/* el hover-zoom propio de .ambiente-item/.gt-card tiene menos especificidad que la regla
   de arriba (misma propiedad, mismo elemento) y quedaria "tapado" para siempre despues de
   la revelacion inicial si no se repite aqui con mayor especificidad. */
.ambiente-item.curtain-media.in:hover > img{ transform:scale(1.05); }
.gt-card.curtain-media.in:hover > img{ transform:scale(1.08); }
.reveal.curtain-media::before{
  content:''; position:absolute; inset:0; background:var(--carbon); z-index:5;
  transform-origin:left center; pointer-events:none;
  transition:transform 1.05s cubic-bezier(.76,0,.24,1);
}
.reveal.curtain-media.in::before{ transform:scaleX(0); }
.reveal.curtain-media.reveal-delay-1::before{ transition-delay:.12s; }
.reveal.curtain-media.reveal-delay-1 > img{ transition-delay:.12s; }
.reveal.curtain-media.reveal-delay-2::before{ transition-delay:.24s; }
.reveal.curtain-media.reveal-delay-2 > img{ transition-delay:.24s; }

/* ---- cursor personalizado (solo dispositivos con mouse fino) ---- */
body.has-custom-cursor{ cursor:none; }
body.has-custom-cursor a, body.has-custom-cursor button{ cursor:none; }
.cursor-dot, .cursor-ring{
  position:fixed; top:0; left:0; z-index:400; pointer-events:none;
  border-radius:50%; transform:translate(-50%,-50%);
  will-change:transform; opacity:0; transition:opacity .3s ease;
}
body.has-custom-cursor .cursor-dot, body.has-custom-cursor .cursor-ring{ opacity:1; }
.cursor-dot{ width:6px; height:6px; background:var(--teal); }
.cursor-ring{
  width:34px; height:34px; border:1px solid rgba(14,124,134,0.55);
  transition:opacity .3s ease, width .25s ease, height .25s ease, border-color .25s ease, background .25s ease;
}
.cursor-ring.is-hover{
  width:56px; height:56px; background:rgba(14,124,134,0.08); border-color:var(--teal);
}

/* ---- grano de pelicula ---- */
.film-grain{
  position:fixed; inset:0; z-index:250; pointer-events:none;
  mix-blend-mode:overlay; opacity:0.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---- contador animado (about-stats) ---- */
.about-stats .n{ font-variant-numeric:tabular-nums; }

/* ---- intro cinematografica ---- */
#curtain{
  position:fixed; inset:0; z-index:500; background:var(--carbon);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .95s cubic-bezier(.65,0,.35,1);
}
#curtain.opening{ opacity:0; }
#curtain.hidden{ display:none; }
.curtain-content{ display:flex; flex-direction:column; align-items:center; gap:22px; }
.curtain-logo{
  height:64px; filter:brightness(0) invert(1);
  opacity:0; transform:scale(.92); animation:curtainLogoIn 1.1s .15s cubic-bezier(.16,1,.3,1) forwards;
}
.curtain-line{
  width:0; height:1px; background:var(--champagne);
  animation:curtainLineIn .8s .55s cubic-bezier(.16,1,.3,1) forwards;
}
.curtain-tag{
  font-family:'Montserrat',sans-serif; font-size:11px; letter-spacing:0.3em; text-transform:uppercase;
  color:rgba(233,245,245,0.6);
  opacity:0; animation:curtainFadeIn .9s .8s ease forwards;
}
@keyframes curtainLogoIn{ from{opacity:0; transform:scale(.92);} to{opacity:1; transform:scale(1);} }
@keyframes curtainLineIn{ from{width:0;} to{width:120px;} }
@keyframes curtainFadeIn{ from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);} }
@media(max-width:600px){ .curtain-logo{height:50px;} }

/* ---- firma de agencia en el footer ---- */
.dev-credit{
  width:100%; text-align:center; margin-top:24px; padding-top:20px;
  border-top:1px solid var(--line);
  font-family:'Montserrat',sans-serif; font-size:10px; letter-spacing:0.12em; text-transform:uppercase;
}
.dev-credit a{ color:inherit; opacity:.6; text-decoration:none; transition:opacity .3s ease; }
.dev-credit a:hover{ opacity:1; color:var(--teal); }
