/* AdiantaZap — components.css
   Camada 2: classes semânticas do design system **Coinbase** (light-first,
   um accent, whitespace generoso), em CSS puro. Tokens de tokens.css.

   Forma do sistema (o que mudou em relação ao Resolutai):
   · botões e inputs são CAPSULAS de 56px (radius 56 / pill) — assinatura
     interativa da marca
   · cards: raio 24, hairline 1px e UMA sombra (0 8px 12px rgba(0,0,0,.12))
   · títulos: Poppins 400, sentence case, tracking ZERO — nunca bold
   · corpo/UI: Inter 400/600; labels 14/600 sem uppercase
   · sem tema escuro, sem glow, sem gradiente fora do hero

   Verde #21C063 é ação; --brand-text #0B7A3D é texto/ícone sobre branco.
   Convenção: modificador com hífen, elemento interno com duplo sublinhado. */

/* ==========================================================================
   1. TIPOGRAFIA
   ========================================================================== */

.h1, .h2, .h3, .h1-lp, .h2-lp{
  font-family:var(--font-display);
  font-weight:400;          /* teto do display: nunca bold */
  letter-spacing:0;         /* o DS não manipula tracking */
  color:var(--text);
  margin:0;
}
.h1{
  font-size:var(--fs-h1);
  line-height:var(--lh-snug);
}
.h1-lp{
  font-size:var(--fs-h1-lp);
  line-height:var(--lh-tight);   /* 1,17: headline de várias linhas não pode ser 1,0 */
}
.h2{
  font-size:var(--fs-h2);
  line-height:var(--lh-snug);
}
.h2-lp{
  font-size:var(--fs-h2-lp);
  line-height:var(--lh-snug);
}
.h3{
  font-size:var(--fs-h3);
  line-height:1.4;
}

.lead{
  font-family:var(--font-sans);
  font-size:var(--fs-lead);
  line-height:var(--lh-loose);
  font-weight:400;
  color:var(--text-2);
  margin:0;
}
.body{
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  color:var(--text-2);
  margin:0;
}

/* label de seção: 14/600 em verde de texto (não uppercase no DS) */
.eyebrow{
  display:block;
  font-family:var(--font-sans);
  font-size:var(--fs-eyebrow);
  font-weight:600;
  line-height:1.43;
  letter-spacing:0;
  color:var(--brand-text);
  margin:0;
}
.label{
  display:block;
  font-family:var(--font-sans);
  font-size:var(--fs-label);
  font-weight:600;
  line-height:1.43;
  color:var(--text);
  margin:0 0 var(--space-2);
}
.hint{
  font-size:var(--fs-2xs);
  line-height:1.33;
  color:var(--muted);
  margin:var(--space-2) 0 0;
}
.caption{
  font-size:var(--fs-2xs);
  line-height:1.33;
  color:var(--text-2);
  margin:0;
}
.mono{ font-family:var(--font-mono); }

.text-muted{ color:var(--muted); }
.text-2{ color:var(--text-2); }
.text-brand{ color:var(--brand-text); }
.text-success{ color:var(--success); }
.text-danger{ color:var(--danger); }

/* ==========================================================================
   2. BOTÕES — cápsulas de 56px
   ========================================================================== */

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-2);
  min-height:var(--control-h);
  padding:0 var(--space-6);
  border:0;
  border-radius:var(--radius-pill);
  font-family:var(--font-sans);
  font-size:1rem;
  font-weight:600;
  line-height:1.5;
  text-align:center;
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
  transition:background .18s ease, border-color .18s ease, opacity .18s ease;
}
.btn:active{ opacity:.9; }
.btn[disabled], .btn:disabled{ opacity:.4; pointer-events:none; }

/* primário: verde da marca + texto ink (8,24:1) */
.btn-primary{
  background:var(--brand);
  color:var(--brand-ink);
  box-shadow:none;
}
.btn-primary:hover{ background:var(--brand-strong); }

/* secundário: branco + hairline (nav sign-in do DS) */
.btn-ghost{
  background:var(--surface);
  color:var(--text);
  box-shadow:inset 0 0 0 1px var(--line);
}
.btn-ghost:hover{ background:var(--bg-elev); }

