/* ============================================================================
   banco BV / FENAUTO 2026 - tema Azul (D-02, ARQUITETURA 4.4). Um unico arquivo.
   Ativado por <html data-theme="azul">. Carregar DEPOIS de tokens.css e base.css:
     <link rel="stylesheet" href="../shared/css/tema-azul.css">
   Sem o atributo, nenhuma regra deste arquivo se aplica: os apps v2 continuam no tema Branco.
   Todo seletor comeca por [data-theme="azul"] (teste: shared/test/tema-azul.test.mjs); os @keyframes
   az-* sao inofensivos sem o atributo.
   Pacote oficial do designer (D-75): fundo, logo, moldura e cartao de brindes vem de shared/assets/sprites/*.png;
   fontes BV Leve Titulos em tokens.css. Sem amarelo nem ambar em lugar nenhum. Componentes novos do pacote
   (icones, moldura da foto, select, cartoes) ficam em tema-azul-pacote.css (limite de linhas deste arquivo).
   Atributos opcionais: <html data-layout="amplo"> (coluna larga), <html data-modo="totem"> (fundo do
   totem), <html data-sentido="avancar|voltar|nenhum"> (BvRota), <body data-decor="topo"> (fundo com a
   forma branca no canto superior esquerdo, o de Ativacao e Download).
   Movimento: so transform e opacity; telas 200 a 300 ms; prefers-reduced-motion desliga no fim.
   Componentes novos: .az-saldo .az-opcao .az-seletor .az-tabs .az-qr .az-palco-qr .az-scan .az-anel
   .az-sucesso .az-estado .az-banner-rede .az-foto .az-duas-colunas (lista completa: README-tema.md).
   ============================================================================ */

