/* mútuo.tech — sistema base
   Stack: Bricolage Grotesque (display) + Switzer (body) + JetBrains Mono (mono)
   Default context: performance / dark
*/

:root {
  --ink: #0A0A0F;
  --ink-2: #12121A;
  --ink-3: #1A1A24;
  --paper: #F4F1EC;
  --bone: #E8E3D8;
  --muted: #9B9892;          /* dark mode muted (3.56:1 fix do brand kit) */
  --muted-strong: #BFBCB5;
  --purple: #6B5FD4;
  --lavender: #9B8FE8;
  --lime: #B8FF3C;
  --line: rgba(244, 241, 236, 0.08);
  --line-strong: rgba(244, 241, 236, 0.18);
  --line-bright: rgba(184, 255, 60, 0.22);

  --ff-display: 'Bricolage Grotesque', -apple-system, BlinkMacSystemFont, sans-serif;
  --ff-body:    'Switzer', -apple-system, BlinkMacSystemFont, sans-serif;
  --ff-mono:    'JetBrains Mono', 'SF Mono', Menlo, monospace;

  --pad: clamp(20px, 4.5vw, 56px);
  --max: 1280px;

  --bg: var(--ink);
  --fg: var(--paper);
  --accent: var(--lime);
  --accent-fg: var(--ink);

  /* ─────── Glass tiers — translucência + blur por hierarquia ─────── */
  --glass-1-bg: color-mix(in oklab, var(--ink) 70%, transparent);
  --glass-1-blur: blur(14px) saturate(140%);
  --glass-1-border: var(--line);

  --glass-2-bg: color-mix(in oklab, var(--ink-2) 55%, transparent);
  --glass-2-blur: blur(18px) saturate(150%);
  --glass-2-border: var(--line);

  --glass-3-bg: color-mix(in oklab, var(--ink-2) 40%, transparent);
  --glass-3-blur: blur(24px) saturate(160%);
  --glass-3-border: color-mix(in oklab, var(--lime) 16%, var(--line-strong));
}

[data-context="institutional"] {
  --accent: var(--purple);
  --accent-fg: var(--paper);
}