/* outline: tint verde + borda verde, para link de apoio */
.btn-outline{
  background:var(--brand-soft);
  color:var(--brand-text);
  min-height:var(--control-h-sm);
  padding:0 var(--space-4);
  font-size:var(--fs-sm);
  box-shadow:inset 0 0 0 1px var(--brand-line);
}
.btn-outline:hover{ background:var(--brand-soft-2); }

.btn-solid{
  background:var(--bg-elev);
  color:var(--text);
  box-shadow:inset 0 0 0 1px var(--line);
}

.btn-block{ width:100%; }
.btn-lg{ min-height:var(--control-h); font-size:1rem; }
.btn-sm{
  min-height:var(--control-h-sm);
  padding:0 var(--space-4);
  font-size:var(--fs-sm);
}

/* ==========================================================================
   3. CAMPOS — cápsula de 56px, hairline, foco em anel verde
   ========================================================================== */

.input, .select, .textarea{
  width:100%;
  min-height:var(--control-h);
  padding:var(--space-3) var(--space-6);
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-pill);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  font-weight:400;
  line-height:1.5;
  appearance:none;
  transition:border-color .18s ease, box-shadow .18s ease;
}
/* texto multilinha não é cápsula: raio 16 */
.textarea{
  min-height:112px;
  border-radius:var(--radius);
  padding:var(--space-4) var(--space-5);
  resize:vertical;
}
.input::placeholder, .textarea::placeholder{ color:var(--placeholder); opacity:1; }
.input:hover, .select:hover, .textarea:hover{ border-color:var(--text-2); }
.input:focus, .select:focus, .textarea:focus{
  outline:none;
  border-color:var(--brand-text);
  box-shadow:0 0 0 3px var(--brand-ring);
}
/* erro: vermelho do DS */
.input[aria-invalid="true"], .textarea[aria-invalid="true"]{
  border-color:var(--danger);
  box-shadow:0 0 0 3px var(--danger-soft);
}
.select{
  padding-right:var(--space-8);
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235B616E' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right var(--space-5) center;
}

.field-row{ display:grid; gap:var(--space-4); }
@media (min-width:640px){
  .field-row.cols-2{ grid-template-columns:1fr 1fr; }
}

/* segmentos (sinal) — pill tabs */
.seg{ display:grid; grid-template-columns:1fr 1fr; gap:var(--space-2); }
@media (min-width:640px){ .seg{ grid-template-columns:repeat(4,1fr); } }
.seg input{ position:absolute; opacity:0; pointer-events:none; }
.seg label{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
  padding:0 var(--space-3);
  border-radius:var(--radius-pill);
  background:var(--surface);
  box-shadow:inset 0 0 0 1px var(--line);
  font-family:var(--font-sans);
  font-size:var(--fs-sm);
  font-weight:600;
  color:var(--text-2);
  text-align:center;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, box-shadow .18s ease;
}
.seg label:hover{ background:var(--bg-elev); color:var(--text); }
.seg input:checked + label{
  background:var(--brand);
  box-shadow:none;
  color:var(--brand-ink);
}
.seg input:focus-visible + label{
  outline:2px solid var(--brand-text);
  outline-offset:2px;
}

/* cautela: caixa "Sem sinal" — warning do DS */
.opt-warn{
  display:flex;
  align-items:flex-start;
  gap:var(--space-3);
  margin-top:var(--space-3);
  padding:var(--space-4);
  border:1px dashed var(--warn);
  border-radius:var(--radius);
  background:var(--warn-soft);
  cursor:pointer;
}
.opt-warn input{
  width:18px;
  height:18px;
  margin-top:2px;
  flex:none;
  accent-color:var(--warn);
}
.opt-warn span{ font-size:var(--fs-sm); line-height:1.43; color:var(--warn-ink); }
.opt-warn:has(input:checked){ border-style:solid; border-color:var(--warn); }

/* ==========================================================================
   4. CARD — raio 24, hairline 1px, UMA sombra
   ========================================================================== */

.card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow);
}
.card-quiet{
  background:var(--bg-elev);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  box-shadow:none;
}
.card--accent{ border-color:var(--brand-line); }

/* ==========================================================================
   5. BADGES, CHIPS E STATUS — todos pill
   ========================================================================== */

