:root{
  --ink:#16232E;
  --ink-2:#22333F;
  --ink-3:#33454F;
  --paper:#E7ECEB;
  --card:#FFFFFF;
  --line:#CBD6D3;
  --line-soft:#E2E8E7;
  --text:#16232E;
  --muted:#5D6E74;
  --verde:#0B6E5F;
  --verde-soft:#E3F0ED;
  --oxi:#8F3226;
  --oxi-soft:#F6E7E4;
  --ambar:#9A6B12;
  --ambar-soft:#FAF0DC;
  --azul:#2C5670;
  --azul-soft:#E4EDF2;
  --display:'Bricolage Grotesque','Archivo','Helvetica Neue',system-ui,sans-serif;
  --body:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --r:3px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--text);
  font-family:var(--body);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;font-size:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
h1,h2,h3,h4{font-family:var(--display);font-weight:700;letter-spacing:-0.02em;margin:0}
a{color:var(--azul)}

/* ---------- layout ---------- */
.app{display:flex;min-height:100vh}
.rail{
  width:236px;flex:0 0 236px;background:var(--ink);color:#DCE5E3;
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;
}
.rail-top{padding:20px 18px 14px;border-bottom:1px solid rgba(255,255,255,.09)}
.rail-mark{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#7FA69C}
.rail-name{font-family:var(--display);font-size:18px;font-weight:800;line-height:1.15;margin-top:6px;color:#fff}
.rail nav{padding:10px 10px;overflow-y:auto;flex:1}
.rail-sec{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:#668780;padding:14px 8px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rail a.nav{
  display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:0;
  color:#C6D4D1;padding:8px 9px;border-radius:var(--r);line-height:1.25;text-decoration:none;
}
.rail a.nav:hover{background:rgba(255,255,255,.07);color:#fff}
.rail a.nav.on{background:var(--verde);color:#fff}
.rail a.nav .k{font-family:var(--mono);font-size:10px;opacity:.75;flex:0 0 auto}
.rail a.nav .t{font-size:13.5px;flex:1}
.rail a.nav .n{font-family:var(--mono);font-size:10px;opacity:.7}
.rail-foot{padding:12px 16px;border-top:1px solid rgba(255,255,255,.09);font-size:11px;color:#7B948F}
.rail-btn{display:inline-block;color:#DCE5E3 !important;border-color:rgba(255,255,255,.22) !important;text-decoration:none}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.bar{
  background:var(--card);border-bottom:1px solid var(--line);
  padding:14px 26px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  position:sticky;top:0;z-index:20;
}
.crumb{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.bar h1{font-size:21px}
.bar .sp{flex:1}
.wrap{padding:26px;max-width:1140px;width:100%}
.eyebrow{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}

/* ---------- componentes ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.card + .card{margin-top:14px}
.grid + .card,details.card{margin-top:14px}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}

.btn{
  background:var(--ink);color:#fff;border:1px solid var(--ink);padding:8px 15px;border-radius:var(--r);
  font-weight:500;font-size:14px;text-decoration:none;display:inline-block;line-height:1.4;
}
.btn:hover{background:var(--ink-2)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{background:var(--paper)}
.btn.verde{background:var(--verde);border-color:var(--verde);color:#fff}
.btn.verde:hover{filter:brightness(1.12)}
.btn.sm{padding:5px 11px;font-size:13px}
.btn.danger{background:transparent;color:var(--oxi);border-color:var(--oxi)}
.inline-form{display:inline}

label.fl{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.inp{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.inp:focus{outline:2px solid var(--verde);outline-offset:-1px;border-color:var(--verde)}
.inp:disabled{background:#F2F5F4;color:var(--muted)}
textarea.inp{min-height:64px;resize:vertical}

.tag{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:3px 7px;border-radius:2px;border:1px solid transparent}
.tag.verde{background:var(--verde-soft);color:var(--verde);border-color:#B9DCD4}
.tag.oxi{background:var(--oxi-soft);color:var(--oxi);border-color:#E7C6C0}
.tag.ambar{background:var(--ambar-soft);color:var(--ambar);border-color:#E8D5A8}
.tag.azul{background:var(--azul-soft);color:var(--azul);border-color:#C3D6E0}
.tag.cinza{background:#EDF1F0;color:var(--muted);border-color:var(--line-soft)}

.code{font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:13px}
.xs{font-size:12px}
.hr{height:1px;background:var(--line-soft);margin:16px 0;border:0}

/* ---------- régua de maturidade ---------- */
.regua{position:relative;display:flex;gap:3px;height:26px;align-items:stretch;margin:8px 0 6px}
.regua .seg{flex:1;border:1px solid var(--line);border-radius:1px;background:#F2F5F4;position:relative;overflow:hidden}
.regua .seg i{position:absolute;inset:0;background:var(--verde);display:block}
.regua .naoapurado{
  position:absolute;top:0;bottom:0;right:0;pointer-events:none;border-radius:1px;
  background:repeating-linear-gradient(135deg,rgba(143,50,38,.16) 0 4px,rgba(143,50,38,.03) 4px 8px);
  border-left:1px dashed rgba(143,50,38,.5);
}
.regua-legend{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9.5px;color:var(--muted);letter-spacing:.06em}
.nota{font-family:var(--display);font-size:34px;font-weight:800;line-height:1;letter-spacing:-.03em}
.nota.na{font-size:15px;font-weight:500;color:var(--oxi);font-family:var(--body);letter-spacing:0}

/* ---------- perguntas ---------- */
.q{border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;background:#fff}
.q + .q{margin-top:9px}
.q.na{background:#FAFBFB;opacity:.72}
.q-head{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}
.q-txt{flex:1;font-size:14.5px;line-height:1.45;min-width:200px}
.q-evid{font-size:12px;color:var(--muted);margin-top:5px}
.q-ctl{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-top:12px}
.niveis{display:flex;gap:4px;flex-wrap:wrap}
.niveis button{
  width:34px;height:30px;border:1px solid var(--line);background:#fff;border-radius:2px;
  font-family:var(--mono);font-size:12.5px;color:var(--muted);
}
.niveis button.on{background:var(--verde);border-color:var(--verde);color:#fff;font-weight:600}
.niveis button:disabled{opacity:.35;cursor:not-allowed}
.niveis button.resp{width:auto;min-width:58px;padding:0 11px;font-family:var(--body);font-size:13px}
.niveis button.resp.on{background:var(--ink);border-color:var(--ink);color:#fff}
.niveis button.resp.on.verde{background:var(--verde);border-color:var(--verde)}
.niveis button.resp.on.ambar{background:var(--ambar);border-color:var(--ambar)}
.niveis button.resp.on.oxi{background:var(--oxi);border-color:var(--oxi)}
.chk{display:flex;gap:7px;align-items:center;font-size:13px;cursor:pointer;padding-bottom:6px}
.chk input{width:15px;height:15px;accent-color:var(--verde)}
.warn-lastro{margin-top:9px;font-size:12.5px;color:var(--oxi);background:var(--oxi-soft);border:1px solid #E7C6C0;padding:6px 9px;border-radius:2px}
.q.salvando{outline:2px solid var(--verde-soft)}
.linha-inativa td{opacity:.55}

/* ---------- tabelas ---------- */
.tbl-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{
  text-align:left;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--line);
}
td{padding:9px 10px;border-bottom:1px solid var(--line-soft);vertical-align:top}
tr:last-child td{border-bottom:0}
.rowlink{cursor:pointer}
.rowlink:hover td{background:#F5F8F7}
.distbar{background:#EDF1F0;height:16px;border-radius:2px;overflow:hidden;min-width:120px}
.distbar .fill{height:100%}
.distbar .fill.verde{background:var(--verde)}
.distbar .fill.ambar{background:var(--ambar)}
.distbar .fill.oxi{background:var(--oxi)}

/* ---------- cartões de associação ---------- */
.assoc-card{
  display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:18px;
  cursor:pointer;transition:border-color .12s,transform .12s;text-decoration:none;color:var(--text);
}
.assoc-card:hover{border-color:var(--verde);transform:translateY(-1px)}
.assoc-card h3{font-size:17px;margin-bottom:2px}

.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px}
.kpi .v{font-family:var(--display);font-size:30px;font-weight:800;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.kpi .l{font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-top:7px}

.empty{border:1px dashed var(--line);border-radius:var(--r);padding:34px;text-align:center;background:#fff}
.empty h3{font-size:17px;margin-bottom:6px}

.banner{border-left:3px solid var(--ambar);background:var(--ambar-soft);padding:11px 14px;border-radius:2px;font-size:13px}
.banner.oxi{border-left-color:var(--oxi);background:var(--oxi-soft)}
.banner.verde{border-left-color:var(--verde);background:var(--verde-soft)}

/* ---------- relatório ---------- */
.rel{background:#fff;padding:40px;border:1px solid var(--line);border-radius:var(--r)}
.rel h2{font-size:15px;font-family:var(--mono);font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--verde);border-bottom:1px solid var(--line);padding-bottom:6px;margin:28px 0 12px}
.rel h1{font-size:30px;line-height:1.1}
.rel ul{padding-left:19px;margin:8px 0}
.rel li{margin-bottom:5px}
.rel .meta{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 24px;font-size:13.5px;margin-top:14px}
.rel .meta div{display:flex;gap:8px;border-bottom:1px dotted var(--line);padding-bottom:4px}
.rel .meta span:first-child{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);flex:0 0 152px;padding-top:3px}

/* ---------- login ---------- */
.pg-login{display:flex;min-height:100vh;align-items:center;justify-content:center;background:var(--ink)}
.login-wrap{width:100%;max-width:420px;padding:20px}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px;border-top:3px solid var(--verde)}
.login-name{font-family:var(--display);font-weight:800;font-size:26px;line-height:1.1;letter-spacing:-.02em;margin-top:8px}

/* ---------- mobile ---------- */
.so-mobile{display:none}
@media print{
  .rail,.bar,.noprint{display:none !important}
  body{background:#fff}
  .wrap{padding:0;max-width:none}
  .rel{border:0;padding:0}
  .app{display:block}
  .tbl-scroll{overflow:visible}
}
@media (max-width:900px){
  .so-mobile{display:inline-block}
  .app{flex-direction:column}
  .rail{
    width:100%;flex:none;height:auto;position:fixed;inset:0;z-index:50;
    transform:translateX(-100%);transition:transform .18s ease;
  }
  body.menu-aberto .rail{transform:translateX(0)}
  body.menu-aberto{overflow:hidden}
  .rail nav{max-height:none}
  .main{padding-top:0}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .wrap{padding:14px}
  .bar{padding:12px 14px}
  .bar h1{font-size:18px}
  .rel{padding:18px}
  .rel .meta{grid-template-columns:1fr}
  .rel .meta span:first-child{flex:0 0 120px}
  .q-ctl{gap:10px}
  .niveis button{width:44px;height:40px;font-size:14px}
  .niveis button.resp{min-width:72px;height:40px}
  .chk input{width:20px;height:20px}
}
:focus-visible{outline:2px solid var(--verde);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}
