/* Acabamentos da revisão de Darlan (29/10/2026, E13 rodada 3). Valem para os dois visuais; cores só por tokens. */

/* 11 · Texto solto com "i" = o mesmo aviso dos lançamentos (caixa com o "i" e o fundo de alerta suave). */
:is(.crypto-price-note, .crypto-manual-note, .backup-note, .crypto-bridge-life, .category-setup-foot, .install-guide-note, .support-example) {
  display: flex; gap: 10px; align-items: flex-start; margin-block: 12px; padding: 12px 14px; border-radius: 14px;
  background: color-mix(in srgb, var(--c-accent) 6%, var(--c-surface)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-accent) 14%, transparent);
  color: var(--n-800); font-size: 13.5px; line-height: 1.45;
}
:is(.crypto-price-note, .crypto-manual-note, .backup-note, .crypto-bridge-life, .category-setup-foot, .install-guide-note, .support-example) > svg { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 1px; color: var(--c-accent); }

/* 2 · Seletor Despesas/Receitas das Categorias no padrão do Balanço (linha inteira, a escolhida acesa na cor do tipo). */
.finance-intro .kind-switch.transaction-mode-tabs { grid-column: 1 / -1; width: 100%; margin: 14px 0 0; padding: 3px; border-radius: 16px; background: var(--c-surface); box-shadow: inset 0 0 0 1px var(--c-border); }
.kind-switch.transaction-mode-tabs a { flex: 1; text-align: center; border-radius: 12px; padding: 9px 12px; }
.kind-switch.transaction-mode-tabs a.is-active { color: var(--c-on-color); box-shadow: none; }

/* 1 · Painel que abre embaixo do cartão no Início (Contas e Cripto): números em quadros com a cor do assunto e ações
   na cor do lado (antes um bloco preto e o outro claro). */
.wallet-stack-more { padding: 12px 2px 4px; }
.wallet-stack-more dl div { position: relative; overflow: hidden; padding: 11px 13px; border-radius: 16px; background: var(--n-0); box-shadow: inset 0 0 0 1px var(--n-150); }
.wallet-stack-more dl div::before { content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0; background: var(--c-accent); opacity: .5; }
.wallet-stack-more dl div:has(.is-income) { background: radial-gradient(90% 100% at 0% 0%, color-mix(in srgb, var(--c-success) 10%, transparent), transparent 70%), var(--n-0); }
.wallet-stack-more dl div:has(.is-income)::before { background: var(--c-success); opacity: 1; }
.wallet-stack-more dl div:has(.is-expense) { background: radial-gradient(90% 100% at 0% 0%, color-mix(in srgb, var(--c-danger) 10%, transparent), transparent 70%), var(--n-0); }
.wallet-stack-more dl div:has(.is-expense)::before { background: var(--c-danger); opacity: 1; }
.wallet-stack-more dd { font-size: 18px; }
.wallet-stack-more a { border-radius: 14px; padding: 11px; }
.wallet-stack-more a:first-child { background: var(--c-accent); color: var(--c-on-accent); box-shadow: 0 8px 18px -12px var(--c-accent); }
.wallet-stack-more a:not(:first-child) { background: var(--n-0); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-accent) 35%, var(--n-150)); color: var(--n-900); }
:root[data-look="aurora"] .wallet-stack-more dl div { border: 1px solid transparent; box-shadow: none; }
:root[data-look="aurora"] .wallet-stack-more dl div:not(:has(.is-income, .is-expense)) { background: linear-gradient(var(--n-0), var(--n-0)) padding-box, linear-gradient(140deg, color-mix(in srgb, var(--c-accent) 55%, transparent), var(--n-150) 35%, var(--n-150) 70%) border-box; }

/* 3 · Cards dos lançamentos por conversa (câmbio, cripto) com a mesma casca dos outros cards no Aurora. */
:root[data-look="aurora"] .crypto-step { --aur: var(--c-accent); border: 1px solid transparent; box-shadow: 0 16px 34px -28px color-mix(in srgb, var(--c-accent) 70%, var(--c-deep-900));
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--c-accent) 85%, var(--c-on-color)), transparent) 22px 0 / 42% 1px no-repeat padding-box, radial-gradient(70% 90% at 0% 0%, color-mix(in srgb, var(--c-accent) 12%, transparent), transparent 70%) padding-box, linear-gradient(var(--n-0), var(--n-0)) padding-box, linear-gradient(140deg, color-mix(in srgb, var(--c-accent) 60%, transparent), var(--n-150) 30%, var(--n-150) 70%, color-mix(in srgb, var(--c-accent) 24%, transparent)) border-box; }

