/* =========================================================================
   ASISTENIO — DESIGN SYSTEM
   1. Tokens · 2. Reset · 3. Tipografía · 4. Layout · 5. Componentes
   6. Secciones · 7. Utilidades · 8. Responsive · 9. Movimiento
   ========================================================================= */

/* ---------- 1. TOKENS ---------------------------------------------------- */
:root{
  /* Color — primarios */
  --navy-900:#0b1f35;      /* midnight, fondo oscuro y texto de marca */
  --navy-800:#102c48;
  --navy-700:#17405f;
  --navy-600:#1f5478;
  --navy-100:#dde5ec;

  /* Color — acento mediterráneo */
  --teal-700:#245c58;
  --teal-600:#2f716c;
  --teal-500:#3d8b84;
  --teal-100:#dceae8;

  /* Color — cálidos */
  --sand-400:#d8c5a5;
  --sand-300:#e6d8bf;
  --sand-200:#f0e7d6;
  --sand-100:#f7f1e6;
  --ivory:#fcfaf6;

  /* Color — neutros */
  --charcoal:#22282e;
  --gray-700:#454c55;
  --gray-600:#5f6771;
  --gray-500:#69707a;
  --gray-300:#d9dce0;
  --gray-200:#e8eaed;
  --gray-100:#f3f4f6;
  --white:#ffffff;

  /* Estados */
  --success:#2c6e4f;
  --success-bg:#e7f2ec;
  --error:#a3352c;
  --error-bg:#fbeceb;

  /* Tipografía */
  --font-display:'DM Serif Display', Georgia, 'Times New Roman', serif;
  --font-body:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;

  --fs-xs:0.75rem;    /* 12 */
  --fs-sm:0.875rem;   /* 14 */
  --fs-base:1rem;     /* 16 */
  --fs-md:1.0625rem;  /* 17 */
  --fs-lg:1.25rem;    /* 20 */
  --fs-xl:1.5rem;     /* 24 */
  --fs-2xl:2rem;      /* 32 */
  --fs-3xl:2.5rem;    /* 40 */
  --fs-4xl:3.25rem;   /* 52 */

  /* Espaciado — base 8px */
  --s-1:8px;  --s-2:16px; --s-3:24px; --s-4:32px; --s-5:40px;
  --s-6:56px; --s-7:72px; --s-8:96px; --s-9:128px;

  /* Radios — contenidos */
  --r-sm:4px; --r-md:8px; --r-lg:14px; --r-pill:999px;

  /* Sombras — sutiles */
  --sh-sm:0 1px 2px rgba(11,31,53,.06), 0 1px 3px rgba(11,31,53,.05);
  --sh-md:0 10px 30px rgba(11,31,53,.08);
  --sh-lg:0 30px 70px rgba(11,31,53,.14);

  /* Layout */
  --maxw:1200px;
  --maxw-narrow:760px;
  --header-h:80px;
  --ease:cubic-bezier(.22,1,.36,1);
}

/* ---------- 2. RESET ----------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px);}
body{
  margin:0;background:var(--ivory);color:var(--charcoal);
  font-family:var(--font-body);font-size:var(--fs-base);line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,svg,video{max-width:100%;display:block;height:auto;}
a{color:inherit;text-decoration:none;}
button,input,select,textarea{font:inherit;color:inherit;}
ul,ol{margin:0;padding:0;list-style:none;}
p{margin:0 0 var(--s-2);}
:focus-visible{outline:2px solid var(--teal-600);outline-offset:3px;border-radius:2px;}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:2000;background:var(--navy-900);color:var(--white);
  padding:12px 20px;border-radius:0 0 var(--r-md) 0;font-size:var(--fs-sm);font-weight:600;
}
.skip-link:focus{left:0;}

/* ---------- 3. TIPOGRAFÍA ------------------------------------------------ */
h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;color:var(--navy-900);margin:0 0 var(--s-2);line-height:1.15;letter-spacing:-.01em;}
h1{font-size:clamp(2.15rem,1.4rem + 3.1vw,3.25rem);}
h2{font-size:clamp(1.75rem,1.25rem + 2vw,2.5rem);}
h3{font-size:clamp(1.3rem,1.1rem + .8vw,1.6rem);}
h4{font-size:var(--fs-lg);}
h5,h6{font-family:var(--font-body);font-weight:600;color:var(--navy-900);margin:0 0 var(--s-1);line-height:1.4;}
h5{font-size:var(--fs-md);}
h6{font-size:var(--fs-sm);}

.lead{font-size:clamp(1.02rem,.98rem + .3vw,1.18rem);color:var(--gray-700);line-height:1.65;}
.small{font-size:var(--fs-sm);color:var(--gray-600);}
.serif-accent{font-family:var(--font-display);font-style:italic;}

.eyebrow{
  display:flex;align-items:center;gap:12px;margin:0 0 var(--s-2);
  font-size:var(--fs-xs);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--teal-700);
}
.eyebrow::after{content:"";width:32px;height:1px;background:var(--sand-400);flex:none;}
.eyebrow.center{justify-content:center;}
.eyebrow .num{color:var(--gray-500);font-variant-numeric:tabular-nums;}

