/* ===========================================================
   Estudio Jurídico Leonetti — Design tokens & shared styles
   =========================================================== */

:root{
  /* Brand */
  --navy-900:#0b1f36;
  --navy-800:#122b47;
  --navy-700:#1a3a5c;
  --slate-600:#5c7a9c;
  --slate-500:#7593b3;
  --bronze:#b08a5a;
  --bronze-soft:#cba573;
  --green-wa:#2f9e63;
  --green-wa-dark:#257d4e;

  /* Surfaces & text (light) */
  --bg:#f6f7f9;
  --surface:#ffffff;
  --surface-2:#eef1f5;
  --ink:#16212f;
  --ink-soft:#3d4a5a;
  --muted:#647184;
  --line:#e1e5ec;
  --line-strong:#c9d0db;

  --shadow-1: 0 1px 2px rgba(16,32,52,.06), 0 1px 1px rgba(16,32,52,.04);
  --shadow-2: 0 12px 32px -12px rgba(11,31,54,.18);
  --shadow-3: 0 24px 60px -20px rgba(11,31,54,.28);

  --radius-s: 8px;
  --radius-m: 14px;
  --radius-l: 22px;

  --container: 1180px;
  --gutter: 24px;

  color-scheme: light;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
[hidden]{ display:none !important; }

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0b131e;
    --surface:#101b28;
    --surface-2:#152232;
    --ink:#e9eef4;
    --ink-soft:#c3ccd8;
    --muted:#8ea0b3;
    --line:#22303f;
    --line-strong:#2c3d4f;
    --slate-600:#89a7c7;
    --slate-500:#9db6d2;
    --bronze:#c99e6c;
    color-scheme: dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0b131e;
  --surface:#101b28;
  --surface-2:#152232;
  --ink:#e9eef4;
  --ink-soft:#c3ccd8;
  --muted:#8ea0b3;
  --line:#22303f;
  --line-strong:#2c3d4f;
  --slate-600:#89a7c7;
  --slate-500:#9db6d2;
  --bronze:#c99e6c;
  color-scheme: dark;
}

*,*::before,*::after{ box-sizing:border-box; }
html,body{ height:auto; }
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:"Public Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  padding-inline:0;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{
  font-family:"Fraunces","Iowan Old Style",Georgia,serif;
  font-weight:600;
  color:var(--ink);
  margin:0 0 .5em;
  text-wrap:balance;
  letter-spacing:-0.01em;
}
p{ margin:0 0 1em; color:var(--ink-soft); }
.mono{ font-family:"IBM Plex Mono",ui-monospace,Consolas,monospace; }

.wrap{
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
section{ padding-block: clamp(56px,8vw,104px); }
.section-tight{ padding-block: clamp(40px,6vw,72px); }

.eyebrow{
  font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:12.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--bronze);
  font-weight:600;
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-bottom:14px;
}
.eyebrow::before{
  content:"";
  width:22px; height:1.5px;
  background:var(--bronze);
  display:inline-block;
}

