/* ============================================================
   ANGELA CONTEMPLA — components.css
   ============================================================ */

/* ---------- Botoes ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:52px;padding:0 1.75rem;
  border-radius:var(--radius-full);
  font-family:var(--font-sans);font-weight:700;font-size:var(--text-base);
  white-space:nowrap;
  transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out),opacity var(--dur-fast);
  cursor:pointer;border:none;
}
.btn-gold{
  background:linear-gradient(135deg,var(--gold-light),var(--gold) 60%,var(--gold-deep));
  color:var(--black);
  box-shadow:0 12px 30px -12px rgba(212,175,55,.55);
}
.btn-gold:hover{ transform:translateY(-2px); box-shadow:0 18px 40px -14px rgba(212,175,55,.7); }
.btn-gold:active{ transform:translateY(0); }
.btn-outline{
  background:transparent;color:var(--cream);
  border:1px solid rgba(244,241,234,.35);
}
.btn-outline:hover{ border-color:var(--gold); color:var(--gold-light); }
.btn-ghost{ background:transparent;color:var(--gold-light);text-decoration:underline;text-underline-offset:4px; min-height:auto;padding:.25rem 0;}
.btn[disabled]{ opacity:.5; cursor:not-allowed; transform:none !important; box-shadow:none !important; }
.btn-block{ width:100%; }
.btn .spinner{ display:none; width:18px;height:18px;border-radius:50%;border:2px solid rgba(7,7,7,.35);border-top-color:var(--black);animation:spin .7s linear infinite; }
.btn.is-loading .spinner{ display:inline-block; }
.btn.is-loading .btn-label{ opacity:.75; }
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ---------- Topbar + Header ---------- */
.topbar{
  background:var(--graphite);
  color:var(--text-muted);
  font-size:var(--text-xs);
  height:var(--topbar-h);
  display:flex;align-items:center;
  border-bottom:1px solid rgba(244,241,234,.06);
}
.topbar .container{ display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.topbar-links{ display:flex; align-items:center; gap:1.25rem; }
.topbar-links a{ display:inline-flex; align-items:center; gap:.4rem; transition:color var(--dur-fast); }
.topbar-links a:hover{ color:var(--gold-light); }
.topbar-hide-mobile{ display:none; }
@media (min-width:640px){ .topbar-hide-mobile{ display:inline-flex; } }

.site-header{
  position:sticky;top:0;z-index:var(--z-header);
  background:rgba(7,7,7,.86);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(244,241,234,.08);
}
.site-header .container{
  height:var(--header-h);
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
}
.brand{ display:flex;align-items:center;flex:0 0 auto; }
.brand-logo{ display:block;width:clamp(198px,62vw,244px);height:auto;max-height:52px;object-fit:contain;object-position:left center; }
.footer-brand .brand-logo{ width:300px;max-width:100%;max-height:none; }
@media (min-width:480px){ .brand-logo{ width:252px; } }
@media (min-width:1024px){ .site-header .brand-logo{ width:230px; } }
@media (min-width:1180px){ .site-header .brand-logo{ width:270px; } }

.main-nav{ display:none; }
@media (min-width:1024px){
  .main-nav{ display:flex; align-items:center; gap:var(--space-6); }
  .main-nav a{ font-size:var(--text-sm); font-weight:600; color:var(--text-light); transition:color var(--dur-fast); position:relative; }
  .main-nav a::after{ content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--gold);transform:scaleX(0);transition:transform var(--dur-base) var(--ease-out); }
  .main-nav a:hover,.main-nav a[aria-current="page"]{ color:var(--cream); }
  .main-nav a:hover::after,.main-nav a[aria-current="page"]::after{ transform:scaleX(1); }
}
.header-actions{ display:flex; align-items:center; gap:1rem; }
.header-cta{ display:none; }
@media (min-width:1024px){ .header-cta{ display:inline-flex; padding:0 1.4rem; min-height:44px; font-size:var(--text-sm); } }

.nav-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;color:var(--cream);
}
@media (min-width:1024px){ .nav-toggle{ display:none; } }
.nav-toggle svg{ width:26px;height:26px; }

.mobile-nav{
  position:fixed;inset:0;z-index:calc(var(--z-header) - 1);
  background:var(--black);
  padding:var(--header-h) var(--container-pad) var(--space-8);
  transform:translateY(-8px);
  opacity:0;visibility:hidden;
  transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility 0s var(--dur-base);
  overflow-y:auto;
}
.mobile-nav.is-open{ opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s; }
@media (min-width:1024px){ .mobile-nav{ display:none; } }
.mobile-nav a{
  display:block;font-family:var(--font-serif);font-size:1.6rem;font-weight:700;
  color:var(--cream);padding:.85rem 0;border-bottom:1px solid rgba(244,241,234,.08);
}
.mobile-nav .btn{ margin-top:var(--space-5); }
.mobile-nav-contact{ margin-top:var(--space-6); display:flex; flex-direction:column; gap:.75rem; color:var(--text-muted); font-size:var(--text-sm); }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  padding-block:var(--space-6) var(--space-8);
  overflow:hidden;
}
.hero-glow{
  position:absolute; inset:-20% -10% auto -10%; height:120%;
  background:radial-gradient(60% 60% at 75% 15%,rgba(212,175,55,.22),transparent 70%);
  pointer-events:none; z-index:0;
}
.hero .container{ position:relative; z-index:1; }
.hero-grid{
  display:grid; gap:var(--space-6);
}
@media (min-width:900px){
  .hero-grid{ grid-template-columns:1.05fr .95fr; align-items:center; gap:var(--space-7); }
}
.hero-copy{ order:2; }
.hero-media{ order:1; }
@media (min-width:900px){ .hero-copy{ order:1; } .hero-media{ order:2; } }