/* 7 · Barras das Contas e Cartões (participação, entradas, saídas) no mesmo desenho do balanço: grossa, régua, brilho. */
.center-bar { height: 12px; background: color-mix(in srgb, var(--bar-tone) 8%, var(--n-150)); filter: drop-shadow(0 3px 6px color-mix(in srgb, var(--bar-tone) 28%, transparent)); }
.center-bar::-webkit-progress-bar { background: repeating-linear-gradient(90deg, transparent 0 calc(25% - 1px), color-mix(in srgb, var(--n-600) 20%, transparent) calc(25% - 1px) 25%), color-mix(in srgb, var(--bar-tone) 8%, var(--n-150)); }
.center-bar::-webkit-progress-value { background: radial-gradient(circle at calc(100% - 6px) 50%, color-mix(in srgb, var(--c-on-color) 90%, transparent) 0 2.5px, transparent 3.5px), linear-gradient(90deg, color-mix(in srgb, var(--bar-tone) 55%, transparent), var(--bar-tone)); }
.center-bar::-moz-progress-bar { background: radial-gradient(circle at calc(100% - 6px) 50%, color-mix(in srgb, var(--c-on-color) 90%, transparent) 0 2.5px, transparent 3.5px), linear-gradient(90deg, color-mix(in srgb, var(--bar-tone) 55%, transparent), var(--bar-tone)); }

/* 14 · Atalhos (perfil e onde mais aparecerem): cada um com a sua cor, o ícone cheio em degradê, uma órbita
   pontilhada no canto e a seta. Mesma linguagem dos cards. */
.profile-shortcut-grid a { --shortcut-tone: var(--c-accent); grid-template-columns: 44px minmax(0, 1fr) 20px; grid-template-rows: auto auto; column-gap: 12px; align-items: center; padding: 16px; }
.profile-shortcut-grid a:has(.is-card) { --shortcut-tone: var(--c-card); } .profile-shortcut-grid a:has(.is-category) { --shortcut-tone: var(--c-category-purple); }
.profile-shortcut-grid a:has(.is-tag) { --shortcut-tone: var(--c-category-teal); } .profile-shortcut-grid a:has(.is-security) { --shortcut-tone: var(--c-success); }
.profile-shortcut-grid a:has(.is-admin) { --shortcut-tone: var(--c-warning); }
.profile-shortcut-grid .profile-shortcut-icon { grid-row: 1 / 3; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; color: var(--c-on-color); background: linear-gradient(140deg, var(--shortcut-tone), color-mix(in srgb, var(--shortcut-tone) 60%, var(--c-deep-900))); box-shadow: 0 10px 20px -12px var(--shortcut-tone); }
.profile-shortcut-grid .profile-shortcut-icon svg { width: 20px; height: 20px; }
.profile-shortcut-grid a strong { grid-column: 2; align-self: end; } .profile-shortcut-grid a small { grid-column: 2; align-self: start; }
.profile-shortcut-grid a::before { content: ""; position: absolute; z-index: -1; right: -26px; top: -26px; width: 88px; height: 88px; border-radius: 50%; border: 1.5px dashed color-mix(in srgb, var(--shortcut-tone) 40%, transparent); box-shadow: inset 0 0 0 14px color-mix(in srgb, var(--shortcut-tone) 5%, transparent); }
.profile-shortcut-grid a::after { content: "›"; grid-column: 3; grid-row: 1 / 3; position: static; width: auto; height: auto; background: none; color: color-mix(in srgb, var(--shortcut-tone) 70%, var(--n-600)); font-size: 22px; font-weight: 600; }

/* 12 · Espaço vago ao lado dos cartões (Contas e Cripto): órbita suave, o desenho e um atalho para criar o que falta. */
.grid-filler-box { border: 1.5px dashed color-mix(in srgb, var(--c-accent) 26%, transparent);
  background: radial-gradient(60% 70% at 50% 42%, color-mix(in srgb, var(--c-accent) 9%, transparent), transparent 70%), repeating-radial-gradient(circle at 50% 42%, transparent 0 46px, color-mix(in srgb, var(--c-accent) 7%, transparent) 46px 47px); }
