/* ==================================================================
   BLOCK BLAST PIX — BASE / COMPONENTES
   Depende de /tokens.css (carregar tokens.css ANTES deste arquivo).

   Antes: este arquivo era um tema CLARO e o bb-theme.css escurecia
   tudo por cima com ~250 linhas de !important. Agora ele ja nasce
   escuro, entao a camada de remendo deixou de existir.
   ================================================================== */

*{margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%;}

body{
  font-family:var(--font);
  color:var(--text-primary);
  line-height:1.55;
  overflow-x:hidden;
  background-color:var(--bg-page);
  min-height:100svh;
}

svg{display:block;}
img{max-width:100%;}
a{color:var(--primary); text-decoration:none;}
a:hover{color:var(--primary-hover);}

.wrap{max-width:520px; margin:0 auto; padding:0 var(--sp-4);}

/* ==================================================================
   BOTOES — estados completos: normal / hover / active / focus / disabled
   ================================================================== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:inherit; font-weight:900; cursor:pointer;
  border:1px solid transparent; border-radius:15px;
  font-size:15px; padding:14px 22px; letter-spacing:.2px;
  min-height:var(--tap);
  transition:background var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast), border-color var(--t-fast);
}
.btn.primary{background:var(--primary); color:var(--text-on-primary); box-shadow:var(--shadow-primary);}
.btn.primary:hover{background:var(--primary-hover);}
.btn.primary:active{background:var(--primary-active); transform:translateY(1px); box-shadow:var(--shadow-sm);}

.btn.green{background:var(--success); color:var(--text-on-primary); box-shadow:var(--shadow-success);}
.btn.green:hover{background:var(--success-hover);}
.btn.green:active{background:var(--success-strong); transform:translateY(1px);}

/* alias legado: .purple hoje e a cor primaria */
.btn.purple{background:var(--primary); color:var(--text-on-primary); box-shadow:var(--shadow-primary);}
.btn.purple:hover{background:var(--primary-hover);}

.btn.ghost{background:var(--bg-surface-elevated); color:var(--text-primary); border-color:var(--border-default);}
.btn.ghost:hover{background:var(--bg-surface-hover); border-color:var(--border-strong);}
.btn.ghost:active{background:var(--bg-sunken);}

.btn.danger{background:var(--danger); color:var(--text-on-primary);}

.btn.big{font-size:18px; padding:18px 28px; width:100%;}
.btn.block{width:100%;}
.btn:focus-visible{outline:none; box-shadow:var(--ring);}
.btn:disabled,.btn[disabled]{opacity:.45; cursor:not-allowed; filter:saturate(.5); box-shadow:none; transform:none;}

/* ==================================================================
   HEADER
   ================================================================== */
header{
  position:sticky; top:0; z-index:var(--z-header);
  background:color-mix(in srgb, var(--bg-page) 88%, transparent);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border-default);
  padding-top:var(--safe-t);
}
@supports not (background: color-mix(in srgb, red 50%, blue)){
  header{background:rgba(6,26,51,.9);}
}
.hd{display:flex; align-items:center; justify-content:space-between; height:60px; gap:8px;}
.logo{display:flex; align-items:center; gap:9px; font-weight:900; font-size:20px; letter-spacing:-.6px; color:var(--text-primary);}
.logo .ball{width:16px; height:16px; border-radius:50%; background:var(--danger); box-shadow:0 0 12px var(--danger-soft);}
.logo em{font-style:normal; color:var(--primary);}
.hdRight{display:flex; align-items:center; gap:7px;}

.hdBtn{
  font-family:inherit; font-weight:800; font-size:13px; padding:10px 14px;
  border-radius:12px; cursor:pointer; min-height:var(--tap); white-space:nowrap;
  border:1px solid var(--border-default); background:var(--bg-surface-elevated); color:var(--text-primary);
  transition:background var(--t-fast), border-color var(--t-fast);
}
.hdBtn:hover{background:var(--bg-surface-hover); border-color:var(--border-strong);}
.hdBtn:active{background:var(--bg-sunken);}
.hdBtn:focus-visible{outline:none; box-shadow:var(--ring); border-color:var(--border-focus);}
/* .y = botao de acao principal do header (Cadastrar) */
.hdBtn.y{background:var(--primary); color:var(--text-on-primary); border-color:transparent; box-shadow:var(--shadow-primary);}
.hdBtn.y:hover{background:var(--primary-hover);}
.hdBtn.y:active{background:var(--primary-active);}

.hdBack{display:inline-flex; align-items:center; gap:5px; font-weight:800; font-size:14px;
  color:var(--text-secondary); cursor:pointer; background:none; border:none; font-family:inherit;
  min-height:var(--tap); padding:0 4px;}
.hdBack:hover{color:var(--text-primary);}

/* pilula de saldo no header */
.saldoPill{
  display:inline-flex; align-items:center; gap:4px;
  background:var(--success-soft); border:1px solid var(--success-border); color:var(--success);
  font-weight:900; font-size:13.5px; padding:9px 13px; border-radius:var(--r-pill);
  white-space:nowrap; cursor:pointer; min-height:var(--tap); font-variant-numeric:tabular-nums;
  transition:background var(--t-fast);
}
.saldoPill:hover{background:rgba(78,215,154,.22);}
.saldoPill:focus-visible{outline:none; box-shadow:var(--ring);}

