/* CRM v3 · direção "Neon noturno Tokyo" (docs/crm/v2/06-design-visual.md).
   Camada final: carrega depois de theme.css. Só apresentação.
   Regras: o gradiente vermelho→roxo da marca marca identidade e a ação principal (nunca texto corrido);
   roxo tingido = IA; verde/âmbar/vermelho claro = semântica; números grandes em Sora. */

/* ——— 1. tokens ——— */
:root {
  --bg: #07070b;
  --side-bg: rgba(10, 10, 15, 0.86);
  --card: #101017;
  --surface: #17171f;
  --raised: #1b1b25;
  --well: #0b0b10;
  --line: rgba(255, 255, 255, 0.075);
  --line-strong: rgba(255, 255, 255, 0.13);
  --hover: rgba(255, 255, 255, 0.04);
  --active: rgba(255, 255, 255, 0.07);
  --ink: #f5f5f8;
  --muted: #a6a6b2;
  --faint: #8f8f9c;

  /* marca: gradiente da logo (vermelho → roxo) */
  --g1: #ff2d5a;
  --g2: #a24bff;
  --grad: linear-gradient(120deg, #ff0f45 0%, #c81fc6 52%, #8b2be8 100%);
  --grad-btn: linear-gradient(120deg, #e00a3b 0%, #b0168f 52%, #7a23d6 100%); /* branco ≥ 4,9:1 em todo o trecho */
  --grad-line: linear-gradient(120deg, rgba(255, 45, 90, 0.6), rgba(255, 255, 255, 0.07) 38%, rgba(255, 255, 255, 0.05) 62%, rgba(162, 75, 255, 0.6));
  --glow-r: rgba(255, 15, 69, 0.16);
  --glow-p: rgba(139, 43, 232, 0.18);

  --viz-1: #9b8cff;
  --viz-2: #5fd0ff;
  --viz-3: #f5b45e;

  --radius: 16px;
  --radius-sm: 10px;
  --radius-lg: 24px;
  --shadow: 0 24px 48px -16px rgba(0, 0, 0, 0.7), 0 2px 8px rgba(0, 0, 0, 0.4);
  --hi: inset 0 1px 0 rgba(255, 255, 255, 0.05);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --display: "Sora", "Inter", system-ui, sans-serif;
  --ctl-h: 38px;
  --ctl-h-sm: 32px;
  --ring: var(--bg);
}

/* ——— 2. fundo com profundidade (brilhos da marca + grão; fixo, sem repintar ao rolar) ——— */
html { background: var(--bg); }
body {
  background:
    radial-gradient(1100px 620px at 8% -12%, rgba(255, 15, 69, 0.11), transparent 62%),
    radial-gradient(1000px 680px at 104% -6%, rgba(139, 43, 232, 0.12), transparent 58%),
    radial-gradient(900px 600px at 60% 120%, rgba(139, 43, 232, 0.06), transparent 60%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"),
    var(--bg);
  background-attachment: fixed;
}
::selection { background: rgba(255, 45, 90, 0.32); color: #fff; }

/* ——— 3. tipografia de display ——— */
.v2-head h1, .rec-top h1, .auth-card h1, .v2-dialog h2, .v2-drawer-head h2 { font-family: var(--display); }
.v2-head h1, .rec-top h1 { font-size: 2rem; font-weight: 650; letter-spacing: -0.035em; line-height: 1.1; }
.v2-card > h2, .v2-h2, .card-head h2, .act-head h2, .fd-head h2 { font-family: var(--display); font-weight: 600; letter-spacing: -0.015em; }
.v2-card > h2 { font-size: 0.9375rem; }
.hoje-kpi-v, .rec-hl .v, .sg-big, .hub-funnel .num, .ag-metrics dd, .dsp-count b, .cfg-kv div strong { font-family: var(--display); letter-spacing: -0.03em; }
.v2-sub { color: var(--muted); }

/* ——— 4. botões: pílula; principal em gradiente da marca ——— */
.btn { border-radius: 999px; min-height: var(--ctl-h); padding: 0 1.05rem; font-weight: 600; transition: background-color 0.2s var(--ease-out), border-color 0.2s var(--ease-out), color 0.2s var(--ease-out), transform 0.25s var(--ease-out), box-shadow 0.25s var(--ease-out), filter 0.2s var(--ease-out); }
.btn.sm { min-height: var(--ctl-h-sm); padding: 0 0.8rem; }
.btn:active:not(:disabled) { transform: scale(0.97); }
.btn.primary { background: var(--grad-btn); color: #fff; border: 0; box-shadow: 0 10px 28px -12px rgba(224, 10, 59, 0.75), 0 6px 22px -14px rgba(139, 43, 232, 0.8), inset 0 1px 0 rgba(255, 255, 255, 0.22); }
.btn.primary:hover:not(:disabled) { background: var(--grad-btn); filter: brightness(1.1) saturate(1.05); transform: translateY(-1px); }
.btn.primary:active:not(:disabled) { transform: scale(0.97); }
.btn.primary:disabled, .btn.primary:disabled:hover { background: var(--surface); color: var(--faint); box-shadow: none; filter: none; }
.btn.primary.danger { background: #b91c1c; box-shadow: none; }
.btn.ghost { background: rgba(255, 255, 255, 0.04); border-color: var(--line-strong); box-shadow: var(--hi); }
.btn.ghost:hover:not(:disabled) { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.2); }
.btn.cta { background: var(--ink); color: #0b0b10; border: 0; padding: 0 0.4rem 0 1rem; gap: 0.6rem; box-shadow: 0 8px 22px -12px rgba(255, 255, 255, 0.45); }
.btn.cta:hover { background: #fff; transform: translateY(-1px); }
.btn-ic { display: inline-grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: rgba(11, 11, 16, 0.09); transition: transform 0.3s var(--ease-out); }
.btn-ic .icon { width: 14px; height: 14px; transform: rotate(-90deg); stroke-width: 2.2; }
.btn.cta:hover .btn-ic { transform: translateX(2px); }
.btn.ai { border-radius: 999px; }
.icon-btn { border-radius: 10px; }

/* ——— 5. campos e chips ——— */
textarea, input[type="text"], input[type="email"], input[type="password"], input[type="search"], input[type="number"], input[type="date"], input[type="time"], input[type="datetime-local"], select, .field select, .classify select, .ix-search { border-radius: 10px; }
.chip { border-radius: 999px; }
.hoje-periods, .tpl-frow .chips { border-radius: 999px; padding: 3px; background: rgba(255, 255, 255, 0.03); border-color: var(--line); }
.hoje-periods .chip { border-radius: 999px; }
.hoje-periods .chip.on, .hoje-periods .chip[aria-pressed="true"] { background: rgba(255, 255, 255, 0.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), 0 2px 8px -2px rgba(0, 0, 0, 0.6); }

/* ——— 6. lateral ——— */
.sidebar { background: var(--side-bg); border-right: 1px solid var(--line); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
@media (min-width: 900px) {
  .app.shell { background: linear-gradient(90deg, rgba(10, 10, 15, 0.86) calc(var(--side-w) - 1px), var(--line) 0 var(--side-w), transparent 0); }
  .app.shell.side-collapsed { background: linear-gradient(90deg, rgba(10, 10, 15, 0.86) calc(var(--side-w-mini) - 1px), var(--line) 0 var(--side-w-mini), transparent 0); }
}
.side-brand { padding: 1.15rem 0.75rem 1.1rem 1.1rem; }
.side-brand .mark { height: 42px; filter: drop-shadow(0 4px 18px rgba(255, 15, 69, 0.35)); }
.side-nav { gap: 1.25rem; padding: 0.35rem 0.75rem 1rem; }
.side-group { gap: 3px; }
.side-link { height: 40px; padding: 0 0.8rem; border-radius: 12px; font-size: 0.90625rem; font-weight: 550; color: var(--muted); transition: background-color 0.2s var(--ease-out), color 0.2s var(--ease-out), transform 0.2s var(--ease-out); }
.side-link .icon { width: 19px; height: 19px; stroke-width: 1.55; color: var(--faint); transition: color 0.2s var(--ease-out); }
.side-link:hover { background: rgba(255, 255, 255, 0.045); color: var(--ink); }
.side-link:hover .icon { color: var(--ink); }
.side-link.on, .side-link[aria-current="page"] {
  background: linear-gradient(90deg, rgba(255, 15, 69, 0.17), rgba(139, 43, 232, 0.09) 70%, rgba(139, 43, 232, 0.02));
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06);
  color: var(--ink); font-weight: 620;
}
.side-link.on .icon, .side-link[aria-current="page"] .icon { color: #ff7a98; }
.side-link.on::before, .side-link[aria-current="page"]::before {
  content: ""; position: absolute; left: -0.75rem; top: 8px; bottom: 8px; width: 3px; border-radius: 0 3px 3px 0;
  background: linear-gradient(180deg, #ff2d5a, #a24bff); box-shadow: 0 0 14px rgba(255, 45, 90, 0.7);
}
.side-count { min-width: 22px; height: 20px; padding: 0 7px; border-radius: 999px; background: rgba(255, 255, 255, 0.07); color: var(--ink); font-family: var(--font); font-size: 0.6875rem; font-weight: 650; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06); }
.side-count.ai { background: rgba(139, 43, 232, 0.22); color: #d2b3ff; box-shadow: inset 0 0 0 1px rgba(185, 138, 255, 0.3); }
.side-count.dot { width: 8px; height: 8px; min-width: 0; padding: 0; background: var(--warn); box-shadow: 0 0 0 3px rgba(245, 180, 94, 0.18); }
.side-foot { padding: 0.6rem 0.75rem 0.85rem; gap: 0.35rem; border-top: 1px solid var(--line); }
.side-user { display: flex; align-items: center; gap: 0.7rem; padding: 0.55rem 0.6rem; border-radius: 14px; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--line); text-decoration: none; color: var(--ink); min-width: 0; transition: background-color 0.2s var(--ease-out); }
.side-user:hover { background: rgba(255, 255, 255, 0.06); }
.side-user-av { flex-shrink: 0; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--grad-btn); color: #fff; font-family: var(--display); font-size: 0.75rem; font-weight: 650; text-transform: uppercase; box-shadow: 0 0 0 2px var(--bg), 0 0 0 3px rgba(255, 255, 255, 0.12); }
.side-user-txt { display: grid; min-width: 0; line-height: 1.25; }
.side-user-txt b { font-size: 0.8125rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.side-user-txt small { font-size: 0.6875rem; color: var(--faint); }
@media (min-width: 900px) {
  .shell.side-collapsed .side-user { justify-content: center; padding: 0.45rem 0; background: none; border-color: transparent; }
  .shell.side-collapsed .side-link.on::before { left: -0.75rem; }
}

/* ——— 7. barra superior ——— */
.topbar { background: rgba(7, 7, 11, 0.6); backdrop-filter: saturate(160%) blur(18px); -webkit-backdrop-filter: saturate(160%) blur(18px); border-bottom: 1px solid var(--line); }
.tb-search { border-radius: 999px; background: rgba(255, 255, 255, 0.04); border-color: var(--line-strong); padding: 0 0.5rem 0 0.9rem; }
.tb-search:hover { background: rgba(255, 255, 255, 0.07); }
.tb-search kbd { border-radius: 999px; padding: 0 7px; }
.tb-create .btn, #tbCreate .btn { border-radius: 999px; }
.tb-health, .tb-balance { border-radius: 999px; padding: 0 0.75rem; }
.tb-balance.credits.neg { background: rgba(255, 15, 69, 0.12); box-shadow: inset 0 0 0 1px rgba(255, 92, 127, 0.4); }
.tb-copilot { border-radius: 999px; }
.tb-avatar { background: var(--grad-btn); border: 0; color: #fff; box-shadow: 0 0 0 2px var(--bg), 0 0 0 3px rgba(255, 255, 255, 0.12); font-family: var(--display); }
.tb-bell { border-radius: 999px; }
.tb-bell[data-tone="error"] .tb-bell-n { background: var(--grad-btn); }
.tb-notif-panel { border-radius: 18px; }
.tb-notif-sec { display: flex; align-items: center; gap: 0.45rem; padding: 0.7rem 1rem 0.35rem; border-top: 1px solid var(--line); color: var(--accent-ink); font-size: 0.6875rem; font-weight: 650; letter-spacing: 0.08em; text-transform: uppercase; }
.tb-notif-sec .icon { width: 14px; height: 14px; }
.tb-notif-ai .tb-notif-ic .icon { color: var(--accent-ink); }
.tb-notif-ai b { font-weight: 600; }

/* ——— 8. página, cartões, abas ——— */
.v2-page { padding: 1.75rem 0 4rem; }
.v2-head { margin-bottom: 1.5rem; }
.crumbs { margin-top: 1.1rem; }
.v2-card, .card {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.022), rgba(255, 255, 255, 0) 120px), var(--card);
  border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--hi), 0 1px 2px rgba(0, 0, 0, 0.35);
}
.v2-card { padding: 1.25rem 1.4rem; }
.v2-tabs, .subtabs { gap: 0.35rem; border-bottom-color: var(--line); }
.v2-tab, .subtab { position: relative; padding: 0.65rem 0.8rem; border-bottom: 0; }
.v2-tab.on, .subtab.on, button.v2-tab.on { border-bottom-color: transparent; }
.v2-tab.on::after, .subtab.on::after { content: ""; position: absolute; left: 0.6rem; right: 0.6rem; bottom: 0; height: 2px; border-radius: 2px; background: var(--grad); }
.v2-count { border-radius: 999px; }
.v2-tab.on .v2-count { background: rgba(255, 45, 90, 0.16); color: #ffd0da; }
.v2-banner, .v2-error { border-radius: 14px; }
.v2-menu, .v2-dialog, .v2-palette { border-radius: 16px; }
.v2-dialog { border-radius: 20px; }
.v2-drawer { background: rgba(22, 22, 30, 0.97); }
.v2-toast { border-radius: 14px; }
.v2-status { border-radius: 999px; padding: 0 0.55rem; }

/* selos de estágio refinados (pílula com fio da própria cor) */
.stage { height: 24px; padding: 0 0.65rem 0 0.5rem; border-radius: 999px; font-size: 0.75rem; font-weight: 600; background: color-mix(in srgb, var(--c, var(--muted)) 11%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c, var(--muted)) 30%, transparent); }
.stage::before { width: 6px; height: 6px; box-shadow: 0 0 8px currentColor; }

/* avatar de linha (iniciais pela cor do estágio, ou ícone do objeto) */
.v3-av {
  display: inline-grid; place-items: center; flex-shrink: 0; width: 32px; height: 32px; margin-right: 0.75rem; vertical-align: middle;
  border-radius: 50%; background: color-mix(in srgb, var(--c, var(--muted)) 17%, #121219); color: var(--c, var(--muted));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c, var(--muted)) 34%, transparent);
  font-family: var(--display); font-size: 0.6875rem; font-weight: 650; letter-spacing: 0.02em;
}
.v3-av[data-stage=""] { --c: var(--muted); }
.v3-av.is-icon { border-radius: 10px; }
.v3-av.is-icon .icon { width: 16px; height: 16px; }
.v3-av[data-kind="manual"], .v3-av[data-kind="mine"] { --c: #ff6b8f; }
.v3-av[data-kind="journey"] { --c: #c4a1ff; }
.v3-av[data-kind="scheduled"], .v3-av[data-kind="list"] { --c: var(--info); }
.v3-av[data-kind="sys"] { --c: var(--muted); }

/* ——— 9. índices: resumo numérico, tabela respirada, barra de massa flutuante ——— */
.ix-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 0.75rem; margin: -0.25rem 0 1.5rem; }
.ix-stat {
  position: relative; display: grid; gap: 0.2rem; align-content: start; padding: 1rem 1.1rem 1.05rem; min-width: 0; overflow: hidden;
  border: 1px solid var(--line); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 255, 255, 0.025), transparent), var(--card);
  color: var(--ink); text-decoration: none; font: inherit; text-align: left; box-shadow: var(--hi);
  transition: border-color 0.25s var(--ease-out), transform 0.25s var(--ease-out), background-color 0.25s var(--ease-out);
}
button.ix-stat { cursor: pointer; }
.ix-stat::before { content: ""; position: absolute; left: 1.1rem; top: 0; width: 28px; height: 2px; border-radius: 0 0 2px 2px; background: var(--tc, rgba(255, 255, 255, 0.18)); }
.ix-stat[data-tone="brand"] { --tc: var(--grad); background: radial-gradient(220px 120px at 0 0, rgba(255, 15, 69, 0.12), transparent 70%), var(--card); }
.ix-stat[data-tone="warn"] { --tc: var(--warn); }
.ix-stat[data-tone="ok"] { --tc: var(--ok); }
.ix-stat[data-tone="bad"] { --tc: var(--danger); }
.ix-stat[data-tone="bad"] .ix-stat-v { color: var(--danger); }
.ix-stat[data-tone="warn"] .ix-stat-v { color: var(--warn); }
a.ix-stat:hover, button.ix-stat:hover { border-color: var(--line-strong); transform: translateY(-2px); }
.ix-stat-l { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); }
.ix-stat-v { font-family: var(--display); font-size: 1.75rem; font-weight: 600; letter-spacing: -0.035em; line-height: 1.15; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ix-stat-s { font-size: 0.78125rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.ix-search { border-radius: 999px; }
.ix-table-wrap { border-radius: var(--radius); background: var(--card); border-color: var(--line); }
.ix-table th { height: 42px; background: rgba(255, 255, 255, 0.025); border-bottom-color: var(--line); }
.ix-table td { height: 56px; border-bottom-color: rgba(255, 255, 255, 0.05); }
.ix-dense .ix-table td { height: 40px; }
.ix-table td.ix-name { font-weight: 560; }
.ix-table tbody tr { transition: background-color 0.18s var(--ease-out); }
.ix-table tbody tr:hover { background: rgba(255, 255, 255, 0.035); }
.ix-table tbody tr:hover td:first-child { box-shadow: inset 2px 0 0 var(--g1); }
.ix-table tbody tr.sel { background: rgba(255, 45, 90, 0.07); }
.ix-table tbody tr.sel td:first-child { box-shadow: inset 2px 0 0 var(--g1); }
.ix-table input[type="checkbox"], .tpl-card-top input, .ag-queue li input { accent-color: #ff2d5a; }
.ix-name a { vertical-align: middle; }
.ix-card.has-av { grid-template-columns: auto minmax(0, 1fr) auto; }
.ix-card.has-av .av { grid-row: 1 / span 2; grid-column: 1; }
.ix-card.has-av .av .v3-av { margin: 0; width: 38px; height: 38px; }
.ix-card.has-av .t { grid-column: 2; }
.ix-card.has-av .r { grid-column: 3; }
.ix-card.has-av .s { grid-column: 2 / -1; }

.ix-bulk {
  position: fixed; z-index: var(--z-sticky); bottom: 22px; left: calc(var(--side-w) + (100vw - var(--side-w)) / 2); transform: translateX(-50%);
  width: min(1080px, calc(100vw - var(--side-w) - 48px)); margin: 0; padding: 0.55rem 0.6rem 0.55rem 0.75rem; gap: 0.4rem 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 22px; background: rgba(27, 27, 37, 0.88);
  backdrop-filter: blur(18px) saturate(150%); -webkit-backdrop-filter: blur(18px) saturate(150%);
  box-shadow: 0 24px 60px -18px rgba(0, 0, 0, 0.85), 0 0 0 1px rgba(0, 0, 0, 0.3);
}
.shell.side-collapsed .ix-bulk { left: calc(var(--side-w-mini) + (100vw - var(--side-w-mini)) / 2); width: min(1080px, calc(100vw - var(--side-w-mini) - 48px)); }
.ix-bulk strong { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 600; }
.ix-bulk-n { display: inline-grid; place-items: center; min-width: 28px; height: 26px; padding: 0 8px; border-radius: 999px; background: var(--grad-btn); color: #fff; font-size: 0.8125rem; font-weight: 650; }
.ix-pager { padding-bottom: 4.5rem; }

/* ——— 10. Hoje ——— */
.hoje-page .hoje-head { margin-bottom: 1.5rem; }
.hoje-head h1 { font-size: 2.5rem; letter-spacing: -0.045em; }
.hoje-top .v2-banner { padding: 0.55rem 0.6rem 0.55rem 0.9rem; border-radius: 999px; }
.hoje-grid { gap: 1rem; }
.hoje-card { gap: 0; }

/* herói: funil do dia */
.hoje-card[data-kind="hero"] {
  position: relative; isolation: isolate; padding: 1.6rem 1.75rem 1.5rem; border-radius: var(--radius-lg); border: 1px solid transparent;
  background:
    radial-gradient(700px 280px at 6% 0%, rgba(255, 15, 69, 0.17), transparent 62%),
    radial-gradient(640px 300px at 96% 110%, rgba(139, 43, 232, 0.2), transparent 60%),
    linear-gradient(180deg, #13131b, #0e0e14) padding-box,
    var(--grad-line) border-box;
  box-shadow: 0 30px 80px -40px rgba(255, 15, 69, 0.45), 0 40px 90px -50px rgba(139, 43, 232, 0.55);
}
.hoje-card[data-kind="hero"]::before { content: ""; position: absolute; z-index: -1; inset: 18% 8% -6% 8%; border-radius: 50%; background: var(--grad); filter: blur(70px); opacity: 0.14; pointer-events: none; }
.fd-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.25rem 1rem; }
.fd-head h2 { font-size: 1.0625rem; color: var(--ink); }
.fd-cmp { color: var(--faint); font-size: 0.8125rem; }
.fd-flow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(120px, 0.55fr) minmax(0, 1fr) minmax(120px, 0.55fr) minmax(0, 1fr); align-items: stretch; margin-top: 1.25rem; }
.fd-stage { display: grid; align-content: start; gap: 0.35rem; min-width: 0; padding: 0.25rem 0.25rem 0; }
.fd-label { display: flex; align-items: center; gap: 0.4rem; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted); }
.fd-value { justify-self: start; font-family: var(--display); font-size: clamp(2.75rem, 4.6vw, 4.25rem); font-weight: 600; letter-spacing: -0.05em; line-height: 1; color: var(--ink); text-decoration: none; font-variant-numeric: tabular-nums; transition: opacity 0.2s var(--ease-out); }
.fd-value:hover { opacity: 0.82; }
.fd-money { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.4rem; margin-top: 0.1rem; }
.fd-money .num { font-family: var(--display); font-size: 1.25rem; font-weight: 600; letter-spacing: -0.03em; }
.fd-money-l { color: var(--faint); font-size: 0.8125rem; }
.fd-delta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.5rem; min-height: 1.3em; font-size: 0.8125rem; }
.fd-sep { width: 3px; height: 3px; border-radius: 50%; background: var(--line-strong); }
.fd-vol { color: var(--faint); }
.fd-spark { height: 40px; margin-top: 0.35rem; }
.v3-spark { display: block; width: 100%; max-width: 260px; height: 40px; overflow: visible; }
.fd-foot { color: var(--faint); font-size: 0.8125rem; }
.fd-link { position: relative; display: grid; align-content: center; justify-items: center; gap: 0.15rem; padding: 0 0.75rem 2.5rem; margin: 0 0.25rem; border-radius: 18px; text-align: center; text-decoration: none; color: var(--ink); transition: background-color 0.25s var(--ease-out); }
.fd-link:hover { background: rgba(255, 255, 255, 0.035); }
.fd-arrow { position: relative; width: 100%; height: 2px; margin-bottom: 0.65rem; border-radius: 2px; background: linear-gradient(90deg, rgba(255, 45, 90, 0.15), rgba(255, 45, 90, 0.85) 45%, rgba(162, 75, 255, 0.85)); }
.fd-arrow::after { content: ""; position: absolute; right: -1px; top: 50%; width: 8px; height: 8px; border-top: 2px solid #a24bff; border-right: 2px solid #a24bff; transform: translateY(-50%) rotate(45deg); border-radius: 1px; }
.fd-rate { font-family: var(--display); font-size: 1.5rem; font-weight: 600; letter-spacing: -0.03em; line-height: 1.1; }
.fd-rate-l { color: var(--muted); font-size: 0.75rem; line-height: 1.3; max-width: 14ch; }
.fd-rate-d { font-size: 0.75rem; }

/* para agir agora */
.hoje-card[data-kind="actions"] { padding: 0.5rem 0 0; background: none; border: 0; box-shadow: none; }
.act-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.85rem; margin-bottom: 0.85rem; }
.act-head h2 { font-size: 1.25rem; color: var(--ink); }
.act-head p { color: var(--faint); font-size: 0.8125rem; }
.act-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0.85rem; }
.act-card {
  --tc: var(--faint);
  position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; gap: 0.55rem; min-height: 196px; padding: 1.15rem 1.2rem 1.1rem;
  border: 1px solid var(--line); border-radius: 20px; background: var(--card);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--tc) 38%, transparent), 0 1px 2px rgba(0, 0, 0, 0.35);
  transition: transform 0.35s var(--ease-out), border-color 0.35s var(--ease-out), box-shadow 0.35s var(--ease-out);
}
.act-card::before { content: ""; position: absolute; z-index: -1; inset: 0; background: radial-gradient(260px 160px at 0 0, color-mix(in srgb, var(--tc) 20%, transparent), transparent 72%); }
.act-card:hover { transform: translateY(-3px); border-color: var(--line-strong); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--tc) 50%, transparent), 0 22px 44px -26px color-mix(in srgb, var(--tc) 55%, transparent); }
.act-card[data-tone="brand"] { --tc: #ff2d5a; }
.act-card[data-tone="brand"]::before { background: radial-gradient(280px 170px at 0 0, rgba(255, 15, 69, 0.22), transparent 72%), radial-gradient(240px 160px at 100% 100%, rgba(139, 43, 232, 0.16), transparent 70%); }
.act-card[data-tone="warn"] { --tc: var(--warn); }
.act-card[data-tone="info"] { --tc: var(--info); }
.act-card[data-tone="ok"] { --tc: var(--ok); }
.act-top { display: grid; gap: 0.3rem; }
.act-n { justify-self: start; font-family: var(--display); font-size: 2.75rem; font-weight: 600; letter-spacing: -0.05em; line-height: 1; color: var(--ink); text-decoration: none; }
.act-n:hover { opacity: 0.85; }
.act-ic { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: color-mix(in srgb, var(--tc) 16%, transparent); color: var(--tc); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tc) 32%, transparent); }
.act-ic .icon { width: 20px; height: 20px; }
.act-t { font-size: 0.96875rem; font-weight: 600; color: var(--ink); line-height: 1.35; }
.act-sub { flex: 1; color: var(--muted); font-size: 0.8125rem; line-height: 1.45; }
.act-btns { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.75rem; margin-top: auto; }
.act-btns .btn.text { color: var(--muted); }

/* área de 14 dias */
.card-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 0.25rem 1rem; margin-bottom: 0.75rem; }
.card-head h2 { font-size: 0.9375rem; }
.card-sub { color: var(--faint); font-size: 0.8125rem; }
.v3-chart { position: relative; }
.v3-area { display: block; width: 100%; height: auto; overflow: visible; }
.v3-area-line { fill: none; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 6px 14px rgba(255, 45, 90, 0.35)); }
.v3-line { fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.v3-guide { stroke: rgba(255, 255, 255, 0.28); stroke-width: 1; stroke-dasharray: 3 4; }
.v3-dot { fill: var(--card); stroke: var(--c); stroke-width: 2.5; }
.v3-cursor { transition: opacity 0.15s var(--ease-out); }
.v3-tip {
  position: absolute; top: 4px; z-index: 2; display: grid; gap: 0.2rem; min-width: 150px; padding: 0.65rem 0.8rem; pointer-events: none;
  border: 1px solid var(--line-strong); border-radius: 12px; background: rgba(27, 27, 37, 0.94); box-shadow: var(--shadow);
  font-size: 0.78125rem; color: var(--muted); transform: translateX(-50%);
}
.v3-tip[data-side="left"] { transform: translateX(calc(-100% - 14px)); }
.v3-tip[data-side="right"] { transform: translateX(14px); }
.v3-tip > b { color: var(--ink); font-family: var(--display); font-size: 0.8125rem; }
.v3-tip span { display: flex; justify-content: space-between; gap: 1rem; }
.v3-tip span b { color: var(--ink); font-weight: 600; }
.hoje-legend li[data-kind="area"] i { background: var(--grad); }
.hoje-legend i { width: 14px; height: 4px; border-radius: 2px; vertical-align: 2px; }
.hc-grid { stroke: rgba(255, 255, 255, 0.06); }
.hc-grid.hc-base { stroke: rgba(255, 255, 255, 0.14); }

/* apoio */
.sp-list { list-style: none; display: grid; }
.sp-list li { display: grid; gap: 0.15rem; padding: 0.9rem 0; border-bottom: 1px solid var(--line); }
.sp-list li:first-child { padding-top: 0.2rem; }
.sp-list li:last-child { border-bottom: 0; padding-bottom: 0; }
.sp-l { display: flex; align-items: center; gap: 0.4rem; font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); }
.sp-v { justify-self: start; font-family: var(--display); font-size: 1.625rem; font-weight: 600; letter-spacing: -0.035em; line-height: 1.15; color: var(--ink); text-decoration: none; }
.sp-v:hover { opacity: 0.82; }
.sp-s { display: flex; flex-wrap: wrap; gap: 0.25rem 0.6rem; font-size: 0.8125rem; color: var(--muted); }

