/* ========================================================================
   LAKSMI ABOGADOS — cinematic scroll site
   ======================================================================== */

:root{
  /* Paleta Manual de Marca 2024:
     Blue #244266 · Dark Blue #273848 · White Grey #D9D9D9
     Dark Grey #3A3A3A · Sand #F1D198 */
  --ink:        #0A0E15;            /* near-black with dark-blue cast */
  --ink-2:      #0E1420;
  --ink-3:      #16202E;            /* surface, tinted toward Dark Blue */
  --navy:       #273848;            /* brand Dark Blue */
  --royal:      #244266;            /* brand Blue — buttons/accents */
  --royal-glow: #5B7CA8;            /* lighter tint from brand palette strips */
  --cream:      #D9D9D9;            /* brand White Grey — main text */
  --cream-dim:  #9AA2AC;
  --beige:      #F1D198;            /* brand Sand — secondary accents */
  --line:       rgba(217,217,217,.14);

  /* Tipografías Manual de Marca: Red Hat Display (títulos), Manrope (cuerpos) */
  --f-display: 'Red Hat Display', 'Arial Narrow', sans-serif;
  --f-serif:   'Red Hat Display', system-ui, sans-serif;
  --f-sans:    'Manrope', system-ui, sans-serif;

  --ease: cubic-bezier(.19,1,.22,1);
  --pad: clamp(1.25rem, 4vw, 4rem);
}