* , *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; scroll-behavior: smooth; background: var(--bg); }
html, body { isolation: auto; }
body {
  background: transparent;
  color: var(--fg);
  font-family: var(--ff-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.55;
  font-feature-settings: "kern", "liga", "calt";
  min-height: 100vh;
  position: relative;
  overflow-x: hidden;
}

::selection { background: var(--accent); color: var(--accent-fg); }

a { color: inherit; text-decoration: none; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 2px; }

/* ───────── Skip link ───────── */
.skip-link {
  position: absolute; top: -100%; left: 1rem; z-index: 10000;
  background: var(--accent); color: var(--accent-fg);
  padding: 0.6rem 1rem; border-radius: 4px;
  font-family: var(--ff-mono); font-size: 13px; letter-spacing: 0.04em;
}
.skip-link:focus { top: 1rem; }

/* ───────── Grid técnico de fundo ───────── */
.tech-grid {
  position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background-color: var(--bg);
  background-image:
    linear-gradient(to right, rgba(244,241,236,0.16) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(244,241,236,0.16) 1px, transparent 1px);
  background-size: 64px 64px;
}
[data-context="institutional"][data-mode="light"] .tech-grid,
body.light .tech-grid {
  --line: rgba(10,10,15,0.06);
}

/* ───────── Container ───────── */
.wrap { max-width: var(--max); margin: 0 auto; padding-left: var(--pad); padding-right: var(--pad); position: relative; }
.wrap--narrow { max-width: 880px; }
.wrap--reading { max-width: 720px; }

/* ───────── Tipografia ───────── */
.eyebrow {
  font-family: var(--ff-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
}
.eyebrow .accent { color: var(--accent); }

h1, h2, h3, h4 { font-family: var(--ff-display); font-weight: 600; letter-spacing: -0.025em; line-height: 1.05; text-wrap: balance; }
h1 { font-size: clamp(40px, 7vw, 92px); font-weight: 700; letter-spacing: -0.04em; }
h2 { font-size: clamp(28px, 4vw, 52px); }
h3 { font-size: clamp(20px, 2.4vw, 28px); letter-spacing: -0.015em; }
h4 { font-size: 17px; letter-spacing: -0.01em; }

p { text-wrap: pretty; }

.lead { font-size: clamp(17px, 1.6vw, 21px); line-height: 1.55; color: var(--muted-strong); max-width: 60ch; }

.mono { font-family: var(--ff-mono); }
.muted { color: var(--muted); }

.tnum { font-variant-numeric: tabular-nums; }

/* ───────── Header ───────── */
.site-header {
  position: sticky; top: 0; z-index: 100;
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  background: color-mix(in oklab, var(--bg) 78%, transparent);
  border-bottom: 1px solid var(--line);
}
.site-header__inner {
  max-width: var(--max); margin: 0 auto;
  padding: 14px var(--pad);
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
}
.brand-lockup { display: flex; align-items: center; gap: 12px; color: var(--fg); }

/* Mark SVG (2 brackets + 2 arcs lime na tech) */
.brand-mark {
  width: 32px; height: 32px; flex: 0 0 auto;
  color: var(--accent);
  transition: transform 400ms cubic-bezier(0.16, 1, 0.3, 1), color 250ms ease;
}
.brand-lockup:hover .brand-mark { transform: scale(1.04); color: var(--paper); }
@media (prefers-reduced-motion: reduce) {
  .brand-mark { transition: none !important; transform: none !important; }
}

/* Square-dot SVG (lime no dark, roxo nas variantes light) */
.brand-dot {
  display: inline-block;
  width: 6px; height: 6px;
  margin: 0 3px;
  vertical-align: 1px;
  fill: var(--accent);
  flex-shrink: 0;
}
[data-context="institutional"] .brand-dot,
body.light .brand-dot { fill: var(--purple); }

.brand-wordmark {
  font-family: var(--ff-mono);
  font-weight: 500;
  font-size: 17px;
  letter-spacing: -0.01em;
  color: var(--fg);
  line-height: 1;
  white-space: nowrap;
}
.brand-endorse {
  display: block;
  font-family: var(--ff-mono);
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  margin-top: 2px;
}

.site-nav { display: flex; align-items: center; gap: 6px; }
.site-nav a {
  font-family: var(--ff-mono);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted-strong);
  padding: 8px 12px;
  border-radius: 999px;
  transition: color 200ms ease, background 200ms ease;
}
.site-nav a:hover { color: var(--fg); background: var(--line); }
.site-nav a[aria-current="page"] { color: var(--accent); }
.site-nav__cta {
  font-family: var(--ff-body) !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-size: 14px !important;
  font-weight: 500;
  background: var(--accent);
  color: var(--accent-fg) !important;
  padding: 9px 16px !important;
}
.site-nav__cta:hover { background: var(--fg) !important; color: var(--bg) !important; }

/* ───────── Mobile nav (hamburger + drawer) ───────── */
.site-nav__toggle {
  display: none;
  position: relative;
  width: 44px; height: 44px;
  background: transparent;
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  cursor: pointer;
  padding: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  transition: border-color 200ms ease, background 200ms ease;
}
.site-nav__toggle:hover { border-color: var(--accent); }
.site-nav__toggle__bar {
  display: block;
  width: 18px; height: 1.5px;
  background: var(--fg);
  transition: transform 240ms cubic-bezier(0.16, 1, 0.3, 1), opacity 200ms ease, background 200ms ease;
  transform-origin: center;
}
.site-header.is-nav-open .site-nav__toggle { border-color: var(--accent); }
.site-header.is-nav-open .site-nav__toggle__bar { background: var(--accent); }
.site-header.is-nav-open .site-nav__toggle__bar:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.site-header.is-nav-open .site-nav__toggle__bar:nth-child(2) { opacity: 0; }
.site-header.is-nav-open .site-nav__toggle__bar:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

.site-nav__backdrop {
  position: fixed;
  inset: 0;
  background: color-mix(in oklab, var(--ink) 70%, transparent);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  z-index: 95;
  opacity: 0;
  transition: opacity 240ms ease;
}
.site-nav__backdrop[hidden] { display: none; }
.site-header.is-nav-open .site-nav__backdrop { opacity: 1; }

@media (max-width: 820px) {
  .site-nav__toggle { display: inline-flex; }

  .site-nav {
    position: fixed;
    top: 0; right: 0; bottom: 0;
    width: min(360px, 86vw);
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 88px 24px 32px;
    background: color-mix(in oklab, var(--ink) 96%, transparent);
    backdrop-filter: blur(18px) saturate(150%);
    -webkit-backdrop-filter: blur(18px) saturate(150%);
    border-left: 1px solid var(--line-strong);
    transform: translateX(100%);
    transition: transform 280ms cubic-bezier(0.16, 1, 0.3, 1);
    z-index: 96;
    overflow-y: auto;
  }
  .site-header.is-nav-open .site-nav { transform: translateX(0); }

  .site-nav a:not(.site-nav__cta) {
    display: block;
    padding: 14px 12px;
    border-radius: 4px;
    font-size: 15px;
    letter-spacing: 0.06em;
    color: var(--fg);
    border-bottom: 1px solid var(--line);
  }
  .site-nav a:not(.site-nav__cta):hover { background: var(--line); }
  .site-nav a:not(.site-nav__cta)[aria-current="page"] {
    color: var(--accent);
    background: color-mix(in oklab, var(--accent) 8%, transparent);
  }
  .site-nav__cta {
    margin-top: 24px;
    text-align: center;
    justify-content: center;
    padding: 14px 16px !important;
  }

  @media (prefers-reduced-motion: reduce) {
    .site-nav { transition: none; }
    .site-nav__backdrop { transition: none; }
    .site-nav__toggle__bar { transition: none; }
  }
}

html.has-nav-open { overflow: hidden; }

/* ───────── Botões ───────── */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 14px 22px;
  border-radius: 4px;
  font-family: var(--ff-body); font-weight: 500; font-size: 15px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 140ms ease, background 200ms ease, color 200ms ease, border-color 200ms ease;
  text-decoration: none;
  line-height: 1;
}
.btn:hover { transform: translateY(-1px); }
.btn--primary { background: var(--accent); color: var(--accent-fg); }
.btn--primary:hover { background: var(--fg); color: var(--bg); }
.btn--ghost { border-color: var(--line-strong); color: var(--fg); }
.btn--ghost:hover { border-color: var(--accent); color: var(--accent); }
.btn .arrow { transition: transform 200ms ease; }
.btn:hover .arrow { transform: translateX(3px); }

