/* ==========================================================================
   Gio Filio — Tu espacio ideal
   Sistema de diseño · Basado en el Manual de Marca oficial
   ========================================================================== */

/* ------------------------------------------------------------- 1. TOKENS */
:root{
  /* Paleta oficial */
  --navy:        #071F4A;
  --navy-deep:   #0B285E;
  --navy-700:    #10346f;
  --navy-300:    #6b7ea3;
  --navy-100:    #dfe4ee;
  --navy-050:    #f2f4f9;
  --white:       #FFFFFF;
  --ivory:       #F7F5F0;
  --beige:       #E8DDCF;
  --beige-soft:  #F3ECE2;
  --gold:        #B88E3E;
  --gold-soft:   #D9BE86;
  --gold-050:    #FAF5EA;
  --gold-ink:    #8C6A2F;

  --ink:         #0E1626;
  --ink-70:      #4A5468;
  --ink-50:      #737E92;
  --ink-30:      #A8B0BF;
  --line:        #E4E7EE;
  --line-soft:   #EFF1F5;

  --ok:          #1E7A5A;
  --alert:       #9A5B12;

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

  /* Escala */
  --step--2: clamp(.69rem, .68rem + .05vw, .73rem);
  --step--1: clamp(.80rem, .78rem + .09vw, .87rem);
  --step-0:  clamp(.94rem, .91rem + .14vw, 1.03rem);
  --step-1:  clamp(1.12rem, 1.06rem + .28vw, 1.32rem);
  --step-2:  clamp(1.35rem, 1.24rem + .52vw, 1.75rem);
  --step-3:  clamp(1.62rem, 1.43rem + .88vw, 2.35rem);
  --step-4:  clamp(1.94rem, 1.63rem + 1.44vw, 3.15rem);
  --step-5:  clamp(2.30rem, 1.80rem + 2.30vw, 4.25rem);

  /* Espacio */
  --sp-1: .25rem; --sp-2: .5rem;  --sp-3: .75rem; --sp-4: 1rem;
  --sp-5: 1.5rem; --sp-6: 2rem;   --sp-7: 3rem;   --sp-8: 4rem;
  --sp-9: 6rem;   --sp-10: 8rem;

  /* Radio y sombra — suaves, nunca duras */
  --r-xs: 4px; --r-sm: 8px; --r-md: 12px; --r-lg: 18px; --r-xl: 26px; --r-full: 999px;
  --sh-1: 0 1px 2px rgba(7,31,74,.045), 0 1px 3px rgba(7,31,74,.03);
  --sh-2: 0 2px 8px rgba(7,31,74,.05), 0 1px 3px rgba(7,31,74,.03);
  --sh-3: 0 6px 24px rgba(7,31,74,.07), 0 2px 6px rgba(7,31,74,.035);
  --sh-4: 0 14px 44px rgba(7,31,74,.09), 0 4px 12px rgba(7,31,74,.04);

  --header-h: 88px;
  --wrap: 1280px;
  --wrap-narrow: 760px;

  --ease: cubic-bezier(.22,.61,.36,1);
  --t-fast: .18s var(--ease);
  --t: .28s var(--ease);
}

@media (max-width:900px){ :root{ --header-h: 68px; } }