.badge{
  display:inline-flex;
  align-items:center;
  gap:var(--space-2);
  padding:var(--space-1) var(--space-3);
  border-radius:var(--radius-pill);
  background:var(--badge-bg);
  font-size:var(--fs-sm);
  font-weight:600;
  line-height:1.43;
  color:var(--badge-text);
}
.badge--neutral{
  background:var(--bg-elev);
  color:var(--text-2);
}
.badge-dot{
  flex:none;
  width:8px;
  height:8px;
  border-radius:var(--radius-pill);
  background:var(--brand);
}

.chip{
  display:inline-flex;
  align-items:center;
  gap:var(--space-1);
  padding:var(--space-1) var(--space-3);
  border-radius:var(--radius-pill);
  background:var(--bg-elev);
  font-size:var(--fs-sm);
  font-weight:600;
  line-height:1.43;
  color:var(--text-2);
}
.chip-brand{ background:var(--badge-bg); color:var(--badge-text); }
.chip-warn{ background:var(--warn-soft); color:var(--warn-ink); }
.chip-neutral{ background:var(--bg-elev); color:var(--text-2); }

.status{
  display:inline-flex;
  align-items:center;
  gap:var(--space-2);
  padding:var(--space-1) var(--space-3);
  border-radius:var(--radius-pill);
  font-size:var(--fs-sm);
  font-weight:600;
  line-height:1.43;
}
.status-pending{ background:var(--warn-soft); color:var(--warn-ink); }
.status-ok{ background:var(--success-soft); color:var(--success); }
.status-err{ background:var(--danger-soft); color:var(--danger); }
.status-neutral{ background:var(--bg-elev); color:var(--text-2); }

/* ==========================================================================
   6. STEPPER — pill tabs
   ========================================================================== */

.stepper{
  display:flex;
  gap:var(--space-2);
  overflow-x:auto;
  scrollbar-width:none;
  padding-bottom:2px;
}
.stepper::-webkit-scrollbar{ display:none; }

.step{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:var(--space-2);
  min-height:var(--control-h-sm);
  padding:0 var(--space-4);
  border:0;
  border-radius:var(--radius-pill);
  background:transparent;
  font-family:var(--font-sans);
  font-size:var(--fs-sm);
  font-weight:600;
  color:var(--text-2);
  cursor:pointer;
  transition:background .18s ease, color .18s ease;
}
.step .num{
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  border-radius:var(--radius-pill);
  background:var(--bg-elev);
  font-size:var(--fs-2xs);
  font-weight:600;
  color:var(--text-2);
}
.step:hover{ background:var(--bg-elev); color:var(--text); }
.step[aria-current="step"]{
  background:var(--brand-soft);
  color:var(--brand-text);
}
.step[aria-current="step"] .num{
  background:var(--brand);
  color:var(--brand-ink);
}
.step.done{ color:var(--text); }
.step.done .num{ background:var(--success-soft); color:var(--success); }

.progress{
  height:4px;
  border-radius:var(--radius-pill);
  background:var(--bg-elev);
  overflow:hidden;
}
.progress > i{
  display:block;
  height:100%;
  width:0;
  border-radius:var(--radius-pill);
  background:var(--brand);
  transition:width .3s ease;
}

/* ==========================================================================
   7. LINHAS DE ITEM — hairline, sem zebra
   ========================================================================== */

.row-item{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--space-4);
  padding:var(--space-4) 0;
  border-bottom:1px solid var(--line);
}
.row-item:last-child{ border-bottom:0; }
.row-item__desc{ min-width:0; }
.row-item__title{
  margin:0;
  font-size:var(--fs-body);
  font-weight:600;
  line-height:var(--lh-body);
  color:var(--text);
}
.row-item__meta{
  margin:2px 0 0;
  font-size:var(--fs-sm);
  line-height:1.43;
  color:var(--text-2);
}
.row-item__value{
  margin:0;
  font-size:var(--fs-body);
  font-weight:600;
  white-space:nowrap;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}