h1{ font-size:clamp(2.1rem,4.6vw,3.6rem); line-height:1.06; }
h2{ font-size:clamp(1.7rem,3.2vw,2.5rem); line-height:1.14; }
h3{ font-size:clamp(1.15rem,1.6vw,1.4rem); line-height:1.3; }
.lede{ font-size:clamp(1.05rem,1.6vw,1.2rem); color:var(--ink-soft); max-width:60ch; }

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:14px 26px;
  border-radius:999px;
  font-weight:600;
  font-size:.98rem;
  border:1.5px solid transparent;
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease, color .15s ease;
  white-space:nowrap;
}
.btn:active{ transform:translateY(1px); }
.btn-primary{
  background:var(--navy-800);
  color:#fff;
  box-shadow:var(--shadow-1);
}
.btn-primary:hover{ background:var(--navy-700); box-shadow:var(--shadow-2); }
.btn-outline{
  background:transparent;
  border-color:var(--line-strong);
  color:var(--ink);
}
.btn-outline:hover{ border-color:var(--slate-600); color:var(--slate-600); }
.btn-ghost-light{
  background:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.35);
  color:#fff;
  backdrop-filter:blur(6px);
}
.btn-ghost-light:hover{ background:rgba(255,255,255,.16); border-color:#fff; }
.btn-wa{
  background:var(--green-wa);
  color:#fff;
}
.btn-wa:hover{ background:var(--green-wa-dark); }
.btn-sm{ padding:10px 18px; font-size:.88rem; }
.btn svg{ width:18px; height:18px; flex:none; }

/* ---------- Nav ---------- */
.nav{
  position:sticky; top:env(safe-area-inset-top,0px);
  z-index:60;
  background:color-mix(in srgb, var(--surface) 92%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:20px;
  padding-block:14px;
}
.brand{ display:flex; align-items:center; gap:12px; }
.brand img{ height:34px; width:auto; }
.brand-text{ display:flex; flex-direction:column; line-height:1.05; }
.brand-text b{ font-family:"Fraunces",serif; font-size:1.06rem; font-weight:600; letter-spacing:.01em; color:var(--ink); }
.brand-text span{ font-family:"IBM Plex Mono",monospace; font-size:.6rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); }

.nav-links{ display:flex; align-items:center; gap:30px; }
.nav-links a{
  font-size:.92rem; font-weight:600; color:var(--ink-soft);
  padding-block:6px; position:relative;
}
.nav-links a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:2px;
  background:var(--bronze); transform:scaleX(0); transform-origin:left;
  transition:transform .2s ease;
}
.nav-links a:hover{ color:var(--ink); }
.nav-links a:hover::after{ transform:scaleX(1); }
.nav-links a.active{ color:var(--ink); }
.nav-cta{ display:flex; align-items:center; gap:12px; }
.nav-burger{
  display:none;
  width:42px; height:42px; border-radius:10px;
  border:1px solid var(--line-strong);
  background:var(--surface);
  align-items:center; justify-content:center;
  cursor:pointer;
}
.nav-burger span, .nav-burger span::before, .nav-burger span::after{
  content:""; display:block; width:18px; height:2px; background:var(--ink);
  position:relative; transition:transform .2s ease, opacity .2s ease;
}
.nav-burger span::before{ position:absolute; top:-6px; }
.nav-burger span::after{ position:absolute; top:6px; }
.nav-burger[aria-expanded="true"] span{ background:transparent; }
.nav-burger[aria-expanded="true"] span::before{ transform:rotate(45deg); top:0; }
.nav-burger[aria-expanded="true"] span::after{ transform:rotate(-45deg); top:0; }

.mobile-panel{
  display:none;
  border-top:1px solid var(--line);
  background:var(--surface);
}
.mobile-panel.open{ display:block; }
.mobile-panel .wrap{ padding-block:18px; display:flex; flex-direction:column; gap:4px; }
.mobile-panel a{
  padding:12px 4px; font-weight:600; border-bottom:1px solid var(--line);
  font-size:1rem;
}
.mobile-panel .btn{ margin-top:14px; }

@media (max-width:900px){
  .nav-links{ display:none; }
  .nav-cta .btn-outline{ display:none; }
  .nav-burger{ display:flex; }
}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  background:
    radial-gradient(1100px 480px at 85% -10%, rgba(176,138,90,.20), transparent 60%),
    linear-gradient(180deg, var(--navy-900), var(--navy-800) 60%, var(--navy-700));
  color:#fff;
  overflow:hidden;
}
.hero::before{
  content:"";
  position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size:64px 64px;
  mask-image:linear-gradient(180deg, rgba(0,0,0,.6), transparent 75%);
  pointer-events:none;
}
.hero-inner{
  position:relative;
  padding-block:clamp(64px,10vw,120px) clamp(56px,8vw,96px);
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:48px;
  align-items:end;
}
.hero-kicker{
  font-family:"IBM Plex Mono",monospace;
  font-size:12.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--bronze-soft);
  display:flex; align-items:center; gap:10px; margin-bottom:20px;
}
.hero-kicker::before{ content:""; width:22px; height:1.5px; background:var(--bronze-soft); }
.hero h1{ color:#fff; max-width:16ch; }
.hero .lede{ color:rgba(255,255,255,.78); max-width:52ch; margin-top:14px; }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.hero-stats{
  display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
  border-top:1px solid rgba(255,255,255,.16);
  margin-top:52px; padding-top:28px;
}
.hero-stats .stat b{
  display:block; font-family:"Fraunces",serif; font-size:clamp(1.5rem,2.4vw,2.1rem); color:#fff;
}
.hero-stats .stat span{
  font-size:.82rem; color:rgba(255,255,255,.65); line-height:1.35; display:block; margin-top:4px;
}
.hero-panel{
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.16);
  border-radius:var(--radius-l);
  padding:26px;
  backdrop-filter:blur(6px);
}
.hero-panel h3{ color:#fff; font-size:1.05rem; margin-bottom:14px; }
.hero-panel ul{ list-style:none; margin:0 0 18px; padding:0; display:flex; flex-direction:column; gap:12px; }
.hero-panel li{
  display:flex; gap:10px; align-items:flex-start;
  font-size:.92rem; color:rgba(255,255,255,.82);
}
.hero-panel li svg{ flex:none; width:18px; height:18px; color:var(--bronze-soft); margin-top:2px; }
.hero-panel .btn{ width:100%; }

@media (max-width:960px){
  .hero-inner{ grid-template-columns:1fr; }
  .hero-stats{ grid-template-columns:1fr 1fr 1fr; gap:14px; }
}
@media (max-width:520px){
  .hero-stats{ grid-template-columns:1fr; }
  .hero-ctas .btn{ width:100%; }
}

/* ---------- Section headers ---------- */
.section-head{ max-width:64ch; margin-bottom:44px; }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head-row{
  display:flex; justify-content:space-between; align-items:flex-end; gap:24px;
  margin-bottom:44px;
}
@media (max-width:720px){ .section-head-row{ flex-direction:column; align-items:flex-start; } }

/* ---------- Cards: ¿En qué podemos ayudarte? ---------- */
.help-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
}
@media (max-width:940px){ .help-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .help-grid{ grid-template-columns:1fr; } }