.hero-media{ position:relative; }
.hero-media-frame{
  position:relative;border-radius:var(--radius-lg);overflow:hidden;
  aspect-ratio:4/5; max-width:460px; margin-inline:auto;
  box-shadow:var(--shadow-card);
  border:var(--border-gold);
}
.hero-media-frame img{ width:100%;height:100%;object-fit:cover; }
.hero-media-frame::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 55%,rgba(7,7,7,.75));
}
.hero-badge{
  position:absolute; left:50%; bottom:-18px; transform:translateX(-50%);
  background:var(--charcoal); border:var(--border-gold); border-radius:var(--radius-full);
  padding:.6rem 1.1rem; display:flex;align-items:center;gap:.5rem;
  font-size:var(--text-xs); font-weight:600; color:var(--cream);
  box-shadow:var(--shadow-card-sm); white-space:nowrap; z-index:2;
}
.hero-badge .dot{ width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px rgba(74,222,128,.25); }

.hero-eyebrow{ margin-bottom:var(--space-3); }
.hero-title{ font-size:var(--text-3xl); margin-bottom:var(--space-4); }
.hero-title em{ display:block; font-style:normal; color:var(--gold-light); }
@media (min-width:1024px){ .hero-title{ font-size:var(--text-4xl); } }
.hero-subtitle{ font-size:var(--text-md); color:var(--text-light); max-width:52ch; margin-bottom:var(--space-3); }
.hero-microcopy{ font-size:var(--text-sm); color:var(--text-muted); margin-bottom:var(--space-5); }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:var(--space-4); margin-bottom:var(--space-6); }

/* ---------- Form (captacao) ---------- */
.lead-form{
  background:linear-gradient(180deg,var(--charcoal),var(--graphite));
  border:var(--border-gold);
  border-radius:var(--radius-lg);
  padding:var(--space-5);
  box-shadow:var(--shadow-card);
}
.lead-form-title{ font-size:var(--text-lg); margin-bottom:var(--space-1); }
.lead-form-sub{ font-size:var(--text-sm); color:var(--text-muted); margin-bottom:var(--space-4); }
.field{ margin-bottom:var(--space-4); }
.field label{
  display:block;font-size:var(--text-sm);font-weight:600;color:var(--text-light);
  margin-bottom:.4rem;
}
.field .required{ color:var(--gold-light); }
.field input,.field select{
  width:100%;min-height:52px;
  background:var(--black);
  border:1px solid rgba(244,241,234,.16);
  border-radius:var(--radius-sm);
  padding:0 1rem;
  color:var(--cream);
  font-size:var(--text-base);
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.field select{
  appearance:none;
  background-repeat:no-repeat;
  background-position:right 1rem center;
  padding-right:2.5rem;
  background-image:var(--chevron-icon);
}
.field input:focus,.field select:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(212,175,55,.18); }
.field input::placeholder{ color:var(--text-muted); }
.field-error{ display:none; color:var(--error); font-size:var(--text-xs); margin-top:.4rem; }
.field.has-error input,.field.has-error select{ border-color:var(--error); }
.field.has-error .field-error{ display:block; }
.field-hp{ position:absolute; left:-9999px; width:1px;height:1px;overflow:hidden; }

.consent-row{ display:flex; gap:.65rem; align-items:flex-start; margin-bottom:var(--space-4); }
.consent-row input[type="checkbox"]{
  width:20px;height:20px;flex:0 0 20px;margin-top:2px;
  accent-color:var(--gold); cursor:pointer;
}
.consent-row label{ font-size:var(--text-xs); color:var(--text-muted); line-height:1.5; }
.consent-row a{ color:var(--gold-light); text-decoration:underline; text-underline-offset:2px; }

.form-microcopy{ text-align:center; font-size:var(--text-xs); color:var(--text-muted); margin-top:var(--space-3); }
.form-status{ display:none; align-items:center; gap:.5rem; font-size:var(--text-sm); margin-top:var(--space-3); border-radius:var(--radius-sm); padding:.65rem .9rem; }
.form-status.is-visible{ display:flex; }
.form-status.success{ background:rgba(74,222,128,.12); color:var(--success); }
.form-status.error{ background:rgba(229,103,92,.12); color:var(--error); }

/* ---------- Authority bar ---------- */
.authority-bar{
  background:var(--graphite);
  border-block:1px solid rgba(244,241,234,.07);
  padding-block:var(--space-5);
  overflow:hidden;
}
.authority-row{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:var(--space-6) var(--space-8);
}
.authority-item{
  display:flex;align-items:center;gap:.6rem;
  font-size:var(--text-sm);color:var(--text-muted);font-weight:600;
  white-space:nowrap;
}
.authority-item strong{ color:var(--cream); font-weight:700; }
.authority-item svg{ width:18px;height:18px;color:var(--gold); flex-shrink:0; }