/* ───────── Section primitives ───────── */
.section { padding: clamp(64px, 9vw, 140px) 0; position: relative; }
.section--bone { background: transparent; }
.section-head { display: grid; grid-template-columns: 1fr; gap: 20px; max-width: 920px; margin-bottom: clamp(40px, 5vw, 72px); }
.section-head .eyebrow { display: flex; align-items: center; gap: 12px; }
.section-head .eyebrow::before {
  content: ''; width: 28px; height: 1px; background: var(--accent);
}

/* ───────── Footer ───────── */
.site-footer {
  border-top: 1px solid var(--line);
  padding: 56px 0 32px;
  background: var(--ink);
  position: relative;
  z-index: 2;
}
.site-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 48px 32px;
  margin-bottom: 56px;
}
.site-footer__col h4 {
  font-family: var(--ff-mono);
  font-size: 11px; font-weight: 500;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 18px;
}
.site-footer__col ul { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.site-footer__col a {
  color: var(--muted-strong);
  font-size: 14px;
  transition: color 200ms ease;
}
.site-footer__col a:hover { color: var(--fg); }
.site-footer__brand p { color: var(--muted); font-size: 14px; margin-top: 14px; max-width: 32ch; line-height: 1.55; }

.site-footer__family { display: flex; flex-direction: column; gap: 12px; }
.site-footer__family__row { display: flex; align-items: center; gap: 10px; font-family: var(--ff-mono); font-size: 12px; }
.site-footer__family__row .label { color: var(--muted); letter-spacing: 0.12em; text-transform: uppercase; min-width: 60px; }
.site-footer__family__row a { color: var(--muted-strong); letter-spacing: -0.01em; }
.site-footer__family__row.is-self a { color: var(--accent); }
.site-footer__family__row a:hover { color: var(--fg); }

.site-footer__legal {
  border-top: 1px solid var(--line);
  padding-top: 22px;
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  flex-wrap: wrap;
  font-family: var(--ff-mono);
  font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--muted);
}
.site-footer__legal a { color: var(--muted); }
.site-footer__legal a:hover { color: var(--fg); }

