/* ============================================================
   OODA Intelligence — new_style theme.css (GERADO)
   Este arquivo e gerado pela concatenacao dos partials em
   assets/templates/new_style/css/partials/ (ordem numerica):
   00-core -> 01-chrome -> 10-hero -> 20-stats ->
   30-features-modules -> 40-pricing-calc -> 50-about-contact
   NAO edite diretamente; edite os partials e regenere com:
   cat partials/*.css > theme.css (mantendo este banner)
   ============================================================ */
/* ============================================================
   OODA — fontes self-hosted (Fraunces VF c/ eixos SOFT,WONK ·
   Archivo VF · JetBrains Mono VF), servidas de /assets/fonts/.
   Gerado a partir do CSS da Google Fonts API; sem chamadas externas
   (consistência com o consent LGPD — nenhum IP enviado ao Google).
   ============================================================ */
/* vietnamese */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(/assets/fonts/archivo-k3kQo8UDI-1M0wlSfdboLmvDIaK18A.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(/assets/fonts/archivo-k3kQo8UDI-1M0wlSfdfoLmvDIaK18A.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(/assets/fonts/archivo-k3kQo8UDI-1M0wlSfdnoLmvDIaI.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0KVBdjdfeQ7ZXk8kD6.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0KVBdjdPeQ7ZXk8kD6.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU58FyLNQOQZAnv9ZwNjucMHVn85Ni7emAe9lKqZTnbB-gzTK0KVBdjeveQ7ZXk8g.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2WS01xCBTeP2Xz5fU8w.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2WS01xCFTeP2Xz5fU8w.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(/assets/fonts/fraunces-6NU78FyLNQOQZAnv9bYEvDiIdE9Ea92uemAk_WBq8U_9v0c2WS01xC9TeP2Xz5c.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwgknk-6nFg.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxTcwgknk-6nFg.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxPcwgknk-6nFg.woff2) format('woff2');
  unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx_cwgknk-6nFg.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx7cwgknk-6nFg.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/jetbrainsmono-tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPxDcwgknk-4.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* ============================================================
   OODA Intelligence — new_style · 00-core
   DOSSIÊ VIVO — Editorial Noir de Inteligência
   Tokens, reset, tipografia, botões, utilitários, motion base.
   Prefixo de classes novas: ns-
   ============================================================ */

/* Fontes: self-hosted em /assets/fonts/ via partial 00-fonts.css (Fraunces VF
   com eixos SOFT/WONK, Archivo VF, JetBrains Mono VF) — sem chamada externa
   ao Google (consistência com o consent LGPD). */

/* ──────────────────────────────────────────
   DESIGN TOKENS
   ────────────────────────────────────────── */
:root{
  color-scheme: dark;

  /* ===== SUPERFÍCIES (tinta quente, nunca #000) ===== */
  --ns-ink-0:#0E0D12;            /* bg body + theme-color */
  --ns-ink-00:#0B0A0F;           /* footer, mais fundo */
  --ns-ink-1:#14131A;            /* cards / células */
  --ns-ink-2:#1B1A23;            /* superfície elevada, featured */
  --ns-ink-3:#26242F;            /* bordas fortes, barras de censura */

  /* ===== HAIRLINES (cor-de-papel, não branco-azulado) ===== */
  --ns-rule:rgba(237,232,224,.09);
  --ns-rule-lg:rgba(237,232,224,.16);

  /* ===== TEXTO ===== */
  --ns-paper:#F1EDE3;            /* headings, 15.2:1 sobre ink-0 */
  --ns-bone:#D9D4C8;             /* body, 11.4:1 */
  --ns-silver:#A9A49B;           /* secundário, 6.9:1 */
  --ns-fog:#8C867E;              /* terciário, 5.4:1 em ink-0 / 4.8:1 em ink-2 (AA p/ micro-texto) */

  /* ===== ACENTO ÚNICO (violeta da marca) ===== */
  --ns-signal:#8D7BFF;           /* texto/links sobre dark (5.1:1 AA) */
  --ns-signal-deep:#6F5CFF;      /* fundos, carimbos, underlines, barra de progresso */
  --ns-signal-soft:rgba(141,123,255,.13);

  /* ===== SEMÂNTICOS CTI (só em dados, nunca decoração) ===== */
  --ns-confirm:#4BD9A9;          /* deltas up, dot LIVE */
  --ns-alert:#FF6B7A;            /* deltas down, erro crítico */
  --ns-warn:#F5B54A;

  /* ===== PÁGINA CLARA (seção invertida pricing/calculator) ===== */
  --ns-cream:#EDE8DC;
  --ns-cream-2:#F5F1E6;          /* nota fiscal da calculadora */
  --ns-ink-on-cream:#17151D;
  --ns-rule-cream:rgba(23,21,29,.14);
  --ns-rule-cream-lg:rgba(23,21,29,.28);
  --ns-signal-on-cream:#5B48F0;  /* 5.4:1 sobre cream — acento textual na página clara */

  /* ===== FAMÍLIAS ===== */
  --ns-serif:'Fraunces',Georgia,'Times New Roman',serif;
  --ns-sans:'Archivo',system-ui,-apple-system,sans-serif;
  --ns-mono:'JetBrains Mono',ui-monospace,'SF Mono',monospace;

  /* ===== ESCALA TIPOGRÁFICA ===== */
  --ns-text-impact:clamp(3.2rem, 9vw + 1rem, 8.75rem);
  --ns-text-h2:clamp(2.2rem, 4.6vw, 4rem);
  --ns-text-h3:clamp(1.5rem, 2.4vw, 2rem);
  --ns-text-stat:clamp(2.75rem, 4.5vw, 4.5rem);
  --ns-text-price:clamp(2.5rem, 3.5vw, 4rem);
  --ns-text-body:1.0625rem;      /* 17px */
  --ns-text-small:.875rem;
  --ns-text-eyebrow:.6875rem;    /* 11px */
  --ns-text-micro:.625rem;       /* 10px, labels mono */

  /* ===== ESPAÇAMENTO (escala 8px) ===== */
  --ns-space-1:.5rem; --ns-space-2:1rem; --ns-space-3:1.5rem;
  --ns-space-4:2rem; --ns-space-5:3rem; --ns-space-6:4.5rem; --ns-space-7:8rem;
  --ns-space-section:clamp(96px, 14vh, 176px);

  /* ===== FORMA (documento impresso = cantos retos) ===== */
  --ns-r:4px;                    /* raio máximo de cards/panes */
  --ns-r-input:2px;
  --ns-r-pill:999px;             /* SÓ botões */

  /* ===== CONTAINER / GRID ===== */
  --ns-container:1360px;
  --ns-gutter:32px;

  /* ===== MOTION ===== */
  --ns-ease:cubic-bezier(.22,1,.36,1);
  --ns-ease-stamp:cubic-bezier(.34,1.56,.64,1);
  --ns-dur-1:140ms;              /* hover/focus */
  --ns-dur-2:250ms;              /* botões, inversão de tinta */
  --ns-dur-3:700ms;              /* reveals 'impressão' */

  /* ===== Z-INDEX ===== */
  --ns-z-grain:40;               /* grain SEMPRE abaixo de modais */
  --ns-z-nav:60;
  --ns-z-modal:80;               /* cmdk, modModal, cookie-modal */
  --ns-z-fab:70;

  /* ===== SOMBRAS (raras — hairlines fazem o trabalho) ===== */
  --ns-shadow-modal:0 24px 80px rgba(0,0,0,.5);
  --ns-shadow-sheet:0 8px 32px rgba(0,0,0,.35);
}

/* Seção invertida: redefine tokens localmente — TODO componente dentro
   de .ns-invert herda as cores certas sem regra extra */
.ns-invert{
  color-scheme: light;
  --ns-ink-0:var(--ns-cream); --ns-ink-1:var(--ns-cream-2); --ns-ink-2:#E4DECE;
  --ns-ink-3:#D6CFBD;
  --ns-paper:var(--ns-ink-on-cream); --ns-bone:#2A2733; --ns-silver:#5A5563; --ns-fog:#6B6673; /* fog 4.6:1 sobre cream (AA) */
  --ns-rule:var(--ns-rule-cream); --ns-rule-lg:var(--ns-rule-cream-lg);
  --ns-signal:var(--ns-signal-on-cream); --ns-signal-soft:rgba(91,72,240,.10);
  /* semânticos AA sobre creme */
  --ns-confirm:#0E8C63;
  --ns-alert:#C81E3C;
  background:var(--ns-cream); color:var(--ns-bone);
}

::selection{ background:var(--ns-signal-deep); color:var(--ns-paper); }

/* ──────────────────────────────────────────
   RESET / BASE
   ────────────────────────────────────────── */
*, *::before, *::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion: no-preference){ html{ scroll-behavior:smooth; } }
body{
  margin:0;
  background:var(--ns-ink-0);
  color:var(--ns-bone);
  font-family:var(--ns-sans);
  font-size:var(--ns-text-body);
  line-height:1.65;
  font-weight:420;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
/* GRAIN fílmico global — nunca animado, sempre abaixo de modais */
body::after{
  content:"";
  position:fixed; inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity:.045;
  mix-blend-mode:overlay;
  pointer-events:none;
  z-index:var(--ns-z-grain);
}
img, svg, video{ max-width:100%; height:auto; }
img{ border-style:none; }
button, input, select, textarea{ font:inherit; color:inherit; }
button{ background:none; border:0; padding:0; cursor:pointer; }
[hidden]{ display:none !important; }
hr{ border:0; border-top:1px solid var(--ns-rule); margin:var(--ns-space-5) 0; }
:focus-visible{ outline:2px solid var(--ns-signal); outline-offset:3px; }

/* ──────────────────────────────────────────
   TIPOGRAFIA (type scale do dossiê)
   ────────────────────────────────────────── */
h1, h2, h3, h4, h5, h6{ margin:0 0 .5em; color:var(--ns-paper); text-wrap:balance; }

.ns-impact, h1{
  font-family:var(--ns-serif);
  font-size:var(--ns-text-impact);
  line-height:.92;
  letter-spacing:-.02em;
  font-weight:560;
  font-variation-settings:'opsz' 144,'SOFT' 0,'WONK' 1;
}
h2, .ns-h2{
  font-family:var(--ns-serif);
  font-size:var(--ns-text-h2);
  line-height:1.02;
  letter-spacing:-.015em;
  font-weight:540;
  font-variation-settings:'opsz' 96;
}
h3, .ns-h3{
  font-family:var(--ns-serif);
  font-size:var(--ns-text-h3);
  line-height:1.15;
  font-weight:520;
  font-variation-settings:'opsz' 40;
}
h4{ font-family:var(--ns-serif); font-size:1.35rem; line-height:1.2; font-weight:520; font-variation-settings:'opsz' 24; }
h5{ font-family:var(--ns-sans); font-size:1.05rem; font-weight:700; letter-spacing:-.005em; }
h6{ font-family:var(--ns-mono); font-size:var(--ns-text-micro); letter-spacing:.18em; text-transform:uppercase; font-weight:500; color:var(--ns-fog); }

/* Contrato do <em> em títulos: itálico + sublinhado marca-texto (SEM gradiente) */
h1 em, h2 em, h3 em,
.ns-impact em, .ns-h2 em, .ns-h3 em,
.hero__title em,
[data-stats-title-em],
.stat-card__v em,
.workspace-login__title em,
.ns-statement em{
  font-family:var(--ns-serif);
  font-style:italic;
  color:inherit;
  text-decoration:underline;
  text-decoration-color:var(--ns-signal-deep);
  text-decoration-thickness:.08em;
  text-underline-offset:.12em;
}

p{ margin:0 0 1em; }
a{ color:inherit; text-decoration:none; transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease), opacity var(--ns-dur-1) var(--ns-ease); }
a:hover{ color:var(--ns-paper); }
strong, b{ font-weight:640; color:var(--ns-paper); }
mark{ background:var(--ns-signal-soft); color:var(--ns-signal); padding:0 2px; border-radius:2px; }
code, kbd, samp{ font-family:var(--ns-mono); }

.stat-card__v{
  font-family:var(--ns-serif);
  font-size:var(--ns-text-stat);
  font-weight:560;
  font-variation-settings:'opsz' 144;
  line-height:1;
  font-variant-numeric:tabular-nums;
  color:var(--ns-paper);
}
.ns-price{
  font-family:var(--ns-serif);
  font-size:var(--ns-text-price);
  font-variant-numeric:tabular-nums;
  color:var(--ns-paper);
}
.ns-pullquote{
  font-family:var(--ns-serif);
  font-style:italic;
  font-size:clamp(1.5rem, 2.2vw, 2rem);
  line-height:1.3;
  color:var(--ns-paper);
}
.ns-lede{
  font-family:var(--ns-sans);
  font-size:clamp(1.125rem, 1.4vw, 1.1875rem);
  line-height:1.6;
  max-width:52ch;
  color:var(--ns-bone);
}
.ns-kicker{
  font-family:var(--ns-sans);
  font-size:.8125rem;
  font-weight:700;
  font-variation-settings:'wdth' 115;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.eyebrow, .ns-eyebrow{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.24em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--ns-fog);
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.eyebrow::before{
  content:"";
  width:6px; height:6px;
  background:var(--ns-signal-deep);
  flex-shrink:0;
}
.ns-label{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.ns-mono-data{
  font-family:var(--ns-mono);
  font-size:.8125rem;
  font-variant-numeric:tabular-nums;
}
small, .ns-small{ font-size:var(--ns-text-small); }
.serif-it{ font-family:var(--ns-serif); font-style:italic; color:var(--ns-bone); }

/* ──────────────────────────────────────────
   SEÇÃO / CAPÍTULO (componentes compartilhados)
   ────────────────────────────────────────── */
.ns-container, .container{
  max-width:var(--ns-container);
  margin-inline:auto;
  padding-inline:var(--ns-gutter);
  position:relative;
  width:100%;
}
.ns-section{ padding-block:var(--ns-space-section); position:relative; }

/* Cabeçalho de capítulo padronizado: hairline + folio + título */
.ns-chapter-head{
  border-top:1px solid var(--ns-rule);
  padding-top:var(--ns-space-2);
  margin-bottom:var(--ns-space-6);
}
.ns-chapter-head__folio{
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--ns-space-2);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.ns-chapter-head h2{ margin:var(--ns-space-4) 0 var(--ns-space-2); max-width:22ch; }
.ns-chapter-head p{ color:var(--ns-silver); max-width:58ch; }

/* Carimbo de dossiê */
.ns-stamp{
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1.5px solid var(--ns-signal-deep);
  border-radius:2px;
  color:var(--ns-signal);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  padding:7px 14px;
  /* carimbo reto e alinhado ao layout (sem inclinação) */
}

/* Dot LIVE */
.ns-dot{
  display:inline-block;
  width:8px; height:8px;
  border-radius:50%;
  background:var(--ns-confirm);
  animation:ns-pulse 2s ease-in-out infinite;
  flex-shrink:0;
}

/* Hairline dupla (fecho de seção / footer) */
.ns-rule-double{
  border:0;
  border-top:1px solid var(--ns-rule-lg);
  position:relative;
  margin:0;
}
.ns-rule-double::after{
  content:"";
  position:absolute; left:0; right:0; top:3px;
  height:1px;
  background:var(--ns-rule-lg);
}

/* ──────────────────────────────────────────
   BOTÕES — pill, inversão de tinta (sem scale)
   ────────────────────────────────────────── */
.ns-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--ns-sans);
  font-size:14px;
  font-weight:600;
  letter-spacing:.01em;
  padding:12px 24px;
  border-radius:var(--ns-r-pill);
  border:1px solid transparent;
  cursor:pointer;
  text-decoration:none;
  white-space:nowrap;
  transition:background var(--ns-dur-2) var(--ns-ease), color var(--ns-dur-2) var(--ns-ease), border-color var(--ns-dur-2) var(--ns-ease);
}
.ns-btn--paper{
  background:var(--ns-paper);
  color:var(--ns-ink-0);
  border-color:var(--ns-paper);
}
.ns-btn--paper:hover{ background:transparent; color:var(--ns-paper); }
.ns-btn--ghost{
  background:transparent;
  color:var(--ns-paper);
  border-color:var(--ns-rule-lg);
}
.ns-btn--ghost:hover{ background:var(--ns-paper); color:var(--ns-ink-0); border-color:var(--ns-paper); }
.ns-btn--ink{
  background:var(--ns-ink-on-cream);
  color:var(--ns-cream);
  border-color:var(--ns-ink-on-cream);
}
.ns-btn--ink:hover{ background:transparent; color:var(--ns-ink-on-cream); }
.ns-btn--signal{
  background:var(--ns-signal-deep);
  color:#fff;
  border-color:var(--ns-signal-deep);
}
.ns-btn--signal:hover{ background:transparent; color:var(--ns-signal); border-color:var(--ns-signal); }
.ns-btn--lg{ padding:16px 32px; font-size:15px; }
.ns-btn--sm{ padding:9px 18px; font-size:13px; }

/* Legado .btn (markdown interno, error pages, docs) — mesmo idioma visual */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--ns-sans); font-size:14px; font-weight:600;
  padding:12px 22px;
  border-radius:var(--ns-r-pill);
  border:1px solid transparent;
  cursor:pointer; text-decoration:none; white-space:nowrap;
  transition:background var(--ns-dur-2) var(--ns-ease), color var(--ns-dur-2) var(--ns-ease), border-color var(--ns-dur-2) var(--ns-ease);
}
.btn-primary, .btn-cta{ background:var(--ns-paper); color:var(--ns-ink-0); border-color:var(--ns-paper); }
.btn-primary:hover, .btn-cta:hover{ background:transparent; color:var(--ns-paper); }
.btn-signal{ background:var(--ns-signal-deep); color:#fff; border-color:var(--ns-signal-deep); }
.btn-signal:hover{ background:transparent; color:var(--ns-signal); border-color:var(--ns-signal); }
.btn-ghost, .btn-outline-primary, .btn-outline-light, .btn-light{
  background:transparent; color:var(--ns-paper); border-color:var(--ns-rule-lg);
}
.btn-ghost:hover, .btn-outline-primary:hover, .btn-outline-light:hover, .btn-light:hover{
  border-color:var(--ns-paper); color:var(--ns-paper);
}
.btn-warning{ background:transparent; color:var(--ns-warn); border-color:var(--ns-warn); }
.btn-sm{ padding:8px 14px; font-size:12.5px; }
.btn-lg{ padding:15px 28px; font-size:15px; }
.rounded-pill{ border-radius:var(--ns-r-pill); }

/* ──────────────────────────────────────────
   FORM BASE — folha de requisição
   ────────────────────────────────────────── */
.form-control{
  width:100%;
  background:transparent;
  border:0;
  border-bottom:1px solid var(--ns-rule-lg);
  border-radius:0;
  padding:12px 0;
  color:var(--ns-paper);
  font-family:var(--ns-sans);
  font-size:1rem;
  caret-color:var(--ns-signal);
  outline:none;
  transition:border-color var(--ns-dur-1) var(--ns-ease), box-shadow var(--ns-dur-1) var(--ns-ease);
}
.form-control::placeholder{ color:var(--ns-fog); }
.form-control:focus{ border-bottom-color:var(--ns-signal); box-shadow:0 1px 0 var(--ns-signal); }
.form-control[aria-invalid="true"]{ border-bottom-color:var(--ns-alert); }

/* ──────────────────────────────────────────
   ÍCONES (sprite) + KBD + BADGE
   ────────────────────────────────────────── */
.ico{
  width:20px; height:20px;
  display:inline-block; vertical-align:middle;
  fill:none; stroke:currentColor; stroke-width:1.6;
  stroke-linecap:round; stroke-linejoin:round;
  flex-shrink:0;
}
.ico-xs{ width:14px; height:14px; stroke-width:1.8; }
.ico-sm{ width:16px; height:16px; stroke-width:1.8; }
.ico-xl{ width:28px; height:28px; stroke-width:1.5; }
.mdi{ line-height:1; }

.kbd, kbd, kbd.kbd-hint{
  font-family:var(--ns-mono);
  font-size:10px;
  letter-spacing:0;
  text-transform:none;
  color:var(--ns-silver);
  background:var(--ns-ink-2);
  border:1px solid var(--ns-rule-lg);
  border-radius:3px;
  padding:2px 6px;
}

.badge{
  display:inline-block;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.14em;
  text-transform:uppercase;
  padding:3px 10px;
  border-radius:2px;
  border:1px solid var(--ns-rule-lg);
  background:transparent;
  color:var(--ns-silver);
}
.badge.bg-primary{ background:var(--ns-signal-soft); color:var(--ns-signal); border-color:var(--ns-signal-deep); }
.badge.bg-success{ background:transparent; color:var(--ns-confirm); border-color:var(--ns-confirm); }
.badge.bg-danger{ background:transparent; color:var(--ns-alert); border-color:var(--ns-alert); }
.badge.bg-light{ background:var(--ns-ink-2); color:var(--ns-silver); border-color:var(--ns-rule-lg); }
.bg-soft-primary{ background:var(--ns-signal-soft); }
.bg-soft-success{ background:rgba(75,217,169,.10); }
.bg-soft-warning{ background:rgba(245,181,74,.12); }
.bg-soft-danger{ background:rgba(255,107,122,.12); }
.bg-soft-info{ background:var(--ns-signal-soft); }
.bg-dark{ background:var(--ns-ink-00) !important; }
.bg-white, .bg-light{ background:var(--ns-ink-1) !important; }
.feature-icon{
  width:44px; height:44px;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:var(--ns-r);
  border:1px solid var(--ns-rule-lg);
  color:var(--ns-signal);
  font-size:18px;
}

/* ──────────────────────────────────────────
   UTILITÁRIOS BOOTSTRAP-SHAPED (markdown interno)
   ────────────────────────────────────────── */
.row{ display:flex; flex-wrap:wrap; margin:0 -12px; }
[class^="col-"], [class*=" col-"]{ padding:0 12px; flex:0 0 auto; }
.col-12{ width:100%; } .col-6{ width:50%; }
.col-md-4, .col-md-6,
.col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-12{ width:100%; }
@media (min-width:768px){
  .col-md-4{ width:33.3333%; }
  .col-md-6{ width:50%; }
}
@media (min-width:992px){
  .col-lg-2{ width:16.6666%; } .col-lg-3{ width:25%; } .col-lg-4{ width:33.3333%; }
  .col-lg-5{ width:41.6666%; } .col-lg-6{ width:50%; } .col-lg-7{ width:58.3333%; }
  .col-lg-8{ width:66.6666%; } .col-lg-12{ width:100%; }
  .offset-lg-1{ margin-left:8.3333%; }
}
.justify-content-center{ justify-content:center; }
.justify-content-between{ justify-content:space-between; }
.align-items-center{ align-items:center; }
.align-items-start{ align-items:flex-start; }
.g-3 > *{ padding:0 8px; margin-bottom:16px; } .g-3{ margin:0 -8px; }
.g-4 > *{ padding:0 12px; margin-bottom:24px; } .g-4{ margin:0 -12px; }

.d-flex{ display:flex; } .d-inline-flex{ display:inline-flex; } .d-block{ display:block; }
.d-none{ display:none !important; }
@media (min-width:768px){
  .d-md-block{ display:block !important; } .d-md-flex{ display:flex !important; }
  .d-md-inline-flex{ display:inline-flex !important; } .d-md-none{ display:none !important; }
}
@media (min-width:992px){
  .d-lg-block{ display:block !important; } .d-lg-flex{ display:flex !important; }
  .d-lg-inline-flex{ display:inline-flex !important; }
}
.flex-grow-1{ flex:1 1 auto; } .flex-shrink-0{ flex-shrink:0; }
.flex-wrap{ flex-wrap:wrap; } .flex-column{ flex-direction:column; }
.gap-2{ gap:.5rem; }
.text-center{ text-align:center; } .text-end{ text-align:right; }
.text-uppercase{ text-transform:uppercase; } .text-decoration-none{ text-decoration:none; }

.mb-0{ margin-bottom:0 !important; } .mb-1{ margin-bottom:.25rem !important; }
.mb-2{ margin-bottom:.5rem !important; } .mb-3{ margin-bottom:1rem !important; }
.mb-4{ margin-bottom:1.5rem !important; } .mb-5{ margin-bottom:3rem !important; }
.mt-0{ margin-top:0 !important; } .mt-1{ margin-top:.25rem !important; }
.mt-2{ margin-top:.5rem !important; } .mt-3{ margin-top:1rem !important; }
.mt-4{ margin-top:1.5rem !important; } .mt-5{ margin-top:3rem !important; }
.me-1{ margin-right:.25rem; } .me-2{ margin-right:.5rem; } .me-3{ margin-right:1rem; }
.ms-1{ margin-left:.25rem; } .ms-2{ margin-left:.5rem; } .ms-3{ margin-left:1rem; } .ms-auto{ margin-left:auto; }
.mx-2{ margin-left:.5rem; margin-right:.5rem; }
.my-4{ margin-top:1.5rem; margin-bottom:1.5rem; }
.p-3{ padding:1rem; } .p-4{ padding:1.5rem; } .p-5{ padding:3rem; }
.py-3{ padding-top:1rem; padding-bottom:1rem; }
.py-4{ padding-top:1.5rem; padding-bottom:1.5rem; }
.py-5{ padding-top:5rem; padding-bottom:5rem; }
.px-3{ padding-left:1rem; padding-right:1rem; }
.pt-2{ padding-top:.5rem; } .pt-3{ padding-top:1rem; }
.pe-0{ padding-right:0; } .ps-0{ padding-left:0; } .ps-3{ padding-left:1rem; } .ps-4{ padding-left:1.5rem; }
.w-100{ width:100%; }
.fw-bold{ font-weight:700 !important; } .fw-semibold{ font-weight:600 !important; } .fw-normal{ font-weight:400 !important; }
.font-13{ font-size:13px; } .font-16{ font-size:16px; }
.small{ font-size:.875em; }
.lh-base{ line-height:1.4; }
.position-relative{ position:relative; }
.list-unstyled{ list-style:none; padding-left:0; margin:0; }
.border-0{ border:0 !important; }
.border-top{ border-top:1px solid var(--ns-rule); }
.border-bottom{ border-bottom:1px solid var(--ns-rule); }
.border-secondary{ border-color:var(--ns-rule-lg) !important; }
.shadow-sm{ box-shadow:var(--ns-shadow-sheet); }

.text-mono{ font-family:var(--ns-mono); }
.text-paper{ color:var(--ns-paper) !important; } .text-silver{ color:var(--ns-silver) !important; }
.text-fog{ color:var(--ns-fog) !important; } .text-signal{ color:var(--ns-signal) !important; }
.text-confirm{ color:var(--ns-confirm) !important; } .text-alert{ color:var(--ns-alert) !important; }
.text-warn{ color:var(--ns-warn) !important; }
.text-muted{ color:var(--ns-fog) !important; }
.text-primary{ color:var(--ns-signal) !important; } .text-success{ color:var(--ns-confirm) !important; }
.text-warning{ color:var(--ns-warn) !important; } .text-danger{ color:var(--ns-alert) !important; }
.text-info{ color:var(--ns-signal) !important; }
.text-white-50{ color:var(--ns-silver) !important; }
.text-light{ color:var(--ns-paper); } .text-light.text-opacity-50{ color:var(--ns-silver); }
.text-dark{ color:var(--ns-paper) !important; }

.card{ background:transparent; border:0; }
.card-body, .card-header, .card-footer{ padding:0; background:transparent; border:0; }

.btn-close{
  width:28px; height:28px;
  background:transparent;
  border:1px solid var(--ns-rule-lg);
  border-radius:3px;
  color:var(--ns-silver); cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
}
.btn-close:hover{ color:var(--ns-paper); border-color:var(--ns-paper); }

/* Calculadora usa toggle custom — esconder input nativo */
.form-check-input{ display:none; }
.form-check{ display:contents; }
.form-check-label{ cursor:pointer; }

/* ──────────────────────────────────────────
   MOTION — reveals ([data-reveal] + .is-in, contrato do app.js)
   ────────────────────────────────────────── */
/* Gate html.js: sem JS (crawler, bloqueio, erro) o conteúdo permanece visível */
html.js [data-reveal]{
  opacity:0;
  transition:opacity var(--ns-dur-3) var(--ns-ease), transform var(--ns-dur-3) var(--ns-ease), clip-path var(--ns-dur-3) var(--ns-ease);
}
html.js [data-reveal].is-in{ opacity:1; transform:none; }
/* "fade" NÃO pode repousar com clip-path total: o Chrome computa a
   interseção do IntersectionObserver já clipada — área zero = o
   observer nunca dispara e o reveal trava (deadlock). O repouso
   esconde só com opacity/transform; o wipe roda por keyframes
   quando .is-in chega. -8% evita clipar acentos altos de Fraunces. */
html.js [data-reveal="fade"]{ transform:translateY(24px); }
html.js [data-reveal="fade"].is-in{ animation:ns-wipe-in var(--ns-dur-3) var(--ns-ease) both; }
@keyframes ns-wipe-in{
  from{ clip-path:inset(0 -6% 100% -6%); }
  to{ clip-path:inset(-10% -6% -10% -6%); }
}
html.js [data-reveal="left"]{ transform:translateX(-32px); }
html.js [data-reveal="right"]{ transform:translateX(32px); }
/* carimbo reto, alinhado ao layout (sem inclinação) — entra só por escala */
html.js [data-reveal="scale"]{
  transform:scale(1.15);
  transition-duration:450ms;
  transition-timing-function:var(--ns-ease-stamp);
}
html.js [data-reveal="scale"].is-in{ transform:scale(1); }

/* Stagger em passos de 60ms — animation-delay cobre o variant 'fade'
   (ns-wipe-in roda por animation e ignoraria transition-delay) */
[data-reveal-delay="1"]{ transition-delay:60ms;  animation-delay:60ms; }
[data-reveal-delay="2"]{ transition-delay:120ms; animation-delay:120ms; }
[data-reveal-delay="3"]{ transition-delay:180ms; animation-delay:180ms; }
[data-reveal-delay="4"]{ transition-delay:240ms; animation-delay:240ms; }
[data-reveal-delay="5"]{ transition-delay:300ms; animation-delay:300ms; }
[data-reveal-delay="6"]{ transition-delay:360ms; animation-delay:360ms; }

/* ──────────────────────────────────────────
   KEYFRAMES base
   ────────────────────────────────────────── */
@keyframes ns-grow{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
@keyframes ns-pulse{
  0%, 100%{ box-shadow:0 0 0 0 rgba(75,217,169,.45); }
  50%{ box-shadow:0 0 0 6px rgba(75,217,169,0); }
}
@keyframes ns-intel-scroll{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }
@keyframes ns-print{
  from{ opacity:0; transform:translateY(12px); }
  to{ opacity:1; transform:none; }
}
@keyframes ns-fade-out{ to{ opacity:0; } }
@keyframes ns-fade-up{
  from{ opacity:0; transform:translateY(10px); }
  to{ opacity:1; transform:none; }
}

/* Célula duplicada do marquee (gerada pelo app.js p/ loop seamless) */
.intel-feed__dup{ display:contents; }

/* Âncoras não somem sob a navbar fixa (~64px + respiro) */
main [id]{ scroll-margin-top:84px; }

/* Seleção legível na seção invertida (papel claro): --ns-paper vira quase-preto lá */
.ns-invert ::selection{ color:#fff; }

/* ──────────────────────────────────────────
   VIEW TRANSITIONS MPA — 'virar de página'
   ────────────────────────────────────────── */
@view-transition{ navigation:auto; }
::view-transition-old(root){ animation:ns-fade-out .2s ease; }
::view-transition-new(root){ animation:ns-fade-up .3s var(--ns-ease); }

/* ──────────────────────────────────────────
   REDUCED MOTION (obrigatório)
   ────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  [data-reveal]{ opacity:1; clip-path:none; transform:none; }
  .intel-feed__track{ animation:none !important; }
  .intel-feed__rail{ overflow-x:auto; }
  /* sem marquee, a duplicata do loop vira conteúdo repetido visível */
  .intel-feed__dup{ display:none !important; }
  .ns-dot{ animation:none !important; }
  .ns-progress{ display:none !important; }
  /* View Transitions MPA: o seletor universal não alcança estes pseudos */
  ::view-transition-old(root),
  ::view-transition-new(root){ animation:none !important; }
}

/* ──────────────────────────────────────────
   PRINT — o dossiê impresso de verdade
   (tema é dark-only; sem isto a impressão sai texto claro em papel branco)
   ────────────────────────────────────────── */
@media print{
  :root{ color-scheme:light; }
  *{ animation:none !important; transition:none !important; box-shadow:none !important; }
  body{ background:#fff !important; color:#111 !important; }
  body::before, body::after{ display:none !important; }
  h1,h2,h3,h4,h5,h6, p, li, blockquote, figcaption, span, em, a{ color:#111 !important; }
  a{ text-decoration:underline; }
  .ns-nav, .ns-progress, .intel-feed, .ns-hero__scroll, .cookie-banner,
  .cmdk, #searchModal, .ns-footer__social, .ns-nav__burger{ display:none !important; }
  [data-reveal]{ opacity:1 !important; transform:none !important; clip-path:none !important; }
  .ns-section{ break-inside:avoid-page; }
}
/* ============================================================
   OODA Intelligence — new_style · 01-chrome
   Navbar (lombada) + Footer (expediente) + search modal +
   cookie consent + lang switch + páginas internas
   (blog / artigo / docs / legal / login / erro).
   ============================================================ */

/* ──────────────────────────────────────────
   BARRA DE PROGRESSO DE LEITURA — CSS puro,
   ausência graciosa sem animation-timeline
   ────────────────────────────────────────── */
.ns-progress{ display:none; }
@supports (animation-timeline: scroll(root)){
  .ns-progress{
    display:block;
    position:fixed; top:0; left:0; right:0;
    height:2px;
    background:var(--ns-signal-deep);
    transform-origin:left;
    transform:scaleX(0);
    animation:ns-grow linear both;
    animation-timeline:scroll(root);
    z-index:calc(var(--ns-z-nav) + 1);
    pointer-events:none;
  }
}

/* ──────────────────────────────────────────
   NAVBAR — lombada do dossiê
   NUNCA mix-blend-mode:difference; glass com fallback sólido
   ────────────────────────────────────────── */
.ns-nav{
  position:fixed; top:0; left:0; right:0;
  z-index:var(--ns-z-nav);
  height:64px;
  background:rgba(14,13,18,.95); /* fallback sólido */
  border-bottom:1px solid var(--ns-rule);
  transition:background var(--ns-dur-2) var(--ns-ease), box-shadow var(--ns-dur-2) var(--ns-ease);
}
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){
  .ns-nav{
    background:rgba(14,13,18,.72);
    backdrop-filter:blur(12px) saturate(1.3);
    -webkit-backdrop-filter:blur(12px) saturate(1.3);
  }
}
.ns-nav.is-scrolled{
  background:rgba(14,13,18,.92);
  box-shadow:0 1px 0 var(--ns-rule-lg);
}
.ns-nav__inner{
  display:flex; align-items:center; justify-content:space-between; gap:var(--ns-space-3);
  height:64px;
}

/* Marca tipográfica */
.ns-nav__brand{
  display:inline-flex; align-items:baseline; gap:8px;
  font-family:var(--ns-serif);
  font-size:20px;
  font-weight:600;
  font-variation-settings:'opsz' 40;
  letter-spacing:-.01em;
  color:var(--ns-paper);
  flex-shrink:0;
  line-height:1;
}
.ns-nav__brand:hover{ color:var(--ns-paper); }
.ns-nav__suffix{
  font-family:var(--ns-mono);
  font-size:9px;
  font-weight:500;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--ns-fog);
}

/* Links centrais — sublinhado --ns-signal crescendo */
.ns-nav__links{
  display:none;
  gap:24px;
  list-style:none; margin:0; padding:0;
}
.ns-nav__links a{
  font-family:var(--ns-sans);
  font-size:13px;
  font-weight:500;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ns-silver);
  padding:4px 0;
  background-image:linear-gradient(var(--ns-signal), var(--ns-signal));
  background-repeat:no-repeat;
  background-position:left bottom;
  background-size:0% 1px;
  transition:color var(--ns-dur-1) var(--ns-ease), background-size var(--ns-dur-1) var(--ns-ease);
}
.ns-nav__links a:hover{ color:var(--ns-paper); background-size:100% 1px; }

/* Ações à direita */
.ns-nav__actions{ display:flex; align-items:center; gap:12px; }
/* <480px: brand 166px + busca + idioma + burger não cabem em 390px —
   sem isto o burger termina ~31px além da borda direita (inacessível) */
@media (max-width:479px){
  .ns-nav__suffix{ display:none; }
  .ns-nav__actions{ gap:8px; }
}
.ns-nav__login{
  font-family:var(--ns-sans);
  font-size:13px;
  color:var(--ns-silver);
  display:none;
}
.ns-nav__login:hover{ color:var(--ns-paper); }
@media (min-width:768px){ .ns-nav__login{ display:inline-flex; } }

/* CTA claro — único elemento claro da barra; escondido no mobile (vive no painel) */
.ns-nav__cta{ display:none; }
@media (min-width:768px){ .ns-nav__cta{ display:inline-flex; } }

/* Botão de busca (contrato data-search-open) */
.nav-search{
  display:inline-flex; align-items:center; gap:10px;
  height:36px; padding:0 12px;
  background:transparent;
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  color:var(--ns-silver);
  font-family:var(--ns-sans); font-size:13px;
  cursor:pointer;
  transition:border-color var(--ns-dur-1) var(--ns-ease), color var(--ns-dur-1) var(--ns-ease);
}
.nav-search:hover{ border-color:var(--ns-rule-lg); color:var(--ns-paper); }
.nav-search__ico{ flex-shrink:0; }
.nav-search__label{ display:none; color:var(--ns-fog); font-weight:400; }
@media (min-width:1200px){ .nav-search__label{ display:inline; } }
.nav-search__kbd{
  font-family:var(--ns-mono);
  font-size:10px;
  letter-spacing:.04em;
  padding:2px 6px;
  border:1px solid var(--ns-rule-lg);
  border-radius:3px;
  color:var(--ns-silver);
}
@media (max-width:479px){ .nav-search__kbd{ display:none; } }

/* Burger mobile */
.ns-nav__burger{
  display:inline-flex; flex-direction:column; justify-content:center; gap:5px;
  width:40px; height:40px;
  padding:10px;
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  cursor:pointer;
}
.ns-nav__burger span{
  display:block;
  width:100%; height:1px;
  background:var(--ns-paper);
  transition:transform var(--ns-dur-2) var(--ns-ease), opacity var(--ns-dur-2) var(--ns-ease);
}
.ns-nav.is-open .ns-nav__burger span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.ns-nav.is-open .ns-nav__burger span:nth-child(2){ opacity:0; }
.ns-nav.is-open .ns-nav__burger span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }
@media (min-width:992px){
  .ns-nav__links{ display:flex; }
  .ns-nav__burger{ display:none; }
}