/* ==================================================================
   CARDS / SUPERFICIES
   ================================================================== */
.card{background:var(--bg-surface); border:1px solid var(--border-default); border-radius:var(--r-xl); padding:var(--sp-5); box-shadow:var(--shadow-md);}
.panel{background:var(--bg-surface); border:1px solid var(--border-default); border-radius:22px; padding:var(--sp-5); box-shadow:var(--shadow-md);}

.badge{display:inline-flex; align-items:center; gap:7px; background:var(--primary-soft); color:var(--primary);
  border:1px solid var(--info-border); font-weight:900; font-size:12px; letter-spacing:.4px;
  padding:7px 13px; border-radius:var(--r-pill); text-transform:uppercase;}
.badge.on{background:var(--success-soft); color:var(--success); border-color:var(--success-border);}
.badge.off{background:var(--danger-soft); color:var(--danger); border-color:var(--danger-border);}

.tpill{display:inline-flex; align-items:center; gap:6px; background:var(--bg-surface-elevated);
  border:1px solid var(--border-default); padding:9px 14px; border-radius:var(--r-pill);
  font-size:12.5px; font-weight:700; color:var(--text-secondary);}
.tpill b{color:var(--text-primary);}
.tpill svg{color:var(--success);}

/* ==================================================================
   TITULOS DE SECAO
   ================================================================== */
.sec-h{display:flex; align-items:center; gap:9px; margin-bottom:4px;}
.sec-h .bar{width:5px; height:24px; border-radius:3px; background:var(--primary);}
.sec-t{font-size:22px; font-weight:900; letter-spacing:-.6px; color:var(--text-primary);}
.sec-s{color:var(--text-secondary); font-size:14px; margin:0 0 var(--sp-4) 14px;}

/* ==================================================================
   FORMULARIOS
   ================================================================== */
.field{margin-bottom:14px;}
.field label{display:block; font-size:12.5px; font-weight:800; color:var(--text-secondary); margin-bottom:6px; letter-spacing:.3px;}

.input{
  width:100%; font-family:inherit; font-size:16px; font-weight:600;
  color:var(--text-primary); background:var(--bg-input);
  border:1.5px solid var(--border-default); border-radius:14px; padding:14px 15px;
  transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);
  outline:none; -webkit-appearance:none; appearance:none;
}
.input::placeholder{color:var(--text-muted); opacity:1;}
.input:hover{border-color:var(--border-strong);}
.input:focus{border-color:var(--border-focus); box-shadow:var(--ring); background:var(--bg-sunken);}
.input:not(:placeholder-shown){border-color:var(--border-strong);}
.input[aria-invalid="true"], .field.err .input{border-color:var(--danger); box-shadow:var(--ring-danger);}
.field.ok .input{border-color:var(--success);}
.input:disabled{background:var(--bg-input-disabled); color:var(--text-muted); cursor:not-allowed; opacity:.6;}

.formErr{color:var(--danger); font-size:13px; font-weight:700; margin-top:5px; min-height:1px;}
.formOk{color:var(--success); font-size:13px; font-weight:700; margin-top:5px; min-height:1px;}

select{color:var(--text-primary); background:var(--bg-input);}
select option{background:var(--bg-surface-elevated); color:var(--text-primary);}

/* ==================================================================
   ABAS — ativo inconfundivel (fundo + texto + borda + sublinhado + peso)
   ================================================================== */
.tabs{display:flex; gap:6px; background:var(--bg-sunken); border:1px solid var(--border-default);
  border-radius:var(--r-lg); padding:5px;}