@media (max-width: 880px) {
  .site-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .site-footer__grid { grid-template-columns: 1fr; }
}

/* ───────── Cards / blocos genéricos ───────── */
.card {
  background: var(--ink-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 28px;
  transition: border-color 200ms ease, transform 200ms ease;
}
.card:hover { border-color: var(--line-strong); }

.kbd {
  font-family: var(--ff-mono);
  font-size: 11px;
  padding: 2px 6px;
  border: 1px solid var(--line-strong);
  border-radius: 3px;
  color: var(--muted-strong);
}

/* ───────── Cookie banner ───────── */
.cookie-banner {
  position: fixed;
  bottom: 14px; left: 14px; right: 14px;
  max-width: 680px;
  margin: 0 auto;
  background: var(--ink-2);
  border: 1px solid var(--line-strong);
  border-radius: 6px;
  padding: 14px 18px;
  display: none;
  align-items: center; justify-content: space-between; gap: 16px;
  font-size: 13px; color: var(--muted-strong);
  z-index: 9999;
}
.cookie-banner.is-visible { display: flex; }
.cookie-banner a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
.cookie-banner button {
  background: var(--accent);
  color: var(--accent-fg);
  border: 0;
  padding: 8px 16px;
  border-radius: 4px;
  font-family: var(--ff-body);
  font-weight: 500;
  font-size: 13px;
  cursor: pointer;
}
@media (max-width: 600px) { .cookie-banner { flex-direction: column; align-items: stretch; text-align: left; } }

/* ───────── Utilidade ───────── */
.divider { height: 1px; background: var(--line); margin: 0; border: 0; }
.tag {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  border: 1px solid var(--line-strong);
  border-radius: 999px;
  font-family: var(--ff-mono);
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--muted-strong);
}
.tag .pulse {
  width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
  box-shadow: 0 0 0 0 currentColor;
}
.tag.is-live .pulse { animation: pulse 2.4s infinite; }
@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 0 var(--accent); }
  50% { box-shadow: 0 0 0 6px transparent; }
}
@media (prefers-reduced-motion: reduce) { .tag.is-live .pulse { animation: none; } }

/* ───────── Code blocks ───────── */
.codeblock {
  background: var(--ink-2);
  border: 1px solid var(--line);
  border-radius: 6px;
  font-family: var(--ff-mono);
  font-size: 13px;
  line-height: 1.7;
  overflow: hidden;
}
.codeblock__head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--muted);
}
.codeblock__head .dots { display: inline-flex; gap: 6px; }
.codeblock__head .dots span { width: 8px; height: 8px; border-radius: 50%; background: var(--line-strong); }
.codeblock pre { padding: 18px 20px; overflow-x: auto; color: var(--muted-strong); }
.codeblock .k { color: var(--lavender); }
.codeblock .s { color: var(--accent); }
.codeblock .c { color: var(--muted); font-style: italic; }
.codeblock .n { color: #E8B86A; }
.codeblock .p { color: var(--muted); }

/* ───────── Ambient orbs (alimentam o blur do glass) ───────── */
.ambient {
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}
.ambient .orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(120px);
  will-change: transform;
}
.ambient .orb--lime {
  width: 460px; height: 460px;
  background: var(--lime);
  opacity: 0.10;
  top: -100px; right: -80px;
  animation: orb-drift-1 60s ease-in-out infinite;
}
.ambient .orb--lavender {
  width: 540px; height: 540px;
  background: var(--lavender);
  opacity: 0.075;
  top: 38%; left: -180px;
  animation: orb-drift-2 80s ease-in-out infinite;
}
.ambient .orb--purple {
  width: 400px; height: 400px;
  background: var(--purple);
  opacity: 0.065;
  bottom: -120px; right: 8%;
  animation: orb-drift-3 90s ease-in-out infinite;
}
@keyframes orb-drift-1 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-40px, 30px); }
}
@keyframes orb-drift-2 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(60px, -40px); }
}
@keyframes orb-drift-3 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-50px, -60px); }
}
@media (prefers-reduced-motion: reduce) {
  .ambient .orb { animation: none !important; }
}

