/**
 * assets/site.css — the ONE token file for AmBRA (site-maker doctrine, INVARIANT 5 pattern reused
 * from one-trinity-kingdom: no page declares its own :root or a literal hex outside this file).
 *
 * BRAND — AmBRA, International Advisory Associates (domain ambrainvest.com). Bi-national editorial
 * finance brand (Bloomberg / Valor Econômico / Economist register), NOT a SaaS app.
 *
 * REAL LOGO, REAL COLORS — 03/set/2026 correction. The palette below is NOT palette-gen guesswork; it
 * is built around the two colors sampled directly from the actual designed logo files in
 * `assets/brand/` (gold outline "AMBRA" mark + navy "AmBRA" serif wordmark + tagline):
 *   --gold-fill (brand gold, invariant) ... #D6B233  (warmed 04/set/2026 from the raw #DFCC22 pixel
 *       sample — Julia's live art-direction call: the raw sample read "muito aberto exagerado" as a
 *       large button fill, too yellow-green/neon; shifted toward dourado (G channel down, B channel
 *       up slightly) while keeping the same family — logo PNG itself is untouched, this is a CSS-only
 *       adjustment of how the brand gold is REPRODUCED at fill scale, contrast re-verified below.
 *   navy (brand ink / dark surface) ......... #041732  (sampled from the PNG pixels)
 * These two hexes are FIXED, not proposals — everything else in this file (neutrals, dark-safe vs
 * light-safe text variants) is derived from them and contrast-verified below. This still reads
 * distinct from the sibling finance products in the House of Brands by DOMINANT SURFACE and pairing
 * logic even though all three are now in the navy+gold family:
 *   Patrimonial (patrimonial.onetrinity.co) — navy #0f1e38 + gold #b8902a, Georgia-family serif, dark-dominant.
 *   Kingdom (kingdom.onetrinity.co)         — navy #0B1B2B + gold #C8A96A, Fraunces + Inter + Space Mono, dual-surface.
 *   AmBRA (this file)                       — navy #041732 + gold #D6B233, Source Serif 4 + Public Sans +
 *                                              IBM Plex Mono, PAPER-dominant/light-first editorial broadsheet
 *                                              (only header/hero/footer go navy — the body reads as a light
 *                                              financial-press page, not a dark app shell).
 *
 * CONTRAST — measured with the WCAG relative-luminance formula (node one-off script, not eyeballed):
 *   PAPER  --ink #041732 (navy, IS the brand ink) on #FBF8F3  16.89:1
 *          --mut #4A5560  7.18:1   --gold (text-safe antique) #6E610B on paper  5.87:1
 *          --gold-fill #D6B233 as a BUTTON FILL, never as text on paper (1.93:1 — fails outright);
 *          --on-gold (navy) on gold-fill = 8.75:1
 *   DARK   --ink #FFFFFF on navy #041732  17.89:1   --mut #A9B4C2  8.51:1
 *          --gold #D6B233 (text/links on navy) = 8.75:1 — still comfortably past AAA (7:1); the pairing
 *          keeps the logo's mark-on-navy relationship even though the exact hex is now warmed, not raw.
 * Two-accent-jobs discipline (same shape as Kingdom's): --gold is the CONTEXTUAL text/label accent
 * (dark antique on paper, full brand gold on navy); --gold-fill is the INVARIANT brand gold for fills
 * only. This brand is genuinely two colors (navy + gold) — the CSS variables named --copper/--teal in
 * this file are kept for low-risk reuse across markup already written against them, but their VALUES
 * now resolve to the gold family on both surfaces (no third invented hue) per the brand correction.
 */

@import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300..600;1,8..60,300..500&family=Public+Sans:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;700&display=swap');

