/* Frameworks diagnósticos: edição do time (assets/js/fw-editor.js) e "Reportar erro" do aluno.
   Página: barra fixa de edição, marcas nos quadros (escolhido, revisado, erro), painel lateral do quadro.
   Lista: Painel dos frameworks, selos e ferramentas de cada cartão, editor do cartão em diálogo.
   Só tokens de tokens.css (letra: 16 texto, 15 botões, 14 metadados e selos, 13 rótulos em maiúsculas), claro e
   escuro pelos mesmos tokens. Mobile first; sem rolagem lateral em 390 px; com o zoom-out de 15% (≥ 720 px),
   vw e vh são divididos por --zoom quando precisam da tela inteira. */

/* ---------- Aluno: "⚑ Reportar erro" na gaveta do quadro ---------- */
.fw-rep{display:grid;gap:.6rem;justify-items:start}
.fw-rep-btn{background:transparent;border:1px solid var(--line);color:var(--muted)}
.fw-rep-btn:hover{color:var(--erro);border-color:var(--erro);filter:none}
.fw-rep-btn.fw-rep-feito{color:var(--ok);border-color:var(--ok)}
.fw-rep-form{justify-self:stretch;display:grid;gap:.5rem;padding:.75rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.fw-rep-form[hidden]{display:none}
.fw-rep-form label{font-weight:var(--fw-semibold)}
.fw-rep-form textarea{width:100%;min-height:84px;resize:vertical;font:inherit;font-size:var(--fs-body);padding:.5rem .65rem;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--fg)}
.fw-rep-form textarea[aria-invalid="true"]{border-color:var(--erro)}
.fw-rep-form .btns{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}
.fw-rep-form .btn{min-height:40px;padding:.4rem 1rem;font-size:var(--fs-small)}

/* ---------- Edição: barra fixa no topo do fluxograma ---------- */
html.fw-editando .post.full.fw{overflow:clip}  /* "hidden" impediria a barra de ficar fixa ao rolar */
html.fw-editando .fw-dica{display:none}
.fw-ed-topo{position:sticky;top:calc(var(--header-h) + env(safe-area-inset-top,0px));z-index:8;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem .75rem;padding:.55rem .7rem;background:var(--surface);border:1.5px solid var(--orange);border-radius:var(--r);box-shadow:var(--shadow);min-width:0}
.fw-ed-linha{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0}
.fw-ed-fim{margin-left:auto}
.fw-ed-rotulo{font-size:var(--fs-small)}
.fw-ed-hist{display:inline-flex;gap:.4rem}
.fw-ed-progresso{font-size:var(--fs-meta);font-weight:var(--fw-semibold);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin-right:.2rem}
.fw-ed-progresso.completo{color:var(--ok)}
.fw-ed-f{display:inline-flex;align-items:center;justify-content:center;min-height:40px;min-width:40px;padding:.2rem .7rem;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--fg);font:inherit;font-size:var(--fs-small);font-weight:var(--fw-semibold);white-space:nowrap;cursor:pointer}
.fw-ed-f:hover{background:var(--surface-2)}
.fw-ed-f:disabled{opacity:.45;cursor:default;background:var(--surface)}
.fw-ed-f[data-fwe="desfazer"],.fw-ed-f[data-fwe="refazer"]{font-size:1.25rem;font-weight:var(--fw-black)}  /* ícones ↶ ↷ maiores que o texto */
.fw-ed-topo .btn{min-height:40px;padding:.35rem 1rem;font-size:var(--fs-small)}
.fw-ed-ajuda{border-left:4px solid var(--orange);background:var(--surface-2);border-radius:0 var(--r-md) var(--r-md) 0;padding:.5rem .8rem}
.fw-ed-ajuda summary{cursor:pointer;font-weight:var(--fw-black);font-size:var(--fs-small);min-height:32px;display:flex;align-items:center}
.fw-ed-ajuda p{margin:.3rem 0 .2rem}
.fw-ed-erro-geral{margin:0}
.fw-ed-erro-geral[hidden],.fw-ed-orfaos[hidden],.fw-ed-p-erros[hidden]{display:none}
.fw-ed-orfaos,.fw-ed-p-erros{display:grid;gap:.5rem;padding:.65rem .8rem;border:1.5px solid var(--erro);border-radius:var(--r-md);background:var(--erro-bg)}
.fw-ed-rot{font-size:var(--fs-label);font-weight:var(--fw-black);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted)}
.fw-ed-p-erros .fw-ed-rot,.fw-ed-orfaos .fw-ed-rot{color:var(--erro)}
.fw-ed-erro-item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.4rem .6rem;min-width:0}
.fw-ed-erro-item p{flex:1 1 220px;min-width:0;overflow-wrap:anywhere}
.fw-ed-erro-trecho{display:block;color:var(--muted);font-size:var(--fs-meta)}