/* ---------- 4. LAYOUT ---------------------------------------------------- */
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding-inline:var(--s-3);}
.wrap-narrow{max-width:var(--maxw-narrow);margin:0 auto;}
section{padding-block:clamp(56px,7vw,112px);}
.section-tight{padding-block:clamp(24px,3vw,40px);}
.section-head{max-width:680px;margin-bottom:var(--s-6);}
.section-head.center{margin-inline:auto;text-align:center;}
.section-head.center .eyebrow{justify-content:center;}
.section-head p{color:var(--gray-600);margin-bottom:0;}
.grid{display:grid;gap:var(--s-3);}
.bg-sand{background:var(--sand-100);}
.bg-white{background:var(--white);}
.bg-navy{background:var(--navy-900);color:rgba(252,250,246,.82);}
.bg-navy h1,.bg-navy h2,.bg-navy h3,.bg-navy h5{color:var(--ivory);}
.bg-navy .eyebrow{color:var(--sand-300);}
.bg-navy .eyebrow::after{background:rgba(230,216,191,.4);}

/* ---------- 5. COMPONENTES ---------------------------------------------- */

/* 5.1 Botones */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 28px;border:1px solid transparent;border-radius:var(--r-sm);
  font-size:var(--fs-sm);font-weight:600;letter-spacing:.01em;cursor:pointer;
  transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),transform .25s var(--ease);
  text-align:center;
}
.btn svg{flex:none;transition:transform .25s var(--ease);}
.btn:hover svg{transform:translateX(3px);}
.btn-primary{background:var(--navy-900);color:var(--ivory);}
.btn-primary:hover{background:var(--navy-700);}
.btn-secondary{background:transparent;color:var(--navy-900);border-color:var(--gray-300);}
.btn-secondary:hover{border-color:var(--navy-900);background:var(--white);}
.btn-teal{background:var(--teal-600);color:var(--white);}
.btn-teal:hover{background:var(--teal-700);}
.btn-light{background:var(--ivory);color:var(--navy-900);}
.btn-light:hover{background:var(--sand-200);}
.btn-outline-light{background:transparent;color:var(--ivory);border-color:rgba(252,250,246,.4);}
.btn-outline-light:hover{background:rgba(252,250,246,.1);border-color:var(--ivory);}
.btn-sm{padding:11px 20px;font-size:var(--fs-xs);}
.btn-block{width:100%;}
.btn[disabled]{opacity:.6;cursor:not-allowed;}
.btn.is-loading{position:relative;color:transparent;}
.btn.is-loading::after{
  content:"";position:absolute;width:18px;height:18px;border-radius:50%;
  border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .7s linear infinite;
}
.btn-secondary.is-loading::after{border-color:rgba(11,31,53,.25);border-top-color:var(--navy-900);}
@keyframes spin{to{transform:rotate(360deg);}}

.link-arrow{
  display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--navy-900);
  border-bottom:1px solid transparent;padding-bottom:2px;transition:border-color .25s var(--ease);
}
.link-arrow svg{transition:transform .25s var(--ease);}
.link-arrow:hover{border-bottom-color:var(--teal-600);}
.link-arrow:hover svg{transform:translateX(4px);}

/* 5.2 Badges / pills */
.badge{
  display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--r-pill);
  background:var(--teal-100);color:var(--teal-700);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;
}
.badge-sand{background:var(--sand-200);color:var(--navy-800);}
.badge-outline{background:transparent;border:1px solid var(--gray-300);color:var(--gray-700);}

/* 5.3 Cards */
.card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);padding:var(--s-4);
  transition:border-color .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease);
  height:100%;display:flex;flex-direction:column;
}
.card:hover{border-color:var(--sand-400);box-shadow:var(--sh-md);transform:translateY(-3px);}
.card-icon{
  width:48px;height:48px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;
  background:var(--sand-200);color:var(--navy-800);margin-bottom:var(--s-3);
}
.card-icon.teal{background:var(--teal-100);color:var(--teal-700);}
.card-icon.navy{background:var(--navy-100);color:var(--navy-800);}
.card .card-num{
  font-family:var(--font-display);font-size:var(--fs-sm);color:var(--gray-500);letter-spacing:.08em;margin-bottom:var(--s-1);
}
.card ul.ticks{margin:var(--s-2) 0 var(--s-3);}
.card ul.ticks li{
  position:relative;padding-left:24px;font-size:var(--fs-sm);color:var(--gray-700);padding-block:5px;
}
.card ul.ticks li::before{
  content:"";position:absolute;left:0;top:14px;width:10px;height:1px;background:var(--teal-500);
}
.card .card-foot{margin-top:auto;padding-top:var(--s-2);}

/* 5.4 Formularios */
.field{margin-bottom:var(--s-3);}
.field label{display:block;font-size:var(--fs-sm);font-weight:600;color:var(--navy-900);margin-bottom:7px;}
.field .req{color:var(--teal-600);}
.field input,.field select,.field textarea{
  width:100%;padding:13px 15px;background:var(--white);border:1px solid var(--gray-300);border-radius:var(--r-sm);
  font-size:var(--fs-base);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.field textarea{min-height:130px;resize:vertical;}
.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%235f6771' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:42px;}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--teal-600);box-shadow:0 0 0 3px rgba(61,139,132,.16);
}
.field .hint{font-size:var(--fs-xs);color:var(--gray-500);margin-top:6px;}
.field .err{display:none;font-size:var(--fs-xs);color:var(--error);margin-top:6px;font-weight:500;}
.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--error);background:var(--error-bg);}
.field.has-error .err{display:block;}
.form-alert{padding:14px 18px;border-radius:var(--r-md);font-size:var(--fs-sm);margin-bottom:var(--s-3);display:none;}
.form-alert.success{background:var(--success-bg);border:1px solid #bcdcc9;color:var(--success);}
.form-alert.error{background:var(--error-bg);border:1px solid #eec6c2;color:var(--error);}
.form-alert.is-visible{display:block;}
.form-consent{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-xs);color:var(--gray-600);margin-bottom:var(--s-3);}
.form-consent input{width:16px;height:16px;flex:none;margin-top:3px;}

/* 5.5 Acordeón */
.accordion{border-top:1px solid var(--gray-200);}
.acc-item{border-bottom:1px solid var(--gray-200);}
.acc-trigger{
  width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-3);
  background:none;border:none;padding:22px 0;cursor:pointer;text-align:left;
  font-size:var(--fs-md);font-weight:600;color:var(--navy-900);
}
.acc-trigger:hover{color:var(--teal-700);}
.acc-icon{flex:none;width:22px;height:22px;position:relative;margin-top:4px;}
.acc-icon::before,.acc-icon::after{
  content:"";position:absolute;background:var(--teal-600);transition:transform .3s var(--ease),opacity .3s var(--ease);
}
.acc-icon::before{top:10px;left:2px;width:18px;height:1.5px;}
.acc-icon::after{top:2px;left:10px;width:1.5px;height:18px;}
.acc-trigger[aria-expanded="true"] .acc-icon::after{transform:rotate(90deg);opacity:0;}
.acc-panel{overflow:hidden;height:0;transition:height .35s var(--ease);}
.acc-panel-inner{padding:0 0 24px;color:var(--gray-700);max-width:62ch;}
.acc-panel-inner p:last-child{margin-bottom:0;}