*{ margin:0; padding:0; box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; color-scheme:dark; }
a, button, input, label{ touch-action:manipulation; }
.section-title, .finale__title{ text-wrap:balance; }
body{
  background:var(--ink);
  color:var(--cream);
  font-family:var(--f-sans);
  font-weight:400;
  line-height:1.5;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.is-locked{ overflow:hidden; height:100vh; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
canvas{ display:block; }
::selection{ background:var(--royal); color:#fff; }

/* ---------- overlays ---------- */
.grain{
  position:fixed; inset:-50%; z-index:9000; pointer-events:none;
  opacity:.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%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");
  animation:grain 1.2s steps(3) infinite;
}
@keyframes grain{
  0%{ transform:translate(0,0) } 33%{ transform:translate(-4%,3%) }
  66%{ transform:translate(3%,-3%) } 100%{ transform:translate(0,0) }
}
.vignette{
  position:fixed; inset:0; z-index:8900; pointer-events:none;
  background:radial-gradient(130% 110% at 50% 45%, transparent 60%, rgba(0,0,0,.4) 100%);
}
@keyframes spin{ to{ transform:translate(-50%,-50%) rotate(360deg) } }

/* ---------- preloader ---------- */
.preloader{
  position:fixed; inset:0; z-index:10000;
  background:var(--ink); display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:1.4rem;
  transition:opacity .8s var(--ease), visibility .8s;
}
.preloader.is-done{ opacity:0; visibility:hidden; pointer-events:none; }
.preloader__yantra{
  width:120px; opacity:.5; filter:brightness(0) invert(1);
  animation:spin 18s linear infinite;
}
.preloader__word{
  font-family:var(--f-display); font-size:clamp(2.4rem,7vw,4.4rem);
  letter-spacing:.32em; padding-left:.32em; color:var(--cream);
}
.preloader__bar{ width:min(46vw,240px); height:1px; background:var(--line); overflow:hidden; }
.preloader__bar span{ display:block; height:100%; width:0; background:var(--royal-glow); }
.preloader__pct{ font-size:.72rem; letter-spacing:.28em; color:var(--cream-dim); }

/* ---------- nav ---------- */
.nav{
  position:fixed; top:0; left:0; width:100%; z-index:5000;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.1rem var(--pad);
  transition:background .5s var(--ease), padding .5s var(--ease), border-color .5s;
  border-bottom:1px solid transparent;
}
.nav.is-scrolled{
  background:rgba(8,9,12,.72); backdrop-filter:blur(14px);
  padding-top:.7rem; padding-bottom:.7rem; border-bottom-color:var(--line);
}
.nav__brand img{ height:34px; width:auto; }
.nav__links{ display:flex; gap:2.2rem; }
.nav__links a{
  font-size:.74rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--cream-dim); transition:color .3s;
}
.nav__links a:hover{ color:var(--cream); }
.nav__cta{
  font-size:.72rem; letter-spacing:.16em; text-transform:uppercase;
  padding:.72rem 1.3rem; border:1px solid var(--line); border-radius:100px;
  color:var(--cream); transition:background-color .35s var(--ease), border-color .35s var(--ease), color .35s var(--ease);
}
.nav__cta:hover{ background:var(--royal); border-color:var(--royal); color:#fff; }

/* ---------- shared section bits ---------- */
.section-eyebrow{
  font-family:var(--f-serif); font-style:italic; font-weight:400;
  font-size:clamp(.9rem,1.4vw,1.1rem); color:var(--beige);
  letter-spacing:.02em; margin-bottom:1rem;
}
.section-title{
  font-family:var(--f-display); font-weight:400;
  font-size:clamp(2.6rem,8vw,7rem); line-height:.92;
  letter-spacing:.005em; color:var(--cream);
}

/* ========================================================================
   HERO — orbit scrub
   ======================================================================== */
.hero{ position:relative; height:420vh; }
.hero__sticky{
  position:sticky; top:0; height:100vh; overflow:hidden;
  display:flex; align-items:center; justify-content:center;
}
.hero__canvas{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; z-index:1;
}
.hero__scrim{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  /* long, low-alpha fades only — hard radial edges band visibly on the
     smooth sky gradient and read as vertical streaks */
  background:
    radial-gradient(70% 55% at 50% 55%, rgba(10,14,21,.32), transparent 88%),
    linear-gradient(180deg, rgba(10,14,21,.5) 0%, transparent 26%, transparent 58%, rgba(10,14,21,.95) 100%);
}
.hero__type{
  position:relative; z-index:3; text-align:center; padding:0 var(--pad);
  transform:translateZ(0);
}
.hero__eyebrow{
  overflow:hidden;
  font-size:.76rem; letter-spacing:.42em; text-transform:uppercase;
  color:var(--cream); margin-bottom:1.4rem; text-indent:.42em;
}
.hero__eyebrow span{ display:inline-block; }
.hero__title{
  font-family:var(--f-display); font-weight:400;
  font-size:clamp(3.6rem,15.5vw,15rem); line-height:.82;
  letter-spacing:.01em; text-transform:uppercase;
}
.hero__title .line{ display:block; overflow:hidden; }
.hero__title .line--serif{
  font-family:var(--f-serif); font-weight:500; font-style:italic;
  letter-spacing:-.01em; color:var(--beige);
  font-size:clamp(2.7rem,11vw,11rem);
}
.hero__title .char{ display:inline-block; will-change:transform; }
.hero__subtitle{
  margin-top:1.6rem; font-size:clamp(.9rem,1.5vw,1.15rem);
  letter-spacing:.08em; color:var(--cream-dim);
  font-weight:300;
}
.hero__scrollcue{
  position:absolute; bottom:2rem; left:50%; transform:translateX(-50%);
  z-index:4; display:flex; flex-direction:column; align-items:center; gap:.7rem;
  font-size:.62rem; letter-spacing:.34em; text-transform:uppercase; color:var(--cream-dim);
}
.hero__scrollcue i{
  width:1px; height:42px; background:linear-gradient(var(--royal-glow),transparent);
  animation:cue 1.8s var(--ease) infinite;
}
@keyframes cue{ 0%{ transform:scaleY(0); transform-origin:top } 45%{ transform:scaleY(1); transform-origin:top }
  55%{ transform:scaleY(1); transform-origin:bottom } 100%{ transform:scaleY(0); transform-origin:bottom } }

/* ========================================================================
   STATS
   ======================================================================== */
.stats{
  position:relative; z-index:4; background:var(--ink);
  padding:clamp(4rem,10vh,9rem) var(--pad);
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.stats__grid{
  max-width:1300px; margin:0 auto;
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:var(--line);
}
.stat{
  background:var(--ink); padding:clamp(1.6rem,4vw,3rem) clamp(1rem,2vw,2rem);
  display:flex; flex-direction:column; gap:.7rem;
}
.stat__num{
  font-family:var(--f-display); font-weight:400;
  font-size:clamp(3rem,7vw,6rem); line-height:.9; color:var(--cream);
  font-variant-numeric:tabular-nums;
}
.stat__num--word{ color:var(--royal-glow); letter-spacing:.02em; }
.stat--word .stat__num{ font-size:clamp(2.4rem,5.5vw,4.6rem); }
.stat__label{
  font-size:.72rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--cream-dim);
}
.stats__note{
  max-width:1300px; margin:2.4rem auto 0; text-align:right;
  font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:#5b5850;
}

/* ========================================================================
   PILLARS
   ======================================================================== */
.pillars{ position:relative; height:480vh; background:var(--ink); }
.pillars__sticky{ position:sticky; top:0; height:100vh; overflow:hidden; }
.pillars__video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  z-index:1; opacity:.55;
}
.pillars__scrim{
  position:absolute; inset:0; z-index:2;
  /* near-symmetric left/right so neither socio reads brighter; slightly
     heavier on the left where the pillar text sits */
  background:
    linear-gradient(90deg, rgba(10,14,21,.88) 0%, rgba(10,14,21,.48) 45%, rgba(10,14,21,.42) 70%, rgba(10,14,21,.62) 100%),
    linear-gradient(0deg, rgba(10,14,21,.9) 0%, transparent 40%);
}
.pillars__head{
  position:absolute; top:clamp(5rem,12vh,9rem); left:var(--pad); z-index:4;
}
.pillars__stage{
  position:absolute; inset:0; z-index:3;
  display:flex; align-items:center; padding:0 var(--pad);
}
.pillar{
  position:absolute; left:var(--pad); max-width:min(46rem,80vw);
  opacity:0;
}
.pillar__idx{
  font-family:var(--f-serif); font-style:italic; font-size:1.1rem; color:var(--royal-glow);
  display:block; margin-bottom:1rem;
}
.pillar__name{
  font-family:var(--f-display); font-weight:400; text-transform:uppercase;
  font-size:clamp(3rem,11vw,9.5rem); line-height:.86; color:var(--cream);
}
.pillar__desc{
  margin-top:1.6rem; max-width:34rem; font-size:clamp(1rem,1.5vw,1.25rem);
  line-height:1.6; color:var(--cream-dim); font-weight:300;
}
.pillar__cta{
  display:inline-flex; align-items:center; gap:.6rem; margin-top:1.8rem;
  font-size:.78rem; letter-spacing:.2em; text-transform:uppercase; color:var(--cream);
  border:1px solid var(--line); border-radius:100px; padding:.85rem 1.5rem;
  transition:background-color .35s var(--ease), border-color .35s var(--ease); pointer-events:auto;
}
.pillar__cta span{ color:var(--royal-glow); transition:transform .35s var(--ease); }
.pillar__cta:hover{ background:var(--royal); border-color:var(--royal); }
.pillar__cta:hover span{ color:#fff; transform:translateX(4px); }
.pillars__progress{
  position:absolute; right:var(--pad); top:50%; transform:translateY(-50%);
  z-index:4; display:flex; flex-direction:column; gap:.9rem;
}
.pillars__progress span{
  width:2px; height:34px; background:var(--line); transition:background-color .5s var(--ease), box-shadow .5s var(--ease);
}
.pillars__progress span.is-on{ background:var(--royal-glow); box-shadow:0 0 12px var(--royal-glow); }

/* ========================================================================
   SERVICIOS (detalle por área + formularios)
   ======================================================================== */
.svc{
  position:relative; background:var(--ink); overflow:hidden;
  padding:clamp(5rem,12vh,10rem) var(--pad);
  border-top:1px solid var(--line);
}
.svc--alt{ background:var(--ink-2); }
.svc__inner{ max-width:1300px; margin:0 auto; position:relative; z-index:1; }
.svc__head{ margin-bottom:clamp(2.4rem,5vw,4rem); }
.svc__head .section-title em{
  font-family:var(--f-serif); font-style:italic; font-weight:500;
  color:var(--beige); text-transform:none;
}
.svc__lead{
  margin-top:1.4rem; max-width:46ch; font-size:clamp(1rem,1.5vw,1.2rem);
  line-height:1.6; color:var(--cream-dim); font-weight:300;
}
.svc__cols{
  display:grid; grid-template-columns:1fr 1fr 1.15fr; gap:clamp(1.5rem,3vw,3rem);
  align-items:start;
}
.svc__list h3{
  font-family:var(--f-serif); font-style:italic; font-weight:500;
  font-size:clamp(1.3rem,2vw,1.7rem); color:var(--beige); margin-bottom:1.2rem;
}
.svc__list ul{ list-style:none; }
.svc__list li{
  position:relative; padding:.85rem 0 .85rem 1.6rem;
  font-size:.97rem; font-weight:300; color:var(--cream-dim); line-height:1.5;
  border-bottom:1px solid var(--line);
}
.svc__list li::before{
  content:""; position:absolute; left:0; top:1.45rem;
  width:.55rem; height:1px; background:var(--royal-glow);
}
.svc__yantra{
  position:absolute; right:-12%; top:50%; transform:translateY(-50%);
  width:min(52vw,620px); opacity:.04; filter:brightness(0) invert(1);
  animation:spin 100s linear infinite; z-index:0; pointer-events:none;
}

/* ---------- consult form ---------- */
.consult-form{
  background:var(--ink-3); border:1px solid var(--line); border-radius:16px;
  padding:clamp(1.5rem,2.5vw,2.2rem);
}
.consult-form h3{
  font-family:var(--f-display); font-weight:400; text-transform:uppercase;
  font-size:clamp(1.3rem,2vw,1.7rem); color:var(--cream); margin-bottom:.4rem;
}
.consult-form__hint{ font-size:.85rem; color:var(--cream-dim); font-weight:300; margin-bottom:1.4rem; }
.consult-form label{
  display:block; margin-bottom:1rem;
  font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--beige);
}
.consult-form label small{ text-transform:none; letter-spacing:0; color:var(--cream-dim); }
.consult-form input, .consult-form textarea{
  display:block; width:100%; margin-top:.45rem;
  background:var(--ink); border:1px solid var(--line); border-radius:9px;
  padding:.85rem 1rem; color:var(--cream);
  font-family:var(--f-sans); font-size:.95rem; font-weight:300;
  transition:border-color .3s; resize:vertical;
}
.consult-form input:focus, .consult-form textarea:focus{
  outline:none; border-color:var(--royal-glow);
  box-shadow:0 0 0 3px rgba(76,123,255,.12);
}
.consult-form input::placeholder, .consult-form textarea::placeholder{ color:#4d4a44; }
.btn-submit{
  width:100%; margin-top:.4rem; padding:1rem 1.4rem; border:0; border-radius:10px;
  background:var(--royal); color:#fff; cursor:pointer;
  font-family:var(--f-sans); font-size:.95rem; font-weight:600; letter-spacing:.03em;
  transition:background-color .35s var(--ease), transform .35s var(--ease), box-shadow .35s var(--ease);
}
.btn-submit:hover{ background:var(--royal-glow); transform:translateY(-2px); box-shadow:0 16px 40px -16px var(--royal); }
.consult-form__note{ margin-top:1rem; font-size:.72rem; color:#5b5850; font-weight:300; line-height:1.5; }

/* ---------- seguridad social flagship ---------- */
.svc--ss{
  background:
    radial-gradient(110% 80% at 50% 0%, #10203f 0%, var(--ink) 62%);
}
.ss-form{ max-width:1100px; }
.ss-form__packs{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; margin-bottom:1.8rem;
}
.pack{ display:block; cursor:pointer; margin:0; }
.pack input{ position:absolute; opacity:0; pointer-events:none; }
.pack__body{
  display:flex; flex-direction:column; gap:.5rem; height:100%;
  background:var(--ink); border:1px solid var(--line); border-radius:14px;
  padding:1.3rem 1.2rem; transition:border-color .35s var(--ease), background-color .35s var(--ease), transform .35s var(--ease), box-shadow .35s var(--ease);
}
.pack:hover .pack__body{ border-color:#3a4a6e; transform:translateY(-3px); }
.pack input:checked + .pack__body{
  border-color:var(--royal-glow);
  background:linear-gradient(160deg, rgba(43,92,230,.16), var(--ink) 70%);
  box-shadow:0 18px 44px -22px var(--royal);
}
.pack input:focus-visible + .pack__body{ outline:2px solid var(--royal-glow); outline-offset:2px; }
.pack__name{
  font-family:var(--f-display); font-weight:400; font-size:clamp(1.05rem,1.6vw,1.4rem);
  color:var(--cream); letter-spacing:.02em;
}
.pack__name i{ font-style:normal; color:var(--royal-glow); padding:0 .1em; }
.pack__desc{ font-size:.8rem; color:var(--cream-dim); font-weight:300; }
.ss-form__fields{
  display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:1rem; align-items:end;
}
.ss-form__fields label{ margin-bottom:0; }
.ss-form__fields .btn-submit{ width:auto; margin:0; padding:1rem 1.8rem; white-space:nowrap; }

/* ========================================================================
   EQUIPO
   ======================================================================== */
.team{
  position:relative; background:var(--ink); overflow:hidden;
  padding:clamp(5rem,12vh,10rem) var(--pad);
  border-top:1px solid var(--line);
}
.team__inner{ max-width:1300px; margin:0 auto; }
.team__head{ margin-bottom:clamp(2.4rem,5vw,4rem); }
.team__grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(1rem,2vw,1.8rem);
}
.member--expandable{ cursor:pointer; }
.member--expandable .member__photo{ transition:border-color .4s var(--ease), box-shadow .4s var(--ease); }
.member--expandable:hover .member__photo,
.member--expandable:focus-visible .member__photo{ border-color:#3a4a6e; }
.member--expandable.is-active .member__photo{
  border-color:var(--royal-glow);
  box-shadow:0 18px 44px -22px var(--royal);
}
.member--expandable:focus-visible{ outline:none; }
.member__hint{
  display:inline-flex; align-items:center; gap:.4rem; margin-top:.6rem;
  font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--cream-dim);
  transition:color .3s;
}
.member__hint i{ font-style:normal; color:var(--royal-glow); transition:transform .4s var(--ease); }
.member--expandable:hover .member__hint{ color:var(--cream); }
.member--expandable.is-active .member__hint i{ transform:rotate(45deg); }

/* ---------- expanding profile panel ---------- */
.team__profile{
  height:0; overflow:hidden;
  transition:height .65s var(--ease);
}
.team__profile-inner{
  margin-top:clamp(1.4rem,2.5vw,2.2rem);
  background:var(--ink-3); border:1px solid var(--royal); border-radius:18px;
  padding:clamp(1.6rem,3vw,2.6rem);
  position:relative;
}
.profile__close{
  position:absolute; top:1.1rem; right:1.2rem;
  background:transparent; border:1px solid var(--line); border-radius:100px;
  color:var(--cream); cursor:pointer; padding:.45rem .95rem;
  font-family:var(--f-sans); font-size:.68rem; letter-spacing:.16em; text-transform:uppercase;
  transition:border-color .3s;
}
.profile__close:hover{ border-color:var(--royal-glow); }
.profile__name{
  font-family:var(--f-display); font-weight:400; text-transform:uppercase;
  font-size:clamp(1.5rem,2.6vw,2.2rem); color:var(--cream); letter-spacing:.02em;
  padding-right:6rem;
}
.profile__role{
  margin-top:.35rem; font-family:var(--f-serif); font-style:italic;
  font-size:1.05rem; color:var(--beige);
}
.profile__chips{ display:flex; flex-wrap:wrap; gap:.5rem; margin:1.1rem 0 1.4rem; }
.profile__chips span{
  font-size:.66rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--cream-dim); border:1px solid var(--line); border-radius:100px;
  padding:.4rem .85rem;
}
.profile__bio{ columns:2; column-gap:clamp(2rem,4vw,3.5rem); }
.profile__bio p{
  font-size:.95rem; font-weight:300; line-height:1.7; color:var(--cream-dim);
  margin-bottom:1rem; break-inside:avoid;
}
.member__photo{
  aspect-ratio:3/4; overflow:hidden; border-radius:14px; border:1px solid var(--line);
  background:var(--ink-3);
}
.member__photo img{
  width:100%; height:100%; object-fit:cover;
  filter:saturate(.82) contrast(1.05);
  transition:transform .8s var(--ease), filter .8s var(--ease);
}
.member:hover .member__photo img{ transform:scale(1.045); filter:saturate(1) contrast(1.02); }
.member__name{
  margin-top:1.1rem; font-family:var(--f-display); font-weight:400;
  font-size:clamp(1.15rem,1.8vw,1.5rem); text-transform:uppercase; color:var(--cream);
  letter-spacing:.02em;
}
.member__role{
  margin-top:.3rem; font-family:var(--f-serif); font-style:italic;
  font-size:.95rem; color:var(--beige);
}

/* ========================================================================
   AREAS
   ======================================================================== */
.areas{ position:relative; background:var(--ink-2); overflow:hidden; }
.areas__video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  z-index:0; opacity:.28;
}
.areas__scrim{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, var(--ink) 0%, rgba(8,9,12,.6) 30%, rgba(8,9,12,.72) 70%, var(--ink) 100%);
}
.areas__inner{
  position:relative; z-index:2; max-width:1300px; margin:0 auto;
  padding:clamp(5rem,12vh,10rem) var(--pad);
}
.areas__head{ margin-bottom:clamp(2.4rem,5vw,4rem); }
.areas__grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:1px;
  background:var(--line); border:1px solid var(--line);
}
.areas__grid--4{ grid-template-columns:repeat(4,1fr); }
.areas__grid--4 .area-card h3{ font-size:clamp(1.3rem,1.9vw,1.8rem); }
.area-card{
  position:relative; background:var(--ink); padding:clamp(1.8rem,3vw,2.8rem);
  min-height:clamp(15rem,26vh,20rem); display:flex; flex-direction:column;
  cursor:default; overflow:hidden; transition:background .5s var(--ease);
}
.area-card::before{
  content:""; position:absolute; inset:0; z-index:0;
  background:radial-gradient(120% 120% at 0% 0%, rgba(43,92,230,.18), transparent 60%);
  opacity:0; transition:opacity .5s var(--ease);
}
.area-card:hover{ background:var(--ink-3); }
.area-card:hover::before{ opacity:1; }
.area-card > *{ position:relative; z-index:1; }
.area-card__no{
  font-family:var(--f-serif); font-style:italic; font-size:.95rem; color:var(--beige);
  margin-bottom:auto;
}
.area-card h3{
  font-family:var(--f-display); font-weight:400; text-transform:uppercase;
  font-size:clamp(1.5rem,2.4vw,2.2rem); line-height:1; margin:1.6rem 0 .8rem;
  color:var(--cream); transition:transform .5s var(--ease);
}
.area-card p{
  font-size:.98rem; color:var(--cream-dim); font-weight:300; max-width:26ch;
  transition:transform .5s var(--ease);
}
.area-card__arrow{
  position:absolute; top:clamp(1.8rem,3vw,2.8rem); right:clamp(1.8rem,3vw,2.8rem);
  font-size:1.3rem; color:var(--royal-glow); opacity:0; transform:translate(-8px,8px);
  transition:opacity .5s var(--ease), transform .5s var(--ease); z-index:1;
}
.area-card:hover .area-card__arrow{ opacity:1; transform:translate(0,0); }
.area-card:hover h3{ transform:translateX(6px); }
.area-card:hover p{ transform:translateX(6px); }
[data-reveal]{ opacity:0; transform:translateY(40px); }

/* ========================================================================
   TESTIMONIOS
   ======================================================================== */
.testi{
  position:relative; background:var(--ink); padding:clamp(6rem,16vh,12rem) var(--pad);
  border-top:1px solid var(--line);
}
.testi__inner{ max-width:1100px; margin:0 auto; text-align:center; }
.testi__stage{
  position:relative; min-height:clamp(18rem,34vh,24rem); margin-top:2rem;
  display:flex; align-items:center; justify-content:center;
}
.testi__quote{
  position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:2rem;
  opacity:0; transform:translateY(24px); transition:opacity .9s var(--ease), transform .9s var(--ease);
  pointer-events:none;
}
.testi__quote.is-active{ opacity:1; transform:none; pointer-events:auto; }
.testi__quote p{
  font-family:var(--f-serif); font-weight:400; font-style:italic;
  font-size:clamp(1.4rem,3.4vw,2.7rem); line-height:1.32; color:var(--cream);
  max-width:22ch;
}
.testi__quote cite{
  font-style:normal; font-size:.76rem; letter-spacing:.26em; text-transform:uppercase;
  color:var(--beige);
}
.testi__dots{ display:flex; gap:.7rem; justify-content:center; margin-top:3rem; }
.testi__dots button{
  width:30px; height:2px; background:var(--line); border:0; padding:0; cursor:pointer;
  transition:background .4s;
}
.testi__dots button.is-on{ background:var(--royal-glow); }

/* ========================================================================
   FINALE
   ======================================================================== */
.finale{
  position:relative; overflow:hidden;
  background:radial-gradient(120% 90% at 50% 0%, #10203f 0%, var(--ink) 60%);
  padding:clamp(6rem,16vh,13rem) var(--pad);
}
.finale__yantra{
  position:absolute; bottom:-30%; left:50%; transform:translateX(-50%);
  width:min(90vw,900px); opacity:.05; filter:brightness(0) invert(1);
  animation:spin 90s linear infinite; z-index:0;
}
.finale__inner{ position:relative; z-index:1; max-width:1000px; margin:0 auto; text-align:center; }
.finale__title{
  font-family:var(--f-display); font-weight:400; text-transform:uppercase;
  font-size:clamp(2.8rem,10vw,8.5rem); line-height:.9; margin:.6rem 0 1.6rem; color:var(--cream);
}
.finale__title em{ font-family:var(--f-serif); font-style:italic; font-weight:500; color:var(--beige); text-transform:none; }
.finale__lead{
  max-width:52ch; margin:0 auto 3rem; font-size:clamp(1rem,1.6vw,1.2rem);
  line-height:1.6; color:var(--cream-dim); font-weight:300;
}
.finale__btns{ display:flex; gap:1.2rem; justify-content:center; flex-wrap:wrap; }
.btn{
  display:flex; flex-direction:column; gap:.25rem; text-align:left;
  padding:1.15rem 2rem; border-radius:14px; min-width:clamp(15rem,30vw,17rem);
  transition:background-color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease), box-shadow .4s var(--ease); border:1px solid transparent;
}
.btn span{ font-size:1.05rem; font-weight:600; letter-spacing:.02em; }
.btn small{ font-size:.82rem; opacity:.75; font-weight:300; letter-spacing:.02em; }
.btn--wa{ background:var(--royal); color:#fff; }
.btn--wa:hover{ background:var(--royal-glow); transform:translateY(-3px); box-shadow:0 20px 50px -20px var(--royal); }
.btn--mail{ background:transparent; border-color:var(--line); color:var(--cream); }
.btn--mail:hover{ border-color:var(--beige); background:rgba(201,183,146,.06); transform:translateY(-3px); }

/* ========================================================================
   FOOTER
   ======================================================================== */
.footer{ background:var(--ink); padding:clamp(3.5rem,8vh,6rem) var(--pad) 2rem; border-top:1px solid var(--line); }
.footer__grid{
  max-width:1300px; margin:0 auto;
  display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:clamp(2rem,4vw,4rem);
}
.footer__brand img{ height:40px; margin-bottom:1.2rem; }
.footer__brand p{ font-family:var(--f-serif); font-style:italic; color:var(--cream-dim); max-width:28ch; }
.footer__col h4{
  font-size:.7rem; letter-spacing:.24em; text-transform:uppercase; color:var(--beige);
  margin-bottom:1rem; font-weight:600;
}
.footer__col p{ font-size:.92rem; color:var(--cream-dim); font-weight:300; line-height:1.7; }
.footer__col a:hover{ color:var(--cream); }
.footer__social{ display:flex; gap:1.2rem; margin-top:1.2rem; }
.footer__social a{
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cream);
  border-bottom:1px solid var(--line); padding-bottom:2px; transition:border-color .3s;
}
.footer__social a:hover{ border-color:var(--royal-glow); }
.footer__base{
  max-width:1300px; margin:clamp(3rem,6vw,5rem) auto 0; padding-top:1.6rem;
  border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:1rem;
  flex-wrap:wrap; font-size:.68rem; letter-spacing:.1em; color:#5b5850;
}
.footer__estamos{ font-family:var(--f-serif); font-style:italic; letter-spacing:.2em; color:var(--beige); }
.footer__powered{ font-size:.62rem; letter-spacing:.14em; color:#403e39; }

/* ========================================================================
   RESPONSIVE
   ======================================================================== */
@media (max-width:1000px){
  .nav__links{ display:none; }
  .stats__grid{ grid-template-columns:repeat(2,1fr); }
  .areas__grid{ grid-template-columns:repeat(2,1fr); }
  .footer__grid{ grid-template-columns:1fr 1fr; }
  .svc__cols{ grid-template-columns:1fr 1fr; }
  .svc__cols .consult-form{ grid-column:1 / -1; }
  .ss-form__packs{ grid-template-columns:repeat(2,1fr); }
  .ss-form__fields{ grid-template-columns:1fr 1fr; }
  .ss-form__fields .btn-submit{ grid-column:1 / -1; width:100%; }
  .team__grid{ grid-template-columns:repeat(2,1fr); }
  .profile__bio{ columns:1; }
}
@media (max-width:640px){
  .hero{ height:360vh; }
  .pillars{ height:440vh; }
  .stats__grid{ grid-template-columns:1fr 1fr; }
  .areas__grid{ grid-template-columns:1fr; }
  .footer__grid{ grid-template-columns:1fr; }
  .pillar__desc{ font-size:1rem; }
  .btn{ width:100%; }
  .nav__cta{ display:none; }
  .svc__cols{ grid-template-columns:1fr; }
  .ss-form__packs{ grid-template-columns:1fr; }
  .ss-form__fields{ grid-template-columns:1fr; }
  .team__grid{ grid-template-columns:1fr 1fr; }
}

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; }
}