:root {
  /* ================= PAPER surface (dominant ground — editorial broadsheet) ================= */
  --bg: #FBF8F3;
  --bg2: #F3EEE6;
  --bg3: #EAE3D8;
  --ink: #041732;
  --mut: #4A5560;
  --faint: #5C6873;
  --line: rgba(4, 23, 50, 0.12);
  --line-strong: rgba(4, 23, 50, 0.20);

  /* Contextual accent — dark antique gold, text-safe on paper (the brand gold at full saturation
     fails contrast as text on light ground: 1.49:1 — measured, not assumed). */
  --copper: #6E610B;
  --copper-2: #584D09;

  /* Invariant brand gold, warmed 04/set/2026 from the raw #DFCC22 logo-pixel sample toward dourado
     (less yellow-green, more amber) — fills, the mark, rules. Never small text on paper. */
  --copper-fill: #D6B233;
  --copper-fill-2: #E4C868;
  --on-copper: #041732;

  /* Interactive accent — this brand is genuinely two colors; on paper the "interactive" tone reuses
     the same text-safe gold as --copper (no third invented hue), --teal-dim is UI-only (border/icon,
     >=3:1, never text). */
  --teal: #6E610B;
  --teal-dim: #9C8B12;
  --teal-glow: rgba(214, 178, 51, 0.12);

  --success: #2F6B45;
  --warn: #6E610B;
  --danger: #9B2C34;

  /* Ink constants — the real brand navy, needed by elements that are navy on BOTH grounds. */
  --deep: #041732;
  --deep2: #0A2440;
  --deep3: #10304F;

  /* ---- type ---- */
  --disp: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  --sans: 'Public Sans', system-ui, -apple-system, sans-serif;
  --mono: 'IBM Plex Mono', 'SFMono-Regular', monospace;

  /* ---- measure (per type of text — site-maker doctrine: token on the ELEMENT, never the container) --- */
  --measure-doc: 34rem;
  --measure-body: 42rem;
  --measure-lede: 46rem;
  --measure-hero: 50rem;

  /* ---- micro type scale — mono tags/labels/meta (04/set/2026: was 9 near-duplicate ad-hoc sizes,
     9.5/10/10.5/11/11.5/12/13/13.5/14px, hand-picked per component across 4 build rounds with no
     shared scale — Julia flagged it directly: "fontes de muitos tamanhos, precisa padronizar".
     Consolidated to 3 steps by VISUAL ROLE, not by nearest-original-value: pill/badge tags, meta/
     citation/timestamp text, and interactive/eyebrow labels each now share one token sitewide. ---- */
  --text-tag: 10px;    /* smallest: chip, pf-badge, rec-format, tv-label, bcb-label/source/date */
  --text-meta: 11px;   /* byline/citation/footer-bottom/locale-tag/rec-meta/rec-pillar */
  --text-label: 12px;  /* eyebrow, chip-row action, btn, btn-tertiary, nav-link, tab, skip-link */

  /* ---- small prose scale (was 12–14px scattered across disclaimer/footer/source/decl text) ---- */
  --text-small: 13px;   /* disclaimer box, footer links, source list, small captions, citations */
  --text-body-sm: 14px; /* declaration blocks, promo copy, form inputs */

  /* ---- spacing (8pt rhythm) ---- */
  --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 24px;
  --sp-6: 32px; --sp-7: 48px; --sp-8: 64px; --sp-9: 96px;

  /* ---- card type scale (one scale, level-agnostic h2/h3/h4 inside .card) ---- */
  --card-title: 1.22rem;
  --card-title-lg: 1.5rem;
  --card-body: 14.5px;
  --card-body-lh: 1.56;

  /* ---- radius ---- */
  --r-sm: 4px; --r-md: 10px; --r-lg: 14px; --r-pill: 999px;

  /* ---- motion ---- */
  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast: 180ms; --dur-med: 320ms; --dur-slow: 700ms;

  /* ---- layout ---- */
  --maxw: 1240px;
  --header-h: 72px;
}

/* ================= DARK (ink) SURFACE — header, hero band, footer ================= */
[data-surface="dark"] {
  color-scheme: dark;
  --bg: #041732;
  --bg2: #0A2440;
  --bg3: #10304F;
  --ink: #FFFFFF;
  --mut: #A9B4C2;
  --faint: #93A0AF;
  --line: rgba(255, 255, 255, 0.14);
  --line-strong: rgba(255, 255, 255, 0.26);
  /* On navy, the full-saturation brand gold IS text-safe (8.75:1, warmed 04/set/2026 — see file
     header) — the same mark-on-navy relationship the real logo's navy OG-cover asset uses. */
  --copper: #D6B233;
  --copper-2: #E4C868;
  --teal: #D6B233;
  --teal-dim: #C2A23A;
  --teal-glow: rgba(214, 178, 51, 0.14);
  --success: #7FBF9A;
  --warn: #D6B233;
  --danger: #E08C93;
  background: var(--bg);
  color: var(--ink);
}
[data-surface="light"] {
  color-scheme: light;
  --bg: #FBF8F3;
  --bg2: #F3EEE6;
  --bg3: #EAE3D8;
  --ink: #041732;
  --mut: #4A5560;
  --faint: #5C6873;
  --line: rgba(4, 23, 50, 0.12);
  --line-strong: rgba(4, 23, 50, 0.20);
  --copper: #6E610B;
  --copper-2: #584D09;
  --teal: #6E610B;
  --teal-dim: #9C8B12;
  --teal-glow: rgba(214, 178, 51, 0.12);
  --success: #2F6B45;
  --warn: #6E610B;
  --danger: #9B2C34;
  color: var(--ink);
}

/* ================= reset ================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
html, body { overflow-x: clip; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--sans); font-weight: 300; line-height: 1.6; -webkit-font-smoothing: antialiased; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
ul { list-style: none; margin: 0; padding: 0; }
::selection { background: var(--teal); color: var(--bg); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* ================= typography ================= */
h1, h2, h3, h4 { font-family: var(--disp); font-weight: 400; letter-spacing: -0.01em; margin: 0; text-wrap: balance; }
h1 { font-size: clamp(2.4rem, 5.6vw, 4.6rem); line-height: 1.05; letter-spacing: -0.02em; max-width: none; }
h2 { font-size: clamp(1.8rem, 3.2vw, 2.6rem); line-height: 1.14; max-width: none; }
h3 { font-size: clamp(1.2rem, 1.7vw, 1.45rem); line-height: 1.26; max-width: none; }
h4 { font-size: 1.02rem; line-height: 1.32; max-width: none; }
p { margin: 0; }
p.doc { max-width: var(--measure-doc); }
p.body-copy { max-width: var(--measure-body); text-wrap: pretty; }
p.lede { font-size: clamp(1.02rem, 1.5vw, 1.2rem); color: var(--mut); max-width: none; text-wrap: balance; }
p.lede.lede-long { max-width: var(--measure-lede); text-wrap: pretty; }
em { font-style: italic; color: var(--copper); }
.eyebrow {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--copper); display: inline-flex; align-items: center; gap: 10px; white-space: nowrap;
}
.eyebrow::before { content: ''; width: 22px; height: 1px; background: var(--copper); opacity: .7; flex: none; }
@media (max-width: 520px) {
  .eyebrow { white-space: normal; letter-spacing: 0.16em; font-size: var(--text-meta); align-items: flex-start; }
  .eyebrow::before { margin-top: 7px; }
}
.label-mono { font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.14em; text-transform: uppercase; color: var(--faint); margin-bottom: var(--sp-4); }