/* Painel mobile fullscreen */
.ns-nav__panel{
  position:fixed; inset:0;
  z-index:-1; /* atrás da barra: burger continua clicável */
  background:rgba(14,13,18,.98);
  padding:96px var(--ns-gutter) 48px;
  display:flex; flex-direction:column; justify-content:space-between;
  opacity:0; visibility:hidden;
  transition:opacity var(--ns-dur-2) var(--ns-ease), visibility var(--ns-dur-2);
  overflow-y:auto;
}
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)){
  .ns-nav__panel{
    /* mais opaco: o conteúdo da página não deve competir com o menu */
    background:rgba(14,13,18,.97);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
  }
}
.ns-nav.is-open .ns-nav__panel{ opacity:1; visibility:visible; }
.ns-nav__panel-links{ list-style:none; margin:0; padding:0; }
.ns-nav__panel-links li{
  border-bottom:1px solid var(--ns-rule);
  opacity:0; transform:translateY(12px);
  transition:opacity var(--ns-dur-3) var(--ns-ease), transform var(--ns-dur-3) var(--ns-ease);
}
.ns-nav.is-open .ns-nav__panel-links li{ opacity:1; transform:none; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(1){ transition-delay:40ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(2){ transition-delay:80ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(3){ transition-delay:120ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(4){ transition-delay:160ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(5){ transition-delay:200ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(6){ transition-delay:240ms; }
.ns-nav.is-open .ns-nav__panel-links li:nth-child(7){ transition-delay:280ms; }
.ns-nav__panel-links a{
  display:block;
  font-family:var(--ns-serif);
  /* escala contida: 7 itens precisam caber confortáveis numa tela de celular */
  font-size:clamp(1.375rem, 5.5vw, 1.75rem);
  font-weight:540;
  font-variation-settings:'opsz' 40;
  line-height:1.15;
  letter-spacing:-.01em;
  color:var(--ns-paper);
  padding:14px 0;
}
.ns-nav__panel-links a:hover{ color:var(--ns-signal); }
.ns-nav__panel-foot{
  display:flex; align-items:center; justify-content:space-between; gap:var(--ns-space-2);
  flex-wrap:wrap;
  padding-top:var(--ns-space-4);
}
.ns-nav__panel-foot .ns-nav__login{ display:inline-flex; font-size:15px; }

/* ──────────────────────────────────────────
   FOOTER — última página / expediente
   ────────────────────────────────────────── */
.ns-footer{
  position:relative;
  background:var(--ns-ink-00);
  border-top:1px solid var(--ns-rule-lg);
  margin-top:var(--ns-space-6);
}
.ns-footer::before{ /* hairline dupla de fecho */
  content:"";
  position:absolute; top:4px; left:0; right:0;
  height:1px;
  background:var(--ns-rule-lg);
}
.ns-footer__mark-wrap{ overflow:hidden; }
.ns-footer__mark{
  font-family:var(--ns-serif);
  font-size:clamp(4rem, 12vw, 9rem);
  font-weight:600;
  font-variation-settings:'opsz' 144,'WONK' 1;
  line-height:.85;
  letter-spacing:-.03em;
  color:var(--ns-paper);
  opacity:.12;
  user-select:none;
  padding-top:var(--ns-space-6);
  margin-bottom:-.06em;
}
.ns-footer__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--ns-space-5) var(--ns-space-4);
  padding:var(--ns-space-6) 0;
  border-top:1px solid var(--ns-rule);
}
@media (min-width:600px){ .ns-footer__grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:992px){ .ns-footer__grid{ grid-template-columns:2fr 1fr 1fr 1fr; } }
.ns-footer__col h5{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
  margin:0 0 var(--ns-space-3);
}
.ns-footer__col ul{ list-style:none; margin:0; padding:0; }
.ns-footer__col ul li{ margin-bottom:10px; }
.ns-footer__col ul a{
  font-family:var(--ns-sans);
  font-size:14px;
  color:var(--ns-silver);
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.ns-footer__col ul a:hover{ color:var(--ns-paper); }
.ns-footer__lede{
  font-size:var(--ns-text-small);
  color:var(--ns-silver);
  max-width:38ch;
  margin:0 0 var(--ns-space-3);
}
.ns-footer__social{ display:flex; gap:10px; margin-bottom:var(--ns-space-3); }
.ns-footer__social a{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px;
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  color:var(--ns-silver);
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.ns-footer__social a:hover{ color:var(--ns-paper); border-color:var(--ns-rule-lg); }
.ns-footer__status{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-silver);
  font-variant-numeric:tabular-nums;
}

/* Rodapé do rodapé */
.ns-footer__bar{
  display:flex; align-items:center; justify-content:space-between; gap:var(--ns-space-2);
  flex-wrap:wrap;
  padding:var(--ns-space-3) 0 var(--ns-space-4);
  border-top:1px solid var(--ns-rule);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.08em;
  color:var(--ns-fog);
}
.ns-footer__bar a, .ns-footer__cookies{
  color:var(--ns-silver);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.08em;
  text-decoration:underline;
  text-decoration-color:var(--ns-rule-lg);
  text-underline-offset:3px;
  cursor:pointer;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.ns-footer__bar a:hover, .ns-footer__cookies:hover{ color:var(--ns-paper); }
.ns-footer__eof{
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:var(--ns-text-micro);
}
.ns-footer__bar-right{ display:flex; align-items:center; gap:var(--ns-space-2); flex-wrap:wrap; }

/* ──────────────────────────────────────────
   CMDK — ficha de consulta (reskin puro; HTML fixo)
   ────────────────────────────────────────── */
.cmdk{ position:fixed; inset:0; z-index:var(--ns-z-modal); display:none; }
.cmdk.is-open{ display:block; }
@keyframes ns-cmdk-scrim{ from{ opacity:0; } to{ opacity:1; } }
@keyframes ns-cmdk-panel{
  from{ opacity:0; transform:translateY(-12px) scale(.98); }
  to{ opacity:1; transform:none; }
}
.cmdk__scrim{
  position:absolute; inset:0;
  background:rgba(14,13,18,.8);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  animation:ns-cmdk-scrim .2s ease both;
}
.cmdk__panel{
  position:relative;
  max-width:720px; width:calc(100% - 32px);
  margin:8vh auto 0;
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  box-shadow:var(--ns-shadow-modal);
  display:flex; flex-direction:column;
  max-height:76vh;
  overflow:hidden;
  animation:ns-cmdk-panel .22s var(--ns-ease) both;
}
.cmdk__header{
  display:flex; align-items:center; gap:14px;
  padding:6px 20px 0;
  border-bottom:1px solid var(--ns-rule);
}
.cmdk__header > .ico{ width:18px; height:18px; color:var(--ns-fog); }
.cmdk__input{
  flex:1; min-width:0;
  background:transparent;
  border:0; outline:0;
  color:var(--ns-paper);
  font-family:var(--ns-sans);
  font-size:18px;
  padding:16px 0;
  caret-color:var(--ns-signal);
}
.cmdk__input::placeholder{ color:var(--ns-fog); }
.cmdk__tabs{
  display:flex; gap:2px;
  padding:2px 12px 0;
  overflow-x:auto;
  scrollbar-width:none;
  border-bottom:1px solid var(--ns-rule);
  flex-shrink:0;
}
.cmdk__tabs::-webkit-scrollbar{ display:none; }
.cmdk__tab{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-silver);
  border-bottom:2px solid transparent;
  padding:12px 12px;
  white-space:nowrap;
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.cmdk__tab:hover{ color:var(--ns-paper); }
.cmdk__tab.is-active{ color:var(--ns-paper); border-bottom-color:var(--ns-signal); }
.cmdk__tab > .ico{ width:13px; height:13px; }
.cmdk__count{
  font-family:var(--ns-mono);
  font-size:9.5px;
  color:var(--ns-fog);
  border:1px solid var(--ns-rule);
  border-radius:2px;
  min-width:18px; height:16px; padding:0 4px;
  display:inline-flex; align-items:center; justify-content:center;
  font-variant-numeric:tabular-nums;
}
.cmdk__tab.is-active .cmdk__count{ color:var(--ns-signal); border-color:var(--ns-signal-deep); }
.cmdk__body{ flex:1; overflow-y:auto; padding:4px 0 8px; }
.cmdk__body::-webkit-scrollbar{ width:8px; }
.cmdk__body::-webkit-scrollbar-track{ background:transparent; }
.cmdk__body::-webkit-scrollbar-thumb{ background:var(--ns-ink-3); border-radius:4px; }
.cmdk__empty{ text-align:center; padding:56px 30px 48px; color:var(--ns-silver); }
.cmdk__empty > .ico{ width:36px; height:36px; color:var(--ns-signal); opacity:.6; margin-bottom:14px; }
.cmdk__hint{ color:var(--ns-paper); margin:6px 0 0; font-size:.95rem; }
.cmdk__shortcuts{
  display:flex; flex-wrap:wrap; gap:12px; justify-content:center;
  margin-top:22px;
  font-family:var(--ns-mono); font-size:10.5px;
  color:var(--ns-fog); letter-spacing:.08em;
}
.cmdk__footer{
  display:flex; align-items:center; justify-content:space-between;
  padding:10px 20px;
  border-top:1px solid var(--ns-rule);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.12em;
  color:var(--ns-fog);
  text-transform:uppercase;
}
.cmdk__brand{ color:var(--ns-silver); display:inline-flex; align-items:center; gap:8px; }
.cmdk__brand::before{
  content:"";
  width:6px; height:6px; border-radius:50%;
  background:var(--ns-confirm);
  animation:ns-pulse 2s ease-in-out infinite;
}
.cmdk__status{ display:inline-flex; align-items:center; gap:6px; font-variant-numeric:tabular-nums; }
.cmdk__sentinel{ height:1px; }
.cmdk-group{ margin:4px 0 12px; }
.cmdk-group__head{
  display:flex; align-items:center; gap:10px;
  padding:14px 20px 8px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.cmdk-group__head::after{ content:""; flex:1; height:1px; background:var(--ns-rule); }
.cmdk-group__head > span{
  font-variant-numeric:tabular-nums;
  color:var(--ns-silver);
}
.cmdk-row{
  display:flex; align-items:center; gap:14px;
  padding:11px 20px;
  cursor:pointer;
  border-left:2px solid transparent;
  transition:background var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.cmdk-row:hover{ background:var(--ns-ink-2); color:inherit; }
.cmdk-row.is-active{ background:var(--ns-ink-2); border-left-color:var(--ns-signal-deep); }
.cmdk-row__ico{
  width:34px; height:34px; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  color:var(--ns-signal);
}
.cmdk-row__ico .ico{ width:15px; height:15px; }
.cmdk-row__body{ flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
.cmdk-row__kind{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--ns-fog);
  line-height:1;
}
.cmdk-row__title{
  color:var(--ns-paper);
  font-size:.95rem;
  font-weight:500;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  line-height:1.3;
}
.cmdk-row__excerpt{
  color:var(--ns-silver);
  font-size:.82rem;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
  overflow:hidden;
  line-height:1.45;
}
.cmdk-row__go{
  align-self:center; flex-shrink:0;
  color:var(--ns-fog);
  opacity:0; transform:translateX(-4px);
  transition:opacity var(--ns-dur-1) var(--ns-ease), transform var(--ns-dur-1) var(--ns-ease);
}
.cmdk-row:hover .cmdk-row__go, .cmdk-row.is-active .cmdk-row__go{
  opacity:1; transform:none; color:var(--ns-signal);
}
.cmdk-row mark{ background:var(--ns-signal-soft); color:var(--ns-signal); font-weight:500; }
@media (max-width:640px){
  .cmdk__panel{ margin:4vh auto 0; width:calc(100% - 16px); max-height:88vh; }
  .cmdk__header{ padding:2px 14px 0; gap:10px; }
  .cmdk__input{ font-size:16px; padding:13px 0; }
  .cmdk-row{ padding:11px 14px; gap:12px; }
  .cmdk-group__head, .cmdk__footer{ padding-left:14px; padding-right:14px; }
}

/* ──────────────────────────────────────────
   LGPD COOKIE CONSENT — tarja de dossiê + ficha
   ────────────────────────────────────────── */
.btn-cookie{
  font-family:var(--ns-sans);
  font-size:13px;
  font-weight:600;
  padding:10px 18px;
  border-radius:var(--ns-r-pill);
  border:1px solid transparent;
  cursor:pointer;
  white-space:nowrap;
  transition:background var(--ns-dur-2) var(--ns-ease), color var(--ns-dur-2) var(--ns-ease), border-color var(--ns-dur-2) var(--ns-ease);
}
.btn-cookie--primary{ background:var(--ns-paper); color:var(--ns-ink-0); border-color:var(--ns-paper); }
.btn-cookie--primary:hover{ background:transparent; color:var(--ns-paper); }
.btn-cookie--secondary{ background:transparent; color:var(--ns-paper); border-color:var(--ns-rule-lg); }
.btn-cookie--secondary:hover{ border-color:var(--ns-paper); }
.btn-cookie--ghost{
  background:transparent;
  color:var(--ns-silver);
  border-color:transparent;
  font-family:var(--ns-mono);
  font-size:12px;
  text-decoration:underline;
  text-decoration-color:var(--ns-rule-lg);
  text-underline-offset:3px;
}
.btn-cookie--ghost:hover{ color:var(--ns-paper); }

/* Banner — tarja fixa embaixo */
.cookie-banner{
  position:fixed;
  bottom:0; left:0; right:0;
  z-index:calc(var(--ns-z-modal) - 2);
  background:var(--ns-ink-1);
  border-top:1px solid var(--ns-rule-lg);
  opacity:0; transform:translateY(16px);
  transition:opacity var(--ns-dur-2) var(--ns-ease), transform var(--ns-dur-2) var(--ns-ease);
}
.cookie-banner.is-visible{ opacity:1; transform:none; }
.cookie-banner__inner{
  max-width:var(--ns-container);
  margin:0 auto;
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:20px;
  align-items:center;
  padding:16px var(--ns-gutter);
}
.cookie-banner__icon{
  width:36px; height:36px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  color:var(--ns-signal);
  flex-shrink:0;
}
.cookie-banner__body{ min-width:0; }
.cookie-banner__title{
  font-family:var(--ns-sans);
  font-size:14px; font-weight:700;
  color:var(--ns-paper);
  margin:0 0 4px;
  display:flex; align-items:baseline; gap:8px;
}
.cookie-banner__title::before{
  content:"[!] AVISO";
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  font-weight:500;
  letter-spacing:.18em;
  color:var(--ns-signal);
}
.cookie-banner__desc{
  font-family:var(--ns-sans);
  font-size:14px;
  color:var(--ns-silver);
  margin:0; line-height:1.5;
}
.cookie-banner__desc a{
  color:var(--ns-paper);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-color:var(--ns-signal-deep);
}
.cookie-banner__desc a:hover{ color:var(--ns-signal); }
.cookie-banner__desc strong{ color:var(--ns-paper); }
.cookie-banner__actions{ display:flex; gap:8px; flex-wrap:wrap; }
@media (max-width:860px){
  .cookie-banner__inner{ grid-template-columns:1fr; gap:12px; padding:16px var(--ns-space-3); }
  .cookie-banner__icon{ display:none; }
  .cookie-banner__actions{ width:100%; display:grid; grid-template-columns:1fr 1fr; }
  .cookie-banner__actions .btn-cookie--primary{ grid-column:1 / -1; }
}

/* Modal de preferências — ficha (z 80) */
.cookie-modal{
  position:fixed; inset:0;
  z-index:var(--ns-z-modal);
  display:flex; align-items:center; justify-content:center;
  padding:24px;
  opacity:0;
  transition:opacity var(--ns-dur-2) var(--ns-ease);
}
.cookie-modal.is-visible{ opacity:1; }
.cookie-modal__scrim{
  position:absolute; inset:0;
  background:rgba(14,13,18,.8);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.cookie-modal__panel{
  position:relative;
  width:100%; max-width:640px;
  max-height:calc(100vh - 48px);
  display:flex; flex-direction:column;
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  box-shadow:var(--ns-shadow-modal);
  overflow:hidden;
}
.cookie-modal__header{
  padding:22px 24px 16px;
  border-bottom:1px solid var(--ns-rule);
  position:relative;
}
.cookie-modal__eyebrow{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--ns-fog);
  margin-bottom:8px;
}
.cookie-modal__title{
  font-family:var(--ns-serif);
  font-size:1.6rem;
  font-weight:540;
  font-variation-settings:'opsz' 40;
  color:var(--ns-paper);
  margin:0;
}
.cookie-modal__close{
  position:absolute; top:18px; right:18px;
  width:32px; height:32px;
  display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  color:var(--ns-silver);
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.cookie-modal__close:hover{ color:var(--ns-paper); border-color:var(--ns-paper); }
.cookie-modal__body{ flex:1; overflow-y:auto; padding:20px 24px; }
.cookie-modal__intro{ font-size:14px; color:var(--ns-silver); line-height:1.6; margin:0 0 20px; }
.cookie-modal__intro strong{ color:var(--ns-paper); }
.cookie-modal__legal{
  font-size:12px;
  color:var(--ns-fog);
  line-height:1.6;
  border-top:1px solid var(--ns-rule);
  padding-top:16px;
  margin:20px 0 0;
}
.cookie-modal__legal a{
  color:var(--ns-silver);
  text-decoration:underline;
  text-underline-offset:2px;
  text-decoration-color:var(--ns-rule-lg);
}
.cookie-modal__legal a:hover{ color:var(--ns-signal); }
.cookie-modal__footer{
  display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap;
  padding:16px 24px;
  border-top:1px solid var(--ns-rule);
}

/* Categorias */
.cookie-cat{
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  padding:16px;
  margin-bottom:12px;
  background:var(--ns-ink-0);
}
.cookie-cat__head{ display:flex; gap:14px; align-items:flex-start; }
.cookie-cat__title{
  font-family:var(--ns-sans);
  font-size:14px; font-weight:700;
  color:var(--ns-paper);
  margin-bottom:4px;
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
}
.cookie-cat__badge{
  font-family:var(--ns-mono);
  font-size:9px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-fog);
  border:1px solid var(--ns-rule-lg);
  border-radius:2px;
  padding:2px 6px;
}
.cookie-cat__desc{ font-size:13px; color:var(--ns-silver); line-height:1.55; }

/* Switch 36x20 */
.cookie-cat__switch{ position:relative; flex-shrink:0; display:inline-block; cursor:pointer; margin-top:2px; }
.cookie-cat__switch input{ position:absolute; opacity:0; width:0; height:0; }
.cookie-cat__toggle{
  display:block;
  width:36px; height:20px;
  background:var(--ns-ink-3);
  border-radius:var(--ns-r-pill);
  position:relative;
  transition:background var(--ns-dur-2) var(--ns-ease);
}
.cookie-cat__toggle::after{
  content:"";
  position:absolute; top:3px; left:3px;
  width:14px; height:14px;
  border-radius:50%;
  background:var(--ns-paper);
  transition:transform var(--ns-dur-2) var(--ns-ease);
}
.cookie-cat__switch input:checked + .cookie-cat__toggle{ background:var(--ns-signal-deep); }
.cookie-cat__switch input:checked + .cookie-cat__toggle::after{ transform:translateX(16px); }
.cookie-cat__switch input:focus-visible + .cookie-cat__toggle{ outline:2px solid var(--ns-signal); outline-offset:3px; }
.cookie-cat__switch--locked{ cursor:not-allowed; opacity:.6; }

.cookie-cat__details{ margin-top:12px; }
.cookie-cat__details summary{
  font-family:var(--ns-mono);
  font-size:11px;
  letter-spacing:.08em;
  color:var(--ns-fog);
  cursor:pointer;
}
.cookie-cat__details summary:hover{ color:var(--ns-silver); }

/* Tabela hairline mono */
.cookie-table{
  width:100%;
  margin-top:10px;
  border-collapse:collapse;
  font-family:var(--ns-mono);
  font-size:12px;
  font-variant-numeric:tabular-nums;
}
.cookie-table th{
  text-align:left;
  font-size:var(--ns-text-micro);
  letter-spacing:.14em;
  text-transform:uppercase;
  font-weight:500;
  color:var(--ns-fog);
  padding:8px 10px;
  border-bottom:1px solid var(--ns-rule-lg);
}
.cookie-table td{
  padding:8px 10px;
  border-bottom:1px solid var(--ns-rule);
  color:var(--ns-silver);
  vertical-align:top;
}
.cookie-table code{ font-size:11px; color:var(--ns-paper); background:var(--ns-ink-2); padding:1px 6px; border-radius:2px; }

/* FAB */
.cookie-fab{
  position:fixed;
  bottom:20px; left:20px;
  z-index:var(--ns-z-fab);
  width:44px; height:44px;
  border-radius:50%;
  background:var(--ns-ink-2);
  border:1px solid var(--ns-rule-lg);
  color:var(--ns-silver);
  display:inline-flex; align-items:center; justify-content:center;
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.cookie-fab:hover{ color:var(--ns-paper); border-color:var(--ns-paper); }

/* ──────────────────────────────────────────
   LANG SWITCH — menu = ficha
   ────────────────────────────────────────── */
.lang-switch{ position:relative; }
.lang-switch__btn{
  display:inline-flex; align-items:center; gap:6px;
  background:transparent; border:0; cursor:pointer;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-silver);
  padding:8px 8px;
  white-space:nowrap; flex-shrink:0;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.lang-switch__btn:hover{ color:var(--ns-paper); }
.lang-switch__code{ color:var(--ns-paper); letter-spacing:.04em; font-variant-numeric:tabular-nums; }
.lang-switch__menu{
  position:absolute; right:0; top:calc(100% + 8px);
  min-width:200px;
  background:var(--ns-ink-2);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  padding:4px;
  margin:0;
  list-style:none;
  box-shadow:var(--ns-shadow-modal);
  opacity:0; visibility:hidden; transform:translateY(-4px);
  transition:opacity var(--ns-dur-1) var(--ns-ease), transform var(--ns-dur-1) var(--ns-ease), visibility var(--ns-dur-1);
  z-index:var(--ns-z-nav);
  pointer-events:none;
}
.lang-switch.is-open .lang-switch__menu{
  opacity:1; visibility:visible; transform:none; pointer-events:auto;
}
.lang-switch__menu li{ list-style:none; }
.lang-switch__menu button{
  display:flex; justify-content:space-between; align-items:center;
  width:100%;
  padding:9px 12px;
  border-radius:2px;
  font-family:var(--ns-sans);
  font-size:13px;
  color:var(--ns-silver);
  background:transparent;
  cursor:pointer;
  transition:background var(--ns-dur-1) var(--ns-ease), color var(--ns-dur-1) var(--ns-ease);
}
.lang-switch__menu button:hover{ background:var(--ns-signal-soft); color:var(--ns-paper); }
.lang-switch__menu [aria-selected="true"] button{ color:var(--ns-signal); }
.lang-switch__name{ color:inherit; }
.lang-switch__iso{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.14em;
  color:var(--ns-fog);
}

/* Footer: menu do lang-switch abre para CIMA (está no fim da página) */
.ns-footer .lang-switch__menu{ top:auto; bottom:calc(100% + 8px); }

/* ============================================================
   PÁGINAS INTERNAS — mesmo dossiê, nomes de classe originais
   (nav é fixa: primeiro bloco de cada página compensa 64px)
   ============================================================ */

/* ── BLOG: arquivo / análises ── */
.editorial{ padding:160px 0 var(--ns-space-7); }
.editorial-head{ max-width:820px; margin:0 auto 56px; text-align:center; }
.editorial-head h1{ font-size:clamp(2.6rem, 5vw, 4.4rem); }
.editorial-head p{ color:var(--ns-silver); }

.post-grid{ display:grid; gap:24px; grid-template-columns:1fr; }
@media (min-width:768px){ .post-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:1100px){ .post-grid{ grid-template-columns:1fr 1fr 1fr; } }

/* Ficha catalográfica */
.post-card{
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  display:flex; flex-direction:column;
  overflow:hidden;
  transition:border-color var(--ns-dur-2) var(--ns-ease), background var(--ns-dur-2) var(--ns-ease);
}
.post-card:hover{ border-color:var(--ns-rule-lg); background:var(--ns-ink-2); }
.post-card__cover{
  position:relative;
  aspect-ratio:16/9;
  background:var(--ns-ink-1);
  border-bottom:1px solid var(--ns-rule);
  overflow:hidden;
}
.post-card__cover::before{
  content:"";
  position:absolute; inset:0;
  background-image:repeating-linear-gradient(to bottom, transparent 0 27px, var(--ns-rule) 27px 28px);
}
.post-card__cover::after{
  content:attr(data-glyph);
  position:absolute;
  right:-14px; bottom:-34px;
  font-family:var(--ns-serif);
  font-style:italic;
  font-weight:500;
  font-variation-settings:'opsz' 144;
  font-size:170px; line-height:1;
  color:var(--ns-paper);
  opacity:.1;
  letter-spacing:-.04em;
  pointer-events:none;
}
.post-card__cover-tag{
  position:absolute; left:18px; top:18px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-signal);
  border:1px solid var(--ns-rule-lg);
  border-radius:2px;
  background:var(--ns-ink-0);
  padding:5px 9px;
}
.post-card__cover-id{
  position:absolute; right:18px; top:20px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.12em;
  color:var(--ns-fog);
  font-variant-numeric:tabular-nums;
}
.post-card__body{ padding:24px 28px 28px; display:flex; flex-direction:column; flex-grow:1; }
.post-card__cat{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ns-signal);
  margin-bottom:14px;
}
.post-card h3{
  font-size:1.45rem;
  line-height:1.15;
  margin-bottom:14px;
  color:var(--ns-paper);
}
.post-card p{ color:var(--ns-silver); font-size:.92rem; flex-grow:1; }
.post-card__meta{
  margin-top:20px; padding-top:16px;
  border-top:1px solid var(--ns-rule);
  display:flex; justify-content:space-between; align-items:center;
  font-family:var(--ns-mono);
  font-size:11px;
  color:var(--ns-fog);
  letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
}
.post-card__more{
  color:var(--ns-paper);
  font-family:var(--ns-sans);
  font-weight:500; font-size:13px;
  display:inline-flex; align-items:center; gap:6px;
}
.post-card__more:hover{ color:var(--ns-signal); }
.post-card__cover--img, .doc-card__cover--img{
  background-size:cover; background-position:center; background-repeat:no-repeat;
}
.post-card__cover--img::before, .post-card__cover--img::after,
.doc-card__cover--img::before, .doc-card__cover--img::after{ content:none !important; }

/* Filtros mono */
.cat-filters{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-bottom:40px; }
.cat-filter{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:7px 14px;
  border:1px solid var(--ns-rule);
  border-radius:2px;
  color:var(--ns-silver);
  background:transparent;
  cursor:pointer;
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.cat-filter:hover{ color:var(--ns-paper); border-color:var(--ns-rule-lg); }
.cat-filter.active{
  color:var(--ns-signal);
  border-color:var(--ns-signal-deep);
  text-decoration:underline;
  text-decoration-color:var(--ns-signal);
  text-underline-offset:4px;
}

/* ── ARTIGO — leitura 62ch ── */
.article{ max-width:62ch; margin:0 auto; padding:140px 0 var(--ns-space-7); }
.article h1{ font-size:clamp(2.4rem, 5vw, 4rem); margin-bottom:24px; }
.article h2{ font-size:1.8rem; margin-top:56px; margin-bottom:20px; }
.article h3{ font-size:1.4rem; margin-top:36px; margin-bottom:14px; }
.article p{ color:var(--ns-bone); font-size:var(--ns-text-body); line-height:1.75; margin-bottom:24px; }
.article a{
  color:var(--ns-signal);
  text-decoration:underline;
  text-decoration-color:var(--ns-signal-deep);
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
.article a:hover{ color:var(--ns-paper); }
.article ul, .article ol{ color:var(--ns-bone); padding-left:24px; margin-bottom:24px; }
.article li{ margin-bottom:8px; line-height:1.7; }
.article li::marker{ color:var(--ns-fog); }
.article code{
  font-family:var(--ns-mono);
  font-size:.88em;
  background:var(--ns-ink-2);
  padding:2px 6px;
  border-radius:2px;
  color:var(--ns-signal);
}
.article pre{
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  padding:22px;
  overflow-x:auto;
  font-family:var(--ns-mono);
  font-size:13px; line-height:1.6;
  color:var(--ns-bone);
  margin-bottom:28px;
}
.article pre code{ background:transparent; padding:0; color:inherit; }
.article blockquote{
  font-family:var(--ns-serif);
  font-style:italic;
  font-size:1.5rem; line-height:1.35;
  border-left:2px solid var(--ns-signal-deep);
  padding:4px 0 4px 28px;
  margin:36px 0;
  color:var(--ns-paper);
}
.article hr{ border:0; border-top:1px solid var(--ns-rule); margin:48px 0; }
.article img{ max-width:100%; border-radius:var(--ns-r); margin:24px 0; }
.article table{ width:100%; border-collapse:collapse; font-size:.9rem; margin-bottom:28px; }
.article th, .article td{ text-align:left; padding:10px 12px; border-bottom:1px solid var(--ns-rule); }
.article th{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-fog);
  font-weight:500;
}

.article-meta{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.12em;
  color:var(--ns-silver);
  margin-bottom:36px;
  display:flex; gap:18px; flex-wrap:wrap;
  font-variant-numeric:tabular-nums;
}
.article-meta .badge{ background:transparent; color:var(--ns-signal); border-color:var(--ns-signal-deep); }

.article-hero{
  position:relative;
  width:100%;
  aspect-ratio:21/9;
  background-size:cover; background-position:center; background-repeat:no-repeat;
  border-radius:var(--ns-r);
  overflow:hidden;
  margin:0 0 36px;
  border:1px solid var(--ns-rule-lg);
}
.article-hero::after{
  content:"";
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(14,13,18,0) 30%, rgba(14,13,18,.62) 100%);
  pointer-events:none;
}
.article-hero--doc{ aspect-ratio:24/9; margin-bottom:28px; }
.article-hero__tag{
  position:absolute; left:20px; top:20px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-paper);
  background:var(--ns-ink-0);
  border:1px solid var(--ns-rule-lg);
  border-radius:2px;
  padding:6px 12px;
  z-index:2;
}
@media (max-width:720px){
  .article-hero{ aspect-ratio:16/9; }
  .article-hero--doc{ aspect-ratio:16/9; }
}

/* breadcrumb */
.breadcrumb{
  display:flex; gap:10px; flex-wrap:wrap;
  list-style:none; padding:0; margin:0 0 24px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.breadcrumb a{ color:var(--ns-silver); }
.breadcrumb a:hover{ color:var(--ns-paper); }
.breadcrumb-item + .breadcrumb-item::before{ content:"/"; padding-right:10px; color:var(--ns-fog); }

/* prev/next */
.post-nav{
  display:grid; grid-template-columns:1fr 1fr; gap:24px;
  margin-top:60px; padding-top:30px;
  border-top:1px solid var(--ns-rule);
}
.post-nav a{ display:block; }
.post-nav small{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-fog);
  display:block; margin-bottom:8px;
}
.post-nav span{ color:var(--ns-paper); font-size:.95rem; }
.post-nav a:hover span{ color:var(--ns-signal); }

/* pagination */
.pagination{ display:flex; gap:6px; justify-content:center; list-style:none; padding:0; margin:60px 0 0; }
.page-link{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:36px; height:36px; padding:0 12px;
  border:1px solid var(--ns-rule);
  border-radius:2px;
  font-family:var(--ns-mono);
  font-size:12px;
  color:var(--ns-silver);
  font-variant-numeric:tabular-nums;
}
.page-link:hover{ color:var(--ns-paper); border-color:var(--ns-rule-lg); }
.page-item.active .page-link{
  background:var(--ns-signal-deep);
  color:#fff;
  border-color:var(--ns-signal-deep);
}

/* ── DOCS — grade 240/1fr/200 preservada ── */
.docs-layout{ display:grid; grid-template-columns:1fr; gap:40px; padding:140px 0 var(--ns-space-7); }
@media (min-width:992px){ .docs-layout{ grid-template-columns:240px 1fr 200px; gap:60px; } }
.docs-sidebar{ position:sticky; top:88px; align-self:start; }
.docs-sidebar h6{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ns-fog);
  margin-bottom:16px;
}
.docs-sidebar nav a{
  display:block;
  font-size:.9rem;
  padding:8px 0 8px 14px;
  margin-left:-14px;
  color:var(--ns-silver);
  border-left:2px solid transparent;
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.docs-sidebar nav a:hover{ color:var(--ns-paper); }
.docs-sidebar nav a.active{ color:var(--ns-paper); border-left-color:var(--ns-signal); }
.docs-sidebar nav .ps-4{ padding-left:28px; font-size:.85rem; }
.docs-toc{ position:sticky; top:88px; align-self:start; }
.docs-toc nav a{
  display:block;
  padding:4px 0;
  font-family:var(--ns-mono);
  font-size:12px;
  color:var(--ns-fog);
}
.docs-toc nav a:hover{ color:var(--ns-paper); }
.docs-toc nav .ps-3{ padding-left:12px; }

/* doc cards (índice de docs) — ficha */
.doc-card{
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  display:flex; flex-direction:column;
  overflow:hidden;
  transition:border-color var(--ns-dur-2) var(--ns-ease), background var(--ns-dur-2) var(--ns-ease);
}
.doc-card:hover{ border-color:var(--ns-rule-lg); background:var(--ns-ink-2); }
.doc-card__cover{
  position:relative;
  aspect-ratio:16/7;
  background:var(--ns-ink-1);
  border-bottom:1px solid var(--ns-rule);
  overflow:hidden;
}
.doc-card__cover::before{
  content:"";
  position:absolute; inset:0;
  background-image:repeating-linear-gradient(to bottom, transparent 0 23px, var(--ns-rule) 23px 24px);
}
.doc-card__cover::after{
  content:attr(data-glyph);
  position:absolute; right:-10px; bottom:-28px;
  font-family:var(--ns-mono);
  font-weight:600;
  font-size:130px; line-height:1;
  color:var(--ns-paper);
  opacity:.08;
  pointer-events:none;
}
.doc-card__cover-tag{
  position:absolute; left:16px; top:14px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-signal);
  background:var(--ns-ink-0);
  border:1px solid var(--ns-rule-lg);
  border-radius:2px;
  padding:4px 8px;
}
.doc-card__cover-id{
  position:absolute; right:16px; top:16px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  color:var(--ns-fog);
  letter-spacing:.12em;
  font-variant-numeric:tabular-nums;
}
.doc-card__body{ padding:24px 28px 28px; display:flex; flex-direction:column; flex-grow:1; }
.doc-card__icon{
  width:44px; height:44px;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  color:var(--ns-signal);
  display:inline-flex; align-items:center; justify-content:center;
  font-size:20px;
  margin-bottom:18px;
}
.doc-card h5{ color:var(--ns-paper); margin-bottom:14px; }
.doc-card ul{ list-style:none; padding:0; margin-top:16px; }
.doc-card ul li{ padding:8px 0; border-top:1px solid var(--ns-rule); }
.doc-card ul li:first-child{ border-top:0; }
.doc-card ul li a{ color:var(--ns-silver); font-size:.9rem; display:flex; align-items:center; gap:8px; }
.doc-card ul li a:hover{ color:var(--ns-paper); }

/* ── LEGAL — documento oficial, 72ch ── */
.legal-page{ max-width:72ch; margin:0 auto; padding:140px var(--ns-gutter) var(--ns-space-7); }
.legal-page h1{ font-size:clamp(2.4rem, 4.4vw, 3.4rem); margin-bottom:8px; }
.legal-page > p:first-of-type{
  color:var(--ns-fog);
  font-family:var(--ns-mono);
  font-size:12px;
  letter-spacing:.12em;
  margin-bottom:40px;
  font-variant-numeric:tabular-nums;
}
.legal-page h2{ font-size:1.6rem; margin-top:48px; margin-bottom:16px; }
.legal-page h3{ font-family:var(--ns-sans); font-size:1.1rem; font-weight:700; margin-top:32px; margin-bottom:12px; color:var(--ns-paper); }
.legal-page p, .legal-page li{ color:var(--ns-bone); line-height:1.7; margin-bottom:16px; }
.legal-page a{
  color:var(--ns-paper);
  text-decoration:underline;
  text-decoration-color:var(--ns-rule-lg);
  text-underline-offset:3px;
  transition:color var(--ns-dur-1) var(--ns-ease), text-decoration-color var(--ns-dur-1) var(--ns-ease);
}
.legal-page a:hover{ color:var(--ns-signal); text-decoration-color:var(--ns-signal); }
.legal-page strong{ color:var(--ns-paper); font-weight:640; }
.legal-page code{
  font-family:var(--ns-mono);
  font-size:.88em;
  background:var(--ns-ink-2);
  border:1px solid var(--ns-rule);
  padding:1px 7px;
  border-radius:2px;
  color:var(--ns-paper);
}
.legal-page blockquote{
  margin:24px 0;
  padding:14px 20px;
  border-left:2px solid var(--ns-signal-deep);
  background:var(--ns-signal-soft);
  color:var(--ns-paper);
}
.legal-page blockquote p{ margin:0; color:var(--ns-paper); }
.legal-page table{
  width:100%;
  margin:20px 0 28px;
  border-collapse:collapse;
  font-family:var(--ns-mono);
  font-size:12px;
  font-variant-numeric:tabular-nums;
  border:1px solid var(--ns-rule);
}
.legal-page table th, .legal-page table td{
  text-align:left;
  padding:12px 16px;
  border-bottom:1px solid var(--ns-rule);
  vertical-align:top;
}
.legal-page table th{
  font-size:var(--ns-text-micro);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ns-paper);
  font-weight:500;
  border-bottom:1px solid var(--ns-rule-lg);
}
.legal-page table td{ color:var(--ns-silver); line-height:1.5; }
.legal-page table td strong{ color:var(--ns-paper); }
.legal-page table tbody tr:last-child td{ border-bottom:0; }
@media (max-width:720px){
  .legal-page{ padding:120px var(--ns-space-3) var(--ns-space-6); }
  .legal-page table{ display:block; overflow-x:auto; }
  .legal-page table th, .legal-page table td{ padding:10px 12px; }
}

/* ── LOGIN — credencial de acesso ── */
.workspace-login{
  min-height:calc(100vh - 64px);
  padding:140px 24px 60px;
  display:flex; align-items:center; justify-content:center;
  position:relative;
}
.workspace-login__container{
  position:relative; z-index:1;
  width:100%; max-width:480px;
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  padding:40px 36px;
  box-shadow:var(--ns-shadow-sheet);
}
.workspace-login__eyebrow{ margin-bottom:18px; }
.workspace-login__title{
  font-family:var(--ns-serif);
  font-size:clamp(1.8rem, 4vw, 2.4rem);
  font-weight:540;
  font-variation-settings:'opsz' 72;
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--ns-paper);
  margin:0 0 12px;
}
.workspace-login__lede{ color:var(--ns-silver); font-size:.95rem; margin:0 0 28px; line-height:1.5; }
.workspace-login__form{ margin-bottom:20px; }
.workspace-login__label{
  display:block;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
  font-weight:500;
  margin-bottom:8px;
}
.workspace-login__input-group{
  display:flex; align-items:stretch;
  border-bottom:1px solid var(--ns-rule-lg);
  transition:border-color var(--ns-dur-1) var(--ns-ease), box-shadow var(--ns-dur-1) var(--ns-ease);
}
.workspace-login__input-group:focus-within{
  border-bottom-color:var(--ns-signal);
  box-shadow:0 1px 0 var(--ns-signal);
}
.workspace-login__input{
  flex:1; min-width:0;
  background:transparent;
  border:0; outline:0;
  color:var(--ns-paper);
  font-family:var(--ns-sans);
  font-size:1rem;
  padding:12px 0;
  caret-color:var(--ns-signal);
}
.workspace-login__input::placeholder{ color:var(--ns-fog); }
.workspace-login__input-group:has(.workspace-login__input[aria-invalid="true"]){
  border-bottom-color:var(--ns-alert);
  box-shadow:0 1px 0 var(--ns-alert);
}
.workspace-login__input-suffix{
  display:inline-flex; align-items:center;
  padding:0 0 0 12px;
  font-family:var(--ns-mono);
  font-size:.85rem;
  color:var(--ns-fog);
  white-space:nowrap;
}
.workspace-login__error{
  margin-top:12px;
  font-family:var(--ns-sans);
  font-size:.85rem;
  color:var(--ns-alert);
  display:flex; align-items:baseline; gap:8px;
}
.workspace-login__error::before{
  content:"[!]";
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.1em;
}
.workspace-login__submit{
  width:100%;
  margin-top:22px;
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--ns-sans);
  font-size:15px; font-weight:600;
  padding:14px 24px;
  border-radius:var(--ns-r-pill);
  background:var(--ns-paper);
  color:var(--ns-ink-0);
  border:1px solid var(--ns-paper);
  cursor:pointer;
  transition:background var(--ns-dur-2) var(--ns-ease), color var(--ns-dur-2) var(--ns-ease);
}
.workspace-login__submit:hover{ background:transparent; color:var(--ns-paper); }
.workspace-login__help-links{
  display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap;
  margin:22px 0 0;
  font-family:var(--ns-mono);
  font-size:11.5px;
  letter-spacing:.04em;
}
.workspace-login__help-link{
  color:var(--ns-silver);
  text-decoration:underline;
  text-decoration-color:var(--ns-rule-lg);
  text-underline-offset:3px;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.workspace-login__help-link:hover{ color:var(--ns-paper); }
.workspace-login__sep{ color:var(--ns-fog); }
.workspace-login__footer{
  margin-top:32px;
  padding-top:22px;
  border-top:1px solid var(--ns-rule);
  display:flex; flex-direction:column; gap:8px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.workspace-login__footer-item{ display:inline-flex; align-items:center; gap:8px; }
.workspace-login__footer-item svg{ color:var(--ns-signal); opacity:.65; flex-shrink:0; }
@media (max-width:540px){
  .workspace-login{ padding:110px 16px 40px; }
  .workspace-login__container{ padding:28px 22px; }
  .workspace-login__input-suffix{ display:none; }
}

/* ── ERROR PAGES — incidente registrado ── */
.error-page{
  min-height:calc(100vh - 64px);
  padding:140px 24px 60px;
  display:flex; align-items:center; justify-content:center;
  position:relative;
  overflow:hidden;
}
.error-page__bg{ position:absolute; inset:0; pointer-events:none; }
.error-page__bg::before{
  content:"";
  position:absolute; inset:0;
  background-image:repeating-linear-gradient(to bottom, transparent 0 95px, var(--ns-rule) 95px 96px);
  mask-image:radial-gradient(ellipse at center, black 0%, transparent 80%);
  -webkit-mask-image:radial-gradient(ellipse at center, black 0%, transparent 80%);
}
.error-page__container{ position:relative; z-index:1; width:100%; max-width:720px; text-align:left; }
.error-page__code{
  position:absolute;
  top:50%; right:-40px;
  transform:translateY(-50%);
  font-family:var(--ns-serif);
  font-style:italic;
  font-weight:560;
  font-variation-settings:'opsz' 144,'WONK' 1;
  font-size:clamp(8rem, 20vw, 16rem);
  line-height:.85;
  letter-spacing:-.05em;
  color:var(--ns-signal);
  opacity:.15;
  user-select:none;
  pointer-events:none;
  z-index:-1;
}
.error-page--critical .error-page__code{ color:var(--ns-alert); }
.error-page--warning .error-page__code{ color:var(--ns-warn); }
.error-page--info .error-page__code{ color:var(--ns-signal); }
.error-page__content{ position:relative; z-index:2; max-width:560px; }
.error-page__eyebrow{ margin-bottom:22px; }
.error-page__title{
  font-family:var(--ns-serif);
  font-size:clamp(2.4rem, 5.4vw, 4rem);
  font-weight:540;
  font-variation-settings:'opsz' 96;
  line-height:1.02;
  letter-spacing:-.02em;
  color:var(--ns-paper);
  margin:0 0 18px;
}
.error-page__message{
  color:var(--ns-bone);
  font-size:1.05rem; line-height:1.55;
  margin:0 0 36px;
  max-width:52ch;
}
.error-page__ctas{ display:flex; gap:14px; flex-wrap:wrap; align-items:center; margin-bottom:38px; }
.error-page__meta{
  padding-top:22px;
  border-top:1px solid var(--ns-rule);
  display:flex; flex-wrap:wrap; gap:14px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.08em;
  color:var(--ns-fog);
  text-transform:uppercase;
  font-variant-numeric:tabular-nums;
}
.error-page__meta-item{ display:inline-flex; align-items:center; gap:8px; }
.error-page__meta-item svg{ color:var(--ns-signal); opacity:.65; flex-shrink:0; }
.error-page--critical .error-page__meta-item svg{ color:var(--ns-alert); }
.error-page--warning .error-page__meta-item svg{ color:var(--ns-warn); }
.error-page__meta-item code{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  background:var(--ns-ink-2);
  border:1px solid var(--ns-rule);
  padding:1px 6px;
  border-radius:2px;
  color:var(--ns-silver);
  letter-spacing:0;
  text-transform:none;
}
.error-page__meta-sep{ color:var(--ns-fog); }
@media (max-width:720px){
  .error-page{ padding:110px 16px 40px; }
  .error-page__code{ right:-20px; font-size:9rem; opacity:.1; }
  .error-page__ctas .btn, .error-page__ctas .ns-btn{ width:100%; justify-content:center; }
  .error-page__meta-sep{ display:none; }
  .error-page__meta-item{ width:100%; }
}

/* ── MODAL genérico (markup interno legado) ── */
.modal{
  position:fixed; inset:0;
  background:rgba(14,13,18,.8);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  display:none; align-items:flex-start; justify-content:center;
  z-index:var(--ns-z-modal);
  padding:80px 24px;
}
.modal.show{ display:flex; }
.modal-content{
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  box-shadow:var(--ns-shadow-modal);
  width:100%; max-width:640px;
  overflow:hidden;
}
.modal-header{
  padding:18px 22px;
  border-bottom:1px solid var(--ns-rule);
  display:flex; align-items:center; justify-content:space-between;
}
.modal-title{
  margin:0;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-eyebrow);
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ns-silver);
}
.modal-body{ padding:22px; }
/* ============================================================
   NEW_STYLE · 10-hero.css — Capa do Dossiê + ticker LIVE INTEL
   Markup: _includes/templates/new_style/hero.html
   Consome apenas tokens --ns-* (definidos em 00-core.css).
   DEPENDE de 00-core.css (carregado antes na concatenação):
   h1 impact, contrato <em>, .ns-btn*, .ns-stamp, .ns-dot,
   [data-reveal] + variantes, @keyframes ns-pulse / ns-intel-scroll,
   .intel-feed__dup{display:contents}, bloco reduced-motion global.
   Este partial NÃO redefine nada disso (evita override do core).
   ============================================================ */

/* ------------------------------------------------------------
   [1] HERO — capa do dossiê
   ------------------------------------------------------------ */
.ns-hero{
  position:relative;
  min-height:100svh;
  display:flex; flex-direction:column;
  padding-top:calc(64px + var(--ns-space-4));
  background-color:var(--ns-ink-0);
  /* (pauta de caderno removida — as linhas horizontais atravessavam o
     display type e liam como artefato de render, não como design) */
}
.ns-hero__frame{
  position:relative; z-index:1; /* acima do vídeo de fundo */
  display:flex; flex-direction:column;
  flex:1 1 auto; width:100%;
}

/* ── Background cinematográfico — a plataforma operando atrás da capa.
   Vídeo mudo em loop, MUITO escurecido: o display type continua dono
   da cena (padrão Palantir: UI do produto como textura, não como foco). */
.ns-hero__bg{
  position:absolute; inset:0;
  overflow:hidden;
  pointer-events:none;
}
.ns-hero__bg-video{
  width:100%; height:100%;
  object-fit:cover;
  opacity:.14;
  filter:saturate(1.15);
}
/* véu de tinta por cima: garante contraste do texto em qualquer frame */
.ns-hero__bg::after{
  content:"";
  position:absolute; inset:0;
  background:
    linear-gradient(180deg, rgba(14,13,18,.62) 0%, rgba(14,13,18,.30) 45%, rgba(14,13,18,.86) 100%),
    radial-gradient(120% 90% at 18% 38%, rgba(14,13,18,.78) 0%, rgba(14,13,18,.22) 60%, rgba(14,13,18,0) 100%);
}
/* mobile: economia de dados/bateria — só o fundo sólido */
@media (max-width: 767px){
  .ns-hero__bg{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .ns-hero__bg{ display:none; }
}

/* Linha de classificação — abre o dossiê */
.ns-hero__classification{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:var(--ns-space-2); flex-wrap:wrap;
  border-top:1px solid var(--ns-rule);
  border-bottom:1px solid var(--ns-rule);
  padding:10px 0;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-fog);
  font-variant-numeric:tabular-nums;
}
.ns-hero__class-right{ white-space:nowrap; }

/* Corpo em grid 12 col */
.ns-hero__body{
  display:grid; grid-template-columns:repeat(12, 1fr);
  gap:24px;
  margin-block:auto;
  padding-block:var(--ns-space-6);
}
.ns-hero__main{ grid-column:1 / span 12; }

.ns-hero__eyebrow{
  display:inline-flex; align-items:center;
  font-family:var(--ns-mono); font-size:var(--ns-text-eyebrow);
  font-weight:500; letter-spacing:.24em; text-transform:uppercase;
  color:var(--ns-fog);
  margin:0 0 var(--ns-space-3);
}
.ns-hero__eyebrow-mark{
  width:6px; height:6px; flex:none;
  background:var(--ns-signal-deep);
  margin-right:12px;
}

/* Título-impacto — tipografia (Fraunces opsz 144) e o <em>
   sublinhado vêm do core (h1 / contrato em); aqui só layout */
.ns-hero .hero__title{
  margin:0 0 var(--ns-space-3);
  max-width:12ch;
}

/* Kicker — 'Observe. Orient. Decide. Act.' */
.ns-hero__subtitle{
  font-family:var(--ns-sans); font-size:.8125rem; font-weight:700;
  font-variation-settings:'wdth' 115;
  text-transform:uppercase; letter-spacing:.08em;
  color:var(--ns-signal);
  margin:0 0 var(--ns-space-3);
}

.ns-hero__lede{
  font-family:var(--ns-sans);
  font-size:clamp(1.125rem, 1.4vw, 1.1875rem);
  line-height:1.6; font-weight:420;
  color:var(--ns-bone);
  max-width:52ch;
  margin:0 0 var(--ns-space-5);
}
.ns-hero__lede strong,
.ns-hero__lede .text-white{ color:var(--ns-paper); font-weight:600; }

.ns-hero__ctas{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:var(--ns-space-2);
  margin-bottom:var(--ns-space-5);
}
/* micro: seta do CTA ghost desliza no hover (só no hero) */
.ns-hero__ctas .ns-btn .ico{ transition:transform var(--ns-dur-1) var(--ns-ease); }
.ns-hero__ctas .ns-btn:hover .ico,
.ns-hero__ctas .ns-btn:focus-visible .ico{ transform:translateX(4px); }

/* Trust strip — mono discreto */
.ns-hero__trust{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:12px;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--ns-fog);
}
.ns-hero__trust-sep{ opacity:.6; }

/* Nota de margem (só >=992px) */
.ns-hero__margin{ display:none; }

/* título = cabeçalho da ficha, com régua inferior (mesma receita do
   ns-sheet__stamp do extrato de relatório) */
.ns-hero__margin-title{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-fog);
  margin:0; padding-bottom:12px;
  border-bottom:1px solid var(--ns-rule);
}
.ns-hero__margin-list{
  list-style:none; margin:0; padding:0;
}
.ns-hero__margin-item{
  display:flex; flex-direction:column; gap:4px;
  padding-block:14px;
  border-bottom:1px dotted var(--ns-rule-lg);
}
.ns-hero__margin-k{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-fog);
}
.ns-hero__margin-v{
  font-family:var(--ns-mono); font-size:.8125rem;
  color:var(--ns-paper);
  font-variant-numeric:tabular-nums;
}
/* carimbo de status = rodapé da ficha: ancorado logo após a lista,
   largura total, com ponto pulsante indicando operação ativa */