/* ---------- Marcas nos quadros (só no modo de edição) ---------- */
html.fw-editando .fw-arvore,html.fw-editando .fw-lista{padding-top:6px}
.fw-no.fw-ed-sel{outline:3px solid var(--orange);outline-offset:3px}
.fw-ed-marca,.fw-ed-flag{position:absolute;top:-12px;display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 .4rem;border-radius:var(--r-pill);background:var(--surface);font-size:var(--fs-meta);font-weight:var(--fw-black);line-height:1;box-shadow:var(--shadow);pointer-events:none}
.fw-ed-marca{right:-10px;border:2px solid var(--ok);color:var(--ok)}
.fw-ed-flag{left:-10px;border:2px solid var(--erro);color:var(--erro)}
.fw-lista .fw-ed-marca{right:6px}
.fw-lista .fw-ed-flag{left:auto;right:42px}

/* ---------- Painel lateral do quadro (não modal: o fluxograma continua clicável ao lado) ---------- */
.fw-ed-painel{position:fixed;top:calc(var(--header-h) + env(safe-area-inset-top,0px));right:0;bottom:0;z-index:15;width:min(500px,calc(100vw / var(--zoom)));display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--line);box-shadow:-12px 0 32px rgba(0,0,0,.18);overflow-wrap:anywhere}
.fw-ed-painel[hidden]{display:none}
.fw-ed-p-topo{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--line)}
.fw-ed-p-txt{display:grid;gap:.2rem;min-width:0}
.fw-ed-p-titulo{font-size:1.3rem;color:var(--heading-on-surface)}
.fw-ed-p-titulo:focus-visible{outline:3px solid var(--orange);outline-offset:2px;border-radius:4px}
.fw-ed-fechar{flex:none;width:44px;height:44px;border:0;border-radius:50%;background:var(--surface-2);color:var(--fg);font-size:var(--fs-body);font-weight:var(--fw-black);cursor:pointer}
.fw-ed-fechar:hover{filter:brightness(.95)}
.fw-ed-p-corpo{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:grid;align-content:start;gap:.85rem;padding:var(--space-3) var(--space-4) var(--space-8)}
.fw-ed-ir select{font-weight:var(--fw-semibold)}
.fw-ed-rev{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .8rem;padding:.55rem .75rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg)}
.fw-ed-rev-cx{display:inline-flex;align-items:center;gap:.45rem;font-weight:var(--fw-black);min-height:40px;cursor:pointer}
.fw-ed-rev-cx input{width:22px;height:22px;accent-color:var(--ok);margin:0}
.fw-ed-rev-por{font-size:var(--fs-meta);color:var(--muted)}
.fw-ed-rev-por.ok{color:var(--ok);font-weight:var(--fw-semibold)}
.fw-ed-acoes{display:flex;flex-wrap:wrap;gap:.4rem}
.pillbtn.fw-ed-seta{min-width:40px;justify-content:center;padding-inline:.5rem}
.pillbtn.fw-ed-perigo{background:var(--erro-bg);color:var(--erro)}
.pillbtn:disabled{opacity:.4;cursor:default;filter:none}
.fw-ed-form{display:grid;gap:.6rem;min-width:0}
.fw-ed-grupo{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);min-width:0}
.fw-ed-grupo > summary{cursor:pointer;display:flex;align-items:center;gap:.5rem;padding:.6rem .8rem;min-height:44px;font-weight:var(--fw-black);color:var(--heading-on-surface);border-radius:var(--r-md)}
.fw-ed-grupo[open] > summary{border-bottom:1px solid var(--line);border-radius:var(--r-md) var(--r-md) 0 0}
.fw-ed-grupo-corpo{display:grid;gap:.75rem;padding:.75rem .8rem .9rem;min-width:0}
.fw-ed-campo{min-width:0}
.fw-ed-campo textarea{resize:vertical;line-height:1.45}
.fw-ed-painel .fw-ed-campo input[type=color],.fw-ed-dlg .fw-ed-campo input[type=color]{width:5.5rem;padding:.2rem;cursor:pointer}
.fw-ed-campo [aria-invalid="true"]{border-color:var(--erro)!important;box-shadow:0 0 0 1px var(--erro)}
.fw-ed-dica{font-size:var(--fs-meta);font-weight:var(--fw-regular);color:var(--muted)}
.fw-ed-erro{font-size:var(--fs-meta);font-weight:var(--fw-semibold);color:var(--erro)}
.fw-ed-erro[hidden]{display:none}
.fw-ed-objs{display:grid;gap:.55rem;margin:0;padding:0;border:0;min-width:0}
.fw-ed-objs legend{padding:0;margin-bottom:.35rem;font-weight:var(--fw-semibold)}
.fw-ed-objs > .pillbtn{justify-self:start}
.fw-ed-objs-lista{list-style:none;margin:0;padding:0;display:grid;gap:.6rem;min-width:0}
.fw-ed-obj{display:grid;gap:.55rem;padding:.65rem;border:1px solid var(--line);border-left:4px solid var(--fw-cor,var(--navy-mid));border-radius:var(--r-sm);background:var(--bg);min-width:0}
.fw-ed-obj-cab{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}
.fw-ed-obj-cab .fw-ed-rot{margin-right:auto}
.fw-ed-vazio{margin:0}