/* ───────── Glass tiers (utilitários) ───────── */
.glass-1 {
  background: var(--glass-1-bg);
  backdrop-filter: var(--glass-1-blur);
  -webkit-backdrop-filter: var(--glass-1-blur);
  border: 1px solid var(--glass-1-border);
}
.glass-2 {
  background: var(--glass-2-bg);
  backdrop-filter: var(--glass-2-blur);
  -webkit-backdrop-filter: var(--glass-2-blur);
  border: 1px solid var(--glass-2-border);
}
.glass-3 {
  background: var(--glass-3-bg);
  backdrop-filter: var(--glass-3-blur);
  -webkit-backdrop-filter: var(--glass-3-blur);
  border: 1px solid var(--glass-3-border);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--lime) 8%, transparent);
}

/* Header glass override (já era glass, agora consistente com tier-1) */
.site-header {
  background: var(--glass-1-bg);
  backdrop-filter: var(--glass-1-blur);
  -webkit-backdrop-filter: var(--glass-1-blur);
}

/* ───────── Hero watermark — 4 brackets da mãe, SQUARE, centralizado no aside ───────── */
.hero-watermark {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  top: 50%;
  left: 50%;
  width: clamp(380px, 50vw, 620px);
  aspect-ratio: 1 / 1;
  transform: translate(-50%, -50%) translate3d(0, var(--parallax-y, 0px), 0);
  will-change: transform;
  color: var(--lavender);
  opacity: 0.10;
}
.hero-watermark svg { width: 100%; height: 100%; display: block; }
@media (max-width: 900px) {
  .hero-watermark {
    width: clamp(280px, 70vw, 420px);
    opacity: 0.08;
  }
}

/* ───────── Parallax — grid via background-position (mantém fixed cobrindo viewport),
   ambient + watermark + elementos data-parallax via transform ───────── */
.tech-grid { background-position: 0 var(--parallax-grid, 0px); will-change: background-position; }
.ambient { transform: translate3d(0, var(--parallax-ambient, 0px), 0); will-change: transform; }
[data-parallax] { transform: translate3d(0, var(--parallax-el, 0px), 0); will-change: transform; }
[data-parallax-rotate] { transform: translate3d(0, var(--parallax-el, 0px), 0) rotate(var(--parallax-rot, 0deg)); }
.stack__cell[data-parallax] { transition: none; }
@media (prefers-reduced-motion: reduce) {
  .hero-watermark { transform: translate(-50%, -50%) !important; }
  .tech-grid { background-position: 0 0 !important; }
  .ambient { transform: none !important; }
  [data-parallax], [data-parallax-rotate] { transform: none !important; }
}

/* ───────── Live dot — indicador de status ao vivo (pulsante lime) ───────── */
.live-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--lime);
  margin-right: 8px;
  vertical-align: 1px;
  position: relative;
  box-shadow: 0 0 0 0 color-mix(in oklab, var(--lime) 70%, transparent);
  animation: live-pulse 2s ease-out infinite;
  flex-shrink: 0;
}
@keyframes live-pulse {
  0%   { box-shadow: 0 0 0 0   color-mix(in oklab, var(--lime) 70%, transparent); }
  70%  { box-shadow: 0 0 0 10px color-mix(in oklab, var(--lime) 0%,  transparent); }
  100% { box-shadow: 0 0 0 0   color-mix(in oklab, var(--lime) 0%,  transparent); }
}
@media (prefers-reduced-motion: reduce) {
  .live-dot {
    animation: none;
    box-shadow: 0 0 8px 2px color-mix(in oklab, var(--lime) 35%, transparent);
  }
}

/* ═════════════════════════════════════════════════════════════════════════
   ANIMATION LIBRARY — gestos consistentes em toda a marca
   ═════════════════════════════════════════════════════════════════════════
   Princípios:
   - Curva única: cubic-bezier(.22, 1, .36, 1) (out-quint, "slow stop")
   - Durações em escala fixa: 160 / 240 / 360 / 600 / 1200ms
   - Toda animação respeita prefers-reduced-motion
   - Sem bouncing, sem easing dramático
   ───────────────────────────────────────────────────────────────────────── */