.ns-hero__stamp{
  margin-top:var(--ns-space-2);
  width:100%; justify-content:center;
  transform:none;
}
.ns-hero__stamp::before{
  content:"";
  width:7px; height:7px; border-radius:50%;
  background:var(--ns-confirm);
  box-shadow:0 0 0 0 rgba(75,217,169,.5);
  animation:ns-pulse 1.8s var(--ns-ease) infinite;
}
html.js .ns-hero__stamp[data-reveal="scale"]:not(.is-in){ transform:scale(.96); opacity:0; }
html.js .ns-hero__stamp[data-reveal="scale"].is-in{ transform:none; opacity:1; }

/* Scroll hint — 'FOLHEAR ↓' (repouso legível: WCAG AA em texto micro) */
.ns-hero__scroll{
  align-self:center;
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.24em; text-transform:uppercase;
  color:var(--ns-silver); text-decoration:none;
  opacity:.85;
  padding:var(--ns-space-2) var(--ns-space-3) var(--ns-space-3);
  transition:opacity var(--ns-dur-1) var(--ns-ease), color var(--ns-dur-1) var(--ns-ease);
}
.ns-hero__scroll:hover,
.ns-hero__scroll:focus-visible{ opacity:1; color:var(--ns-paper); }
.ns-hero__scroll:focus-visible{ outline:2px solid var(--ns-signal); outline-offset:4px; }
/* seta com respiração sutil — some no kill global de reduced motion */
.ns-hero__scroll-arrow{ display:inline-block; animation:ns-arrow-bob 1.8s var(--ns-ease) infinite; }
@keyframes ns-arrow-bob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }

/* ------------------------------------------------------------
   [2] INTEL FEED — ticker LIVE INTEL (contrato app.js integral)
   .ns-dot + @keyframes ns-pulse/ns-intel-scroll vêm do core.
   ------------------------------------------------------------ */
.intel-feed{
  position:relative;
  overflow:hidden;
  background:var(--ns-ink-0);
  border-top:1px solid var(--ns-rule-lg);
  border-bottom:1px solid var(--ns-rule-lg);
}
.intel-feed__head{
  display:flex; align-items:center; gap:12px;
  padding:12px 0;
  border-bottom:1px solid var(--ns-rule);
  font-family:var(--ns-mono); font-size:var(--ns-text-eyebrow);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-silver);
}
.intel-feed__label{ color:var(--ns-paper); }
.intel-feed__sep{ color:var(--ns-fog); }
.intel-feed__meta{ margin-left:auto; color:var(--ns-fog); }

/* Pausa acessível (WCAG 2.2.2) — app.js alterna aria-pressed
   e .is-paused no [data-intel-feed] */
.ns-ticker__pause{
  flex:none;
  width:28px; height:28px;
  display:grid; place-items:center;
  background:transparent;
  color:var(--ns-silver);
  border:1px solid var(--ns-rule); border-radius:3px;
  cursor:pointer;
  transition:color var(--ns-dur-1) var(--ns-ease),
             border-color var(--ns-dur-1) var(--ns-ease);
}
.ns-ticker__pause:hover{ color:var(--ns-paper); border-color:var(--ns-rule-lg); }
.ns-ticker__pause:focus-visible{ outline:2px solid var(--ns-signal); outline-offset:2px; }
.ns-ticker__pause[aria-pressed="true"]{ color:var(--ns-signal); border-color:var(--ns-signal); }