/* ================= layout ================= */
.wrap {
  --wrap-gutter: clamp(20px, 6vw, 64px);
  width: 100%;
  max-width: calc(var(--maxw) + var(--wrap-gutter) * 2);
  margin: 0 auto;
  padding: 0 var(--wrap-gutter);
}
.section { position: relative; padding: var(--sp-9) 0; }
.section-tight { position: relative; padding: var(--sp-8) 0; }
.section + .section, .section-tight + .section-tight, .section + .section-tight, .section-tight + .section { padding-top: var(--sp-7); }
.section-band { background: linear-gradient(180deg, transparent, var(--bg2) 14%, var(--bg2) 86%, transparent); }
[data-surface="dark"] .section-band { background: none; }
.section-head { max-width: none; margin: 0 0 var(--sp-6); scroll-margin-top: 96px; }
.section-head h2 { margin-top: var(--sp-3); max-width: none; }
.section-head > p.lede.lede-long { max-width: var(--measure-lede); }
.section-head.center h2, .section-head.center > p.lede { margin-inline: auto; }
.section-head .eyebrow { margin-bottom: 0; }

.grid { display: grid; gap: var(--sp-5); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 980px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .grid-3, .grid-4, .grid-2 { grid-template-columns: 1fr; } }
.center { text-align: center; }
.divider { border: 0; border-top: 1px solid var(--line); margin: 0; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ================= buttons ================= */
.btn {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.1em; text-transform: uppercase;
  padding: 16px 26px; border-radius: var(--r-sm); display: inline-flex; align-items: center; gap: 10px;
  transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
  white-space: nowrap; min-height: 44px; max-width: 100%;
}
@media (max-width: 520px) { .btn { padding: 14px 18px; letter-spacing: 0.06em; } }
.btn-primary { background: var(--copper-fill); color: var(--on-copper); font-weight: 700; }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 12px 30px rgba(4, 23, 50, 0.22); }
.btn-secondary { border: 1px solid var(--line-strong); color: var(--ink); }
.btn-secondary:hover { border-color: var(--teal-dim); color: var(--teal); }
.btn-tertiary { color: var(--mut); font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.08em; text-transform: uppercase; }
.btn-tertiary:hover { color: var(--ink); }
.btn-tertiary::after { content: '\2192'; margin-left: 8px; transition: transform var(--dur-fast) var(--ease); display: inline-block; }
.btn-tertiary:hover::after { transform: translateX(3px); }
.btn-row { display: flex; flex-wrap: wrap; gap: var(--sp-4); align-items: center; }

/* ================= chips ================= */
.chip {
  font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.08em; text-transform: uppercase;
  white-space: nowrap; padding: 7px 13px; border-radius: var(--r-pill); border: 1px solid var(--line-strong);
  color: var(--mut); display: inline-flex; align-items: center; gap: 6px;
}
.chip-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; }

/* ================= header / nav ================= */
.skip-link { position: absolute; left: -999px; top: 0; background: var(--copper-fill); color: var(--on-copper); padding: 12px 18px; z-index: 200; font-family: var(--mono); font-size: var(--text-label); }
.skip-link:focus { left: var(--sp-4); top: var(--sp-4); }

header.site-header {
  position: sticky; top: 0; z-index: 100; height: var(--header-h);
  background: rgba(4, 23, 50, 0.92); backdrop-filter: blur(16px) saturate(1.1);
  border-bottom: 1px solid var(--line);
}
header.site-header .bar { height: var(--header-h); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-5); }
.brand { display: flex; align-items: center; gap: 11px; color: var(--ink); white-space: nowrap; }
/* The real logo files (assets/brand/) are the source of truth — header uses the compact gold mark
   only (room-constrained sticky nav), footer uses the full mark+wordmark+tagline lockup. Both are
   raster PNGs (no vector source was supplied), sized by height with width:auto to preserve their
   real aspect ratio (~2.34:1 mark, ~2.36:1 lockup). */
.brand .mark { height: 30px; width: auto; flex: none; }
.brand .mark-lockup { height: 60px; width: auto; flex: none; }

