/* Prime Balance — visual do mockup (docs/prime-treasury-mockup.html): barra superior navy, menu lateral, cartões.
   Tipos de letra do mockup (Archivo / Source Sans 3 / JetBrains Mono) auto-alojados em frontend/fonts/ (a CSP só permite
   ficheiros nossos): subconjunto latino, só os pesos usados; licença OFL-1.1 (ficheiros OFL-*.txt ao lado). Pesos sem
   ficheiro (ex.: 500) usam o mais próximo. */
@font-face{font-family:"Archivo";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/archivo-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/archivo-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/source-sans-3-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/source-sans-3-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/source-sans-3-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/jetbrains-mono-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/jetbrains-mono-latin-600-normal.woff2") format("woff2")}
:root{
  --bg:#f3f5fa; --surface:#ffffff; --surface-2:#f7f8fc; --ink:#0f1f4a; --ink-2:#4a5680; --muted:#7b85a6; --line:#e0e4ef;
  --navy:#0f1f4a; --on-navy:#e9eeff; --accent:#1f5cff; --accent-soft:#e7eeff; --mint:#23ffa3;
  --good:#0b7a4b; --good-bg:#e2f7ee; --warn:#9a5b00; --warn-bg:#fff2da; --crit:#b42318; --crit-bg:#fde8e6;
  --f-display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --f-body:"Source Sans 3","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0a1224; --surface:#111b33; --surface-2:#0e172d; --ink:#e6eaf7; --ink-2:#a8b2d1; --muted:#7c87a8; --line:#24304f;
  --navy:#060d1d; --on-navy:#dfe6ff; --accent:#7ea2ff; --accent-soft:#1a2850; --mint:#23ffa3;
  --good:#5fe0a6; --good-bg:#0f3326; --warn:#ffc46b; --warn-bg:#3a2a10; --crit:#ff8a7f; --crit-bg:#3d1714; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0a1224; --surface:#111b33; --surface-2:#0e172d; --ink:#e6eaf7; --ink-2:#a8b2d1; --muted:#7c87a8; --line:#24304f;
  --navy:#060d1d; --on-navy:#dfe6ff; --accent:#7ea2ff; --accent-soft:#1a2850; --mint:#23ffa3;
  --good:#5fe0a6; --good-bg:#0f3326; --warn:#ffc46b; --warn-bg:#3a2a10; --crit:#ff8a7f; --crit-bg:#3d1714; color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45}
#app{min-height:100%;display:flex;flex-direction:column}
.num,td.num,.mono{font-variant-numeric:tabular-nums}
.mono{font-family:var(--f-mono);font-size:.9em}
.muted{color:var(--muted)}
button,select,input{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.boot{padding:40px;color:var(--muted);text-align:center}

/* barra superior */
.top{background:var(--navy);color:var(--on-navy);display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 20px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:700;font-size:17px;letter-spacing:-.01em}
.brand .dot{width:12px;height:12px;border-radius:3px;background:var(--mint)}
.top .sp{flex:1}
.top select{background:transparent;border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:5px 8px;color:var(--on-navy)}
.top select:disabled{opacity:.7}
.top select option{color:#0f1f4a}
.top .who{font-size:13.5px;opacity:.9}
.btn.on-navy{color:var(--on-navy)}
.btn.on-navy:hover{color:var(--mint)}

/* idioma */
.lang{display:flex;border:1px solid rgba(255,255,255,.3);border-radius:6px;overflow:hidden}
.lang button{background:none;border:0;color:var(--on-navy);padding:4px 9px;font-family:var(--f-mono);font-size:12px;cursor:pointer}
.lang button[aria-pressed="true"]{background:var(--mint);color:#0f1f4a;font-weight:500}

/* menu lateral */
.shell{display:grid;grid-template-columns:240px minmax(0,1fr);flex:1}
nav.side{background:var(--surface);border-right:1px solid var(--line);padding:16px 10px;display:flex;flex-direction:column;gap:2px}
nav.side a{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-decoration:none;padding:8px 12px;font-size:14.5px;border-radius:7px;color:var(--ink-2);font-weight:600}
nav.side a:hover{background:var(--surface-2);color:var(--ink)}
nav.side a[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
nav.side .ph{font-family:var(--f-mono);font-size:10.5px;color:var(--muted);font-weight:400}
nav.side .grp{font-family:var(--f-display);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:14px 12px 6px}
main{min-width:0;padding-inline:24px;padding-block:22px 48px}
h1{font-family:var(--f-display);font-weight:700;font-size:24px;margin:0;letter-spacing:-.01em}
.sub{color:var(--ink-2);margin:4px 0 0}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:18px}

/* cartões */
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px;min-width:0}
.card h2{font-family:var(--f-display);font-size:15px;font-weight:600;margin:0 0 4px}
.card.section{margin-top:14px}
.card .sub{margin-bottom:12px;font-size:14px}
.empty{padding:40px 16px;text-align:center;color:var(--muted);margin:0}

/* tabelas */
.tbl{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px}
th.r,td.r{text-align:right}
th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tr.inactive td{color:var(--muted)}
td.num{white-space:nowrap}
td.actions{white-space:nowrap;text-align:right}
td select{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:4px 6px;font-size:13.5px}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:20px;white-space:nowrap}
.pill.good{background:var(--good-bg);color:var(--good)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.crit{background:var(--crit-bg);color:var(--crit)}
.pill.info{background:var(--accent-soft);color:var(--accent)}
.pill.mute{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}

/* botões e formulários */
.btn{display:inline-block;border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:7px 13px;font-weight:600;cursor:pointer;font-size:14px;text-decoration:none;color:var(--ink)}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{filter:brightness(1.08);color:#fff}
.btn.ghost{border-color:transparent;background:none;color:var(--accent);padding-inline:6px}
.btn.block{display:block;text-align:center;width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.form.inline{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:end;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.form label{display:grid;gap:4px;font-size:12.5px;color:var(--muted);font-weight:600}
.form select,.form input{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:7px 9px;font-size:14px;width:100%;min-width:0}

/* alertas */
.alert{border:1px solid var(--line);border-left:3px solid var(--crit);background:var(--surface);border-radius:8px;padding:10px 12px;margin:12px 0;font-size:14px}
.alert.warn{border-left-color:var(--warn)}
.alert.info{border-left-color:var(--accent);color:var(--ink-2)}

/* login */
.login{flex:1;display:grid;place-items:center;padding:24px 16px;background:var(--navy)}
.login-card{background:var(--surface);color:var(--ink);border-radius:12px;padding:28px;width:100%;max-width:400px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.login-card .brand{font-size:20px}
.login-card .sub{margin:6px 0 20px}
.login-card .hint{font-size:13px;color:var(--muted);margin:14px 0 0}
.login-lang{display:flex;justify-content:flex-end;margin-top:18px}
.login-lang .lang{border-color:var(--line)}
.login-lang .lang button{color:var(--ink-2)}

/* aviso */
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:8px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.2);max-width:calc(100% - 32px)}
@media (prefers-reduced-motion:no-preference){.toast{animation:up .2s ease-out}@keyframes up{from{transform:translate(-50%,8px);opacity:0}}}

@media (max-width:760px){
  .shell{grid-template-columns:minmax(0,1fr)}
  nav.side{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:8px 12px;gap:4px}
  nav.side .grp{display:none}
  nav.side a{width:auto;white-space:nowrap}
  main{padding-inline:16px}
  .top{padding:10px 16px}
  .form,.form.inline{grid-template-columns:minmax(0,1fr)}
}

/* entrada de desenvolvimento (só com DEV_LOGIN_ENABLED) */
.dev-login{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}
.dev-login .sec{grid-column:1/-1;margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:600}
.dev-login input{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:7px 9px;min-width:0}

/* painel: cartões lado a lado */
.grid2{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:14px;align-items:start}
.actions-row{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
@media (max-width:1080px){.grid2{grid-template-columns:minmax(0,1fr)}}

/* contas e empresas */
.alert.ok{border-left-color:var(--good)}
.alert b{display:block}
table.edit input:not([type=checkbox]){border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:4px 6px;font-size:13.5px;width:100%;min-width:70px}
.form.inline span:empty{display:none}
[data-testid="accounts"] td.mono,[data-testid="accounts"] td.acc{white-space:nowrap}

/* bloco 0.5 — painel, revisão, em aberto, posição do grupo (do mockup) */
.nowrap{white-space:nowrap}
.small{font-size:12.5px}
.note{font-size:12.5px;color:var(--muted);margin:10px 0 0}
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.toolbar .btn:first-of-type{margin-left:auto}
label.inline{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2)}
label.inline select,.filters select{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:6px 9px}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.tile .l{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.tile .v{font-family:var(--f-display);font-size:24px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}
.tile .d{font-size:13px;color:var(--ink-2);margin-top:2px}
.tile.attn{border-color:var(--warn);background:var(--warn-bg)}
.tile.attn .v{color:var(--warn)}
.grid2{margin-bottom:14px}
.neg{color:var(--crit)}
.bars{display:grid;gap:9px}
.bar{display:grid;grid-template-columns:190px minmax(0,1fr) 110px;gap:10px;align-items:center;font-size:13.5px}
.bar .track{height:12px;background:var(--surface-2);border-radius:0 4px 4px 0;display:block}
.bar .fill{display:block;height:100%;background:var(--accent);border-radius:0 4px 4px 0}
.bar .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-2)}
.ageing{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.ageing div{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.ageing div.late{border-color:var(--crit)}
.ageing b{display:block;font-family:var(--f-display);font-size:18px}
.ageing span{font-size:12px;color:var(--muted)}
.chart{position:relative}
.chart svg{display:block;width:100%;height:auto}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .axis{fill:var(--muted);font-size:11px;font-family:var(--f-body)}
.chart .line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .cross{stroke:var(--ink-2);stroke-width:1;stroke-dasharray:3 3}
.chart .dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}
.chart .hit{fill:transparent;cursor:crosshair}
.chart .tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:12.5px;box-shadow:0 4px 14px rgba(15,31,74,.12);white-space:nowrap}
.chart .tip b{display:block;font-variant-numeric:tabular-nums}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:20px;padding:4px 12px;font-size:13px;cursor:pointer;color:var(--ink-2);font-weight:600}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.review{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:14px;align-items:start}
.queue{display:flex;flex-direction:column;padding:6px 0;max-height:75vh;overflow:auto}
.qitem{display:grid;grid-template-columns:4px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 12px 11px 0;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:none;text-align:left;width:100%}
.qitem:hover{background:var(--surface-2)}
.qitem[aria-selected="true"]{background:var(--accent-soft)}
.qitem .stripe{align-self:stretch;border-radius:0 3px 3px 0}
.stripe.alta{background:var(--good)} .stripe.media{background:var(--warn)} .stripe.baixa{background:var(--crit)}
.qitem .t{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qitem .m{font-size:12.5px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.qitem .a{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
.qitem .a small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.detail{position:sticky;top:16px}
.detail h2{display:flex;justify-content:space-between;gap:8px}
.kv{display:grid;grid-template-columns:130px minmax(0,1fr);gap:6px 12px;font-size:14px;margin:0 0 14px}
.kv dt{color:var(--muted)}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.why{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13.5px;margin-bottom:14px}
.why b{font-family:var(--f-display);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:block;margin-bottom:2px}
.sec{font-family:var(--f-display);font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:16px 0 6px;font-weight:600}
table.compact td{padding:6px 8px;font-size:13px}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters .sp{flex:1}
@media (max-width:1080px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.review{grid-template-columns:minmax(0,1fr)}.detail{position:static}}
@media (max-width:760px){.bar{grid-template-columns:110px minmax(0,1fr) 90px}.kv{grid-template-columns:110px minmax(0,1fr)}}

/* regras e tipologias */
.form.inline.wide{grid-template-columns:repeat(4,minmax(0,1fr)) auto}
table.edit select{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:4px 6px;font-size:13px;max-width:280px}
@media (max-width:760px){.form.inline.wide{grid-template-columns:minmax(0,1fr)}}

/* bloco 1.2 — decisão na Revisão */
.form.decide{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.form.decide .sec{margin:0}
.form .full{grid-column:1/-1}
.form.decide .actions-row{margin-top:2px}
@media (max-width:760px){.form.decide{grid-template-columns:minmax(0,1fr)}}

/* tipologias desligadas */
tr.off td{color:var(--muted)}
tr.off td b{font-weight:600}

/* bloco 1.3 — assistente de IA */
.aibar{display:block;width:100%;height:8px;margin:8px 0 6px;border:0;border-radius:4px;background:var(--surface-2);overflow:hidden;appearance:none}
.aibar::-webkit-progress-bar{background:var(--surface-2)}
.aibar::-webkit-progress-value{background:var(--accent)}
.aibar::-moz-progress-bar{background:var(--accent)}
[data-testid="ai-card"] .form{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
tr.sub-note td{border-top:0;padding-top:0}
.form label.inline{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);font-weight:600;align-self:end;padding-bottom:8px}
.form input[type=checkbox]{width:auto}

/* tipologias: nome editável (PT por cima, EN por baixo) */
table.edit input.name{min-width:150px;font-weight:600}
table.edit input.name.en{font-weight:400;margin-top:4px;color:var(--ink-2)}
.btn.danger{color:var(--crit)}

/* bloco 1.4 — antifraude */
.fraud-root .alert{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}
.fraud-root .alert .body{min-width:0;flex:1}
.fraud-root .alert.done{border-left-color:var(--line)}
.fraud-root .alert .muted.small{display:block}
.fraud-root .decide-alert{margin-top:8px}
#fraudBanner .alert{display:flex;gap:12px;align-items:center;justify-content:space-between}

/* bloco 1.5 — Modelo 30 */
.m30-root .chips.tabs{margin-bottom:14px}
.m30-root .tiles{margin-bottom:14px}

/* Modelo 30 — pré-visualização do impresso oficial */
.m30-form{background:var(--surface);border:1.5px solid var(--ink-2);border-radius:4px;padding:10px;font-size:12.5px;margin-bottom:12px}
.m30-form h4{display:flex;align-items:center;gap:6px;margin:0 0 6px;background:var(--surface-2);border:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.03em;padding:4px 6px}
.m30-form h4 i{font-style:normal;font-weight:700;font-size:14px;min-width:16px}
.m30-form section{border:1px solid var(--line);padding:6px;min-width:0}
.f-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2.4fr) 90px;gap:8px;margin-bottom:8px}
.f-ministry{display:grid;font-size:11px;border:1px solid var(--line);padding:6px}
.f-ministry .f-decl{font-weight:700;letter-spacing:.12em}
.f-title{display:flex;align-items:center;justify-content:center;text-align:center;font-weight:700;font-size:15px;border:1px solid var(--line);padding:6px}
.f-model{display:grid;place-items:center;border:1px solid var(--line)}
.f-model b{font-size:30px;line-height:1}
.f-row{display:grid;gap:8px;margin-bottom:8px}
.f-top{grid-template-columns:repeat(5,minmax(0,1fr))}
.f-mid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.f-box{display:inline-flex;align-items:stretch;border:1px solid var(--ink-2);margin:2px 4px 2px 0;font-family:var(--f-mono,monospace)}
.f-box .f-no,.f-no{background:var(--ink-2);color:var(--surface);font-size:10.5px;padding:2px 4px;font-weight:700}
td.f-no{text-align:center;width:28px}
th .f-no{margin-right:4px}
.f-box .f-val{min-width:70px;padding:2px 6px}
.f-box.f-check .f-val{min-width:16px;text-align:center}
.f-sub{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:4px}
.f-table{width:100%;border-collapse:collapse}
.f-table td,.f-table th{border:1px solid var(--line);padding:3px 5px;font-size:12px}
.f-table th{background:var(--surface-2);font-size:10.5px;text-transform:uppercase}
.f-table tr.f-total td{font-weight:700;background:var(--surface-2)}
.f-foot{text-align:center;font-size:11px;color:var(--muted);margin:6px 0 0}
@media (max-width:900px){.f-top,.f-mid,.f-head{grid-template-columns:minmax(0,1fr)}}
.f-table tr.f-total td.f-no,.f-table tr.f-total .f-no{background:var(--ink-2);color:var(--surface)}

/* quadro 8 cabe na largura, como no impresso: colunas fixas, títulos quebram linha */
.f-q8t{table-layout:fixed;width:100%}
.f-q8t th{white-space:normal;letter-spacing:0;font-size:9.5px;line-height:1.25;vertical-align:top;padding:3px 4px}
.f-q8t td{overflow-wrap:anywhere;padding:3px 4px}
.f-q8t td.num{white-space:nowrap}
.f-q8 .tbl{overflow-x:visible}
.q8-n{width:3%}.q8-c31{width:11%}.q8-c32{width:16%}.q8-c33{width:7%}.q8-c34{width:4%}.q8-c35t{width:5%}
.q8-c35v{width:11%}.q8-c36c{width:5%}.q8-c36t{width:7%}.q8-c37{width:14%}.q8-c39{width:13%}
.f-q8t th .f-no{display:table;margin:0 0 3px}
.f-q8t th{overflow-wrap:anywhere;hyphens:auto}
.f-q8t tr.f-total td{white-space:nowrap}

/* Fase 2 — lançamentos */
.post-root .chips.tabs{margin-bottom:12px}
.post-item h2{display:flex;justify-content:space-between;gap:10px}
table.entry{max-width:560px;margin:6px 0}
.splits summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--accent)}
.split-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:6px;margin-top:6px}
.split-row select,.split-row input{border:1px solid var(--line);border-radius:7px;padding:6px 8px;font-size:13.5px;min-width:0;background:var(--surface)}

/* Fase 2 · 2.5 — fecho mensal */
.close-acc h2{display:flex;justify-content:space-between;gap:10px;align-items:center}
table.close-stmt{width:100%;max-width:720px;border-collapse:collapse}
table.close-stmt td{padding:4px 6px;border:0;vertical-align:top}
table.close-stmt tr.b td{font-weight:700}
table.close-stmt tr.line td{border-top:1px solid var(--ink-2)}
table.close-stmt table.compact{margin:0 0 4px 12px;width:calc(100% - 12px)}

.close-acc .opening{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.close-acc .opening summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--accent)}

/* Fase 3 — cobranças */
.coll-root .chips.tabs{margin-bottom:12px}
.coll-root .toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
table.coll-aging tr.sel td{background:var(--accent-soft)}
table.coll-aging tr.b td{font-weight:700;border-top:1px solid var(--ink-2)}
td.b{font-weight:700}
.link-btn{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--accent);cursor:pointer;text-align:left}
.link-btn:hover{text-decoration:underline}
@media (max-width:760px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Fase 3 — comissões */
.fees-root .toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.fees-root .chips.tabs{margin:0}
.fees-root .bars .bar{grid-template-columns:70px minmax(0,1fr) 100px}
.fees-root .bar.cur span:first-child{font-weight:700}
form.fee-type{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}

/* Fase 4 — financiamentos */
table.loans tr.sel td{background:var(--accent-soft)}
.loans-root .grid2{margin-bottom:14px}

/* Fase 4 — previsão */
.fc-root .chips.tabs{margin-bottom:6px}
.fc-chart{width:100%;height:auto;display:block}
.fc-chart .grid{stroke:var(--line);stroke-width:1}
.fc-chart .zero{stroke:var(--ink-2);stroke-width:1}
.fc-chart .limit{stroke:var(--crit);stroke-width:1.5;stroke-dasharray:6 4}
.fc-chart .line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round}
.fc-chart .pt{fill:var(--accent);stroke:var(--surface);stroke-width:2}
.fc-chart .pt.below{fill:var(--crit)}
.fc-chart .ax{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.fc-chart .ax.lim{fill:var(--crit)}
table.fc-table tr.below td{background:var(--crit-bg)}
table.fc-table tr.sel td{background:var(--accent-soft)}
table.fc-table tr.detail td{background:var(--surface-2)}
td.pos{color:var(--good)}
.fc-list{margin:0;padding-left:18px;line-height:1.6}

/* Fase 5 — pagamentos */
.pay-root .chips.tabs{margin-bottom:12px}
.pay-sup h2{display:flex;justify-content:space-between;gap:10px;align-items:center}
.pay-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;justify-content:space-between;position:sticky;bottom:0;z-index:2}
.pay-bar label{flex:1 1 260px;display:flex;flex-direction:column;font-size:13px;gap:4px}
.pay-bar input{border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:var(--surface);color:var(--ink)}
table.pay-batches tr.sel td{background:var(--accent-soft)}
.pay-checks{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}
.pay-checks .pill{white-space:normal;text-align:left}

/* Âmbito por empresa (Utilizadores) */
details.uc summary{cursor:pointer;font-size:13.5px}
.uc-list{display:flex;flex-direction:column;gap:4px;padding:6px 0;font-size:13px}

/* Previsão vs. real */
.fc-root .fc-views{margin-bottom:10px}
.fc-root .toolbar{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}

/* Assistente (painel lateral) */
.assistant{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:var(--surface);border-left:1px solid var(--line);
  box-shadow:-8px 0 24px rgba(15,31,74,.12);z-index:50;display:flex;flex-direction:column;padding:12px 14px;gap:8px}
.assistant[hidden]{display:none}
.asst-head{display:flex;align-items:center;gap:8px}
.asst-head b{font-family:var(--f-display)}
.asst-head .btn{margin-left:auto}
.asst-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px 0}
.asst-msg{border-radius:10px;padding:8px 10px;font-size:14px;max-width:92%}
.asst-msg p{margin:0 0 6px}.asst-msg p:last-child{margin:0}
.asst-msg.me{align-self:flex-end;background:var(--accent-soft)}
.asst-msg.bot{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line)}
.asst-empty{color:var(--ink-2);font-size:14px}
.asst-empty ul{padding-left:18px}
.asst-form{display:flex;gap:8px;align-items:flex-end}
.asst-form textarea{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit;resize:vertical;background:var(--surface);color:var(--ink)}
.kv-line{white-space:nowrap;line-height:1.35}
/* Revisão do IVA (2026-10-09): linha do balancete com algo a verificar */
.tbl tr.warn td{background:var(--warn-bg)}
/* Modelo 30 — fichas (M30.4) e mapa (M30.5) */
ul.plain{list-style:none;margin:0;padding:0}
ul.plain li{margin:2px 0}
button.pill{border:0;cursor:pointer;font-family:inherit}
