/* ==========================================================================
   ANTONIO LANDA SALVADOR — Abogado · Palencia
   Sistema de diseño editorial premium — azul marino, papel cálido, champagne
   ========================================================================== */

/* -------------------- 1. TOKENS -------------------- */
:root{
  /* Azules — protagonistas */
  --navy-950:#0A111C;
  --navy-900:#0E1A2B;
  --navy-850:#122238;
  --navy-800:#16283F;
  --navy-700:#203752;
  --navy-600:#2E4A6B;
  --navy-500:#456888;

  /* Neutros cálidos */
  --cream-50:#FAF7F1;
  --cream-100:#F4EEE3;
  --stone-150:#EDE7D9;
  --stone-200:#E3DACB;
  --stone-400:#B8AC94;
  --stone-600:#8A806C;
  --ink-900:#1A1C21;
  --ink-700:#3B3E45;
  --white:#FFFFFF;

  /* Acento discreto */
  --champagne-300:#DCC393;
  --champagne-500:#B6905A;
  --champagne-700:#8E6E41;

  /* Semántico */
  --bg:var(--cream-50);
  --surface:var(--white);
  --surface-muted:var(--cream-100);
  --text:var(--ink-900);
  --text-muted:var(--stone-600);
  --primary:var(--navy-900);
  --primary-strong:var(--navy-950);
  --accent:var(--champagne-500);
  --border:var(--stone-200);
  --border-strong:var(--stone-400);

  /* Tipografía */
  --font-serif:'Fraunces', Georgia, 'Times New Roman', serif;
  --font-sans:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --text-display:clamp(2.6rem, 1.9rem + 3.1vw, 5.25rem);
  --text-h1:clamp(2.1rem, 1.7rem + 1.9vw, 3.4rem);
  --text-h2:clamp(1.65rem, 1.4rem + 1.15vw, 2.4rem);
  --text-h3:clamp(1.3rem, 1.15rem + 0.6vw, 1.65rem);
  --text-h4:clamp(1.1rem, 1.02rem + 0.3vw, 1.25rem);
  --text-lg:clamp(1.1rem, 1rem + 0.35vw, 1.25rem);
  --text-body:1.0625rem;
  --text-sm:0.9rem;
  --text-xs:0.8rem;
  --text-eyebrow:0.78rem;

  /* Espaciado */
  --space-3xs:0.25rem;
  --space-2xs:0.5rem;
  --space-xs:0.75rem;
  --space-sm:1.25rem;
  --space-md:2rem;
  --space-lg:3.25rem;
  --space-xl:5rem;
  --space-2xl:7.5rem;
  --space-3xl:10rem;

  --container-w:1240px;
  --container-w-narrow:820px;
  --radius-sm:2px;
  --radius-md:4px;
  --gutter:1.5rem;

  --ease:cubic-bezier(.22,.61,.36,1);
  --dur-fast:180ms;
  --dur-base:420ms;
  --dur-slow:700ms;

  --shadow-sm:0 1px 2px rgba(14,26,43,.06), 0 1px 1px rgba(14,26,43,.04);
  --shadow-md:0 12px 32px -12px rgba(14,26,43,.18);
  --shadow-lg:0 24px 60px -20px rgba(10,17,28,.28);
}

@media (min-width:1600px){
  :root{ --gutter:2.5rem; }
}