.help-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-m);
  padding:26px 24px;
  display:flex; flex-direction:column; gap:14px;
  transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.help-card:hover{ border-color:var(--slate-500); transform:translateY(-3px); box-shadow:var(--shadow-2); }
.help-card .icon{
  width:46px; height:46px; border-radius:12px;
  background:var(--surface-2);
  display:flex; align-items:center; justify-content:center;
  color:var(--navy-700);
}
:root[data-theme="dark"] .help-card .icon{ color:var(--slate-500); }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .help-card .icon{ color:var(--slate-500); } }
.help-card .icon svg{ width:24px; height:24px; }
.help-card h3{ margin-bottom:2px; }
.help-card p{ font-size:.94rem; margin-bottom:4px; flex:1; }
.help-card .card-link{
  display:inline-flex; align-items:center; gap:6px;
  font-weight:700; font-size:.88rem; color:var(--navy-700);
}
:root[data-theme="dark"] .help-card .card-link{ color:var(--slate-500); }
.help-card .card-link svg{ width:14px; height:14px; transition:transform .15s ease; }
.help-card:hover .card-link svg{ transform:translateX(3px); }

/* ---------- Two-column narrative sections ---------- */
.split{
  display:grid; grid-template-columns:.95fr 1.05fr; gap:56px; align-items:center;
}
.split.reverse{ grid-template-columns:1.05fr .95fr; }
.split.reverse .split-media{ order:2; }
@media (max-width:900px){
  .split, .split.reverse{ grid-template-columns:1fr; }
  .split.reverse .split-media{ order:0; }
}

.panel{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-l);
  padding:clamp(24px,3vw,36px);
}
.panel-dark{
  background:linear-gradient(165deg, var(--navy-800), var(--navy-900));
  border:1px solid rgba(255,255,255,.08);
  color:#fff;
}
.panel-dark p{ color:rgba(255,255,255,.75); }
.panel-dark h3{ color:#fff; }

.situation-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.situation-list li{
  display:flex; gap:14px; align-items:flex-start;
  padding:14px 16px;
  background:var(--surface-2);
  border-radius:var(--radius-s);
  font-size:.95rem; color:var(--ink-soft);
}
.panel-dark .situation-list li{ background:rgba(255,255,255,.06); color:rgba(255,255,255,.85); }
.situation-list li svg{ flex:none; width:20px; height:20px; color:var(--bronze); margin-top:1px; }

/* ---------- Photo (accidentes) ---------- */
.accident-photo{
  position:relative;
  margin:0 0 28px;
  border-radius:var(--radius-l);
  overflow:hidden;
  box-shadow:var(--shadow-2);
  aspect-ratio:16/9;
}
.accident-photo img{
  width:100%; height:100%;
  object-fit:cover;
  display:block;
}
.accident-photo::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(160deg, rgba(11,31,54,.38), rgba(11,31,54,0) 55%),
             linear-gradient(0deg, rgba(11,31,54,.28), transparent 40%);
  mix-blend-mode:multiply;
  pointer-events:none;
}