nav.primary-nav { display: flex; align-items: center; gap: var(--sp-6); flex: 1 1 auto; min-width: 0; justify-content: center; }
nav.primary-nav > ul { display: flex; align-items: center; gap: var(--sp-6); flex-wrap: nowrap; }
nav.primary-nav a.nav-link {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.1em; text-transform: uppercase; color: var(--mut);
  white-space: nowrap; padding: 8px 2px; position: relative; transition: color var(--dur-fast) var(--ease);
}
nav.primary-nav a.nav-link:hover, nav.primary-nav a.nav-link[aria-current="page"] { color: var(--ink); }
nav.primary-nav a.nav-link::after {
  content: ''; position: absolute; left: 0; bottom: -2px; width: 0; height: 1px; background: var(--teal);
  transition: width var(--dur-med) var(--ease);
}
nav.primary-nav a.nav-link:hover::after, nav.primary-nav a.nav-link[aria-current="page"]::after { width: 100%; }

.header-actions { display: flex; align-items: center; gap: var(--sp-4); flex: none; }
.burger { display: none; width: 40px; height: 40px; flex-direction: column; justify-content: center; align-items: center; gap: 5px; flex: none; }
.burger span { display: block; width: 20px; height: 1px; background: var(--ink); transition: transform var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease); }
.burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.mobile-menu {
  position: fixed; inset: var(--header-h) 0 0 0; background: var(--bg); z-index: 90; padding: var(--sp-6) 6vw;
  transform: translateY(-8px); opacity: 0; pointer-events: none; transition: opacity var(--dur-med) var(--ease), transform var(--dur-med) var(--ease);
  overflow-y: auto; -webkit-overflow-scrolling: touch;
}
.mobile-menu[data-open="true"] { opacity: 1; pointer-events: auto; transform: translateY(0); }
.mobile-menu ul { display: flex; flex-direction: column; gap: var(--sp-2); }
.mobile-menu a { font-family: var(--disp); font-size: 1.4rem; font-weight: 300; color: var(--ink); padding: var(--sp-3) 0; border-bottom: 1px solid var(--line); }
.mobile-menu .mm-cta { margin-top: var(--sp-5); }

@media (max-width: 900px) {
  nav.primary-nav { display: none; }
  .burger { display: flex; }
  .header-actions .btn-primary { display: none; }
}