/* Computador largo: o conteúdo abre espaço para o painel, que fica ao lado do fluxograma */
@media (min-width:1100px){
  html.fw-ed-lateral .cols{padding-right:calc(500px + var(--space-4))}
}

/* ---------- Lista: Painel dos frameworks ---------- */
.fw-painel{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);border-top:4px solid var(--orange);padding:var(--space-4);display:grid;gap:var(--space-4);min-width:0}
.fw-painel-topo{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-3) var(--space-4);min-width:0}
.fw-painel-txt{display:grid;gap:.3rem;flex:1 1 320px;min-width:0}
.fw-painel h2{font-size:var(--fs-h2);color:var(--heading-on-surface)}
.fw-painel-intro{color:var(--muted);max-width:75ch}
.fw-painel-btns{display:flex;flex-wrap:wrap;gap:var(--space-2);min-width:0}
.fw-painel-btns .btn{font-size:var(--fs-small)}
.fw-painel .btn:disabled{opacity:.5;cursor:not-allowed;filter:none}
.fw-contadores{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin:0}
@media (min-width:720px){.fw-contadores{grid-template-columns:repeat(4,minmax(0,1fr))}}
/* Número em cima e rótulo embaixo, sem mudar a ordem de leitura (dt antes do dd) */
.fw-contadores > div{display:flex;flex-direction:column-reverse;align-items:center;justify-content:flex-end;gap:.15rem;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--r-md);text-align:center;min-width:0}
.fw-contadores dt{color:var(--muted);font-size:var(--fs-meta);overflow-wrap:anywhere}
.fw-contadores dd{margin:0;font-size:var(--fs-h2);font-weight:var(--fw-black);color:var(--heading-on-surface);font-variant-numeric:tabular-nums;line-height:1.1}
.fw-painel-aviso{padding:.6rem .8rem;border-left:4px solid var(--orange-deep);background:var(--bg);border-radius:var(--r-sm);font-size:var(--fs-small)}

/* ---------- Lista: selos e ferramentas do time em cada cartão ---------- */
.fw-status,.fw-ferr{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0}
.fw-status[hidden]{display:none}
.fw-ferr{padding-top:.6rem;border-top:1px dashed var(--line)}
.fw-ferr .fw-rot{font-size:var(--fs-label);font-weight:var(--fw-black);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted);margin-right:.2rem}
.fw-selo{display:inline-flex;align-items:center;font-size:var(--fs-meta);font-weight:700;padding:.15rem .6rem;border-radius:var(--r-pill);border:1px solid transparent}
.fw-selo.editado{background:var(--ok-bg);color:var(--ok)}
.fw-selo.oculto,.fw-selo.erros{background:var(--erro-bg);color:var(--erro)}
.fw-selo.revisao{border-color:var(--line);color:var(--muted);font-variant-numeric:tabular-nums}
.fw-selo.revisao.completa{border-color:var(--ok);color:var(--ok)}
/* Oculto: o time vê o cartão apagado, com o selo; o aluno não recebe o cartão */
.fw-card.fw-oculto{outline:2px dashed var(--orange-deep);outline-offset:-2px}
.fw-card.fw-oculto > :not(.fw-ferr):not(.fw-status){opacity:.5}

/* ---------- Lista: editor do cartão (diálogo) ---------- */
.fw-ed-dlg{width:min(680px,calc(100vw / var(--zoom) - 2 * var(--gutter)));max-width:none;max-height:calc(100dvh / var(--zoom) - 2rem);padding:0;border:0;border-radius:var(--r-lg);background:var(--surface);color:var(--fg);box-shadow:var(--shadow);overflow:auto;overscroll-behavior:contain}
.fw-ed-dlg::backdrop{background:rgba(11,27,46,.6)}
.fw-ed-dlg-topo{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--line)}
.fw-ed-dlg-txt{display:grid;gap:.25rem;min-width:0;overflow-wrap:anywhere}
.fw-ed-dlg h2{font-size:var(--fs-h2);color:var(--heading-on-surface)}
.fw-ed-dlg-corpo{padding:var(--space-4)}
.fw-ed-dlg-corpo .form-error{margin:0}
.fw-ed-dlg-pe{position:sticky;bottom:0;z-index:2;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border-top:1px solid var(--line)}
.fw-ed-dlg-pe .btns{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-left:auto}

@media print{
  .fw-ed-topo,.fw-ed-ajuda,.fw-ed-orfaos,.fw-ed-erro-geral,.fw-ed-painel,.fw-rep,.fw-ed-entrar,.fw-ed-original,.fw-painel,.fw-status,.fw-ferr{display:none!important}
}