/* ---------- Tower Bridge — fundo da estratégia ---------- */
.strategy-bridge{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:
    radial-gradient(ellipse 60% 48% at 50% 72%,rgba(212,175,55,.055),transparent 72%),
    linear-gradient(180deg,var(--black),#090909 70%,var(--black));
}
.strategy-bridge > .container{ position:relative;z-index:2; }
.tower-bridge-bg{
  position:absolute;inset:0;z-index:0;
  overflow:hidden;pointer-events:none;color:var(--gold);
  opacity:.82;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 14%,#000 88%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 14%,#000 88%,transparent 100%);
}
.tower-bridge-bg::after{
  content:"";position:absolute;inset:-25%;z-index:1;
  background:linear-gradient(105deg,transparent 42%,rgba(241,207,114,.09) 49%,rgba(241,207,114,.16) 50%,rgba(241,207,114,.09) 51%,transparent 58%);
  transform:translateX(-72%);opacity:0;mix-blend-mode:screen;
}
.tower-bridge-bg svg{
  position:absolute;left:50%;bottom:-2%;
  width:max(1360px,115vw);height:104%;
  transform:translateX(-50%);
}
.bridge-structure{ stroke-width:1.15;opacity:.15;vector-effect:non-scaling-stroke; }
.bridge-tower{ stroke-width:1.35;opacity:.88; }
.bridge-walkway{ opacity:.7; }
.bridge-cables{ stroke-width:1.45;opacity:.92; }
.bridge-hangers{ stroke-width:.85;opacity:.54; }
.bridge-water{ stroke-width:1;opacity:.58;stroke-dasharray:18 24; }
.bridge-lamps{ opacity:.38; }
.strategy-bridge .legal-notice{ background:rgba(17,17,17,.88);backdrop-filter:blur(4px); }
.strategy-bridge .card{ background:linear-gradient(160deg,rgba(26,26,26,.96),rgba(17,17,17,.96)); }
@media (max-width:639px){
  .tower-bridge-bg{ opacity:.62; }
  .tower-bridge-bg svg{ width:1120px;left:50%; }
}

/* ---------- Underground — fundo das soluções ---------- */
.solutions-underground{
  position:relative;isolation:isolate;overflow:hidden;
  background:
    radial-gradient(ellipse 58% 55% at 50% 48%,rgba(212,175,55,.045),transparent 74%),
    var(--graphite);
}
.solutions-underground > .container{ position:relative;z-index:2; }
.tube-map-bg{
  position:absolute;inset:0;z-index:0;overflow:hidden;
  pointer-events:none;color:var(--gold);opacity:.76;
  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
}
.tube-map-bg svg{
  position:absolute;left:50%;top:50%;
  width:max(1280px,112vw);height:112%;
  transform:translate(-50%,-50%);
}
.tube-route{ fill:none;stroke-width:2;vector-effect:non-scaling-stroke;opacity:.12; }
.tube-route-a{ stroke:#D4AF37; }
.tube-route-b{ stroke:#F4F1EA;opacity:.07; }
.tube-route-c{ stroke:#8C681E;opacity:.18; }
.tube-route-d{ stroke:#F1CF72;opacity:.09; }
.tube-stations{ stroke-width:1.5;opacity:.22;vector-effect:non-scaling-stroke; }
.tube-pulses{ opacity:.42; }
.solutions-underground .solution-card{ box-shadow:0 22px 45px -32px rgba(0,0,0,.92); }

/* ---------- London Eye — fundo contínuo do fechamento ---------- */
.london-finale{
  position:relative;isolation:isolate;overflow:hidden;
  background:
    radial-gradient(ellipse 46% 34% at 78% 49%,rgba(212,175,55,.055),transparent 74%),
    linear-gradient(180deg,var(--black),#080808 52%,var(--black));
}
.london-finale > section{ position:relative;z-index:2; }
.london-eye-bg{
  position:absolute;inset:0;z-index:0;overflow:hidden;
  pointer-events:none;color:var(--gold);opacity:.78;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 10%,#000 90%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 10%,#000 90%,transparent 100%);
}
.london-eye-bg svg{
  position:absolute;left:50%;top:50%;
  width:max(1280px,100vw);height:104%;
  transform:translate(-50%,-50%);
}
.eye-frame{ stroke-width:2;opacity:.11;vector-effect:non-scaling-stroke; }
.eye-rotor{
  stroke-width:1.25;opacity:.105;vector-effect:non-scaling-stroke;
  transform-origin:1250px 610px;
}
.eye-cabins{ stroke-width:1.6; }
.eye-light-ring{ opacity:.62;stroke-width:2;stroke-dasharray:18 64; }
.london-finale .lead-form{ background:rgba(17,17,17,.94);backdrop-filter:blur(5px); }
@media (max-width:639px){
  .tube-map-bg{ opacity:.58; }
  .tube-map-bg svg{ width:1080px; }
  .london-eye-bg{ opacity:.62; }
  .london-eye-bg svg{ width:1100px;left:42%; }
}

/* ---------- Estratégia: um marco de Londres por bloco ---------- */
.strategy-clock,.lance-skyline,.analysis-thames,.compare-scales,.fit-gates,.faq-underground,.guide-lamp{
  position:relative; isolation:isolate; overflow:hidden;
}
.strategy-clock > .container,.lance-skyline > .container,.analysis-thames > .container,
.compare-scales > .container,.fit-gates > .container,.faq-underground > .container,.guide-lamp > .container{
  position:relative; z-index:2;
}
.bigben-bg,.skyline-rise-bg,.thames-bg,.scales-bg,.gates-bg,.roundel-bg,.lamp-bg{
  position:absolute; inset:0; z-index:0; overflow:hidden;
  pointer-events:none; color:var(--gold); opacity:.8;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 12%,#000 88%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 12%,#000 88%,transparent 100%);
}
.bigben-bg svg,.skyline-rise-bg svg,.thames-bg svg,.scales-bg svg,.gates-bg svg,.roundel-bg svg,.lamp-bg svg{
  position:absolute; left:50%; bottom:0; width:max(1400px,116vw); height:100%; transform:translateX(-50%);
}
.thames-bg svg,.scales-bg svg,.gates-bg svg,.roundel-bg svg{
  top:50%; bottom:auto; transform:translate(-50%,-50%);
}
/* Big Ben */
.clock-structure{ stroke-width:1.25; opacity:.16; vector-effect:non-scaling-stroke; }
.clock-shafts{ opacity:.4; }
.clock-face{ stroke-width:1.4; opacity:.5; }
.clock-ticks{ opacity:.5; }
.clock-hands{ stroke-width:2; opacity:.72; }
/* Skyline ascendente */
.skyline-city{ stroke-width:1.2; opacity:.16; vector-effect:non-scaling-stroke; }
.skyline-lights{ opacity:.5; }
.rise-light{ stroke-width:3; opacity:.55; stroke-dasharray:64 620; }
/* Tâmisa */
.thames-scene{ stroke-width:1.4; opacity:.15; vector-effect:non-scaling-stroke; }
.thames-bank{ stroke-dasharray:20 26; }
.thames-bridge{ opacity:.5; }
.thames-nodes{ stroke-width:1.6; opacity:.5; }
/* Balança da justiça */
.scales-static,.scales-beam{ stroke-width:1.5; opacity:.17; vector-effect:non-scaling-stroke; }
.scales-pan-cord{ opacity:.5; }
/* Portões reais */
.gates-rail{ stroke-width:1.4; opacity:.15; vector-effect:non-scaling-stroke; }
.gate-finial{ opacity:.55; }
.gates-crest{ opacity:.5; }
/* Roundel do metrô */
.roundel-scene{ opacity:.13; vector-effect:non-scaling-stroke; }
.roundel-ring,.roundel-inner{ stroke-width:9; }
.roundel-bar{ stroke-width:30; }
.roundel-orbit{ stroke-width:1.5; opacity:.4; }
.roundel-pulses{ opacity:.5; }
/* Lampião */
.lamp-post{ stroke-width:1.4; opacity:.16; vector-effect:non-scaling-stroke; }
.lamp-scrolls{ opacity:.5; }
.lamp-glow{ opacity:.14; filter:blur(6px); }
/* legibilidade dos cartões sobre o padrão */
.lance-skyline .card{ background:linear-gradient(160deg,rgba(26,26,26,.96),rgba(17,17,17,.96)); }
@media (max-width:639px){
  .bigben-bg,.skyline-rise-bg,.thames-bg,.scales-bg,.gates-bg,.roundel-bg,.lamp-bg{ opacity:.5; }
  .bigben-bg svg,.skyline-rise-bg svg,.thames-bg svg,.scales-bg svg,.gates-bg svg,.roundel-bg svg,.lamp-bg svg{ width:1160px; }
}

/* ---------- Resultados: marcos de conquista londrinos ---------- */
.results-arch,.method-cathedral,.empty-crane{
  position:relative; isolation:isolate; overflow:hidden;
}
.results-arch > .container,.method-cathedral > .container,.empty-crane > .container{
  position:relative; z-index:2;
}
.arch-bg,.cathedral-bg,.crane-bg{
  position:absolute; inset:0; z-index:0; overflow:hidden;
  pointer-events:none; color:var(--gold); opacity:.8;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 12%,#000 88%,transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 12%,#000 88%,transparent 100%);
}
.arch-bg svg,.cathedral-bg svg,.crane-bg svg{
  position:absolute; left:50%; bottom:0; width:max(1400px,116vw); height:100%; transform:translateX(-50%);
}
.arch-bg svg{ top:50%; bottom:auto; transform:translate(-50%,-50%); }
/* Arco triunfal */
.arch-structure{ stroke-width:1.3; opacity:.16; vector-effect:non-scaling-stroke; }
.arch-pillars{ opacity:.4; }
.arch-glow-lights{ opacity:.5; }
/* Catedral de St. Paul's */
.cathedral-structure{ stroke-width:1.25; opacity:.16; vector-effect:non-scaling-stroke; }
.cathedral-drum-cols{ opacity:.4; }
.cathedral-steps{ opacity:.45; }
/* Guindaste (em construção) */
.crane-scene{ stroke-width:1.3; opacity:.16; vector-effect:non-scaling-stroke; }
.crane-scaffold{ opacity:.4; }
.crane-lattice{ opacity:.32; }
.crane-jib{ stroke-width:1.3; opacity:.18; vector-effect:non-scaling-stroke; }
@media (max-width:639px){
  .arch-bg,.cathedral-bg,.crane-bg{ opacity:.5; }
  .arch-bg svg,.cathedral-bg svg,.crane-bg svg{ width:1160px; }
}

/* ---------- Cards ---------- */
.card{
  background:linear-gradient(160deg,var(--charcoal),var(--graphite));
  border:var(--border-subtle);
  border-radius:var(--radius-lg);
  padding:var(--space-5);
  transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base),box-shadow var(--dur-base);
}
.card:hover{ transform:translateY(-4px); border-color:rgba(212,175,55,.3); box-shadow:var(--shadow-card-sm); }
.card-icon{
  width:52px;height:52px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  background:rgba(212,175,55,.1); border:var(--border-gold);
  margin-bottom:var(--space-4);
}
.card-icon svg{ width:26px;height:26px;color:var(--gold); }
.card h3{ font-size:var(--text-lg); margin-bottom:var(--space-2); }
.card p{ color:var(--text-light); font-size:var(--text-sm); }
.card-link{
  display:inline-flex;align-items:center;gap:.4rem;margin-top:var(--space-4);
  font-size:var(--text-sm);font-weight:700;color:var(--gold-light);
}
.card-link svg{ width:16px;height:16px;transition:transform var(--dur-fast); }
.card-link:hover svg{ transform:translateX(3px); }

.solution-card{ position:relative; overflow:hidden; padding:0; border-radius:var(--radius-lg); }
.solution-card img{ width:100%; aspect-ratio:4/5; object-fit:cover; }
.solution-card .overlay{
  position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(7,7,7,0) 30%,rgba(7,7,7,.92) 90%);
}
.solution-card .content{ position:absolute; left:0;right:0;bottom:0; padding:var(--space-4); }
.solution-card h3{ font-size:var(--text-md); margin-bottom:.35rem; }
.solution-card p{ font-size:var(--text-xs); color:var(--text-light); margin-bottom:.6rem; }

/* ---------- Soluções: quatro atmosferas londrinas ---------- */
.solutions-page-hero{
  position:relative; overflow:hidden;
  background:radial-gradient(circle at 50% 125%,rgba(212,175,55,.12),transparent 48%);
}
.solutions-page-hero::before{
  content:""; position:absolute; inset:12% 0 0; pointer-events:none; opacity:.24;
  background:
    linear-gradient(90deg,transparent 49.85%,rgba(212,175,55,.22) 50%,transparent 50.15%),
    linear-gradient(0deg,transparent 49.85%,rgba(212,175,55,.16) 50%,transparent 50.15%);
  background-size:84px 84px;
  mask-image:linear-gradient(90deg,transparent,black 25%,black 75%,transparent);
}
.solutions-page-hero .container{ position:relative; z-index:1; }
.solution-stage{
  position:relative; isolation:isolate; overflow:hidden;
  border-top:1px solid rgba(244,241,234,.06);
}
.solution-stage--capital,.solution-stage--mobility{ background:var(--graphite); }
.solution-stage > .container{ position:relative; z-index:2; }
.solution-layout{ align-items:center; gap:clamp(2rem,6vw,6.5rem); }
.solution-copy{ max-width:560px; }
.solution-copy > p:not(.eyebrow){ color:var(--text-light); }
.solution-copy ul{ position:relative; }
.solution-copy li{ position:relative; padding-left:1rem; }
.solution-copy li::before{
  content:""; position:absolute; left:0; top:.72em; width:6px; height:1px;
  background:var(--gold); box-shadow:0 0 8px rgba(212,175,55,.48);
}
.solution-media{
  display:block; width:100%; height:auto; aspect-ratio:16/10; object-fit:cover;
  border:1px solid rgba(212,175,55,.16); border-radius:var(--radius-lg);
  box-shadow:0 28px 70px -42px rgba(0,0,0,.95),0 0 0 1px rgba(255,255,255,.025) inset;
}
.solution-layout--reverse .solution-copy{ order:1; }
.solution-layout--reverse .solution-media{ order:2; }
@media (min-width:768px){
  .solution-layout--reverse .solution-media{ order:1; }
  .solution-layout--reverse .solution-copy{ order:2; }
}
.solution-atmosphere{ position:absolute; inset:0; z-index:0; pointer-events:none; color:var(--gold); opacity:.14; }
.solution-atmosphere::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg,var(--black) 0%,transparent 35%,transparent 75%,var(--black) 100%);
}
.solution-stage--capital .solution-atmosphere::after,.solution-stage--mobility .solution-atmosphere::after{
  background:linear-gradient(90deg,var(--graphite) 0%,transparent 35%,transparent 75%,var(--graphite) 100%);
}
.solution-atmosphere svg{ width:100%; height:100%; min-height:100%; }
.solution-architecture{ stroke-width:1.25; }
.solution-skyline{ stroke-width:1.25; }
.solution-skyline .gherkin{ stroke-width:1.7; }
.solution-skyline .city-glint{ opacity:.42; }
.business-route{ stroke-width:1.4; }
.business-route--c{ opacity:.28; stroke-width:1; }
.route-nodes{ opacity:.52; }
.solution-atmosphere--lights{ opacity:.18; overflow:hidden; }
.headlight-beam{
  position:absolute; left:44%; width:78%; height:36%; border-radius:50%;
  background:linear-gradient(90deg,transparent,rgba(241,207,114,.45),transparent 70%);
  filter:blur(18px); transform:translateX(-130%) rotate(-7deg); transform-origin:left center;
}
.headlight-beam--one{ top:24%; }
.headlight-beam--two{ top:51%; opacity:.55; transform:translateX(-135%) rotate(5deg); }
.road-line{
  position:absolute; left:-10%; bottom:20%; width:120%; height:1px;
  background:linear-gradient(90deg,transparent 0 8%,currentColor 8% 17%,transparent 17% 27%,currentColor 27% 36%,transparent 36% 100%);
  opacity:.42; transform:perspective(500px) rotateX(62deg) rotateZ(-2deg);
}
.road-line--two{ bottom:11%; transform:perspective(500px) rotateX(62deg) rotateZ(2deg); opacity:.24; }
.solution-cota{ position:relative; background:linear-gradient(180deg,var(--black),rgba(17,17,17,.86)); }
.solution-cota .card{ border-color:rgba(212,175,55,.22); box-shadow:0 22px 60px -46px rgba(212,175,55,.55); }
.solution-contact{ background:radial-gradient(circle at 50% 0,rgba(212,175,55,.08),transparent 38%); }

.grid-2{ display:grid; gap:var(--space-5); }
.grid-3{ display:grid; gap:var(--space-5); }
.grid-4{ display:grid; gap:var(--space-5); }
@media (min-width:640px){ .grid-2{ grid-template-columns:repeat(2,1fr); } .grid-4{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:960px){ .grid-3{ grid-template-columns:repeat(3,1fr); } .grid-4{ grid-template-columns:repeat(4,1fr); } }

/* ---------- Processo (steps) ---------- */
.steps{ counter-reset:step; display:grid; gap:var(--space-5); }
@media (min-width:960px){ .steps{ grid-template-columns:repeat(4,1fr); } }
.step{ position:relative; padding-top:var(--space-6); }
.step::before{
  counter-increment:step; content:counter(step,decimal-leading-zero);
  font-family:var(--font-serif); font-size:2rem; color:var(--gold);
  opacity:.55; display:block; margin-bottom:var(--space-2);
}
.step h3{ font-size:var(--text-md); margin-bottom:.4rem; }
.step p{ font-size:var(--text-sm); color:var(--text-light); }

/* ---------- Testemunhos / resultados ---------- */
.testimonial{
  background:var(--charcoal); border:var(--border-subtle); border-radius:var(--radius-lg);
  padding:var(--space-5);
}
.testimonial p{ font-size:var(--text-md); color:var(--cream); font-family:var(--font-serif); font-style:italic; line-height:var(--leading-snug); }
.testimonial-author{ display:flex;align-items:center;gap:.75rem;margin-top:var(--space-4); }
.testimonial-author img{ width:44px;height:44px;border-radius:50%;object-fit:cover; }
.testimonial-author .name{ font-weight:700;color:var(--cream);font-size:var(--text-sm); }
.testimonial-author .meta{ font-size:var(--text-xs);color:var(--text-muted); }

.case-card{
  display:grid; gap:var(--space-5);
  background:var(--charcoal); border:var(--border-subtle); border-radius:var(--radius-lg);
  padding:var(--space-5); overflow:hidden;
}
@media (min-width:768px){ .case-card{ grid-template-columns:280px 1fr; align-items:center; } }
.case-card img{ border-radius:var(--radius-md); aspect-ratio:4/3; object-fit:cover; }
.case-tags{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:var(--space-3); }
.tag{
  font-size:var(--text-xs); font-weight:700; letter-spacing:.04em;
  color:var(--gold); background:rgba(212,175,55,.1); border:var(--border-gold);
  border-radius:var(--radius-full); padding:.3rem .75rem;
}
.case-card dl{ display:grid; grid-template-columns:auto 1fr; gap:.35rem 1rem; font-size:var(--text-sm); margin-top:var(--space-3); }
.case-card dt{ color:var(--text-muted); }
.case-card dd{ color:var(--cream); font-weight:600; }
.case-disclaimer{ font-size:var(--text-xs); color:var(--text-muted); margin-top:var(--space-3); font-style:italic; }

.empty-state{
  text-align:center; padding:var(--space-8) var(--space-5);
  border:1px dashed rgba(244,241,234,.18); border-radius:var(--radius-lg);
  color:var(--text-muted);
}

/* ---------- Legal notice ---------- */
.legal-notice{
  background:var(--graphite); border:var(--border-subtle); border-radius:var(--radius-md);
  padding:var(--space-4); font-size:var(--text-xs); color:var(--text-muted); line-height:1.6;
  display:flex; gap:.6rem; align-items:flex-start;
}
.legal-notice svg{ width:18px;height:18px;color:var(--gold); flex-shrink:0;margin-top:2px; }
.site-footer .legal-notice{
  padding:var(--space-3) 0; background:transparent; border:0;
  border-top:1px solid rgba(244,241,234,.07); border-radius:0;
  font-size:.65rem; line-height:1.55; opacity:.68;
}
.site-footer .legal-notice svg{ width:14px; height:14px; margin-top:1px; opacity:.72; }

/* ---------- FAQ / Accordion ---------- */
.accordion-item{ border-bottom:1px solid rgba(244,241,234,.1); }
.accordion-trigger{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:var(--space-4) 0; text-align:left;
  font-family:var(--font-serif); font-size:var(--text-md); font-weight:700; color:var(--cream);
}
.accordion-trigger svg{ width:20px;height:20px;color:var(--gold); flex-shrink:0; transition:transform var(--dur-base) var(--ease-out); }
.accordion-trigger[aria-expanded="true"] svg{ transform:rotate(45deg); }
.accordion-panel{
  overflow:hidden; height:0; transition:height var(--dur-base) var(--ease-out);
}
.accordion-panel-inner{ padding-bottom:var(--space-4); color:var(--text-light); font-size:var(--text-sm); }
.accordion-panel-inner p + p{ margin-top:.75rem; }

/* ---------- Comparacao consorcio x financiamento ---------- */
.compare-grid{ display:grid; gap:var(--space-5); }
@media (min-width:768px){ .compare-grid{ grid-template-columns:1fr 1fr; } }
.compare-col{ background:var(--charcoal); border:var(--border-subtle); border-radius:var(--radius-lg); padding:var(--space-5); }
.compare-col.is-gold{ border:var(--border-gold); }
.compare-col h3{ margin-bottom:var(--space-4); }
.compare-col ul{ display:flex; flex-direction:column; gap:.75rem; }
.compare-col li{ display:flex; gap:.6rem; font-size:var(--text-sm); color:var(--text-light); }
.compare-col svg{ width:18px;height:18px;color:var(--gold);flex-shrink:0;margin-top:2px; }

/* ---------- Para quem e / nao e ---------- */
.fit-grid{ display:grid; gap:var(--space-5); }
@media (min-width:768px){ .fit-grid{ grid-template-columns:1fr 1fr; } }
.fit-col{ padding:var(--space-5); border-radius:var(--radius-lg); background:var(--charcoal); border:var(--border-subtle); }
.fit-col ul{ display:flex; flex-direction:column; gap:.65rem; margin-top:var(--space-4); }
.fit-col li{ display:flex; gap:.6rem; font-size:var(--text-sm); color:var(--text-light); }

/* ---------- Instagram grid ---------- */
.insta-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:var(--space-3); }
.insta-grid a{ display:block; border-radius:var(--radius-md); overflow:hidden; aspect-ratio:1; position:relative; }
.insta-grid img{ width:100%;height:100%;object-fit:cover; transition:transform var(--dur-slow) var(--ease-out); }
.insta-grid a:hover img{ transform:scale(1.06); }

/* ---------- Mapa ---------- */
.map-card{
  border-radius:var(--radius-lg); overflow:hidden; border:var(--border-subtle);
  background:var(--charcoal); min-height:320px; position:relative;
  display:flex; align-items:center; justify-content:center; text-align:center;
}
.map-card iframe{ width:100%; height:320px; border:0; display:block; }
.map-placeholder{ padding:var(--space-6); }
.map-placeholder svg{ width:40px;height:40px;color:var(--gold);margin-inline:auto;margin-bottom:var(--space-3); }

/* ---------- Footer ---------- */
.site-footer{ background:var(--graphite); border-top:1px solid rgba(244,241,234,.08); padding-block:var(--space-7) var(--space-9); }
.footer-grid{ display:grid; gap:var(--space-6); margin-bottom:var(--space-6); }
@media (min-width:768px){ .footer-grid{ grid-template-columns:1.4fr 1fr 1fr; } }
.footer-brand p{ font-size:var(--text-sm); color:var(--text-muted); margin-top:var(--space-3); max-width:34ch; }
.footer-col h3{ font-size:var(--text-sm); text-transform:uppercase; letter-spacing:.1em; color:var(--gold); margin-bottom:var(--space-3); font-family:var(--font-sans); }
.footer-col ul{ display:flex; flex-direction:column; gap:.6rem; }
.footer-col a,.footer-col span{ font-size:var(--text-sm); color:var(--text-light); }
.footer-col a:hover{ color:var(--gold-light); }
.footer-institutional{
  display:grid; gap:var(--space-5); align-items:center;
  padding:var(--space-5); margin-bottom:var(--space-6);
  border:1px solid rgba(212,175,55,.18); border-radius:var(--radius-lg);
  background:linear-gradient(135deg,rgba(26,26,26,.9),rgba(17,17,17,.96));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
@media (min-width:900px){
  .footer-institutional{ grid-template-columns:minmax(220px,.8fr) minmax(420px,1.2fr); }
}
.footer-partner-intro span{
  display:block; margin-bottom:.45rem; color:var(--gold); font-size:.68rem;
  font-weight:700; letter-spacing:.16em; text-transform:uppercase;
}
.footer-partner-intro p{ max-width:42ch; color:var(--text-light); font-size:var(--text-sm); line-height:1.65; }
.partner-logos{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; }
.partner-brand{ min-width:0; margin:0; }
.partner-brand figcaption{
  margin-bottom:.45rem; color:var(--text-muted); font-size:.62rem;
  font-weight:650; letter-spacing:.1em; line-height:1.35; text-transform:uppercase;
}
.partner-mark{
  height:76px; display:flex; align-items:center; justify-content:center;
  padding:.75rem 1.1rem; overflow:hidden; background:#fff; border:1px solid rgba(244,241,234,.18);
  border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.18);
}
.partner-mark img{ display:block; width:auto; height:auto; max-width:100%; max-height:48px; object-fit:contain; }
.partner-dotcon .partner-mark img{ max-width:150px; max-height:54px; }
.partner-embracon .partner-mark img{ max-width:210px; max-height:46px; }
@media (max-width:479px){
  .partner-logos{ grid-template-columns:1fr; }
  .partner-mark{ height:70px; }
}
.footer-bottom{ display:flex; flex-direction:column; gap:var(--space-4); font-size:var(--text-xs); color:var(--text-muted); }
@media (min-width:768px){ .footer-bottom{ flex-direction:row; align-items:center; justify-content:space-between; } }
.footer-legal-links{ display:flex; gap:1.25rem; flex-wrap:wrap; }
.footer-legal-links button{ color:var(--text-muted); font-size:var(--text-xs); text-decoration:underline; text-underline-offset:2px; }
.footer-legal-links button:hover{ color:var(--gold-light); }

/* ---------- WhatsApp flutuante (desktop) / barra fixa (mobile) ---------- */
.whatsapp-float{
  display:none; position:fixed; right:1.5rem; bottom:1.5rem; z-index:var(--z-bottombar);
  width:60px;height:60px;border-radius:50%;
  background:linear-gradient(135deg,var(--gold-light),var(--gold));
  align-items:center;justify-content:center;
  box-shadow:0 14px 30px -10px rgba(212,175,55,.6);
  transition:transform var(--dur-fast) var(--ease-out);
}
.whatsapp-float:hover{ transform:scale(1.08); }
.whatsapp-float svg{ width:28px;height:28px;color:var(--black); }
@media (min-width:1024px){ .whatsapp-float{ display:flex; } }

.mobile-bottombar{
  position:fixed; left:0;right:0;bottom:0; z-index:var(--z-bottombar);
  background:rgba(7,7,7,.94); backdrop-filter:blur(10px);
  border-top:1px solid rgba(212,175,55,.25);
  padding:.65rem var(--container-pad);
  padding-bottom:calc(.65rem + env(safe-area-inset-bottom));
}
.mobile-bottombar .btn{ width:100%; }
@media (min-width:1024px){ .mobile-bottombar{ display:none; } }
body{ padding-bottom:78px; }
@media (min-width:1024px){ body{ padding-bottom:0; } }

/* ---------- Cookie banner ---------- */
.cookie-banner{
  position:fixed; left:1rem;right:1rem;bottom:5.5rem; z-index:var(--z-toast);
  max-width:520px; margin-inline:auto;
  background:var(--charcoal); border:var(--border-gold); border-radius:var(--radius-lg);
  padding:var(--space-5); box-shadow:var(--shadow-card);
  transform:translateY(20px); opacity:0; visibility:hidden; pointer-events:none;
  transition:transform var(--dur-base) var(--ease-out),opacity var(--dur-base),visibility 0s var(--dur-base);
}
.cookie-banner.is-visible{ transform:translateY(0); opacity:1; visibility:visible; pointer-events:auto; transition-delay:0s; }
@media (min-width:1024px){ .cookie-banner{ bottom:1.5rem; left:1.5rem; right:auto; } }
.cookie-banner p{ font-size:var(--text-sm); color:var(--text-light); margin-bottom:var(--space-4); }
.cookie-actions{ display:flex; flex-wrap:wrap; gap:.75rem; }
.cookie-actions .btn{ min-height:44px; padding:0 1.1rem; font-size:var(--text-sm); }

/* ---------- Modais legais ---------- */
.modal-overlay{
  position:fixed; inset:0; z-index:var(--z-overlay);
  background:rgba(7,7,7,.8); backdrop-filter:blur(4px);
  display:flex; align-items:flex-end; justify-content:center;
  opacity:0; visibility:hidden; transition:opacity var(--dur-base),visibility 0s var(--dur-base);
}
@media (min-width:768px){ .modal-overlay{ align-items:center; padding:2rem; } }
.modal-overlay.is-open{ opacity:1; visibility:visible; transition-delay:0s; }
.modal{
  position:relative; z-index:var(--z-modal);
  background:var(--graphite); border:var(--border-gold);
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
  width:100%; max-width:640px; max-height:85vh; overflow-y:auto;
  padding:var(--space-6);
  transform:translateY(30px);
  transition:transform var(--dur-base) var(--ease-out);
}
@media (min-width:768px){ .modal{ border-radius:var(--radius-lg); } }
.modal-overlay.is-open .modal{ transform:translateY(0); }
.modal-close{
  position:absolute; top:1rem; right:1rem; width:40px;height:40px;
  display:flex;align-items:center;justify-content:center; color:var(--text-muted);
  border-radius:50%; transition:background var(--dur-fast),color var(--dur-fast);
}
.modal-close:hover{ background:rgba(244,241,234,.08); color:var(--cream); }
.modal-close svg{ width:20px;height:20px; }
.modal h2{ font-size:var(--text-xl); margin-bottom:var(--space-4); padding-right:2.5rem; }
.modal h3{ font-size:var(--text-md); margin-top:var(--space-5); margin-bottom:var(--space-2); }
.modal p,.modal li{ font-size:var(--text-sm); color:var(--text-light); line-height:1.7; }
.modal ul{ display:flex; flex-direction:column; gap:.5rem; padding-left:1.1rem; list-style:disc; }
.modal p + p, .modal p + h3, .modal ul + h3{ margin-top:var(--space-3); }

/* ---------- Breadcrumbs ---------- */
.breadcrumbs{ font-size:var(--text-xs); color:var(--text-muted); padding-block:var(--space-4); }
.breadcrumbs a{ color:var(--text-muted); }
.breadcrumbs a:hover{ color:var(--gold-light); }
.breadcrumbs .sep{ margin-inline:.4rem; }
.breadcrumbs [aria-current]{ color:var(--text-light); }

/* ---------- Page hero (paginas internas) ---------- */
.page-hero{ padding-block:var(--space-6) var(--space-7); text-align:center; }
.page-hero .eyebrow{ justify-content:center; display:flex; }
.page-hero h1{ font-size:var(--text-3xl); margin-top:var(--space-2); }
.page-hero p{ margin:var(--space-3) auto 0; max-width:60ch; color:var(--text-light); }

/* ---------- Badge de disponibilidade ---------- */
.availability-note{
  display:inline-flex; align-items:center; gap:.5rem; font-size:var(--text-xs);
  color:var(--gold-light); background:rgba(212,175,55,.08); border:var(--border-gold);
  border-radius:var(--radius-full); padding:.4rem .9rem; margin-top:var(--space-3);
}