/* ================= hero ================= */
.hero { position: relative; padding: clamp(64px, 13vh, 140px) 0 clamp(60px, 10vh, 108px); overflow: clip; }
.hero-glow { position: fixed; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.hero-glow span {
  position: absolute; display: block; border-radius: 50%; filter: blur(110px);
  width: 68vmax; height: 68vmax; top: -32vmax; right: -16vmax; opacity: 0.08;
  background: radial-gradient(circle, var(--teal) 0%, transparent 70%);
  animation: drift 40s var(--ease) infinite alternate;
}
.hero-glow span.g2 {
  width: 54vmax; height: 54vmax; top: auto; right: auto; bottom: -28vmax; left: -14vmax; opacity: 0.07;
  background: radial-gradient(circle, var(--copper) 0%, transparent 70%);
  animation-duration: 48s; animation-delay: -10s;
}
@keyframes drift { 0% { transform: translate(0, 0) scale(1); } 100% { transform: translate(-3%, 4%) scale(1.06); } }
.hero h1 em { font-style: normal; color: var(--copper); }
.hero-glass h1 em { letter-spacing: -0.008em; }
.hero .sub { margin-top: var(--sp-5); max-width: none; }
.hero .sub.sub-long { max-width: var(--measure-hero); }
.hero .btn-row { margin-top: var(--sp-7); }

[data-surface="dark"] .hero-glow span { opacity: 0.12; }
[data-surface="dark"] .hero-glow span.g2 { opacity: 0.10; }

/* ================= cards ================= */
.card {
  background: var(--bg2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-5);
  transition: border-color var(--dur-med) var(--ease), transform var(--dur-med) var(--ease), background var(--dur-med) var(--ease);
  min-width: 0; display: flex; flex-direction: column;
}
.card > .card-foot:last-child { margin-top: auto; padding-top: var(--sp-4); }
a.card:hover, .card.is-link:hover { border-color: var(--teal-dim); transform: translateY(-3px); background: var(--bg3); }
.card-icon { width: 28px; height: 28px; margin-bottom: var(--sp-3); }
.card-icon svg { width: 100%; height: 100%; stroke: var(--teal); fill: none; stroke-width: 1.5; }
.card h2, .card h3, .card h4, .card h5 {
  font-family: var(--disp); font-weight: 400; font-size: var(--card-title);
  line-height: 1.28; letter-spacing: -0.006em; color: var(--ink);
  margin-bottom: var(--sp-2); max-width: none; text-wrap: balance;
}
.card-feature h2, .card-feature h3, .card-feature h4 { font-size: var(--card-title-lg); line-height: 1.24; }
.card p { color: var(--mut); font-size: var(--card-body); line-height: var(--card-body-lh); text-wrap: pretty; }
.card .card-foot { margin-top: var(--sp-4); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; }

/* ================= platform showcase card ================= */
.platform-card { display: flex; flex-direction: column; gap: var(--sp-3); }
.pf-mark { width: 40px; height: 40px; border-radius: var(--r-sm); border: 1px solid var(--line-strong); display: flex; align-items: center; justify-content: center; flex: none; }
.pf-mark svg { width: 20px; height: 20px; stroke: var(--copper); fill: none; stroke-width: 1.5; }
.pf-badge { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.1em; text-transform: uppercase; color: var(--faint); }

/* ================= disclaimer / compliance callouts ================= */
.disclaimer-box {
  border: 1px solid var(--line-strong); border-left: 3px solid var(--faint); border-radius: var(--r-md);
  padding: var(--sp-5); background: var(--bg2);
}
.disclaimer-box p { font-size: var(--text-small); line-height: 1.6; color: var(--mut); max-width: none; }
.disclaimer-box .label-mono { margin-bottom: var(--sp-2); }

/* the declaratory-obligation stack: same visual weight as a warning, always paired with a trust/holding
   benefit mention in the same block, per the legal guardrails this site is built under. */
.decl-block {
  border: 1px solid var(--line-strong); border-left: 3px solid var(--copper); border-radius: var(--r-md);
  padding: var(--sp-5); background: var(--bg2); margin-top: var(--sp-5);
}
.decl-block h4 { font-family: var(--sans); font-size: var(--text-body-sm); font-weight: 600; letter-spacing: 0.02em; color: var(--ink); margin-bottom: var(--sp-2); max-width: none; }
.decl-block p { font-size: var(--text-body-sm); line-height: 1.6; color: var(--mut); max-width: none; }
.decl-block p + p { margin-top: 10px; }
.decl-block a { color: var(--teal); text-decoration: underline; }

/* ================= article body ================= */
.article-body p.body-copy { color: var(--ink); font-size: 1.05rem; line-height: 1.72; }
.article-body h2 { margin-top: var(--sp-7); }
.article-body h3 { margin-top: var(--sp-6); }
.article-body blockquote { margin-top: var(--sp-5); padding-left: 20px; border-left: 2px solid var(--teal); font-family: var(--disp); font-size: 1.15rem; color: var(--ink); font-style: italic; max-width: var(--measure-body); }
.article-body .cite { margin-top: 10px; color: var(--faint); font-size: var(--text-small); font-family: var(--mono); }
.article-meta { margin-top: var(--sp-5); font-family: var(--mono); font-size: var(--text-meta); color: var(--faint); display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.sources-list { padding-left: 20px; display: flex; flex-direction: column; gap: 10px; font-size: var(--text-small); color: var(--mut); max-width: none; }
.sources-list a { color: var(--teal); text-decoration: underline; }
.sources-list .stamp { color: var(--faint); font-size: var(--text-meta); }

/* ================= topic tabs (pure CSS filter, zero JS — /analises/) ================= */
.topic-tabs { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-bottom: var(--sp-6); }
.tab {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.06em; text-transform: uppercase;
  padding: 10px 15px; border-radius: var(--r-pill); border: 1px solid var(--line-strong);
  color: var(--mut); white-space: nowrap;
  transition: border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.tab:hover { color: var(--ink); border-color: var(--teal-dim); }
.topic-panel { display: none; }
#topic-all { display: block; }
#topic-economia:target ~ #topic-all,
#topic-reforma:target ~ #topic-all,
#topic-holding:target ~ #topic-all,
#topic-internacionalizacao:target ~ #topic-all,
#topic-mercados:target ~ #topic-all { display: none; }
#topic-economia:target,
#topic-reforma:target,
#topic-holding:target,
#topic-internacionalizacao:target,
#topic-mercados:target { display: block; }

/* ================= TradingView widget wrapper ================= */
.tv-widget-wrap { border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; background: var(--bg2); }
.tv-widget-wrap .tv-label { padding: var(--sp-3) var(--sp-5) 0; font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.14em; text-transform: uppercase; color: var(--faint); }

/* ================= market teaser callout (home "Mercado agora" -> /analises/ calendar) ================= */
.mkt-teaser {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-5); flex-wrap: wrap;
  border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--bg2);
  padding: var(--sp-5) var(--sp-6); margin-top: var(--sp-5);
}
.mkt-teaser h3 { font-family: var(--disp); font-size: 1.1rem; line-height: 1.24; color: var(--ink); max-width: none; margin-bottom: 4px; }
.mkt-teaser p { font-size: var(--text-small); line-height: 1.55; color: var(--mut); max-width: none; margin: 0; text-wrap: balance; }

/* ================= newsletter promo ================= */
.promo { border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-6); background: var(--bg2); display: flex; flex-direction: column; min-width: 0; }
.promo h3 { font-family: var(--disp); font-size: 1.3rem; line-height: 1.24; color: var(--ink); max-width: none; margin-bottom: var(--sp-2); }
.promo p { font-size: var(--text-body-sm); line-height: 1.55; color: var(--mut); max-width: 32rem; text-wrap: pretty; }
.field-row { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin-top: var(--sp-4); }
.field-row input[type="email"] {
  flex: 1 1 200px; min-width: 0; min-height: 46px; padding: 12px 14px;
  background: var(--bg); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--r-sm);
  font-family: var(--sans); font-size: var(--text-body-sm);
}
.field-row input[type="email"]::placeholder { color: var(--faint); }
.field-row input[type="email"]:focus-visible { outline: 2px solid var(--teal); outline-offset: 1px; }
/* honeypot: off-screen for sighted users AND removed from tab order / AT, not display:none (some
   bots skip display:none fields — this stays in the render tree so a naive scraper still fills it) */