/* Trilho com fade de 48px nas bordas */
.intel-feed__rail{
  overflow:hidden; position:relative;
  -webkit-mask-image:linear-gradient(90deg, transparent 0, #000 48px, #000 calc(100% - 48px), transparent 100%);
  mask-image:linear-gradient(90deg, transparent 0, #000 48px, #000 calc(100% - 48px), transparent 100%);
}
.intel-feed__track{
  display:inline-flex; align-items:baseline; gap:0;
  padding:16px 0;
  white-space:nowrap;
  will-change:transform;
  animation:ns-intel-scroll 60s linear infinite;
}
/* pausa por hover/foco (CSS puro) e via botão (.is-paused) */
.intel-feed__rail:hover .intel-feed__track,
.intel-feed:focus-within .intel-feed__track{ animation-play-state:paused; }
.intel-feed.is-paused .intel-feed__track{ animation-play-state:paused !important; }
/* pausa automática (aba oculta / fora do viewport) — app.js, sem tocar no botão */
.intel-feed.is-auto-paused .intel-feed__track{ animation-play-state:paused; }

/* Células — inclusive as GERADAS pelo app.js (fmtCell) */
.intel-cell{
  display:inline-flex; align-items:baseline; gap:8px;
  font-family:var(--ns-mono); font-size:.8125rem;
  font-variant-numeric:tabular-nums;
}
/* separador editorial ' / ' entre células */
.intel-cell::after{
  content:'/';
  color:var(--ns-fog); opacity:.55;
  margin-inline:24px;
}
.intel-cell__k{
  font-size:var(--ns-text-micro);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-fog);
}
.intel-cell__v{ color:var(--ns-paper); }
.intel-cell__d{ color:var(--ns-silver); font-size:.75rem; letter-spacing:.04em; }
.intel-cell__d.up{ color:var(--ns-confirm); }
.intel-cell__d.down{ color:var(--ns-alert); }

/* ------------------------------------------------------------
   [3] RESPONSIVO
   ------------------------------------------------------------ */
@media (min-width: 992px){
  .ns-hero__main{ grid-column:1 / span 7; }
  /* ficha contida (mesma linguagem do extrato de relatório), em vez de
     texto solto com borda à esquerda — o carimbo deixa de flutuar no vão */
  .ns-hero__margin{
    display:block;
    grid-column:9 / span 4;
    align-self:start;
    position:sticky; top:96px;
    background:var(--ns-ink-1);
    border:1px solid var(--ns-rule);
    border-radius:var(--ns-r);
    box-shadow:var(--ns-shadow-sheet);
    padding:20px 24px 24px;
  }
}
@media (max-width: 767px){
  .ns-hero__body{ padding-block:var(--ns-space-5); }
  .ns-hero__classification{ letter-spacing:.12em; }
  .ns-hero__ctas .ns-btn{ width:100%; }
  .intel-feed__meta{ display:none; }
}

/* ------------------------------------------------------------
   [4] REDUCED MOTION — complementos hero-específicos
   (o kill global de animações/transições, [data-reveal] visível,
   .intel-feed__track{animation:none} e .intel-feed__rail{overflow-x:auto}
   já vêm do bloco reduced-motion de 00-core.css)
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce){
  .intel-feed__rail{
    -webkit-mask-image:none; mask-image:none;
  }
  .ns-hero__stamp{ transform:none; }
}
/* ============================================================
   new_style · 20-stats.css — § 01 SUMÁRIO EXECUTIVO (#numbers)
   Dossiê Vivo: cabeçalho de capítulo + tabela editorial hairline
   (2 colunas de .stat-card) + pull-quote de posicionamento.
   Só tokens --ns-* · escopo .ns-stats (não vaza para outras seções).
   Contrato JS: .stat-card__* são GERADOS por app.js (intel.json) —
   estilizar apenas, nunca depender de markup extra.
   ============================================================ */

.ns-stats{
  padding-block: var(--ns-space-section);
  background: var(--ns-ink-0);
}

/* ── Cabeçalho de capítulo (folio + título + sub) ── */
.ns-stats .ns-chapter-head{
  border-top: 1px solid var(--ns-rule);
  padding-top: var(--ns-space-2);
}

.ns-stats .ns-chapter-head__folio{
  display: flex;
  align-items: baseline;
  gap: var(--ns-space-2);
  flex-wrap: wrap;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
}

.ns-stats .ns-chapter-head__no{
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .24em;
  font-weight: 500;
  color: var(--ns-signal);
}

.ns-stats .ns-chapter-head__folio .eyebrow{
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .24em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--ns-fog);
}

.ns-stats .ns-chapter-head__tlp{
  margin-left: auto;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  color: var(--ns-fog);
}

.ns-stats .ns-chapter-head__title{
  margin: var(--ns-space-3) 0 0;
  font-family: var(--ns-serif);
  font-size: var(--ns-text-h2);
  line-height: 1.02;
  letter-spacing: -.015em;
  font-weight: 540;
  font-variation-settings: 'opsz' 96;
  color: var(--ns-paper);
  text-wrap: balance;
  max-width: 22ch;
}

/* <em> de contrato ([data-stats-title-em]) — itálico + marca-texto */
.ns-stats .ns-chapter-head__title em{
  font-style: italic;
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--ns-signal-deep);
  text-decoration-thickness: .08em;
  text-underline-offset: .12em;
}

.ns-stats .ns-chapter-head__sub{
  margin: var(--ns-space-2) 0 0;
  font-family: var(--ns-sans);
  font-size: var(--ns-text-body);
  font-weight: 420;
  line-height: 1.65;
  color: var(--ns-silver);
  max-width: 58ch;
}

/* ── Layout 12 colunas: tabela (1-8) + pull-quote (9-12) ── */
.ns-stats__layout{
  margin-top: var(--ns-space-5);
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: var(--ns-space-3);
  align-items: start;
}

.ns-stats__grid{ grid-column: 1 / span 8; }
.ns-stats__quote{ grid-column: 10 / -1; }

/* ── Tabela editorial hairline (células geradas pelo app.js) ── */
.ns-stats .stats-grid{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: var(--ns-rule);
  border: 1px solid var(--ns-rule);
  border-radius: var(--ns-r);
  overflow: hidden;
}

.ns-stats .stat-card{
  position: relative;
  background: var(--ns-ink-1);
  padding: 40px 32px;
  transition: background var(--ns-dur-1) var(--ns-ease);
}

/* hairline superior que 'imprime' no hover — micro-interação contida */
.ns-stats .stat-card::before{
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--ns-signal-deep);
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--ns-dur-2) var(--ns-ease);
}
.ns-stats .stat-card:hover{
  background: var(--ns-ink-2);
}
.ns-stats .stat-card:hover::before{ transform: scaleX(1); }

/* card-âncora do argumento comercial (R$ 7,19M) ocupa a linha inteira */
.ns-stats .stat-card[data-key="contexto_mercado"]{
  grid-column: 1 / -1;
  background: var(--ns-ink-2);
}
.ns-stats .stat-card[data-key="contexto_mercado"] .stat-card__v{
  color: var(--ns-signal);
}

.ns-stats .stat-card__k{
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
  margin: 0 0 16px;
}

.ns-stats .stat-card__v{
  font-family: var(--ns-serif);
  font-size: var(--ns-text-stat);
  font-weight: 560;
  font-variation-settings: 'opsz' 144;
  line-height: 1;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
  color: var(--ns-paper);
  text-wrap: balance;
  overflow-wrap: break-word;
}

/* <em> de contrato dentro do valor — itálico + marca-texto (regra global,
   redeclarada aqui por autonomia do partial; valores idênticos) */
.ns-stats .stat-card__v em{
  font-style: italic;
  color: inherit;
  text-decoration: underline;
  text-decoration-color: var(--ns-signal-deep);
  text-decoration-thickness: .08em;
  text-underline-offset: .12em;
}

.ns-stats .stat-card__l{
  font-family: var(--ns-sans);
  font-size: .8125rem;
  font-weight: 500;
  line-height: 1.5;
  color: var(--ns-silver);
  margin-top: 12px;
}

.ns-stats .stat-card__d{
  font-family: var(--ns-mono);
  font-size: .75rem;
  line-height: 1.6;
  letter-spacing: 0;
  color: var(--ns-silver);
  margin-top: 10px;
}

/* Deltas semânticos — só quando o dado trouxer .up/.down */
.ns-stats .stat-card__d.up{ color: var(--ns-confirm); }
.ns-stats .stat-card__d.down{ color: var(--ns-alert); }
.ns-stats .stat-card__d.up::before{ content: '\25B2\00A0'; font-size: .625rem; }
.ns-stats .stat-card__d.down::before{ content: '\25BC\00A0'; font-size: .625rem; }

/* ── Pull-quote de posicionamento (col 9-12) ── */
.ns-stats__quote{
  display: flex;
  flex-direction: column;
  gap: var(--ns-space-3);
  padding-top: var(--ns-space-2);
}