/* 5.6 Breadcrumbs */
.breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:var(--fs-xs);color:var(--gray-500);padding-block:var(--s-3) 0;}
.breadcrumbs a:hover{color:var(--navy-900);text-decoration:underline;}
.breadcrumbs span[aria-current]{color:var(--gray-700);}

/* 5.7 Header */
.site-header{
  position:sticky;top:0;z-index:1000;background:rgba(252,250,246,.92);
  backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--gray-200);
  transition:box-shadow .3s var(--ease);
}
.site-header.is-scrolled{box-shadow:0 2px 16px rgba(11,31,53,.07);}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);height:var(--header-h);}
.logo img{height:30px;width:auto;}
.nav-main{display:flex;align-items:center;gap:var(--s-4);}
.nav-main a{
  font-size:var(--fs-sm);font-weight:500;color:var(--gray-700);position:relative;padding-block:6px;white-space:nowrap;
}
.nav-main a:hover,.nav-main a[aria-current="page"]{color:var(--navy-900);}
.nav-main a::after{
  content:"";position:absolute;left:0;bottom:0;height:1.5px;width:0;background:var(--teal-600);transition:width .25s var(--ease);
}
.nav-main a:hover::after,.nav-main a[aria-current="page"]::after{width:100%;}
.header-actions{display:flex;align-items:center;gap:var(--s-2);}

.lang{position:relative;}
.lang-btn{
  display:flex;align-items:center;gap:6px;padding:8px 12px;background:transparent;border:1px solid var(--gray-300);
  border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:600;cursor:pointer;color:var(--navy-900);
}
.lang-btn:hover{border-color:var(--navy-900);}
.lang-list{
  position:absolute;right:0;top:calc(100% + 8px);min-width:132px;background:var(--white);
  border:1px solid var(--gray-200);border-radius:var(--r-md);box-shadow:var(--sh-md);padding:6px;display:none;
}
.lang.is-open .lang-list{display:block;}
.lang-list a{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;border-radius:var(--r-sm);font-size:var(--fs-sm);}
.lang-list a:hover{background:var(--sand-100);}
.lang-list a[aria-current]{color:var(--teal-700);font-weight:600;}

.burger{display:none;width:44px;height:44px;background:none;border:1px solid var(--gray-300);border-radius:var(--r-sm);cursor:pointer;position:relative;}
.burger span{position:absolute;left:12px;width:18px;height:1.5px;background:var(--navy-900);transition:transform .3s var(--ease),opacity .3s var(--ease);}
.burger span:nth-child(1){top:15px;} .burger span:nth-child(2){top:21px;} .burger span:nth-child(3){top:27px;}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}

/* 5.8 Botón flotante WhatsApp + barra móvil */
.wa-float{
  position:fixed;right:20px;bottom:20px;z-index:900;width:56px;height:56px;border-radius:50%;
  background:var(--navy-900);color:var(--ivory);display:flex;align-items:center;justify-content:center;
  box-shadow:var(--sh-lg);transition:transform .25s var(--ease),background .25s var(--ease);
}
.wa-float:hover{transform:translateY(-3px);background:var(--teal-600);}
.mobile-bar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:950;background:var(--white);
  border-top:1px solid var(--gray-200);padding:10px 12px;gap:10px;box-shadow:0 -4px 20px rgba(11,31,53,.08);
}
.mobile-bar .btn{flex:1;padding:13px 10px;font-size:13px;line-height:1.25;}

/* ---------- 6. SECCIONES ------------------------------------------------ */

/* 6.1 Hero */
.hero{position:relative;padding-block:clamp(48px,6vw,84px) clamp(32px,4vw,56px);overflow:hidden;}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(720px 420px at 78% 8%, rgba(216,197,165,.28), transparent 62%),
    radial-gradient(560px 380px at 6% 92%, rgba(61,139,132,.10), transparent 60%);
}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(32px,5vw,72px);align-items:center;}
.hero h1{margin-bottom:var(--s-3);}
.hero h1 .accent{color:var(--teal-700);font-style:italic;}
.hero .lead{max-width:34em;}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:var(--s-4);}
.hero-visual{position:relative;}
.hero-visual .art{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-lg);}
.hero-note{
  position:absolute;left:-20px;bottom:-26px;background:var(--white);border:1px solid var(--gray-200);
  border-radius:var(--r-md);box-shadow:var(--sh-md);padding:16px 20px;max-width:250px;
}
.hero-note strong{display:block;font-size:var(--fs-sm);color:var(--navy-900);}
.hero-note span{font-size:var(--fs-xs);color:var(--gray-600);line-height:1.5;display:block;margin-top:2px;}