.item-line{
  display:grid;
  gap:var(--space-3);
  padding:var(--space-4);
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
}
@media (min-width:640px){
  .item-line{ grid-template-columns:1fr 76px 112px 100px 44px; align-items:start; }
}
.item-line .total{
  align-self:center;
  font-size:var(--fs-sm);
  font-weight:600;
  text-align:right;
  font-variant-numeric:tabular-nums;
}
.icon-btn{
  display:grid;
  place-items:center;
  width:44px;
  min-height:44px;
  border:1px solid var(--line);
  border-radius:var(--radius-pill);
  background:var(--surface);
  color:var(--text-2);
  cursor:pointer;
}
.icon-btn:hover{ border-color:var(--danger); color:var(--danger); background:var(--danger-soft); }

/* ==========================================================================
   8. BLOCO DE SINAL PIX — canvas-soft, raio 24; QR preto puro sobre branco
   ========================================================================== */

.pix-block{
  padding:var(--space-5);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  background:var(--bg-elev);
}
.pix-block__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--space-4);
}
.pix-block__label{
  margin:0;
  font-size:var(--fs-sm);
  font-weight:600;
  color:var(--text-2);
}
.pix-block__amount{
  margin:var(--space-1) 0 0;
  font-family:var(--font-display);
  font-size:2rem;
  font-weight:400;
  letter-spacing:0;
  line-height:1.25;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
.pix-block__rest{
  margin:var(--space-1) 0 0;
  font-size:var(--fs-sm);
  line-height:1.43;
  color:var(--text-2);
}
.pix-qr{
  flex:none;
  display:grid;
  place-items:center;
  width:96px;
  height:96px;
  border-radius:var(--radius);
  background:#FFFFFF;    /* literal: nada de token */
  color:#000000;
  border:1px solid var(--line);
}
.pix-qr svg{ width:82px; height:82px; display:block; }

.pix-code{
  display:flex;
  align-items:center;
  gap:var(--space-2);
  margin-top:var(--space-4);
  padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);
  border:1px solid var(--line);
  border-radius:var(--radius-pill);
  background:var(--surface);
}
.pix-code code{
  flex:1;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-family:var(--font-mono);
  font-size:var(--fs-sm);
  color:var(--text-2);
}
.pix-copy{
  flex:none;
  min-height:36px;
  padding:0 var(--space-4);
  border:0;
  border-radius:var(--radius-pill);
  background:var(--brand);
  color:var(--brand-ink);
  font-family:var(--font-sans);
  font-size:var(--fs-sm);
  font-weight:600;
  cursor:pointer;
}
.pix-copy:hover{ background:var(--brand-strong); }
.pix-block__hint{
  margin:var(--space-2) 0 0;
  font-size:var(--fs-2xs);
  color:var(--muted);
}

.pix-total{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:var(--space-4);
  margin-top:var(--space-5);
  padding-top:var(--space-5);
  border-top:1px solid var(--line);
}
.pix-total dt{ font-size:var(--fs-sm); color:var(--text-2); margin:0; }
.pix-total dd{
  margin:0;
  font-family:var(--font-display);
  font-size:2.5rem;
  font-weight:400;
  letter-spacing:0;
  color:var(--text);
  font-variant-numeric:tabular-nums;
  line-height:1.1;
}

/* ==========================================================================
   9. TOAST — card com sombra única
   ========================================================================== */

.toast-stack{
  position:fixed;
  left:50%;
  bottom:var(--space-6);
  z-index:50;
  display:grid;
  gap:var(--space-2);
  width:min(420px, calc(100vw - 32px));
  transform:translateX(-50%);
}
.toast{
  display:flex;
  align-items:center;
  gap:var(--space-3);
  padding:var(--space-3) var(--space-4);
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
  box-shadow:var(--shadow);
  font-size:var(--fs-sm);
  line-height:1.43;
  color:var(--text);
  animation:toast-in .18s ease-out;
}
.toast-ok{ border-color:var(--brand-line); }
.toast-err{ border-color:var(--danger); }
.toast svg{ flex:none; }
@keyframes toast-in{
  from{ opacity:0; transform:translateY(6px); }
  to{ opacity:1; transform:translateY(0); }
}

/* ==========================================================================
   10. FOCO E MOVIMENTO
   ========================================================================== */

:where(.btn, .input, .select, .textarea, .step, .icon-btn, .pix-copy, a, summary, label):focus-visible{
  outline:2px solid var(--brand-text);
  outline-offset:2px;
}
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