.hp-field { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-msg { margin-top: var(--sp-3); font-size: 13.5px; line-height: 1.5; }
.form-msg[hidden] { display: none; }
.form-msg.is-error { color: var(--danger); }
.form-msg.is-success { color: var(--teal-dim); }
.promo .subscribe-success h3 { margin-bottom: var(--sp-2); }
.promo .subscribe-success p { color: var(--mut); }

/* ================= footer ================= */
footer.site-footer { border-top: 1px solid var(--line); padding: var(--sp-8) 0 var(--sp-6); background: var(--bg2); }
.footer-top { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--sp-6); padding-bottom: var(--sp-7); border-bottom: 1px solid var(--line); }
@media (max-width: 900px) { .footer-top { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .footer-top { grid-template-columns: 1fr; } }
.footer-col h4 { font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.14em; text-transform: uppercase; color: var(--faint); margin-bottom: var(--sp-4); }
.footer-col ul { display: flex; flex-direction: column; gap: 10px; }
.footer-col a { font-size: var(--text-small); color: var(--mut); }
.footer-col a:hover { color: var(--teal); }
.footer-brand .brand { margin-bottom: var(--sp-3); }
.footer-brand p { color: var(--faint); font-size: var(--text-small); max-width: none; }
.footer-disclaimer { padding-top: var(--sp-6); margin-top: var(--sp-6); border-top: 1px solid var(--line); }
.footer-disclaimer p { font-size: var(--text-meta); line-height: 1.6; color: var(--faint); max-width: 56rem; }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--sp-3); padding-top: var(--sp-6); font-family: var(--mono); font-size: var(--text-meta); color: var(--faint); letter-spacing: 0.04em; }
.footer-bottom .fl { display: flex; gap: var(--sp-5); flex-wrap: wrap; }
.footer-bottom a:hover { color: var(--teal); }

/* ================= hero photo + glass (HOME HERO ONLY — site-maker restraint: not applied site-wide,
   pattern matches international-wealth-desk reference: real photo + dark scrim + ONE frosted card) ===== */
.hero-photo { overflow: clip; isolation: isolate; }
.hero-photo .hero-bg {
  position: absolute; inset: -4% -4% -4% -4%; z-index: -2;
  background-size: cover; background-position: center 55%;
  filter: saturate(0.88) brightness(0.56);
  transform: scale(1.04);
  will-change: transform;
}
.hero-photo .hero-scrim {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(100deg, rgba(4,23,50,.92) 4%, rgba(4,23,50,.72) 42%, rgba(4,23,50,.38) 72%, rgba(4,23,50,.18) 100%),
    linear-gradient(to top, rgba(4,23,50,.6), transparent 42%);
}
.hero-glass {
  /* subtle top-lit gradient instead of a flat tint — reads as glass catching light, not a solid
     panel; still fully restrained (no color shift, no neon) per the site's documented glassmorphism
     guardrail (site-maker doctrine: two prior reverts on other projects for un-restrained glass). */
  background: linear-gradient(165deg, rgba(10, 36, 64, 0.52), rgba(10, 36, 64, 0.34));
  backdrop-filter: blur(22px) saturate(160%);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--r-lg);
  padding: clamp(30px, 4.2vw, 52px) clamp(28px, 4.2vw, 56px);
  max-width: 880px;
  /* deeper drop shadow for lift off the photo + a 1px inset top highlight = the glass edge catching
     light, the one polish detail restrained glass is missing without tipping into "AI-cliché". */
  box-shadow: 0 34px 70px -22px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.07);
}
/* the shared h1 clamp (5.6vw, up to 4.6rem) is sized for a full-width page header — inside the
   narrower photo-hero card it wrapped the headline to 4 lines, breaking the site-maker 2-line hero
   rule. Give the card its own smaller clamp instead of widening the card past a readable measure.
   03/set/2026 pass: with the homepage's mid-page platforms strip removed, the hero carries more of
   the page's opening weight — a fraction more size/room + tighter line-height reads more confident
   without breaking the 2-line rule (re-verified 1440/1280/1024 after this change). */
.hero-glass h1 { font-size: clamp(2.05rem, 3.6vw, 3.3rem); line-height: 1.11; }
.hero-photo .locale-tag {
  position: absolute; right: var(--wrap-gutter, 28px); bottom: 22px; z-index: 1;
  font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.12em; text-transform: uppercase;
  color: rgba(255,255,255,0.5);
}
@media (max-width: 640px) {
  .hero-glass { max-width: none; padding: 22px; }
  .hero-photo .locale-tag { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-photo .hero-bg { transform: none !important; }
}

/* ================= article / card cover images ================= */
.article-cover { margin: 0; border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line); background: var(--bg2); }
.article-cover img { width: 100%; height: auto; aspect-ratio: 16/8; object-fit: cover; display: block; }

.card-cover {
  margin: calc(var(--sp-5) * -1) calc(var(--sp-5) * -1) var(--sp-4);
  border-radius: var(--r-lg) var(--r-lg) 0 0; overflow: hidden; aspect-ratio: 16/10; background: var(--bg3);
}
.card-cover img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--dur-med) var(--ease); }
a.card:hover .card-cover img, .card.is-link:hover .card-cover img { transform: scale(1.045); }