.trust-row{
  display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:clamp(48px,6vw,80px);
  border-top:1px solid var(--gray-200);border-bottom:1px solid var(--gray-200);
}
.trust-item{
  display:flex;align-items:flex-start;gap:12px;padding:22px 24px 22px 0;border-right:1px solid var(--gray-200);
  font-size:var(--fs-sm);color:var(--gray-700);
}
.trust-item:last-child{border-right:none;}
.trust-item svg{flex:none;color:var(--teal-600);margin-top:3px;}

/* 6.2 Prueba social */
.proof-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(32px,5vw,64px);align-items:center;}
.proof-points li{display:flex;gap:12px;padding:10px 0;font-size:var(--fs-sm);color:var(--gray-700);border-bottom:1px solid var(--gray-200);}
.proof-points li:last-child{border-bottom:none;}
.proof-points svg{flex:none;color:var(--teal-600);margin-top:4px;}

/* 6.3 Servicios */
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);}
.service-card{position:relative;overflow:hidden;}
.service-card::before{
  content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--teal-500);transition:width .4s var(--ease);
}
.service-card:hover::before{width:100%;}
.service-card.is-realestate::before{background:var(--sand-400);}
.service-card.is-admin::before{background:var(--navy-600);}

/* 6.4 Audiencias */
.audience-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-3);}
.audience-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);padding:var(--s-3);
  display:flex;flex-direction:column;gap:10px;transition:border-color .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease);
}
.audience-card:hover{border-color:var(--teal-500);box-shadow:var(--sh-md);transform:translateY(-3px);}
.audience-card h3{font-size:var(--fs-lg);margin:0;}
.audience-card p{font-size:var(--fs-sm);color:var(--gray-600);margin:0;}
.audience-card .link-arrow{margin-top:auto;padding-top:var(--s-2);}

/* 6.5 Proceso */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,56px);counter-reset:step;}
.step{position:relative;padding-top:var(--s-3);border-top:2px solid var(--sand-300);}
.step .step-num{font-family:var(--font-display);font-size:var(--fs-2xl);color:var(--sand-400);line-height:1;margin-bottom:var(--s-2);display:block;}
.step h3{font-size:var(--fs-lg);}
.step p{color:var(--gray-600);font-size:var(--fs-sm);margin:0;}

/* 6.6 Sobre nosotros */
.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,72px);align-items:center;}
.about-media{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-md);}
.about-media img{width:100%;height:auto;display:block;object-fit:cover;}
.about-points{margin:var(--s-3) 0;}
.about-points li{position:relative;padding-left:28px;padding-block:7px;font-size:var(--fs-sm);color:var(--gray-700);}
.about-points li::before{
  content:"";position:absolute;left:0;top:15px;width:14px;height:1px;background:var(--teal-500);
}

/* 6.7 Equipo */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-3);}
.team-card{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);overflow:hidden;transition:box-shadow .3s var(--ease),transform .3s var(--ease);}
.team-card:hover{box-shadow:var(--sh-md);transform:translateY(-3px);}
.team-photo{aspect-ratio:4/4.6;overflow:hidden;background:var(--sand-100);}
.team-photo img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease);}
.team-card:hover .team-photo img{transform:scale(1.04);}
.team-body{padding:var(--s-3);}
.team-body h3{font-size:var(--fs-md);font-family:var(--font-body);font-weight:600;margin-bottom:4px;}
.team-body .role{font-size:var(--fs-sm);color:var(--teal-700);font-weight:500;display:block;}
.team-body .dept{font-size:var(--fs-xs);color:var(--gray-500);display:block;margin-top:2px;}

/* 6.8 Por qué */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,3vw,40px);}
.why-item svg{color:var(--sand-300);margin-bottom:var(--s-2);}
.why-item h3{font-size:var(--fs-lg);}
.why-item p{font-size:var(--fs-sm);margin:0;}
.bg-navy .why-item p{color:rgba(252,250,246,.7);}

/* 6.9 Inmobiliario destacado */
.estate{position:relative;overflow:hidden;background:var(--navy-900);color:rgba(252,250,246,.82);}
.estate h2,.estate h3{color:var(--ivory);}
.estate .eyebrow{color:var(--sand-300);}
.estate .eyebrow::after{background:rgba(230,216,191,.4);}
.estate-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,64px);align-items:center;}
.estate-art{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-lg);}
.estate h2{max-width:22ch;}
.estate p{color:rgba(252,250,246,.72);max-width:46ch;}

/* 6.10 FAQ */
.faq-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(32px,5vw,64px);align-items:start;}

/* 6.11 Contacto */
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(32px,5vw,64px);align-items:start;}
.contact-info{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);
  padding:clamp(22px,2.6vw,32px);box-shadow:var(--sh-sm);
}
.contact-methods{display:flex;flex-direction:column;}
.contact-method{
  display:flex;gap:16px;align-items:flex-start;padding:16px 0;
}
.contact-method + .contact-method{border-top:1px solid var(--gray-200);}
.contact-method .ic{
  flex:none;width:44px;height:44px;border-radius:var(--r-pill);background:var(--sand-200);color:var(--navy-800);
  display:flex;align-items:center;justify-content:center;transition:transform .25s var(--ease);
}
.contact-method .ic.ic-teal{background:var(--teal-100);color:var(--teal-700);}
.contact-method .ic.ic-navy{background:var(--navy-100);color:var(--navy-800);}
.contact-method .ic.ic-sand{background:var(--sand-200);color:var(--navy-800);}
.contact-method:hover .ic{transform:translateY(-2px);}
.contact-method strong{display:block;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--gray-500);font-weight:600;}
.contact-method .val{font-size:var(--fs-md);font-weight:600;color:var(--navy-900);}
.contact-method a.val:hover{color:var(--teal-700);}
.contact-map{margin-bottom:var(--s-3);border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--gray-200);background:var(--white);box-shadow:var(--sh-sm);}
.contact-map iframe{display:block;width:100%;height:260px;border:0;filter:grayscale(.1) contrast(1.02);}
.contact-map .small{padding:12px 16px 14px;border-top:1px solid var(--gray-200);}
.contact-map .link-arrow{font-size:var(--fs-sm);}
.form-panel{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);padding:clamp(24px,3vw,40px);box-shadow:var(--sh-sm);}
.form-panel > .eyebrow{margin-bottom:var(--s-3);}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2);}