:root {
  --ease: cubic-bezier(.22, 1, .36, 1);
  --ease-in: cubic-bezier(.7, 0, .84, 0);
  --t-fast: 160ms;
  --t-base: 240ms;
  --t-med: 360ms;
  --t-slow: 600ms;
  --t-glacial: 1200ms;
}

/* ── Mark draw-on — desenha o mark linha por linha ─────────────────────── */
@keyframes mark-draw {
  0%   { stroke-dashoffset: 200; opacity: 0; }
  20%  { opacity: 1; }
  100% { stroke-dashoffset: 0;   opacity: 1; }
}
.brand-mark.is-drawing path,
.brand-mark.is-drawing rect,
.brand-mark.is-drawing circle {
  stroke-dasharray: 200;
  stroke-dashoffset: 200;
  animation: mark-draw 1200ms var(--ease) forwards;
}
.brand-mark.is-drawing path:nth-child(1),
.brand-mark.is-drawing rect:nth-child(1) { animation-delay: 0ms; }
.brand-mark.is-drawing path:nth-child(2),
.brand-mark.is-drawing rect:nth-child(2) { animation-delay: 120ms; }
.brand-mark.is-drawing path:nth-child(3),
.brand-mark.is-drawing rect:nth-child(3) { animation-delay: 240ms; }
.brand-mark.is-drawing path:nth-child(4),
.brand-mark.is-drawing rect:nth-child(4) { animation-delay: 360ms; }

/* ── Idle breathe — respiração sutil para mark estático ────────────────── */
@keyframes idle-breathe {
  0%, 100% { opacity: 1;    transform: scale(1); }
  50%      { opacity: 0.92; transform: scale(0.985); }
}
.is-idle-breathe {
  animation: idle-breathe 4.5s var(--ease) infinite;
  transform-origin: center;
}

/* ── Hover lift — elevação leve para cards e tiles ─────────────────────── */
.hover-lift {
  transition: transform var(--t-base) var(--ease),
              border-color var(--t-base) var(--ease),
              background var(--t-base) var(--ease);
}
.hover-lift:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--accent) 35%, transparent);
}

/* ── Loading dots — três dots em sequência ─────────────────────────────── */
@keyframes loading-pulse {
  0%, 80%, 100% { opacity: 0.25; transform: scale(0.85); }
  40%           { opacity: 1;    transform: scale(1); }
}
.loading-dots {
  display: inline-flex;
  gap: 6px;
  align-items: center;
}
.loading-dots span {
  width: 6px;
  height: 6px;
  background: var(--accent, var(--lime));
  border-radius: 1px;
  animation: loading-pulse 1.4s var(--ease) infinite;
}
.loading-dots span:nth-child(2) { animation-delay: 160ms; }
.loading-dots span:nth-child(3) { animation-delay: 320ms; }

/* ── Success check — check que desenha ─────────────────────────────────── */
@keyframes check-draw {
  from { stroke-dashoffset: 32; }
  to   { stroke-dashoffset: 0; }
}
.success-check path {
  stroke-dasharray: 32;
  stroke-dashoffset: 32;
  animation: check-draw 360ms var(--ease) forwards;
}

/* ── Glitch — distorção técnica curta para títulos ─────────────────────── */
@keyframes glitch-shift {
  0%, 100% { transform: translate(0); filter: none; }
  20%      { transform: translate(-1px, 0.5px); }
  40%      { transform: translate(1px, -0.5px); }
  60%      { transform: translate(-0.5px, 1px); }
  80%      { transform: translate(0.5px, -1px); }
}
.glitch {
  display: inline-block;
  position: relative;
}
.glitch:hover {
  animation: glitch-shift 240ms var(--ease-in) 1;
}