.ns-stats .ns-pullquote{
  margin: 0;
  position: relative;
  padding-top: 2.25rem;
  font-family: var(--ns-serif);
  font-style: italic;
  font-weight: 480;
  font-variation-settings: 'opsz' 40;
  font-size: clamp(1.5rem, 2.2vw, 2rem);
  line-height: 1.3;
  color: var(--ns-paper);
  text-wrap: balance;
}

.ns-stats .ns-pullquote::before{
  content: '\201C';
  position: absolute;
  top: -.75rem;
  left: -.06em;
  font-family: var(--ns-serif);
  font-size: 4rem;
  line-height: 1;
  color: var(--ns-signal-soft);
  pointer-events: none;
}

.ns-stats .ns-pullquote p{
  margin: 0;
  font: inherit;
  color: inherit;
}

.ns-stats__quote-src{
  margin: 0;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
}

/* ── Reveal "impressão" — stagger por célula quando o grid ganha .is-in
      (contrato [data-reveal] → .is-in do app.js; base global intocada) ── */
@keyframes ns-stat-print{
  from{ opacity: 0; transform: translateY(16px); }
  to{ opacity: 1; transform: none; }
}

.ns-stats [data-stats-grid].is-in .stat-card{
  animation: ns-stat-print .5s var(--ns-ease) backwards;
}
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(1){ animation-delay: 80ms; }
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(2){ animation-delay: 160ms; }
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(3){ animation-delay: 240ms; }
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(4){ animation-delay: 320ms; }
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(5){ animation-delay: 400ms; }
.ns-stats [data-stats-grid].is-in .stat-card:nth-child(6){ animation-delay: 480ms; }

/* ── Responsivo ── */
@media (max-width: 991.98px){
  .ns-stats__layout{
    grid-template-columns: 1fr;
    gap: var(--ns-space-4);
  }
  .ns-stats__grid,
  .ns-stats__quote{ grid-column: 1 / -1; }

  /* pull-quote sobe e vira caption compacta acima da tabela */
  .ns-stats__quote{
    order: -1;
    padding-top: 0;
    gap: var(--ns-space-1);
    border-left: 2px solid var(--ns-signal-deep);
    padding-left: var(--ns-space-2);
  }
  .ns-stats .ns-pullquote{
    padding-top: 0;
    font-size: 1.25rem;
    max-width: 44ch;
  }
  .ns-stats .ns-pullquote::before{ content: none; }
}

@media (max-width: 767.98px){
  .ns-stats .stats-grid{ grid-template-columns: 1fr; }
  .ns-stats .stat-card{ padding: 32px 24px; }
  .ns-stats .ns-chapter-head__tlp{ display: none; }
}

/* ── Reduced motion (obrigatório) ── */
@media (prefers-reduced-motion: reduce){
  .ns-stats .stat-card,
  .ns-stats [data-stats-grid].is-in .stat-card{
    animation: none !important;
    transition: none !important;
  }
}
/* ============================================================
   new_style / 30 — FEATURES (§02 · ANEXO A) + MODULES (§03 · ANEXO B)
   Dossiê Vivo — Editorial Noir de Inteligência
   Depende de: tokens --ns-* (:root), componentes base compartilhados
   (.ns-section, .ns-chapter-head, .ns-eyebrow/.eyebrow, .ns-label,
   .ns-lede, .ns-h2, .ns-btn, .container, [data-reveal]) definidos
   nos partials base do tema.
   ============================================================ */

/* ────────────────────────────────────────────────────────────
   FEATURES — índice de revista (ol.ns-index)
   ──────────────────────────────────────────────────────────── */
.ns-index-wrap{
  position:relative;
  margin-top:var(--ns-space-5);
}

.ns-index{
  list-style:none;
  margin:0;
  padding:0;
  counter-reset:none;
}

.ns-index__row{
  display:grid;
  grid-template-columns:48px 1fr;
  gap:var(--ns-space-2) var(--ns-space-3);
  align-items:start;
  padding-block:var(--ns-space-4);
  border-top:1px solid var(--ns-rule);
  transition:background var(--ns-dur-1) var(--ns-ease);
}
.ns-index__row:last-child{
  border-bottom:1px solid var(--ns-rule);
}
.ns-index__row:hover,
.ns-index__row:focus-within{
  background:var(--ns-ink-1);
}

/* número de índice — Fraunces gigante, fantasma */
.ns-index__num{
  font-family:var(--ns-serif);
  font-size:1.5rem;
  font-weight:500;
  font-variation-settings:'opsz' 72;
  line-height:1.1;
  color:var(--ns-paper);
  opacity:.25;
  font-variant-numeric:tabular-nums;
  transition:transform var(--ns-dur-1) var(--ns-ease), opacity var(--ns-dur-1) var(--ns-ease);
}
.ns-index__row:hover .ns-index__num{
  transform:translateX(8px);
  opacity:.5;
}

.ns-index__body{ min-width:0; }

/* título de capacidade — Archivo (override deliberado do h3 serif global) */
.ns-index__title{
  font-family:var(--ns-sans);
  font-variation-settings:normal;
  font-size:1.375rem;
  font-weight:700;
  letter-spacing:-.01em;
  line-height:1.25;
  color:var(--ns-paper);
  margin:0 0 var(--ns-space-1);
}

.ns-index__desc{
  font-family:var(--ns-sans);
  font-size:.9375rem;
  line-height:1.65;
  color:var(--ns-silver);
  max-width:60ch;
  margin:0;
}

/* rodapé técnico — readout mono (prova de artefato) */
.ns-index__artifact{
  display:block;
  margin-top:var(--ns-space-2);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
}

/* coluna direita — selo + categoria */
.ns-index__side{
  grid-column:2;
  display:flex;
  align-items:center;
  gap:var(--ns-space-2);
}

.ns-index__badge{
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  flex-shrink:0;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r-pill);
  color:var(--ns-signal);
}
.ns-index__badge .ico{
  width:16px;
  height:16px;
  display:block;
}

.ns-index__cat{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
  white-space:nowrap;
}

@media (min-width:992px){
  .ns-index__row{
    grid-template-columns:96px 7fr 3fr;
    padding-inline:var(--ns-space-2);
  }
  .ns-index__num{ font-size:3rem; line-height:1; }
  .ns-index__side{
    grid-column:auto;
    flex-direction:column;
    align-items:flex-end;
    justify-self:end;
    gap:var(--ns-space-2);
  }
  .ns-index__badge{ width:48px; height:48px; }
  .ns-index__badge .ico{ width:20px; height:20px; }
}

/* linha de pipeline — cresce com o scroll (progressive enhancement) */
.ns-index__line{ display:none; }
@media (min-width:1200px){
  .ns-index__line{
    display:block;
    position:absolute;
    left:-24px;
    top:0;
    width:1px;
    height:100%;
    background:var(--ns-signal-deep);
  }
  @supports (animation-timeline: view()){
    .ns-index__line{
      height:100%;
      transform-origin:top;
      animation:ns-index-grow linear both;
      animation-timeline:view();
      animation-range:entry 0% cover 70%;
    }
  }
}
@keyframes ns-index-grow{
  from{ transform:scaleY(0); }
  to{ transform:scaleY(1); }
}

/* ────────────────────────────────────────────────────────────
   MODULES — grid bento hairline (.ns-bento)
   ──────────────────────────────────────────────────────────── */
.ns-bento{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:1px;
  background:var(--ns-rule);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  overflow:hidden;
  margin-top:var(--ns-space-5);
}

/* preenche o resto da última linha do grid (contagem de módulos é
   data-driven — sem isso, células vazias exporiam o fundo hairline).
   Cor do FUNDO DA PÁGINA (ink-0), não dos cards (ink-1): com ink-1 o
   vão lia como um card vazio quebrado. */
.ns-bento::after{
  content:"";
  grid-column:auto / -1;
  background:var(--ns-ink-0);
}

.ns-bento .module-card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:var(--ns-space-2);
  min-width:0;
  background:var(--ns-ink-1);
  padding:var(--ns-space-4);
  cursor:pointer;
  transition:background var(--ns-dur-1) var(--ns-ease);
}

/* flagship: primeiro módulo ocupa 2x2 */
.ns-bento .module-card:first-child{
  grid-column:span 2;
  grid-row:span 2;
}

/* glow radial no cursor — contrato --mx/--my (default centro) */
.ns-bento .module-card::before{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(240px at var(--mx,50%) var(--my,50%), var(--ns-signal-soft), transparent 70%);
  opacity:0;
  transition:opacity var(--ns-dur-2) var(--ns-ease);
  pointer-events:none;
}
.ns-bento .module-card:hover,
.ns-bento .module-card:focus-visible{
  background:var(--ns-ink-2);
}
.ns-bento .module-card:hover::before,
.ns-bento .module-card:focus-visible::before{
  opacity:1;
}
.ns-bento .module-card:focus-visible{
  outline:2px solid var(--ns-signal);
  outline-offset:-2px;
}
.ns-bento .module-card > *{ position:relative; }

/* header mono do card — MOD-01 / ID */
.ns-bento__meta{
  display:flex;
  justify-content:space-between;
  gap:var(--ns-space-2);
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
  font-variant-numeric:tabular-nums;
}
.ns-bento__id{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  min-width:0;
}

.module-card__icon{
  color:var(--ns-signal);
}
.module-card__icon .ico{
  width:22px;
  height:22px;
  display:block;
}

.ns-bento .module-card__name{
  font-family:var(--ns-serif);
  font-size:1.35rem;
  font-weight:520;
  font-variation-settings:'opsz' 40;
  line-height:1.15;
  letter-spacing:-.01em;
  color:var(--ns-paper);
  margin:0;
}
.ns-bento .module-card:first-child .module-card__name{
  font-size:1.6rem;
}

.module-card__price{
  margin-top:4px;
  font-family:var(--ns-mono);
  font-size:.6875rem;
  letter-spacing:.06em;
  color:var(--ns-silver);
  font-variant-numeric:tabular-nums;
}

.ns-bento .module-card__desc{
  font-family:var(--ns-sans);
  font-size:.875rem;
  line-height:1.6;
  color:var(--ns-silver);
  margin:0;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.ns-bento .module-card:first-child .module-card__desc{
  -webkit-line-clamp:4;
}

/* rodapé do card — chamada de ficha */
.module-card__more{
  margin-top:auto;
  padding-top:var(--ns-space-2);
  font-family:var(--ns-mono);
  font-size:.6875rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--ns-signal);
  /* opacidade plena: a .75 o violeta caía a ~3.7:1 (abaixo do AA) */
  opacity:1;
  transition:color var(--ns-dur-1) var(--ns-ease), transform var(--ns-dur-1) var(--ns-ease);
}
.ns-bento .module-card:hover .module-card__more,
.ns-bento .module-card:focus-visible .module-card__more{
  opacity:1;
  transform:translateX(4px);
}

@media (max-width:991.98px){
  .ns-bento{ grid-template-columns:repeat(2,1fr); }
  .ns-bento .module-card:first-child{
    grid-column:span 2;
    grid-row:auto;
  }
}
@media (max-width:767.98px){
  .ns-bento{ grid-template-columns:1fr; }
  .ns-bento .module-card:first-child{ grid-column:auto; }
  .ns-bento .module-card{ padding:var(--ns-space-3); }
}

/* ── Progressive disclosure: módulos extras recolhidos ── */
/* o display:flex do card venceria o atributo hidden sem esta regra */
.ns-bento .module-card[hidden]{ display:none; }

.ns-bento__foot{
  display:flex; align-items:center; justify-content:space-between;
  gap:var(--ns-space-3); flex-wrap:wrap;
  margin-top:var(--ns-space-3);
}
.ns-bento__toggle{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro); font-weight:500;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--ns-paper); background:transparent;
  border:1px solid var(--ns-rule-lg); border-radius:2px;
  padding:14px 24px; cursor:pointer;
  transition:border-color var(--ns-dur-1) var(--ns-ease),
             color var(--ns-dur-1) var(--ns-ease);
}
.ns-bento__toggle:hover{ border-color:var(--ns-signal); color:var(--ns-signal); }
.ns-bento__toggle:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:2px;
}
.ns-bento__toggle-count{
  color:var(--ns-signal); font-variant-numeric:tabular-nums;
}
.ns-bento__docs{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--ns-silver); text-decoration:none;
  display:inline-flex; align-items:center; gap:8px;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.ns-bento__docs:hover{ color:var(--ns-signal); }
.ns-bento__docs:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:4px;
}

/* ────────────────────────────────────────────────────────────
   MOD MODAL — ficha técnica (#modModal, ids/atributos contrato)
   ──────────────────────────────────────────────────────────── */
.mod-modal{
  position:fixed;
  inset:0;
  z-index:var(--ns-z-modal);
  display:grid;
  place-items:center;
  padding:var(--ns-space-3);
}
.mod-modal[hidden]{ display:none; }

.mod-modal__scrim{
  position:absolute;
  inset:0;
  background:rgba(14,13,18,.8);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  opacity:0;
  transition:opacity 200ms var(--ns-ease);
}

.mod-modal__panel{
  position:relative;
  width:min(720px,100%);
  max-height:min(84vh,100%);
  overflow:auto;
  background:var(--ns-ink-1);
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  box-shadow:var(--ns-shadow-modal);
  opacity:0;
  transform:scale(.98);
  transition:opacity 200ms var(--ns-ease), transform 200ms var(--ns-ease);
}
.mod-modal.is-open .mod-modal__scrim{ opacity:1; }
.mod-modal.is-open .mod-modal__panel{ opacity:1; transform:scale(1); }

/* cabeçalho da ficha */
.mod-modal__head{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:var(--ns-space-3);
  align-items:start;
  padding:var(--ns-space-4);
  border-bottom:1px solid var(--ns-rule);
}

.mod-modal__icon{
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  flex-shrink:0;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r-pill);
  color:var(--ns-signal);
}
.mod-modal__icon .ico{
  width:24px;
  height:24px;
  display:block;
}

.mod-modal__heading{ min-width:0; }

/* carimbo ESPECIFICAÇÃO */
.mod-modal__stamp{
  display:inline-block;
  margin-bottom:var(--ns-space-1);
  padding:3px 10px;
  border:1.5px solid var(--ns-signal-deep);
  border-radius:2px;
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-signal);
  /* carimbo reto, alinhado ao layout (sem inclinação) */
}

.mod-modal__eyebrow{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
  margin-bottom:6px;
}

.mod-modal__title{
  font-family:var(--ns-serif);
  font-size:2rem;
  font-weight:540;
  font-variation-settings:'opsz' 72;
  line-height:1.05;
  letter-spacing:-.015em;
  color:var(--ns-paper);
  margin:0;
  text-wrap:balance;
}

.mod-modal__price{
  margin-top:var(--ns-space-1);
  font-family:var(--ns-serif);
  font-size:1.125rem;
  font-variation-settings:'opsz' 40;
  color:var(--ns-signal);
  font-variant-numeric:tabular-nums;
}

.mod-modal__close{
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  background:transparent;
  border:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r);
  color:var(--ns-silver);
  cursor:pointer;
  transition:color var(--ns-dur-1) var(--ns-ease), border-color var(--ns-dur-1) var(--ns-ease);
}
.mod-modal__close:hover,
.mod-modal__close:focus-visible{
  color:var(--ns-paper);
  border-color:var(--ns-silver);
}
.mod-modal__close:focus-visible{
  outline:2px solid var(--ns-signal);
  outline-offset:2px;
}

/* corpo da ficha */
.mod-modal__body{ padding:var(--ns-space-4); }

.mod-modal__desc{
  font-family:var(--ns-sans);
  font-size:.9375rem;
  line-height:1.65;
  color:var(--ns-bone);
  margin:0 0 var(--ns-space-3);
}

/* tabela de metadados — SLA / integrações */
.mod-modal__meta{
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  overflow:hidden;
  margin-bottom:var(--ns-space-4);
}
.mod-modal__meta-row{
  display:grid;
  grid-template-columns:120px 1fr;
  gap:var(--ns-space-2);
  align-items:baseline;
  padding:10px 16px;
}
.mod-modal__meta-row + .mod-modal__meta-row{
  border-top:1px solid var(--ns-rule);
}
/* o display:grid da row venceria o atributo hidden sem esta regra */
.mod-modal__meta-row[hidden]{ display:none; }

/* vídeo de apresentação do módulo (gated por module_videos.enabled) */
.mod-modal__video{
  margin:0 0 var(--ns-space-3);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r);
  overflow:hidden;
}
.mod-modal__video[hidden]{ display:none; }
.mod-modal__video iframe,
.mod-modal__video video{
  display:block; width:100%; aspect-ratio:16/9;
  border:0; background:#000;
}

.mod-modal__k{
  font-family:var(--ns-mono);
  font-size:var(--ns-text-micro);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ns-fog);
}
.mod-modal__v{
  font-family:var(--ns-mono);
  font-size:.75rem;
  line-height:1.6;
  color:var(--ns-bone);
  font-variant-numeric:tabular-nums;
}

.mod-modal__grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--ns-space-4);
}
.mod-modal__cell > .mod-modal__k{
  display:block;
  padding-bottom:var(--ns-space-1);
  margin-bottom:var(--ns-space-2);
  border-bottom:1px solid var(--ns-rule);
}

.mod-modal__list{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:8px;
}
.mod-modal__list li{
  position:relative;
  padding-left:20px;
  font-family:var(--ns-sans);
  font-size:.875rem;
  line-height:1.5;
  color:var(--ns-bone);
}
.mod-modal__list li::before{
  content:'▸';
  position:absolute;
  left:0;
  color:var(--ns-signal);
}
.mod-modal__list--features li::before,
[data-mod-features] li::before{
  content:'✓';
  color:var(--ns-confirm);
}

/* rodapé da ficha */
.mod-modal__foot{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
  gap:var(--ns-space-2);
  padding:var(--ns-space-3) var(--ns-space-4);
  border-top:1px solid var(--ns-rule);
}

/* link para a documentação do módulo — ancorado à esquerda do rodapé */
.mod-modal__docs{
  margin-right:auto;
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--ns-silver); text-decoration:none;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.mod-modal__docs:hover{ color:var(--ns-signal); }
.mod-modal__docs:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:4px;
}
.mod-modal__docs[hidden]{ display:none; }

/* variante de botão exclusiva da ficha — pill assinatura */
.ns-btn--signal{
  background:var(--ns-signal-deep);
  border-color:transparent;
  color:var(--ns-paper);
}
.ns-btn--signal:hover,
.ns-btn--signal:focus-visible{
  background:var(--ns-signal);
  color:var(--ns-ink-0);
}
.ns-btn--signal.is-added,
[data-mod-add].is-added{
  background:transparent;
  border:1px solid var(--ns-confirm);
  color:var(--ns-confirm);
}

@media (max-width:767.98px){
  .mod-modal{ padding:var(--ns-space-2); }
  .mod-modal__head{
    grid-template-columns:1fr auto;
    padding:var(--ns-space-3);
  }
  .mod-modal__icon{ display:none; }
  .mod-modal__body{ padding:var(--ns-space-3); }
  .mod-modal__grid{ grid-template-columns:1fr; }
  .mod-modal__meta-row{ grid-template-columns:1fr; gap:4px; }
  .mod-modal__foot{ padding:var(--ns-space-3); }
  .mod-modal__foot .ns-btn{ width:100%; justify-content:center; text-align:center; }
}

/* ────────────────────────────────────────────────────────────
   REDUCED MOTION
   ──────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  .ns-index__line{ animation:none !important; transform:none; }
  .ns-index__row,
  .ns-index__num,
  .module-card__more,
  .ns-bento .module-card,
  .ns-bento .module-card::before,
  .mod-modal__scrim,
  .mod-modal__panel,
  .mod-modal__close{ transition:none !important; }
  .mod-modal__scrim{ opacity:1; }
  .mod-modal__panel{ opacity:1; transform:none; }
  .ns-index__row:hover .ns-index__num,
  .ns-bento .module-card:hover .module-card__more{ transform:none; }
  .mod-modal__stamp{ transform:none; }
}
/* ==========================================================================
   40-pricing-calc.css — new_style / DOSSIÊ VIVO
   Seções #pricing ("página destacável") e #calculator ("folha de orçamento"),
   ambas dentro de .ns-invert (tokens redefinidos pelo bloco .ns-invert do
   arquivo de tokens do tema). Só usa tokens --ns-*.
   Contratos re-estilizados (nomes originais mantidos): .billing-toggle,
   .pricing-amount, .pricing-card(.featured), .pricing-card__popular,
   .module-toggle(.active), [data-toggle-check], .check, .module-check,
   .module-toggle__info, .module-toggle-grid(.shake), .addon-input,
   .period-card(.active), .discount-badge, .calc-card__head, .calc-total,
   .calc-total__row(--final), .calc-total__summary .item, .text-confirm.
   ========================================================================== */