/* 6.12 Footer */
.site-footer{background:var(--navy-900);color:rgba(252,250,246,.62);padding-top:clamp(48px,6vw,80px);}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.1fr;gap:clamp(24px,4vw,48px);padding-bottom:var(--s-6);}
.site-footer img.flogo{height:26px;filter:brightness(0) invert(1);opacity:.92;margin-bottom:var(--s-2);}
.site-footer p{font-size:var(--fs-sm);max-width:34ch;}
.site-footer h4{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ivory);font-family:var(--font-body);font-weight:600;margin-bottom:var(--s-2);}
.site-footer li{margin-bottom:10px;font-size:var(--fs-sm);}
.site-footer a:hover{color:var(--ivory);}
.footer-bottom{
  display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;align-items:center;
  border-top:1px solid rgba(252,250,246,.12);padding-block:var(--s-3) var(--s-4);font-size:var(--fs-xs);
}
.footer-legal{display:flex;flex-wrap:wrap;gap:18px;}

/* 6.13 Página de servicio */
.page-hero{background:var(--sand-100);border-bottom:1px solid var(--gray-200);padding-block:var(--s-3) clamp(40px,5vw,72px);}
.page-hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,4vw,56px);align-items:center;margin-top:var(--s-3);}
.page-hero h1{margin-bottom:var(--s-2);}
.page-hero .lead{margin-bottom:var(--s-3);}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--s-2);}
.split{display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(28px,4vw,56px);align-items:start;}
.list-check li{position:relative;padding-left:30px;padding-block:9px;border-bottom:1px solid var(--gray-200);font-size:var(--fs-sm);color:var(--gray-700);}
.list-check li:last-child{border-bottom:none;}
.list-check li::before{
  content:"";position:absolute;left:2px;top:17px;width:12px;height:6px;border-left:1.5px solid var(--teal-600);
  border-bottom:1.5px solid var(--teal-600);transform:rotate(-45deg);
}
.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);}
.cta-band{background:var(--sand-200);border-radius:var(--r-lg);padding:clamp(28px,4vw,48px);display:flex;flex-wrap:wrap;gap:var(--s-3);align-items:center;justify-content:space-between;}
.cta-band h2{margin-bottom:6px;max-width:20ch;}
.cta-band p{margin:0;color:var(--gray-700);max-width:46ch;}

/* Contenido legal */
.legal-body{max-width:70ch;}
.legal-body h2{font-size:var(--fs-xl);margin-top:var(--s-5);}
.legal-body p,.legal-body li{color:var(--gray-700);font-size:var(--fs-md);}
.legal-body ul{list-style:disc;padding-left:22px;margin-bottom:var(--s-2);}
.placeholder-note{
  background:var(--sand-200);border-left:3px solid var(--sand-400);padding:16px 20px;border-radius:0 var(--r-md) var(--r-md) 0;
  font-size:var(--fs-sm);color:var(--gray-700);margin-bottom:var(--s-3);
}

/* 6.14 Preguntas frecuentes (faq/) */
.faq-hero{max-width:820px;margin-top:var(--s-3);}
.faq-hero h1{margin-bottom:var(--s-2);}
.faq-hero .faq-answer{margin-bottom:var(--s-2);color:var(--charcoal);}
.faq-cats a.badge:hover{border-color:var(--teal-600);color:var(--teal-700);}
.article-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.85fr);gap:clamp(32px,5vw,72px);align-items:start;}
.article-body{max-width:70ch;}
.article-body h2{font-size:var(--fs-xl);margin-top:var(--s-5);}
.article-body h2:first-child{margin-top:0;}
.article-body p,.article-body li{color:var(--gray-700);font-size:var(--fs-md);}
.article-body ul,.article-body ol{padding-left:22px;margin-bottom:var(--s-2);}
.article-body ul{list-style:disc;}
.article-body ol{list-style:decimal;}
.article-body li{margin-bottom:6px;}
.article-body a:not(.btn){color:var(--teal-700);border-bottom:1px solid var(--teal-100);}
.article-body a:not(.btn):hover{border-bottom-color:var(--teal-600);}
.article-body abbr[title]{text-decoration:underline dotted;cursor:help;}
.article-note{margin-top:var(--s-4);padding-top:var(--s-2);border-top:1px solid var(--gray-200);}
.article-aside{position:sticky;top:calc(var(--header-h) + 24px);display:grid;gap:var(--s-3);}
.article-aside .card{height:auto;}
.article-aside .card h3{font-size:var(--fs-lg);}
.faq-related li{padding-block:10px;border-bottom:1px solid var(--gray-200);font-size:var(--fs-sm);line-height:1.45;}
.faq-related li:last-child{border-bottom:none;}
.faq-related a:hover{color:var(--teal-700);}
.acc-panel-inner .link-arrow{margin-top:var(--s-1);font-size:var(--fs-sm);}
.cta-band .eyebrow{margin-bottom:var(--s-1);}
.cta-band .hero-cta{margin:0;}