/* ── Stagger reveal — fade-up sequencial em listas ─────────────────────── */
@keyframes stagger-up {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.stagger > * {
  opacity: 0;
  animation: stagger-up var(--t-slow) var(--ease) forwards;
}
.stagger > *:nth-child(1) { animation-delay:   0ms; }
.stagger > *:nth-child(2) { animation-delay:  80ms; }
.stagger > *:nth-child(3) { animation-delay: 160ms; }
.stagger > *:nth-child(4) { animation-delay: 240ms; }
.stagger > *:nth-child(5) { animation-delay: 320ms; }
.stagger > *:nth-child(6) { animation-delay: 400ms; }
.stagger > *:nth-child(7) { animation-delay: 480ms; }
.stagger > *:nth-child(8) { animation-delay: 560ms; }

/* ── Cursor blink — cursor de terminal ─────────────────────────────────── */
@keyframes cursor-blink {
  0%, 50%   { opacity: 1; }
  51%, 100% { opacity: 0; }
}
.cursor-blink {
  display: inline-block;
  width: 0.5em;
  height: 1em;
  background: currentColor;
  vertical-align: -2px;
  animation: cursor-blink 1s steps(1) infinite;
  margin-left: 2px;
}

/* ── Bracket-in — quatro brackets aparecem dos cantos ──────────────────── */
@keyframes bracket-in-tl { from { transform: translate(-12px, -12px); opacity: 0; } to { transform: translate(0,0); opacity: 1; } }
@keyframes bracket-in-tr { from { transform: translate( 12px, -12px); opacity: 0; } to { transform: translate(0,0); opacity: 1; } }
@keyframes bracket-in-bl { from { transform: translate(-12px,  12px); opacity: 0; } to { transform: translate(0,0); opacity: 1; } }
@keyframes bracket-in-br { from { transform: translate( 12px,  12px); opacity: 0; } to { transform: translate(0,0); opacity: 1; } }

/* ── Reduced motion — desativa tudo ────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .brand-mark.is-drawing path,
  .brand-mark.is-drawing rect,
  .brand-mark.is-drawing circle,
  .is-idle-breathe,
  .loading-dots span,
  .success-check path,
  .glitch:hover,
  .stagger > *,
  .cursor-blink {
    animation: none !important;
  }
  .stagger > * { opacity: 1; transform: none; }
  .success-check path { stroke-dashoffset: 0; }
  .brand-mark.is-drawing path,
  .brand-mark.is-drawing rect,
  .brand-mark.is-drawing circle { stroke-dashoffset: 0; opacity: 1; }
  .hover-lift { transition: none; }
}

/* ═════════════════════════════════════════════════════════════════════════
   AVATAR + ICON DISPLAY UTILITIES
   ═════════════════════════════════════════════════════════════════════════ */

.icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  flex-shrink: 0;
}
.icon--sm { width: 14px; height: 14px; }
.icon--md { width: 20px; height: 20px; }
.icon--lg { width: 28px; height: 28px; }
.icon--xl { width: 40px; height: 40px; }

.avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border: 1px solid color-mix(in oklab, var(--accent, var(--lime)) 30%, transparent);
  background: color-mix(in oklab, var(--ink) 80%, transparent);
  color: var(--accent, var(--lime));
  border-radius: 6px;
  flex-shrink: 0;
}
.avatar--sm { width: 32px; height: 32px; padding: 6px; }
.avatar--md { width: 48px; height: 48px; padding: 9px; }
.avatar--lg { width: 64px; height: 64px; padding: 12px; }
.avatar--xl { width: 96px; height: 96px; padding: 18px; }
.avatar svg { width: 100%; height: 100%; }
.avatar--lavender { color: var(--lavender); border-color: color-mix(in oklab, var(--lavender) 30%, transparent); }
.avatar--purple   { color: var(--purple);   border-color: color-mix(in oklab, var(--purple) 30%, transparent); }
.avatar--ghost    { background: transparent; }

/* ═════════════════════════════════════════════════════════════════════════
   FLASHLIGHT + CARD SPOTLIGHT — segue o cursor, ativado em todas as páginas
   (DOM injetado por site-effects.js se ausente)
   ═════════════════════════════════════════════════════════════════════════ */
.flashlight {
  position: fixed; inset: 0; pointer-events: none; z-index: 9999;
  mix-blend-mode: screen; transition: opacity 320ms ease; will-change: background;
  background:
    radial-gradient(circle 80px at var(--mx, 50%) var(--my, 42%),
      rgba(184,255,60,.16), rgba(184,255,60,.06) 35%, transparent 62%),
    radial-gradient(circle 360px at var(--mx, 50%) var(--my, 42%),
      rgba(184,255,60,.07), rgba(184,255,60,.025) 38%, transparent 72%);
}
.flashlight::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle 600px at var(--mx, 50%) var(--my, 42%),
    rgba(184,255,60,.025) 0%, transparent 55%);
}
.flashlight.is-out { opacity: 0.45; }
@media (any-hover: none) and (any-pointer: coarse) {
  .flashlight { --mx: 50%; --my: 38%; opacity: 0.7; animation: halo-breathe 5.2s ease-in-out infinite; }
}
@media (prefers-reduced-motion: reduce) {
  .flashlight { display: none; }
}
@keyframes halo-breathe {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 0.78; }
}