/* ---- Aliases de compatibilidade -----------------------------------------
   O script inline do calculator injeta innerHTML com var(--silver),
   var(--mono) e var(--paper) (cópia byte a byte do oficial). Mapeamos esses
   nomes para os tokens --ns-* apenas dentro das duas seções; como o valor é
   resolvido no elemento que usa, os overrides de .ns-invert são herdados. */
#pricing,
#calculator {
  --mono: var(--ns-mono);
  --silver: var(--ns-silver);
  --paper: var(--ns-paper);
  --confirm: var(--ns-confirm);
  --warn: var(--ns-warn);
  --ash: var(--ns-fog);
}

/* Semânticos com AA garantido sobre o papel-creme (spec: overrides do invert) */
#pricing.ns-invert,
#calculator.ns-invert {
  --ns-confirm: #0E8C63;
  --ns-alert: #C81E3C;
}

/* ---- Moldura das seções: "página destacável" ----------------------------
   Hairline DUPLA abre o pricing e fecha o calculator; entre as duas seções
   não há linha — é a mesma folha. */
#pricing.ns-invert {
  position: relative;
  padding-block: var(--ns-space-section) calc(var(--ns-space-section) * 0.5);
  border-top: 1px solid var(--ns-rule-cream-lg);
}
#pricing.ns-invert::before {
  content: "";
  position: absolute;
  top: 4px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--ns-rule-cream-lg);
}
#calculator.ns-invert {
  position: relative;
  padding-block: calc(var(--ns-space-section) * 0.5) var(--ns-space-section);
  border-bottom: 1px solid var(--ns-rule-cream-lg);
}
#calculator.ns-invert::after {
  content: "";
  position: absolute;
  bottom: 4px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--ns-rule-cream-lg);
}

/* ---- Cabeçalho de capítulo (escopado — a versão global pode coexistir) -- */
#pricing .ns-chapter-head,
#calculator .ns-chapter-head {
  border-top: 1px solid var(--ns-rule);
  padding-top: var(--ns-space-2);
  margin-bottom: var(--ns-space-5);
}
#pricing .ns-chapter-head__folio,
#calculator .ns-chapter-head__folio {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--ns-space-2);
  margin-bottom: var(--ns-space-4);
}
#pricing .ns-chapter-head .eyebrow,
#calculator .ns-chapter-head .eyebrow {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  font-weight: 500;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ns-fog);
}
#pricing .ns-chapter-head__ref,
#calculator .ns-chapter-head__ref {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
}
#pricing .ns-chapter-head h2,
#calculator .ns-chapter-head h2 {
  font-family: var(--ns-serif);
  font-size: var(--ns-text-h2);
  font-weight: 540;
  font-variation-settings: 'opsz' 96;
  line-height: 1.02;
  letter-spacing: -.015em;
  text-wrap: balance;
  color: var(--ns-paper);
  margin: 0 0 var(--ns-space-3);
}
#pricing .ns-chapter-head h2 em,
#calculator .ns-chapter-head h2 em {
  font-style: italic;
  text-decoration: underline;
  text-decoration-color: var(--ns-signal-deep);
  text-decoration-thickness: .08em;
  text-underline-offset: .12em;
}
#pricing .ns-chapter-head .ns-lede,
#calculator .ns-chapter-head .ns-lede {
  font-family: var(--ns-sans);
  font-size: clamp(1.125rem, 1.4vw, 1.1875rem);
  line-height: 1.6;
  max-width: 52ch;
  color: var(--ns-bone);
  margin: 0;
}

/* ---- Carimbo (escopado) -------------------------------------------------- */
#pricing .ns-stamp,
#calculator .ns-stamp {
  display: inline-block;
  font-family: var(--ns-mono);
  font-size: 9px;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-signal);
  border: 1.5px solid var(--ns-signal);
  border-radius: 2px;
  padding: 5px 10px;
  /* carimbo reto, alinhado ao layout (sem inclinacao) */}

/* ==========================================================================
   PRICING — tabela de tarifas impressa
   ========================================================================== */

/* Interruptor tipográfico MENSAL / ANUAL */
#pricing .billing-toggle-wrap {
  display: inline-flex;
  gap: var(--ns-space-4);
  margin-top: var(--ns-space-4);
  border-bottom: 1px solid var(--ns-rule);
}
#pricing .billing-toggle {
  appearance: none;
  background: none;
  border: 0;
  padding: 10px 2px 12px;
  cursor: pointer;
  position: relative;
  font-family: var(--ns-mono);
  font-size: .75rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
  transition: color var(--ns-dur-1) var(--ns-ease);
}
#pricing .billing-toggle::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  background: var(--ns-signal);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--ns-dur-2) var(--ns-ease);
}
#pricing .billing-toggle:hover { color: var(--ns-silver); }
#pricing .billing-toggle.active { color: var(--ns-paper); }
#pricing .billing-toggle.active::after { transform: scaleX(1); }
#pricing .billing-toggle .badge {
  display: inline-block;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .08em;
  color: var(--ns-signal);
  border: 1px solid var(--ns-signal);
  border-radius: 2px;
  padding: 1px 6px;
  margin-left: 6px;
  /* carimbo reto, alinhado ao layout (sem inclinacao) */}

/* Grid = colunas coladas separadas por hairline vertical */
#pricing .ns-pricing-grid {
  display: grid;
  grid-template-columns: 1fr;
  background: var(--ns-ink-1);
  border: 1px solid var(--ns-rule);
  border-radius: var(--ns-r);
  margin-top: var(--ns-space-5);
}
@media (min-width: 992px) {
  #pricing .ns-pricing-grid { grid-template-columns: repeat(3, 1fr); }
  #pricing .pricing-card + .pricing-card { border-left: 1px solid var(--ns-rule); }
}
@media (max-width: 991.98px) {
  #pricing .pricing-card + .pricing-card { border-top: 1px solid var(--ns-rule); }
}

#pricing .pricing-card {
  position: relative;
  padding: var(--ns-space-5) var(--ns-space-4);
  display: flex;
  flex-direction: column;
}
#pricing .pricing-card__name {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
  margin-bottom: var(--ns-space-3);
}
#pricing .pricing-card__amount {
  display: flex;
  align-items: baseline;
  gap: 6px;
  color: var(--ns-paper);
}
#pricing .pricing-card__currency {
  font-family: var(--ns-mono);
  font-size: .875rem;
  color: var(--ns-silver);
}
#pricing .pricing-amount {
  font-family: var(--ns-serif);
  font-size: var(--ns-text-price);
  font-weight: 560;
  font-variation-settings: 'opsz' 144;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--ns-paper);
}
#pricing .pricing-card__period {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .12em;
  color: var(--ns-fog);
}
#pricing .pricing-card__desc {
  font-family: var(--ns-sans);
  font-size: var(--ns-text-small);
  line-height: 1.55;
  color: var(--ns-silver);
  margin: var(--ns-space-2) 0 0;
}

/* Destaque: filete tipográfico duplo + carimbo — sem mudar cor nem escala */
#pricing .pricing-card.featured {
  z-index: 1;
  border: 1px solid var(--ns-signal);
  outline: 1px solid var(--ns-signal);
  outline-offset: 4px;
  border-radius: var(--ns-r);
}
#pricing .pricing-card__popular {
  position: absolute;
  top: -14px;
  left: var(--ns-space-4);
  background: var(--ns-ink-1);
}

/* Lista de inclusos: ritmo de sumário, sem checkmarks */
#pricing .pricing-feature-list {
  list-style: none;
  margin: var(--ns-space-4) 0 0;
  padding: var(--ns-space-3) 0 0;
  border-top: 1px solid var(--ns-rule);
}
#pricing .pricing-feature-list li {
  position: relative;
  padding: 6px 0 6px 22px;
  font-family: var(--ns-sans);
  font-size: var(--ns-text-small);
  line-height: 1.5;
  color: var(--ns-bone);
}
#pricing .pricing-feature-list li::before {
  content: "\2014"; /* — */
  position: absolute;
  left: 0;
  color: var(--ns-fog);
}
#pricing .pricing-feature-list li strong { color: var(--ns-paper); font-weight: 600; }
#pricing .pricing-feature-list li.star::before {
  content: "\2605"; /* ★ */
  color: var(--ns-warn);
  font-size: .6875rem;
  top: 9px;
}
#pricing .pricing-feature-list li.muted { color: var(--ns-fog); }
#pricing .pricing-feature-list li.muted::before { content: "\00D7"; /* × */ }

/* CTA pill (autossuficiente; convive com .ns-btn global) */
#pricing .ns-plan-cta,
#calculator .ns-quote__cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 13px 24px;
  border: 0;
  border-radius: var(--ns-r-pill);
  font-family: var(--ns-sans);
  font-size: .875rem;
  font-weight: 600;
  letter-spacing: .02em;
  text-decoration: none;
  cursor: pointer;
  background: var(--ns-paper);   /* em .ns-invert: tinta escura sobre creme */
  color: var(--ns-ink-0);        /* em .ns-invert: creme */
  transition: background var(--ns-dur-2) var(--ns-ease),
              color var(--ns-dur-2) var(--ns-ease),
              box-shadow var(--ns-dur-2) var(--ns-ease);
}
#pricing .ns-plan-cta { margin: var(--ns-space-4) 0 0; }
#pricing .ns-plan-cta:hover,
#calculator .ns-quote__cta:hover {
  background: transparent;
  color: var(--ns-paper);
  box-shadow: inset 0 0 0 1.5px var(--ns-paper);
}
#pricing .ns-plan-cta--featured {
  background: var(--ns-signal-on-cream);
  color: #FFFFFF;
}
#pricing .ns-plan-cta--featured:hover {
  background: transparent;
  color: var(--ns-signal-on-cream);
  box-shadow: inset 0 0 0 1.5px var(--ns-signal-on-cream);
}

/* Microcopy de confiança */
#pricing .ns-pricing__trust {
  margin: var(--ns-space-4) 0 0;
  text-align: center;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ns-fog);
}

/* ==========================================================================
   CALCULATOR — romaneio + nota fiscal
   ========================================================================== */
#calculator .ns-calc__grid { display: block; }
@media (min-width: 992px) {
  #calculator .ns-calc__grid {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: var(--ns-space-5);
    align-items: start;
  }
  #calculator .calc-total {
    position: sticky;
    top: 88px;
  }
}
@media (max-width: 991.98px) {
  #calculator .calc-total { margin-top: var(--ns-space-4); }
}

/* Folha do romaneio */
#calculator .calc-card {
  background: var(--ns-ink-1);
  border: 1px solid var(--ns-rule);
  border-radius: var(--ns-r);
  padding: var(--ns-space-5) var(--ns-space-4);
}
#calculator .calc-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--ns-space-2);
  flex-wrap: wrap;
}
#calculator .ns-calc__heading {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  font-weight: 500;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ns-silver);
  margin: var(--ns-space-5) 0 var(--ns-space-2);
}
#calculator .ns-calc__heading::before { content: "\2014\00A0"; color: var(--ns-fog); }
#calculator .calc-card__head .ns-calc__heading { margin-top: 0; }
#calculator .ns-calc__tools { display: flex; gap: var(--ns-space-3); }
#calculator .ns-linklike {
  appearance: none;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ns-fog);
  text-decoration: underline;
  text-underline-offset: 4px;
  transition: color var(--ns-dur-1) var(--ns-ease);
}
#calculator .ns-linklike:hover { color: var(--ns-signal); }

/* Romaneio: linhas com leaders pontilhados nome → preço */
#calculator .module-toggle-grid {
  display: flex;
  flex-direction: column;
  margin-top: var(--ns-space-2);
}
#calculator .module-toggle {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 0;
  border-bottom: 1px dotted var(--ns-rule-lg);
}
#calculator .module-toggle__check {
  display: flex;
  flex: 1;
  min-width: 0;
  align-items: center;
  gap: 14px;
  cursor: pointer;
}
#calculator .module-toggle .module-check {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
/* Checkbox "a caneta": quadrado que recebe um ✕ quando marcado */
#calculator .module-toggle .check {
  position: relative;
  flex: none;
  width: 18px;
  height: 18px;
  border: 1.5px solid var(--ns-rule-lg);
  border-radius: var(--ns-r-input);
  transition: border-color var(--ns-dur-1) var(--ns-ease);
}
#calculator .module-toggle .check::after {
  content: "\2715"; /* ✕ */
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ns-mono);
  font-size: .8125rem;
  font-weight: 600;
  color: var(--ns-signal);
  opacity: 0;
  transform: scale(1.4) rotate(-6deg);
  transition: opacity var(--ns-dur-1) var(--ns-ease),
              transform var(--ns-dur-1) var(--ns-ease);
}
#calculator .module-toggle.active .check { border-color: var(--ns-signal); }
#calculator .module-toggle.active .check::after { opacity: 1; transform: scale(1) rotate(0deg); }
#calculator .module-toggle__body {
  display: flex;
  flex: 1;
  min-width: 0;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--ns-space-2);
}
#calculator .module-toggle__label {
  font-family: var(--ns-sans);
  font-size: .9375rem;
  font-weight: 500;
  color: var(--ns-paper);
}
#calculator .module-toggle__sub {
  font-family: var(--ns-mono);
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
  color: var(--ns-silver);
  white-space: nowrap;
}
#calculator .module-toggle.active .module-toggle__sub { color: var(--ns-signal); }
#calculator .module-toggle__info {
  appearance: none;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: none;
  border: 1px solid var(--ns-rule);
  border-radius: var(--ns-r-pill);
  color: var(--ns-fog);
  cursor: pointer;
  transition: color var(--ns-dur-1) var(--ns-ease),
              border-color var(--ns-dur-1) var(--ns-ease);
}
#calculator .module-toggle__info:hover {
  color: var(--ns-signal);
  border-color: var(--ns-signal);
}

/* Add-ons */
#calculator .addon-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: var(--ns-space-3) var(--ns-space-4);
}
#calculator .addon label {
  display: block;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
  margin-bottom: 6px;
}
#calculator .addon__group {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--ns-mono);
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
  color: var(--ns-silver);
}
#calculator .addon-input {
  width: 64px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ns-rule-lg);
  border-radius: 0;
  padding: 6px 2px;
  font-family: var(--ns-mono);
  font-size: .9375rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
  color: var(--ns-paper);
  caret-color: var(--ns-signal);
  transition: border-color var(--ns-dur-1) var(--ns-ease);
}
#calculator .addon-input:focus-visible {
  outline: none;
  border-bottom-color: var(--ns-signal);
  box-shadow: 0 1px 0 var(--ns-signal);
}

/* Período: radio-tabs tipográficos */
#calculator .period-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ns-space-2);
}
#calculator .period-card {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  border: 1px solid var(--ns-rule-lg);
  border-radius: var(--ns-r-pill);
  cursor: pointer;
  transition: border-color var(--ns-dur-1) var(--ns-ease),
              background var(--ns-dur-1) var(--ns-ease);
}
#calculator .period-card input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
}
#calculator .period-card .dot { display: none; }
#calculator .period-card__body {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
#calculator .period-card__label {
  font-family: var(--ns-mono);
  font-size: .75rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ns-silver);
}
#calculator .period-card__sub {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .06em;
  color: var(--ns-fog);
}
#calculator .period-card:hover { border-color: var(--ns-silver); }
#calculator .period-card.active {
  border-color: var(--ns-signal);
  background: var(--ns-signal-soft);
}
#calculator .period-card.active .period-card__label { color: var(--ns-paper); }
#calculator .period-card:focus-within {
  outline: 2px solid var(--ns-signal);
  outline-offset: 3px;
}

/* Carimbo de desconto (usado no toggle de período e na nota) */
#pricing .discount-badge,
#calculator .discount-badge {
  display: inline-block;
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  font-weight: 500;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ns-signal);
  border: 1px solid var(--ns-signal);
  border-radius: 2px;
  padding: 2px 6px;
  /* carimbo reto, alinhado ao layout (sem inclinacao) */}

/* Nota fiscal */
#calculator .calc-total {
  background: var(--ns-cream-2);
  border: 1px solid var(--ns-rule-cream-lg);
  border-radius: var(--ns-r);
  padding: var(--ns-space-4);
}
#calculator .ns-quote__head {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ns-fog);
  padding-bottom: var(--ns-space-2);
  margin-bottom: var(--ns-space-3);
  border-bottom: 1px solid var(--ns-rule-lg);
}
#calculator .calc-total__label {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-micro);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ns-fog);
  margin-bottom: 8px;
}
#calculator .calc-total__amount {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
#calculator .calc-total__amount .pricing-card__currency {
  font-family: var(--ns-mono);
  font-size: .875rem;
  color: var(--ns-silver);
}
#calculator #calcTotal {
  font-family: var(--ns-serif);
  font-size: var(--ns-text-price);
  font-weight: 560;
  font-variation-settings: 'opsz' 144;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--ns-paper);
}
#calculator .calc-total__period {
  font-family: var(--ns-mono);
  font-size: var(--ns-text-eyebrow);
  letter-spacing: .12em;
  color: var(--ns-fog);
  margin: 4px 0 var(--ns-space-2);
}
#calculator .ns-quote__discount { margin-bottom: var(--ns-space-2); }
#calculator .ns-quote__save {
  font-family: var(--ns-sans);
  font-size: .8125rem;
  color: var(--ns-silver);
  margin-left: 8px;
}
#calculator .ns-quote__save strong { color: var(--ns-paper); }
#calculator .calc-total__divider,
#calculator .calc-card__divider {
  border: 0;
  border-top: 1px solid var(--ns-rule-lg);
  margin: var(--ns-space-3) 0;
}
#calculator .calc-total__summary .item {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--ns-space-2);
  padding: 5px 0;
  font-family: var(--ns-mono);
  font-size: .75rem;
  font-variant-numeric: tabular-nums;
  color: var(--ns-bone);
  border-bottom: 1px dotted var(--ns-rule-lg);
}
#calculator .calc-total__summary .item:last-child { border-bottom: 0; }
#calculator .ns-quote__empty {
  font-family: var(--ns-sans);
  font-size: .85rem;
  color: var(--ns-silver);
  margin: 0;
}
#calculator .calc-total__row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--ns-space-2);
  padding: 8px 0;
  border-bottom: 1px dotted var(--ns-rule-lg);
  font-family: var(--ns-mono);
  font-size: .8125rem;
  font-variant-numeric: tabular-nums;
  color: var(--ns-silver);
}
#calculator .calc-total__row span:last-child { color: var(--ns-bone); }
#calculator .text-confirm,
#calculator .calc-total__row .text-confirm { color: var(--ns-confirm); }
#calculator .calc-total__row--final {
  border-bottom: 0;
  padding-top: var(--ns-space-2);
  color: var(--ns-bone);
}
#calculator .calc-total__row--final span:last-child,
#calculator #calcFinalTotal {
  font-family: var(--ns-serif);
  font-size: clamp(1.75rem, 2.6vw, 3rem);
  font-weight: 560;
  font-variation-settings: 'opsz' 96;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--ns-paper);
}
#calculator .calc-total__row--annual {
  border-bottom: 0;
  font-size: .75rem;
  color: var(--ns-fog);
}
#calculator .ns-quote__stampline {
  margin: var(--ns-space-3) 0;
  text-align: right;
}
#calculator .ns-quote__cta { margin-top: var(--ns-space-2); }

/* ---- Foco visível (a11y) ------------------------------------------------- */
#pricing .billing-toggle:focus-visible,
#pricing .ns-plan-cta:focus-visible,
#calculator [data-toggle-check]:focus-visible,
#calculator .module-toggle__info:focus-visible,
#calculator .ns-linklike:focus-visible,
#calculator .ns-quote__cta:focus-visible {
  outline: 2px solid var(--ns-signal);
  outline-offset: 3px;
}

/* ---- Shake (validação suave do btnRequestQuote — contrato do script) ----- */
@keyframes ns-shake {
  10%, 90% { transform: translateX(-2px); }
  20%, 80% { transform: translateX(3px); }
  30%, 70% { transform: translateX(-5px); }
  40%, 60% { transform: translateX(5px); }
  50%      { transform: translateX(-4px); }
}
#calculator .module-toggle-grid.shake {
  animation: ns-shake .5s var(--ns-ease);
}