/* ---------- Numbered process ---------- */
.process{
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
  counter-reset:step;
  position:relative;
}
@media (max-width:860px){ .process{ grid-template-columns:1fr 1fr; row-gap:32px; } }
@media (max-width:520px){ .process{ grid-template-columns:1fr; } }
.step{
  position:relative;
  padding:0 20px 0 0;
}
.step:not(:last-child)::after{
  content:"";
  position:absolute; top:24px; left:56px; right:-6px; height:1px;
  background:var(--line-strong);
}
@media (max-width:860px){ .step:not(:last-child)::after{ display:none; } }
.step-num{
  font-family:"IBM Plex Mono",monospace;
  width:48px; height:48px;
  border-radius:50%;
  border:1.5px solid var(--line-strong);
  display:flex; align-items:center; justify-content:center;
  font-size:.95rem; font-weight:600; color:var(--navy-700);
  margin-bottom:18px;
  background:var(--surface);
  position:relative; z-index:1;
}
:root[data-theme="dark"] .step-num{ color:var(--slate-500); }
.step h4{ font-family:"Public Sans",sans-serif; font-weight:700; font-size:1.02rem; margin-bottom:6px; color:var(--ink); }
.step p{ font-size:.92rem; margin-bottom:0; }

/* ---------- Why Leonetti ---------- */
.why-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-l); overflow:hidden; }
@media (max-width:900px){ .why-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .why-grid{ grid-template-columns:1fr; } }
.why-item{ background:var(--surface); padding:28px 24px; display:flex; flex-direction:column; gap:10px; }
.why-item .num{ font-family:"IBM Plex Mono",monospace; color:var(--bronze); font-size:.8rem; letter-spacing:.08em; }
.why-item h4{ font-size:1.02rem; margin:0; font-family:"Public Sans"; font-weight:700; }
.why-item p{ font-size:.9rem; margin:0; }

/* ---------- Productores highlight band ---------- */
.producers-band{
  background:
    radial-gradient(900px 400px at 10% 0%, rgba(176,138,90,.16), transparent 60%),
    linear-gradient(180deg,var(--navy-900),var(--navy-800));
  color:#fff;
  position:relative;
  overflow:hidden;
}
.producers-band .eyebrow{ color:var(--bronze-soft); }
.producers-band .eyebrow::before{ background:var(--bronze-soft); }
.producers-band h2{ color:#fff; max-width:20ch; }
.producers-band .lede{ color:rgba(255,255,255,.78); }
.producers-inner{ display:grid; grid-template-columns:1.1fr .9fr; gap:48px; align-items:center; }
@media (max-width:900px){ .producers-inner{ grid-template-columns:1fr; } }
.pill-row{ display:flex; flex-wrap:wrap; gap:10px; margin-top:22px; }
.pill{
  font-size:.8rem; font-weight:600; padding:8px 14px; border-radius:999px;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.2); color:rgba(255,255,255,.9);
}

/* ---------- Services grid (productores page) ---------- */
.service-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
@media (max-width:900px){ .service-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .service-grid{ grid-template-columns:1fr; } }
.service-item{
  border:1px solid var(--line); border-radius:var(--radius-m); padding:20px;
  background:var(--surface);
  display:flex; gap:14px; align-items:flex-start;
}
.service-item svg{ flex:none; width:20px; height:20px; color:var(--bronze); margin-top:2px; }
.service-item h4{ font-family:"Public Sans"; font-weight:700; font-size:.96rem; margin:0 0 4px; }
.service-item p{ font-size:.87rem; margin:0; }

/* ---------- Note / disclaimer boxes ---------- */
.note{
  border-left:3px solid var(--bronze);
  background:var(--surface-2);
  padding:14px 18px;
  border-radius:0 var(--radius-s) var(--radius-s) 0;
  font-size:.87rem;
  color:var(--muted);
}

/* ---------- Blog / resources ---------- */
.blog-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
@media (max-width:900px){ .blog-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .blog-grid{ grid-template-columns:1fr; } }
.blog-card{
  border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden;
  background:var(--surface);
  display:flex; flex-direction:column;
  transition:transform .18s ease, box-shadow .18s ease;
}
.blog-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-2); }
.blog-card .tag{
  padding:20px 20px 0;
  font-family:"IBM Plex Mono",monospace; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase;
  color:var(--slate-600); font-weight:600;
}
.blog-card h4{ padding:10px 20px 0; font-family:"Fraunces",serif; font-size:1.08rem; margin:0; }
.blog-card p{ padding:8px 20px 20px; font-size:.88rem; margin:0; flex:1; }
.blog-card .read{ padding:0 20px 20px; font-size:.84rem; font-weight:700; color:var(--navy-700); display:flex; align-items:center; gap:6px; }
:root[data-theme="dark"] .blog-card .read{ color:var(--slate-500); }