.grid-filler.is-link { pointer-events: auto; text-decoration: none; transition: border-color .2s, transform .2s; }
.grid-filler.is-link:hover .grid-filler-box { border-color: color-mix(in srgb, var(--c-accent) 55%, transparent); transform: translateY(-2px); }
.grid-filler-cta { padding: 8px 16px; border-radius: 99px; background: color-mix(in srgb, var(--c-accent) 12%, var(--n-0)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-accent) 30%, transparent); color: color-mix(in srgb, var(--c-accent) 85%, var(--n-900)); font-size: 13.5px; font-weight: 750; }

/* 16 · Busca no fim da janela de mensagens. */
.assistant-dock-search { position: sticky; bottom: 0; padding: 12px 16px calc(14px + env(safe-area-inset-bottom)); background: linear-gradient(0deg, var(--c-surface) 70%, transparent); }
.assistant-dock-search .search-field { width: 100%; margin: 0; }
/* No Aurora, a aba acesa mantém a cor do tipo (despesa vermelha, receita verde, transferência azul-claro). */
:root[data-look="aurora"] .transaction-mode-tabs a.is-active.is-expense { background: linear-gradient(180deg, color-mix(in srgb, var(--c-danger) 85%, var(--c-on-color)), var(--c-danger)); box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--c-danger) 80%, transparent); }
:root[data-look="aurora"] .transaction-mode-tabs a.is-active.is-income { background: linear-gradient(180deg, color-mix(in srgb, var(--c-success) 85%, var(--c-on-color)), var(--c-success)); box-shadow: 0 8px 18px -10px color-mix(in srgb, var(--c-success) 80%, transparent); }
:root[data-look="aurora"] .transaction-mode-tabs a.is-active.is-transfer { background: linear-gradient(180deg, color-mix(in srgb, var(--c-transfer) 85%, var(--c-on-color)), var(--c-transfer)); }

/* Rodada 4 (Darlan, 29/10) · Nenhum texto solto: todo aviso ganha caixa e ícone pelo objetivo. "i" = informação,
   triângulo = alerta (algo pode se perder), lâmpada = dica. O ícone vem por máscara (sem estilo embutido) e o texto
   continua em linha (links e negrito no meio da frase não quebram). Componente novo: wallet_note() (ui_components.php). */
:root {
  --mw-ico-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E");
  --mw-ico-alert: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E");
  --mw-ico-tip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5M9 18h6M10 22h4'/%3E%3C/svg%3E");
  --mw-ico-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3C/svg%3E");
}
.mw-note, :is(.profile-photo-hint, .transaction-balance-explainer, .account-hero-note, .crypto-review-note, .crypto-target-note, .session-note, .pending-earlier-note, .goal-edit-help, .user-sheet-note, .slot-note, .pay-brl-explain, .crypto-entry-hint, .support-sim-note, .mkt-card-note):not(:empty) {
  --mw-tone: var(--c-accent); --mw-ico: var(--mw-ico-info);
  position: relative; display: block; margin-block: 12px; margin-inline: 0; padding: 11px 14px 11px 42px; border-radius: 14px; text-align: left;
  background: color-mix(in srgb, var(--mw-tone) 7%, var(--c-surface)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--mw-tone) 16%, transparent);
  color: var(--n-800); font-size: 13.5px; line-height: 1.45;
}
.mw-note::before, :is(.profile-photo-hint, .transaction-balance-explainer, .account-hero-note, .crypto-review-note, .crypto-target-note, .session-note, .pending-earlier-note, .goal-edit-help, .user-sheet-note, .slot-note, .pay-brl-explain, .crypto-entry-hint, .support-sim-note, .mkt-card-note):not(:empty)::before {
  content: ""; position: absolute; left: 14px; top: 12px; width: 18px; height: 18px; background: var(--mw-tone);
  -webkit-mask: var(--mw-ico) center / contain no-repeat; mask: var(--mw-ico) center / contain no-repeat;
}
.mw-note.is-alert, .slot-note, .crypto-target-note { --mw-tone: var(--c-warning); --mw-ico: var(--mw-ico-alert); }
.mw-note.is-tip, .support-sim-note, .mkt-card-note { --mw-tone: var(--c-warning); --mw-ico: var(--mw-ico-tip); }
.mw-note.is-lock { --mw-tone: var(--c-success); --mw-ico: var(--mw-ico-lock); }
.crypto-entry-hint:not(:empty) { font-size: 12.5px; }
.account-hero-note:not(:empty) { margin-top: 0; }