/* origem e campanhas */
.hoje-src { gap: 0.85rem; }
.hoje-src li { grid-template-columns: minmax(0, 1fr) auto 3.2rem; gap: 0.35rem 0.75rem; }
.hoje-src li > :first-child { font-weight: 550; }
.hoje-src li > .num { text-align: right; }
.hoje-src-bar { grid-column: 1 / -1; height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.05); }
.hoje-src-bar i { background: var(--grad); border-radius: 999px; }
.hoje-camp-list li { grid-template-columns: auto minmax(0, 1fr) auto auto auto; gap: 0.85rem; padding: 0.7rem 0; border-bottom-color: var(--line); }
.hc-ic { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: rgba(255, 45, 90, 0.12); color: #ff7a98; }
.hc-ic .icon { width: 15px; height: 15px; }
.hoje-card[data-kind="table"] > h2 .btn.text, .hoje-card > h2 .btn.text { color: var(--muted); }

/* ——— 11. registro: cabeçalho-herói, trilha, destaques, linha do tempo ——— */
.rec-head.rec-hero {
  position: relative; isolation: isolate; gap: 1rem; margin-bottom: 1.25rem; padding: 1.6rem 1.75rem; border-radius: var(--radius-lg); border: 1px solid transparent;
  background:
    radial-gradient(620px 260px at 0% 0%, color-mix(in srgb, var(--c, var(--g1)) 20%, transparent), transparent 64%),
    radial-gradient(560px 260px at 100% 100%, rgba(139, 43, 232, 0.14), transparent 62%),
    linear-gradient(180deg, #13131b, #0e0e14) padding-box,
    var(--grad-line) border-box;
}
.rec-hero .rec-top { flex-wrap: nowrap; align-items: center; gap: 1.25rem; }
.rec-id { flex: 1; min-width: 0; display: grid; gap: 0.45rem; }
.rec-hero .rec-top > .v2-actions-row { flex-shrink: 0; align-self: flex-start; }
.rec-hero h1 { font-size: 2.125rem; }
.rec-avatar {
  flex-shrink: 0; display: grid; place-items: center; width: 76px; height: 76px; border-radius: 50%;
  background: color-mix(in srgb, var(--c, var(--g1)) 18%, #14141c); color: var(--c, var(--g1));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c, var(--g1)) 45%, transparent), 0 0 0 6px color-mix(in srgb, var(--c, var(--g1)) 7%, transparent), 0 18px 40px -14px color-mix(in srgb, var(--c, var(--g1)) 60%, transparent);
  font-family: var(--display); font-size: 1.625rem; font-weight: 600; letter-spacing: -0.02em;
}
.rec-avatar[data-stage=""] { --c: var(--muted); }
.rec-avatar.is-icon { border-radius: 22px; background: var(--grad-btn); color: #fff; box-shadow: 0 0 0 6px rgba(255, 45, 90, 0.08), 0 18px 40px -14px rgba(224, 10, 59, 0.6); }
.rec-avatar.is-icon .icon { width: 32px; height: 32px; stroke-width: 1.6; }
.rec-sub { color: var(--muted); }
.rec-pathbox { display: grid; gap: 0.75rem; margin-top: 0.4rem; }
.rec-path { display: flex; flex-wrap: nowrap; gap: 0; margin: 0; padding-top: 0.25rem; overflow-x: auto; scrollbar-width: none; }
.rec-path li { position: relative; flex: 1 1 0; min-width: 68px; display: grid; justify-items: center; gap: 0.45rem; text-align: center; font-size: 0.75rem; color: var(--faint); }
.rec-path li + li::before { content: ""; position: absolute; top: 11px; left: calc(-50% + 14px); right: calc(50% + 14px); width: auto; height: 2px; margin: 0; border-radius: 2px; background: rgba(255, 255, 255, 0.1); }
.rec-path li.done + li::before, .rec-path li.cur::before { background: linear-gradient(90deg, #ff2d5a, #a24bff); }
.rp-dot { position: relative; z-index: 1; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--card); box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.14); color: #fff; }
.rp-dot .icon { width: 13px; height: 13px; stroke-width: 2.4; }
.rec-path li.done .rp-dot { background: var(--grad-btn); box-shadow: none; }
.rec-path li.cur .rp-dot { background: var(--card); box-shadow: inset 0 0 0 2px #ff2d5a, 0 0 0 5px rgba(255, 45, 90, 0.18), 0 0 18px rgba(255, 45, 90, 0.5); }
.rec-path li.cur .rp-dot::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--grad); }
.rec-path li.done { color: var(--muted); }
.rec-path li.cur { color: var(--ink); font-weight: 650; font-size: 0.75rem; letter-spacing: 0.04em; text-transform: uppercase; }
.rec-guide { border-radius: 14px; background: rgba(255, 255, 255, 0.035); border: 1px solid var(--line); padding: 0.65rem 0.9rem; }
.rec-progress { display: grid; gap: 0.55rem; margin-top: 0.25rem; }
.rec-progress p { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.75rem; font-size: 0.8125rem; color: var(--muted); }
.rec-progress p > span:first-child { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); }
.rec-progress b { font-family: var(--display); font-size: 1.375rem; font-weight: 600; letter-spacing: -0.03em; color: var(--ink); }
.rp-bar { display: block; height: 8px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.rp-bar i { display: block; height: 100%; border-radius: inherit; background: var(--grad); box-shadow: 0 0 16px rgba(255, 45, 90, 0.5); }
.rec-progress[data-tone="warn"] .rp-bar i { background: var(--warn); box-shadow: none; }
.rec-progress[data-tone="bad"] .rp-bar i { background: var(--danger); box-shadow: none; }
.rec-progress[data-tone="bad"] b { color: var(--danger); }
.rec-progress[data-tone="warn"] b { color: var(--warn); }
.rec-progress[data-loading] .rp-bar i { width: 35%; opacity: 0.55; }
.rec-progress p > .skeleton { display: inline-block; width: 3.4rem; height: 1.1rem; align-self: center; }
.rec-hl .hub-skel-v { display: block; height: 26px; width: 62%; margin: 0.4rem 0 0.45rem; }
.rec-hl .hub-skel-s { display: block; height: 10px; width: 44%; }
@media (min-width: 1101px) { .hub-page .rec-hl { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.rec-trail { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1.4rem; margin-top: 0.25rem; }
.rec-trail li { position: relative; display: inline-flex; align-items: center; gap: 0.5rem; height: 32px; padding: 0 0.85rem 0 0.25rem; border-radius: 999px; background: rgba(255, 255, 255, 0.045); box-shadow: inset 0 0 0 1px var(--line); font-size: 0.8125rem; color: var(--ink); }
.rec-trail li > span { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--grad-btn); color: #fff; }
.rec-trail li > span .icon { width: 13px; height: 13px; }
.rec-trail li.wait { background: none; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.12); color: var(--muted); }
.rec-trail li.wait > span { background: var(--surface); color: var(--muted); }
.rec-trail li + li::before { content: ""; position: absolute; left: -1.15rem; top: 50%; width: 0.9rem; height: 2px; border-radius: 2px; background: linear-gradient(90deg, rgba(255, 45, 90, 0.3), rgba(162, 75, 255, 0.7)); }
.rec-hl { gap: 0.85rem; margin-bottom: 1.25rem; }
.rec-hl > div { position: relative; padding: 1rem 1.15rem 1.05rem; border-radius: var(--radius); border-color: var(--line); background: linear-gradient(180deg, rgba(255, 255, 255, 0.025), transparent), var(--card); overflow: hidden; }
.rec-hl > div::before { content: ""; position: absolute; left: 1.15rem; top: 0; width: 28px; height: 2px; border-radius: 0 0 2px 2px; background: var(--grad); }
.rec-hl > div[data-tone="warn"]::before { background: var(--warn); }
.rec-hl > div[data-tone="bad"]::before { background: var(--danger); }
.rec-hl .v { font-size: clamp(1.1rem, 1.55vw, 1.5rem); font-weight: 600; margin-top: 0.4rem; white-space: nowrap; }
.rec-grid { gap: 1rem; }
.rec-tl { position: relative; }
.rec-tl .day { padding: 1.1rem 0 0.5rem 44px; }
.rec-tl .ev { position: relative; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 0.75rem; align-items: start; padding: 0.55rem 0; border-bottom: 0; }
.rec-tl .ev::before { content: none; }
.rec-tl .ev::after { content: ""; position: absolute; left: 15px; top: 2.6rem; bottom: -0.6rem; width: 2px; border-radius: 2px; background: linear-gradient(180deg, color-mix(in srgb, var(--c, var(--faint)) 40%, transparent), rgba(255, 255, 255, 0.06)); }
.rec-tl .ev:last-child::after, .rec-tl .ev:has(+ .day)::after { display: none; }
.ev-ic { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: color-mix(in srgb, var(--c, var(--faint)) 15%, var(--card)); color: var(--c, var(--faint)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c, var(--faint)) 34%, transparent); }
.ev-ic .icon { width: 15px; height: 15px; }
.rec-tl .ev p { padding-top: 0.35rem; }
.rec-tl .ev time { padding-top: 0.4rem; }
.rec-assoc li a, .rec-assoc li span.it { border-radius: 10px; }

/* ——— 12. jornada: fluxo vertical com trilho, nós com ícone, prévia do celular ——— */
.jb-canvas { position: relative; max-width: 680px; justify-items: stretch; padding-left: 60px; }
.jb-canvas::before { content: ""; position: absolute; left: 21px; top: 26px; bottom: 26px; width: 2px; border-radius: 2px; background: linear-gradient(180deg, #ff2d5a, #a24bff 55%, rgba(74, 222, 128, 0.8)); opacity: 0.6; }
.v2-card .jb-canvas, .jb-preview .jb-canvas { --ring: var(--card); }
.jb-node { position: relative; padding: 1rem 1.15rem; border: 1px solid var(--line-strong); border-radius: 16px; background: var(--card); box-shadow: var(--hi); transition: border-color 0.25s var(--ease-out), box-shadow 0.25s var(--ease-out); }
.jb-node[data-kind="trigger"] { --c: #ff7a98; border-color: rgba(255, 45, 90, 0.35); background: radial-gradient(360px 140px at 0 0, rgba(255, 15, 69, 0.12), transparent 70%), var(--card); }
.jb-node[data-kind="wait"] { --c: var(--muted); background: rgba(255, 255, 255, 0.02); border-style: dashed; border-color: rgba(255, 255, 255, 0.16); }
.jb-node[data-kind="sms"] { --c: var(--info); }
.jb-node[data-kind="end"] { --c: var(--ok); }
.jb-node.on { border-color: color-mix(in srgb, var(--info) 60%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--info) 14%, transparent), var(--hi); }
.jb-node.bad { border-color: rgba(255, 92, 127, 0.5); box-shadow: 0 0 0 3px rgba(255, 45, 90, 0.1); }
.jb-badge { position: absolute; left: -60px; top: 10px; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: var(--raised); color: var(--c, var(--muted)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c, #888) 40%, transparent), 0 0 0 6px var(--ring); }
.jb-badge .icon { width: 19px; height: 19px; }
.jb-node[data-kind="trigger"] .jb-badge { background: var(--grad-btn); color: #fff; box-shadow: 0 0 0 6px var(--ring), 0 10px 24px -8px rgba(224, 10, 59, 0.7); }
.jb-node[data-kind="end"] .jb-badge { background: color-mix(in srgb, var(--ok) 18%, var(--raised)); }
.jb-kind { color: var(--c, var(--muted)); font-weight: 650; letter-spacing: 0.08em; }
.jb-conn { width: 100%; height: 16px; background: none; }
.jb-conn:has(.jb-plus) { height: 44px; }
.jb-plus { left: -51px; width: 26px; height: 26px; border-radius: 50%; background: var(--raised); border: 1px solid rgba(255, 255, 255, 0.22); color: var(--ink); box-shadow: 0 0 0 4px var(--ring); transition: transform 0.25s var(--ease-out), background-color 0.2s var(--ease-out); }
.jb-plus:hover { transform: scale(1.12); background: var(--grad-btn); border-color: transparent; color: #fff; }
.jb-side { gap: 1rem; }
.jb-phonebox { display: grid; gap: 0.6rem; justify-items: center; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.jb-phonebox .jb-vh { width: 100%; align-items: center; }
.jb-phonebox > div { width: 100%; display: grid; justify-items: center; }
.jb-phonebox .jb-note { justify-self: start; }

/* celular de prévia (usado em templates, disparo, campanha e jornada) */
.v2-phone {
  position: relative; width: min(290px, 100%); padding: 2.1rem 0.9rem 1.4rem; border-radius: 34px;
  background: linear-gradient(180deg, #16161e, #0c0c11); border: 1px solid rgba(255, 255, 255, 0.14);
  box-shadow: inset 0 0 0 5px #050507, inset 0 0 0 6px rgba(255, 255, 255, 0.06), 0 30px 60px -28px rgba(139, 43, 232, 0.55), 0 20px 40px -24px rgba(0, 0, 0, 0.9);
}
.v2-phone::before { content: ""; position: absolute; top: 12px; left: 50%; width: 76px; height: 20px; border-radius: 999px; background: #050507; transform: translateX(-50%); }
.v2-phone-head { justify-content: center; gap: 0.5rem; margin-bottom: 0.85rem; font-size: 0.75rem; }
.v2-phone-head span:first-child { color: var(--ink); font-weight: 600; }
.v2-phone-bubble { background: #2a2a34; border-radius: 18px 18px 18px 6px; padding: 0.7rem 0.85rem; font-size: 0.8125rem; line-height: 1.45; }

/* ——— 13. login ——— */
.auth-gate {
  background:
    radial-gradient(900px 520px at 50% -12%, rgba(255, 15, 69, 0.22), transparent 62%),
    radial-gradient(800px 520px at 100% 110%, rgba(139, 43, 232, 0.22), transparent 60%),
    radial-gradient(600px 400px at 0% 100%, rgba(139, 43, 232, 0.1), transparent 60%),
    var(--bg);
}
.auth-card {
  position: relative; isolation: isolate; width: min(410px, 100%); padding: 2.4rem 2rem 2rem; border-radius: 28px; border: 1px solid transparent;
  background: linear-gradient(180deg, rgba(22, 22, 30, 0.94), rgba(14, 14, 20, 0.94)) padding-box, var(--grad-line) border-box;
  box-shadow: 0 40px 100px -30px rgba(0, 0, 0, 0.9), 0 30px 80px -50px rgba(255, 15, 69, 0.5);
}
.auth-card::before { content: ""; position: absolute; z-index: -1; inset: 10% 15% auto; height: 40%; border-radius: 50%; background: var(--grad); filter: blur(80px); opacity: 0.2; }
.auth-mark { height: 60px; margin-bottom: 1.25rem; }
.auth-card h1 { font-size: 1.875rem; font-weight: 650; letter-spacing: -0.035em; }
.auth-card > .btn, .auth-form .btn { min-height: 46px; border-radius: 999px; }
#btnGoogleLogin { background: var(--ink); color: #0b0b10; }
#btnGoogleLogin:hover { background: #fff; transform: translateY(-1px); }

/* ——— 14. carregamento e movimento ——— */
.skeleton { background: linear-gradient(100deg, rgba(255, 255, 255, 0.04) 30%, rgba(255, 255, 255, 0.1) 50%, rgba(255, 255, 255, 0.04) 70%); background-size: 300% 100%; border-radius: 8px; }
.hoje-card[data-kind="hero"] > .skeleton:last-child { height: 64px; width: 40%; }
@media (prefers-reduced-motion: no-preference) {
  .skeleton { animation: v3-shimmer 1.5s ease-in-out infinite; }
  .v2-page { animation: v3-enter 0.55s var(--ease-out) backwards; }
  .hoje-grid > .hoje-card, .ix-stats > *, .act-grid > * { animation: v3-enter 0.7s var(--ease-out) backwards; }
  .hoje-grid > .hoje-card:nth-child(2), .ix-stats > :nth-child(2), .act-grid > :nth-child(2) { animation-delay: 70ms; }
  .hoje-grid > .hoje-card:nth-child(3), .ix-stats > :nth-child(3), .act-grid > :nth-child(3) { animation-delay: 140ms; }
  .hoje-grid > .hoje-card:nth-child(4), .ix-stats > :nth-child(4), .act-grid > :nth-child(4) { animation-delay: 210ms; }
  .hoje-grid > .hoje-card:nth-child(n + 5), .ix-stats > :nth-child(n + 5) { animation-delay: 280ms; }
  .ix-table tbody tr { animation: v3-fade 0.45s var(--ease-out) both; }
  .ix-table tbody tr:nth-child(2) { animation-delay: 25ms; } .ix-table tbody tr:nth-child(3) { animation-delay: 50ms; }
  .ix-table tbody tr:nth-child(4) { animation-delay: 75ms; } .ix-table tbody tr:nth-child(5) { animation-delay: 100ms; }
  .ix-table tbody tr:nth-child(n + 6) { animation-delay: 125ms; }
  .rec-hero, .rec-hl > div { animation: v3-enter 0.6s var(--ease-out) backwards; }
  .rp-bar i { transition: width 0.9s var(--ease-out); }
  .rec-progress[data-loading] .rp-bar i { animation: rp-indet 1.4s ease-in-out infinite; }
  .rec-hl > div:nth-child(2) { animation-delay: 60ms; } .rec-hl > div:nth-child(3) { animation-delay: 120ms; } .rec-hl > div:nth-child(4) { animation-delay: 180ms; }
  .ix-bulk:not([hidden]) { animation: v3-rise 0.45s var(--ease-out) backwards; }
  .v3-area-line, .v3-line { stroke-dasharray: 2400; stroke-dashoffset: 2400; animation: v3-draw 1.2s var(--ease-out) 0.15s forwards; }
  .v3-area-fill { animation: v3-fade 1s var(--ease-out) 0.3s both; }
  .v2-menu:not([hidden]), .tb-notif-panel:not([hidden]) { animation: v3-pop 0.22s var(--ease-out) backwards; }
}
@keyframes rp-indet { from { transform: translateX(-100%); } to { transform: translateX(290%); } }
@keyframes v3-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@keyframes v3-enter { from { opacity: 0; transform: translateY(14px); } }
@keyframes v3-fade { from { opacity: 0; } }
@keyframes v3-rise { from { opacity: 0; transform: translate(-50%, 18px); } }
@keyframes v3-draw { to { stroke-dashoffset: 0; } }
@keyframes v3-pop { from { opacity: 0; transform: translateY(-6px) scale(0.98); } }
@media (prefers-reduced-motion: reduce) {
  .btn, .ix-stat, .act-card, .side-link { transition: none; }
  .btn:hover, .btn:active, .ix-stat:hover, .act-card:hover { transform: none !important; }
}

/* ——— 15. tablet ——— */
@media (max-width: 1100px) {
  .hoje-card[data-card="apoio"] { grid-column: span 12; }
  .sp-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 1.25rem; }
  .sp-list li, .sp-list li:first-child { padding: 0.2rem 0; border-bottom: 0; }
  .fd-flow { grid-template-columns: minmax(0, 1fr) minmax(96px, 0.5fr) minmax(0, 1fr) minmax(96px, 0.5fr) minmax(0, 1fr); }
  .fd-value { font-size: clamp(2.25rem, 5vw, 3.25rem); }
  .rec-hero .rec-top { flex-wrap: wrap; }
  .rec-hero .rec-top > .v2-actions-row { width: 100%; padding-left: calc(76px + 1.25rem); }
}
@media (max-width: 1279px) and (min-width: 720px) {
  .act-grid[data-n="4"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .act-card { min-height: 0; }
}
@media (max-width: 899px) {
  .ix-bulk, .shell.side-collapsed .ix-bulk { left: 50%; width: calc(100vw - 2rem); }
}

/* ——— 16. celular ——— */
@media (max-width: 719px) {
  .v2-page { padding-top: 1.25rem; }
  .v2-head { margin-bottom: 1.1rem; }
  .v2-head h1, .rec-top h1 { font-size: 1.625rem; }
  .hoje-head h1 { font-size: 2rem; }
  .hoje-grid { grid-template-columns: minmax(0, 1fr); gap: 0.75rem; }
  .hoje-grid > .hoje-card[data-card] { grid-column: 1 / -1; order: 0; }
  .hoje-card[data-kind="hero"] { padding: 1.25rem 1.1rem 1.1rem; border-radius: 20px; }
  .fd-flow { grid-template-columns: minmax(0, 1fr); margin-top: 1rem; }
  .fd-stage { grid-template-columns: minmax(0, 1fr) auto; column-gap: 0.75rem; padding: 0.25rem 0; }
  .fd-stage > * { grid-column: 1; }
  .fd-stage > .fd-spark { grid-column: 2; grid-row: 1 / span 3; align-self: center; width: 104px; margin: 0; }
  .fd-value { font-size: 2.75rem; }
  .fd-link { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.6rem; margin: 0.35rem 0; padding: 0.55rem 0.75rem; border-radius: 14px; background: rgba(255, 255, 255, 0.035); text-align: left; }
  .fd-arrow { width: 2px; height: 22px; margin: 0; background: linear-gradient(180deg, rgba(255, 45, 90, 0.9), rgba(162, 75, 255, 0.9)); }
  .fd-arrow::after { right: auto; left: 50%; top: auto; bottom: -1px; transform: translateX(-50%) rotate(135deg); }
  .fd-rate { font-size: 1.25rem; }
  .fd-rate-l { max-width: none; }
  .act-grid { grid-template-columns: minmax(0, 1fr); }
  .act-card { min-height: 0; }
  .act-n { font-size: 2.25rem; }
  .sp-list { grid-template-columns: minmax(0, 1fr); }
  .sp-list li, .sp-list li:first-child { padding: 0.75rem 0; border-bottom: 1px solid var(--line); }
  .sp-list li:last-child { border-bottom: 0; }
  .hoje-camp-list li { grid-template-columns: auto minmax(0, 1fr) auto; }
  .hoje-camp-list li > :nth-child(4), .hoje-camp-list li > :nth-child(5) { display: none; }
  .ix-stats { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: 1rem; scrollbar-width: none; gap: 0.6rem; margin: 0 -1rem 1.1rem; padding: 0 1rem; }
  .ix-stats > * { flex: 0 0 min(64%, 210px); scroll-snap-align: start; }
  .ix-stat-v { font-size: 1.5rem; }
  .ix-bulk { bottom: calc(70px + env(safe-area-inset-bottom)); border-radius: 22px; width: calc(100vw - 1.5rem); }
  .rec-head.rec-hero { padding: 1.2rem 1.1rem; border-radius: 20px; }
  .rec-hero .rec-top { gap: 0.9rem; }
  .rec-avatar { width: 56px; height: 56px; font-size: 1.25rem; }
  .rec-avatar.is-icon { border-radius: 17px; }
  .rec-avatar.is-icon .icon { width: 26px; height: 26px; }
  .rec-hero h1 { font-size: 1.5rem; }
  .rec-hero .rec-top > .v2-actions-row { padding-left: 0; }
  .rec-path li { min-width: 58px; font-size: 0.6875rem; }
  .rec-hl > div { padding: 0.85rem 0.9rem; }
  .rec-hl .v { font-size: 1.25rem; }
  .jb-canvas { padding-left: 48px; }
  .jb-canvas::before { left: 17px; }
  .jb-badge { left: -48px; width: 36px; height: 36px; border-radius: 12px; }
  .jb-badge .icon { width: 16px; height: 16px; }
  .jb-plus { left: -43px; }
  .auth-card { padding: 2rem 1.35rem 1.5rem; border-radius: 24px; }
  .bottombar { background: rgba(10, 10, 15, 0.82); }
  .bottombar [aria-current="page"] .icon { color: #ff7a98; }
}

/* valor monetário não quebra; botão principal da Hoje fica à direita quando a barra quebra linha */
.hoje-primary { margin-left: auto; }

/* ——— Promoções (ponte com a casa) ——— */
.promo-page .v2-card + .v2-card { margin-top: 1rem; }
.promo-body { display: grid; gap: 1rem; margin-top: 1rem; }
.promo-center { justify-content: center; }
.promo-steps { display: flex; gap: 0.5rem; list-style: none; padding: 0; margin: 1rem 0; counter-reset: s; }
.promo-steps li { counter-increment: s; padding: 0.35rem 0.85rem; border-radius: 999px; border: 1px solid var(--line-strong); color: var(--faint); font-size: var(--fs-sm); }
.promo-steps li::before { content: counter(s) " · "; }
.promo-steps li[data-on="1"] { color: var(--ink); border-color: var(--g1); box-shadow: 0 0 0 3px color-mix(in srgb, var(--g1) 18%, transparent); }
.promo-form { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); align-items: end; }
.promo-form > p, .promo-form > .v2-actions-row { grid-column: 1 / -1; }
.promo-resumo { display: grid; gap: 0.15rem; margin: 1rem 0; }
.promo-row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.45rem 0; border-bottom: 1px solid var(--line); }
.promo-row span { color: var(--muted); }
.promo-row strong { text-align: right; overflow-wrap: anywhere; }
.promo-group h3 { margin: 0.9rem 0 0.2rem; font-size: var(--fs-xs); letter-spacing: 0.06em; text-transform: uppercase; color: var(--faint); }
.promo-cost, .promo-code { display: flex; flex-direction: column; gap: 0.2rem; padding: 1rem 1.2rem; margin: 0.75rem 0; border-radius: 16px; border: 1px solid var(--line-strong); background: rgba(255, 255, 255, 0.03); }
.promo-cost span, .promo-code span { color: var(--muted); font-size: var(--fs-sm); }
.promo-cost strong { font-size: clamp(1.6rem, 3vw, 2.4rem); font-weight: 700; letter-spacing: -0.02em; overflow-wrap: anywhere; }
.promo-code strong { font-size: 1.4rem; letter-spacing: 0.08em; overflow-wrap: anywhere; }
.promo-text { white-space: pre-wrap; font: inherit; margin: 1rem 0; }
@media (max-width: 640px) { .promo-steps { flex-wrap: wrap; } .promo-row { flex-direction: column; gap: 0.1rem; } .promo-row strong { text-align: left; } }

/* ——— Promoções v3: herói, pôsteres com capa do jogo, cashback ——— */
.pz-top { display: grid; gap: 1rem; margin-bottom: 1.25rem; }
.pz-hero {
  position: relative; isolation: isolate; padding: 1.6rem 1.75rem 1.4rem; border-radius: var(--radius-lg); border: 1px solid transparent;
  background:
    radial-gradient(700px 280px at 6% 0%, rgba(255, 15, 69, 0.17), transparent 62%),
    radial-gradient(640px 300px at 96% 110%, rgba(139, 43, 232, 0.2), transparent 60%),
    linear-gradient(180deg, #13131b, #0e0e14) padding-box,
    var(--grad-line) border-box;
  box-shadow: 0 30px 80px -40px rgba(255, 15, 69, 0.45), 0 40px 90px -50px rgba(139, 43, 232, 0.55);
}
.pz-hero::before { content: ""; position: absolute; z-index: -1; inset: 18% 8% -6% 8%; border-radius: 50%; background: var(--grad); filter: blur(70px); opacity: 0.14; pointer-events: none; }
.pz-hero-skel { min-height: 180px; }
.pz-hero-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem 1.5rem; margin-top: 1.1rem; }
.pz-big { display: grid; gap: 0.3rem; align-content: start; min-width: 0; }
.pz-big-v { font-family: var(--display); font-size: clamp(1.9rem, 3.4vw, 3.25rem); font-weight: 600; letter-spacing: -0.045em; line-height: 1; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; }
.pz-big-v[data-tone="good"] { color: #7ef0a6; text-shadow: 0 0 28px rgba(74, 222, 128, 0.35); }
.pz-big-v[data-tone="bad"] { color: var(--danger); }
.pz-grad { background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 0 22px rgba(255, 15, 69, 0.35)); }
.pz-hero-chips { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 1.2rem; }
.pz-hchip { display: inline-flex; align-items: center; gap: 0.55rem; padding: 0.45rem 0.85rem 0.45rem 0.7rem; border-radius: 999px; border: 1px solid var(--line-strong); background: rgba(255, 255, 255, 0.035); color: var(--muted); font-size: 0.8125rem; text-decoration: none; transition: background-color 0.2s var(--ease-out), transform 0.25s var(--ease-out); }
.pz-hchip:hover { background: rgba(255, 255, 255, 0.07); transform: translateY(-1px); }
.pz-hchip::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--tc, var(--faint)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--tc, var(--faint)) 22%, transparent); }
.pz-hchip b { color: var(--ink); font-family: var(--display); font-weight: 600; }

.pz-hchip[data-tone="ok"], .pz-card[data-tone="ok"], .pz-cash[data-tone="ok"], .pz-detail-hero[data-tone="ok"] { --tc: var(--ok); }
.pz-card[data-tone="info"], .pz-cash[data-tone="info"], .pz-detail-hero[data-tone="info"] { --tc: #c06bff; }
.pz-hchip[data-tone="warn"], .pz-card[data-tone="warn"], .pz-cash[data-tone="warn"], .pz-detail-hero[data-tone="warn"] { --tc: var(--warn); }
.pz-card[data-tone="none"], .pz-cash[data-tone="none"], .pz-detail-hero[data-tone="none"] { --tc: var(--faint); }

.pz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 1.1rem; }
.pz-grid-cash { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.pz-card, .pz-cash {
  position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; border-radius: 22px; text-decoration: none; color: var(--ink);
  border: 1px solid var(--line); background: var(--card);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--tc) 40%, transparent), 0 1px 2px rgba(0, 0, 0, 0.35);
  transition: transform 0.4s var(--ease-out), box-shadow 0.4s var(--ease-out), border-color 0.4s var(--ease-out);
}
.pz-card:hover, .pz-cash:hover { transform: translateY(-5px); border-color: color-mix(in srgb, var(--tc) 45%, var(--line-strong)); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--tc) 60%, transparent), 0 26px 50px -24px color-mix(in srgb, var(--tc) 55%, transparent); }
.pz-card:focus-visible, .pz-cash:focus-visible { outline: 2px solid var(--g1); outline-offset: 3px; }

.pz-art { position: relative; aspect-ratio: 6 / 7; overflow: hidden; background: radial-gradient(120% 90% at 20% 0%, rgba(255, 15, 69, 0.45), transparent 60%), radial-gradient(120% 90% at 100% 100%, rgba(139, 43, 232, 0.5), transparent 60%), #15151d; }
.pz-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top; transition: transform 0.7s var(--ease-out), filter 0.7s var(--ease-out); }
.pz-card:hover .pz-img { transform: scale(1.06); filter: saturate(1.15); }
.pz-art::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(7, 7, 11, 0.45) 0%, transparent 26%, transparent 46%, rgba(7, 7, 11, 0.94) 100%); pointer-events: none; }
.pz-art-fallback { display: none; position: absolute; inset: 0; place-items: center; font-family: var(--display); font-size: 4rem; font-weight: 700; letter-spacing: -0.05em; color: rgba(255, 255, 255, 0.85); text-transform: uppercase; }
.pz-art[data-art="none"] .pz-img { display: none; }
.pz-art[data-art="none"] .pz-art-fallback { display: grid; }
.pz-status, .pz-roi { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.28rem 0.6rem; border-radius: 999px; font-size: 0.6875rem; font-weight: 650; letter-spacing: 0.04em; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.pz-art > .pz-status { position: absolute; top: 0.75rem; left: 0.75rem; }
.pz-art > .pz-roi { position: absolute; top: 0.75rem; right: 0.75rem; }
.pz-status { background: rgba(10, 10, 15, 0.6); border: 1px solid rgba(255, 255, 255, 0.14); color: var(--muted); text-transform: uppercase; }
.pz-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--faint); }
.pz-status[data-on="1"] { color: #b8f5cd; }
.pz-status[data-on="1"]::before { background: var(--ok); box-shadow: 0 0 0 3px rgba(74, 222, 128, 0.25), 0 0 10px var(--ok); animation: pz-pulse 2.4s ease-in-out infinite; }
@keyframes pz-pulse { 50% { box-shadow: 0 0 0 5px rgba(74, 222, 128, 0.08), 0 0 14px var(--ok); } }
@media (prefers-reduced-motion: reduce) { .pz-status[data-on="1"]::before { animation: none; } .pz-card:hover, .pz-cash:hover, .pz-card:hover .pz-img { transform: none; } }
.pz-roi { background: color-mix(in srgb, var(--tc, var(--faint)) 22%, rgba(10, 10, 15, 0.7)); border: 1px solid color-mix(in srgb, var(--tc, var(--faint)) 55%, transparent); color: #fff; text-transform: uppercase; }
.pz-roi b { font-family: var(--display); font-size: 0.875rem; letter-spacing: -0.01em; text-transform: none; }
.pz-art-foot { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; display: grid; gap: 0.2rem; padding: 0 1rem 0.9rem; }
.pz-code { font-family: var(--display); font-size: 1.6rem; font-weight: 700; letter-spacing: -0.035em; line-height: 1.05; color: #fff; text-shadow: 0 2px 18px rgba(0, 0, 0, 0.6); overflow-wrap: anywhere; }
.pz-sub { color: var(--muted); font-size: 0.8125rem; }
.pz-art-foot .pz-sub { color: rgba(255, 255, 255, 0.78); }
.pz-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.7rem 0.9rem; margin: 0; padding: 0.9rem 1rem 1rem; }
.pz-stat { display: grid; gap: 0.1rem; min-width: 0; }
.pz-stat dt { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); }
.pz-stat dd { margin: 0; font-family: var(--display); font-size: 1.05rem; font-weight: 600; letter-spacing: -0.02em; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; }
.pz-stat.bad dd { color: var(--danger); }
.pz-stat.good dd { color: #7ef0a6; }

.pz-cash { padding: 1.15rem 1.15rem 0; gap: 0.55rem; }
.pz-cash::before { content: ""; position: absolute; z-index: -1; inset: 0; background: radial-gradient(300px 190px at 0 0, color-mix(in srgb, var(--tc) 22%, transparent), transparent 70%), radial-gradient(260px 180px at 100% 100%, rgba(139, 43, 232, 0.16), transparent 70%); }
.pz-cash-top { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.pz-cash .pz-code { font-size: 1.05rem; color: var(--muted); text-shadow: none; letter-spacing: 0.02em; }
.pz-cash-v { display: flex; align-items: baseline; gap: 0.5rem; font-family: var(--display); font-size: clamp(2.6rem, 4vw, 3.4rem); font-weight: 700; letter-spacing: -0.055em; line-height: 1; background: linear-gradient(120deg, #fff 30%, color-mix(in srgb, var(--tc) 70%, #fff)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pz-cash-v small { font-family: var(--font); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0; color: var(--faint); -webkit-text-fill-color: var(--faint); }
.pz-bar { height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.06); overflow: hidden; }
.pz-bar i { display: block; height: 100%; border-radius: inherit; background: var(--grad); box-shadow: 0 0 12px rgba(255, 15, 69, 0.5); }
.pz-cash .pz-stats { margin: 0.2rem -1.15rem 0; border-top: 1px solid var(--line); background: rgba(0, 0, 0, 0.18); }

.pz-rule h3 { font-family: var(--display); font-size: 1rem; font-weight: 600; color: var(--ink); }
.pz-rule .pz-status { align-self: flex-start; margin-top: auto; }

/* detalhe */
.pz-detail { display: grid; gap: 1.1rem; }
.pz-detail-hero {
  display: grid; grid-template-columns: minmax(200px, 300px) minmax(0, 1fr); gap: 1.75rem; padding: 1.4rem; border-radius: var(--radius-lg); border: 1px solid transparent;
  background: radial-gradient(600px 260px at 0 0, color-mix(in srgb, var(--tc) 18%, transparent), transparent 62%), radial-gradient(600px 300px at 100% 100%, rgba(139, 43, 232, 0.18), transparent 60%), linear-gradient(180deg, #13131b, #0e0e14) padding-box, var(--grad-line) border-box;
  box-shadow: 0 30px 80px -42px color-mix(in srgb, var(--tc) 60%, transparent);
}
.pz-art-lg { border-radius: 20px; box-shadow: 0 24px 50px -20px rgba(0, 0, 0, 0.7); }
.pz-art-lg::after { background: linear-gradient(180deg, transparent 60%, rgba(7, 7, 11, 0.5)); }
.pz-cash-art { display: grid; place-content: center; text-align: center; aspect-ratio: 6 / 7; border-radius: 20px; background: radial-gradient(120% 90% at 20% 0%, rgba(255, 15, 69, 0.5), transparent 60%), radial-gradient(120% 90% at 100% 100%, rgba(139, 43, 232, 0.55), transparent 60%), #15151d; }
.pz-cash-art span { font-family: var(--display); font-size: clamp(2.6rem, 5vw, 3.6rem); font-weight: 700; letter-spacing: -0.05em; color: #fff; }
.pz-cash-art small { color: rgba(255, 255, 255, 0.75); text-transform: uppercase; letter-spacing: 0.12em; font-size: 0.75rem; }
.pz-detail-main { display: grid; align-content: start; gap: 0.9rem; min-width: 0; }
.pz-detail-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.pz-detail-name { color: var(--muted); font-size: 1rem; }
.pz-detail-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.1rem 1.4rem; margin: 0.3rem 0 0; }
.pz-detail-stats .pz-stat.lg dd { font-size: clamp(1.5rem, 2.6vw, 2.35rem); letter-spacing: -0.045em; }
.pz-link { color: var(--faint); font-size: 0.8125rem; overflow-wrap: anywhere; }
.pz-raw { margin-top: 1rem; }
.pz-raw summary { cursor: pointer; color: var(--muted); font-size: 0.875rem; }

@media (max-width: 900px) {
  .pz-hero-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pz-detail-hero { grid-template-columns: 1fr; }
  .pz-detail-hero > .pz-art, .pz-cash-art { max-width: 280px; }
  .pz-detail-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) { .pz-hero { padding: 1.2rem; } .pz-big-v { font-size: 1.75rem; } }

/* perfis em Configurações › Usuários */
.cfg-roles { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0.75rem; margin-top: 0.75rem; }
.cfg-role { padding: 0.85rem 1rem; border-radius: 16px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.025); }
.cfg-role strong { font-family: var(--display); font-size: 1rem; }
.cfg-user-acts { display: flex; flex-wrap: wrap; gap: 0.25rem 0.75rem; justify-content: flex-end; }
.cfg-pass { display: grid; gap: 0.3rem; margin: 0.9rem 0; padding: 0.9rem 1rem; border-radius: 14px; border: 1px solid var(--line-strong); background: rgba(255, 255, 255, 0.035); }
.cfg-pass span { color: var(--muted); font-size: 0.8125rem; }
.cfg-pass code { font-family: ui-monospace, "SFMono-Regular", Consolas, monospace; font-size: 1.35rem; letter-spacing: 0.06em; color: var(--ink); user-select: all; overflow-wrap: anywhere; }
.cfg-owner { display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.3rem 0.7rem; border-radius: 999px; background: var(--grad-btn); color: #fff; font-size: 0.75rem; font-weight: 650; letter-spacing: 0.02em; }

/* ——— Novo disparo v3: 3 passos claros + resumo fixo ——— */
.dsp-page .dsp-split { grid-template-columns: minmax(0, 1fr) 360px; gap: 1.25rem; }
.dsp-page .dsp-main { gap: 1rem; }
.dsp-page .dsp-sec { padding: 1.35rem 1.5rem 1.5rem; }
.dsp-page .dsp-sec > h2 { font-size: 1.125rem; margin-bottom: 1rem; }
.dsp-page .dsp-n { width: 28px; height: 28px; font-size: 0.875rem; background: var(--grad-btn); color: #fff; box-shadow: 0 6px 18px -6px rgba(255, 15, 69, 0.6); }

/* abas (público e quando): pílulas, um campo por vez */
.dsp-seg { display: inline-flex; flex-wrap: wrap; gap: 4px; padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, 0.04); border: 1px solid var(--line); }
.dsp-segbtn { position: relative; display: inline-flex; align-items: center; padding: 0.5rem 1rem; border-radius: 999px; color: var(--muted); font-size: 0.875rem; font-weight: 600; cursor: pointer; transition: background-color 0.2s var(--ease-out), color 0.2s var(--ease-out); white-space: nowrap; }
.dsp-segbtn:hover { color: var(--ink); background: rgba(255, 255, 255, 0.05); }
.dsp-segbtn input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.dsp-segbtn:has(input:checked) { background: var(--grad-btn); color: #fff; box-shadow: 0 8px 22px -10px rgba(255, 15, 69, 0.7); }
.dsp-segbtn:has(input:focus-visible) { outline: 2px solid var(--g1); outline-offset: 2px; }

.dsp-aud { display: grid; gap: 0.9rem; }
.dsp-audhead { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem 1rem; }
.dsp-page .dsp-countrow { margin: 0; min-height: 0; color: var(--muted); }
.dsp-page .dsp-count b { font-family: var(--display); font-size: 1.6rem; font-weight: 600; letter-spacing: -0.03em; color: var(--ink); margin-right: 0.25rem; }
.dsp-audpanel select, .dsp-audpanel textarea { width: 100%; }
.dsp-audpanel select { min-height: 48px; font-size: 1rem; }
.dsp-audpanel textarea { min-height: 140px; }

/* mensagem: texto largo + compliance embaixo + celular ao lado */
.dsp-page .dsp-msg-grid { grid-template-columns: minmax(0, 1fr) 260px; gap: 1.5rem; }
.dsp-page .dsp-msg-l { gap: 0.6rem; }
.dsp-page .dsp-msg-l textarea { min-height: 170px; font-size: 1rem; line-height: 1.5; }
.dsp-page .dsp-tplrow { margin-bottom: 0.25rem; }
.dsp-page .dsp-tplrow select { min-height: 44px; }
.dsp-comp { margin-top: 0.4rem; padding: 0.9rem 1rem; border-radius: 14px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.025); }
.dsp-comp h3 { font-size: 0.75rem; font-weight: 650; letter-spacing: 0.08em; text-transform: uppercase; color: var(--faint); margin-bottom: 0.4rem; }
.dsp-preview { position: sticky; top: calc(var(--topbar-h) + 16px); }

/* envio */
.dsp-page .dsp-send { gap: 1rem; }
.dsp-page .dsp-when { gap: 0.75rem 1rem; }
.dsp-page .dsp-when input[type="datetime-local"] { height: 40px; }
.dsp-page .dsp-when input[hidden] { display: none; }

/* resumo fixo */
.dsp-page .dsp-summary { gap: 1rem; padding: 1.35rem; border: 1px solid transparent; background: radial-gradient(420px 220px at 0 0, rgba(255, 15, 69, 0.14), transparent 65%), radial-gradient(380px 240px at 100% 100%, rgba(139, 43, 232, 0.16), transparent 65%), linear-gradient(180deg, #13131b, #0e0e14) padding-box, var(--grad-line) border-box; box-shadow: 0 30px 70px -40px rgba(255, 15, 69, 0.45); }
.dsp-sum-hero { display: grid; gap: 0.15rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--line); }
.dsp-sum-label { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted); }
.dsp-sum-n { font-family: var(--display); font-size: clamp(2.2rem, 3.2vw, 3rem); font-weight: 600; letter-spacing: -0.05em; line-height: 1.05; color: var(--ink); font-variant-numeric: tabular-nums; }
.dsp-sum-aud { color: var(--muted); font-size: 0.875rem; overflow-wrap: anywhere; }
.dsp-page .dsp-go { min-height: 52px; font-size: 1rem; border-radius: 999px; }

/* telas médias: resumo desce, celular encolhe */
@media (max-width: 1180px) {
  .dsp-page .dsp-split { grid-template-columns: minmax(0, 1fr); }
  .dsp-page .dsp-summary { position: static; max-height: none; }
  .dsp-page .dsp-msg-grid { grid-template-columns: minmax(0, 1fr) 220px; }
}
@media (max-width: 760px) {
  .dsp-page .dsp-sec { padding: 1.1rem; }
  .dsp-page .dsp-msg-grid { grid-template-columns: minmax(0, 1fr); }
  .dsp-preview { position: static; justify-self: center; }
  .dsp-seg { display: flex; width: 100%; }
  .dsp-segbtn { flex: 1 1 auto; justify-content: center; padding: 0.55rem 0.7rem; }
  .dsp-audhead { flex-direction: column; align-items: stretch; }
}

/* barra fixa de envio: só quando o resumo desce (≤1180px) */
.dsp-bar { display: none; }
@media (max-width: 1180px) {
  .dsp-bar { position: sticky; bottom: 12px; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-top: 1rem; padding: 0.7rem 0.75rem 0.7rem 1.1rem; border-radius: 999px; border: 1px solid var(--line-strong); background: rgba(16, 16, 23, 0.92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 18px 40px -18px rgba(0, 0, 0, 0.8), 0 0 0 1px rgba(255, 15, 69, 0.12); }
  .dsp-bar-info { display: grid; min-width: 0; line-height: 1.25; }
  .dsp-bar-info strong { font-family: var(--display); font-size: 1rem; color: var(--ink); }
  .dsp-bar-info span { font-size: 0.8125rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .dsp-bar .btn { flex-shrink: 0; border-radius: 999px; min-height: 44px; }
}
@media (max-width: 719px) {
  .dsp-bar { bottom: calc(66px + env(safe-area-inset-bottom)); border-radius: 18px; }
  .dsp-seg { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
  .dsp-segbtn { justify-content: center; text-align: center; white-space: normal; padding: 0.55rem 0.35rem; font-size: 0.8125rem; line-height: 1.2; }
}

/* ——— Novo disparo: enviando → enviado, na mesma tela ——— */
.dsp-page .dsp-summary.is-state > :not(.dsp-state) { display: none; }
.dsp-state { display: grid; justify-items: center; gap: 0.6rem; padding: 1.4rem 0.5rem 0.6rem; text-align: center; }
.dsp-state h2 { font-family: var(--display); font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; color: var(--ink); }
.dsp-main.dsp-locked { opacity: 0.5; filter: saturate(0.6); transition: opacity 0.4s var(--ease-out), filter 0.4s var(--ease-out); pointer-events: none; }

/* enviando: aviãozinho voando + barra correndo */
.dsp-fly { position: relative; width: 120px; height: 84px; }
.dsp-plane { position: absolute; left: 0; bottom: 6px; width: 46px; height: 46px; color: #fff; filter: drop-shadow(0 0 14px rgba(255, 15, 69, 0.7)); animation: dsp-fly 1.6s cubic-bezier(0.45, 0, 0.2, 1) infinite; }
.dsp-fly::before { content: ""; position: absolute; left: 6px; right: 6px; bottom: 18px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, transparent, rgba(255, 45, 90, 0.7), rgba(162, 75, 255, 0.7), transparent); opacity: 0.6; transform: rotate(-24deg); transform-origin: left; }
@keyframes dsp-fly {
  0% { transform: translate(0, 0) rotate(-8deg) scale(0.85); opacity: 0; }
  15% { opacity: 1; }
  70% { transform: translate(64px, -38px) rotate(4deg) scale(1); opacity: 1; }
  100% { transform: translate(84px, -50px) rotate(6deg) scale(0.7); opacity: 0; }
}
.dsp-prog { width: 100%; max-width: 240px; height: 6px; border-radius: 999px; background: rgba(255, 255, 255, 0.07); overflow: hidden; }
.dsp-prog i { display: block; width: 40%; height: 100%; border-radius: inherit; background: var(--grad); box-shadow: 0 0 12px rgba(255, 15, 69, 0.6); animation: dsp-prog 1.2s ease-in-out infinite; }
@keyframes dsp-prog { 0% { transform: translateX(-110%); } 100% { transform: translateX(260%); } }

/* enviado: check desenhando + número grande */
.dsp-done-ico { width: 76px; height: 76px; color: #7ef0a6; filter: drop-shadow(0 0 22px rgba(74, 222, 128, 0.45)); }
.dsp-check { width: 100%; height: 100%; }
.dsp-check circle { stroke-dasharray: 151; stroke-dashoffset: 151; animation: dsp-draw 0.6s var(--ease-out) forwards; }
.dsp-check path { stroke-dasharray: 36; stroke-dashoffset: 36; animation: dsp-draw 0.4s 0.45s var(--ease-out) forwards; }
@keyframes dsp-draw { to { stroke-dashoffset: 0; } }
.dsp-state .dsp-done-ico { animation: dsp-pop 0.5s var(--ease-out); }
@keyframes dsp-pop { 0% { transform: scale(0.6); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
.dsp-done-n { margin: 0; color: var(--muted); }
.dsp-done-n strong { font-family: var(--display); font-size: 2.6rem; font-weight: 600; letter-spacing: -0.05em; color: var(--ink); }
.dsp-done-acts { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; margin-top: 0.5rem; }
.dsp-done-acts .btn { border-radius: 999px; }

/* celular da prévia: o balão "sai" e volta com o selo de entregue */
.dsp-preview.is-sending .v2-phone-bubble { animation: dsp-bubble-out 1.2s var(--ease-out) infinite; }
@keyframes dsp-bubble-out { 0% { transform: translateY(0); opacity: 1; } 60% { transform: translateY(-14px); opacity: 0.25; } 100% { transform: translateY(0); opacity: 1; } }
.dsp-preview.is-sent .v2-phone-bubble { position: relative; box-shadow: 0 0 0 1px rgba(74, 222, 128, 0.45), 0 10px 26px -12px rgba(74, 222, 128, 0.6); }
.dsp-preview.is-sent .v2-phone-bubble::after { content: "✓ Enviado"; position: absolute; right: 8px; bottom: -20px; font-size: 0.6875rem; font-weight: 650; color: #7ef0a6; }

@media (prefers-reduced-motion: reduce) {
  .dsp-plane, .dsp-prog i, .dsp-preview.is-sending .v2-phone-bubble, .dsp-state .dsp-done-ico { animation: none; }
  .dsp-plane { left: 36px; opacity: 1; }
  .dsp-check circle, .dsp-check path { animation: none; stroke-dashoffset: 0; }
}

/* ——— Afiliados (docs/crm-afiliados/telas.md): prévia de WhatsApp, nó de WhatsApp, gaveta ——— */
.v2-phone.wa { background: #0b141a; }
.v2-phone.wa .v2-phone-head { justify-content: flex-start; gap: 0.55rem; text-align: left; }
.wa-av { flex: none; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: var(--grad-btn); color: #fff; font-size: 0.625rem; font-weight: 700; }
.wa-who { display: grid; line-height: 1.2; }
.wa-who b { color: var(--ink); font-weight: 600; font-size: 0.75rem; }
.wa-who small { color: var(--faint); font-size: 0.6875rem; }
.v2-phone.wa .v2-phone-bubble { position: relative; background: #202c33; color: #e9edef; border-radius: 4px 14px 14px 14px; padding: 0.55rem 0.7rem 1.15rem; white-space: pre-wrap; }
.wa-time { position: absolute; right: 0.55rem; bottom: 0.3rem; font-size: 0.625rem; color: #8696a0; }
.wa-img { display: grid; place-items: center; height: 110px; margin: -0.2rem -0.35rem 0.5rem; border-radius: 8px; background: repeating-linear-gradient(135deg, #2a3942 0 10px, #26343c 10px 20px); color: #8696a0; font-size: 0.75rem; }
.wa-doc { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 0.5rem; margin: -0.2rem -0.35rem 0.5rem; padding: 0.55rem 0.65rem; border-radius: 8px; background: #2a3942; color: #e9edef; font-size: 0.75rem; white-space: normal; }
.wa-doc .icon { width: 22px; height: 22px; color: #ff6b6b; }
.wa-doc span { overflow-wrap: anywhere; }
.wa-doc small { color: #8696a0; }
.wa-link { color: #53bdeb; text-decoration: underline; overflow-wrap: anywhere; }
.jb-node[data-channel="whatsapp"] { --c: #25d366; }
.jb-node[data-channel="whatsapp"].on { border-color: rgba(37, 211, 102, 0.55); box-shadow: 0 0 0 3px rgba(37, 211, 102, 0.12), var(--hi); }
.rec-tl .ev[data-kind="whatsapp"] { --c: #25d366; }
.af-sub { display: block; font-size: 0.75rem; color: var(--faint); margin-top: 0.15rem; }
.af-copy { display: inline-flex; align-items: center; gap: 0.35rem; }
.af-copy .icon { width: 14px; height: 14px; }
.af-hint { font-size: var(--fs-sm); color: var(--muted); margin: 0; }
.af-link { font-size: var(--fs-sm); color: var(--ink); overflow-wrap: anywhere; margin: 0; }
.af-block { display: grid; gap: 0.45rem; padding-top: 0.25rem; }
.af-field-err input { border-color: var(--danger) !important; }
.af-varchips { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.af-picks { list-style: none; display: grid; gap: 0.35rem; margin: 0; padding: 0; }
.af-picks a { display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.55rem 0.7rem; border-radius: 10px; border: 1px solid var(--line); color: var(--ink); text-decoration: none; }
.af-picks a:hover, .af-picks a:focus-visible { border-color: var(--line-strong); background: rgba(255, 255, 255, 0.04); }

/* Operador de tickets (lib/roles.js operador_tickets): só Tickets e Jornadas, só leitura */
.tc-ro-tickets [data-v2nav]:not([data-v2nav="tickets"]):not([data-v2nav="jornadas"]),
.tc-ro-tickets #btnSearch, .tc-ro-tickets #btnSearchBottom, .tc-ro-tickets #tbCreate,
.tc-ro-tickets a[href="#/jornadas/nova"], .tc-ro-tickets a[href$="/editar"],
.tc-ro-tickets .rec-head .btn { display: none !important; }