/* ========================================================================
   MANUAL DE MARCA 2024 — typography calibration (Red Hat Display)
   Anton was condensed/400; Red Hat Display needs heavier weight and
   slightly smaller viewport sizes to fit the same compositions.
   ======================================================================== */
.section-title, .hero__title, .pillar__name, .stat__num, .preloader__word,
.member__name, .profile__name, .area-card h3, .consult-form h3, .pack__name,
.finale__title{ font-weight:800; }

.hero__title{ font-size:clamp(3rem,11.5vw,11rem); line-height:.9; letter-spacing:-.01em; }
.hero__title .line--serif{ font-size:clamp(2.2rem,8vw,7.6rem); font-weight:600; }
.section-title{ font-size:clamp(2.2rem,6.5vw,5.6rem); line-height:.98; }
.pillar__name{ font-size:clamp(2.5rem,7.5vw,6.6rem); line-height:.98; }
.stat__num{ font-size:clamp(2.3rem,5.2vw,4.4rem); }
.stat--word .stat__num{ font-size:clamp(1.8rem,4vw,3.2rem); }
.finale__title{ font-size:clamp(2.3rem,7vw,6.2rem); line-height:.95; }
.preloader__word{ font-size:clamp(1.9rem,5.5vw,3.4rem); letter-spacing:.3em; }
