/* Laboratório Rush (29/10/2026) — complementa rush.css (tokens, cabeçalho, botões, campos). PROJETO.md §5–6. */
.pagina-lab { background: radial-gradient(ellipse 60% 40% at 30% 0%, rgba(18, 99, 214, .18), rgba(18, 99, 214, 0) 70%), var(--fundo); }
.lab { max-width: 1280px; margin: 0 auto; padding: 32px var(--margem) 64px; }
.lab__topo { max-width: 860px; margin-bottom: 28px; }
.lab__titulo { font-size: clamp(30px, 3.6vw, 48px); line-height: 1.1; font-weight: 800; letter-spacing: -.02em; }
.lab__descricao { margin-top: 12px; font-size: 18px; color: #D3DEEA; }
.lab__grade { display: grid; grid-template-columns: 55fr 45fr; gap: 32px; align-items: start; }

/* ---------- palco (visual) ---------- */
.palco { position: sticky; top: calc(var(--cab) + 16px); }
.palco__quadro { position: relative; aspect-ratio: 4 / 3; border: 1px solid var(--borda); border-radius: 20px; overflow: hidden;
  background: radial-gradient(ellipse 60% 60% at 50% 50%, #0E2E6E, #05101F 75%); box-shadow: 0 24px 60px rgba(0, 0, 0, .45); }
.palco__camadas { position: absolute; inset: 0; }
.palco__img { position: absolute; inset: 0; opacity: 0; transform: scale(.975); transition: opacity .45s ease, transform .45s ease; }
.palco__img.visivel { opacity: 1; transform: scale(1); }
.palco__img.saindo { opacity: 0; transform: scale(1.015); }
.palco__img img { width: 100%; height: 100%; object-fit: cover; }
.palco__img.falhou img { display: none; }
.palco__img.falhou::after { content: "Ilustração indisponível"; position: absolute; inset: 0; display: grid; place-items: center; color: var(--texto-2); }
.palco__regioes { position: absolute; inset: 0; pointer-events: none; }
.regiao { position: absolute; border-radius: 10px; border: 2px solid transparent; transition: border-color .3s, box-shadow .3s, background-color .3s; }
.regiao.feita { border-color: rgba(91, 155, 255, .35); }
.regiao.ativa { border-color: #8AB8FF; background: rgba(77, 155, 255, .14); box-shadow: 0 0 0 4px rgba(77, 155, 255, .2), 0 0 28px rgba(77, 155, 255, .55); }
.palco__etiqueta { position: absolute; left: 16px; bottom: 16px; max-width: calc(100% - 32px); padding: 8px 12px; border-radius: 10px; font-size: 14px; font-weight: 600;
  background: rgba(7, 17, 31, .82); border: 1px solid var(--borda); }
.palco__etiqueta:empty { display: none; }
.palco__pular { position: absolute; right: 12px; top: 12px; min-height: 40px; padding: 0 12px; border: 1px solid var(--borda); border-radius: 10px;
  background: rgba(7, 17, 31, .82); color: var(--texto); font: 600 14px var(--fonte); cursor: pointer; }
.palco__nota { margin-top: 10px; font-size: 13px; color: var(--texto-2); }
.palco__nota span:first-child { color: var(--texto); font-weight: 700; }
.formatos { margin-top: 14px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.formato { position: relative; display: grid; gap: 6px; padding: 6px 6px 10px; border: 1.5px solid var(--borda); border-radius: 14px; background: var(--card);
  color: var(--texto); font: 600 14px var(--fonte); cursor: pointer; transition: border-color .15s, transform .15s; }
.formato img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 9px; }
.formato:hover { border-color: var(--realce); transform: translateY(-2px); }
.formato.ativo { border-color: var(--realce); box-shadow: 0 0 0 1px var(--realce) inset, 0 8px 22px rgba(18, 99, 214, .35); }
.formato small { position: absolute; top: 10px; right: 10px; padding: 2px 7px; border-radius: 6px; font-size: 11px; background: var(--amarelo); color: #1A1300; }

/* ---------- painel (controles) ---------- */
.painel { padding: 24px; border: 1px solid #34506F; border-radius: 20px; background: linear-gradient(180deg, #13243A, var(--card)); box-shadow: 0 18px 40px rgba(0, 0, 0, .35); }
.trilha { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.trilha button { width: 100%; min-height: 44px; display: flex; align-items: center; gap: 8px; padding: 6px 8px; border: 0; border-radius: 10px; background: none;
  color: var(--texto-2); font: 500 14px var(--fonte); cursor: pointer; }
.trilha button:disabled { cursor: default; opacity: .55; }
.trilha i { display: grid; place-items: center; flex: none; width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--borda); font-style: normal; font-weight: 700; font-size: 13px; }
.trilha .atual button { color: #fff; font-weight: 700; }
.trilha .atual i, .trilha .feita i { background: var(--azul); border-color: var(--azul); color: #fff; }
.trilha__texto { margin: 6px 0 0; font-size: 13px; color: var(--texto-2); }
.lab-form { margin-top: 18px; }
.lab-etapa { display: grid; gap: 18px; }
.lab-etapa__titulo { font-size: 24px; font-weight: 700; line-height: 1.2; }
.lab-etapa__titulo:focus { outline: none; }
.lab-etapa__navega { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.escolhas--lab { grid-template-columns: 1fr 1fr; }
.orcamento { padding: 18px; border: 1px solid var(--borda); border-radius: 16px; background: var(--card-2); display: grid; gap: 10px; }
.orcamento__rotulo { font-weight: 600; color: var(--texto-2); }
.orcamento__valor { display: flex; align-items: baseline; gap: 8px; }
.orcamento__valor span { font-size: 26px; font-weight: 800; color: var(--realce); }
.orcamento__valor input { width: 100%; min-width: 0; border: 0; border-bottom: 2px solid var(--borda); background: none; color: #fff; font: 800 40px/1.1 var(--fonte); padding: 2px 0; }
.orcamento__valor input:focus { outline: none; border-bottom-color: var(--realce); }
.orcamento__slider { width: 100%; height: 32px; accent-color: var(--azul); cursor: pointer; }
.orcamento__familia { font-size: 14px; color: var(--texto-2); }
.orcamento__familia b { color: var(--texto); }
.ajuste { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid var(--borda); border-radius: 14px; background: var(--card-2); font-size: 15px; }
.ajuste b { color: var(--realce); }

/* ---------- resultado ---------- */
.resultado { display: grid; gap: 14px; }
.resultado__titulo { font-size: 20px; }
.selo-rev { justify-self: start; padding: 5px 10px; border-radius: 999px; font-size: 13px; font-weight: 600; color: #FFE2A1; background: rgba(245, 192, 76, .1); border: 1px solid rgba(245, 192, 76, .45); }
.numeros { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--borda); border-radius: 14px; overflow: hidden; }
.numeros div { padding: 12px 14px; display: grid; gap: 2px; background: var(--card-2); }
.numeros div + div { border-left: 1px solid var(--borda); }
.numeros small { color: var(--texto-2); font-size: 13px; }
.numeros b { font-size: 24px; font-weight: 800; }
.numeros div:last-child b { color: var(--realce); }
.numeros__nota, .motivo { font-size: 14px; color: var(--texto-2); }
.conferencias { border: 1px solid var(--borda); border-radius: 12px; padding: 0 12px; }
.conferencias summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 700; }
.conf--atencao summary { color: var(--amarelo); }
.conf--ok summary { color: var(--verde-claro); }
.conf--erro summary { color: var(--erro); }
.conferencias ul { margin: 0 0 12px; padding-left: 18px; display: grid; gap: 4px; font-size: 14px; }
.c--pass { color: #BDF5D4; } .c--unknown { color: #FFE2A1; } .c--fail { color: var(--erro); }
.notas { margin: 0; padding-left: 18px; font-size: 14px; color: #FFE2A1; }
.mudancas { padding: 10px 14px; border-radius: 12px; border: 1px solid rgba(77, 155, 255, .45); background: rgba(18, 99, 214, .12); font-size: 14px; }
.mudancas ul { margin: 6px 0 0; padding-left: 18px; color: var(--texto-2); }
.pecas { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.peca { border: 1px solid var(--borda); border-radius: 14px; background: var(--card-2); }
.peca[open] { border-color: #3E5876; }
.peca summary { list-style: none; display: grid; grid-template-columns: 56px 1fr auto; align-items: center; gap: 12px; padding: 10px 12px; cursor: pointer; min-height: 64px; }
.peca summary::-webkit-details-marker { display: none; }
.peca summary img, .peca__semfoto { width: 56px; height: 56px; border-radius: 8px; background: #fff; object-fit: contain; }
.peca__semfoto { display: grid; place-items: center; font-size: 10px; text-align: center; line-height: 1.1; color: #44546A; background: #E6ECF3; }
.peca__txt { min-width: 0; display: grid; gap: 1px; }
.peca__txt small { font-size: 12px; color: var(--texto-2); }
.peca__txt b { font-size: 15px; line-height: 1.3; }
.peca__preco { font-weight: 800; white-space: nowrap; }
.sit { font-size: 12px; }
.sit--ok { color: #BDF5D4; } .sit--atencao { color: #FFE2A1; } .sit--erro { color: var(--erro); }
.peca__corpo { padding: 0 12px 12px; display: grid; gap: 10px; }
.peca__corpo dl { margin: 0; display: grid; gap: 6px; font-size: 14px; }
.peca__corpo dl div { display: grid; grid-template-columns: 110px 1fr; gap: 8px; }
.peca__corpo dt { color: var(--texto-2); }
.peca__corpo dd { margin: 0; }
.peca__corpo .btn { justify-self: start; }
.pendencias { font-size: 14px; color: var(--texto-2); }
.aviso { padding: 14px 16px; border-radius: 14px; font-size: 15px; line-height: 1.5; }
.aviso--atencao { border: 1px solid rgba(245, 192, 76, .55); background: rgba(245, 192, 76, .08); }
.aviso--info { border: 1px solid rgba(77, 155, 255, .5); background: rgba(18, 99, 214, .12); }
.aviso--erro { border: 1px solid rgba(255, 155, 155, .55); background: rgba(255, 90, 90, .08); }
.aviso__acoes { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 10px; }
.ref { border: 1px solid var(--borda); border-radius: 12px; padding: 0 12px 12px; }
.ref summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 600; color: var(--realce); }
.estado-carregando { color: var(--texto-2); }
.previa { border: 1px solid var(--borda); border-radius: 12px; padding: 0 12px; }
.previa summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 600; }
.previa__texto { margin: 0 0 12px; white-space: pre-wrap; font: 13px/1.5 var(--fonte); color: var(--texto-2); max-height: 260px; overflow: auto; }
.lab__avisos { margin-top: 32px; padding: 16px 18px; border: 1px solid var(--borda); border-radius: 16px; background: var(--card); font-size: 14px; color: var(--texto-2); display: grid; gap: 8px; }
.lab__avisos b { color: var(--texto); }
.lab-barra { display: none; }

/* ---------- tablet ---------- */
@media (max-width: 1023px) {
  .lab__grade { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .lab__grade > * { min-width: 0; }
  .palco { position: static; max-width: 720px; margin: 0 auto; width: 100%; }
  .painel { max-width: 720px; margin: 0 auto; width: 100%; }
}
/* ---------- celular ---------- */
@media (max-width: 767px) {
  .lab { padding-top: 18px; padding-bottom: 96px; }
  .lab__topo { margin-bottom: 14px; }
  .lab__titulo { font-size: 28px; }
  .lab__descricao { font-size: 16px; }
  .palco__quadro { aspect-ratio: auto; height: 250px; }
  .palco__img img { object-fit: contain; }
  .palco__etiqueta { font-size: 13px; left: 10px; bottom: 10px; }
  .formatos { gap: 6px; }
  .formato { font-size: 12px; padding: 4px 4px 8px; }
  .formato small { top: 6px; right: 6px; font-size: 10px; }
  .formatos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .painel { padding: 16px; }
  .trilha button span { display: none; }
  .trilha button { justify-content: center; }
  .escolhas--lab { grid-template-columns: 1fr; }
  .orcamento__valor input { font-size: 34px; }
  .numeros b { font-size: 20px; }
  .peca summary { grid-template-columns: 48px 1fr; }
  .peca summary img, .peca__semfoto { width: 48px; height: 48px; }
  .peca__preco { grid-column: 2; }
  .peca__corpo dl div { grid-template-columns: 1fr; gap: 0; }
  .lab-barra { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 56; align-items: center; justify-content: space-between; gap: 12px;
    padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: rgba(12, 24, 40, .97); border-top: 1px solid var(--borda); }
  .lab-barra[hidden] { display: none; }
  .lab-barra div { display: grid; font-size: 13px; }
  .lab-barra small { color: var(--texto-2); }
  .digitando .lab-barra { display: none; }
}
@media (max-width: 359px) {   /* celular de 320 px: "Personalizado" não cabe em 4 colunas */
  .formatos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .palco__img, .regiao { transition: none; }
}