/* 16 · O banner do outro lado leva as cores daquele lado (Darlan, 29/10): o "Wallets" nas Contas é dourado e o "Contas"
   no Cripto é azul. O Aurora pinta o botão principal com --c-accent; aqui o botão usa o acento do outro lado. */
.crypto-banner.is-bridge:not(.is-fiat) footer .btn-primary { --c-accent: var(--cripto-c-accent); background-color: var(--cripto-c-accent); color: var(--cripto-n-900); }
.crypto-banner.is-fiat footer .btn-primary { --c-accent: var(--fiat-c-accent); background-color: var(--fiat-c-accent); color: var(--c-on-color); }
.crypto-banner.is-bridge:not(.is-fiat) footer .btn-secondary { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cripto-c-accent) 40%, transparent); }
.crypto-banner.is-fiat footer .btn-secondary { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--fiat-c-accent) 45%, transparent); }

/* 14 · Barra de baixo: a tela atual com o mesmo destaque nos dois lados (no Cripto o fundo ficava branco, sem a cor). */
:root[data-mode="cripto"] .mobile-nav .mobile-nav-item.is-active, :root[data-menu][data-mode="cripto"] .mobile-nav .mobile-nav-item.is-active { color: var(--cripto-c-accent); background: color-mix(in srgb, var(--cripto-c-accent) 15%, transparent); border-color: color-mix(in srgb, var(--cripto-c-accent) 36%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cripto-c-accent) 34%, transparent); }

/* 5 e 11 · O painel ao lado do cartão (Contas, Cartões, fatura, Wallets e cartões cripto; Darlan, 29/10): continua a
   lista de linhas (os quadros foram recusados), só estilizada: divisória em degradê na cor do lado, ponto de cor antes
   do rótulo, valor em destaque à direita, a linha acende ao passar o mouse; ganho em verde e perda em vermelho. */
.account-hero-side .account-hero-details { border-top: 0; }
.account-hero-side .account-hero-details > div { position: relative; align-items: center; padding: 12px 10px; border-bottom: 0; border-radius: 12px; transition: background var(--motion-fast, .15s) ease; }
.account-hero-side .account-hero-details > div::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 0; height: 1px; background: linear-gradient(90deg, color-mix(in srgb, var(--c-accent) 45%, transparent), var(--c-border) 35%, var(--c-border) 75%, transparent); }
.account-hero-side .account-hero-details > div:last-child::after { display: none; }
.account-hero-side .account-hero-details > div:hover { background: color-mix(in srgb, var(--c-accent) 6%, transparent); }
.account-hero-side .account-hero-details dt { display: inline-flex; align-items: center; gap: 10px; color: var(--n-600); font-size: 13.5px; font-weight: 600; }
.account-hero-side .account-hero-details dt::before { content: ""; flex: 0 0 auto; width: 7px; height: 7px; border-radius: 50%; background: var(--c-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 16%, transparent); }
.account-hero-side .account-hero-details dd { color: var(--n-900); font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.account-hero-side .account-hero-details > div:has(dd.is-income) dt::before { background: var(--c-success); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-success) 16%, transparent); }
.account-hero-side .account-hero-details > div:has(dd.is-expense) dt::before { background: var(--c-danger); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-danger) 16%, transparent); }
.account-hero-side .account-hero-details dd.is-income { color: var(--c-success); } .account-hero-side .account-hero-details dd.is-expense { color: var(--c-danger); }

/* 12 · Respiro entre blocos (Painel e telas com quadros + abas): os quadros encostavam nas abas e a lista vazia no que
   vinha depois. */