/* ---------- Forms ---------- */
.form-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-l);
  padding:clamp(22px,3vw,34px);
  box-shadow:var(--shadow-1);
}
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:640px){ .form-grid{ grid-template-columns:1fr; } }
.field{ display:flex; flex-direction:column; gap:6px; }
.field.full{ grid-column:1 / -1; }
.field label{ font-size:.82rem; font-weight:600; color:var(--ink-soft); }
.field input, .field select, .field textarea{
  border:1.5px solid var(--line-strong);
  border-radius:var(--radius-s);
  padding:12px 14px;
  font-size:.95rem;
  font-family:inherit;
  background:var(--bg);
  color:var(--ink);
  resize:vertical;
}
.field input:focus, .field select:focus, .field textarea:focus{
  outline:2px solid var(--slate-600); outline-offset:1px; border-color:var(--slate-600);
}
.form-foot{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:22px; flex-wrap:wrap; }
.form-note{ font-size:.78rem; color:var(--muted); max-width:38ch; }
.form-success{
  display:none;
  align-items:center; gap:12px;
  background:color-mix(in srgb, var(--green-wa) 12%, transparent);
  border:1px solid color-mix(in srgb, var(--green-wa) 40%, transparent);
  color:var(--ink);
  padding:14px 16px; border-radius:var(--radius-s);
  margin-top:16px; font-size:.9rem;
}
.form-success.show{ display:flex; }
.form-success svg{ flex:none; width:20px; height:20px; color:var(--green-wa); }

/* ---------- CTA banners ---------- */
.cta-banner{
  background:linear-gradient(120deg, var(--navy-800), var(--navy-700));
  border-radius:var(--radius-l);
  padding:clamp(32px,5vw,56px);
  color:#fff;
  display:flex; align-items:center; justify-content:space-between; gap:28px; flex-wrap:wrap;
}
.cta-banner h3{ color:#fff; margin:0 0 6px; }
.cta-banner p{ color:rgba(255,255,255,.75); margin:0; max-width:48ch; }
.cta-banner .actions{ display:flex; gap:12px; flex-wrap:wrap; }

/* ---------- Footer ---------- */
footer{
  background:var(--navy-900);
  color:rgba(255,255,255,.7);
  padding-block:56px 28px;
}
.footer-grid{
  display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px;
  padding-bottom:36px; border-bottom:1px solid rgba(255,255,255,.12);
}
@media (max-width:860px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .footer-grid{ grid-template-columns:1fr; } }
.footer-brand{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.footer-brand img{ height:30px; }
.footer-brand b{ font-family:"Fraunces",serif; color:#fff; font-size:1.05rem; }
footer h5{
  color:#fff; font-family:"IBM Plex Mono",monospace; font-size:.75rem; letter-spacing:.1em;
  text-transform:uppercase; margin:0 0 16px; font-weight:600;
}
footer ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
footer a{ font-size:.9rem; color:rgba(255,255,255,.68); }
footer a:hover{ color:#fff; }
.footer-contact li{ display:flex; gap:10px; align-items:flex-start; font-size:.9rem; }
.footer-contact svg{ flex:none; width:17px; height:17px; margin-top:2px; color:var(--bronze-soft); }
.footer-bottom{
  display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap;
  padding-top:24px; font-size:.8rem; color:rgba(255,255,255,.5);
}
.footer-legal{
  font-size:.78rem; color:rgba(255,255,255,.45); max-width:900px; margin-top:18px; line-height:1.6;
}

/* ---------- Floating WhatsApp CTA (mobile) ---------- */
.float-wa{
  position:fixed; right:18px; bottom:calc(18px + env(safe-area-inset-bottom,0px));
  z-index:70;
  width:58px; height:58px; border-radius:50%;
  background:var(--green-wa);
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -6px rgba(47,158,99,.55);
  color:#fff;
}
.float-wa svg{ width:28px; height:28px; }
.float-wa-bar{
  display:none;
  position:fixed; left:0; right:0; bottom:0; z-index:69;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
  background:color-mix(in srgb, var(--surface) 94%, transparent);
  backdrop-filter:blur(10px);
  border-top:1px solid var(--line);
  gap:10px;
}
@media (max-width:720px){
  .float-wa{ width:52px; height:52px; }
  .float-wa svg{ width:24px; height:24px; }
}

/* ---------- Misc ---------- */
.tag-row{ display:flex; flex-wrap:wrap; gap:10px; }
.tag{
  font-size:.78rem; font-weight:600; padding:6px 12px; border-radius:999px;
  border:1px solid var(--line-strong); color:var(--ink-soft);
}
.divider{ height:1px; background:var(--line); border:0; margin:0; }
.center-text{ text-align:center; }
.small{ font-size:.85rem; }
.stack-gap-lg > * + *{ margin-top:1.4em; }
.mt-0{ margin-top:0 !important; }

.reveal{ opacity:1; }
@media (prefers-reduced-motion:no-preference){
  .reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
  .reveal.in{ opacity:1; transform:none; }
}