/* Card spotlight — radial gradient lime sob o cursor + borda destacada
   selectors devem casar com CARD_SEL em site-effects.js */
.svc, .stack__cell, .method__step, .closer__side,
.codeblock, .pricing__card, .inv__cell,
.credo__item, .legal-side, .meta-card {
  --card-x: 50%; --card-y: 50%; --card-active: 0;
  position: relative;
  overflow: hidden;
  transition: border-color 240ms ease, background 240ms ease;
}
.svc::before, .stack__cell::before, .method__step::before,
.closer__side::before, .codeblock::before, .pricing__card::before,
.inv__cell::before, .credo__item::before, .legal-side::before,
.meta-card::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle 220px at var(--card-x) var(--card-y),
    color-mix(in oklab, var(--accent) 12%, transparent),
    transparent 60%);
  opacity: var(--card-active);
  transition: opacity 240ms ease;
  z-index: 1;
}
.svc[data-hot="1"], .stack__cell[data-hot="1"],
.method__step[data-hot="1"], .codeblock[data-hot="1"],
.pricing__card[data-hot="1"], .closer__side[data-hot="1"],
.credo__item[data-hot="1"], .legal-side[data-hot="1"],
.meta-card[data-hot="1"] {
  border-color: color-mix(in oklab, var(--accent) 50%, var(--line)) !important;
}
.svc > *, .stack__cell > *, .method__step > *,
.closer__side > *, .codeblock > *, .pricing__card > *,
.inv__cell > *, .credo__item > *, .legal-side > *,
.meta-card > * {
  position: relative; z-index: 2;
}

/* ═════════════════════════════════════════════════════════════════════════
   PAGE TOPLINE — barra de status que abre páginas internas (espelha hero do index)
   ═════════════════════════════════════════════════════════════════════════ */
.page-topline {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
  padding-top: 56px;
  margin-bottom: 40px;
  font-family: var(--ff-mono); font-size: 11.5px;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--muted);
  position: relative; z-index: 1;
}
.page-topline .pair { display: inline-flex; gap: 10px; align-items: center; }
.page-topline .accent { color: var(--accent); }
.page-topline .bracket { color: var(--accent); }
@media (max-width: 760px) {
  .page-topline { padding-top: 36px; margin-bottom: 24px; font-size: 10.5px; gap: 14px; }
}

/* ═════════════════════════════════════════════════════════════════════════
   PAGE-HERO — variante padrão das páginas internas
   (eyebrow + h1 com ponto final accent + lead)
   ═════════════════════════════════════════════════════════════════════════ */
.page-hero {
  padding: 16px 0 clamp(56px, 8vw, 100px);
  border-top: 1px solid var(--line);
  position: relative;
  z-index: 1;
}
.page-hero > * { position: relative; z-index: 1; }
.page-hero .kicker {
  font-family: var(--ff-mono); font-size: 11.5px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--accent);
  display: flex; align-items: center; gap: 16px;
  padding-top: 36px;
}
.page-hero .kicker::before {
  content: ""; width: 24px; height: 1px; background: var(--accent);
}
.page-hero h1 {
  font-family: var(--ff-display); font-weight: 600;
  font-size: clamp(40px, 6.5vw, 84px);
  line-height: 1.05; letter-spacing: -0.04em;
  font-variation-settings: "opsz" 96;
  color: var(--fg);
  max-width: 18ch;
  margin-top: 18px;
}
.page-hero h1 .accent  { color: var(--accent); }
.page-hero h1 .lavender { color: var(--lavender); }
.page-hero p.lead {
  margin-top: 28px;
  font-size: clamp(17px, 1.6vw, 21px);
  line-height: 1.55;
  color: var(--muted-strong);
  max-width: 60ch;
}