.view-admin_panel .panel-section > .panel-tiles, .mkt-tiles + .mkt-tabs, .wallet-kpi-grid + .transaction-mode-tabs { margin-top: 0; margin-bottom: 18px; }
.view-admin_panel .panel-section > .panel-tiles + .panel-tabs { margin-top: 18px; }
.view-admin_panel .panel-section > .mkt-empty + *, .view-admin_panel .panel-section > .panel-tabs + * { margin-top: 4px; }
.view-admin_panel .panel-section > .mkt-empty { margin-bottom: 18px; }
.view-admin_panel .panel-section > div > .mkt-empty, .view-admin_panel .panel-section .mkt-sub + .mkt-empty { margin-bottom: 6px; }

/* Trilha · Do seu jeito, neste aparelho (29/10): avisos, aparência e visual na preparação do aparelho. */
.trail-prefs { display: grid; gap: 8px; margin: 14px 0 6px; padding: 14px; border-radius: 18px; background: color-mix(in srgb, var(--c-accent) 5%, var(--c-surface)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-accent) 14%, transparent); }
.trail-prefs-title { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; font-weight: 750; color: var(--n-900); } .trail-prefs-title svg { width: 17px; height: 17px; color: var(--c-accent); } .trail-prefs-title small { font-weight: 600; color: var(--n-600); }
.trail-pref { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; padding: 10px 0; border-top: 1px solid var(--c-border); } .trail-pref:first-of-type { border-top: 0; }
.trail-pref .onboarding-step-text { flex: 1 1 200px; min-width: 0; }
.trail-seg { display: inline-flex; gap: 2px; padding: 3px; border-radius: 12px; background: var(--n-100); }
.trail-seg button { border: 0; padding: 7px 12px; border-radius: 9px; background: none; color: var(--n-600); font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.trail-seg button.is-on { background: var(--n-0); color: var(--c-accent); box-shadow: 0 1px 3px color-mix(in srgb, var(--c-deep-900) 18%, transparent); }

/* Toque (Darlan, 29/10): o iPhone dá zoom ao focar campo com letra menor que 16 px. Em toque, os campos ficam em 16 px. */
@media (pointer: coarse) {
  input:is([type="search"], [type="text"], [type="email"], [type="password"], [type="number"], [type="tel"], [type="url"], [type="date"], :not([type])), select, textarea { font-size: max(16px, 1em); }
}

/* Mensagens do topo (Darlan, 29/10): o quadro tem altura fixa e as mensagens se acomodam de baixo para cima, junto da
   logo, como numa conversa (antes a primeira nascia no alto, longe da logo). */
.assistant.is-feed .assistant-thread { display: flex; flex-direction: column; gap: 10px; }
.assistant.is-feed .assistant-thread > :first-child { margin-top: auto; }
.assistant.is-feed .assistant-thread > * { flex: none; }

/* Aviso de valores ocultos (assets/js/privacy_hint.js, Darlan, 30/10). */
.privacy-hint { position: fixed; z-index: 90; left: 50%; top: calc(env(safe-area-inset-top, 0px) + 78px); display: flex; align-items: center; gap: 12px; max-width: min(92vw, 460px); padding: 10px 10px 10px 16px; border-radius: 18px; background: var(--c-deep-900); color: var(--c-on-color); box-shadow: 0 18px 40px -18px var(--c-deep-900), inset 0 0 0 1px color-mix(in srgb, var(--c-on-color) 12%, transparent); font-size: 14px; opacity: 0; transform: translate(-50%, -12px); pointer-events: none; transition: opacity .25s ease, transform .25s ease; }
.privacy-hint.is-on { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.privacy-hint b { margin-right: 4px; }
.privacy-hint-show { flex: none; min-height: 36px; padding: 0 14px; border: 0; border-radius: 12px; background: var(--c-accent); color: var(--c-on-accent); font: inherit; font-weight: 750; cursor: pointer; }
.privacy-toggle.is-hint { animation: privacy-pulse 1.2s ease 2; }
@keyframes privacy-pulse { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--c-accent) 70%, transparent); } 100% { box-shadow: 0 0 0 14px transparent; } }
@media (prefers-reduced-motion: reduce) { .privacy-hint { transition: none; } .privacy-toggle.is-hint { animation: none; outline: 3px solid var(--c-accent); } }
.privacy-hint { width: min(92vw, 420px); }
.privacy-hint > span { flex: 1 1 auto; min-width: 0; line-height: 1.35; }
.privacy-hint > span b { display: block; }