:root[data-theme="azul"] {
  /* paleta amostrada das telas (docs/v3/telas) */
  --az-fundo-0: #0139AC;  --az-fundo-1: #0A45C0;  --az-profundo: #002BAB;
  --az-brilho: #2E7CF6;   --az-brilho-hover: #2468D8;  --az-card-azul: #1953D7;
  --az-linha: #4F8DF7;    --az-claro: #D0E3FF;    --az-scrim-qr: #8095D5;
  --card-inner: #D0E3FF;  --ok-dot: #30D328;

  /* semanticos do tema (ARQUITETURA 4.4) */
  --bg: var(--az-fundo-0);
  --bg-grad: linear-gradient(180deg, #0139AC, #0A45C0);
  --bg-grad-totem: linear-gradient(180deg, #00219A 0%, #02279B 30%, #0049BF 100%);
  --bg-camada: var(--bg-grad);
  --bg-sprite: url("../assets/sprites/Mobile-bg.png");  --bg-sprite-largo: url("../assets/sprites/Ativacao-bg.png");
  --font: var(--font-titulo);  --fw-black: 700;
  --titulo: #FFFFFF;
  --campo-label: #FFFFFF;
  --texto-suave: rgba(255, 255, 255, 0.86);
  --on-bg: #FFFFFF;
  --btn-bg: var(--az-brilho);  --btn-bg-hover: var(--az-brilho-hover);  --btn-fg: #FFFFFF;
  --btn-radius: 6px 6px 22px 6px;  --btn-h: 48px;

  /* remapeamento dos tokens v2 */
  --surface: #FFFFFF;
  --text: #15191E;
  --text-muted: #546373;
  --primary: var(--az-profundo);
  --primary-hover: #00208A;
  --accent: var(--bv-cyan);
  --border: #CAD0F6;
  --focus-ring: 0 0 0 3px #FFFFFF, 0 0 0 6px #31C7ED;
  --radius-card: 6px 6px 30px 6px;
  --radius-btn: var(--btn-radius);
  --radius-input: 8px 8px 22px 8px;
  --radius-chip: 999px;
  --shadow-card: 0 8px 24px rgba(0, 18, 84, 0.28);
  --shadow-pop: 0 16px 48px rgba(0, 12, 60, 0.5);
  --decor-h: clamp(72px, 15vh, 140px);
  --tabbar-h: 64px;
  --ease-az: cubic-bezier(0.22, 1, 0.36, 1);
  --dur-tela: 240ms;  --dur-fade: 200ms;  --dur-pop: 360ms;
  --err-claro: #FFD6DC;
  /* linha do topo (logo e Voltar de 44 px) e espacamento: um so lugar para todos os apps */
  --az-gutter: clamp(20px, 8vw, 32px);  --az-topo-pt: 28px;  --az-topo-pb: 8px;  --az-logo-w: 76px;  --az-logo-h: 56px;  --az-voltar-h: 44px;
  --az-tela-pt: 20px;  --az-gap: 16px;  --az-fs-h1: clamp(28px, 10vw, 44px);  --az-fs-sub: clamp(16px, 4.6vw, 18px);
  color-scheme: light;
}
:root[data-theme="azul"][data-layout="amplo"] { --col-max: 960px; }

/* ---------------- fundo, padrao e decoracao ---------------- */
html[data-theme="azul"] {
  background-color: var(--az-fundo-0);
  background-image: var(--bg-grad);
  background-repeat: no-repeat;
  background-attachment: scroll;
  min-height: 100%;
}
html[data-theme="azul"][data-modo="totem"] { background-image: var(--bg-grad-totem); --bg-camada: var(--bg-grad-totem); }
[data-theme="azul"] body {
  position: relative; margin: 0; background: transparent; color: var(--on-bg);
  font-size: 16px; overflow-x: hidden; overflow-x: clip;   /* iOS 15 nao conhece clip: hidden propaga para o viewport */
}
/* camada fixa do pacote: Mobile-bg.png (402 x 714, ja traz o padrao e as formas do rodape) no celular; Ativacao-bg.png (1080 x 1920) acima de 600 px
   e nas paginas data-decor="topo" (traz a forma branca do canto). cover, nunca distorce; nunca interfere no toque */
/* fundo FIXO: a camada tem a altura do viewport grande (lvh), entao nao muda de tamanho nem "cai" quando a barra do navegador do celular
   aparece ou some; o degrade vem junto nela, so o conteudo rola por cima */
[data-theme="azul"] body::before { content: ""; position: fixed; top: 0; left: 0; right: 0; height: 100vh; height: 100lvh; z-index: -1; pointer-events: none;
  background: var(--bg-sprite) center bottom / cover no-repeat, var(--bg-camada); transform: translateZ(0); }
html[data-theme="azul"] { overscroll-behavior-y: none; }
@media (min-width: 601px) { [data-theme="azul"] body::before { background-image: var(--bg-sprite-largo), var(--bg-camada); } }
[data-theme="azul"] body[data-decor~="topo"]::before { background-image: var(--bg-sprite-largo), var(--bg-camada); background-position: center top, 0 0; }
/* paisagem (PC, notebook): as formas dos cantos ficariam sobre o texto; sem corte nas formas, so o padrao */
@media (min-width: 601px) and (orientation: landscape) { [data-theme="azul"] body::before, [data-theme="azul"] body[data-decor~="topo"]::before { background-position: center 45%, 0 0; } }
/* paginas de quiosque (totem, check-in da IA): sem selecao, sem menu de toque longo, sem puxar para atualizar */
[data-theme="azul"] body.quiosque { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; overscroll-behavior: none; touch-action: manipulation; }
[data-theme="azul"] body.quiosque .input { -webkit-user-select: text; user-select: text; }
[data-theme="azul"] body.app { min-height: 100vh; min-height: 100dvh; background: transparent; }

/* ---------------- topo: so o logo sobre o fundo ---------------- */
[data-theme="azul"] .topo { background: transparent; color: var(--on-bg); min-height: 0; overflow: visible; }
[data-theme="azul"] .topo-inner { min-height: 0; justify-content: space-between; padding: var(--az-topo-pt) var(--az-gutter) var(--az-topo-pb); }
[data-theme="azul"] .topo .logo { width: var(--az-logo-w); height: var(--az-logo-h); fill: #FFFFFF; }
/* logo oficial (Ativacao-LogoBV-branco.png, 240 x 177, exibido em 76 x 56: nitido em tela de alta densidade e no totem): o <svg><use> dos apps vira o sprite por CSS; <img class="az-logo"> tambem serve */
[data-theme="azul"] svg.az-logo, [data-theme="azul"] .topo svg.logo { background: url("../assets/sprites/Ativacao-LogoBV-branco.png") left center / contain no-repeat; }
[data-theme="azul"] svg.az-logo > use, [data-theme="azul"] .topo svg.logo > use { display: none; }
[data-theme="azul"] .topo-label { color: var(--texto-suave); }
[data-theme="azul"] .topo-titulo { color: var(--titulo); }
[data-theme="azul"] .topo-acao { border-color: rgba(255, 255, 255, 0.5); }
[data-theme="azul"] .listras { display: none; }
[data-theme="azul"] .az-logo { display: block; width: var(--az-logo-w); height: var(--az-logo-h); fill: #FFFFFF; object-fit: contain; object-position: left center; }
[data-theme="azul"] .az-voltar {
  display: inline-flex; align-items: center; gap: 6px; min-width: 44px; min-height: 44px; padding: 0 10px 0 6px; border: 0; border-radius: 10px;
  background: transparent; color: #FFFFFF; font-size: 20px; font-weight: var(--fw-black); cursor: pointer; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
/* Voltar na linha do logo (D-71), sempre a direita (44 x 44). Mesmo botao e mesmos ids em tres posicoes: 1) filho de .topo-inner (camiseta);
   2) filho direto de .tela com cabecalho .topo: sobe para a linha do logo (absoluto na tela, nunca fixed); 3) .tela com .az-logo propria: linha desse logo. */
[data-theme="azul"] .topo-inner > .az-voltar { flex: 0 0 auto; align-self: center; margin: 0 -10px 0 auto; }
[data-theme="azul"] .tela { position: relative; }
[data-theme="azul"] .tela > .az-voltar { position: absolute; z-index: 2; margin: 0; right: calc(var(--az-gutter) - 10px); top: calc((var(--az-logo-h) - var(--az-voltar-h)) / 2 - var(--az-logo-h) - var(--az-topo-pb)); }
[data-theme="azul"] .tela > .az-logo ~ .az-voltar { top: calc(var(--az-tela-pt) + (var(--az-logo-h) - var(--az-voltar-h)) / 2); }
[data-theme="azul"] .az-voltar::before {
  content: ""; width: 12px; height: 12px; border: solid #FFFFFF; border-width: 0 0 3px 3px; transform: rotate(45deg); margin: 0 4px 0 6px;
}

/* ---------------- telas e tipografia ---------------- */
[data-theme="azul"] .tela { gap: var(--az-gap); padding: var(--az-tela-pt) var(--az-gutter) calc(var(--decor-h) + 16px + env(safe-area-inset-bottom, 0px)); }
[data-theme="azul"] .tela h1, [data-theme="azul"] .tela h2, [data-theme="azul"] .az-titulo { font-family: var(--font-titulo); font-weight: 700; }
[data-theme="azul"] .tela h1 { margin: 8px 0 0; font-size: var(--az-fs-h1); line-height: 1.06; color: var(--titulo); letter-spacing: 0; }
[data-theme="azul"] .tela h2 { font-size: 24px; color: var(--titulo); }
[data-theme="azul"] .tela p, [data-theme="azul"] .az-sub { font-size: var(--az-fs-sub); font-weight: 300; line-height: 1.35; color: var(--texto-suave); }
[data-theme="azul"] .tela .az-saudacao { font-size: 22px; color: var(--texto-suave); }
[data-theme="azul"] .rotulo-secao { color: var(--texto-suave); letter-spacing: var(--track-caps); }
[data-theme="azul"] a { color: #FFFFFF; text-decoration-thickness: 2px; text-underline-offset: 3px; }
[data-theme="azul"] .muted { color: var(--texto-suave); }
[data-theme="azul"] .cartao .muted, [data-theme="azul"] .linha .muted, [data-theme="azul"] .folha .muted, [data-theme="azul"] .az-opcao-corpo .muted { color: var(--text-muted); }
[data-theme="azul"] .passos i { background: rgba(255, 255, 255, 0.28); }
[data-theme="azul"] .passos i.feito { background: var(--bv-cyan); }
[data-theme="azul"] .passos i.atual { background: #FFFFFF; }

/* ---------------- botoes (Entrar, Cadastrar, Voltar, Confirmar) ---------------- */
[data-theme="azul"] .btn {
  position: relative; min-height: 48px; background: var(--btn-bg); color: var(--btn-fg); border: 2px solid transparent;
  font-family: var(--font-titulo); font-weight: 700; font-size: 20px; letter-spacing: 0; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  transition: background var(--dur-fast) var(--ease-az), transform 120ms var(--ease-az), opacity var(--dur-fast), box-shadow var(--dur-fast);
}
@media (hover: hover) { [data-theme="azul"] .btn:hover { background: var(--btn-bg-hover); } }
[data-theme="azul"] .btn:active { transform: scale(0.985); }
[data-theme="azul"] .btn:focus-visible { box-shadow: var(--focus-ring); }
[data-theme="azul"] .btn-secondary, [data-theme="azul"] .btn-on-blue { background: #FFFFFF; color: var(--az-profundo); border-color: var(--az-profundo); }
@media (hover: hover) { [data-theme="azul"] .btn-secondary:hover, [data-theme="azul"] .btn-on-blue:hover { background: var(--az-claro); } }
[data-theme="azul"] .btn-ghost { background: transparent; color: #FFFFFF; border-color: transparent; }
@media (hover: hover) { [data-theme="azul"] .btn-ghost:hover { background: rgba(255, 255, 255, 0.14); } }
[data-theme="azul"] .btn-perigo { background: #FFFFFF; color: var(--err); border-color: var(--err); }
@media (hover: hover) { [data-theme="azul"] .btn-perigo:hover { background: var(--err-bg); } }
[data-theme="azul"] .btn[disabled], [data-theme="azul"] .btn.travado { opacity: 1; background: rgba(255, 255, 255, 0.22); color: rgba(255, 255, 255, 0.72); border-color: transparent; }
[data-theme="azul"] .btn-secondary[disabled], [data-theme="azul"] .btn-secondary.travado { background: rgba(255, 255, 255, 0.5); color: rgba(0, 43, 171, 0.6); }
/* estado ocupado (BvUi.travar / BvTrava.acao): texto some, anel gira no centro */
[data-theme="azul"] .btn[aria-busy="true"] { color: transparent; background: var(--btn-bg); }
[data-theme="azul"] .btn-secondary[aria-busy="true"], [data-theme="azul"] .btn-on-blue[aria-busy="true"] { background: #FFFFFF; }
[data-theme="azul"] .btn[aria-busy="true"]::after {
  content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, 0.4); border-top-color: #FFFFFF; animation: az-girar 0.8s linear infinite;
}
[data-theme="azul"] .btn-secondary[aria-busy="true"]::after, [data-theme="azul"] .btn-on-blue[aria-busy="true"]::after { border-color: rgba(0, 43, 171, 0.25); border-top-color: var(--az-profundo); }
[data-theme="azul"] .acoes { margin-left: calc(var(--az-gutter) * -1); margin-right: calc(var(--az-gutter) * -1); padding: 20px var(--az-gutter) calc(12px + env(safe-area-inset-bottom, 0px)); background: linear-gradient(to top, rgba(1, 52, 176, 0.82) 55%, rgba(1, 52, 176, 0)); border-top: 0; }

/* ---------------- campos (CPF, nome, celular) ---------------- */
[data-theme="azul"] .campo { gap: 8px; }
[data-theme="azul"] .campo label { font-size: 18px; font-weight: var(--fw-regular); color: var(--campo-label); }
[data-theme="azul"] .campo .ajuda { font-size: 14px; color: var(--texto-suave); }
[data-theme="azul"] .input, [data-theme="azul"] input.input, [data-theme="azul"] select.input, [data-theme="azul"] .select {
  min-height: 48px; border: 2px solid transparent; border-radius: var(--radius-input); background-color: #FFFFFF; color: #002BAB;
  font-size: 18px; box-shadow: none; -webkit-appearance: none; appearance: none;
}
[data-theme="azul"] .input::placeholder { color: #8A93A3; font-style: italic; opacity: 1; }
[data-theme="azul"] .input:focus, [data-theme="azul"] .select:focus { border-color: #31C7ED; box-shadow: var(--focus-ring); }
[data-theme="azul"] .input.invalido { border-color: #FF8CA0; }
[data-theme="azul"] .input[readonly], [data-theme="azul"] .input:disabled { background-color: #C9CCD2; color: #15191E; }
[data-theme="azul"] .erro-campo { color: var(--err-claro); font-size: 15px; font-weight: var(--fw-black); }
[data-theme="azul"] .erro-campo.erro-visivel { animation: az-tremer 320ms var(--ease-az); }
[data-theme="azul"] .check label { color: var(--on-bg); }
[data-theme="azul"] .check input[type="checkbox"] { border-color: #FFFFFF; background: transparent; }
[data-theme="azul"] .check input[type="checkbox"]:checked { background: var(--az-brilho); border-color: #FFFFFF; }
[data-theme="azul"] .toggle label { color: var(--on-bg); }
[data-theme="azul"] .toggle input[type="checkbox"] { background: rgba(255, 255, 255, 0.3); }
[data-theme="azul"] .toggle input[type="checkbox"]:checked { background: var(--az-brilho); }
[data-theme="azul"] .stepper button { border-color: #FFFFFF; background: transparent; color: #FFFFFF; }
[data-theme="azul"] .stepper button:active { background: rgba(255, 255, 255, 0.2); }
[data-theme="azul"] .stepper input { border-color: transparent; background: #FFFFFF; color: var(--az-profundo); }

/* ---------------- cartoes, linhas, chips, indicadores ---------------- */
[data-theme="azul"] .cartao, [data-theme="azul"] .card, [data-theme="azul"] .linha, [data-theme="azul"] .kpi, [data-theme="azul"] .qr-cartao, [data-theme="azul"] .identidade {
  background: var(--surface); color: var(--text); box-shadow: none; border: 0;
}
[data-theme="azul"] .linha { min-height: 64px; padding: 14px 18px; touch-action: manipulation; transition: transform 120ms var(--ease-az); }
[data-theme="azul"] a.linha:active, [data-theme="azul"] button.linha:active { transform: scale(0.985); }
[data-theme="azul"] .linha-titulo, [data-theme="azul"] .kpi-valor { color: var(--az-profundo); }
[data-theme="azul"] a.linha, [data-theme="azul"] .cartao a { color: var(--az-profundo); }
[data-theme="azul"] .chip { min-height: 44px; border: 2px solid rgba(255, 255, 255, 0.45); background: rgba(255, 255, 255, 0.12); color: #FFFFFF; touch-action: manipulation; }
[data-theme="azul"] .chip:active { transform: scale(0.97); }
[data-theme="azul"] .chip.ativo { background: #FFFFFF; border-color: #FFFFFF; color: var(--az-profundo); }
[data-theme="azul"] .chip.lotado, [data-theme="azul"] .chip[disabled] { background: transparent; border: 2px dashed rgba(255, 255, 255, 0.35); color: rgba(255, 255, 255, 0.6); }
[data-theme="azul"] .grade-slots .chip { background: #FFFFFF; color: var(--az-profundo); border-color: #FFFFFF; border-radius: 8px 8px 22px 8px; }
[data-theme="azul"] .grade-slots .chip small { color: var(--text-muted); }
[data-theme="azul"] .grade-slots .chip.ativo { background: var(--az-brilho); border-color: #FFFFFF; color: #FFFFFF; }
[data-theme="azul"] .grade-slots .chip.ativo small { color: rgba(255, 255, 255, 0.86); }
[data-theme="azul"] .grade-slots .chip.lotado, [data-theme="azul"] .grade-slots .chip[disabled] { background: transparent; border: 2px dashed rgba(255, 255, 255, 0.35); }
[data-theme="azul"] .grade-slots .chip.lotado small, [data-theme="azul"] .grade-slots .chip[disabled] small { color: rgba(255, 255, 255, 0.6); }
[data-theme="azul"] .medidor-barra, [data-theme="azul"] .barra-progresso { background: rgba(255, 255, 255, 0.25); }
[data-theme="azul"] .medidor-barra > i, [data-theme="azul"] .barra-progresso > i { background: #FFFFFF; }
[data-theme="azul"] .medidor-legenda, [data-theme="azul"] .barra-legenda { color: var(--texto-suave); }
[data-theme="azul"] .kpi-rotulo { color: var(--text-muted); }
[data-theme="azul"] .foto-item { background: rgba(255, 255, 255, 0.16); }
[data-theme="azul"] .cartao h2, [data-theme="azul"] .cartao h3, [data-theme="azul"] .folha h2 { color: var(--az-profundo); }
/* texto dentro de superficies brancas volta para a tinta escura */
[data-theme="azul"] .cartao p, [data-theme="azul"] .card p, [data-theme="azul"] .linha p, [data-theme="azul"] .kpi p, [data-theme="azul"] .qr-cartao p, [data-theme="azul"] .folha p { color: var(--text); }

/* ---------------- transicao de tela (entrada direcional, ver BvRota) ---------------- */
[data-theme="azul"] .tela.ativa { animation: az-tela-in var(--dur-tela) var(--ease-az) backwards; }
[data-theme="azul"][data-sentido="voltar"] .tela.ativa { animation-name: az-tela-in-voltar; }
[data-theme="azul"][data-sentido="nenhum"] .tela.ativa { animation: none; }
[data-theme="azul"] .az-fade { animation: az-fade var(--dur-fade) var(--ease-az) backwards; }
[data-theme="azul"] .az-pop { animation: az-pop var(--dur-pop) var(--ease-az) backwards; }
[data-theme="azul"] .az-tremer, [data-theme="azul"] .tremer { animation: az-tremer 320ms var(--ease-az); }
[data-theme="azul"] .az-pulsar { animation: az-pulso 1.8s ease-out infinite; }

/* ---------------- cartao de saldo (Brindes disponiveis) ---------------- */
[data-theme="azul"] .az-saldo {
  position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 2px; width: 100%; max-width: 420px; aspect-ratio: 338 / 209; padding: 18px 18px 16px;
  border-radius: 6px 6px 30px 6px; color: #FFFFFF; background: var(--az-card-azul) url("../assets/sprites/bg-Brindes.png") no-repeat left top / 100% 100%;
}
[data-theme="azul"] .az-saldo-rotulo { display: flex; align-items: center; gap: 12px; max-width: 62%; font-size: 18px; font-weight: 400; line-height: 1.15; }
[data-theme="azul"] .az-saldo-num { margin-top: auto; font-size: clamp(60px, 20vw, 84px); font-weight: 700; line-height: 0.95; }
[data-theme="azul"] .az-saldo-sub { max-width: 70%; font-size: 15px; font-weight: 300; color: #FFFFFF; }
[data-theme="azul"] .az-saldo.zerado { filter: saturate(0.45) brightness(0.92); }

/* ---------------- opcao de lista com radio (horario, tamanho, brinde) ---------------- */
[data-theme="azul"] .az-opcoes { display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 0; border: 0; }
[data-theme="azul"] .az-opcao { position: relative; display: block; min-height: 64px; touch-action: manipulation; }
[data-theme="azul"] .az-opcao-in { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
[data-theme="azul"] .az-opcao-corpo {
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 12px; min-height: 76px; padding: 14px 18px;
  border: 3px solid transparent; border-radius: 6px 6px 30px 6px; background: #FFFFFF; color: var(--text);
  transition: transform 120ms var(--ease-az), border-color var(--dur-fast), box-shadow var(--dur-fast);
}
[data-theme="azul"] .az-opcao-corpo b { grid-column: 1; font-size: clamp(22px, 6.4vw, 26px); line-height: 1.1; color: var(--az-profundo); overflow-wrap: anywhere; }
[data-theme="azul"] .az-opcao-corpo small { grid-column: 1; display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--text-muted); }
[data-theme="azul"] .az-opcao-corpo small.az-vaga::before { content: ""; flex: 0 0 auto; width: 9px; height: 9px; border-radius: 50%; background: var(--ok-dot); }
[data-theme="azul"] .az-opcao-corpo small.az-vaga.poucas::before { background: var(--az-brilho); box-shadow: 0 0 0 3px #D0E3FF; }
[data-theme="azul"] .az-opcao-marca { grid-column: 2; grid-row: 1 / span 2; width: 30px; height: 30px; border: 3px solid #7A8190; border-radius: 50%; background: #FFFFFF; transition: border-color var(--dur-fast), background var(--dur-fast); }
[data-theme="azul"] .az-opcao-in:checked + .az-opcao-corpo .az-opcao-marca { border-color: var(--az-profundo); background: radial-gradient(circle, var(--az-profundo) 0 8px, #FFFFFF 9px); }
[data-theme="azul"] .az-opcao-in:focus-visible + .az-opcao-corpo { box-shadow: var(--focus-ring); }
[data-theme="azul"] .az-opcao-in:active + .az-opcao-corpo { transform: scale(0.985); }
[data-theme="azul"] .az-opcao-in:disabled { cursor: not-allowed; }
[data-theme="azul"] .az-opcao-in:disabled + .az-opcao-corpo { background: rgba(255, 255, 255, 0.28); }
[data-theme="azul"] .az-opcao-in:disabled + .az-opcao-corpo b, [data-theme="azul"] .az-opcao-in:disabled + .az-opcao-corpo small { color: rgba(255, 255, 255, 0.78); }
[data-theme="azul"] .az-opcao-in:disabled + .az-opcao-corpo .az-opcao-marca { border-color: rgba(255, 255, 255, 0.5); background: transparent; }

/* ---------------- seletor (linha com valor e seta) ---------------- */
[data-theme="azul"] .az-seletor {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; padding: 0 16px; border: 0; border-radius: 8px 8px 22px 8px;
  background: #FFFFFF; color: var(--az-profundo); font-size: 16px; text-align: left; cursor: pointer; touch-action: manipulation;
}
[data-theme="azul"] .az-seletor-valor { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
[data-theme="azul"] .az-seletor::after { content: ""; flex: 0 0 auto; width: 10px; height: 10px; margin-right: 4px; border: solid var(--az-profundo); border-width: 0 3px 3px 0; transform: rotate(45deg) translateY(-2px); transition: transform var(--dur-fast) var(--ease-az); }
[data-theme="azul"] .az-seletor[aria-expanded="true"]::after { transform: rotate(-135deg) translateY(-2px); }
[data-theme="azul"] .az-seletor:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* ---------------- abas (tablist) ---------------- */
[data-theme="azul"] .az-tabs { display: flex; gap: 6px; padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, 0.16); }
[data-theme="azul"] .az-tab { flex: 1 1 0; min-width: 0; min-height: 44px; padding: 0 10px; border: 0; border-radius: 999px; background: transparent; color: #FFFFFF; font-size: 15px; font-weight: var(--fw-black); cursor: pointer; touch-action: manipulation; transition: background var(--dur-fast), color var(--dur-fast), transform 120ms var(--ease-az); }
[data-theme="azul"] .az-tab:active { transform: scale(0.97); }
[data-theme="azul"] .az-tab[aria-selected="true"] { background: #FFFFFF; color: var(--az-profundo); }
[data-theme="azul"] .az-tab:focus-visible { outline: none; box-shadow: var(--focus-ring); }
[data-theme="azul"] .az-tabpainel[hidden] { display: none; }
[data-theme="azul"] .az-tabpainel { animation: az-fade var(--dur-fade) var(--ease-az) backwards; }

/* ---------------- QR: moldura, pulso, vencimento, palco claro, leitor ---------------- */
[data-theme="azul"] .az-qr { position: relative; display: inline-flex; flex-direction: column; align-items: center; gap: 10px; padding: 16px; border-radius: 16px; background: #FFFFFF; color: var(--az-profundo); }
[data-theme="azul"] .az-qr canvas, [data-theme="azul"] .az-qr img { display: block; width: min(64vw, 280px); max-width: 100%; height: auto; image-rendering: pixelated; }
[data-theme="azul"] .az-qr::before { content: ""; position: absolute; inset: -6px; border: 2px solid rgba(255, 255, 255, 0.75); border-radius: 22px; pointer-events: none; animation: az-pulso 1.9s ease-out infinite; }
[data-theme="azul"] .az-qr.vencendo::before { border: 4px solid #31C7ED; animation-duration: 0.9s; }
[data-theme="azul"] .az-qr.expirado::before { animation: none; opacity: 0; }
[data-theme="azul"] .az-qr.expirado canvas, [data-theme="azul"] .az-qr.expirado img { opacity: 0.12; }
[data-theme="azul"] .az-qr-cobertura { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 16px; text-align: center; font-size: 18px; font-weight: var(--fw-black); color: var(--az-profundo); }
[data-theme="azul"] .az-qr-codigo { font-size: 26px; font-weight: var(--fw-black); letter-spacing: 0.12em; }
[data-theme="azul"] .az-palco-qr { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; margin: 0 calc(var(--az-gutter) * -1); padding: 24px var(--az-gutter); background: var(--az-scrim-qr); text-align: center; }
[data-theme="azul"] .az-palco-qr p { color: #FFFFFF; }
[data-theme="azul"] .az-scan { position: relative; width: 100%; max-width: 420px; aspect-ratio: 1 / 1; margin: 0 auto; overflow: hidden; border-radius: 8px 8px 36px 8px; background: #05123A; }
[data-theme="azul"] .az-scan video { display: block; width: 100%; height: 100%; object-fit: cover; }
[data-theme="azul"] .az-scan::before {
  content: ""; position: absolute; inset: 12%; pointer-events: none; border-radius: 12px;
  background:
    linear-gradient(#fff, #fff) left top / 28px 4px no-repeat, linear-gradient(#fff, #fff) left top / 4px 28px no-repeat,
    linear-gradient(#fff, #fff) right top / 28px 4px no-repeat, linear-gradient(#fff, #fff) right top / 4px 28px no-repeat,
    linear-gradient(#fff, #fff) left bottom / 28px 4px no-repeat, linear-gradient(#fff, #fff) left bottom / 4px 28px no-repeat,
    linear-gradient(#fff, #fff) right bottom / 28px 4px no-repeat, linear-gradient(#fff, #fff) right bottom / 4px 28px no-repeat;
}
[data-theme="azul"] .az-scan::after { content: ""; position: absolute; inset: 14% 14%; pointer-events: none; background: linear-gradient(#31C7ED, #31C7ED) left top / 100% 3px no-repeat; animation: az-scan-linha 2.2s ease-in-out infinite alternate; }
[data-theme="azul"] .az-scan.pausado::after { animation: none; opacity: 0; }

/* ---------------- anel de contagem regressiva (so transform) ---------------- */
[data-theme="azul"] .az-anel { --anel: 96px; --anel-esp: 7px; position: relative; display: inline-grid; place-items: center; width: var(--anel); height: var(--anel); border-radius: 50%; box-shadow: inset 0 0 0 var(--anel-esp) rgba(255, 255, 255, 0.22); }
[data-theme="azul"] .az-anel-num { position: relative; z-index: 1; font-size: calc(var(--anel) * 0.42); font-weight: var(--fw-black); line-height: 1; color: #FFFFFF; }
[data-theme="azul"] .az-anel-meio { position: absolute; top: 0; width: 50%; height: 100%; overflow: hidden; }
[data-theme="azul"] .az-anel-dir { left: 50%; }
[data-theme="azul"] .az-anel-esq { left: 0; }
[data-theme="azul"] .az-anel-meio i { position: absolute; top: 0; width: 200%; height: 100%; border-radius: 50%; border: var(--anel-esp) solid transparent; border-top-color: #31C7ED; border-right-color: #31C7ED; animation-timing-function: linear; animation-fill-mode: both; animation-duration: calc(var(--anel-dur, 5s) / 2); }
[data-theme="azul"] .az-anel-dir i { left: -100%; transform: rotate(225deg); animation-name: az-anel-dir; }
[data-theme="azul"] .az-anel-esq i { left: 0; transform: rotate(45deg); animation-name: az-anel-esq; animation-delay: calc(var(--anel-dur, 5s) / 2); }
[data-theme="azul"] .az-anel.pausado i { animation-play-state: paused; }
[data-theme="azul"] .az-anel.urgente .az-anel-meio i { border-top-color: #FFFFFF; border-right-color: #FFFFFF; }

/* ---------------- sucesso, foto, utilitarios de layout ---------------- */
[data-theme="azul"] .az-sucesso { position: relative; width: 88px; height: 88px; margin: 0 auto; border-radius: 50%; background: #FFFFFF; animation: az-pop 420ms var(--ease-az) backwards; }
[data-theme="azul"] .az-sucesso::after { content: ""; position: absolute; left: 31px; top: 16px; width: 20px; height: 40px; border: solid var(--az-profundo); border-width: 0 7px 7px 0; transform: rotate(45deg); animation: az-check 360ms 160ms var(--ease-az) backwards; }
[data-theme="azul"] .az-foto { display: block; width: 100%; max-width: 420px; margin: 0 auto; border: 4px solid #FFFFFF; border-radius: 22px; background: rgba(255, 255, 255, 0.16); overflow: hidden; }
[data-theme="azul"] .az-foto img { display: block; width: 100%; height: auto; }
[data-theme="azul"] .az-foto.totem { border-color: #0036C4; }
[data-theme="azul"] .az-duas-colunas { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
@media (min-width: 720px) { [data-theme="azul"][data-layout="amplo"] .az-duas-colunas { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------------- estados: carregando, vazio, erro, offline, sessao ---------------- */
[data-theme="azul"] .spinner { border-color: rgba(255, 255, 255, 0.25); border-top-color: #FFFFFF; }
[data-theme="azul"] .esqueleto { position: relative; overflow: hidden; background: rgba(255, 255, 255, 0.16); animation: none; }
[data-theme="azul"] .esqueleto::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.22), transparent); transform: translateX(-100%); animation: az-brilho 1.3s ease-in-out infinite; }
[data-theme="azul"] .vazio { color: var(--texto-suave); }
[data-theme="azul"] .vazio-titulo { color: #FFFFFF; }
[data-theme="azul"] .az-estado { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 28px 12px; text-align: center; }
[data-theme="azul"] .az-estado h2 { margin: 0; font-size: 24px; color: #FFFFFF; }
[data-theme="azul"] .az-estado p { max-width: 32ch; margin: 0; }
[data-theme="azul"] .az-estado .btn { width: 100%; max-width: 320px; }
[data-theme="azul"] .az-estado-icone { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; background: rgba(255, 255, 255, 0.16); color: #FFFFFF; font-size: 36px; font-weight: var(--fw-black); animation: az-pop 360ms var(--ease-az) backwards; }
[data-theme="azul"] .az-estado-icone[data-tipo="erro"]::before, [data-theme="azul"] .az-estado-icone[data-tipo="offline"]::before { content: "!"; }
[data-theme="azul"] .az-estado-icone[data-tipo="sessao"]::before { content: "i"; }
[data-theme="azul"] .az-estado-icone[data-tipo="vazio"]::before { content: "0"; }
[data-theme="azul"] .az-estado-icone[data-tipo="erro"] { background: var(--err-claro); color: #9F1239; }
[data-theme="azul"] .az-estado-icone[data-tipo="offline"] { background: var(--az-claro); color: var(--az-profundo); }
[data-theme="azul"] .msg { background: rgba(255, 255, 255, 0.14); color: #FFFFFF; border-left: 4px solid #31C7ED; border-radius: 6px 6px 16px 6px; }
[data-theme="azul"] .msg.info { background: rgba(255, 255, 255, 0.14); color: #FFFFFF; }
[data-theme="azul"] .msg.erro { background: #FDEDEF; color: #9F1239; border-left-color: var(--err); }
[data-theme="azul"] .msg.ok { background: #E8F8EE; color: #14532D; border-left-color: var(--ok); }
[data-theme="azul"] .az-banner-rede { position: fixed; top: 0; left: 0; right: 0; z-index: 300; display: flex; justify-content: center; pointer-events: none; }
[data-theme="azul"] .az-banner-rede-in {
  display: flex; align-items: center; gap: 12px; width: 100%; max-width: var(--col-max, 430px); padding: calc(env(safe-area-inset-top, 0px) + 10px) 16px 10px;
  border-radius: 0 0 16px 16px; background: var(--az-claro); color: var(--az-profundo); font-size: 15px; font-weight: var(--fw-black); line-height: 1.25; pointer-events: auto; animation: az-desce 240ms var(--ease-az) backwards;
}
[data-theme="azul"] .az-banner-texto { flex: 1 1 auto; min-width: 0; }
[data-theme="azul"] .az-banner-btn { flex: 0 0 auto; min-width: 44px; min-height: 44px; padding: 0 16px; border: 0; border-radius: 12px; background: var(--az-profundo); color: #FFFFFF; font-size: 15px; font-weight: var(--fw-black); cursor: pointer; touch-action: manipulation; }
[data-theme="azul"] .az-banner-btn:focus-visible { outline: none; box-shadow: 0 0 0 3px #FFFFFF, 0 0 0 6px var(--az-profundo); }
[data-theme="azul"] body.az-offline .toast { top: calc(env(safe-area-inset-top, 0px) + 76px); }

/* ---------------- toast, folha (bottom sheet) e modal ---------------- */
[data-theme="azul"] .toast { background: #FFFFFF; color: var(--az-profundo); border-left-color: #31C7ED; border-radius: 6px 6px 16px 6px; box-shadow: var(--shadow-pop); font-weight: var(--fw-black); }
[data-theme="azul"] .toast.ok { border-left-color: var(--ok); }
[data-theme="azul"] .toast.erro { border-left-color: var(--err); }
[data-theme="azul"] .folha-fundo { background: rgba(0, 16, 74, 0.62); animation: az-fundo-in 200ms var(--ease-az); }
[data-theme="azul"] .folha { position: relative; padding-top: 28px; border-radius: 24px 24px 0 0; animation: az-folha-in 280ms var(--ease-az); }
[data-theme="azul"] .folha::before { content: ""; position: absolute; top: 10px; left: 50%; width: 44px; height: 5px; margin-left: -22px; border-radius: 3px; background: #CAD0F6; }
[data-theme="azul"] .folha-conteudo h2 { color: var(--az-profundo); }
@media (min-width: 640px) {
  [data-theme="azul"] .folha-fundo { align-items: center; }
  [data-theme="azul"] .folha { max-width: 480px; padding-bottom: 24px; border-radius: 8px 8px 36px 8px; animation-name: az-pop; }
  [data-theme="azul"] .folha::before { content: none; }
}

/* ---------------- tabbar ---------------- */
[data-theme="azul"] .tabbar { background: var(--az-profundo); border-top: 1px solid rgba(255, 255, 255, 0.18); }
[data-theme="azul"] .tabbar a { color: rgba(255, 255, 255, 0.72); }
[data-theme="azul"] .tabbar a.ativo { color: #FFFFFF; border-top-color: #31C7ED; }

/* ---------------- keyframes (transform e opacity) ---------------- */
@keyframes az-tela-in { from { opacity: 0; transform: translateX(28px); } to { opacity: 1; transform: none; } }
@keyframes az-tela-in-voltar { from { opacity: 0; transform: translateX(-28px); } to { opacity: 1; transform: none; } }
@keyframes az-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes az-pop { from { opacity: 0; transform: scale(0.82); } to { opacity: 1; transform: none; } }
@keyframes az-check { from { opacity: 0; transform: rotate(45deg) scale(0); } to { opacity: 1; transform: rotate(45deg) scale(1); } }
@keyframes az-tremer { 0%, 100% { transform: none; } 20% { transform: translateX(-8px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(3px); } }
@keyframes az-pulso { 0% { opacity: 0.85; transform: scale(1); } 100% { opacity: 0; transform: scale(1.09); } }
@keyframes az-scan-linha { from { transform: translateY(0); } to { transform: translateY(calc(100% - 3px)); } }
@keyframes az-girar { to { transform: rotate(360deg); } }
@keyframes az-brilho { to { transform: translateX(100%); } }
@keyframes az-desce { from { opacity: 0; transform: translateY(-100%); } to { opacity: 1; transform: none; } }
@keyframes az-fundo-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes az-folha-in { from { opacity: 0; transform: translateY(48px); } to { opacity: 1; transform: none; } }
@keyframes az-anel-dir { from { transform: rotate(225deg); } to { transform: rotate(405deg); } }
@keyframes az-anel-esq { from { transform: rotate(45deg); } to { transform: rotate(225deg); } }

@media (prefers-reduced-motion: reduce) {
  [data-theme="azul"] *, [data-theme="azul"] *::before, [data-theme="azul"] *::after {
    animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; animation-delay: 0ms !important;
    transition-duration: 0.01ms !important; scroll-behavior: auto !important;
  }
  [data-theme="azul"] .az-qr::before, [data-theme="azul"] .az-scan::after, [data-theme="azul"] .esqueleto::after, [data-theme="azul"] .az-anel-meio { display: none; }
  [data-theme="azul"] .btn[aria-busy="true"]::after { animation: none; display: none; }
  [data-theme="azul"] .btn[aria-busy="true"] { color: rgba(255, 255, 255, 0.72); }
  [data-theme="azul"] .btn-secondary[aria-busy="true"], [data-theme="azul"] .btn-on-blue[aria-busy="true"] { color: rgba(0, 43, 171, 0.6); }
}
[data-theme="azul"] .az-voltar, [data-theme="azul"] .az-seletor { transition: opacity 120ms var(--ease-az), transform 120ms var(--ease-az); }
[data-theme="azul"] .az-voltar:active { opacity: 0.7; transform: scale(0.96); }
[data-theme="azul"] .az-seletor:active { transform: scale(0.985); }
[data-theme="azul"] .az-banner-btn:active { transform: scale(0.97); }