/* ================= BCB SGS live stat strip (Selic + IPCA, official free API) ================= */
.bcb-strip {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-6);
  border: 1px solid var(--line); border-radius: var(--r-lg); background: var(--bg2);
  padding: var(--sp-4) var(--sp-5); margin-top: var(--sp-4);
}
.bcb-item { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.bcb-label { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.14em; text-transform: uppercase; color: var(--faint); white-space: nowrap; }
.bcb-value { font-family: var(--disp); font-size: 1.55rem; color: var(--ink); line-height: 1.1; }
.bcb-value.is-loading { color: var(--faint); font-family: var(--sans); font-size: 1rem; }
.bcb-value.is-error { color: var(--danger); font-family: var(--sans); font-size: 0.92rem; }
.bcb-date { font-family: var(--mono); font-size: var(--text-tag); color: var(--faint); white-space: nowrap; }
.bcb-source { margin-left: auto; font-family: var(--mono); font-size: var(--text-tag); color: var(--faint); white-space: nowrap; }
@media (max-width: 680px) { .bcb-strip { gap: var(--sp-5); } .bcb-source { margin-left: 0; width: 100%; } }

/* ================= recomendações (books/docs/films) ================= */
.rec-card { display: flex; flex-direction: column; gap: var(--sp-2); }
.rec-format { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.12em; text-transform: uppercase; color: var(--on-copper); background: var(--copper-fill); border-radius: var(--r-pill); padding: 5px 11px; align-self: flex-start; white-space: nowrap; }
.rec-meta { font-family: var(--mono); font-size: var(--text-meta); color: var(--faint); margin-top: 2px; }
.rec-pillar { font-size: var(--text-meta); color: var(--faint); margin-top: var(--sp-3); padding-top: var(--sp-3); border-top: 1px solid var(--line); }

/* ================= ferramentas (client-side calculators, /ferramentas/) ================= */
.tool-card { background: var(--bg2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-6); scroll-margin-top: 96px; }
.tool-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-4); flex-wrap: wrap; margin-bottom: var(--sp-5); }
.tool-head h2 { max-width: none; margin: 0; }
.tool-head p { max-width: none; color: var(--mut); font-size: var(--text-body-sm); line-height: 1.55; margin-top: var(--sp-2); }
.tool-num { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.14em; text-transform: uppercase; color: var(--faint); white-space: nowrap; border: 1px solid var(--line-strong); border-radius: var(--r-pill); padding: 5px 12px; flex: none; }
.tool-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-6); align-items: start; }
@media (max-width: 760px) { .tool-grid { grid-template-columns: 1fr; } }
.tool-inputs { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.tool-field label { display: block; font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); margin-bottom: 6px; }
.tool-field input[type="number"], .tool-field select {
  width: 100%; min-height: 46px; padding: 11px 14px;
  background: var(--bg); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--r-sm);
  font-family: var(--sans); font-size: var(--text-body-sm);
}
.tool-field input[type="number"]:focus-visible, .tool-field select:focus-visible { outline: 2px solid var(--teal); outline-offset: 1px; }
.tool-toggle { display: flex; gap: 8px; flex-wrap: wrap; }
.tool-toggle button {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.04em;
  padding: 9px 14px; border-radius: var(--r-pill); border: 1px solid var(--line-strong);
  background: var(--bg); color: var(--mut); white-space: nowrap; cursor: pointer;
}
.tool-toggle button[aria-pressed="true"] { background: var(--copper-fill); border-color: var(--copper-fill); color: var(--on-copper); }
.tool-result { background: var(--bg); border: 1px solid var(--line-strong); border-radius: var(--r-md); padding: var(--sp-5); min-width: 0; }
.tool-result .result-label { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.12em; text-transform: uppercase; color: var(--faint); }
.tool-result .result-num { font-family: var(--disp); font-size: clamp(1.6rem, 3.4vw, 2.3rem); line-height: 1.14; color: var(--ink); margin-top: 6px; word-break: break-word; }
.tool-result .result-num.is-accent { color: var(--copper); }
.tool-result .result-sub { font-family: var(--sans); font-size: var(--text-small); color: var(--mut); margin-top: 4px; }
.tool-result .result-row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); padding: 10px 0; border-top: 1px solid var(--line); }
.tool-result .result-row:first-child { border-top: none; padding-top: 0; }
.tool-note { margin-top: var(--sp-4); font-size: var(--text-small); line-height: 1.6; color: var(--faint); max-width: none; }
.tool-note strong { color: var(--mut); }
.tool-cta { margin-top: var(--sp-4); display: flex; gap: var(--sp-3); flex-wrap: wrap; }

/* credit-timeline widget (informational, no inputs) */
.timeline-tool { display: flex; flex-direction: column; gap: 0; }
.tl-step { display: grid; grid-template-columns: 88px 1fr; gap: var(--sp-4); padding: var(--sp-4) 0; border-top: 1px solid var(--line); }
.tl-step:first-child { border-top: none; padding-top: 0; }
.tl-when { font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.04em; color: var(--copper); white-space: nowrap; }
.tl-step h4 { font-family: var(--sans); font-size: var(--text-body-sm); font-weight: 600; color: var(--ink); margin-bottom: 4px; max-width: none; }
.tl-step p { font-size: var(--text-small); color: var(--mut); line-height: 1.55; max-width: none; }
@media (max-width: 560px) { .tl-step { grid-template-columns: 1fr; gap: 4px; } }