/* ---------- 7. UTILIDADES ----------------------------------------------- */
.mt-0{margin-top:0;} .mt-1{margin-top:var(--s-1);} .mt-2{margin-top:var(--s-2);}
.mt-3{margin-top:var(--s-3);} .mt-4{margin-top:var(--s-4);} .mt-5{margin-top:var(--s-5);} .mt-6{margin-top:var(--s-6);}
.mb-0{margin-bottom:0;} .mb-2{margin-bottom:var(--s-2);} .mb-3{margin-bottom:var(--s-3);} .mb-4{margin-bottom:var(--s-4);}
.text-center{text-align:center;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ---------- 8. RESPONSIVE ------------------------------------------------ */
@media (max-width:1080px){
  .services-grid{grid-template-columns:repeat(2,1fr);}
  .audience-grid{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:repeat(2,1fr);}
  .team-grid{grid-template-columns:repeat(2,1fr);}
  .footer-grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:960px){
  .nav-main{
    position:fixed;top:var(--header-h);left:0;right:0;bottom:0;background:var(--ivory);
    flex-direction:column;align-items:stretch;gap:0;padding:var(--s-2) var(--s-3) var(--s-6);
    overflow-y:auto;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .25s var(--ease),transform .25s var(--ease);
  }
  .nav-main.is-open{opacity:1;transform:translateY(0);pointer-events:auto;}
  .nav-main a{padding:16px 4px;border-bottom:1px solid var(--gray-200);font-size:var(--fs-md);}
  .nav-main a::after{display:none;}
  .burger{display:block;}
  .header-actions .btn-primary{display:none;}
  .hero-grid,.about-grid,.proof-grid,.estate-grid,.faq-grid,.contact-grid,.page-hero-grid,.split{grid-template-columns:1fr;}
  .article-grid{grid-template-columns:1fr;}
  .article-aside{position:static;}
  .steps{grid-template-columns:1fr;gap:var(--s-3);}
  .trust-row{grid-template-columns:1fr 1fr;}
  .trust-item{padding-right:16px;}
  .trust-item:nth-child(2n){border-right:none;}
  .trust-item:nth-child(-n+2){border-bottom:1px solid var(--gray-200);}
  .hero-note{position:static;margin-top:var(--s-3);max-width:none;}
  .mobile-bar{display:flex;}
  .wa-float{bottom:84px;right:16px;width:50px;height:50px;}
  body{padding-bottom:74px;}
  .about-grid .about-media{order:-1;}
}
@media (max-width:680px){
  :root{--header-h:68px;}
  .services-grid,.audience-grid,.why-grid,.team-grid,.cols-2,.form-row{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;gap:var(--s-4);}
  .trust-row{grid-template-columns:1fr;}
  .trust-item{border-right:none;border-bottom:1px solid var(--gray-200);padding-right:0;}
  .trust-item:last-child{border-bottom:none;}
  .cta-band{flex-direction:column;align-items:flex-start;}
  .hero-cta .btn{width:100%;}
  .logo img{height:26px;}
}
@media (max-width:380px){
  .wrap{padding-inline:18px;}
  .card,.audience-card{padding:var(--s-3);}
  .btn{padding:14px 20px;}
  .mobile-bar .btn{font-size:11px;padding:12px 8px;}
}

/* ---------- 9. MOVIMIENTO ----------------------------------------------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.reveal.is-in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
  .reveal{opacity:1;transform:none;}
}

/* ---------- 10. NAVEGACIÓN CON SUBMENÚ ---------------------------------- */
.nav-item{position:relative;}
.nav-toggle-sub{
  display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:6px 4px;cursor:pointer;
  font-size:var(--fs-sm);font-weight:500;color:var(--gray-700);border-radius:var(--r-sm);
  transition:color .2s var(--ease);
}
.nav-toggle-sub:hover,.nav-toggle-sub[aria-expanded="true"]{color:var(--navy-900);}
.nav-toggle-sub svg{transition:transform .25s var(--ease);}
.nav-toggle-sub[aria-expanded="true"] svg{transform:rotate(180deg);}

.submenu{
  position:absolute;left:50%;transform:translateX(-50%) translateY(6px);top:calc(100% + 8px);
  min-width:540px;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);
  box-shadow:0 16px 40px rgba(11,31,53,.12), 0 2px 8px rgba(11,31,53,.06);padding:var(--s-3);
  opacity:0;pointer-events:none;transition:opacity .22s var(--ease),transform .22s var(--ease);
  z-index:60;
}
/* Invisible hover bridge between toggle button and dropdown */
.submenu::before{
  content:"";position:absolute;top:-14px;left:0;right:0;height:14px;background:transparent;
}

.nav-item.is-open .submenu{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0);}
@media (min-width:961px){
  .nav-item.has-sub:hover .submenu{
    opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0);
  }
  .nav-item.has-sub:hover .nav-toggle-sub svg{
    transform:rotate(180deg);
  }
  .nav-item.has-sub:hover .nav-toggle-sub{
    color:var(--navy-900);
  }
}

