/* telas/blueprint/estilo.css — Blueprint (#148). Cor SÓ por token; prefixo bp- em toda classe. */
.bp.ds-molde { width: 100%; color: var(--ink); min-width: 0; padding-bottom: var(--ds-s8); }
.bp .muted { color: var(--muted); }
.bp h2 { margin: 0 0 8px; font-size: 15px; }
.bp :focus-visible { outline: 2px solid var(--ds-accent); outline-offset: 2px; }
.bp .btn { min-height: 44px; }
.bp input, .bp select, .bp textarea { min-height: 40px; max-width: 100%; color: var(--ink); background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 8px; font: inherit; }
.bp textarea { width: 100%; resize: vertical; }
.bp label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.bp-resumo-topo { margin: 2px 0 0; font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.bp-resumo-topo b { color: var(--ink); }
.bp-abas { display: flex; gap: 4px; flex-wrap: wrap; }
.bp-filtros { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.bp-galeria { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.bp-card { display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); overflow: hidden; min-width: 0; }
.bp-card.ativo { border-color: var(--ds-accent); }
.bp-card-abrir { display: block; padding: 0; border: 0; background: none; cursor: pointer; width: 100%; }
.bp-mini { aspect-ratio: 16 / 10; background: var(--bg); border-bottom: 1px solid var(--line); overflow: hidden; }
.bp-mini img { width: 100%; height: 100%; object-fit: cover; object-position: top left; display: block; }
.bp-mini-vazio { width: 100%; height: 100%; min-height: 120px; display: flex; align-items: center; justify-content: center; font-size: 12px; color: var(--muted); background: var(--line); }
.bp-mini-vazio.falhou { background: var(--bg); }
.bp-card-txt { padding: 10px 12px 12px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.bp-card-l1 { display: flex; justify-content: space-between; align-items: center; gap: 8px; min-width: 0; }
.bp-card-l2 { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12px; }
.bp-card-l3 { margin: 0; font-size: 12px; font-variant-numeric: tabular-nums; }
.bp-pend { color: var(--ink); }
.bp-link { background: none; border: 0; padding: 0; color: var(--ink); font: inherit; font-weight: 600; text-align: left; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-height: 32px; }
.bp-link:hover { color: var(--ink-accent); }
.bp-link-sec { color: var(--ink-accent); font-size: 13px; }
.bp-detalhe { display: flex; flex-direction: column; gap: 12px; }
.bp-meta { margin: 0; font-size: 12px; overflow-wrap: anywhere; }
.bp-linha { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.bp-fid { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.bp-lados { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bp-lado { margin: 0; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.bp-lado figcaption { font-size: 12px; }
.bp-lado img { width: 100%; display: block; border: 1px solid var(--line); border-radius: 6px; }
.bp-acoes { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.bp-itens { list-style: none; margin: 0; padding: 0; }
.bp-item { padding: 10px 0; border-top: 1px solid var(--line); }
.bp-item.descartado { opacity: .6; }
.bp-item-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.bp-item-cab input { flex: 1 1 220px; min-width: 0; }
.bp-item-det { margin: 6px 0 0; font-size: 13px; max-width: 80ch; overflow-wrap: anywhere; }
.bp-item-acoes { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin-top: 8px; }
.bp-tarefas summary { cursor: pointer; min-height: 32px; color: var(--muted); }
.bp-tarefas ul { margin: 6px 0 0; padding-left: 18px; font-size: 13px; }
.bp-form { display: flex; flex-direction: column; gap: 10px; }
.bp-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.bp-previa { max-width: 100%; border: 1px solid var(--line); border-radius: 6px; }
.bp-erro { color: var(--ds-err); margin: 0; }
.bp-semana { display: flex; flex-direction: column; gap: 12px; }
.bp-semana-grade { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.bp-bloco { padding: 16px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); min-width: 0; }
.bp-bloco ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.bp-bloco li { overflow-wrap: anywhere; }
.bp-skel { display: grid; gap: 10px; }
.bp-skel div { height: 120px; border-radius: 8px; background: var(--line); }
.bp-item.historia { border-top-width: 2px; }
.bp-item.filha { padding-left: var(--ds-s6); }
.bp-num { font-variant-numeric: tabular-nums; }
.bp-pontos select { min-width: 64px; }
.bp-novo-item { border-top: 1px solid var(--line); padding-top: 8px; }
.bp-novo-item summary { cursor: pointer; min-height: 32px; color: var(--muted); }
.bp-novo-item form { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin-top: 8px; }
.bp-novo-titulo { flex: 1 1 260px; }
.bp-sprint { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.bp-kpis { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.bp-kpis .ds-kpi-rot, .bp-kpis .ds-kpi-ref { white-space: normal; }
.bp-quadro { display: grid; gap: 12px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.bp-coluna { min-width: 0; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 8px; }
.bp-coluna h3 { margin: 0 0 8px; font-size: 13px; }
.bp-coluna ul, .bp-backlog { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.bp-scrum-item { border: 1px solid var(--line); border-radius: 8px; padding: 8px; background: var(--panel); min-width: 0; }
.bp-backlog .bp-scrum-item[draggable="true"] { cursor: grab; }
.bp-scrum-item.historia { border-left: 3px solid var(--ds-accent); }
.bp-scrum-l1 { display: flex; gap: 6px; align-items: center; min-width: 0; }
.bp-scrum-tit { color: var(--ink); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.bp-scrum-l2 { margin: 4px 0 0; font-size: 12px; overflow-wrap: anywhere; }
.bp-scrum-acoes { display: flex; flex-wrap: wrap; gap: 6px; align-items: end; margin-top: 6px; }
.bp-scrum-acoes .btn { min-height: 44px; min-width: 44px; }
@media (max-width: 1100px) { .bp-quadro { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) {
  .bp-quadro { grid-template-columns: minmax(0, 1fr); }
  .bp .ds-molde-corpo > .principal { align-self: stretch; max-width: 100%; }
  .bp-lados, .bp-grade { grid-template-columns: minmax(0, 1fr); }
  .bp-galeria { grid-template-columns: minmax(0, 1fr); }
}
/* #153 · telas do staging por nível */
.bp-niveis { margin: 0; color: var(--muted); font-variant-numeric: tabular-nums; }
.bp-niveis b { color: var(--text); }
/* #153 · checklist "Esta tela tem que conter" */
.bp-reqs { display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--line); padding-top: 12px; }
.bp-reqs h3 { margin: 0; font-size: 15px; }
.bp-req-resumo { margin: 0; }
.bp-req-selo { font-size: 12px; }
.bp-req-lista { list-style: none; margin: 0; padding: 0; }
.bp-req { padding: 8px 0; border-top: 1px solid var(--line); }
.bp-req.proposto { border-left: 2px solid var(--ink-accent); padding-left: 8px; }
.bp-req-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 44px; }
.bp-req-cab input { flex: 1 1 220px; min-width: 0; }
.bp-req-tit { flex: 1 1 200px; min-width: 0; }
.bp-req-estado { min-height: 44px; }
.bp-req-corpo { display: flex; flex-direction: column; gap: 6px; padding: 4px 0 4px var(--ds-s6); }
.bp-req-form { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; }
.bp-req-form input:not([type=file]) { flex: 1 1 260px; min-width: 0; }
.bp-req-arq input { max-width: 220px; }
.bp-evs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.bp-ev { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; overflow-wrap: anywhere; }
.bp-ev .bp-link { min-height: 32px; font-weight: 500; color: var(--ink-accent); }
.bp-ev-tirar { margin-left: auto; }
.bp-ev-img { flex-basis: 100%; max-width: 100%; border: 1px solid var(--line); border-radius: 6px; }
.bp-recorte { display: flex; flex-direction: column; gap: 6px; }
.bp-recorte-area { position: relative; cursor: crosshair; touch-action: none; user-select: none; }
.bp-recorte-area img { width: 100%; display: block; border: 1px solid var(--line); border-radius: 6px; }
.bp-recorte-sel { position: absolute; border: 2px solid var(--ink-accent); background: var(--line); opacity: .6; pointer-events: none; }
/* #153 v2 · preview, trocar imagem e evolução */
.bp-lado-abrir { display: block; padding: 0; border: 0; background: none; cursor: zoom-in; width: 100%; }
.bp-aviso { font-size: 12px; margin: 0; }
.bp-corta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; max-width: 100%; }
.bp-rotulo { font-size: 12px; color: var(--muted); }
.bp-zona { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; padding: 16px; border: 1px dashed var(--line); border-radius: 8px; color: var(--muted); font-size: 13px; text-align: center; }
.bp-zona.sobre { border-color: var(--ds-accent); background: var(--bg); color: var(--ink); }
.bp-zona kbd { font: inherit; font-size: 11px; padding: 1px 5px; border: 1px solid var(--line); border-radius: 4px; }
.bp-trocar, .bp-evolucao { display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--line); padding-top: 12px; }
.bp-trocar h3, .bp-evolucao h3 { margin: 0; font-size: 14px; }
.bp-evolucao h4 { margin: 0 0 6px; font-size: 13px; }
.bp-trocar-previa { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 12px; align-items: start; }
.bp-trocar-previa img { width: 100%; border: 1px solid var(--line); border-radius: 6px; }
.bp-trocar-campos { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.bp-versoes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.bp-versao { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; min-width: 0; }
.bp-versao.proposta { border-color: var(--ds-accent); }
.bp-versao.substituida, .bp-versao.recusada { opacity: .75; }
.bp-versao-mini { padding: 0; border: 0; background: var(--bg); cursor: zoom-in; aspect-ratio: 16 / 10; overflow: hidden; border-radius: 4px; }
.bp-versao-mini img { width: 100%; height: 100%; object-fit: cover; object-position: top left; display: block; }
.bp-versao-txt { display: flex; flex-direction: column; gap: 3px; font-size: 12px; min-width: 0; }
.bp-versao-acoes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.bp-antes-depois { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; margin-bottom: 8px; }
.bp-antes-depois label { display: flex; flex-direction: column; gap: 2px; font-size: 12px; min-width: 0; }
.bp-antes-depois select { max-width: 220px; }
.bp-prints { list-style: none; margin: 0; padding: 0; max-height: 260px; overflow: auto; }
.bp-prints li { display: grid; grid-template-columns: auto auto minmax(0, 1fr) auto auto; gap: 8px; align-items: center; padding: 4px 0; border-top: 1px solid var(--line); font-size: 12px; }
/* preview em tela cheia (portal no body) */
.bpp { position: fixed; inset: 0; z-index: 1000; display: flex; flex-direction: column; background: var(--bg); color: var(--ink); }
.bpp-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--panel); }
.bpp-titulo { margin-right: auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bpp-modos, .bpp-zoom, .bpp-nav { display: flex; gap: 4px; align-items: center; }
.bpp .btn.ghost { color: inherit; }
.bpp-pct { min-width: 60px; font-variant-numeric: tabular-nums; }
.bpp-palco { position: relative; flex: 1; overflow: hidden; cursor: grab; touch-action: none; user-select: none; }
.bpp-palco:active { cursor: grabbing; }
.bpp-quadro { position: absolute; inset: 0; overflow: hidden; }
.bpp-quadro img { position: absolute; left: 0; top: 0; transform-origin: 0 0; max-width: none; pointer-events: none; }
.bpp-vazio { display: flex; height: 100%; align-items: center; justify-content: center; color: var(--muted); }
.bpp-lado { position: absolute; inset: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; }
.bpp-lado figure { position: relative; margin: 0; overflow: hidden; }
.bpp-lado figcaption { position: absolute; z-index: 1; top: 6px; left: 8px; font-size: 12px; background: var(--panel); border: 1px solid var(--line); padding: 2px 6px; border-radius: 4px; }
.bpp-deslizar { position: absolute; inset: 0; }
.bpp-cima { position: absolute; inset: 0; }
.bpp-alca { position: absolute; top: 0; bottom: 0; width: 24px; margin-left: -12px; cursor: ew-resize; z-index: 2; }
.bpp-alca::after { content: ""; position: absolute; left: 11px; top: 0; bottom: 0; width: 2px; background: var(--ds-accent); box-shadow: var(--shadow); }
.bpp-etq { position: absolute; top: 8px; z-index: 2; font-size: 12px; background: var(--panel); border: 1px solid var(--line); padding: 2px 6px; border-radius: 4px; }
.bpp-etq.esq { left: 8px; } .bpp-etq.dir { right: 8px; }
.bpp-range { position: absolute; left: 10%; right: 10%; bottom: 14px; z-index: 3; width: 80%; }
.bpp-legenda { margin: 0; padding: 6px 12px; font-size: 12px; color: var(--muted); }
@media (max-width: 720px) {
  .bpp-lado { grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; }
  .bp-trocar-previa { grid-template-columns: minmax(0, 1fr); }
  .bp-prints li { grid-template-columns: auto auto minmax(0, 1fr); }
}
/* #155 · aba Sistema */
.bp-sis { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.bp-sis h3 { margin: 0 0 6px; font-size: 13px; }
.bp-sis-sub { font-size: 12px; }
.bp-sis-kpis { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.bp-sis-bloco { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.bp-sis-camadas { display: flex; flex-direction: column; gap: 14px; }
.bp-sis-pecas { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.bp-sis-peca { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.bp-sis-peca[data-tom="err"] { border-color: var(--ds-err); }
.bp-sis-peca[data-tom="warn"] { border-color: var(--ds-warn); }
.bp-sis-peca-l1 { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.bp-sis-medidas { margin: 0; padding-left: 16px; font-size: 12px; overflow-wrap: anywhere; }
.bp-sis-fluxo { list-style: none; margin: 0; padding: 0 0 6px; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(140px, 1fr); gap: 8px; overflow-x: auto; }
.bp-sis-coluna { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); }
.bp-sis-coluna + .bp-sis-coluna::before { content: "→"; position: absolute; left: -9px; top: 8px; color: var(--muted); font-size: 12px; }
.bp-sis-no { display: flex; align-items: center; gap: 6px; font-size: 12px; padding: 4px 6px; border-radius: 6px; background: var(--panel); overflow-wrap: anywhere; }
.bp-sis-ponto { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--ds-none); }
.bp-sis-no[data-tom="ok"] .bp-sis-ponto { background: var(--ds-ok); }
.bp-sis-no[data-tom="warn"] .bp-sis-ponto { background: var(--ds-warn); }
.bp-sis-no[data-tom="err"] .bp-sis-ponto { background: var(--ds-err); }
.bp-sis-modelo .bp-sis-coluna { gap: 4px; }
.bp-sis-modelo .bp-sis-coluna p { margin: 0; }
.bp-sis-arestas { margin: 0; padding-left: 18px; font-size: 12px; columns: 2 320px; }
.bp-sis-badges { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.bp-sis-le summary { cursor: pointer; font-size: 12px; }
.bp-sis-le p { margin: 4px 0; font-size: 12px; display: flex; flex-wrap: wrap; gap: 4px; }
.bp-sis-le code { font-size: 11px; padding: 1px 4px; border-radius: 4px; background: var(--bg); border: 1px solid var(--line); }
.bp-lede { font-size: 13px; display: flex; flex-wrap: wrap; gap: 6px; align-items: baseline; }
@media (max-width: 640px) {
  .bp-sis-fluxo { grid-auto-flow: row; grid-auto-columns: auto; overflow-x: visible; }
  .bp-sis-coluna + .bp-sis-coluna::before { content: "↓"; left: 8px; top: -11px; }
  .bp-sis-arestas { columns: 1; }
}

/* #160 · aba Fidelidade: lista pior primeiro, mapa de calor, regiões, placar N0–N4 */
.bp-fidelidade { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.bp-kpis { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.bp-fid-rodada { margin: 0; font-size: 12px; }
.bp-fl-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.bp-fl { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); min-width: 0; }
.bp-fl.aberto { border-color: var(--ds-accent); }
.bp-fl-cab { display: grid; grid-template-columns: 96px minmax(0, 2fr) 48px 96px minmax(0, 1.4fr) minmax(0, 1fr); gap: 12px; align-items: center; width: 100%; padding: 8px 12px; border: 0; background: none; color: var(--ink); font: inherit; text-align: left; cursor: pointer; min-height: 44px; }
.bp-fl-nome { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bp-fl-nome > * { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bp-fl-nome .muted, .bp-fl-pior, .bp-fl-ia { font-size: 12px; }
.bp-fl-corpo { padding: 0 12px 12px; display: flex; flex-direction: column; gap: 10px; }
.bp-fl-vis { display: grid; grid-template-columns: minmax(0, 2fr) minmax(220px, 1fr); gap: 12px; align-items: start; }
.bp-calor { position: relative; width: 96px; aspect-ratio: 16 / 10; border: 1px solid var(--line); border-radius: 4px; overflow: hidden; background: var(--bg); }
.bp-calor.grande { width: 100%; }
.bp-calor img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: top left; }
.bp-calor-grade { position: absolute; inset: 0; display: grid; }
.bp-regioes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.bp-regioes li { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(60px, 1fr) 44px; gap: 8px; align-items: center; }
.bp-regioes b { text-align: right; font-variant-numeric: tabular-nums; }
.bp-barra { height: 8px; border-radius: 4px; background: var(--line); overflow: hidden; }
.bp-barra i { display: block; height: 100%; }
.bp-barra .t-ok { background: var(--ds-ok); }
.bp-barra .t-warn { background: var(--ds-warn); }
.bp-barra .t-err, .bp-barra .t-none { background: var(--ds-err); }
.bp-analise h3 { margin: 0 0 6px; font-size: 13px; }
.bp-analise ul { margin: 0; padding-left: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.bp-analise-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
@media (max-width: 760px) {
  .bp-fl-cab { grid-template-columns: 72px minmax(0, 1fr) auto; }
  .bp-fl-cab > :nth-child(3), .bp-fl-cab > :nth-child(5), .bp-fl-cab > :nth-child(6) { display: none; }
  .bp-calor { width: 72px; }
  .bp-calor.grande { width: 100%; }
  .bp-fl-vis, .bp-analise-col { grid-template-columns: 1fr; }
}