/* ================= consultor (AI fundamentals commentator, /consultor/) ================= */
.consultor-card { background: var(--bg2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--sp-6); }
.consultor-row { display: flex; gap: var(--sp-3); flex-wrap: wrap; align-items: flex-end; }
.consultor-field { flex: 1 1 160px; min-width: 0; }
.consultor-field.q { flex: 2 1 280px; }
.consultor-field label { display: block; font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); margin-bottom: 6px; }
.consultor-field input, .consultor-field textarea {
  width: 100%; min-height: 46px; padding: 11px 14px;
  background: var(--bg); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--r-sm);
  font-family: var(--sans); font-size: var(--text-body-sm); resize: vertical;
}
.consultor-field input:focus-visible, .consultor-field textarea:focus-visible { outline: 2px solid var(--teal); outline-offset: 1px; }
.consultor-chips { margin-top: var(--sp-4); display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.consultor-chips-label { font-family: var(--mono); font-size: var(--text-meta); letter-spacing: 0.06em; text-transform: uppercase; color: var(--faint); white-space: nowrap; }
.chip-btn {
  font-family: var(--mono); font-size: var(--text-label); letter-spacing: 0.02em; white-space: nowrap;
  padding: 7px 13px; border-radius: var(--r-pill); border: 1px solid var(--line-strong);
  background: var(--bg); color: var(--mut); cursor: pointer;
}
.chip-btn:hover { border-color: var(--teal); color: var(--ink); }
.consultor-limits { margin-top: var(--sp-4); font-size: var(--text-small); color: var(--faint); line-height: 1.6; }
.consultor-status { margin-top: var(--sp-4); font-size: var(--text-body-sm); }
.consultor-status.is-error { color: var(--danger); }
.consultor-status[hidden] { display: none; }
.consultor-result { margin-top: var(--sp-6); border-top: 1px solid var(--line); padding-top: var(--sp-6); }
.consultor-result[hidden] { display: none; }
.consultor-co-name { font-family: var(--disp); font-size: 1.5rem; color: var(--ink); max-width: none; }
.consultor-co-meta { font-family: var(--mono); font-size: var(--text-meta); color: var(--faint); margin-top: 4px; }
.consultor-data { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-3); margin-top: var(--sp-5); }
@media (max-width: 700px) { .consultor-data { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.consultor-stat { background: var(--bg); border: 1px solid var(--line-strong); border-radius: var(--r-md); padding: var(--sp-4); min-width: 0; }
.consultor-stat .k { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.1em; text-transform: uppercase; color: var(--faint); }
.consultor-stat .v { font-family: var(--disp); font-size: 1.15rem; color: var(--ink); margin-top: 4px; word-break: break-word; }
.consultor-stat .v.is-accent { color: var(--copper); }
.consultor-narrative { margin-top: var(--sp-5); background: var(--bg); border-left: 3px solid var(--copper); border-radius: var(--r-md); padding: var(--sp-5); }
.consultor-narrative p { font-size: var(--text-body-sm); line-height: 1.65; color: var(--mut); max-width: none; margin-bottom: var(--sp-3); }
.consultor-narrative p:last-child { margin-bottom: 0; }
.consultor-narrative .label-mono { margin-bottom: var(--sp-3); }
.consultor-sources { margin-top: var(--sp-4); font-size: var(--text-small); color: var(--faint); }
.consultor-sources a { color: var(--teal); text-decoration: underline; }
.consultor-context { margin-top: var(--sp-4); padding: var(--sp-4); background: var(--bg); border: 1px solid var(--line-strong); border-radius: var(--r-md); }
.consultor-context p { font-size: var(--text-body-sm); color: var(--mut); max-width: none; margin: 0; }
.consultor-context p + p { margin-top: 6px; }
.consultor-readings { margin-top: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-3); }
.consultor-reading { border: 1px solid var(--line-strong); border-left: 3px solid var(--faint); border-radius: var(--r-md); padding: var(--sp-4); background: var(--bg2); }
.consultor-reading.tone-destaque { border-left-color: var(--success); }
.consultor-reading.tone-atencao { border-left-color: var(--danger); }
.consultor-reading .tag { font-family: var(--mono); font-size: var(--text-tag); letter-spacing: 0.1em; text-transform: uppercase; color: var(--faint); }
.consultor-reading h4 { font-family: var(--sans); font-size: var(--text-body-sm); font-weight: 600; color: var(--ink); margin: 6px 0 6px; max-width: none; }
.consultor-reading p { font-size: var(--text-small); color: var(--mut); line-height: 1.55; max-width: none; margin: 0; }
.consultor-reading p.q { margin-top: 8px; font-style: italic; color: var(--faint); }
.consultor-reading a { display: inline-block; margin-top: 8px; font-size: var(--text-small); color: var(--teal); text-decoration: underline; }

/* ================= scroll reveal (no-JS fallback + forced-visible timeout in site.js) ================= */
.js .reveal { opacity: 0; transform: translateY(18px); transition: opacity var(--dur-slow) var(--ease), transform var(--dur-slow) var(--ease); }
.js .reveal.revealed { opacity: 1; transform: translateY(0); }