/* --------------------------------------------------------- 2. RESET BASE */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 16px); }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}
body{
  margin:0; background:var(--white); color:var(--ink);
  font-family:var(--font-body); font-size:var(--step-0); line-height:1.65;
  font-feature-settings:"kern","liga","cv05";
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video{ max-width:100%; display:block; }
/* Tamaño por defecto de los iconos SVG en línea (las reglas de componente lo sobrescriben) */
svg{ width:1.15em; height:1.15em; flex:0 0 auto; }
img{ height:auto; background:var(--navy-050); }
a{ color:var(--navy); text-decoration:none; }
a:hover{ color:var(--navy-deep); }
button,input,select,textarea{ font:inherit; color:inherit; }
button{ background:none; border:0; cursor:pointer; }
h1,h2,h3,h4,h5{ font-family:var(--font-display); font-weight:500; line-height:1.14; letter-spacing:-.015em; color:var(--navy); margin:0 0 .5em; }
h1{ font-size:var(--step-5); } h2{ font-size:var(--step-4); }
h3{ font-size:var(--step-2); } h4{ font-size:var(--step-1); } h5{ font-size:var(--step-0); }
p{ margin:0 0 1em; }
ul,ol{ margin:0 0 1em; padding-left:1.15em; }
hr{ border:0; border-top:1px solid var(--line); margin:var(--sp-6) 0; }
::selection{ background:var(--navy); color:#fff; }

:focus-visible{ outline:2.5px solid var(--gold); outline-offset:3px; border-radius:var(--r-xs); }
.skip-link{
  position:absolute; left:12px; top:-60px; z-index:9999; background:var(--navy); color:#fff;
  padding:.7rem 1.1rem; border-radius:var(--r-sm); transition:top var(--t-fast);
}
.skip-link:focus{ top:12px; color:#fff; }
.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;
}

/* ------------------------------------------------------------ 3. LAYOUT */
.wrap{ width:min(100% - 2.5rem, var(--wrap)); margin-inline:auto; }
.wrap-narrow{ width:min(100% - 2.5rem, var(--wrap-narrow)); margin-inline:auto; }
@media (max-width:640px){ .wrap,.wrap-narrow{ width:calc(100% - 2rem); } }
.section{ padding-block:var(--sp-9); }
.section-sm{ padding-block:var(--sp-7); }
.section--ivory{ background:var(--ivory); }
.section--beige{ background:var(--beige-soft); }
.section--navy{ background:var(--navy); color:#fff; }
.section--navy h1,.section--navy h2,.section--navy h3,.section--navy h4{ color:#fff; }
.section--navy p{ color:rgba(255,255,255,.82); }

.grid{ display:grid; gap:var(--sp-5); }
.grid-2{ grid-template-columns:repeat(2,1fr); }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.grid-4{ grid-template-columns:repeat(4,1fr); }
@media (max-width:1040px){ .grid-4{ grid-template-columns:repeat(2,1fr); } .grid-3{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:700px){ .grid-2,.grid-3,.grid-4{ grid-template-columns:1fr; } }

.stack > * + *{ margin-top:var(--sp-4); }
.flex{ display:flex; gap:var(--sp-3); }
.flex-between{ display:flex; align-items:center; justify-content:space-between; gap:var(--sp-4); }
.flex-wrap{ flex-wrap:wrap; }
.center{ text-align:center; }
.mt-0{margin-top:0}.mb-0{margin-bottom:0}

/* ------------------------------------------------- 4. TIPOGRAFÍA UTILIDAD */
.eyebrow{
  font-family:var(--font-display); font-size:var(--step--1); font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; color:var(--gold-ink); margin:0 0 var(--sp-3);
  display:flex; align-items:center; gap:.75rem;
}
.eyebrow::after{ content:""; flex:0 0 34px; height:1px; background:var(--gold-soft); }
.eyebrow--center{ justify-content:center; }
.eyebrow--center::before{ content:""; flex:0 0 34px; height:1px; background:var(--gold-soft); }
.section--navy .eyebrow{ color:var(--gold-soft); }
.lead{ font-size:var(--step-1); color:var(--ink-70); line-height:1.6; }
.section--navy .lead{ color:rgba(255,255,255,.8); }
.muted{ color:var(--ink-50); }
.small{ font-size:var(--step--1); }
.tiny{ font-size:var(--step--2); }
.rule-gold{ width:52px; height:2px; background:var(--gold); border:0; margin:var(--sp-4) 0; }
.rule-gold--center{ margin-inline:auto; }
.headline-serifless{ font-family:var(--font-display); font-weight:400; }
.text-navy{ color:var(--navy); } .text-gold{ color:var(--gold-ink); }

/* ------------------------------------------------------------ 5. BOTONES */
.btn{
  --btn-bg:var(--navy); --btn-fg:#fff; --btn-bd:var(--navy);
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  background:var(--btn-bg); color:var(--btn-fg); border:1px solid var(--btn-bd);
  font-family:var(--font-display); font-size:var(--step-0); font-weight:500; letter-spacing:.02em;
  padding:.82rem 1.5rem; border-radius:var(--r-full); cursor:pointer;
  transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
  text-align:center; line-height:1.2; white-space:nowrap;
}
.btn:hover{ --btn-bg:var(--navy-deep); --btn-bd:var(--navy-deep); color:#fff; transform:translateY(-1px); box-shadow:var(--sh-2); }
.btn:active{ transform:translateY(0); }
.btn svg{ width:1.05em; height:1.05em; }
.btn--wa svg,.wa-fab svg{ width:1.25em; height:1.25em; fill:currentColor; }
.btn--gold{ --btn-bg:transparent; --btn-fg:var(--gold-ink); --btn-bd:var(--gold); }
.btn--gold:hover{ --btn-bg:var(--gold); --btn-fg:#fff; --btn-bd:var(--gold); color:#fff; }
.btn--gold-solid{ --btn-bg:var(--gold); --btn-fg:#fff; --btn-bd:var(--gold); }
.btn--gold-solid:hover{ --btn-bg:var(--gold-ink); --btn-bd:var(--gold-ink); color:#fff; }
.btn--ghost{ --btn-bg:transparent; --btn-fg:var(--navy); --btn-bd:var(--navy-100); }
.btn--ghost:hover{ --btn-bg:var(--navy-050); --btn-fg:var(--navy); --btn-bd:var(--navy-300); color:var(--navy); }
.btn--light{ --btn-bg:#fff; --btn-fg:var(--navy); --btn-bd:#fff; }
.btn--light:hover{ --btn-bg:var(--ivory); --btn-fg:var(--navy); --btn-bd:var(--ivory); color:var(--navy); }
.btn--outline-light{ --btn-bg:transparent; --btn-fg:#fff; --btn-bd:rgba(255,255,255,.45); }
.btn--outline-light:hover{ --btn-bg:rgba(255,255,255,.12); --btn-fg:#fff; --btn-bd:#fff; color:#fff; }
.btn--wa{ --btn-bg:#1FA855; --btn-fg:#fff; --btn-bd:#1FA855; font-family:var(--font-body); font-weight:600; letter-spacing:0; }
.btn--wa:hover{ --btn-bg:#17904a; --btn-bd:#17904a; }
.wa-fab .wa-text{ font-family:var(--font-body); font-weight:600; letter-spacing:0; }
.mobile-nav-foot .btn:not(.btn--wa){ font-family:var(--font-body); font-weight:700; letter-spacing:0; }
.btn--sm{ padding:.55rem 1.05rem; font-size:var(--step--1); }
.btn--icon{ padding:.55rem; aspect-ratio:1; gap:0; }
.btn--icon svg{ width:1.15em; height:1.15em; }
.btn--lg{ padding:1rem 1.9rem; font-size:var(--step-1); }
.btn--block{ width:100%; }
.btn[disabled]{ opacity:.45; cursor:not-allowed; transform:none; }
.link-arrow{
  font-family:var(--font-display); font-weight:500; color:var(--navy);
  display:inline-flex; align-items:center; gap:.45rem; border-bottom:1px solid var(--navy-100);
  padding-bottom:2px; transition:gap var(--t-fast), border-color var(--t-fast);
}
.link-arrow:hover{ gap:.75rem; border-color:var(--gold); }
.link-arrow svg{ width:15px; height:15px; }

/* ------------------------------------------------------------- 6. BADGES */
.badge{
  display:inline-flex; align-items:center; gap:.3rem;
  font-family:var(--font-display); font-size:var(--step--2); font-weight:500;
  letter-spacing:.09em; text-transform:uppercase;
  padding:.34rem .68rem; border-radius:var(--r-full); background:var(--navy); color:#fff;
  line-height:1.3; white-space:nowrap;
}
.badge--venta{ background:var(--navy); }
.badge--renta{ background:var(--navy-deep); }
.badge--nueva{ background:var(--ok); }
.badge--exclusiva{ background:var(--gold); }
.badge--oportunidad{ background:var(--alert); }
.badge--preventa{ background:#3F4E6B; }
.badge--entrega-inmediata{ background:#2C6E8F; }
.badge--outline{ background:transparent; color:var(--navy); border:1px solid var(--navy-100); }
.badge--demo{ background:var(--beige); color:var(--navy); letter-spacing:.14em; }
.chip{
  display:inline-flex; align-items:center; gap:.4rem; white-space:nowrap;
  padding:.42rem .85rem; border:1px solid var(--line); border-radius:var(--r-full);
  font-size:var(--step--1); color:var(--ink-70); background:#fff;
  transition:border-color var(--t-fast), color var(--t-fast), background var(--t-fast);
}
a.chip:hover{ border-color:var(--navy-300); color:var(--navy); }
.chip--active{ background:var(--navy); border-color:var(--navy); color:#fff; }
.chip--gold{ background:var(--gold-050); border-color:var(--gold-soft); color:#7c5d20; }

/* ------------------------------------------------- 7. AVISO DEMO GLOBAL */
.demo-bar{
  background:var(--beige); color:var(--navy); text-align:center;
  font-size:var(--step--1); padding:.5rem 1rem; letter-spacing:.01em;
  position:relative; z-index:60;
}
.demo-short{ display:none; }
@media (max-width:720px){ .demo-long{ display:none; } .demo-short{ display:inline; } .demo-bar{ font-size:var(--step--2); padding:.45rem .75rem; } }
.demo-bar strong{ font-family:var(--font-display); letter-spacing:.1em; text-transform:uppercase; font-size:var(--step--2); }

/* ------------------------------------------------------------- 8. HEADER */
.site-header{
  position:sticky; top:0; z-index:200; background:#fff;
  border-bottom:1px solid var(--line-soft);
  transition:box-shadow var(--t-fast), border-color var(--t-fast);
}
.site-header.is-stuck{ box-shadow:var(--sh-2); border-color:transparent; }
.header-inner{
  height:var(--header-h); display:flex; align-items:center; gap:var(--sp-5);
  width:min(100% - 2.5rem, 1440px); margin-inline:auto;
}
@media (max-width:640px){ .header-inner{ width:calc(100% - 2rem); gap:var(--sp-3); } }
.brand{ display:flex; align-items:center; gap:14px; flex:0 0 auto; }
.brand-icon{ height:52px; width:auto; background:transparent; }
.brand-word{ height:54px; width:auto; background:transparent; }
@media (max-width:900px){ .brand-icon{ height:44px; } .brand-word{ display:none; } }
.nav-main{ display:flex; align-items:center; gap:.15rem; margin-left:auto; }
.nav-main a{
  font-family:var(--font-display); font-size:var(--step-0); font-weight:400; color:var(--navy);
  padding:.55rem .78rem; border-radius:var(--r-sm); position:relative; transition:color var(--t-fast);
}
.nav-main a::after{
  content:""; position:absolute; left:.78rem; right:.78rem; bottom:.28rem; height:1.5px;
  background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform var(--t);
}
.nav-main a:hover::after,.nav-main a[aria-current="page"]::after{ transform:scaleX(1); }
.nav-main a[aria-current="page"]{ font-weight:500; }
.nav-item{ position:relative; display:flex; align-items:center; }
.nav-item > a{ padding-right:1.5rem; }
.nav-caret{
  position:absolute; right:.2rem; top:50%; transform:translateY(-50%) rotate(90deg);
  width:16px; height:16px; display:grid; place-items:center; color:var(--ink-30);
  pointer-events:none; transition:transform var(--t-fast);
}
.nav-caret svg{ width:11px; height:11px; }
.nav-item:hover .nav-caret,.nav-item:focus-within .nav-caret{ transform:translateY(-50%) rotate(270deg); }
.nav-dropdown{
  position:absolute; top:100%; left:0; padding:.85rem .4rem .4rem; min-width:230px;
  background:#fff; border:1px solid var(--line-soft); border-radius:var(--r-md); box-shadow:var(--sh-3);
  opacity:0; visibility:hidden; transform:translateY(4px); pointer-events:none;
  transition:opacity var(--t-fast), transform var(--t-fast), visibility var(--t-fast); z-index:210;
}
.nav-item:hover .nav-dropdown,.nav-item:focus-within .nav-dropdown{
  opacity:1; visibility:visible; transform:translateY(0); pointer-events:auto;
}
.nav-dropdown a{
  display:block; padding:.6rem .75rem; border-radius:var(--r-sm);
  font-family:var(--font-body); font-size:var(--step--1); font-weight:400;
  color:var(--ink-70); white-space:nowrap;
}
.nav-dropdown a::after{ content:none; }
.nav-dropdown a:hover{ background:var(--navy-050); color:var(--navy); }
.header-actions{ display:flex; align-items:center; gap:var(--sp-3); flex:0 0 auto; }
.icon-btn{
  position:relative; width:44px; height:44px; border-radius:var(--r-full);
  display:grid; place-items:center; border:1px solid var(--line); color:var(--navy);
  transition:border-color var(--t-fast), background var(--t-fast);
}
.icon-btn:hover{ border-color:var(--navy-300); background:var(--navy-050); }
.icon-btn svg{ width:19px; height:19px; }
.icon-btn .count{
  position:absolute; top:-4px; right:-4px; min-width:19px; height:19px; padding:0 5px;
  background:var(--gold); color:#fff; border-radius:var(--r-full);
  font-size:10px; font-weight:700; display:grid; place-items:center; line-height:1;
  border:2px solid #fff;
}
.icon-btn .count[data-count="0"]{ display:none; }
.burger{ display:none; width:44px; height:44px; border-radius:var(--r-full); border:1px solid var(--navy-100); background:var(--navy-050); place-items:center; color:var(--navy); }
.burger svg{ width:20px; height:20px; }
@media (max-width:1080px){
  .nav-main{ display:none; }
  .burger{ display:grid; }
  .header-actions .btn{ display:none; }
}
/* Menú móvil */
.mobile-nav{
  position:fixed; inset:0; z-index:300; background:#fff;
  transform:translateX(100%); transition:transform var(--t); display:flex; flex-direction:column;
  visibility:hidden;
}
.mobile-nav.is-open{ transform:translateX(0); visibility:visible; }
.mobile-nav-head{ height:var(--header-h); display:flex; align-items:center; justify-content:space-between; padding-inline:1rem; border-bottom:1px solid var(--line-soft); }
.mobile-nav-body{ padding:var(--sp-5) 1.25rem var(--sp-8); overflow-y:auto; flex:1; }
.mobile-nav-body a{
  display:flex; align-items:center; justify-content:space-between;
  font-family:var(--font-display); font-size:var(--step-2); color:var(--navy);
  padding:.85rem 0; border-bottom:1px solid var(--line-soft);
}
.mobile-nav-body a svg{ width:16px; height:16px; color:var(--ink-30); }
.mnav-acc{ border-bottom:1px solid var(--line-soft); }
.mnav-acc summary{
  display:flex; align-items:center; justify-content:space-between; list-style:none; cursor:pointer;
  font-family:var(--font-display); font-size:var(--step-2); color:var(--navy); padding:.85rem 0;
}
.mnav-acc summary::-webkit-details-marker{ display:none; }
.mnav-acc summary::after{
  content:""; width:9px; height:9px; border-right:1.6px solid var(--ink-30); border-bottom:1.6px solid var(--ink-30);
  transform:rotate(45deg); transition:transform var(--t-fast); margin-right:2px; flex:0 0 auto;
}
.mnav-acc[open] summary::after{ transform:rotate(225deg); margin-top:4px; }
.mnav-acc-body{ display:flex; flex-direction:column; padding:0 0 1rem; }
.mnav-acc-body a{
  border-bottom:none; padding:.6rem .75rem; font-family:var(--font-body); font-size:var(--step-0);
  color:var(--ink-70); background:var(--navy-050); border-radius:var(--r-sm); margin-bottom:.4rem;
}
.mnav-acc-body a:last-child{ margin-bottom:0; }
.mobile-nav-foot{ padding:1.25rem; border-top:1px solid var(--line-soft); display:grid; gap:.6rem; background:var(--ivory); }

/* -------------------------------------------------------------- 9. HERO */
.hero{ position:relative; background:var(--navy); color:#fff; overflow:hidden; }
.hero-media{ position:absolute; inset:0; }
[data-hero-carousel] picture{ position:absolute; inset:0; opacity:0; transition:opacity 1.4s ease; }
[data-hero-carousel] picture.is-active{ opacity:1; }
.hero-media img{ width:100%; height:100%; object-fit:cover; }
.hero-media::after{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(7,31,74,.58) 0%, rgba(7,31,74,.40) 42%, rgba(7,31,74,.68) 100%);
}
/* Los heroes cortos (fichas de colonia, alcaldia, etc.) no llegan a mostrar
   la franja clara del degradado de arriba — con menos altura, el mismo
   degradado pensado para el hero alto del home se ve casi solido. Se usa
   un overlay plano y mas suave ahi para que la foto se note. */
.hero--page .hero-media::after{
  background:rgba(7,31,74,.52);
}
.hero-inner{ position:relative; z-index:2; padding-block:clamp(3.5rem,9vw,7rem) clamp(2.5rem,6vw,4.5rem); }
.hero h1{ color:#fff; max-width:16ch; margin-bottom:var(--sp-4); font-weight:400; }
.hero .lead{ color:rgba(255,255,255,.86); max-width:56ch; margin-bottom:var(--sp-6); }
.hero-eyebrow{ color:var(--gold-soft); }
.hero-highlight{
  display:inline-flex; align-items:center; gap:.5rem; color:#fff;
  background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.28);
  border-radius:var(--r-full); padding:.5rem 1rem; margin-bottom:var(--sp-4);
  font-family:var(--font-body); font-size:var(--step--1); font-weight:600;
  transition:background var(--t-fast), opacity .5s ease, visibility 0s .5s;
  opacity:0; visibility:hidden;
}
/* Se reserva el espacio siempre (nunca se saca del flujo) para que al
   aparecer/desaparecer el highlight entre slides no empuje el buscador
   ni las estadisticas de abajo — solo cambia de opacidad. */
.hero-highlight.is-visible{ opacity:1; visibility:visible; transition:background var(--t-fast), opacity .5s ease; }
.hero-highlight:hover{ background:rgba(255,255,255,.24); color:#fff; }
.hero-highlight::after{ content:"→"; }
.hero-stats{ display:flex; flex-wrap:wrap; gap:var(--sp-6); margin-top:var(--sp-6); padding-top:var(--sp-5); border-top:1px solid rgba(255,255,255,.16); }
.hero-stat b{ display:block; font-family:var(--font-display); font-size:var(--step-2); font-weight:400; color:#fff; }
.hero-stat span{ font-size:var(--step--1); color:rgba(255,255,255,.66); letter-spacing:.06em; text-transform:uppercase; }
/* Hero secundario (páginas internas) */
.hero--page{ padding:0; }
.hero--page .hero-inner{ padding-block:clamp(2.5rem,6vw,4.5rem); }
.hero--page h1{ max-width:22ch; }
.hero--compact .hero-inner{ padding-block:clamp(2rem,4.5vw,3.25rem); }
.hero--light{ background:var(--ivory); color:var(--ink); }
.hero--light h1{ color:var(--navy); }
.hero--light .lead{ color:var(--ink-70); }

/* --------------------------------------------------------- 10. BUSCADOR */
.searchbox{
  background:#fff; border-radius:var(--r-lg); box-shadow:var(--sh-4);
  padding:var(--sp-2); position:relative; z-index:5;
}
.search-tabs{ display:flex; gap:.25rem; padding:.35rem .35rem 0; }
.search-tab{
  font-family:var(--font-display); font-size:var(--step-0); font-weight:500; color:var(--ink-50);
  padding:.65rem 1.35rem; border-radius:var(--r-md) var(--r-md) 0 0; position:relative;
  transition:color var(--t-fast), background var(--t-fast);
}
.search-tab:hover{ color:var(--navy); }
.search-tab[aria-selected="true"]{ color:var(--navy); background:var(--navy-050); }
.search-tab[aria-selected="true"]::after{
  content:""; position:absolute; left:1.35rem; right:1.35rem; bottom:0; height:2px; background:var(--gold);
}
.search-fields{
  display:grid; grid-template-columns:1.7fr 1.1fr 1.2fr .9fr auto; gap:.4rem;
  padding:.55rem .45rem .45rem; align-items:end;
}
.field{ display:flex; flex-direction:column; gap:.25rem; min-width:0; position:relative; }
.field > label{
  font-size:var(--step--2); font-weight:600; letter-spacing:.09em; text-transform:uppercase;
  color:var(--ink-50); padding-left:.85rem;
}
.field input,.field select{
  width:100%; height:48px; padding:0 .9rem; border:1px solid var(--line); border-radius:var(--r-md);
  background:#fff; font-size:var(--step-0); color:var(--ink); transition:border-color var(--t-fast), box-shadow var(--t-fast);
  appearance:none;
}
.field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23737E92' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .75rem center; background-size:16px; padding-right:2.2rem;
}
.field input:focus,.field select:focus{ outline:none; border-color:var(--navy-300); box-shadow:0 0 0 3px rgba(7,31,74,.07); }
.field-pair{ display:grid; grid-template-columns:1fr 1fr; gap:.35rem; }
.search-actions{ display:flex; gap:.4rem; }
.search-extra{ display:flex; align-items:center; justify-content:space-between; padding:.15rem .95rem .6rem; gap:1rem; flex-wrap:wrap; }
@media (max-width:1080px){
  .search-fields{ grid-template-columns:1fr 1fr; }
  .search-actions{ grid-column:1/-1; }
  .search-actions .btn{ flex:1; }
}
@media (max-width:560px){ .search-fields{ grid-template-columns:1fr; } }

/* Autocomplete */
.ac-panel{
  position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:40;
  background:#fff; border:1px solid var(--line); border-radius:var(--r-md); box-shadow:var(--sh-4);
  max-height:330px; overflow-y:auto; padding:.35rem; display:none;
}
.ac-panel.is-open{ display:block; }
.ac-group{ font-size:var(--step--2); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-30); padding:.6rem .75rem .3rem; }
.ac-item{
  display:flex; align-items:center; gap:.65rem; width:100%; text-align:left;
  padding:.6rem .75rem; border-radius:var(--r-sm); color:var(--ink); font-size:var(--step-0);
}
.ac-item:hover,.ac-item.is-active{ background:var(--navy-050); }
.ac-item svg{ width:16px; height:16px; color:var(--ink-30); flex:0 0 auto; }
.ac-item .ac-sub{ color:var(--ink-50); font-size:var(--step--1); margin-left:auto; }

/* -------------------------------------------------- 11. PROPERTY CARD */
.card-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:var(--sp-5); }
.results-col .card-grid{ grid-template-columns:repeat(auto-fill,minmax(246px,1fr)); gap:var(--sp-4); }
.pcard{
  position:relative; background:#fff; border:1px solid var(--line-soft); border-radius:var(--r-lg);
  overflow:hidden; display:flex; flex-direction:column;
  transition:box-shadow var(--t), transform var(--t), border-color var(--t);
}
.pcard:hover{ box-shadow:var(--sh-3); transform:translateY(-3px); border-color:var(--line); }
.pcard-media{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--navy-050); }
.pcard-media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.pcard:hover .pcard-media img{ transform:scale(1.045); }
.pcard-badges{ position:absolute; top:.75rem; left:.75rem; display:flex; gap:.35rem; flex-wrap:wrap; max-width:calc(100% - 4.5rem); }
.pcard-fav{
  position:absolute; top:.7rem; right:.7rem; width:38px; height:38px; border-radius:var(--r-full);
  background:rgba(255,255,255,.94); display:grid; place-items:center; color:var(--navy);
  box-shadow:var(--sh-2); transition:background var(--t-fast), transform var(--t-fast); z-index:3;
}
.pcard-fav:hover{ background:#fff; transform:scale(1.08); }
.pcard-fav svg{ width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.8; }
.pcard-fav.is-on{ color:#C6402F; }
.pcard-fav.is-on svg{ fill:currentColor; stroke:currentColor; }
.pcard-body{ padding:1.05rem 1.15rem 1.15rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.pcard-price{ font-family:var(--font-display); font-size:var(--step-2); font-weight:500; color:var(--navy); line-height:1.1; }
.pcard-price .cur{ font-size:var(--step--1); color:var(--ink-50); font-weight:400; letter-spacing:.06em; }
.pcard-price .per{ font-size:var(--step--1); color:var(--ink-50); font-weight:400; }
.pcard-title{ font-family:var(--font-display); font-size:var(--step-0); font-weight:500; color:var(--navy); margin:0; line-height:1.35; }
.pcard-loc{ font-size:var(--step--1); color:var(--ink-50); display:flex; align-items:center; gap:.35rem; }
.pcard-loc svg{ width:14px; height:14px; flex:0 0 auto; }
.pcard-specs{
  display:flex; flex-wrap:wrap; gap:.3rem .55rem; font-size:var(--step--1); color:var(--ink-70);
  padding-top:.6rem; border-top:1px solid var(--line-soft); margin-top:auto;
}
.pcard-specs span{ display:inline-flex; align-items:center; gap:.28rem; }
.pcard-specs svg{ width:15px; height:15px; flex:0 0 auto; color:var(--ink-40); }
.pcard-specs span + span::before{ content:"·"; color:var(--ink-30); margin-right:.28rem; }
.pcard-actions{ display:flex; gap:.45rem; padding:0 1.15rem 1.15rem; }
.pcard-actions .btn{ flex:1; }
.pcard-actions .btn--icon{ flex:0 0 auto; }
.pcard-link{ position:absolute; inset:0; z-index:1; }
.pcard-actions,.pcard-fav,.pcard-cmp{ position:relative; z-index:2; }
.pcard-cmp{
  display:inline-flex; align-items:center; gap:.4rem; font-size:var(--step--2); color:var(--ink-50);
  padding:0 1.15rem 1rem; cursor:pointer; user-select:none;
}
.pcard-cmp input{ width:15px; height:15px; accent-color:var(--navy); cursor:pointer; }
.pcard--h{ flex-direction:row; }
.pcard--h .pcard-media{ flex:0 0 40%; aspect-ratio:auto; }
@media (max-width:620px){ .pcard--h{ flex-direction:column; } .pcard--h .pcard-media{ aspect-ratio:4/3; } }

/* -------------------------------------------------- 12. RESULTADOS/MAPA */
.results-layout{ display:grid; grid-template-columns:1fr min(36%, 460px); min-height:calc(100vh - var(--header-h)); }
.results-layout[data-view="lista"]{ grid-template-columns:1fr; }
.results-layout[data-view="mapa"] .results-col{ display:none; }
.results-layout[data-view="mapa"]{ grid-template-columns:1fr; }
.results-layout[data-view="lista"] .map-col{ display:none; }
.results-col{ padding:var(--sp-5) var(--sp-5) var(--sp-8); min-width:0; }
.map-col{ position:sticky; top:var(--header-h); height:calc(100vh - var(--header-h)); background:var(--navy-050); }
@media (max-width:1080px){
  .results-layout{ grid-template-columns:1fr; }
  .map-col{
    display:none; position:fixed; inset:calc(var(--header-h) + .6rem) .6rem .6rem; height:auto;
    z-index:150; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-4);
  }
  .results-layout[data-view="mapa"] .map-col{ display:block; }
}
.results-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:var(--sp-4); flex-wrap:wrap; margin-bottom:var(--sp-4); }
.results-count{ font-family:var(--font-display); font-size:var(--step-1); color:var(--navy); }
.results-count b{ font-weight:500; }
.results-toolbar{ display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
.view-switch{ display:inline-flex; border:1px solid var(--line); border-radius:var(--r-full); padding:3px; background:#fff; }
.view-switch button{
  font-size:var(--step--1); font-family:var(--font-display); padding:.4rem .85rem; border-radius:var(--r-full);
  color:var(--ink-50); transition:background var(--t-fast), color var(--t-fast);
}
.view-switch button[aria-pressed="true"]{ background:var(--navy); color:#fff; }
@media (max-width:1080px){ .view-switch{ display:none; } }
.sort-select{ height:40px; border:1px solid var(--line); border-radius:var(--r-full); padding:0 2.1rem 0 1rem; font-size:var(--step--1); background:#fff;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23737E92' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .7rem center; background-size:15px; }
.active-filters{ display:flex; flex-wrap:wrap; gap:.4rem; margin-bottom:var(--sp-4); }
.active-filters .chip{ padding-right:.45rem; }
.active-filters .chip button{ display:grid; place-items:center; width:18px; height:18px; border-radius:var(--r-full); color:var(--ink-30); }
.active-filters .chip button:hover{ background:var(--navy-050); color:var(--navy); }
.active-filters .chip svg{ width:11px; height:11px; }

/* Panel de filtros */
.filters-panel{
  background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); padding:var(--sp-5);
  position:sticky; top:calc(var(--header-h) + 1rem); max-height:calc(100vh - var(--header-h) - 2rem); overflow-y:auto;
}
.filter-group{ padding-block:var(--sp-4); border-bottom:1px solid var(--line-soft); }
.filter-group:last-child{ border-bottom:0; }
.filter-group > h4{
  font-size:var(--step--1); letter-spacing:.1em; text-transform:uppercase; color:var(--ink-50);
  margin-bottom:.7rem; font-weight:600; font-family:var(--font-body);
}
.filter-group select[data-f-select],
.filter-group input[data-f-input]{ font-size:var(--step--1); font-family:var(--font-body); color:var(--ink-70); }
.seg{ display:flex; border:1px solid var(--line); border-radius:var(--r-full); padding:3px; gap:2px; }
.seg button{ flex:1; padding:.5rem .5rem; border-radius:var(--r-full); font-size:var(--step--1); color:var(--ink-50); font-family:var(--font-display); }
.seg button[aria-pressed="true"]{ background:var(--navy); color:#fff; }
.pill-row{ display:flex; flex-wrap:wrap; gap:.35rem; }
.pill{
  padding:.42rem .8rem; border:1px solid var(--line); border-radius:var(--r-full);
  font-size:var(--step--1); color:var(--ink-70); background:#fff; transition:all var(--t-fast);
}
.pill:hover{ border-color:var(--navy-300); }
.pill[aria-pressed="true"]{ background:var(--navy); border-color:var(--navy); color:#fff; }
.check-list{ display:grid; gap:.15rem; max-height:230px; overflow-y:auto; padding-right:.25rem; }
.check{
  display:flex; align-items:center; gap:.6rem; padding:.4rem .3rem; border-radius:var(--r-sm);
  font-size:var(--step--1); color:var(--ink-70); cursor:pointer;
}
.check:hover{ background:var(--navy-050); }
.check input{ width:16px; height:16px; accent-color:var(--navy); flex:0 0 auto; cursor:pointer; }
.check .cnt{ margin-left:auto; color:var(--ink-30); font-size:var(--step--2); }
.filters-foot{ display:flex; gap:.5rem; padding-top:var(--sp-4); position:sticky; bottom:0; background:#fff; }
.filters-foot .btn{ flex:1; }

/* Drawer de filtros (móvil) */
.drawer-backdrop{ position:fixed; inset:0; background:rgba(7,31,74,.45); z-index:250; opacity:0; visibility:hidden; transition:opacity var(--t), visibility var(--t); }
.drawer-backdrop.is-open{ opacity:1; visibility:visible; }
.drawer{
  position:fixed; z-index:260; background:#fff; display:flex; flex-direction:column;
  inset:auto 0 0 0; max-height:88vh; border-radius:var(--r-xl) var(--r-xl) 0 0;
  transform:translateY(100%); transition:transform var(--t); visibility:hidden;
}
.drawer.is-open{ transform:translateY(0); visibility:visible; }
.drawer-head{ display:flex; align-items:center; justify-content:space-between; padding:1rem 1.25rem; border-bottom:1px solid var(--line-soft); }
.drawer-head h3{ margin:0; font-size:var(--step-1); }
.drawer-grab{ width:42px; height:4px; background:var(--line); border-radius:var(--r-full); margin:.6rem auto -.2rem; }
.drawer-body{ overflow-y:auto; padding:0 1.25rem 1rem; flex:1; }
.drawer-foot{ padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom)); border-top:1px solid var(--line-soft); display:flex; gap:.6rem; background:#fff; }
.drawer-foot .btn{ flex:1; }
@media (min-width:1081px){ .drawer--filters{ display:none; } }

/* Barra flotante móvil */
.mobile-actions{
  position:fixed; left:0; right:0; bottom:0; z-index:160; display:none;
  padding:.65rem 1rem calc(.65rem + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.94); backdrop-filter:blur(10px); border-top:1px solid var(--line-soft);
  gap:.5rem;
}
.mobile-actions .btn{ flex:1; }
@media (max-width:1080px){ .mobile-actions{ display:flex; } body.has-mobile-actions{ padding-bottom:76px; } }

/* Mapa */
.map-canvas{ width:100%; height:100%; position:relative; }
.map-fallback{
  position:absolute; inset:0; overflow:hidden;
  background: radial-gradient(120% 90% at 38% 22%, #f4f5f8 0%, #eef0f4 55%, #e6e9ee 100%);
}
.map-fallback .mf-road{ position:absolute; background:#fff; box-shadow:0 0 2px rgba(15,30,60,.05); }
.map-fallback .mf-road.mf-road--main{ background:#f0e9dc; }
.map-fallback .mf-green{ position:absolute; background:#dfe9dc; border-radius:40% 55% 45% 50%; }
.map-fallback .mf-label{
  position:absolute; font-family:var(--font-display); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--navy-300); white-space:nowrap;
}
.map-pin{
  position:absolute; transform:translate(-50%,-100%); z-index:5;
  font-family:var(--font-display); font-size:12px; font-weight:600; letter-spacing:.02em;
  background:#D0021B; color:#fff; border:1.5px solid #fff;
  padding:.3rem .6rem; border-radius:var(--r-full); box-shadow:var(--sh-2); cursor:pointer;
  transition:background var(--t-fast), color var(--t-fast), transform var(--t-fast), z-index 0s;
  white-space:nowrap; display:inline-flex; align-items:center; gap:.28rem;
}
.map-pin img{ width:13px; height:13px; flex:0 0 auto; }
.map-pin::after{
  content:""; position:absolute; left:50%; bottom:-5px; width:8px; height:8px;
  background:#D0021B; border-right:1.5px solid #fff; border-bottom:1.5px solid #fff;
  transform:translateX(-50%) rotate(45deg);
}
.map-pin:hover,.map-pin.is-active{ background:var(--navy); z-index:20; transform:translate(-50%,-100%) scale(1.06); }
.map-pin:hover::after,.map-pin.is-active::after{ background:var(--navy); }
.map-pin.is-fav{ border-color:var(--gold); }
.map-cluster{
  position:absolute; transform:translate(-50%,-50%); z-index:6;
  width:40px; height:40px; border-radius:var(--r-full); display:grid; place-items:center;
  background:var(--navy); color:#fff; font-family:var(--font-display); font-weight:600; font-size:13px;
  box-shadow:0 0 0 5px rgba(7,31,74,.13), var(--sh-2); cursor:pointer; transition:transform var(--t-fast);
  border:none;
}
.map-cluster:hover{ transform:translate(-50%,-50%) scale(1.08); }
.map-preview{
  position:absolute; z-index:30; width:264px; background:#fff; border-radius:var(--r-md);
  box-shadow:var(--sh-4); overflow:hidden; pointer-events:none; opacity:0; transition:opacity var(--t-fast);
  transform:translate(-50%,calc(-100% - 44px));
}
.map-preview.is-on{ opacity:1; }
.map-preview img{ width:100%; aspect-ratio:16/10; object-fit:cover; }
.map-preview .mp-body{ padding:.65rem .8rem .8rem; }
.map-preview .mp-price{ font-family:var(--font-display); font-size:var(--step-1); color:var(--navy); }
.map-preview .mp-t{ font-size:var(--step--1); color:var(--ink-70); line-height:1.35; }
.map-minicard{
  position:absolute; left:1rem; bottom:1rem; right:1rem; max-width:340px; z-index:40;
  background:#fff; border-radius:var(--r-md); box-shadow:var(--sh-4); overflow:hidden; display:none;
}
.map-minicard.is-on{ display:block; }
.map-minicard .mc-close{ position:absolute; top:.5rem; right:.5rem; width:30px; height:30px; border-radius:var(--r-full); background:rgba(255,255,255,.92); display:grid; place-items:center; box-shadow:var(--sh-1); z-index:2; }
.map-minicard .mc-close svg{ width:14px; height:14px; }
.mcl-head{ padding:1rem 1rem .5rem; font-family:var(--font-display); font-size:var(--step-0); color:var(--navy); }
.mcl-list{ max-height:280px; overflow-y:auto; padding-bottom:.4rem; }
.mcl-row{ display:flex; align-items:center; gap:.7rem; padding:.6rem 1rem; border-top:1px solid var(--line-soft); }
.mcl-row:first-child{ border-top:0; }
.mcl-row:hover{ background:var(--navy-050); }
.mcl-price{ font-family:var(--font-display); font-weight:600; color:var(--navy); font-size:var(--step--1); flex:0 0 auto; }
.mcl-t{ font-size:var(--step--2); color:var(--ink-70); line-height:1.3; }
.map-filters{
  position:absolute; top:1rem; left:1rem; right:3.75rem; z-index:41;
  display:flex; align-items:center; gap:.5rem; overflow-x:auto;
  background:#fff; border:1px solid var(--line); box-shadow:var(--sh-4);
  border-radius:var(--r-full); padding:.35rem .5rem;
  font-family:var(--font-body);
}
.map-filters::-webkit-scrollbar{ display:none; }
.map-filters .seg--sm{ flex:0 0 auto; border:none; padding:0; gap:1px; }
.map-filters .seg--sm button{
  padding:.4rem .7rem; font-size:var(--step--2); white-space:nowrap;
  font-family:var(--font-body); font-weight:600; color:var(--ink-70);
}
.map-filters .seg--sm button[aria-pressed="true"]{ color:#fff; }
.map-filters-select{
  flex:0 0 auto; height:34px; border:1px solid var(--line); border-radius:var(--r-full);
  padding:0 .7rem; font-size:var(--step--2); font-weight:600; color:var(--ink-70); background:#fff;
}
.map-filters-precio{ display:flex; gap:.35rem; flex:0 0 auto; }
.map-filters-precio input{
  width:100px; height:34px; border:1px solid var(--line); border-radius:var(--r-full);
  padding:0 .7rem; font-size:var(--step--2); font-weight:600; color:var(--ink-70);
}
.map-filters-precio input::placeholder{ color:var(--ink-50); font-weight:400; }
.map-filters .map-back{ margin-left:auto; flex:0 0 auto; border-radius:var(--r-full); background:var(--navy-050); }
.map-filters .map-back button{
  padding:.4rem .8rem; font-size:var(--step--2); font-weight:600; white-space:nowrap;
  font-family:var(--font-body); color:var(--navy);
}
.map-filters .map-back button:hover{ background:var(--navy-100); }
.map-filters-precio-btn{
  display:none; align-items:center; gap:.3rem; flex:0 0 auto; height:34px;
  padding:0 .8rem; border:1px solid var(--line); border-radius:var(--r-full);
  font-size:var(--step--2); font-weight:600; color:var(--ink-70); background:#fff; white-space:nowrap;
}
.map-filters-precio-btn svg{ width:14px; height:14px; }
@media (max-width:640px){
  .map-filters{ overflow-x:visible; justify-content:space-between; }
  .map-filters-precio{ display:none; }
  .map-filters-precio-btn{
    display:inline-flex; width:34px; height:34px; padding:0; justify-content:center;
  }
  .map-filters-precio-btn span{ display:none; }
  .map-filters-precio-btn svg{ width:16px; height:16px; }
  .map-filters .seg--sm button{ padding:.4rem .45rem; }
  .map-filters-select{ max-width:78px; padding-right:1.3rem; }
}
.map-toolbar{ position:absolute; top:4.5rem; left:50%; transform:translateX(-50%); z-index:40; display:flex; gap:.5rem; }
.map-toolbar .btn{ box-shadow:var(--sh-3); }
.map-note{
  position:absolute; bottom:.6rem; left:.75rem; z-index:35; font-size:11px; color:var(--ink-50);
  background:rgba(255,255,255,.85); padding:.25rem .55rem; border-radius:var(--r-sm);
}
.map-zoom{ position:absolute; right:1rem; top:1rem; z-index:40; display:grid; gap:2px; background:#fff; border-radius:var(--r-sm); box-shadow:var(--sh-2); overflow:hidden; }
.map-zoom button{ width:36px; height:36px; display:grid; place-items:center; color:var(--navy); }
.map-zoom button:hover{ background:var(--navy-050); }

/* --------------------------------------------------- 13. FICHA PROPIEDAD */
.breadcrumb{ font-size:var(--step--1); color:var(--ink-50); padding-block:var(--sp-4) 0; }
.breadcrumb ol{ display:flex; flex-wrap:wrap; gap:.3rem; list-style:none; padding:0; margin:0; }
.breadcrumb li::after{ content:"/"; margin-left:.3rem; color:var(--ink-30); }
.breadcrumb li:last-child::after{ content:""; }
.breadcrumb a{ color:var(--ink-50); }
.breadcrumb a:hover{ color:var(--navy); }
.breadcrumb [aria-current]{ color:var(--navy); }

.gallery{ display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:1fr 1fr; gap:.5rem; border-radius:var(--r-lg); overflow:hidden; position:relative; }
.gallery > button.g-main,
.gallery > button.g-sm{ position:relative; overflow:hidden; background:var(--navy-050); }
.gallery > button img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease), opacity var(--t-fast); }
.gallery > button:hover img{ transform:scale(1.04); opacity:.94; }
.gallery .g-main{ grid-row:1/3; aspect-ratio:4/3; }
.gallery .g-sm{ aspect-ratio:4/3; }
.gallery-more{
  position:absolute; right:1rem; bottom:1rem; z-index:3;
  background:rgba(255,255,255,.95); color:var(--navy); padding:.6rem 1.1rem; border-radius:var(--r-full);
  font-family:var(--font-display); font-size:var(--step--1); box-shadow:var(--sh-2); display:flex; align-items:center; gap:.45rem;
}
.gallery-more:hover{ background:#fff; }
.gallery-more svg{ width:16px; height:16px; }
.gallery-tools{ position:absolute; left:1rem; top:1rem; z-index:3; display:flex; gap:.4rem; flex-wrap:wrap; }
.gallery-tools .chip{ background:rgba(255,255,255,.94); box-shadow:var(--sh-1); border-color:transparent; }
.gallery-tools .chip:hover{ background:#fff; }
.gallery-tools .chip svg{ width:15px; height:15px; }
@media (max-width:820px){
  .gallery{ grid-template-columns:1fr 1fr; grid-template-rows:auto; }
  .gallery .g-main{ grid-row:auto; grid-column:1/-1; }
  .gallery .g-sm:nth-child(n+4){ display:none; }
}
/* Lightbox */
.lightbox{ position:fixed; inset:0; z-index:400; background:rgba(7,31,74,.96); display:none; flex-direction:column; }
.lightbox.is-open{ display:flex; }
.lb-head{ display:flex; align-items:center; justify-content:space-between; padding:1rem 1.25rem; color:#fff; }
.lb-head button{ color:#fff; width:44px; height:44px; border-radius:var(--r-full); display:grid; place-items:center; }
.lb-head button:hover{ background:rgba(255,255,255,.12); }
.lb-stage{ flex:1; display:grid; place-items:center; padding:0 1rem 1rem; position:relative; min-height:0; }
.lb-stage img{ max-height:100%; max-width:100%; object-fit:contain; border-radius:var(--r-sm); }
.lb-nav{ position:absolute; top:50%; transform:translateY(-50%); width:48px; height:48px; border-radius:var(--r-full); background:rgba(255,255,255,.14); color:#fff; display:grid; place-items:center; }
.lb-nav:hover{ background:rgba(255,255,255,.26); }
.lb-prev{ left:1rem; } .lb-next{ right:1rem; }
.lb-thumbs{ display:flex; gap:.5rem; overflow-x:auto; padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom)); }
.lb-thumbs button{ flex:0 0 92px; aspect-ratio:4/3; border-radius:var(--r-sm); overflow:hidden; opacity:.5; transition:opacity var(--t-fast); }
.lb-thumbs button[aria-current="true"]{ opacity:1; box-shadow:0 0 0 2px var(--gold); }
.lb-thumbs img{ width:100%; height:100%; object-fit:cover; }

.prop-layout{ display:grid; grid-template-columns:1fr 380px; gap:var(--sp-7); align-items:start; }
@media (max-width:1080px){ .prop-layout{ grid-template-columns:1fr; } }
.prop-header{ display:flex; justify-content:space-between; align-items:flex-start; gap:var(--sp-5); flex-wrap:wrap; }
.prop-price{ font-family:var(--font-display); font-size:var(--step-4); color:var(--navy); font-weight:400; line-height:1; }
.prop-price .cur{ font-size:var(--step-0); color:var(--ink-50); }
.prop-price-sub{ font-size:var(--step--1); color:var(--ink-50); margin-top:.35rem; }
.spec-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(118px,1fr)); gap:1px; background:var(--line-soft); border:1px solid var(--line-soft); border-radius:var(--r-md); overflow:hidden; }
.spec{ background:#fff; padding:1rem .9rem; text-align:center; }
.spec svg{ width:20px; height:20px; color:var(--gold); margin:0 auto .45rem; }
.spec b{ display:block; font-family:var(--font-display); font-size:var(--step-1); color:var(--navy); font-weight:500; line-height:1.1; }
.spec span{ font-size:var(--step--2); color:var(--ink-50); letter-spacing:.06em; text-transform:uppercase; }
@media (max-width:640px){
  .spec{ padding:.85rem .5rem; }
  .spec span{ display:none; }
}
.prop-section{ padding-block:var(--sp-6); border-top:1px solid var(--line-soft); }
.prop-section > h3{ font-size:var(--step-2); margin-bottom:var(--sp-4); }
.feature-list{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:.55rem 1.5rem; list-style:none; padding:0; }
.feature-list li{ display:flex; align-items:center; gap:.6rem; font-size:var(--step-0); color:var(--ink-70); }
.feature-list svg{ width:16px; height:16px; color:var(--gold); flex:0 0 auto; }
.fin-table{ width:100%; border-collapse:collapse; font-size:var(--step-0); }
.fin-table th,.fin-table td{ text-align:left; padding:.75rem 0; border-bottom:1px solid var(--line-soft); }
.fin-table th{ font-weight:400; color:var(--ink-50); }
.fin-table td{ text-align:right; font-family:var(--font-display); color:var(--navy); font-weight:500; }
.fin-note{ font-size:var(--step--1); color:var(--ink-50); margin-top:var(--sp-3); }
.prop-map{ height:340px; border-radius:var(--r-md); overflow:hidden; border:1px solid var(--line); position:relative; }

/* Tarjeta sticky de contacto con Gio */
.gio-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--sh-3); position:sticky; top:calc(var(--header-h) + 1rem);
}
.gio-card-top{ background:var(--navy); color:#fff; padding:1.25rem 1.25rem 1.1rem; display:flex; gap:.95rem; align-items:center; }
.gio-card-top img.gio-avatar{ width:62px; height:62px; border-radius:var(--r-full); object-fit:cover; flex:0 0 auto; border:2px solid rgba(255,255,255,.28); }
.gio-card-top .gc-name{ font-family:var(--font-display); font-size:var(--step-1); color:#fff; line-height:1.15; }
.gio-card-top .gc-role{ font-size:var(--step--1); color:rgba(255,255,255,.7); letter-spacing:.06em; }
.gio-card-top .gc-logo{ height:26px; width:auto; margin-left:auto; opacity:.9; }
.gio-card-body{ padding:1.15rem 1.25rem 1.25rem; }
.gio-card-body > h4{ font-size:var(--step-1); margin-bottom:.25rem; }
.gio-card-body > p.small{ color:var(--ink-50); margin-bottom:1rem; }
.form-row{ display:flex; flex-direction:column; gap:.3rem; margin-bottom:.7rem; }
.form-row label{ font-size:var(--step--2); font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-50); }
.form-row input,.form-row select,.form-row textarea{
  width:100%; padding:.7rem .85rem; border:1px solid var(--line); border-radius:var(--r-sm);
  font-size:var(--step-0); background:#fff; transition:border-color var(--t-fast), box-shadow var(--t-fast);
}
.form-row textarea{ min-height:88px; resize:vertical; }
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{ outline:none; border-color:var(--navy-300); box-shadow:0 0 0 3px rgba(7,31,74,.07); }
.form-row .err{ font-size:var(--step--2); color:#B4402F; display:none; }
.form-row.is-error input,.form-row.is-error select,.form-row.is-error textarea{ border-color:#D68579; }
.form-row.is-error .err{ display:block; }
.form-row.is-required label::after{ content:" *"; color:#B4402F; }
.form-row input:disabled,.form-row select:disabled,.form-row textarea:disabled{ opacity:.45; background:var(--navy-050); cursor:not-allowed; }
.form-consent{ display:flex; gap:.55rem; align-items:flex-start; font-size:var(--step--2); color:var(--ink-50); margin:.5rem 0 .9rem; line-height:1.5; }
.form-consent input{ margin-top:.15rem; width:15px; height:15px; accent-color:var(--navy); flex:0 0 auto; }
.form-actions{ display:grid; gap:.5rem; }
.form-success{
  display:none; text-align:center; padding:1.5rem 1rem; background:var(--gold-050); border:1px solid var(--gold-soft);
  border-radius:var(--r-md); color:var(--navy);
}
.form-success.is-on{ display:block; }
.form-success svg{ width:38px; height:38px; color:var(--gold); margin:0 auto .6rem; }
.form-grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:0 .7rem; }
@media (max-width:520px){ .form-grid-2{ grid-template-columns:1fr; } }
/* ------------------------------------------------------- 14. WHATSAPP FAB */
.wa-fab{
  position:fixed; right:1.15rem; bottom:1.15rem; z-index:190;
  display:inline-flex; align-items:center; gap:.6rem; background:#1FA855; color:#fff;
  padding:.8rem 1.15rem; border-radius:var(--r-full); box-shadow:0 8px 26px rgba(31,168,85,.34);
  font-family:var(--font-display); font-size:var(--step-0); font-weight:500;
  transition:transform var(--t-fast), box-shadow var(--t-fast);
}
.wa-fab:hover{ transform:translateY(-2px); color:#fff; box-shadow:0 12px 32px rgba(31,168,85,.42); }
.wa-fab svg{ width:21px; height:21px; fill:currentColor; }
@media (max-width:1080px){
  .wa-fab{ bottom:calc(1rem + 70px); }
  body:not(.has-mobile-actions) .wa-fab{ bottom:1.15rem; }
  .wa-fab .wa-text{ display:none; }
  .wa-fab{ padding:.9rem; }
}

/* --------------------------------------------------------- 15. SECCIONES */
.objetivo-card{
  display:block; background:#fff; border:1px solid var(--line); border-radius:var(--r-lg);
  padding:var(--sp-5); transition:box-shadow var(--t), transform var(--t), border-color var(--t);
  height:100%;
}
.objetivo-card:hover{ box-shadow:var(--sh-3); transform:translateY(-3px); border-color:var(--navy-100); }
.objetivo-card .oc-icon{ width:46px; height:46px; border-radius:var(--r-full); background:var(--gold-050); display:grid; place-items:center; margin-bottom:var(--sp-4); }
.objetivo-card .oc-icon svg{ width:21px; height:21px; color:var(--gold); }
.objetivo-card h3{ font-size:var(--step-1); margin-bottom:.4rem; }
.objetivo-card p{ font-size:var(--step--1); color:var(--ink-50); margin-bottom:var(--sp-4); }

.zona-card{ position:relative; display:block; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:3/4; background:var(--navy); }
.zona-card img{ width:100%; height:100%; object-fit:cover; transition:transform .7s var(--ease); }
.zona-card:hover img{ transform:scale(1.06); }
.zona-card::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(7,31,74,0) 35%, rgba(7,31,74,.85) 100%); }
.zona-card .zc-body{ position:absolute; left:0; right:0; bottom:0; padding:1.25rem; z-index:2; color:#fff; }
.zona-card .zc-body h3{ color:#fff; font-size:var(--step-1); margin:0 0 .15rem; }
.zona-card .zc-body span{ font-size:var(--step--1); color:rgba(255,255,255,.75); }
.zona-card--wide{ aspect-ratio:16/10; }

.carousel{ display:flex; gap:var(--sp-4); overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:var(--sp-4); scrollbar-width:thin; }
.carousel > *{ flex:0 0 min(330px, 78vw); scroll-snap-align:start; }
.carousel::-webkit-scrollbar{ height:6px; }
.carousel::-webkit-scrollbar-thumb{ background:var(--line); border-radius:var(--r-full); }
.carousel-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:var(--sp-4); margin-bottom:var(--sp-5); flex-wrap:wrap; }
.carousel-nav{ display:flex; gap:.4rem; }
.carousel-nav button{ width:40px; height:40px; border-radius:var(--r-full); border:1px solid var(--line); display:grid; place-items:center; color:var(--navy); transition:all var(--t-fast); }
.carousel-nav button:hover{ border-color:var(--navy); background:var(--navy); color:#fff; }
.carousel-nav svg{ width:16px; height:16px; }

.gio-split{ display:grid; grid-template-columns:.85fr 1.15fr; gap:var(--sp-8); align-items:center; }
@media (max-width:900px){ .gio-split{ grid-template-columns:1fr; gap:var(--sp-6); } }
.gio-split-media{ position:relative; }
.gio-split-media img{ width:100%; border-radius:var(--r-lg); }
.gio-split-media::before{
  content:""; position:absolute; inset:auto -18px -18px auto; width:62%; height:62%;
  border:1px solid var(--gold-soft); border-radius:var(--r-lg); z-index:-1;
}
.quote{
  font-family:var(--font-display); font-size:var(--step-3); font-weight:300; line-height:1.28;
  color:var(--navy); letter-spacing:-.015em;
}
.section--navy .quote{ color:#fff; }
.testimonial{ background:#fff; border:1px solid var(--line-soft); border-radius:var(--r-lg); padding:var(--sp-5); height:100%; display:flex; flex-direction:column; }
.testimonial p{ font-size:var(--step-0); color:var(--ink-70); line-height:1.7; flex:1; }
.testimonial .t-mark{ font-family:var(--font-display); font-size:2.6rem; line-height:.6; color:var(--gold-soft); margin-bottom:.7rem; }
.testimonial footer{ margin-top:var(--sp-4); padding-top:var(--sp-4); border-top:1px solid var(--line-soft); }
.testimonial cite{ font-style:normal; font-family:var(--font-display); font-weight:500; color:var(--navy); display:block; }
.testimonial small{ color:var(--ink-50); font-size:var(--step--1); }

.step-list{ counter-reset:step; list-style:none; padding:0; display:grid; gap:var(--sp-4); }
.step-list li{ counter-increment:step; display:grid; grid-template-columns:auto 1fr; gap:var(--sp-4); align-items:start; }
.step-list li::before{
  content:counter(step,decimal-leading-zero); font-family:var(--font-display); font-size:var(--step-0);
  color:var(--gold); border:1px solid var(--gold-soft); width:42px; height:42px; border-radius:var(--r-full);
  display:grid; place-items:center; flex:0 0 auto;
}
.step-list h4{ margin:0 0 .2rem; font-size:var(--step-1); }
.step-list p{ margin:0; color:var(--ink-70); font-size:var(--step-0); }

.accordion{ border-top:1px solid var(--line); }
.accordion details{ border-bottom:1px solid var(--line); }
.accordion summary{
  display:flex; align-items:center; justify-content:space-between; gap:1rem; cursor:pointer;
  padding:1.15rem 0; font-family:var(--font-display); font-size:var(--step-1); color:var(--navy); list-style:none;
}
.accordion summary::-webkit-details-marker{ display:none; }
.accordion summary::after{
  content:""; width:11px; height:11px; border-right:1.5px solid var(--gold); border-bottom:1.5px solid var(--gold);
  transform:rotate(45deg); transition:transform var(--t); flex:0 0 auto; margin-top:-4px;
}
.accordion details[open] summary::after{ transform:rotate(225deg); margin-top:4px; }
.accordion .acc-body{ padding-bottom:1.25rem; color:var(--ink-70); }
.accordion .acc-body p:last-child{ margin-bottom:0; }

.stat-row{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--line-soft); border:1px solid var(--line-soft); border-radius:var(--r-md); overflow:hidden; }
.stat{ background:#fff; padding:1.25rem 1rem; text-align:center; }
.stat b{ display:block; font-family:var(--font-display); font-size:var(--step-2); color:var(--navy); font-weight:400; }
.stat span{ font-size:var(--step--2); color:var(--ink-50); letter-spacing:.08em; text-transform:uppercase; }
.section--navy .stat{ background:var(--navy-deep); }
.section--navy .stat b{ color:#fff; }
.section--navy .stat span{ color:rgba(255,255,255,.6); }

.cta-band{ background:var(--navy); color:#fff; border-radius:var(--r-xl); padding:clamp(2rem,5vw,3.5rem); text-align:center; position:relative; overflow:hidden; }
.cta-band::before{
  content:""; position:absolute; inset:-40% -10% auto auto; width:420px; height:420px; border-radius:50%;
  background:radial-gradient(circle, rgba(184,142,62,.16) 0%, transparent 65%);
}
.cta-band > *{ position:relative; }
.cta-band h2{ color:#fff; max-width:20ch; margin-inline:auto; }
.cta-band p{ color:rgba(255,255,255,.78); max-width:56ch; margin-inline:auto var(--sp-5); margin-inline:auto; }
.cta-actions{ display:flex; gap:.7rem; justify-content:center; flex-wrap:wrap; margin-top:var(--sp-5); }

/* Blog */
.post-card{ display:flex; flex-direction:column; background:#fff; border:1px solid var(--line-soft); border-radius:var(--r-lg); overflow:hidden; transition:box-shadow var(--t), transform var(--t); height:100%; }
.post-card:hover{ box-shadow:var(--sh-3); transform:translateY(-3px); }
.post-card .pc-media{ aspect-ratio:16/10; overflow:hidden; }
.post-card .pc-media img{ width:100%; height:100%; object-fit:cover; transition:transform .6s var(--ease); }
.post-card:hover .pc-media img{ transform:scale(1.05); }
.post-card .pc-body{ padding:1.15rem 1.2rem 1.3rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.post-card h3{ font-size:var(--step-1); margin:0; line-height:1.3; }
.post-card p{ font-size:var(--step--1); color:var(--ink-50); margin:0; flex:1; }
.post-meta{ display:flex; gap:.6rem; align-items:center; font-size:var(--step--2); color:var(--ink-50); letter-spacing:.05em; text-transform:uppercase; }
.post-meta .cat{ color:var(--gold-ink); }
.article{ font-size:var(--step-1); line-height:1.78; color:var(--ink-70); }
.article h2{ font-size:var(--step-2); margin-top:var(--sp-7); color:var(--navy); }
.article h2:first-child{ margin-top:0; }
.article p{ margin-bottom:1.15em; }
.article-signature{ display:flex; justify-content:center; margin:var(--sp-7) 0 var(--sp-5); }
.article-signature img{ height:60px; width:auto; background:transparent; opacity:.95; }
.article > p:first-of-type{ font-size:var(--step-1); color:var(--ink); }

/* Comparador */
.cmp-table{ width:100%; border-collapse:separate; border-spacing:0; font-size:var(--step-0); }
.cmp-table th,.cmp-table td{ padding:.9rem 1rem; border-bottom:1px solid var(--line-soft); text-align:left; vertical-align:top; }
.cmp-table thead th{ background:var(--ivory); position:sticky; top:var(--header-h); z-index:5; vertical-align:bottom; }
.cmp-table tbody th{ font-weight:400; color:var(--ink-50); width:190px; background:#fff; }
.cmp-table tbody tr:hover td{ background:var(--navy-050); }
.cmp-table td.best{ color:var(--ok); font-weight:600; }
.cmp-head-card img{ width:100%; aspect-ratio:16/10; object-fit:cover; border-radius:var(--r-sm); margin-bottom:.6rem; }
.cmp-head-card .ch-price{ font-family:var(--font-display); font-size:var(--step-1); color:var(--navy); }
.cmp-head-card .ch-t{ font-size:var(--step--1); color:var(--ink-70); line-height:1.35; }
.cmp-remove{ font-size:var(--step--2); color:var(--ink-50); text-decoration:underline; margin-top:.4rem; display:inline-block; }
.cmp-remove:hover{ color:#B4402F; }
.cmp-bar{
  position:fixed; left:50%; bottom:1rem; transform:translateX(-50%); z-index:180;
  background:var(--navy); color:#fff; border-radius:var(--r-full); padding:.6rem .7rem .6rem 1.2rem;
  display:none; align-items:center; gap:1rem; box-shadow:var(--sh-4); max-width:calc(100% - 2rem);
}
.cmp-bar.is-on{ display:flex; }
.cmp-bar .cb-txt{ font-size:var(--step--1); white-space:nowrap; }
@media (max-width:1080px){ .cmp-bar{ bottom:calc(1rem + 70px); } }

/* Estado vacío */
.empty{ text-align:center; padding:var(--sp-8) var(--sp-4); border:1px dashed var(--line); border-radius:var(--r-lg); background:var(--ivory); }
.empty svg{ width:46px; height:46px; color:var(--ink-30); margin:0 auto var(--sp-4); }
.empty h3{ font-size:var(--step-1); }
.empty p{ color:var(--ink-50); max-width:44ch; margin-inline:auto; }

/* Valuación */
.valuacion-result{ display:none; }
.valuacion-result.is-on{ display:block; }
.val-range{ background:var(--navy); color:#fff; border-radius:var(--r-lg); padding:var(--sp-6); text-align:center; }
.val-range .vr-num{ font-family:var(--font-display); font-size:var(--step-4); color:#fff; line-height:1.05; }
.val-range .vr-lbl{ font-size:var(--step--1); color:rgba(255,255,255,.65); letter-spacing:.1em; text-transform:uppercase; }
.val-bar{ height:8px; border-radius:var(--r-full); background:rgba(255,255,255,.16); margin:var(--sp-5) 0 var(--sp-3); position:relative; }
.val-bar i{ position:absolute; top:0; bottom:0; background:var(--gold); border-radius:var(--r-full); }
.progress-steps{ display:flex; gap:.4rem; margin-bottom:var(--sp-5); }
.progress-steps i{ flex:1; height:3px; background:var(--line); border-radius:var(--r-full); }
.progress-steps i.is-on{ background:var(--gold); }

/* --------------------------------------------------------- 16. FOOTER */
.site-footer{ background:var(--navy); color:rgba(255,255,255,.72); padding-block:var(--sp-8) var(--sp-5); font-size:var(--step--1); }
.footer-grid{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:var(--sp-6); }
@media (max-width:900px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){
  .footer-grid{ grid-template-columns:1fr 1fr; gap:var(--sp-5) var(--sp-4); }
  .footer-grid > div:first-child{ grid-column:1 / -1; text-align:center; margin-bottom:var(--sp-3); }
  .footer-logo{ display:flex; justify-content:center; }
  .footer-grid > div:first-child p{ margin-inline:auto; }
  .footer-social{ justify-content:center; }
  .footer-newsletter{ max-width:340px; margin-inline:auto; }
}
.site-footer h4{ color:#fff; font-size:var(--step--1); letter-spacing:.14em; text-transform:uppercase; margin-bottom:var(--sp-4); font-family:var(--font-body); font-weight:600; }
.site-footer a{ color:rgba(255,255,255,.72); }
.site-footer a:hover{ color:var(--gold-soft); }
.site-footer ul{ list-style:none; padding:0; margin:0; display:grid; gap:.5rem; }
.footer-logo img{ height:64px; width:auto; margin-bottom:var(--sp-4); background:transparent; }
.footer-social{ display:flex; gap:.5rem; margin-top:var(--sp-4); }
.footer-social a{ width:38px; height:38px; border-radius:var(--r-full); border:1px solid rgba(255,255,255,.2); display:grid; place-items:center; transition:all var(--t-fast); }
.footer-social a:hover{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.4); }
.footer-social svg{ width:17px; height:17px; fill:currentColor; }
.footer-newsletter{
  display:flex; margin-top:var(--sp-4); max-width:280px;
  border:1px solid rgba(255,255,255,.22); border-radius:var(--r-full); transition:border-color var(--t-fast);
}
.footer-newsletter.is-error{ border-color:#D68579; }
.footer-newsletter input{
  flex:1; min-width:0; background:transparent; border:none; color:#fff;
  padding:.55rem 0 .55rem .95rem; font-size:var(--step--2); font-family:var(--font-body);
}
.footer-newsletter input::placeholder{ color:rgba(255,255,255,.45); }
.footer-newsletter input:focus{ outline:none; }
.footer-newsletter button{
  flex:0 0 auto; width:32px; height:32px; margin:3px; border-radius:var(--r-full);
  display:grid; place-items:center; background:var(--gold); color:#fff; transition:background var(--t-fast);
}
.footer-newsletter button:hover{ background:var(--gold-ink); }
.footer-newsletter button svg{ width:13px; height:13px; }
.footer-newsletter-success{ margin-top:.6rem; padding:.5rem .8rem; font-size:var(--step--2); text-align:left; max-width:280px; }
.footer-bottom{ margin-top:var(--sp-7); padding-top:var(--sp-5); border-top:1px solid rgba(255,255,255,.14); display:flex; justify-content:space-between; gap:var(--sp-4); flex-wrap:wrap; font-size:var(--step--2); }
.footer-bottom nav{ display:flex; gap:1.2rem; flex-wrap:wrap; }
.powered-by{
  display:inline-flex; align-items:center; gap:.5rem; background:#fff; padding:.35rem .75rem;
  border-radius:var(--r-full); opacity:.9; transition:opacity var(--t-fast), transform var(--t-fast);
}
.powered-by:hover{ opacity:1; transform:translateY(-1px); }
.powered-by span{ font-size:var(--step--2); color:var(--ink-50); }
.powered-by img{ height:14px; width:auto; display:block; background:transparent; }
.footer-demo{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12); border-radius:var(--r-md); padding:.85rem 1rem; margin-top:var(--sp-5); font-size:var(--step--2); line-height:1.6; }

/* -------------------------------------------------------- 17. UTILIDADES */
.toast{
  position:fixed; left:50%; bottom:1.5rem; transform:translate(-50%,140%); z-index:500;
  background:var(--navy); color:#fff; padding:.8rem 1.35rem; border-radius:var(--r-full);
  box-shadow:var(--sh-4); font-size:var(--step--1); transition:transform var(--t);
  display:flex; align-items:center; gap:.55rem; max-width:calc(100% - 2rem);
}
.toast.is-on{ transform:translate(-50%,0); }
.toast svg{ width:16px; height:16px; flex:0 0 auto; }
body.no-scroll{ overflow:hidden; }
.aspect-16-10{ aspect-ratio:16/10; object-fit:cover; width:100%; }
.divider{ height:1px; background:var(--line-soft); margin-block:var(--sp-6); }
.prose h3{ margin-top:var(--sp-6); }
.prose ul{ padding-left:1.2em; }
.prose li{ margin-bottom:.4em; color:var(--ink-70); }
@media print{
  .site-header,.wa-fab,.mobile-actions,.cmp-bar,.demo-bar,.site-footer{ display:none !important; }
}