/* Lançamento repetido (assets/js/duplicate_check.js, Darlan, 30/10). */
.dup-list { display: grid; gap: 6px; margin: 4px 0 14px; padding: 0; list-style: none; text-align: left; }
.dup-list li { padding: 10px 12px; border-radius: 12px; background: color-mix(in srgb, var(--c-warning) 10%, var(--n-0)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-warning) 30%, transparent); font-size: 14px; font-weight: 600; color: var(--n-900); }
.dup-layer .wallet-dialog { width: min(440px, calc(100vw - 32px)); max-width: calc(100vw - 32px); box-sizing: border-box; }
.dup-layer .wallet-dialog > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; width: 100%; }
.dup-layer .wallet-dialog > div > * { display: inline-flex; align-items: center; justify-content: center; min-width: 0; white-space: normal; text-align: center; text-decoration: none; }
@media (max-width: 560px) { .dup-layer .wallet-dialog > div { grid-template-columns: 1fr; } .dup-layer [data-dup-go] { order: -1; } }

/* Deslizar o lançamento (assets/js/swipe_actions.js, Darlan, 30/10). A linha continua filha direta do cartão do dia
   (espaçamento e linha do tempo intactos); a bandeja fica por cima, ancorada nela, e abre da direita para a esquerda.
   Celular: a linha desliza. Computador (linha larga): só o valor abre espaço; a descrição fica. */
[data-swipe-list] { position: relative; }
[data-swipe-list] a[data-swipe] { transition: transform .38s cubic-bezier(.22, .8, .2, 1), padding-right .38s cubic-bezier(.22, .8, .2, 1); touch-action: pan-y; }
[data-swipe-list] a[data-swipe].is-swipe-dragging { transition: none; }
.transaction-day-card:has(> a.is-swiped), .credit-purchase-day:has(> a.is-swiped), .crypto-asset-list:has(> a.is-swiped) { overflow: clip; }
.swipe-actions { position: absolute; z-index: 3; display: none; justify-content: flex-end; width: 0; overflow: hidden; transition: width .38s cubic-bezier(.22, .8, .2, 1); }
.swipe-actions.is-on { display: flex; } .swipe-actions.is-dragging { transition: none; }
.swipe-btn { display: grid; flex: none; place-items: center; align-content: center; gap: 4px; width: 74px; border: 0; color: var(--c-on-color); font: inherit; font-size: 11.5px; font-weight: 750; cursor: pointer; }
.swipe-btn .wallet-icon { width: 20px; height: 20px; }
.swipe-btn.is-pay { background: var(--c-success); } .swipe-btn.is-edit { background: var(--c-accent); color: var(--c-on-accent); }
.swipe-btn.is-cancel { background: var(--c-warning); color: var(--c-deep-900); } .swipe-btn.is-delete { background: var(--c-danger); }
@media (prefers-reduced-motion: reduce) { [data-swipe-list] a[data-swipe], .swipe-actions { transition: none; } }
/* Bandeja aberta: o chat e a busca flutuantes somem, para não cobrir os botões da última linha. */
body.is-swipe-open .assistant-dock.is-on, body.is-swipe-open .search-fab.is-on { opacity: 0; transform: translateY(14px) scale(.9); pointer-events: none; }
.swipe-btn.is-refund { background: var(--n-600); }
[data-swipe-list] { overscroll-behavior-x: contain; } /* o deslize no trackpad não vira "voltar" */

/* Selo de série (parcela 7/10, repetição 3/12, Fixa) no começo da segunda linha do lançamento (Darlan, 30/10): o
   texto longo da descrição não esconde mais a parcela. Lançamento único não tem selo. */
.series-chip { display: inline-flex; align-items: center; gap: 3px; margin-right: 6px; padding: 0 6px 0 5px; border-radius: 999px; font-size: .9em; font-weight: 750; line-height: 1.55; vertical-align: 1px; white-space: nowrap; color: var(--c-accent); background: color-mix(in srgb, var(--c-accent) 13%, transparent); font-variant-numeric: tabular-nums; }
.series-chip .wallet-icon { width: 11px; height: 11px; flex: none; }
.series-chip.is-fixed { color: var(--c-warning-text); background: var(--c-warning-bg); }
.push-types-note { margin: 0 0 6px; color: var(--n-600); font-size: 13px; line-height: 1.45; }