.submenu-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.submenu a{
  display:block;padding:10px 14px;border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--gray-700);
  transition:background .15s var(--ease),color .15s var(--ease);
}
.submenu a::after{display:none;}
.submenu a:hover,.submenu a:focus{background:var(--sand-100);color:var(--navy-900);}
.submenu a strong{display:block;font-weight:600;color:var(--navy-900);font-size:var(--fs-sm);transition:color .15s var(--ease);}
.submenu a:hover strong{color:var(--teal-600);}
.submenu a span{display:block;font-size:var(--fs-xs);color:var(--gray-500);margin-top:2px;line-height:1.35;}
.submenu-foot{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--gray-200);display:flex;justify-content:flex-end;}
.submenu-foot .link-arrow{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--teal-600);padding:6px 12px;border-radius:var(--r-sm);transition:background .15s var(--ease),color .15s var(--ease);}
.submenu-foot .link-arrow:hover{background:var(--teal-100);color:var(--teal-700);}
@media (max-width:960px){
  .nav-toggle-sub{width:100%;justify-content:space-between;padding:16px 4px;border-bottom:1px solid var(--gray-200);font-size:var(--fs-md);}
  .submenu{
    position:static;transform:none;min-width:0;border:none;box-shadow:none;padding:0 0 8px;background:transparent;
    opacity:1;pointer-events:auto;height:0;overflow:hidden;border-radius:0;
  }
  .nav-item.is-open .submenu{height:auto;transform:none;padding-block:8px;}
  .submenu-grid{grid-template-columns:1fr;gap:0;}
  .submenu a{padding:12px 16px;border-bottom:1px solid var(--gray-200);border-radius:0;}
}

/* Rejilla flexible para el índice de servicios */
.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:var(--s-3);}

/* ---------- Reseñas: estética de las fichas de Google ---------------------- */
.reviews-head{display:grid;grid-template-columns:1.25fr .75fr;gap:clamp(28px,4vw,56px);align-items:start;}

/* Panel de puntuación, al estilo del resumen de Google */
.gscore{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--sh-sm);text-align:center;}
.gscore-source{margin:0 0 var(--s-2);font-size:var(--fs-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gray-600);}
.gscore-value{margin:0;font-family:var(--font-display);font-size:3.25rem;line-height:1;color:var(--navy-900);}
.gscore-stars{display:flex;justify-content:center;gap:2px;margin:var(--s-1) 0 6px;color:#f5a623;}
.gscore-count{margin:0;font-size:var(--fs-sm);color:var(--gray-600);}
.gscore-bars{list-style:none;margin:var(--s-3) 0 0;padding:0;display:flex;flex-direction:column;gap:5px;}
.gscore-bars li{display:flex;align-items:center;gap:8px;}
.gscore-bars .gs-n{font-size:var(--fs-xs);color:var(--gray-600);width:10px;text-align:right;}
.gscore-bars svg{width:12px;height:12px;color:#f5a623;flex:none;}
.gs-bar{flex:1;height:9px;border-radius:99px;background:var(--gray-200);overflow:hidden;}
.gs-bar>span{display:block;height:100%;border-radius:99px;background:#f5a623;}
.gscore-dist{margin:var(--s-2) 0 0;color:var(--gray-600);}
.gscore .link-arrow{justify-content:center;width:100%;}

/* Carrusel de reseñas — funciona sin JS gracias a scroll-snap nativo; el
   JS solo añade flechas, puntos y sincronización del punto activo. */
/* Widget de Elfsight: oculto por defecto (empieza con `hidden`) hasta que el
   JS confirma que ha cargado contenido real; así nunca se ve un hueco vacío
   ni el widget se solapa con el bloque estático mientras carga. */
.reviews-embed{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);padding:var(--s-3);min-height:460px;margin-top:var(--s-5);}
.reviews-embed[hidden]{display:none;}
@media (max-width:960px){.reviews-embed{min-height:520px;}}

.reviews-carousel{position:relative;margin-top:var(--s-5);padding:0 clamp(0px,4vw,8px);}
.reviews-carousel[hidden]{display:none;}
.reviews-track{
  display:flex;align-items:flex-start;gap:var(--s-3);overflow-x:auto;scroll-snap-type:x mandatory;
  scroll-behavior:smooth;padding:4px 4px 14px;margin:-4px -4px 0;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;
}
/* align-items:flex-start es a propósito: sin él, un flex-row estira todas las
   tarjetas a la altura de la más larga (la reseña de Anatoly Basov, ~185
   palabras), dejando un hueco casi del mismo tono que el fondo bajo cada
   reseña corta. El recorte de texto de abajo evita además que esa reseña
   larga desentone por altura junto a las demás. */
.reviews-track::-webkit-scrollbar{display:none;}
.reviews-track:focus-visible{outline:2px solid var(--teal-600);outline-offset:4px;border-radius:var(--r-md);}
.review-card{
  scroll-snap-align:start;flex:0 0 86%;
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--r-lg);
  padding:var(--s-3);box-shadow:var(--sh-sm);display:flex;flex-direction:column;gap:var(--s-2);
}
@media (min-width:640px){.review-card{flex-basis:calc(50% - var(--s-3) / 2);}}
@media (min-width:1080px){.review-card{flex-basis:calc(33.333% - var(--s-3) * 2 / 3);}}

/* Recorte de reseñas largas, con «Leer más» solo cuando hace falta (el JS
   decide si el texto real supera las 6 líneas antes de mostrar el botón). */
.review-card blockquote p{
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;overflow:hidden;
}
.review-card.is-expanded blockquote p{-webkit-line-clamp:unset;overflow:visible;}
.review-more{
  align-self:flex-start;background:none;border:none;padding:0;margin-top:-4px;
  color:var(--teal-700);font-weight:600;font-size:var(--fs-xs);cursor:pointer;text-decoration:underline;
}
.review-more:hover{color:var(--teal-600);}

.carousel-arrow{
  position:absolute;top:calc(50% - 7px);z-index:2;width:44px;height:44px;border-radius:50%;
  background:var(--white);border:1px solid var(--gray-200);box-shadow:var(--sh-md);
  display:grid;place-items:center;color:var(--navy-900);cursor:pointer;
  transition:background .15s var(--ease),transform .15s var(--ease);
}
.carousel-arrow:hover{background:var(--sand-100);}
.carousel-arrow:active{transform:translateY(1px);}
.carousel-arrow[disabled]{opacity:.35;cursor:default;pointer-events:none;}
.carousel-arrow-prev{left:-14px;}
.carousel-arrow-next{right:-14px;}
@media (max-width:640px){
  .carousel-arrow{width:36px;height:36px;top:auto;bottom:-46px;}
  .carousel-arrow-prev{left:calc(50% - 52px);}
  .carousel-arrow-next{right:calc(50% - 52px);}
  .reviews-carousel{padding-bottom:52px;}
}

.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:var(--s-3);}
@media (max-width:640px){.carousel-dots{margin-top:0;position:absolute;bottom:8px;left:0;right:0;}}
.carousel-dot{width:8px;height:8px;padding:0;border-radius:50%;border:none;background:var(--gray-200);cursor:pointer;transition:background .15s var(--ease),transform .15s var(--ease);}
.carousel-dot:hover{background:var(--sand-400);}
.carousel-dot.is-active{background:var(--teal-600);transform:scale(1.3);}