/* ---- Reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  #calculator .module-toggle-grid.shake { animation: none; }
  #pricing .billing-toggle,
  #pricing .billing-toggle::after,
  #pricing .ns-plan-cta,
  #calculator .ns-quote__cta,
  #calculator .module-toggle .check,
  #calculator .module-toggle .check::after,
  #calculator .module-toggle__info,
  #calculator .period-card,
  #calculator .addon-input,
  #calculator .ns-linklike {
    transition-duration: .01ms;
  }
}

/* ---- Ajustes mobile ------------------------------------------------------ */
@media (max-width: 767.98px) {
  #pricing .pricing-card,
  #calculator .calc-card,
  #calculator .calc-total { padding: var(--ns-space-4) var(--ns-space-3); }
  #calculator .module-toggle__body {
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }
}
/* ============================================================
   new_style — partial 50: ABOUT (colofão) + CONTACT (requisição)
   Dossiê Vivo — Editorial Noir. Consome apenas tokens --ns-*.
   Regras escopadas a .ns-about / .ns-contact para não vazar.
   ============================================================ */

/* ── Cabeçalho de capítulo (escopado; espelha o componente global) ── */
.ns-about .ns-chapter-head,
.ns-contact .ns-chapter-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:var(--ns-space-2);
  border-top:1px solid var(--ns-rule);
  padding-top:var(--ns-space-2);
  margin-bottom:var(--ns-space-5);
}
.ns-about .ns-chapter-head__eyebrow,
.ns-contact .ns-chapter-head__eyebrow{
  display:inline-flex; align-items:center; gap:10px; margin:0;
  font-family:var(--ns-mono); font-size:var(--ns-text-eyebrow); font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--ns-fog);
}
.ns-about .ns-chapter-head__tick,
.ns-contact .ns-chapter-head__tick{
  width:6px; height:6px; background:var(--ns-signal-deep); flex:none;
}
.ns-about .ns-chapter-head__ref,
.ns-contact .ns-chapter-head__ref{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro);
  letter-spacing:.18em; text-transform:uppercase; color:var(--ns-fog);
  white-space:nowrap;
}
@media (max-width:767px){
  .ns-about .ns-chapter-head__ref,
  .ns-contact .ns-chapter-head__ref{ display:none; }
}

/* ── Carimbo (escopado; mesma receita do componente global) ── */
.ns-about .ns-stamp,
.ns-contact .ns-stamp{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--ns-mono); font-size:var(--ns-text-micro); font-weight:500;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--ns-signal); border:1.5px solid var(--ns-signal-deep);
  border-radius:2px; padding:7px 14px;
  /* carimbo reto, alinhado ao layout (sem inclinação) */
}

/* ════════════════════════════════════════════════════════════
   ABOUT — colofão
   ════════════════════════════════════════════════════════════ */
.ns-about{ padding-block:calc(var(--ns-space-section) * 1.15); background:var(--ns-ink-0); }

.ns-about__spread{ display:grid; grid-template-columns:1fr; gap:var(--ns-space-6) 24px; }
@media (min-width:992px){
  .ns-about__spread{ grid-template-columns:repeat(12,1fr); }
  .ns-about__manifesto{ grid-column:1 / span 5; }
  .ns-about__visual{ grid-column:7 / -1; }
}

.ns-about__title{ margin:0 0 var(--ns-space-4); }
.ns-about__title em,
.ns-about__statement em{
  font-style:italic;
  text-decoration:underline;
  text-decoration-color:var(--ns-signal-deep);
  text-decoration-thickness:.08em;
  text-underline-offset:.12em;
}
.ns-about__para{
  max-width:55ch; color:var(--ns-bone);
  font-size:var(--ns-text-body); line-height:1.65;
  margin:0 0 var(--ns-space-3);
}
.ns-about__statement{
  font-family:var(--ns-sans); font-weight:480;
  font-size:1.5rem; line-height:1.35; color:var(--ns-paper);
  max-width:44ch; margin:var(--ns-space-4) 0 0;
}

/* ── Diagrama do loop OODA ── */
.ns-about__visual{ display:flex; flex-direction:column; gap:var(--ns-space-3); }
.ns-about__visual-eyebrow{
  font-family:var(--ns-mono); font-size:var(--ns-text-eyebrow); font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--ns-fog); margin:0;
}
.ns-loop{ width:100%; max-width:420px; margin-inline:auto; display:block; overflow:visible; }
.ns-loop circle{ fill:var(--ns-ink-1); stroke:var(--ns-rule-lg); stroke-width:1; }
.ns-loop__arc{ stroke:var(--ns-fog); stroke-width:1.2; fill:none; stroke-linecap:round; }
.ns-loop__arrowhead{ fill:var(--ns-fog); stroke:none; }
.ns-loop__letter{
  font-family:var(--ns-serif); font-style:italic; font-size:22px;
  fill:var(--ns-paper); stroke:none;
}
.ns-loop__label{
  font-family:var(--ns-mono); font-size:10px; font-weight:500;
  letter-spacing:.18em; text-transform:uppercase;
  fill:var(--ns-silver); stroke:none;
}
.ns-loop__num{
  font-family:var(--ns-mono); font-size:8px; letter-spacing:.24em;
  fill:var(--ns-fog); stroke:none;
}
.ns-loop__core{
  font-family:var(--ns-serif); font-style:italic; font-size:26px;
  fill:var(--ns-paper); stroke:none; opacity:.85;
}
/* arco de progresso: fallback = ciclo completo estático */
.ns-loop__progress{
  fill:none; stroke:var(--ns-signal-deep); stroke-width:1.5;
  stroke-linecap:round; opacity:.9;
}
@supports (animation-timeline: view()){
  .ns-loop__progress{
    stroke-dasharray:100; stroke-dashoffset:100;
    animation:ns-loop-draw 1ms linear both;
    animation-timeline:view();
    animation-range:entry 15% cover 65%;
  }
}
@keyframes ns-loop-draw{ to{ stroke-dashoffset:0; } }

.ns-loop__caption{
  font-family:var(--ns-serif); font-style:italic;
  font-size:1.125rem; line-height:1.4; color:var(--ns-silver);
  text-align:center; margin:0; text-wrap:balance;
}

/* ── Extrato de relatório (folha única, reta) — só >=992px ── */
.ns-about__sheets{ display:none; }
@media (min-width:992px){
  .ns-about__sheets{
    display:block; margin-top:var(--ns-space-4);
  }
  .ns-sheet{
    background:var(--ns-ink-1); border:1px solid var(--ns-rule);
    border-radius:var(--ns-r); box-shadow:var(--ns-shadow-sheet);
    padding:20px 24px; display:flex; flex-direction:column; gap:10px;
  }
  .ns-sheet__redact{
    display:block; height:10px; border-radius:2px;
    /* tarja sólida de redação, como em documento censurado real —
       reta, sem hachura diagonal */
    background:var(--ns-ink-3);
  }
  .ns-sheet__stamp{
    font-family:var(--ns-mono); font-size:var(--ns-text-eyebrow); letter-spacing:.14em;
    text-transform:uppercase; color:var(--ns-silver);
    padding-bottom:6px; border-bottom:1px solid var(--ns-rule); margin-bottom:2px;
  }
  .ns-sheet__signal{
    font-family:var(--ns-mono); font-size:11px; letter-spacing:.04em; line-height:1.5;
    color:var(--ns-signal); margin:0;
  }

  /* ── Carrossel do extrato (folha 3): um trecho por vez, crossfade ── */
  .ns-sheet__carousel{ display:flex; flex-direction:column; gap:12px; }
  .ns-sheet__slides{ display:grid; }
  .ns-sheet__slide{
    grid-area:1 / 1;
    display:flex; flex-direction:column; gap:10px;
    opacity:0; visibility:hidden;
    transition:opacity var(--ns-dur-3) var(--ns-ease),
               visibility 0s linear var(--ns-dur-3);
  }
  .ns-sheet__slide.is-active{
    opacity:1; visibility:visible;
    transition-delay:0s;
  }
  .ns-sheet__nav{
    display:flex; align-items:center; justify-content:space-between;
    padding-top:8px; border-top:1px solid var(--ns-rule);
  }
  .ns-sheet__counter{
    font-family:var(--ns-mono); font-size:var(--ns-text-micro);
    letter-spacing:.18em; color:var(--ns-fog);
    font-variant-numeric:tabular-nums;
  }
  .ns-sheet__dots{ display:flex; gap:8px; }
  .ns-sheet__dot{
    width:8px; height:8px; padding:0; cursor:pointer;
    background:var(--ns-ink-3); border:1px solid var(--ns-rule-lg);
    border-radius:1px;
    transition:background var(--ns-dur-1) var(--ns-ease),
               border-color var(--ns-dur-1) var(--ns-ease);
  }
  .ns-sheet__dot:hover{ border-color:var(--ns-signal); }
  .ns-sheet__dot.is-active{
    background:var(--ns-signal); border-color:var(--ns-signal);
  }
  .ns-sheet__dot:focus-visible{
    outline:2px solid var(--ns-signal); outline-offset:2px;
  }
}

/* ── Notas de rodapé: about__points (classe de contrato) ── */
.ns-about__footnotes{
  display:grid; grid-template-columns:1fr; gap:var(--ns-space-3);
  margin-top:var(--ns-space-6);
}
.ns-about__margin-note{ display:none; }
@media (min-width:992px){
  .ns-about__footnotes{ grid-template-columns:140px 1fr; gap:var(--ns-space-4); }
  .ns-about__margin-note{
    display:block; position:sticky; top:96px; align-self:start;
    font-family:var(--ns-mono); font-size:var(--ns-text-micro);
    letter-spacing:.18em; text-transform:uppercase; color:var(--ns-fog);
  }
}
.ns-about .about__points{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:1fr; column-gap:48px;
  border-top:1px solid var(--ns-rule);
}
@media (min-width:768px){
  .ns-about .about__points{ grid-template-columns:repeat(2,1fr); }
}
.ns-about .about__points li{
  display:grid; grid-template-columns:64px 1fr; gap:16px;
  padding-block:var(--ns-space-3);
  border-bottom:1px solid var(--ns-rule);
  transition:background var(--ns-dur-1) var(--ns-ease);
}
.ns-about .about__points li:hover{ background:var(--ns-ink-1); }
.ns-about .about__points .num{
  font-family:var(--ns-serif); font-style:italic; font-weight:520;
  font-size:2rem; line-height:1; color:var(--ns-signal-soft);
  font-variant-numeric:tabular-nums;
}
.ns-about .about__points h3{
  font-family:var(--ns-sans); font-weight:600; font-size:15px;
  color:var(--ns-paper); margin:0 0 6px; letter-spacing:.01em;
}
.ns-about .about__points p{
  font-family:var(--ns-sans); font-size:14px; line-height:1.55;
  color:var(--ns-silver); margin:0;
}

/* ════════════════════════════════════════════════════════════
   CONTACT — folha de requisição
   ════════════════════════════════════════════════════════════ */
.ns-contact{ padding-block:var(--ns-space-section); background:var(--ns-ink-0); }

.ns-contact__head{ margin-bottom:var(--ns-space-5); }
.ns-contact__title{ margin:0 0 var(--ns-space-3); }
.ns-contact__title em{
  font-style:italic;
  text-decoration:underline;
  text-decoration-color:var(--ns-signal-deep);
  text-decoration-thickness:.08em;
  text-underline-offset:.12em;
}
.ns-contact .ns-lede{
  font-family:var(--ns-sans);
  font-size:clamp(1.125rem, 1.4vw, 1.1875rem); line-height:1.6;
  max-width:52ch; color:var(--ns-bone); margin:0;
}

/* ── Grid hairline: form (7) + cartão (5) ── */
.ns-contact__grid{
  display:grid; grid-template-columns:1fr; gap:1px;
  background:var(--ns-rule);
  border:1px solid var(--ns-rule);
  border-radius:var(--ns-r); overflow:hidden;
}
@media (min-width:992px){
  .ns-contact__grid{ grid-template-columns:7fr 5fr; }
}

/* ── Formulário ── */
.ns-contact__form-pane{ background:var(--ns-ink-1); padding:var(--ns-space-5) var(--ns-space-4); }
@media (min-width:992px){ .ns-contact__form-pane{ padding:48px; } }
@media (max-width:767px){ .ns-contact__form-pane{ padding:var(--ns-space-3); } }

.ns-form__row{ display:grid; grid-template-columns:1fr; gap:0 24px; }
@media (min-width:768px){ .ns-form__row{ grid-template-columns:1fr 1fr; } }

.ns-field{ display:flex; flex-direction:column; gap:8px; margin-bottom:28px; }
.ns-field__label{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro); font-weight:500;
  letter-spacing:.18em; text-transform:uppercase; color:var(--ns-fog);
}
.ns-field__input{
  width:100%; appearance:none; -webkit-appearance:none;
  background:transparent; border:0;
  border-bottom:1px solid var(--ns-rule-lg);
  border-radius:var(--ns-r-input) var(--ns-r-input) 0 0;
  padding:12px 0;
  font-family:var(--ns-sans); font-size:16px; font-weight:420;
  color:var(--ns-paper); caret-color:var(--ns-signal);
  transition:border-color var(--ns-dur-1) var(--ns-ease),
             box-shadow var(--ns-dur-1) var(--ns-ease);
}
.ns-field__input::placeholder{ color:var(--ns-fog); opacity:1; }
.ns-field__input:focus{
  outline:none;
  border-bottom-color:var(--ns-signal);
  box-shadow:0 1px 0 var(--ns-signal);
}
.ns-field__input:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:4px;
}
.ns-field__input[aria-invalid="true"]{
  border-bottom-color:var(--ns-alert);
  box-shadow:0 1px 0 var(--ns-alert);
}
.ns-field__error{ font-size:13px; color:var(--ns-alert); margin:0; }

.ns-field__select{
  cursor:pointer; padding-right:28px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2377726B' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 4px center;
  background-size:16px 16px;
}
.ns-field__select option{ background:var(--ns-ink-1); color:var(--ns-paper); }

.ns-field__textarea{ resize:vertical; min-height:120px; line-height:1.6; }

/* ── Botão (escopado; mesma receita do pill global) ── */
.ns-contact .ns-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--ns-sans); font-weight:600; font-size:15px; letter-spacing:.02em;
  border-radius:var(--ns-r-pill); padding:14px 28px;
  border:1px solid transparent; cursor:pointer; text-decoration:none;
  transition:background-color var(--ns-dur-2) var(--ns-ease),
             color var(--ns-dur-2) var(--ns-ease),
             border-color var(--ns-dur-2) var(--ns-ease);
}
.ns-contact .ns-btn--lg{ padding:16px 32px; font-size:16px; }
.ns-contact .ns-btn--paper{ background:var(--ns-paper); color:var(--ns-ink-0); }
.ns-contact .ns-btn--paper:hover{
  background:var(--ns-ink-0); color:var(--ns-paper);
  border-color:var(--ns-paper);
}
.ns-contact .ns-btn:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:4px;
}
.ns-form__submit{ width:100%; margin-top:var(--ns-space-1); }

.ns-form__lgpd{
  margin:16px 0 0; font-family:var(--ns-sans);
  font-size:12px; line-height:1.6; color:var(--ns-fog);
}
.ns-form__lgpd a{
  color:inherit; text-decoration:underline; text-underline-offset:2px;
  transition:color var(--ns-dur-1) var(--ns-ease);
}
.ns-form__lgpd a:hover{ color:var(--ns-signal); }

/* ── Cartão de credenciamento (.contact-grid = classe de contrato) ── */
.ns-contact .contact-grid{
  display:flex; flex-direction:column; background:var(--ns-ink-1); min-width:0;
}
.ns-contact .contact-cell{
  display:grid; grid-template-columns:20px 1fr auto; align-items:center;
  column-gap:16px; padding:22px 28px;
  border-bottom:1px solid var(--ns-rule);
  color:inherit; text-decoration:none;
  /* distribui as células pela altura total da coluna (o form à esquerda é
     mais alto) — sem isto o carimbo final flutua num vazio desproporcional */
  flex:1;
}
.ns-contact .contact-cell:last-child{ border-bottom:0; }
.ns-contact .contact-cell__ico{ color:var(--ns-signal); flex:none; }
.ns-contact .contact-cell h3{
  font-family:var(--ns-mono); font-size:var(--ns-text-micro); font-weight:500;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--ns-fog); margin:0 0 4px;
}
.ns-contact .contact-cell p{
  font-family:var(--ns-sans); font-size:15px; color:var(--ns-paper);
  margin:0; overflow-wrap:anywhere;
}
.ns-contact .contact-cell__arrow{
  color:var(--ns-fog);
  transition:transform var(--ns-dur-1) var(--ns-ease),
             color var(--ns-dur-1) var(--ns-ease);
}
.ns-contact a.contact-cell{ transition:background-color var(--ns-dur-1) var(--ns-ease); }
.ns-contact a.contact-cell:hover{ background:var(--ns-ink-2); }
.ns-contact a.contact-cell:hover .contact-cell__arrow{
  transform:translateX(4px); color:var(--ns-signal);
}
.ns-contact a.contact-cell:focus-visible{
  outline:2px solid var(--ns-signal); outline-offset:-2px;
}
.ns-contact .contact-cell--stamp{
  display:flex; align-items:center; justify-content:center;
  min-height:96px;
}

/* ════════════════════════════════════════════════════════════
   REVEALS (escopados — espelham o contrato global [data-reveal])
   ════════════════════════════════════════════════════════════ */
.ns-about [data-reveal],
.ns-contact [data-reveal]{ opacity:0; }
.ns-about [data-reveal].is-in,
.ns-contact [data-reveal].is-in{ opacity:1; }

/* Sem clip-path no repouso: elemento 100% clipado tem interseção zero
   no IntersectionObserver e o reveal nunca dispara (ver 00-core.css).
   O wipe roda por keyframes (ns-wipe-in) quando .is-in chega. */
.ns-about [data-reveal="fade"],
.ns-contact [data-reveal="fade"]{
  transform:translateY(24px);
  transition:transform var(--ns-dur-3) var(--ns-ease),
             opacity var(--ns-dur-3) var(--ns-ease);
}
.ns-about [data-reveal="fade"].is-in,
.ns-contact [data-reveal="fade"].is-in{
  transform:none;
  animation:ns-wipe-in var(--ns-dur-3) var(--ns-ease) both;
}
/* revelação por escala (sem rotação): carimbos e folhas entram retos,
   alinhados ao layout */
.ns-about [data-reveal="scale"],
.ns-contact [data-reveal="scale"]{
  transform:scale(1.08);
  transition:transform 450ms var(--ns-ease-stamp), opacity 450ms var(--ns-ease);
}
.ns-about [data-reveal="scale"].is-in,
.ns-contact [data-reveal="scale"].is-in{
  transform:none;
}

/* stagger 60ms */
.ns-about [data-reveal-delay="1"], .ns-contact [data-reveal-delay="1"]{ transition-delay:60ms; }
.ns-about [data-reveal-delay="2"], .ns-contact [data-reveal-delay="2"]{ transition-delay:120ms; }
.ns-about [data-reveal-delay="3"], .ns-contact [data-reveal-delay="3"]{ transition-delay:180ms; }
.ns-about [data-reveal-delay="4"], .ns-contact [data-reveal-delay="4"]{ transition-delay:240ms; }
.ns-about [data-reveal-delay="5"], .ns-contact [data-reveal-delay="5"]{ transition-delay:300ms; }
.ns-about [data-reveal-delay="6"], .ns-contact [data-reveal-delay="6"]{ transition-delay:360ms; }

/* ── Reduced motion (obrigatório) ── */
@media (prefers-reduced-motion: reduce){
  .ns-about [data-reveal],
  .ns-contact [data-reveal]{
    opacity:1 !important; clip-path:none !important;
    transform:none !important; transition:none !important;
  }
  .ns-contact .ns-stamp[data-reveal="scale"],
  .ns-about .ns-about__sheets[data-reveal="scale"]{ transform:none !important; }
  .ns-loop__progress{
    animation:none !important;
    stroke-dasharray:none; stroke-dashoffset:0;
  }
  .ns-about *, .ns-contact *,
  .ns-about *::before, .ns-contact *::before,
  .ns-about *::after, .ns-contact *::after{
    transition-duration:.01ms !important;
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
  }
}


/* ── Micro-interação de foco no form (label acende, traço cresce) ── */
.ns-field{ position:relative; }
.ns-field::after{
  content:""; position:absolute; left:0; right:auto; bottom:0;
  width:100%; height:2px;
  background:var(--ns-signal-deep);
  transform:scaleX(0); transform-origin:left;
  transition:transform var(--ns-dur-2) var(--ns-ease);
  pointer-events:none;
}
.ns-field:focus-within::after{ transform:scaleX(1); }
.ns-field:focus-within .ns-field__label{ color:var(--ns-signal); }
.ns-field__label{ transition:color var(--ns-dur-1) var(--ns-ease); }

/* estados de erro/confirmação do form (contrato aria-invalid) */
.ns-field__input[aria-invalid="true"]{ border-color:var(--ns-alert); }
.ns-form__submit.is-sent{
  color:var(--ns-confirm);
  border-color:var(--ns-confirm);
  cursor:default;
}
.ns-form__fallback a{ color:var(--ns-signal); }
