/* Portal — mesmos tons do relatório 2Logical (fontes Hanken Grotesk / IBM Plex Mono) */
:root{
  --pt-bg:#F4F4F4; --pt-panel:#fff; --pt-ink:#3C3C3B; --pt-muted:#6F6F6E; --pt-line:#DADADA; --pt-soft:#EFEFEF;
  --pt-dark:#3C3C3B; --pt-dark2:#2E2E2D; --pt-dline:#545453;
  --pt-blue:#009FE3; --pt-blue-soft:#E3F4FC; --pt-green:#2E8A5E; --pt-green-soft:#E5F5EC;
  --pt-red:#C42531; --pt-red-soft:#FBE7E3; --pt-purple:#8340FF; --pt-purple-soft:#EFE7FF; --pt-orange-soft:#FFEFE5;
  --pt-spectrum:linear-gradient(90deg,#57C4FF 0%,#52B788 22%,#BAD04C 40%,#FFD200 56%,#F49D2C 72%,#E63441 88%,#FF0066 100%);
  --pt-f:"Hanken Grotesk",system-ui,sans-serif; --pt-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  --pt-shadow:0 1px 2px rgba(60,60,59,.06),0 6px 20px -8px rgba(60,60,59,.14);
}

/* ── utilizador na barra lateral escura ── */
.pt-user{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid var(--pt-dline);border-radius:14px;font-size:13px;color:#D6D6D5}
.pt-user b{color:#fff;margin-right:8px}
.pt-papel{font:700 10px var(--pt-f);letter-spacing:.12em;text-transform:uppercase;color:#9D9D9C}
.pt-user nav{display:flex;flex-wrap:wrap;gap:6px}
.pt-user nav a,.pt-user nav button{all:unset;cursor:pointer;border:1px solid var(--pt-dline);border-radius:999px;padding:4px 11px;font:600 12px var(--pt-f);color:#D6D6D5}
.pt-user nav a:hover,.pt-user nav button:hover{border-color:#8E8E8D;color:#fff}
.pt-user nav a:focus-visible,.pt-user nav button:focus-visible{outline:2px solid #FF792E;outline-offset:2px}

/* ── barra de validação no topo da ficha ── */
.pt-barra{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between;
  margin:0 calc(-1 * clamp(16px,3.5vw,48px));padding:10px clamp(16px,3.5vw,48px);background:rgba(255,255,255,.96);
  backdrop-filter:blur(6px);border-bottom:1px solid var(--pt-line);font:14px/1.4 var(--pt-f)}
.pt-estado,.pt-acoes{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pt-sub{color:var(--pt-muted);font-size:13px}
.pt-selo{display:inline-block;font:600 12px var(--pt-f);padding:3px 10px;border-radius:999px;background:var(--pt-soft);color:var(--pt-muted);margin:4px 6px 0 0;overflow-wrap:anywhere}
.pt-selo.ok{background:var(--pt-green-soft);color:var(--pt-green)}
.pt-selo.mau{background:var(--pt-red-soft);color:var(--pt-red)}
.pt-selo.res{background:var(--pt-soft);color:var(--pt-muted);text-decoration:line-through}
.pt-selo.ed{background:var(--pt-purple-soft);color:var(--pt-purple)}
.pt-estado .pt-selo{margin-top:0}

.pt-b{font:700 13px var(--pt-f);border:1px solid var(--pt-line);background:#fff;color:var(--pt-ink);border-radius:999px;padding:7px 14px;cursor:pointer;transition:border-color .15s,background .15s}
.pt-b:hover{border-color:var(--pt-blue);color:#0079AE}
.pt-b.ok{border-color:var(--pt-green);color:var(--pt-green)} .pt-b.ok:hover{background:var(--pt-green-soft)}
.pt-b.mau{border-color:var(--pt-red);color:var(--pt-red)} .pt-b.mau:hover{background:var(--pt-red-soft)}
.pt-b.cheio{background:var(--pt-dark);border-color:var(--pt-dark);color:#fff}
.pt-b:focus-visible,.pt-mini:focus-visible,.pt-x:focus-visible{outline:2px solid #FF792E;outline-offset:2px}
.pt-mini{font:600 12px var(--pt-f);border:1px solid var(--pt-line);background:#fff;color:var(--pt-ink);border-radius:8px;padding:3px 9px;cursor:pointer;min-height:28px}
.pt-mini:hover{border-color:var(--pt-blue)}
.pt-mini.ok{color:var(--pt-green)} .pt-mini.ok:hover{background:var(--pt-green-soft);border-color:var(--pt-green)}
.pt-mini.mau{color:var(--pt-red)} .pt-mini.mau:hover{background:var(--pt-red-soft);border-color:var(--pt-red)}

/* ── gaveta de dados ── */
.pt-fundo{position:fixed;inset:0;z-index:20;background:rgba(30,30,29,.45);display:flex;justify-content:flex-end}
.pt-gaveta{width:min(680px,100%);height:100%;overflow:auto;background:var(--pt-bg);padding:0 22px 40px;font:14px/1.45 var(--pt-f);color:var(--pt-ink);box-shadow:-20px 0 60px rgba(30,30,29,.25)}
.pt-gaveta::before{content:"";display:block;height:5px;margin:0 -22px;background:var(--pt-spectrum);position:sticky;top:0}
.pt-cab{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-top:18px}
.pt-cab h3{font:800 26px/1.1 var(--pt-f);letter-spacing:-.02em;margin:4px 0 6px}
.pt-x{border:1px solid var(--pt-line);background:#fff;border-radius:999px;width:36px;height:36px;font-size:20px;cursor:pointer;flex-shrink:0}
.pt-gaveta section{padding-top:0}
.pt-sec{margin-top:18px}
.pt-sec .pt-sec{margin-top:10px}
.pt-sec h4{display:flex;align-items:center;gap:8px;font:700 11px var(--pt-f);letter-spacing:.12em;text-transform:uppercase;color:var(--pt-blue);margin:0 0 8px}
.pt-sec h4 .pt-mini{margin-left:auto;text-transform:none;letter-spacing:0}
.pt-n{font:500 11px var(--pt-mono);color:var(--pt-muted);letter-spacing:0}
.pt-lst{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--pt-line);border-radius:12px;overflow:hidden;box-shadow:var(--pt-shadow)}
.pt-lst li+li{border-top:1px solid var(--pt-soft)}
.pt-it{display:flex;gap:10px;justify-content:space-between;padding:9px 12px}
.pt-txt{min-width:0;overflow-wrap:anywhere}
.pt-txt a{font-size:12px}
.pt-k{font:700 12px var(--pt-f);color:var(--pt-muted);margin-right:6px}
.pt-txt code{font:12px var(--pt-mono);color:var(--pt-muted)}
.pt-bts{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;align-items:flex-start;flex-shrink:0;max-width:200px}
.pt-vb,.pt-eb{display:flex;gap:4px}

/* ── diálogo ── */
.pt-dlg{border:0;border-radius:16px;padding:0;width:min(560px,calc(100% - 24px));box-shadow:0 30px 80px rgba(30,30,29,.35);font:14px/1.45 var(--pt-f);color:var(--pt-ink)}
.pt-dlg::backdrop{background:rgba(30,30,29,.55)}
.pt-dlg form{padding:0 22px 20px;max-height:85vh;overflow:auto}
.pt-dlg form::before{content:"";display:block;height:5px;margin:0 -22px 16px;background:var(--pt-spectrum)}
.pt-dlg h3{font:800 22px/1.15 var(--pt-f);margin:0 0 12px}
.pt-dlg label{display:flex;flex-direction:column;gap:4px;font-weight:700;font-size:13px;margin-bottom:12px}
.pt-dlg input,.pt-dlg textarea,.pt-dlg select,.pt-campo{font:400 14px var(--pt-f);padding:9px 12px;border:1px solid var(--pt-line);border-radius:10px;background:#fff;color:var(--pt-ink);width:100%;box-sizing:border-box}
.pt-dlg textarea{font-family:var(--pt-mono);font-size:12.5px;resize:vertical}
.pt-dlg small{font-weight:400;color:var(--pt-muted)}
.pt-dlg-b{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
.pt-err{color:var(--pt-red);font-weight:600}
#ptAviso{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;background:var(--pt-dark);color:#fff;padding:10px 18px;border-radius:999px;font:600 14px var(--pt-f);box-shadow:var(--pt-shadow);max-width:calc(100% - 32px)}
#ptAviso.erro{background:var(--pt-red)}

/* ── páginas próprias (login, conta, administração) ── */
.pt-pag{margin:0;min-height:100vh;background:var(--pt-bg);color:var(--pt-ink);font:15px/1.5 var(--pt-f);-webkit-font-smoothing:antialiased}
.pt-pag a{color:var(--pt-blue)}
.pt-topo{background:var(--pt-dark);color:#fff;padding:0 16px}
.pt-topo::before{content:"";display:block;height:5px;margin:0 -16px;background:var(--pt-spectrum)}
.pt-topo-in{max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;justify-content:space-between;padding:14px 0}
.pt-topo h1{font:800 22px var(--pt-f);margin:0;letter-spacing:-.02em}
.pt-topo nav{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pt-topo nav a,.pt-topo nav button{all:unset;cursor:pointer;border:1px solid var(--pt-dline);border-radius:999px;padding:5px 13px;font:600 13px var(--pt-f);color:#D6D6D5}
.pt-topo nav a:hover,.pt-topo nav button:hover{color:#fff;border-color:#8E8E8D}
.pt-cx{max-width:1180px;margin:0 auto;padding:24px 16px 60px}
.pt-cartao{background:#fff;border:1px solid var(--pt-line);border-radius:16px;padding:22px;box-shadow:var(--pt-shadow)}
.pt-login{max-width:400px;margin:10vh auto 0;padding:0 16px}
.pt-login .pt-cartao{padding:0 26px 26px;overflow:hidden}
.pt-login .pt-cartao::before{content:"";display:block;height:5px;margin:0 -26px 22px;background:var(--pt-spectrum)}
.pt-login h1{font:800 30px/1.05 var(--pt-f);letter-spacing:-.025em;margin:0 0 4px}
.pt-form label{display:flex;flex-direction:column;gap:5px;font-weight:700;font-size:13px;margin:14px 0 0}
.pt-form input,.pt-form select{font:400 15px var(--pt-f);padding:10px 13px;border:1px solid var(--pt-line);border-radius:10px;background:#fff;color:var(--pt-ink)}
.pt-form input:focus,.pt-campo:focus,.pt-dlg input:focus,.pt-dlg textarea:focus{outline:none;border-color:var(--pt-blue);box-shadow:0 0 0 3px rgba(0,159,227,.18)}
.pt-form .pt-b{margin-top:18px;width:100%;padding:11px}
.pt-msg{border-radius:10px;padding:10px 14px;font-weight:600;font-size:14px;margin:14px 0 0}
.pt-msg.erro{background:var(--pt-red-soft);color:var(--pt-red)} .pt-msg.ok{background:var(--pt-green-soft);color:var(--pt-green)}
.pt-msg.info{background:var(--pt-blue-soft);color:#0079AE}

.pt-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
.pt-tabs button{font:700 13px var(--pt-f);border:1px solid var(--pt-line);background:#fff;color:var(--pt-ink);border-radius:999px;padding:7px 15px;cursor:pointer}
.pt-tabs button[aria-selected="true"]{background:var(--pt-dark);border-color:var(--pt-dark);color:#fff}
.pt-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.pt-kpi{background:#fff;border:1px solid var(--pt-line);border-radius:14px;padding:14px 16px;box-shadow:var(--pt-shadow)}
.pt-kpi b{display:block;font:800 30px/1 var(--pt-f);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-bottom:4px}
.pt-kpi span{font:700 11px var(--pt-f);letter-spacing:.1em;text-transform:uppercase;color:var(--pt-muted)}
.pt-filtros{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:12px}
.pt-filtros label{display:flex;flex-direction:column;gap:3px;font:700 12px var(--pt-f);color:var(--pt-muted)}
.pt-filtros .pt-campo{width:auto;min-width:130px;padding:7px 10px}
.pt-tabela{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px}
.pt-tabw{overflow:auto;border:1px solid var(--pt-line);border-radius:14px;box-shadow:var(--pt-shadow);background:#fff}
.pt-tabela th{text-align:left;font:700 11px var(--pt-f);letter-spacing:.08em;text-transform:uppercase;color:var(--pt-muted);padding:10px 12px;border-bottom:1px solid var(--pt-line);position:sticky;top:0;background:#fff}
.pt-tabela td{padding:9px 12px;border-top:1px solid var(--pt-soft);vertical-align:top;overflow-wrap:anywhere}
.pt-tabela td.m{font:12px var(--pt-mono);white-space:nowrap;color:var(--pt-muted)}
.pt-tabela td .pt-mini{margin:2px 4px 2px 0}
.pt-det{font:12px var(--pt-mono);color:var(--pt-muted);max-width:520px}
.pt-pagin{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;font-size:13px;color:var(--pt-muted)}
.pt-dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}
.pt-dl dt{font-weight:700;color:var(--pt-muted)}
.pt-dl dd{margin:0}
@media (max-width:720px){.pt-it{flex-direction:column}.pt-bts{flex-direction:row;align-items:center}.pt-barra{position:static}}

/* países do utilizador (administração) */
.pt-fs{border:1px solid var(--pt-line);border-radius:12px;padding:10px 14px 12px;margin:14px 0 0}
.pt-fs legend{font:700 12px var(--pt-f);color:var(--pt-muted);padding:0 6px}
.pt-paises{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px 14px}
.pt-paises .pt-chk:first-child{grid-column:1/-1}
.pt-chk{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;font:500 14px var(--pt-f)!important;margin:0!important;cursor:pointer}
.pt-chk input{width:16px;height:16px;accent-color:var(--pt-blue)}