/* -------------------- 2. RESET -------------------- */
*,*::before,*::after{ box-sizing:border-box; }
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:96px;
}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:var(--text-body);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,svg,video{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p,figure,blockquote{ margin:0; }
button,input,textarea,select{ font:inherit; color:inherit; }
button{ background:none; border:none; cursor:pointer; }
input,textarea,select{ background:none; }
strong{ font-weight:600; }

:focus-visible{
  outline:2px solid var(--champagne-500);
  outline-offset:3px;
  border-radius:1px;
}

.skip-link{
  position:absolute;
  left:var(--space-sm);
  top:-60px;
  background:var(--navy-950);
  color:var(--cream-50);
  padding:.85rem 1.25rem;
  z-index:1000;
  font-size:var(--text-sm);
  transition:top var(--dur-fast) var(--ease);
  border-radius:var(--radius-sm);
}
.skip-link:focus{ top:var(--space-sm); }

/* -------------------- 3. TIPOGRAFÍA -------------------- */
.font-serif{ font-family:var(--font-serif); }

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.6em;
  font-family:var(--font-sans);
  font-size:var(--text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:600;
  color:var(--accent);
}
.eyebrow::before{
  content:"";
  width:28px; height:1px;
  background:var(--accent);
  display:inline-block;
}
.on-dark .eyebrow{ color:var(--champagne-300); }

h1,.h1{ font-family:var(--font-serif); font-size:var(--text-h1); font-weight:500; line-height:1.08; letter-spacing:-.01em; color:var(--primary-strong); }
h2,.h2{ font-family:var(--font-serif); font-size:var(--text-h2); font-weight:500; line-height:1.14; letter-spacing:-.005em; color:var(--primary-strong); }
h3,.h3{ font-family:var(--font-serif); font-size:var(--text-h3); font-weight:500; line-height:1.24; color:var(--primary-strong); }
h4,.h4{ font-family:var(--font-sans); font-size:var(--text-h4); font-weight:600; line-height:1.35; color:var(--primary-strong); }
.display{ font-family:var(--font-serif); font-size:var(--text-display); font-weight:500; line-height:1.03; letter-spacing:-.015em; color:var(--primary-strong); }
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4,.on-dark .display,
.hero h1,.hero h2,.hero h3,.hero h4,.hero .display,
.page-hero h1,.page-hero h2,.page-hero h3,.page-hero h4,.page-hero .display,
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4,.section--dark .display,
.error-page h1,.error-page h2,.error-page h3,.error-page h4,.error-page .display
{ color:var(--cream-50); }

.lede{ font-size:var(--text-lg); line-height:1.55; color:var(--text-muted); font-weight:400; }
.on-dark .lede,
.hero .lede,
.page-hero .lede,
.section--dark .lede,
.error-page .lede{ color:#C7D0DC; }
p{ color:var(--text); }
.on-dark p,.on-dark li,
.hero p,.hero li,
.page-hero p,.page-hero li,
.section--dark p,.section--dark li,
.error-page p,.error-page li{ color:#D6DCE5; }
small,.text-sm{ font-size:var(--text-sm); }
.text-muted{ color:var(--text-muted); }
.on-dark .text-muted{ color:#9AA7B8; }

/* -------------------- 4. LAYOUT -------------------- */
.container{
  width:100%;
  max-width:var(--container-w);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.container--narrow{ max-width:var(--container-w-narrow); }

.section{ padding-block:var(--space-2xl); }
.section--tight{ padding-block:var(--space-xl); }
.section--dark{ background:var(--navy-950); color:var(--cream-50); }
.section--muted{ background:var(--surface-muted); }
.section--surface{ background:var(--surface); }

.grid{ display:grid; gap:var(--space-md); }
.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:1180px){
  .grid-3,.grid-4{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:900px){
  .grid-2{ grid-template-columns:1fr; }
}
@media (max-width:640px){
  .grid-3,.grid-4{ grid-template-columns:1fr; }
}

.divider{
  border:none;
  height:1px;
  background:var(--border);
  margin-block:var(--space-lg);
}
.on-dark .divider{ background:rgba(255,255,255,.12); }

.line-draw{ width:64px; height:2px; position:relative; background:var(--border-strong); overflow:hidden; }
.line-draw::after{
  content:"";
  position:absolute; inset:0;
  background:var(--accent);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform var(--dur-slow) var(--ease);
}
.is-visible .line-draw::after{ transform:scaleX(1); }

/* -------------------- 5. BOTONES -------------------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  padding:.95rem 1.9rem;
  font-family:var(--font-sans);
  font-size:.95rem;
  font-weight:600;
  letter-spacing:.01em;
  border-radius:var(--radius-sm);
  transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
  white-space:nowrap;
}
.btn:active{ transform:translateY(1px); }
.btn-primary{
  background:var(--navy-950);
  color:var(--cream-50);
  border:1px solid var(--navy-950);
}
.btn-primary:hover{ background:var(--navy-800); border-color:var(--navy-800); }
.on-dark .btn-primary{ background:var(--cream-50); color:var(--navy-950); border-color:var(--cream-50); }
.on-dark .btn-primary:hover{ background:var(--champagne-300); border-color:var(--champagne-300); }

.btn-ghost{
  background:transparent;
  color:var(--primary-strong);
  border:1px solid var(--border-strong);
}
.btn-ghost:hover{ border-color:var(--primary-strong); background:rgba(14,26,43,.04); }
.on-dark .btn-ghost,
.hero .btn-ghost,
.page-hero .btn-ghost,
.section--dark .btn-ghost,
.cookie-banner .btn-ghost,
.error-page .btn-ghost{ color:var(--cream-50); border-color:rgba(255,255,255,.35); }
.on-dark .btn-ghost:hover,
.hero .btn-ghost:hover,
.page-hero .btn-ghost:hover,
.section--dark .btn-ghost:hover,
.cookie-banner .btn-ghost:hover,
.error-page .btn-ghost:hover{ border-color:#fff; background:rgba(255,255,255,.06); }

.btn-text{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-weight:600;
  font-size:.95rem;
  color:var(--primary-strong);
  padding-block:.2rem;
  border-bottom:1px solid var(--border-strong);
  transition:border-color var(--dur-fast) var(--ease), gap var(--dur-fast) var(--ease);
}
.btn-text:hover{ border-color:var(--accent); gap:.75rem; }
.on-dark .btn-text{ color:var(--cream-50); border-color:rgba(255,255,255,.35); }
.on-dark .btn-text:hover{ border-color:var(--champagne-300); }
.btn-text svg{ width:16px; height:16px; transition:transform var(--dur-fast) var(--ease); }
.btn-text:hover svg{ transform:translateX(3px); }

/* -------------------- 6. HEADER -------------------- */
.site-header{
  position:fixed;
  top:0; left:0; right:0;
  z-index:200;
  padding-block:1.6rem;
  transition:background var(--dur-base) var(--ease), padding var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease);
  border-bottom:1px solid transparent;
}
.site-header .container{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-md); }
.site-header,.site-header a,.site-header button{ color:var(--cream-50); }
.site-header.is-scrolled{
  background:rgba(10,17,28,.92);
  backdrop-filter:blur(10px);
  padding-block:1rem;
  box-shadow:var(--shadow-md);
  border-color:rgba(255,255,255,.08);
}
.page-header-solid .site-header{ background:var(--navy-950); border-color:rgba(255,255,255,.08); }

.brand{ display:flex; align-items:center; gap:.7rem; }
.brand-mark{ width:38px; height:38px; flex:none; }
.brand-word{ display:flex; flex-direction:column; line-height:1.05; }
.brand-word strong{ font-family:var(--font-serif); font-size:1.18rem; font-weight:500; letter-spacing:.01em; }
.brand-word span{ font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--champagne-300); margin-top:.25rem; }

.nav-desktop{ display:flex; align-items:center; gap:var(--space-lg); }
.nav-desktop ul{ display:flex; gap:2.1rem; }
.nav-desktop a{
  font-size:.92rem; font-weight:500; position:relative; padding-block:.3rem;
}
.nav-desktop a::after{
  content:""; position:absolute; left:0; right:0; bottom:-2px; height:1px;
  background:var(--champagne-300); transform:scaleX(0); transform-origin:left;
  transition:transform var(--dur-fast) var(--ease);
}
.nav-desktop a:hover::after,.nav-desktop a[aria-current="page"]::after{ transform:scaleX(1); }
.nav-desktop a[aria-current="page"]{ color:var(--champagne-300); }

.header-actions{ display:flex; align-items:center; gap:1.1rem; }
.header-phone{ display:flex; align-items:center; gap:.5rem; font-size:.88rem; font-weight:500; }
.header-phone svg{ width:16px; height:16px; }

.nav-toggle{ display:none; width:40px; height:40px; align-items:center; justify-content:center; }
.nav-toggle span{ position:relative; width:22px; height:14px; display:block; }
.nav-toggle span::before,.nav-toggle span::after{
  content:""; position:absolute; left:0; right:0; height:1px; background:currentColor;
  transition:transform var(--dur-fast) var(--ease), top var(--dur-fast) var(--ease);
}
.nav-toggle span::before{ top:0; }
.nav-toggle span::after{ top:100%; }

.mobile-nav{
  position:fixed; inset:0; z-index:190;
  background:var(--navy-950);
  display:flex; flex-direction:column;
  padding:6.5rem var(--gutter) var(--space-lg);
  transform:translateY(-100%);
  transition:transform var(--dur-base) var(--ease);
}
.mobile-nav.is-open{ transform:translateY(0); }
.mobile-nav ul{ display:flex; flex-direction:column; gap:.4rem; }
.mobile-nav a{
  font-family:var(--font-serif); font-size:2rem; color:var(--cream-50);
  padding-block:.6rem; border-bottom:1px solid rgba(255,255,255,.1); display:block;
}
.mobile-nav-footer{ margin-top:auto; padding-top:var(--space-lg); display:flex; flex-direction:column; gap:1rem; }
.mobile-nav-footer a{ color:var(--champagne-300); font-weight:600; }
body.nav-open{ overflow:hidden; }

@media (max-width:960px){
  .nav-desktop{ display:none; }
  .nav-toggle{ display:inline-flex; }
}

/* -------------------- 7. HERO -------------------- */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:flex-end;
  background:var(--navy-950);
  overflow:hidden;
  padding-top:8rem;
}
.hero-media{ position:absolute; inset:0; z-index:0; }
.hero-media img{ width:100%; height:100%; object-fit:cover; object-position:center 30%; opacity:.55; }
.hero-media::after{
  content:"";
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(10,17,28,.35) 0%, rgba(10,17,28,.55) 45%, rgba(10,17,28,.96) 100%),
    linear-gradient(90deg, rgba(10,17,28,.92) 0%, rgba(10,17,28,.35) 55%);
}
.hero-content{ position:relative; z-index:1; width:100%; padding-bottom:var(--space-2xl); }
.hero-kicker{ color:var(--champagne-300); font-size:var(--text-eyebrow); letter-spacing:.16em; text-transform:uppercase; font-weight:600; margin-bottom:1.4rem; display:block; }
.hero h1{ color:var(--cream-50); max-width:16ch; }
.hero .lede{ max-width:46ch; margin-top:1.6rem; color:#C7D0DC; }
.hero-actions{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:2.4rem; }
.hero-meta{
  margin-top:var(--space-xl);
  padding-top:var(--space-md);
  border-top:1px solid rgba(255,255,255,.14);
  display:flex; flex-wrap:wrap; gap:var(--space-lg);
}
.hero-meta div{ display:flex; flex-direction:column; gap:.3rem; }
.hero-meta strong{ font-family:var(--font-serif); font-size:1.6rem; color:var(--cream-50); font-weight:500; }
.hero-meta span{ font-size:.8rem; color:#9AA7B8; letter-spacing:.03em; }

.scroll-cue{
  position:absolute; right:var(--gutter); bottom:var(--space-lg); z-index:1;
  display:flex; flex-direction:column; align-items:center; gap:.6rem;
  color:#9AA7B8; font-size:.7rem; letter-spacing:.14em; text-transform:uppercase;
  writing-mode:vertical-rl;
}
.scroll-cue .line{ width:1px; height:52px; background:linear-gradient(180deg, transparent, #9AA7B8 60%, transparent); }
@media (max-width:700px){ .scroll-cue{ display:none; } }

/* -------------------- 8. PAGE HEADER (páginas interiores) -------------------- */
.page-hero{
  background:var(--navy-950);
  color:var(--cream-50);
  padding-top:11rem;
  padding-bottom:var(--space-xl);
}
.breadcrumbs{ display:flex; gap:.5rem; font-size:.82rem; color:#9AA7B8; margin-bottom:1.6rem; flex-wrap:wrap; }
.breadcrumbs a:hover{ color:var(--champagne-300); }
.page-hero h1{ max-width:20ch; }
.page-hero .lede{ max-width:60ch; margin-top:1.3rem; }

/* -------------------- 9. TARJETAS -------------------- */
.card{
  background:var(--surface);
  border:1px solid var(--border);
  padding:var(--space-md);
  border-radius:var(--radius-md);
  transition:border-color var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease), transform var(--dur-base) var(--ease);
}
.card:hover{ border-color:var(--border-strong); box-shadow:var(--shadow-md); transform:translateY(-3px); }

.specialty-card{ display:flex; flex-direction:column; gap:1.1rem; height:100%; }
.specialty-card .num{ font-family:var(--font-serif); font-size:1.1rem; color:var(--accent); }
.specialty-card h3{ font-size:1.35rem; }
.specialty-card p{ color:var(--text-muted); font-size:.97rem; }
.specialty-card ul{ display:flex; flex-direction:column; gap:.55rem; margin-top:.3rem; }
.specialty-card ul li{ font-size:.9rem; color:var(--text-muted); padding-left:1.1rem; position:relative; }
.specialty-card ul li::before{ content:""; position:absolute; left:0; top:.55em; width:5px; height:5px; background:var(--accent); border-radius:50%; }
.specialty-card .btn-text{ margin-top:auto; padding-top:.5rem; }

.value-card{ display:flex; flex-direction:column; gap:.9rem; }
.value-card .icon{ width:42px; height:42px; color:var(--accent); }
.value-card h4{ font-size:1.1rem; }
.value-card p{ font-size:.94rem; color:var(--text-muted); }

.media-card{ display:block; }
.media-card figure{ overflow:hidden; border-radius:var(--radius-md); aspect-ratio:16/10; }
.media-card img{ width:100%; height:100%; object-fit:cover; transition:transform var(--dur-slow) var(--ease); }
.media-card:hover img{ transform:scale(1.04); }
.media-card .kicker{ display:flex; align-items:center; justify-content:space-between; margin-top:1rem; font-size:.78rem; color:var(--text-muted); letter-spacing:.05em; text-transform:uppercase; }
.media-card h4{ margin-top:.5rem; font-size:1.05rem; }

/* -------------------- 10. TRAYECTORIA / TIMELINE -------------------- */
.timeline{ position:relative; margin-top:var(--space-lg); }
.timeline::before{
  content:""; position:absolute; left:110px; top:0; bottom:0; width:1px; background:var(--border-strong);
}
.timeline-item{ position:relative; display:grid; grid-template-columns:110px 1fr; gap:var(--space-md); padding-block:var(--space-md); }
.timeline-item:not(:last-child){ border-bottom:1px solid var(--border); }
.timeline-year{ font-family:var(--font-serif); font-size:1.5rem; color:var(--primary-strong); position:relative; }
.timeline-year::after{
  content:""; position:absolute; left:110px; top:.5em; width:9px; height:9px; margin-left:-4.5px;
  background:var(--accent); border-radius:50%; border:2px solid var(--bg);
}
.timeline-body h4{ margin-bottom:.4rem; }
.timeline-body p{ color:var(--text-muted); font-size:.96rem; max-width:56ch; }
@media (max-width:640px){
  .timeline::before{ left:52px; }
  .timeline-item{ grid-template-columns:52px 1fr; gap:1.2rem; }
  .timeline-year{ font-size:1.05rem; }
  .timeline-year::after{ left:52px; }
}

/* -------------------- 11. PROCESO -------------------- */
.process-list{ counter-reset:step; }
.process-item{
  counter-increment:step;
  display:grid; grid-template-columns:90px 1fr; gap:var(--space-md);
  padding-block:var(--space-md);
  border-top:1px solid var(--border);
}
.process-item:last-child{ border-bottom:1px solid var(--border); }
.process-item::before{
  content:counter(step, decimal-leading-zero);
  font-family:var(--font-serif); font-size:1.8rem; color:var(--accent);
}
@media (max-width:640px){ .process-item{ grid-template-columns:52px 1fr; } .process-item::before{ font-size:1.3rem; } }

/* -------------------- 12. MEDIOS / PRENSA -------------------- */
.press-item{
  display:grid; grid-template-columns:170px 1fr auto; gap:var(--space-md); align-items:center;
  padding-block:var(--space-sm); border-top:1px solid var(--border);
}
.press-item:last-child{ border-bottom:1px solid var(--border); }
.press-outlet{ font-family:var(--font-serif); font-size:1.05rem; color:var(--primary-strong); }
.press-date{ font-size:.78rem; color:var(--text-muted); display:block; margin-top:.2rem; }
.press-title{ font-size:.98rem; }
@media (max-width:760px){
  .press-item{ grid-template-columns:1fr; gap:.6rem; }
}

/* -------------------- 13. TESTIMONIOS -------------------- */
.testimonial{
  background:var(--surface);
  border:1px solid var(--border);
  padding:var(--space-lg);
  border-radius:var(--radius-md);
}
.testimonial blockquote{ font-family:var(--font-serif); font-size:1.35rem; line-height:1.4; color:var(--primary-strong); }
.testimonial cite{ display:block; margin-top:1.4rem; font-style:normal; font-size:.88rem; color:var(--text-muted); }
.testimonial-empty{
  border:1px dashed var(--border-strong);
  border-radius:var(--radius-md);
  padding:var(--space-lg);
  text-align:center;
  color:var(--text-muted);
  font-size:.92rem;
}

/* -------------------- 14. UBICACIÓN / CONTACTO -------------------- */
.contact-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:var(--space-2xl); align-items:start; }
@media (max-width:940px){ .contact-grid{ grid-template-columns:1fr; gap:var(--space-xl); } }

.contact-method{ display:flex; gap:1rem; align-items:flex-start; padding-block:var(--space-sm); border-top:1px solid var(--border); }
.contact-method:last-child{ border-bottom:1px solid var(--border); }
.contact-method .icon{ width:22px; height:22px; color:var(--accent); flex:none; margin-top:.15rem; }
.contact-method h4{ font-size:1rem; margin-bottom:.25rem; }
.contact-method a,.contact-method p{ color:var(--text-muted); font-size:.95rem; }
.contact-method a:hover{ color:var(--primary-strong); }

.form-field{ display:flex; flex-direction:column; gap:.5rem; margin-bottom:1.4rem; }
.form-field label{ font-size:.85rem; font-weight:600; color:var(--primary-strong); }
.form-field .req{ color:var(--accent); }
.form-field input,.form-field select,.form-field textarea{
  border:1px solid var(--border-strong);
  background:var(--surface);
  padding:.9rem 1rem;
  border-radius:var(--radius-sm);
  font-size:.96rem;
  transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{
  border-color:var(--primary); box-shadow:0 0 0 3px rgba(14,26,43,.08); outline:none;
}
.form-field textarea{ resize:vertical; min-height:130px; }
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.4rem; }
@media (max-width:600px){ .form-row{ grid-template-columns:1fr; } }
.form-consent{ display:flex; gap:.7rem; align-items:flex-start; font-size:.85rem; color:var(--text-muted); margin-bottom:1.6rem; }
.form-consent input{ margin-top:.25rem; }
.form-note{ font-size:.8rem; color:var(--text-muted); margin-top:1rem; }
.form-status{ font-size:.9rem; margin-top:1rem; padding:.9rem 1rem; border-radius:var(--radius-sm); display:none; }
.form-status.is-visible{ display:block; }
.form-status.success{ background:#E7F0E6; color:#2F5233; display:block; }
.form-status.error{ background:#F6E7E5; color:#7A2E24; display:block; }

.map-frame{ border:1px solid var(--border); border-radius:var(--radius-md); overflow:hidden; aspect-ratio:4/3; filter:grayscale(.25) contrast(1.05); }
.map-frame iframe{ width:100%; height:100%; border:0; }

/* -------------------- 15. STICKY CTA MÓVIL -------------------- */
.mobile-cta{
  position:fixed; left:0; right:0; bottom:0; z-index:150;
  display:none;
  background:var(--navy-950);
  padding:.85rem var(--gutter);
  gap:.75rem;
  box-shadow:0 -8px 24px rgba(0,0,0,.18);
}
.mobile-cta a{
  flex:1; display:flex; align-items:center; justify-content:center; gap:.5rem;
  padding:.85rem; border-radius:var(--radius-sm); font-size:.88rem; font-weight:600;
}
.mobile-cta .call{ background:transparent; border:1px solid rgba(255,255,255,.35); color:var(--cream-50); }
.mobile-cta .whatsapp{ background:var(--champagne-500); color:var(--navy-950); }
@media (max-width:760px){
  .mobile-cta{ display:flex; }
  body{ padding-bottom:74px; }
}

/* -------------------- 16. FOOTER -------------------- */
.site-footer{ background:var(--navy-950); color:#B9C2CE; padding-block:var(--space-xl) var(--space-lg); }
.footer-top{ display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:var(--space-lg); padding-bottom:var(--space-lg); }
@media (max-width:900px){ .footer-top{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .footer-top{ grid-template-columns:1fr; } }
.footer-brand .brand-word strong{ color:var(--cream-50); }
.footer-brand p{ margin-top:1.2rem; font-size:.92rem; max-width:34ch; color:#9AA7B8; }
.footer-col h5{ font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; color:var(--champagne-300); margin-bottom:1.1rem; }
.footer-col li{ margin-bottom:.7rem; }
.footer-col a{ font-size:.92rem; color:#B9C2CE; }
.footer-col a:hover{ color:var(--cream-50); }
.footer-bottom{
  padding-top:var(--space-md); border-top:1px solid rgba(255,255,255,.1);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem;
  font-size:.8rem; color:#7C879A;
}
.footer-bottom nav{ display:flex; gap:1.4rem; flex-wrap:wrap; }
.footer-bottom a:hover{ color:var(--cream-50); }
.footer-social{ display:flex; gap:.9rem; }
.footer-social a{ width:34px; height:34px; border:1px solid rgba(255,255,255,.18); border-radius:50%; display:flex; align-items:center; justify-content:center; transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease); }
.footer-social a:hover{ border-color:var(--champagne-300); background:rgba(255,255,255,.05); }
.footer-social svg{ width:15px; height:15px; }

.cookie-banner{
  position:fixed; left:var(--gutter); right:var(--gutter); bottom:var(--space-sm); z-index:300;
  max-width:560px;
  background:var(--navy-950); color:var(--cream-50);
  padding:1.4rem 1.6rem; border-radius:var(--radius-md); box-shadow:var(--shadow-lg);
  display:none; gap:1rem; flex-direction:column;
  border:1px solid rgba(255,255,255,.1);
}
.cookie-banner.is-visible{ display:flex; }
.cookie-banner p{ font-size:.86rem; color:#C7D0DC; }
.cookie-actions{ display:flex; gap:.8rem; flex-wrap:wrap; }
.cookie-actions .btn{ padding:.7rem 1.3rem; font-size:.85rem; }

/* -------------------- 17. REVEAL / SCROLL -------------------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease); }
.reveal.is-visible{ opacity:1; transform:none; }
.reveal[data-split]{ opacity:1; transform:none; }
.reveal[data-split] .split-line{ overflow:hidden; display:inline-block; vertical-align:top; }
.reveal[data-split] .split-line span{ display:inline-block; transform:translateY(110%); transition:transform var(--dur-slow) var(--ease); }
.reveal[data-split].is-visible .split-line span{ transform:translateY(0); }
.reveal-stagger.is-visible > *{ transition-delay:calc(var(--stagger-i, 0) * 80ms); }

.counter-value{ font-variant-numeric:tabular-nums; }

/* -------------------- 18. UTILIDADES -------------------- */
.flex{ display:flex; }
.items-center{ align-items:center; }
.justify-between{ justify-content:space-between; }
.gap-sm{ gap:.75rem; }
.mt-0{ margin-top:0 !important; }
.text-center{ text-align:center; }
.max-w-content{ max-width:60ch; }
.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; }
.tag{
  display:inline-flex; align-items:center; padding:.3rem .7rem; border:1px solid var(--border-strong);
  border-radius:20px; font-size:.75rem; letter-spacing:.04em; color:var(--text-muted);
}
.pending{
  display:inline-block; margin-left:.4rem; padding:.1rem .5rem; font-size:.68rem; letter-spacing:.04em;
  border:1px dashed var(--border-strong); border-radius:20px; color:var(--text-muted); vertical-align:middle;
}

/* -------------------- 19. ACCESIBILIDAD / MOTION -------------------- */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .reveal,.reveal[data-split] .split-line span{ transition-duration:1ms !important; }
  .media-card:hover img{ transform:none; }
}

/* -------------------- 20. PÁGINAS LEGALES -------------------- */
.legal-content h2{ font-size:1.3rem; margin-top:var(--space-lg); margin-bottom:.8rem; }
.legal-content h2:first-child{ margin-top:0; }
.legal-content p,.legal-content li{ color:var(--text-muted); font-size:.98rem; margin-bottom:.9rem; }
.legal-content li{ padding-left:1.2rem; position:relative; }
.legal-content li::before{ content:"—"; position:absolute; left:0; color:var(--accent); }
.legal-content ul{ margin-bottom:1.2rem; }

/* -------------------- 21. 404 -------------------- */
.error-page{ min-height:100svh; display:flex; align-items:center; background:var(--navy-950); color:var(--cream-50); padding-top:6rem; }
.error-page .display{ color:var(--cream-50); }