.review-head{display:flex;align-items:center;gap:12px;}
.review-avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--white);font-weight:700;font-size:var(--fs-md);line-height:1;}
.av-1{background:var(--teal-600);} .av-2{background:var(--navy-700);}
.av-3{background:#b07d4a;} .av-4{background:var(--teal-700);}
.review-id{display:flex;flex-direction:column;gap:1px;min-width:0;}
.review-author{font-weight:600;color:var(--navy-900);font-size:var(--fs-sm);line-height:1.3;}
.review-srv{font-size:var(--fs-xs);color:var(--teal-700);text-transform:uppercase;letter-spacing:.07em;font-weight:600;}
.review-stars{display:flex;gap:2px;margin:0;color:#f5a623;line-height:1;}
.review-card blockquote{margin:0;}
.review-card blockquote p{margin:0;font-size:var(--fs-sm);color:var(--gray-700);line-height:1.65;}
.review-note{margin:auto 0 0;padding-top:var(--s-2);border-top:1px solid var(--gray-200);color:var(--gray-500);font-size:var(--fs-xs);}
.review-note:empty{display:none;}

/* Reseña suelta dentro de una página de servicio */
.review-inline{background:var(--white);border-left:3px solid var(--teal-600);border-radius:0 var(--r-md) var(--r-md) 0;padding:var(--s-3);margin-top:var(--s-3);}
.review-inline .review-stars{color:#f5a623;}
.review-inline .review-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin:var(--s-2) 0 0;padding-top:var(--s-2);border-top:1px solid var(--gray-200);}

@media (max-width:960px){
  .reviews-head{grid-template-columns:1fr;}
  .gscore{text-align:left;}
  .gscore-stars{justify-content:flex-start;}
}

/* ---------- LCP y CLS ------------------------------------------------------ */
/* .reveal parte de opacity:0 y tarda .7s en aparecer, lo que retrasaba el
   Largest Contentful Paint (la imagen del hero). Se excluye de la animacion
   solo la columna visual, no el texto: asi el intercambio de fuentes ocurre
   mientras el texto aun no es visible y no computa como desplazamiento. */
.hero-visual.reveal{opacity:1;transform:none;}
.page-hero-grid > .reveal:last-child{opacity:1;transform:none;}
/* La columna visual no debe moverse cuando cambia la altura del texto. */
.hero-grid,.page-hero-grid{align-items:start;}
/* El widget de resenas de Google se inserta despues de la carga: se reserva
   una altura realista para que no empuje el contenido inferior. */
@media (max-width:960px){}

/* ---------- Banner de consentimiento de cookies ---------------------------- */
/* position:fixed: no ocupa hueco en el flujo, así no genera desplazamiento. */
.cookie-banner{
  position:fixed;left:0;right:0;bottom:0;z-index:1500;
  background:var(--navy-900);color:var(--white);
  border-top:1px solid rgba(255,255,255,.14);
  box-shadow:0 -8px 30px rgba(11,31,53,.22);
}
.cookie-banner[hidden]{display:none;}
.cookie-inner{
  max-width:1180px;margin:0 auto;padding:18px clamp(18px,4vw,40px);
  display:flex;align-items:center;gap:clamp(16px,3vw,40px);
}
.cookie-title{margin:0 0 4px;font-weight:700;font-size:var(--fs-sm);color:var(--white);}
.cookie-text{margin:0;color:rgba(255,255,255,.78);line-height:1.6;max-width:72ch;}
.cookie-link{display:inline-block;margin-top:6px;color:var(--sand-300);text-decoration:underline;}
.cookie-link:hover{color:var(--white);}
.cookie-actions{display:flex;gap:10px;flex:none;margin-left:auto;}
.cookie-actions .btn{white-space:nowrap;}
.cookie-actions .btn-secondary{
  background:transparent;color:var(--white);border:1px solid rgba(255,255,255,.45);
}
.cookie-actions .btn-secondary:hover{background:rgba(255,255,255,.1);border-color:var(--white);}

@media (max-width:860px){
  .cookie-inner{flex-direction:column;align-items:stretch;gap:14px;padding-bottom:calc(18px + env(safe-area-inset-bottom));}
  .cookie-actions{margin-left:0;}
  .cookie-actions .btn{flex:1;}
}
/* Mientras se decide, se apartan los elementos fijos que taparían el banner */
.has-cookie-banner .wa-float{display:none;}
@media (max-width:960px){
  .has-cookie-banner .mobile-bar{display:none;}
  .has-cookie-banner body{padding-bottom:0;}
}
