/* ===== SEFO/ESCO — EQAVET · Situação Profissional dos Diplomados ===== */
:root{
  --navy:#0E1040; --blue:#0A66C2; --blue-2:#2A85DE; --ok:#16A34A; --warn:#D97706; --bad:#DC2626;
  --bg:#F4F6FB; --surface:#FFFFFF; --line:#E2E7F0; --text:#131A33; --muted:#66708A;
  --radius:12px; --shadow:0 1px 2px rgba(16,24,64,.06),0 8px 24px rgba(16,24,64,.06);
  --sidebar:264px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font:15px/1.5 "Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
a{color:var(--blue);text-decoration:none}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.25;font-weight:650}
h1{font-size:1.5rem} h2{font-size:1.2rem} h3{font-size:1.03rem}
p{margin:0 0 .8em}
small,.small{font-size:.82rem}
.muted{color:var(--muted)}
.hidden{display:none !important}
code,kbd{font-family:ui-monospace,"Cascadia Mono",Consolas,monospace;font-size:.86em;background:#EEF1F8;padding:1px 5px;border-radius:5px}

/* ---------- Ecrã de entrada ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:
  radial-gradient(1200px 600px at 15% -10%,#1A2570 0%,transparent 60%),
  radial-gradient(900px 500px at 110% 110%,#0A66C2 0%,transparent 55%),var(--navy);padding:24px}
/* um só bloco: marca, entrada e barra de logótipos */
.login-card{width:min(520px,100%);background:#fff;border-radius:18px;overflow:hidden;
  box-shadow:0 24px 70px rgba(0,0,0,.35)}
.login-form{padding:26px 30px 28px}
.login-card footer.rodape{margin:0;border-top:1px solid var(--line);background:#F7F9FD;padding:12px 18px}
.login-card footer.rodape img{max-height:46px;max-width:100%}
.login-marca{background:var(--navy);border-radius:12px;padding:14px 20px;margin:0 0 18px;display:flex;
  align-items:center;justify-content:center;min-height:64px}
.login-marca img{max-height:38px;max-width:180px;width:auto;object-fit:contain}
.login-marca b{color:#fff;font-size:1.3rem;letter-spacing:.08em}
.login-tabs{display:flex;gap:6px;background:#EEF1F8;padding:5px;border-radius:10px;margin-bottom:20px}
.login-tabs button{flex:1;border:0;background:transparent;padding:9px;border-radius:7px;cursor:pointer;font:inherit;font-weight:600;color:var(--muted)}
.login-tabs button.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* ---------- Estrutura: barra superior ---------- */
.shell{min-height:100vh;display:flex;flex-direction:column}
header.topo{background:var(--navy);color:#C9D2EA;display:flex;align-items:center;gap:22px;
  padding:0 22px;height:58px;position:sticky;top:0;z-index:30;box-shadow:0 1px 0 rgba(255,255,255,.07)}
header.topo .marca{display:flex;align-items:center;gap:11px;flex:none}
header.topo .marca img{height:30px;width:auto;max-width:130px;object-fit:contain}
header.topo .marca-txt{display:flex;flex-direction:column;line-height:1.05}
header.topo .marca-txt b{color:#fff;font-size:.86rem;letter-spacing:.06em}
header.topo .marca-txt span{font-size:.68rem;color:#8492BC}
header.topo nav.menu{display:flex;gap:2px;flex:1;overflow-x:auto;scrollbar-width:none}
header.topo nav.menu::-webkit-scrollbar{display:none}
header.topo nav.menu a{display:flex;align-items:center;gap:7px;padding:8px 13px;border-radius:9px;
  color:#C9D2EA;font-weight:500;font-size:.88rem;white-space:nowrap}
header.topo nav.menu a:hover{background:rgba(255,255,255,.08);color:#fff}
header.topo nav.menu a.on{background:var(--blue);color:#fff;font-weight:650}
header.topo nav.menu a .ic{opacity:.85;font-size:.95rem}
header.topo .badge{background:var(--bad);color:#fff;border-radius:10px;font-size:.68rem;padding:1px 7px;font-weight:700}
header.topo .perfil{display:flex;align-items:center;gap:14px;flex:none;font-size:.8rem}
header.topo .perfil .quem{color:#9FB4E8}
header.topo .perfil .sair{color:#C9D2EA;border:1px solid rgba(255,255,255,.2);padding:4px 12px;border-radius:8px}
header.topo .perfil .sair:hover{background:rgba(255,255,255,.1);color:#fff}

main{padding:20px 24px 60px;min-width:0;flex:1}
.topbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.topbar h1{margin:0;font-size:1.35rem}
.topbar .sub{color:var(--muted);font-size:.86rem}
.spacer{flex:1}

/* ---------- Cartões e grelhas ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:18px}
.card>h2,.card>h3{margin-top:0}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row select{max-width:100%}
.row select.largo{min-width:250px}
.row .inline label{white-space:nowrap}
.row>select,.row>input[type=text],.row>input[type=email]{width:auto;min-width:160px;max-width:250px}

/* KPI */
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px 17px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi .lbl{font-size:.76rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.kpi .val{font-size:1.85rem;font-weight:700;line-height:1.1;margin:6px 0 2px;color:var(--navy)}
.kpi .sub{font-size:.8rem;color:var(--muted)}
.kpi .meta-bar{height:6px;border-radius:4px;background:#EDF1F8;margin-top:9px;overflow:hidden}
.kpi .meta-bar i{display:block;height:100%;border-radius:4px;background:var(--blue)}
.kpi.ok .val{color:var(--ok)} .kpi.bad .val{color:var(--bad)} .kpi.warn .val{color:var(--warn)}
.kpi .tag{position:absolute;top:12px;right:14px;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:20px}
.tag.ok{background:#E7F7EE;color:#137A3E} .tag.bad{background:#FDECEC;color:#B02020} .tag.warn{background:#FFF4E5;color:#9A5B06}

/* ---------- Tabelas ---------- */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}
thead th{background:#F7F9FD;font-weight:650;color:#3C4665;position:sticky;top:0;z-index:2;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
tbody tr:hover{background:#F8FAFF}
tfoot td,tr.total td{font-weight:700;background:#F2F6FD}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
th.sortable{cursor:pointer;user-select:none}
th.sortable.asc::after{content:" ▲";font-size:.7em} th.sortable.desc::after{content:" ▼";font-size:.7em}
table.compact th,table.compact td{padding:5px 8px;font-size:.83rem}
.sep-row td{background:var(--navy);color:#fff;font-weight:650;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}

/* ---------- Formulários ---------- */
label{display:block;font-weight:600;font-size:.82rem;color:#3C4665;margin-bottom:4px}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],input[type=time],input[type=url],select,textarea{
  width:100%;padding:8px 11px;border:1px solid #CBD3E4;border-radius:9px;font:inherit;background:#fff;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,102,194,.14)}
textarea{min-height:78px;resize:vertical}
.field{margin-bottom:13px}
.fields{display:grid;gap:13px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.inline{display:flex;align-items:center;gap:7px}
.inline label{margin:0;font-weight:500;font-size:.9rem}
input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--blue)}
fieldset{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 14px}
legend{font-weight:650;font-size:.85rem;padding:0 6px;color:var(--navy)}

/* opções em cartão (formulário do aluno) */
.opts{display:grid;gap:9px}
.opt{border:1.5px solid var(--line);border-radius:11px;padding:11px 13px;cursor:pointer;display:flex;gap:11px;align-items:flex-start;background:#fff;transition:.12s}
.opt:hover{border-color:var(--blue-2);background:#F7FBFF}
.opt input{margin-top:3px}
.opt.on{border-color:var(--blue);background:#F0F7FF;box-shadow:0 0 0 3px rgba(10,102,194,.1)}
.opt b{display:block;font-weight:600;font-size:.94rem}
.opt span{font-size:.82rem;color:var(--muted)}

/* ---------- Botões ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;background:var(--blue);color:#fff;border:1px solid var(--blue);
  padding:8px 15px;border-radius:9px;font:inherit;font-weight:600;font-size:.88rem;cursor:pointer;white-space:nowrap}
.btn:hover{filter:brightness(1.07)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--navy);border-color:#CBD3E4}
.btn.ghost:hover{background:#F3F6FC}
.btn.dark{background:var(--navy);border-color:var(--navy)}
.btn.ok{background:var(--ok);border-color:var(--ok)}
.btn.danger{background:var(--bad);border-color:var(--bad)}
.btn.sm{padding:4px 10px;font-size:.8rem;border-radius:7px}
.btn.block{width:100%;justify-content:center;padding:11px}
.icon-btn{background:transparent;border:0;font-size:1rem;cursor:pointer;color:var(--muted);padding:3px 6px;border-radius:6px}
.icon-btn:hover{background:#EEF1F8;color:var(--navy)}

/* ---------- Chips / pílulas ---------- */
.pill{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.75rem;font-weight:650;background:#EEF1F8;color:#3C4665;white-space:nowrap}
.pill.ok{background:#E7F7EE;color:#137A3E} .pill.bad{background:#FDECEC;color:#B02020}
.pill.warn{background:#FFF4E5;color:#9A5B06} .pill.info{background:#E7F0FD;color:#0A4F9C}
.pill.grey{background:#EEF1F8;color:#66708A}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid #CBD3E4;background:#fff;border-radius:20px;padding:4px 12px;font-size:.82rem;cursor:pointer;font-weight:500}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}

/* ---------- Avisos ---------- */
.alert{border-radius:10px;padding:11px 14px;font-size:.87rem;margin-bottom:14px;border:1px solid}
.alert.info{background:#EFF6FF;border-color:#BFDBFE;color:#0B4A8F}
.alert.warn{background:#FFFBEB;border-color:#FDE68A;color:#8A5A05}
.alert.bad{background:#FEF2F2;border-color:#FECACA;color:#A21B1B}
.alert.ok{background:#F0FDF4;border-color:#BBF7D0;color:#14663A}

/* ---------- Modal / toast ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(14,16,64,.45);display:grid;place-items:center;z-index:99;padding:20px;backdrop-filter:blur(2px)}
.modal{background:#fff;border-radius:14px;width:100%;max-width:760px;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.modal-head{display:flex;align-items:center;padding:16px 20px 10px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;flex:1}
.modal-body{padding:18px 20px;overflow:auto}
.modal>h3{padding:20px 22px 0} .modal>p{padding:0 22px}
.modal-actions{display:flex;gap:9px;justify-content:flex-end;padding:14px 20px;border-top:1px solid var(--line)}
.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:var(--navy);color:#fff;padding:11px 20px;border-radius:10px;
  box-shadow:0 12px 40px rgba(0,0,0,.3);opacity:0;pointer-events:none;transition:.25s;z-index:200;font-size:.9rem;max-width:90vw}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.err{background:var(--bad)} .toast.warn{background:var(--warn)}

/* ---------- Gráficos ---------- */
.chart-box{position:relative;height:280px}
.chart-box.tall{height:360px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.8rem;margin-top:10px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:-1px}

/* ---------- Banner ---------- */
#bannerCanvas{max-width:100%;height:auto;border-radius:8px;box-shadow:var(--shadow)}

/* ---------- Formulário público do aluno ---------- */
.aluno-wrap{min-height:100vh;background:var(--bg)}
.aluno-head{background:var(--navy);color:#fff;padding:22px 20px}
.aluno-head .in{max-width:720px;margin:0 auto;display:flex;align-items:center;gap:14px}
.aluno-head img{max-height:42px}
.aluno-body{max-width:720px;margin:0 auto;padding:24px 20px 60px}
.step-dots{display:flex;gap:6px;margin-bottom:18px}
.step-dots i{height:5px;flex:1;background:#DCE3F0;border-radius:3px}
.step-dots i.on{background:var(--blue)}

/* ---------- Impressão ---------- */
@media print{
  header.topo,.topbar .btn,.no-print{display:none !important}
  body{background:#fff}
  .card{box-shadow:none;border-color:#ccc;break-inside:avoid}
}
@media (max-width:900px){
  header.topo{height:auto;flex-wrap:wrap;padding:10px 14px;gap:10px}
  header.topo nav.menu{order:3;width:100%}
  main{padding:14px}
}

/* ===================== Abas ===================== */
.abas{display:flex;gap:4px;background:#EEF1F8;padding:4px;border-radius:10px}
.aba{border:0;background:transparent;padding:6px 11px;border-radius:7px;cursor:pointer;font:inherit;font-weight:600;font-size:.82rem;color:var(--muted);white-space:nowrap}
.aba.on{background:#fff;color:var(--navy);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* ===================== Mapa de recolha ===================== */
table.mapa{font-size:.82rem}
table.mapa th{vertical-align:bottom}
table.mapa th.vert{font-size:.64rem;letter-spacing:0;padding:4px 2px;text-align:center;line-height:1.15;white-space:normal;overflow-wrap:anywhere;width:44px;min-width:44px}
table.mapa td{padding:2px 5px}
table.mapa td:nth-child(2){max-width:140px;min-width:118px;white-space:normal;line-height:1.25}
table.mapa th:nth-child(3),table.mapa td:nth-child(3){max-width:44px;font-size:.72rem;text-align:center;padding-left:2px;padding-right:2px}
table.mapa td.chk{text-align:center;padding:2px}
table.mapa input[type=checkbox]{width:17px;height:17px;cursor:pointer}
table.mapa input.cel-data{width:118px;padding:3px 6px;font-size:.8rem;border-color:transparent;background:transparent}
table.mapa input.cel-data:hover,table.mapa input.cel-data:focus{border-color:#CBD3E4;background:#fff}
table.mapa input.cel-data.vermelho{background:#FEE2E2;border-color:#FCA5A5;color:#B91C1C;font-weight:600}
table.mapa input.cel-local{width:186px;padding:3px 6px;font-size:.8rem;border-color:transparent;background:transparent}
table.mapa input.cel-local:hover,table.mapa input.cel-local:focus{border-color:#CBD3E4;background:#fff}
table.mapa select.cel-area{width:66px;padding:3px 5px;font-size:.8rem}
table.mapa td.area.na select{opacity:.35;pointer-events:none}
table.mapa td.area.na{background:#E5E7EB !important}
table.mapa td.area.cinza{background:#EDEFF3}

/* grupos de colunas */
th.gr-emprego{background:#E7F0FD !important;color:#0A4F9C}
th.gr-estudos{background:#E7F7EE !important;color:#137A3E}
th.gr-vinculo{background:#FFF7E6 !important;color:#92650A}
th.gr-estado{background:#FDECEC !important;color:#9B1C1C}
th.gr-aprov{background:#E7F7EE !important;color:#137A3E;text-align:center !important}
th.gr-cf{background:#F3EEFD !important;color:#5B21B6;text-align:center !important}
th.gr-emprego,th.gr-estudos,th.gr-vinculo,th.gr-estado{text-align:center !important}
td.gv{background:#FFFDF7}
td.ge{background:#FFF9F9}

/* cores das linhas (mesma lógica do Excel) */
tr.l-desempregado>td{background:#FDE4E4 !important}
tr.l-desempregado td:nth-child(5) input{color:#B91C1C;font-weight:600}
tr.l-desconhecida>td{background:#DCE8FB !important}
tr.l-desconhecida td.area{background:#E8EDF5 !important}
tr.l-estudos>td{background:#DCFCE7 !important}
tr.l-outra>td{background:#F3EEFD !important}
tr.l-vazio>td{background:#FFFBEB !important}
tr.l-pendente>td{box-shadow:inset 3px 0 0 var(--warn)}
tbody tr:hover>td{filter:brightness(.97)}

.legenda{display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:.8rem;margin-bottom:10px;color:var(--muted)}
.legenda i.amostra{width:14px;height:14px;border-radius:4px;display:inline-block;margin-right:6px;vertical-align:-3px;border:1px solid rgba(0,0,0,.1)}
.amostra.l-empregado{background:#fff}
.amostra.l-estudos{background:#DCFCE7}
.amostra.l-desempregado{background:#FDE4E4}
.amostra.l-desconhecida{background:#DCE8FB}
.amostra.l-vazio{background:#FFFBEB}

/* anexos */
table.anexo td:first-child{white-space:normal;max-width:340px}

/* ciclos */
table.ciclo td.gr-aprov{background:#F4FCF7}
table.ciclo td.gr-cf{background:#FAF7FF}

/* ---------- Legibilidade das tabelas ---------- */
.tbl-wrap{max-width:100%}
table.compact th,table.compact td{padding:5px 9px;font-size:.84rem}
table.compact td{white-space:nowrap}
table.compact td.wrap{white-space:normal}
thead th{white-space:normal;line-height:1.2}
table.mapa td.entidade input{width:120px;padding:3px 6px;font-size:.8rem}
table.mapa td.funcao input{width:92px;padding:3px 6px;font-size:.8rem}
table.mapa td.entidade,table.mapa td.funcao{white-space:nowrap}
table.mapa th{white-space:normal}
td.alerta{text-align:center;width:auto;white-space:nowrap}
.alertas-cel{display:inline-flex;gap:3px;align-items:center}

/* ---------- Bolas de alerta: uma cor por tipo ---------- */
.bola{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;
  font-size:.62rem;font-weight:800;color:#fff;font-style:normal;line-height:1;vertical-align:-2px;flex:none}
.bola.a-aprovar{background:#F59E0B;box-shadow:0 0 0 2px rgba(245,158,11,.2)}
.bola.a-confirmar{background:#DC2626;box-shadow:0 0 0 2px rgba(220,38,38,.2)}
.bola.a-eschooling{background:#7C3AED;box-shadow:0 0 0 2px rgba(124,58,237,.2)}
.bola.a-dados{background:#0A66C2;box-shadow:0 0 0 2px rgba(10,102,194,.2)}
.bola.a-naarea{background:#0F766E;box-shadow:0 0 0 2px rgba(15,118,110,.2)}
.bola.a-incoerente{background:#B45309;box-shadow:0 0 0 2px rgba(180,83,9,.2)}

.legenda-alertas{margin:6px 0 10px;padding-top:8px;border-top:1px dashed var(--line)}
.legenda-alertas i.bola{margin-right:6px}

.barra-alertas .pills-alerta{display:flex;gap:8px;flex-wrap:wrap}
.pill-alerta{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;
  border-radius:999px;padding:5px 12px 5px 7px;font-size:.8rem;font-weight:600;color:var(--navy);cursor:pointer}
.pill-alerta:hover{background:#F3F6FB;border-color:#C9D6EA}
.pill-alerta b{font-size:.92rem}
.pill-alerta.a-aprovar:hover{border-color:#F59E0B}
.pill-alerta.a-confirmar:hover{border-color:#DC2626}
.pill-alerta.a-eschooling:hover{border-color:#7C3AED}
.pill-alerta.a-dados:hover{border-color:#0A66C2}
.pill-alerta.a-naarea:hover{border-color:#0F766E}
.pill-alerta.a-incoerente:hover{border-color:#B45309}

.lista-alertas{display:grid;gap:8px}
.item-alerta{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.item-alerta .bola{margin-top:2px}
.item-alerta.resolvido{opacity:.6}
.item-alerta.a-aprovar{border-left:4px solid #F59E0B}
.item-alerta.a-confirmar{border-left:4px solid #DC2626}
.item-alerta.a-eschooling{border-left:4px solid #7C3AED}
.item-alerta.a-dados{border-left:4px solid #0A66C2}
.item-alerta.a-naarea{border-left:4px solid #0F766E}
.item-alerta.a-incoerente{border-left:4px solid #B45309}
.ponto{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--bad);box-shadow:0 0 0 3px rgba(220,38,38,.18)}
.ponto.ok{background:var(--ok);box-shadow:0 0 0 3px rgba(22,163,74,.18)}
tr.tem-alerta>td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
.resumo-alertas{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}

/* ---------- Perguntas fechadas (formulário do aluno) ---------- */
.pergunta-fechada{border-top:1px dashed var(--line);padding:12px 0 4px}
.pergunta-fechada:first-of-type{border-top:0;padding-top:2px}
.pergunta-fechada>label{display:block;margin-bottom:7px;font-size:.92rem}
.pergunta-fechada .chip{padding:6px 16px;font-size:.86rem}
.pergunta-fechada .field{margin-bottom:2px;max-width:420px}

/* ---------- Larguras confortáveis nas restantes tabelas ---------- */
table th,table td{vertical-align:middle}
table.turmas th{white-space:normal;max-width:96px}
table.turmas td.num input{width:72px;text-align:right}
table.emp td.entidade{white-space:normal;min-width:180px;max-width:260px}
table.emp td.nome{white-space:normal;min-width:140px;max-width:200px}
table.emp td.email input{min-width:200px}
table.sat td:first-child{white-space:normal;min-width:250px}
table.anexo th{white-space:normal;min-width:62px}
table.ciclo th{white-space:normal;min-width:0;font-size:.72rem;line-height:1.15;padding:4px 5px}
table.ciclo td{padding:4px 6px}
table.ciclo td:first-child{white-space:nowrap}
.tbl-wrap{overflow-x:auto}
table.mapa th:first-child,table.mapa td:first-child{max-width:76px;font-size:.76rem}

/* ---------- Célula fundida (desempregado / situação desconhecida) ---------- */
table.mapa td.entidade.fundida{text-align:left;padding-left:8px}
table.mapa td.entidade.fundida .estado-txt{font-size:.8rem;font-weight:600;letter-spacing:.01em}
tr.l-desempregado td.entidade.fundida .estado-txt{color:#B02020}
tr.l-desconhecida td.entidade.fundida .estado-txt{color:#1E40AF}
tr.incoerente>td:last-child{box-shadow:inset -3px 0 0 #F59E0B}
table.mapa td.registo{line-height:1.15;max-width:86px;overflow:hidden;text-overflow:ellipsis}
table.mapa td.registo .quem{display:block;font-size:.72rem;opacity:.75}
table.mapa select.cel-prov{width:82px;padding:3px 2px;font-size:.7rem}
table.mapa td.prov{padding:2px 4px}
.historico{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-size:.8rem;color:var(--muted)}

/* ---------- Quadro «Totais (Revisão pela Gestão)» ---------- */
.card .tbl-wrap{overflow-x:auto}
table.compact th{white-space:normal}
table.gestao th{font-size:.72rem;line-height:1.15;min-width:0;padding:4px 5px}
table.gestao td{padding:4px 6px}
table.gestao td:first-child{white-space:nowrap}

/* ---------- Rodapé: barra de logótipos da ESCO ---------- */
footer.rodape{margin-top:auto;background:#fff;border-top:1px solid var(--line);padding:10px 22px;text-align:center}
footer.rodape img{max-width:100%;max-height:84px;object-fit:contain}
footer.rodape.sem-imagem{display:none}
main{flex:1}
.aluno-wrap{display:flex;flex-direction:column;min-height:100vh}
.aluno-body{flex:1}

/* ---------- Estado da sincronização (barra superior) ---------- */
.sync{display:flex;align-items:center;gap:6px;font-size:.72rem;color:#AEB6D0;margin-right:12px;white-space:nowrap;cursor:default}
.sync i{width:8px;height:8px;border-radius:50%;background:#94A3B8;display:inline-block}
.sync.ok i{background:#22C55E}
.sync.gravar i{background:#F59E0B;animation:pulsar 1s infinite}
.sync.erro i{background:#EF4444}
@keyframes pulsar{50%{opacity:.35}}

/* célula fundida dos estudos: campo aberto largo */
table.mapa td.entidade.fundida input.cel-estudo{width:100%;min-width:250px;padding:3px 6px;font-size:.8rem;border-color:transparent;background:transparent}
table.mapa td.entidade.fundida input.cel-estudo:hover,table.mapa td.entidade.fundida input.cel-estudo:focus{border-color:#CBD3E4;background:#fff}
table.mapa td.entidade.fundida input.cel-estudo{text-align:left;font-weight:500;letter-spacing:0}


/* ---------- Ecrãs mais estreitos: tudo a caber sem barra horizontal ---------- */
@media (max-width:1520px){
  table.mapa td{padding:2px 2px}
  table.mapa th{padding:3px 3px}
  table.mapa th.vert{width:33px;min-width:33px;font-size:.58rem}
  table.mapa td:first-child,table.mapa th:first-child{max-width:54px;font-size:.68rem}
  table.mapa th:nth-child(3),table.mapa td:nth-child(3){max-width:34px;font-size:.7rem}
  table.mapa td:nth-child(2){max-width:84px;min-width:72px;font-size:.73rem}
  table.mapa td.funcao input{width:80px}
  table.mapa td.entidade input{width:104px}
  table.mapa input.cel-data{width:104px;font-size:.7rem}
  table.mapa select.cel-area{width:58px;font-size:.74rem}
  table.mapa select.cel-prov{width:58px;font-size:.62rem}
  table.mapa td.registo{font-size:.66rem;max-width:64px}
  table.mapa td.registo .quem{font-size:.64rem}
  table.mapa input[type=checkbox]{width:14px;height:14px}
  table.compact th,table.compact td{font-size:.78rem;padding:4px 6px}
  table.ciclo th{font-size:.66rem;padding:3px 4px}
  table.ciclo td{padding:3px 5px;font-size:.78rem}
  .aba{padding:5px 9px;font-size:.78rem}
  .topbar h1{font-size:1.15rem}
}

/* linha com informação transitada por confirmar */
tr.por-confirmar>td{opacity:.82}
tr.por-confirmar>td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
table.mapa td.registo.confirmar{overflow:visible;max-width:none}
table.mapa td.registo .conf-txt{color:var(--bad);font-weight:650;font-size:.7rem}

/* ---------- Dica amarela (texto cortado ao passar o rato) ---------- */
#dica{position:fixed;z-index:400;background:#FFF9DB;border:1px solid #E8D98F;color:#5B4E1B;
  padding:7px 11px;border-radius:9px;font-size:.8rem;line-height:1.35;max-width:380px;
  white-space:pre-line;overflow-wrap:break-word;box-shadow:0 6px 20px rgba(90,74,10,.18);
  pointer-events:none;opacity:0;transition:opacity .12s}
#dica.on{opacity:.96}

/* alertas clicáveis + linha destacada */
.alert.clicavel{cursor:pointer;transition:.12s}
.alert.clicavel:hover{filter:brightness(.97);box-shadow:0 2px 8px rgba(154,91,6,.18)}
.alert.clicavel .ir{font-weight:700;text-decoration:underline;white-space:nowrap}
tr.realce>td{outline:2px solid #D97706;outline-offset:-2px;background:#FFF4E5 !important}
tr.realce.l-desconhecida>td{background:#FFF4E5 !important}

/* campos numéricos por preencher (matriculados / desist / aprov) */
input.falta{background:#FFF9DB;border-color:#E8D98F}

/* empregadores: linhas não elegíveis e botão de envio destacado */
tr.nao-elegivel>td{opacity:.45;background:#F7F8FB}
tr.nao-elegivel:hover>td{opacity:.75}
.btn.grande{padding:11px 22px;font-size:.95rem;box-shadow:0 4px 14px rgba(10,102,194,.32)}
.btn.grande:disabled{box-shadow:none}

/* Anexo 6 — quadros oficiais da ANQEP */
.anexo6-bloco{margin:0 0 22px}
table.anexo6 th{white-space:normal;font-size:.7rem;line-height:1.2;vertical-align:bottom}
table.anexo6 th:first-child{min-width:210px}
table.anexo6 td:first-child{white-space:normal;min-width:210px}
table.anexo6 tfoot td{background:#F2F6FD}

/* Inquérito ao empregador dentro do ✎ do aluno */
details.inq-emp > summary{
  cursor:pointer; font-weight:600; padding:8px 4px; list-style:none;
  display:flex; align-items:center; gap:2px;
}
details.inq-emp > summary::-webkit-details-marker{ display:none }
details.inq-emp > summary::before{ content:'▸'; margin-right:8px; color:var(--muted); transition:transform .15s }
details.inq-emp[open] > summary::before{ transform:rotate(90deg) }
details.inq-emp > div{ padding:6px 2px 2px; border-top:1px solid var(--line); margin-top:4px }
fieldset.inq-emp{ opacity:.75 }

/* Aviso do rodapé quando a barra de logótipos não carrega (só admin) */
.rodape-aviso{
  font-size:.82rem; color:var(--muted); line-height:1.55;
  max-width:820px; margin:0 auto; white-space:normal;
}
.rodape-aviso b{ color:var(--bad) }
.rodape-aviso a{ color:var(--blue) }

/* ---------- Sino de avisos (respostas das entidades) ---------- */
.sino{position:relative;flex:none;margin-left:4px}
.sino-bt{position:relative;background:transparent;border:0;color:#C9D2EA;font-size:1.05rem;line-height:1;
  cursor:pointer;padding:8px 9px;border-radius:9px;transition:background .12s}
.sino-bt:hover{background:rgba(255,255,255,.09);color:#fff}
.sino-bola{position:absolute;top:2px;right:1px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:var(--bad);color:#fff;font-size:.66rem;font-weight:700;line-height:16px;text-align:center;
  box-shadow:0 0 0 2px var(--navy)}
.sino-painel{position:absolute;top:calc(100% + 8px);left:0;width:min(380px,92vw);background:#fff;
  border-radius:14px;box-shadow:0 18px 50px rgba(10,16,45,.28);border:1px solid var(--line);
  z-index:60;overflow:hidden}
.sino-painel.hidden{display:none}
.sino-cab{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  padding:12px 15px;border-bottom:1px solid var(--line);background:#F7F9FD;color:var(--navy)}
.sino-vazio{padding:18px 15px;font-size:.83rem;color:var(--muted);line-height:1.6;white-space:normal}
.sino-lista{max-height:340px;overflow:auto}
.sino-item{display:block;padding:11px 15px;border-bottom:1px solid var(--line);text-decoration:none;
  color:var(--navy);transition:background .12s}
.sino-item:hover{background:#F2F6FD}
.sino-item.nova{background:#F0F7FF;box-shadow:inset 3px 0 0 var(--blue)}
.sino-item.nova:hover{background:#E6F1FE}
.sino-linha1{display:flex;align-items:center;gap:8px;font-size:.88rem}
.sino-linha1 b{white-space:normal;line-height:1.3}
.sino-linha2{font-size:.79rem;color:var(--muted);margin-top:2px;white-space:normal}
.sino-linha3{font-size:.74rem;color:var(--muted);margin-top:3px;display:flex;gap:2px;flex-wrap:wrap}
.sino-linha3 .quando{margin-left:auto;opacity:.8}
.sino-todos{display:block;padding:10px 15px;text-align:center;font-size:.82rem;font-weight:600;
  color:var(--blue);text-decoration:none;background:#F7F9FD}
.sino-todos:hover{background:#EEF4FD}
.sino-grupo{padding:9px 15px 5px;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;
  font-weight:700;color:var(--muted);background:#F7F9FD;border-bottom:1px solid var(--line)}
.sino-item.tarefa{background:#FFFBF2;box-shadow:inset 3px 0 0 var(--warn)}
.sino-item.tarefa:hover{background:#FFF6E6}
.sino-item.a-aprovar{background:#FFFBF2;box-shadow:inset 3px 0 0 #F59E0B}
.sino-item.a-confirmar{background:#FEF3F3;box-shadow:inset 3px 0 0 #DC2626}
.sino-item.a-eschooling{background:#F8F5FF;box-shadow:inset 3px 0 0 #7C3AED}
.sino-item.a-dados{background:#F1F7FF;box-shadow:inset 3px 0 0 #0A66C2}
.sino-item.a-naarea{background:#F0FAF8;box-shadow:inset 3px 0 0 #0F766E}
.sino-item.a-incoerente{background:#FFF8EF;box-shadow:inset 3px 0 0 #B45309}
.sino-linha1 .bola{margin-right:8px}
.sino-linha1 .ic{flex:none;font-size:.95rem}

/* ---------- Avaliações ---------- */
.card.proxima{border-left:4px solid var(--ok);background:linear-gradient(90deg,#F2FBF5 0%,#fff 34%)}
.card.aval-ativa{border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,102,194,.12)}
.aval-detalhe.hidden{display:none}
.pill.azul{background:#E6F0FC;color:#0A4C93;border:1px solid #BFD9F5}
tr.turma-falta>td{background:#FFFDF4}
.btn.ghost.eliminar{color:var(--bad);border-color:#F0C2C2}
.btn.ghost.eliminar:hover{background:#FDF2F2}
.aval-minis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}

/* Relatório de progresso anual */
table.progresso td{vertical-align:top}
table.progresso td.wrap{white-space:normal;max-width:420px}
table.progresso input[type=text]{min-width:220px}

/* ---------- Histórico de avaliações ---------- */
tr.linha-detalhe.hidden{display:none}
tr.linha-detalhe>td{background:#F7F9FD}
tr.linha-ativa>td{background:#F0F7FF}
.icon-btn.on{background:#E6F1FE;border-radius:6px}

/* campos calculados nas turmas: o valor automático aparece como placeholder */
table.turmas input.auto::placeholder{color:#0A66C2;opacity:.85;font-weight:600}
table.turmas input.auto{background:#F4F8FE;border-color:#D7E4F5}