.tabs button, .tabs a{
  flex:1; font-family:inherit; font-weight:700; font-size:14px;
  color:var(--text-secondary); background:transparent; border:1px solid transparent;
  padding:12px 10px; border-radius:12px; cursor:pointer; text-align:center;
  min-height:var(--tap); position:relative;
  transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.tabs button:hover, .tabs a:hover{background:var(--border-subtle); color:var(--text-primary);}
.tabs button:active, .tabs a:active{transform:translateY(1px);}
.tabs button:focus-visible, .tabs a:focus-visible{outline:none; box-shadow:var(--ring); border-color:var(--border-focus);}
.tabs button.on, .tabs a.on,
.tabs button.active, .tabs a.active,
.tabs button.sel, .tabs a.sel,
.tabs button[aria-selected="true"], .tabs a[aria-selected="true"]{
  background:var(--primary-soft-strong);
  color:var(--text-primary);
  border-color:var(--primary);
  font-weight:900;
  box-shadow:inset 0 -3px 0 var(--primary), 0 2px 10px var(--primary-glow);
}
.tabs button[disabled]{opacity:.4; cursor:not-allowed;}

/* ==================================================================
   BOTTOM-SHEET generico (.sheet — usado fora do wallet-ui)
   ================================================================== */
.sheetBack{position:fixed; inset:0; z-index:80; background:var(--overlay);
  -webkit-backdrop-filter:var(--overlay-blur); backdrop-filter:var(--overlay-blur);
  opacity:0; visibility:hidden; transition:opacity .28s, visibility .28s;}
.sheetBack.on{opacity:1; visibility:visible;}
.sheet{
  position:fixed; left:0; right:0; bottom:0; z-index:81; max-width:520px; margin:0 auto;
  background:var(--bg-surface); border:1px solid var(--border-default); border-bottom:none;
  border-radius:var(--r-sheet) var(--r-sheet) 0 0;
  padding:10px var(--sp-5) calc(var(--sp-6) + var(--safe-b));
  box-shadow:var(--shadow-sheet);
  transform:translateY(101%); transition:transform var(--t-sheet);
  max-height:88vh; max-height:88svh; overflow-y:auto; overscroll-behavior:contain;
}
.sheet.on{transform:translateY(0);}
.sheet .grip{width:44px; height:5px; border-radius:var(--r-pill); background:var(--border-strong); margin:2px auto 14px;}
.sheet h2{font-size:21px; font-weight:900; letter-spacing:-.4px; margin-bottom:4px; color:var(--text-primary);}
.sheet .sub{color:var(--text-secondary); font-size:13.5px; margin-bottom:var(--sp-4);}
@media (max-height:560px){ .sheet{max-height:94svh;} }

/* ==================================================================
   UTILIDADES
   ================================================================== */
.muted{color:var(--text-secondary);}
.dim{color:var(--text-muted);}
.green{color:var(--success);}
.row{display:flex; gap:10px;}
.stack{display:flex; flex-direction:column; gap:var(--sp-3);}
.money{font-variant-numeric:tabular-nums; letter-spacing:-.2px;}

.spin{width:20px; height:20px; border:2.5px solid var(--primary-soft-strong);
  border-top-color:var(--primary); border-radius:50%; animation:spin .7s linear infinite; display:inline-block;}
@keyframes spin{to{transform:rotate(360deg)}}

/* chips de valor */
.chipRow{display:flex; gap:8px; flex-wrap:wrap;}
.valChip{
  flex:1; min-width:70px; text-align:center; font-weight:900; font-size:15px;
  padding:14px 8px; border-radius:14px; min-height:var(--tap);
  background:var(--bg-surface-elevated); border:1.5px solid var(--border-default);
  color:var(--text-primary); cursor:pointer;
  transition:background var(--t-fast), border-color var(--t-fast), box-shadow var(--t-fast);
}
.valChip:hover{background:var(--bg-surface-hover); border-color:var(--border-strong);}
.valChip:active{transform:translateY(1px);}
.valChip:focus-visible{outline:none; box-shadow:var(--ring); border-color:var(--border-focus);}
.valChip.on, .valChip.sel{
  border-color:var(--primary); background:var(--primary-soft-strong); color:var(--text-primary);
  box-shadow:inset 0 -3px 0 var(--primary), 0 6px 16px var(--primary-glow);
}

/* ==================================================================
   BOTTOM NAV
   ================================================================== */
.bnav{
  position:fixed; left:0; right:0; bottom:0; z-index:var(--z-bnav);
  max-width:520px; margin:0 auto; display:flex;
  background:rgba(6,26,51,.94);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-top:1px solid var(--border-default);
  padding:8px 6px calc(8px + var(--safe-b));
}
.bnav a, .bnav button{
  flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
  font-size:10.5px; font-weight:800; color:var(--text-muted); padding:6px 0;
  background:none; border:none; font-family:inherit; cursor:pointer; min-height:var(--tap);
  transition:color var(--t-fast);
}
.bnav a:hover, .bnav button:hover{color:var(--text-secondary);}
.bnav a.on, .bnav button.on{color:var(--primary);}
.bnav a.on svg, .bnav button.on svg{filter:drop-shadow(0 0 6px var(--primary-glow));}
.bnav a:focus-visible, .bnav button:focus-visible{outline:none; box-shadow:var(--ring); border-radius:var(--r-sm);}
.bnav svg{width:22px; height:22px;}

/* ==================================================================
   TABELAS
   ================================================================== */
table{width:100%; border-collapse:collapse; color:var(--text-primary);}
th{color:var(--text-muted); font-size:11.5px; font-weight:800; text-transform:uppercase;
  letter-spacing:.3px; text-align:left; padding:10px 8px;
  background:var(--bg-sunken); border-bottom:1px solid var(--border-default);}
td{padding:11px 8px; border-bottom:1px solid var(--border-subtle); font-size:13.5px;}
tr:hover td{background:var(--border-subtle);}

/* ==================================================================
   SCROLLBAR
   ================================================================== */
::-webkit-scrollbar{width:10px; height:10px;}
::-webkit-scrollbar-track{background:var(--bg-sunken);}
::-webkit-scrollbar-thumb{background:var(--border-strong); border-radius:var(--r-pill);}
::-webkit-scrollbar-thumb:hover{background:var(--primary);}
