/* ════════════════════════════════════════════════════════════════
   EXORYA · Design System v1.0 (2026) — ver docs/design_system.md
   Derivado da apresentação EXORYA (Longevity Experience):
   azul-marinho #1B2A4A · dourado #9C7A3C · creme #F4F1EA
   Cambria (títulos, números) + Helvetica (interface e texto)
   Estrutura de componentes idêntica ao portal Gestão de Projectos.
   Sem fontes nem recursos externos (privacidade de quem acede).
   ════════════════════════════════════════════════════════════════ */
:root{
  /* Azul-marinho */
  --navy-950:#0E1628;--navy-900:#121D33;--navy-800:#1B2A4A;--navy-700:#22314F;--navy-600:#3A4568;
  --navy-300:#AEB4BF;--navy-100:#E8EBF2;--navy-50:#F3F5F9;
  /* Dourado */
  --gold-700:#7A5F2C;--gold-600:#9C7A3C;--gold-500:#B09A62;--gold-300:#C9A96A;--gold-200:#E6D6B0;--gold-100:#F6F0E2;
  /* Neutros quentes */
  --ink:#26262A;--text2:#4A5568;--mid:#5E6472;--border:#E3E0D8;--border-input:#D2CEC4;
  --cream:#F4F1EA;--cream-2:#FBFAF6;--white:#FFFFFF;
  /* Séries de dados nos gráficos (validadas para daltonismo e contraste sobre branco) */
  --data-1:#3B5B96;--data-2:#B08431;

  /* Papéis */
  --primary:var(--navy-800);        /* botões cheios, superfícies escuras, números */
  --primary-h:var(--navy-900);
  --on-primary:var(--white);
  --accent:var(--gold-600);         /* filetes, barras, destaques (não texto pequeno) */
  --accent-txt:var(--gold-700);     /* texto e links dourados sobre fundo claro (6:1) */
  --accent-on-dark:var(--gold-300); /* dourado sobre azul-marinho (6,3:1) */
  --dark:var(--ink);
  --bg:var(--cream);

  --font-title:Cambria,'Cambria Math',Georgia,'Times New Roman',serif;
  --font-ui:'Helvetica Neue',Helvetica,Arial,sans-serif;
  --font-body:'Helvetica Neue',Helvetica,Arial,sans-serif;

  --radius:4px;--radius-pill:40px;
  --shadow:0 2px 12px rgba(18,29,51,.07);
  --shadow-lg:0 16px 48px rgba(18,29,51,.25);

  /* Estados (badges, alertas, KPIs): pares fundo / texto */
  --ok-bg:#E7F1EA;--ok-c:#3E7A4E;
  --err-bg:#F7E6E5;--err-c:#A6403D;
  --warn-bg:var(--gold-100);--warn-c:var(--gold-700);
  --ink-bg:var(--navy-800);--ink-c:#FFFFFF;
  --neutral-bg:#ECEAE4;--neutral-c:var(--text2);
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--dark);background:var(--bg);min-height:100vh;-webkit-font-smoothing:antialiased}
a{color:var(--accent-txt);text-underline-offset:3px}
a:hover{color:var(--navy-800)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
::selection{background:var(--gold-200)}
[hidden]{display:none !important}

/* ── Barra de topo ── */
.topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:28px;height:72px;padding:0 32px;background:var(--white);border-bottom:1px solid var(--border)}
.tb-brand{display:flex;align-items:center;gap:18px;cursor:pointer;text-decoration:none;flex-shrink:0}
.tb-brand img{height:30px;width:auto;display:block}
.tb-app{padding-left:18px;border-left:1px solid var(--border);font:700 10.5px/1.3 var(--font-ui);letter-spacing:2.5px;text-transform:uppercase;color:var(--mid);white-space:nowrap}
.tb-nav{display:flex;align-items:center;gap:22px;flex:1;min-width:0}
.nav-item{font:600 11.5px/1.2 var(--font-ui);letter-spacing:1.5px;text-transform:uppercase;color:var(--dark);text-decoration:none;cursor:pointer;padding-bottom:4px;border-bottom:2px solid transparent;white-space:nowrap;transition:color .15s}
.nav-item:hover{color:var(--accent-txt)}
.nav-item.active{color:var(--accent-txt);border-bottom-color:var(--accent)}
.tb-user{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}
.tb-avatar{width:32px;height:32px;border-radius:50%;background:var(--navy-800);color:var(--accent-on-dark);display:inline-flex;align-items:center;justify-content:center;font:400 15px/1 var(--font-title);text-transform:uppercase}
.tb-nome{font-size:13px;font-weight:600;color:var(--dark);margin-right:6px}
.tb-role{display:block;font:700 9.5px/1.2 var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--mid)}
.btn-logout{padding:7px 14px;border:1.5px solid var(--border-input);border-radius:var(--radius-pill);background:transparent;color:var(--text2);font:700 10.5px/1.2 var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;cursor:pointer;transition:all .15s}
.btn-logout:hover{border-color:var(--accent);color:var(--accent-txt)}

/* ── Páginas ── */
.main{display:block;min-width:0}
.pane{display:none;flex-direction:column;min-height:calc(100vh - 72px)}
.pane.active{display:flex}
.page-hd{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:16px 24px;padding:28px 32px 24px;background:var(--white);border-bottom:1px solid var(--border)}
.page-hd-txt{min-width:0}
.page-hd h1{font:400 30px/1.15 var(--font-title);text-transform:uppercase;letter-spacing:3px;color:var(--navy-800);text-wrap:balance}
.page-hd h1 .hl{color:var(--accent)}
.page-hd.com-tabs{padding-bottom:0}
.page-hd > .cfg-tabs{flex-basis:100%;margin:4px 0 -1px;border-bottom:none}
.page-body{padding:28px 32px 48px;flex:1;min-width:0;counter-reset:sec}
.hdr-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.kicker{display:block;font:700 11px/1.3 var(--font-ui);letter-spacing:3px;text-transform:uppercase;color:var(--accent-txt);margin-bottom:10px}
.crumb{cursor:pointer;display:inline-block}
.crumb:hover{color:var(--navy-800)}
.p-sub{font-size:13px;color:var(--text2);margin-top:10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.p-sub .sep{color:var(--border-input)}
.section-hd{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:36px 0 14px}
.section-hd:first-child{margin-top:0}
.section-hd h3{font:700 11.5px/1.3 var(--font-ui);letter-spacing:3px;text-transform:uppercase;color:var(--mid)}
.section-hd h3::before{counter-increment:sec;content:counter(sec,decimal-leading-zero) " · ";color:var(--accent-txt)}

/* ── Botões ── */
.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 22px;border:2px solid var(--primary);border-radius:var(--radius-pill);font:700 11.5px/1.2 var(--font-ui);letter-spacing:1.8px;text-transform:uppercase;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .15s,border-color .15s,color .15s}
.btn-primary{background:var(--primary);color:var(--on-primary)}
.btn-primary:hover{background:var(--primary-h);border-color:var(--primary-h);color:var(--on-primary)}
.btn-secondary{background:transparent;color:var(--accent-txt);border-color:var(--accent)}
.btn-secondary:hover{background:var(--gold-100);color:var(--navy-800)}
.btn-primary:disabled,.btn-secondary:disabled{opacity:.5;cursor:not-allowed}
.btn-sm{padding:6px 14px;font-size:10px;letter-spacing:1.4px}
.btn-link{background:none;border:none;border-bottom:2px solid var(--accent);padding:0 0 3px;cursor:pointer;white-space:nowrap;font:700 11px/1.2 var(--font-ui);letter-spacing:1.8px;text-transform:uppercase;color:var(--accent-txt);transition:color .15s;text-decoration:none}
.btn-link:hover{color:var(--navy-800)}
.btn-icon{width:32px;height:32px;padding:0;background:var(--white);border:1px solid var(--border);border-radius:50%;cursor:pointer;color:var(--mid);transition:all .15s;display:inline-flex;align-items:center;justify-content:center;font-size:12px;line-height:1}
.btn-icon:hover{border-color:var(--accent);color:var(--accent-txt);background:var(--gold-100)}
.btn-icon:disabled{opacity:.35;cursor:default;pointer-events:none}
.td-ordem{white-space:nowrap;width:90px}
.actions .btn-link + .btn-link{margin-left:14px}
.btn-secondary.btn-danger-txt{color:var(--err-c);border-color:#DDB0AE}
.btn-secondary.btn-danger-txt:hover{background:var(--err-bg);border-color:var(--err-c);color:var(--err-c)}

/* ── Banda de números (KPIs) ── */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--navy-700);margin-bottom:32px;box-shadow:var(--shadow)}
.stats-grid.g6{grid-template-columns:repeat(6,1fr)}
.stats-grid.g5{grid-template-columns:repeat(5,1fr)}
.stats-grid.g3{grid-template-columns:repeat(3,1fr)}
.stat-card{background:var(--navy-800);padding:28px 18px 24px;text-align:center;min-width:0}
.stat-val{font:400 42px/1 var(--font-title);color:var(--accent-on-dark);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-val small{font-size:.45em;margin-left:4px;color:rgba(255,255,255,.7)}
.stat-val.gray{color:var(--white)}
.stat-val.mid{color:rgba(255,255,255,.6)}
.stat-val.verde{color:#8FD0A2}
.stat-val.vermelho{color:#F0A29E}
.stat-label{font:600 10.5px/1.35 var(--font-ui);letter-spacing:2.2px;text-transform:uppercase;color:var(--white);margin-top:12px}
.stat-sub{font-size:12px;line-height:1.4;color:rgba(255,255,255,.6);margin-top:6px}
.stats-grid.claro{background:none;gap:16px;box-shadow:none}
.stats-grid.claro .stat-card{background:var(--white);border-top:3px solid var(--accent);box-shadow:var(--shadow);text-align:left;padding:20px 22px}
.stats-grid.claro .stat-val{color:var(--navy-800);font-size:32px}
.stats-grid.claro .stat-val small{color:var(--mid)}
.stats-grid.claro .stat-val.verde{color:var(--ok-c)}
.stats-grid.claro .stat-val.vermelho{color:var(--err-c)}
.stats-grid.claro .stat-label{color:var(--dark);letter-spacing:1.6px}
.stats-grid.claro .stat-sub{color:var(--mid)}

/* ── Cartões e gráficos ── */
.card,.chart-card{background:var(--white);border-top:3px solid var(--accent);box-shadow:var(--shadow);padding:24px 28px}
.charts-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:8px}
.charts-row.c3{grid-template-columns:repeat(3,1fr)}
.chart-title{font:400 15px/1.25 var(--font-title);text-transform:uppercase;letter-spacing:2px;color:var(--navy-800);margin-bottom:18px}
.chart-title small{display:block;font:400 12px var(--font-body);letter-spacing:0;text-transform:none;color:var(--mid);margin-top:4px}
.bar-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;font-size:13px}
.bar-label{width:170px;color:var(--dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.bar-wrap{flex:1;background:var(--cream);border-radius:4px;height:8px;overflow:hidden}
.bar-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .4s}
.bar-fill.navy{background:var(--navy-800)}
.bar-count{width:44px;text-align:right;font:700 12px var(--font-ui);color:var(--dark);font-variant-numeric:tabular-nums;flex-shrink:0}
/* Colunas (série diária) */
.cols{display:flex;align-items:flex-end;gap:3px;height:150px;padding-top:8px;border-bottom:1px solid var(--border)}
.cols .col{flex:1;background:var(--navy-800);min-height:2px;position:relative}
.cols .col.zero{background:var(--border)}
.cols .col:hover{background:var(--accent)}
.cols-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--mid);margin-top:6px}
/* Linhas (evolução longitudinal) */
.line-chart{width:100%;height:170px;display:block;overflow:visible}
.line-chart .band{fill:var(--gold-100)}
.line-chart .grid{stroke:var(--border);stroke-width:1}
.line-chart .line{fill:none;stroke:var(--navy-800);stroke-width:2}
.line-chart .dot{fill:var(--white);stroke:var(--navy-800);stroke-width:2}
.line-chart .dot.last{fill:var(--accent);stroke:var(--accent)}
.line-chart text{font:11px var(--font-body);fill:var(--mid)}
.evo-val{font:400 28px/1 var(--font-title);color:var(--navy-800);font-variant-numeric:tabular-nums lining-nums}
.evo-val small{font-size:13px;color:var(--mid);margin-left:4px}
.delta{display:inline-block;margin-left:8px;font:700 11px var(--font-ui);letter-spacing:.5px;color:var(--mid)}
.delta.up{color:var(--navy-700)}
.delta.down{color:var(--navy-700)}
/* Intervalo de referência (l · m · h) */
.range{position:relative;width:180px;height:18px}
.range .track{position:absolute;top:7px;left:0;right:0;height:4px;background:var(--border);border-radius:2px}
.range .ok{position:absolute;top:7px;height:4px;background:var(--gold-200)}
.range .mark{position:absolute;top:2px;width:3px;height:14px;background:var(--navy-800);border-radius:1px;transform:translateX(-1px)}
.range .mark.out{background:var(--err-c)}
.range-lbl{font-size:11px;color:var(--mid);font-variant-numeric:tabular-nums}
/* Segmentar */
.seg-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.seg-card{background:var(--white);border-top:3px solid var(--accent);box-shadow:var(--shadow);padding:18px}
.seg-card h4{font:400 13px/1.2 var(--font-title);text-transform:uppercase;letter-spacing:2px;color:var(--navy-800);margin-bottom:12px}
.seg-line{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;padding:6px 0;border-bottom:1px solid #F0EEE8}
.seg-line:last-child{border-bottom:none}
.seg-line b{font:400 18px var(--font-title);color:var(--navy-800);font-variant-numeric:tabular-nums lining-nums}
/* Fotografias de postura */
.photo-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.photo-grid figure{background:var(--white);border:1px solid var(--border);padding:8px;text-align:center}
.photo-grid img{width:100%;height:220px;object-fit:contain;background:var(--cream-2);display:block}
.photo-grid figcaption{font:700 10px var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--mid);margin-top:6px}
/* Avatar 3D */
.avatar-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 16px;margin-bottom:12px}
.avatar-btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.avatar-btns .btn-secondary[aria-pressed="true"]{background:var(--navy-800);border-color:var(--navy-800);color:var(--white)}
.avatar-view{position:relative;height:560px;background:var(--cream-2);border:1px solid var(--border);border-top:3px solid var(--accent);overflow:hidden}
.avatar-view canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.avatar-view canvas:active{cursor:grabbing}
.photo-grid.g4{grid-template-columns:repeat(4,1fr)}
.photo-grid figure.clicavel{cursor:pointer;transition:border-color .15s}
.photo-grid figure.clicavel:hover{border-color:var(--accent)}
.vista-img{position:relative;height:320px;background:var(--cream-2)}
.photo-grid .vista-img img{height:100%;background:transparent}
.avatar-msg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;font-size:13px;color:var(--mid)}
/* Perímetros sobre o avatar: anel no corpo, legenda ao lado e linha de chamada (avatar.js) */
.av-medidas{--av-linha:var(--accent);--av-nome:var(--mid);--av-valor:var(--ink);--av-fundo:rgba(251,250,246,.88);position:absolute;inset:0;pointer-events:none;overflow:hidden}
.av-linhas{position:absolute;inset:0;width:100%;height:100%}
.av-linhas polyline{fill:none;stroke:var(--av-linha);stroke-width:1}
.av-linhas circle{fill:var(--av-linha)}
.av-legenda{position:absolute;left:0;top:0;display:flex;flex-direction:column;gap:1px;padding:3px 8px;border-left:2px solid var(--av-linha);background:var(--av-fundo);white-space:nowrap;will-change:transform}
.av-legenda.dir{align-items:flex-end;border-left:0;border-right:2px solid var(--av-linha)}
.av-legenda .n{font:700 9.5px/1.3 var(--font-ui);letter-spacing:1.2px;text-transform:uppercase;color:var(--av-nome)}
.av-legenda .v{font:400 15px/1.2 var(--font-title);color:var(--av-valor);font-variant-numeric:tabular-nums lining-nums}
/* Utente: separador Resumo (ficha e parâmetros ao lado do corpo 3D; avaliações em baixo) */
.up-topo{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:stretch;margin-bottom:16px}
.up-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.up-vazio{background:var(--white);border:1px dashed var(--border-input);padding:32px 24px;text-align:center}
.up-ficha{background:var(--white);border:1px solid var(--border);border-top:3px solid var(--accent);padding:16px 22px 20px;box-shadow:var(--shadow)}
.up-hd{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;margin-bottom:14px;border-bottom:1px solid var(--border)}
.up-hd img{height:16px;width:auto}
.up-hd .kicker{margin:0}
.up-ficha h2{margin:0;font:400 24px/1.2 var(--font-title);letter-spacing:1.5px;text-transform:uppercase;color:var(--navy-800)}
.up-sub{margin:4px 0 12px;font-size:13px;color:var(--mid)}
.up-sub .sep{margin:0 8px;color:var(--border-input)}
.up-linha{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--border);font-size:13px;color:var(--text2)}
.up-linha b{display:flex;align-items:center;gap:8px;font-weight:400}
.up-linha small{font-size:12px;color:var(--mid)}
.up-objetivo{margin:10px 0 0;padding:10px 14px;background:var(--cream-2);border-left:2px solid var(--accent);font:italic 400 14px/1.5 var(--font-title);color:var(--ink)}
.up-objetivo span{display:block;margin-bottom:4px;font:normal 700 9.5px/1.3 var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--accent-txt)}
.up-bloco{margin-top:12px}
.up-rot{display:block;margin-bottom:6px;font:700 9.5px/1.3 var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--mid)}
.up-chips{display:flex;flex-wrap:wrap;gap:6px}
.up-chip{padding:3px 10px;border:1px solid var(--border-input);border-radius:var(--radius-pill);background:var(--white);font-size:12px;color:var(--text2)}
.up-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.up-sec{background:var(--white);border:1px solid var(--border);padding:16px 20px 18px}
.up-sec h3{display:flex;align-items:baseline;gap:10px;margin:0 0 12px;font:700 11px/1.3 var(--font-ui);letter-spacing:1.8px;text-transform:uppercase;color:var(--navy-800)}
.up-sec h3 small{font-weight:400;letter-spacing:.2px;text-transform:none;color:var(--mid)}
.up-sec h3 .btn-link{margin-left:auto}
.up-grupo+.up-grupo{margin-top:14px}
.up-fonte{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:12px;font-weight:600;color:var(--text2)}
.up-fonte span{font-weight:400;color:var(--mid)}
.up-params{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.up-param{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;background:var(--cream-2);border:1px solid var(--border)}
.up-param .n{font:700 9.5px/1.3 var(--font-ui);letter-spacing:1.1px;text-transform:uppercase;color:var(--mid)}
.up-param .v{font:400 22px/1.1 var(--font-title);color:var(--navy-800);font-variant-numeric:tabular-nums lining-nums}
.up-param .v small{margin-left:3px;font:600 11px var(--font-ui);color:var(--mid)}
.up-dif{font-size:11px;color:var(--mid)}
.up-avatar{position:relative;height:500px;background:var(--cream-2);border:1px solid var(--border);overflow:hidden;touch-action:pan-y}
.up-avatar canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.up-avatar canvas:active{cursor:grabbing}
.up-dica{margin-top:6px;font:700 9.5px/1.3 var(--font-ui);letter-spacing:1.2px;text-transform:uppercase;text-align:center;color:var(--mid)}
.up-lista{margin:0;padding:0;list-style:none}
.up-lista li+li{border-top:1px solid var(--border)}
.up-lista a,.up-lista button{display:grid;grid-template-columns:84px minmax(0,1fr) auto 12px;gap:10px;align-items:baseline;width:100%;padding:9px 4px;background:none;border:0;font:inherit;font-size:13px;color:var(--ink);text-align:left;text-decoration:none;cursor:pointer}
.up-lista a:hover,.up-lista button:hover{background:var(--gold-100)}
.up-lista .d{color:var(--text2);font-variant-numeric:tabular-nums}
.up-lista .s{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.up-lista .x{font-size:12px;color:var(--mid)}
.up-lista .go{color:var(--accent-txt)}
@media(min-width:1280px){
  .up-topo{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  /* The 3D body stays in view while the left column scrolls, but never leaves its own
     column: it cannot cover the evaluations below. */
  .up-corpo{position:sticky;top:88px}
  .up-avatar{height:560px}
}

/* Comunicações (Configurações gerais) e avisos ao parceiro no pedido de disponibilidade */
.com-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:16px;margin-bottom:8px}
.com-card .chart-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px}
.com-form{margin-top:12px}
.com-btns{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}
.com-teste{display:inline-flex;gap:8px;align-items:center;margin-left:auto}
.com-teste .form-input{width:200px}
.com-mt{margin-top:10px}
.com-avisos{margin-top:18px;padding-top:4px;border-top:1px solid var(--border)}
.com-motivos{margin:8px 0 0;padding-left:18px;font-size:12px;color:var(--mid)}
.com-dest{margin-top:12px}
.com-dest+.com-dest{padding-top:12px;border-top:1px dashed var(--border)}
.com-dest-nome{font:700 12px/1.3 var(--font-ui);color:var(--dark)}
.com-dest .com-btns{margin-top:8px}
a.btn-secondary.btn-sm{text-decoration:none;display:inline-flex;align-items:center}
@media(max-width:700px){.com-grid{grid-template-columns:1fr}.com-teste{margin-left:0}}
/* Ditado por voz (voz.js): microfone sempre visível à direita de cada campo de texto livre.
   O botão é irmão do campo e fica por cima da sua margem direita (o pai passa a relativo). */
.voz-pai{position:relative}
.voz-btn{position:absolute;z-index:2;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--border-input);border-radius:50%;background:var(--white);color:var(--navy-700);cursor:pointer;opacity:.85}
.voz-btn:hover,.voz-campo:focus + .voz-btn{opacity:1;border-color:var(--accent);color:var(--accent-txt)}
.voz-btn.a-ouvir{opacity:1;background:var(--err-c);border-color:var(--err-c);color:var(--white);animation:voz-pulso 1.2s ease-in-out infinite}
@keyframes voz-pulso{0%,100%{box-shadow:0 0 0 0 rgba(166,64,61,.45)}50%{box-shadow:0 0 0 6px rgba(166,64,61,0)}}
@media(prefers-reduced-motion:reduce){.voz-btn.a-ouvir{animation:none}}
.voz-campo{padding-right:40px !important}
.voz-campo:disabled + .voz-btn,.voz-campo[readonly] + .voz-btn{display:none}
.voz-aviso{position:fixed;z-index:1100;padding:10px 14px;background:var(--navy-900);color:var(--white);border-left:3px solid var(--accent-on-dark);box-shadow:var(--shadow-lg);font-size:12.5px;line-height:1.45}
@media print{.voz-btn,.voz-aviso{display:none !important}.voz-campo{padding-right:inherit !important}}
/* Fotografias dos utilizadores (portal_fotos.js) */
.foto{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:50%;object-fit:cover;background:var(--navy-800);color:var(--accent-on-dark);font:400 15px/1 var(--font-title);text-transform:uppercase}
.foto.grande{width:72px;height:72px;font-size:28px}
.foto-bloco{display:flex;align-items:center;gap:16px;margin-bottom:16px}
.foto-acoes{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}
.foto-acoes .form-hint{flex-basis:100%}
.foto-carregar{cursor:pointer}
.user-id{display:flex;align-items:center;gap:12px;min-width:0}
.tb-avatar{overflow:hidden}
.tb-avatar img{width:100%;height:100%;object-fit:cover}
/* Painel clínico */
.cl{display:flex;flex-direction:column;gap:20px}
.cl-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.cl-kpi{background:var(--white);border:1px solid var(--border);border-top:2px solid var(--navy-800);border-radius:6px;box-shadow:0 1px 2px rgba(18,29,51,.04);padding:16px 18px 14px;display:flex;flex-direction:column;gap:6px}
.cl-kpi-l{font:600 12px/1.35 var(--font-ui);color:var(--text2);min-height:32px}
.cl-kpi-v{font:600 34px/1.05 var(--font-ui);color:var(--navy-800);letter-spacing:-.5px}
.cl-kpi-s{font-size:12px;color:var(--mid);line-height:1.4}
.cl-state{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;padding:5px 9px;border-radius:var(--radius-pill);font:700 10px/1 var(--font-ui);letter-spacing:1px;text-transform:uppercase;white-space:nowrap}
.cl-state i{width:6px;height:6px;border-radius:50%;background:currentColor}
.cl-state.ok{background:var(--ok-bg);color:var(--ok-c)}
.cl-state.att{background:var(--warn-bg);color:var(--warn-c)}
.cl-state.info{background:var(--navy-50);color:var(--navy-600)}
.cl-grid{display:grid;gap:20px}
.cl-grid.g32{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
.cl-card{background:var(--white);border:1px solid var(--border);border-radius:6px;box-shadow:0 1px 2px rgba(18,29,51,.04);padding:20px 22px;min-width:0}
.cl-card-hd{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.cl-card-hd h2{font:400 15px/1.25 var(--font-title);letter-spacing:1.6px;text-transform:uppercase;color:var(--navy-800)}
.cl-card-hd h2 small{display:block;font:400 12px/1.4 var(--font-body);letter-spacing:0;text-transform:none;color:var(--mid);margin-top:4px}
.cl-list{list-style:none}
.cl-list li{display:flex;align-items:center;gap:14px;padding:11px 6px;border-bottom:1px solid #F0EEE8;cursor:pointer;transition:background .12s}
.cl-list li:last-child{border-bottom:none}
.cl-list li:hover,.cl-list li:focus-visible{background:var(--cream-2);outline:none}
.cl-appt{border-left:3px solid var(--navy-800)}
.cl-appt.c-gold{border-left-color:var(--accent)}
.cl-appt.c-green{border-left-color:var(--ok-c)}
.cl-appt.c-grey{border-left-color:var(--border-input)}
.cl-appt.st-requested{border-left-style:dashed}
.cl-appt-h{font:700 13px var(--font-ui);color:var(--navy-800);font-variant-numeric:tabular-nums;min-width:46px}
.cl-appt-t,.cl-task-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cl-appt-t b,.cl-task-t b{font:600 13.5px/1.3 var(--font-ui);color:var(--ink)}
.cl-appt-t small,.cl-task-t small{font-size:12px;color:var(--mid);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-count{min-width:30px;text-align:center;padding:4px 10px;border-radius:var(--radius-pill);background:var(--warn-bg);color:var(--warn-c);font:700 12px var(--font-ui);font-variant-numeric:tabular-nums}
.cl-avatar{width:32px;height:32px;border-radius:50%;background:var(--navy-50);color:var(--navy-800);display:inline-flex;align-items:center;justify-content:center;font:400 14px var(--font-title);flex-shrink:0;text-transform:uppercase}
.cl-empty{font-size:13px;color:var(--mid);padding:12px 6px}
.cl-sub-hd{font:700 10.5px var(--font-ui);letter-spacing:1.6px;text-transform:uppercase;color:var(--mid);margin:10px 6px 2px}
.cl-note{font-size:11.5px;color:var(--mid);margin-top:12px;line-height:1.5}
.cl-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--text2);margin-bottom:6px}
.cl-legend span{display:inline-flex;align-items:center;gap:7px}
.cl-legend i{display:inline-block;width:10px;height:10px;border-radius:2px}
.cl .k1{background:var(--data-1)}
.cl .k2{background:var(--data-2)}
.cl-chart-wrap{position:relative}
.cl-cols{width:100%;height:auto;display:block;overflow:visible}
.cl-cols .s1{fill:var(--data-1)}
.cl-cols .s2{fill:var(--data-2)}
.cl-cols .grid{stroke:var(--border);stroke-width:1}
.cl-cols .tick{font:11px var(--font-ui);fill:var(--mid);font-variant-numeric:tabular-nums}
.cl-cols .hit{fill:transparent;outline:none}
.cl-cols .hit.on{fill:rgba(27,42,74,.05)}
.cl-tip{position:absolute;top:0;pointer-events:none;background:var(--white);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:6px;padding:8px 12px;font-size:12px;min-width:160px;z-index:5}
.cl-tip-d{font:700 11px var(--font-ui);color:var(--mid);margin-bottom:4px}
.cl-tip-r{display:flex;align-items:center;gap:8px;padding:2px 0}
.cl-tip-r i{display:inline-block;width:12px;height:2px;border-radius:1px}
.cl-tip-r b{font:700 13px var(--font-ui);color:var(--ink);min-width:16px;font-variant-numeric:tabular-nums}
.cl-tip-r span{color:var(--mid)}
.cl-details{margin-top:10px}
.cl-details summary{cursor:pointer;font-size:12px;color:var(--mid)}
.cl-details .table-wrap{margin-top:8px;max-height:230px;overflow:auto}
.cl-meter{margin-bottom:16px}
.cl-meter-t{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink);margin-bottom:6px}
.cl-meter-t b{font:600 14px var(--font-ui);color:var(--navy-800)}
.cl-meter-track{height:6px;background:var(--navy-100);border-radius:3px;overflow:hidden}
.cl-meter-track div{height:100%;background:var(--navy-800);border-radius:3px}
.cl-meter small{display:block;font-size:11.5px;color:var(--mid);margin-top:5px}
.cl-facts{list-style:none;border-top:1px solid var(--border)}
.cl-facts li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #F0EEE8;font-size:13px;color:var(--text2)}
.cl-facts b{font:600 13px var(--font-ui);color:var(--ink);text-align:right}
.cl-table td{max-width:200px}
/* Agenda semanal */
.ag-nav{display:flex;gap:6px}
.ag-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
.ag-day{background:var(--white);border-top:3px solid var(--border);box-shadow:var(--shadow);min-height:180px;padding:10px 10px 12px;display:flex;flex-direction:column;gap:8px}
.ag-day.hoje{border-top-color:var(--accent)}
.ag-day-hd{display:flex;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.ag-day-hd span{font:700 10px var(--font-ui);letter-spacing:1.6px;text-transform:uppercase;color:var(--mid)}
.ag-day-hd b{font:400 16px var(--font-title);color:var(--navy-800);flex:1}
.ag-day-hd .btn-icon{width:24px;height:24px;font-size:14px}
.ag-item{border-left:3px solid var(--navy-800);background:var(--cream-2);padding:7px 8px;cursor:pointer;transition:background .15s}
.ag-item:hover{background:var(--gold-100)}
.ag-item.c-gold{border-left-color:var(--accent)}
.ag-item.c-green{border-left-color:var(--ok-c)}
.ag-item.c-grey{border-left-color:var(--border-input)}
.ag-item.st-requested{border-left-style:dashed;background:var(--white);outline:1px dashed var(--gold-200)}
.ag-item.st-cancelled,.ag-item.st-no_show{opacity:.55}
.ag-item.st-cancelled .ag-t{text-decoration:line-through}
.ag-h{font:700 11px var(--font-ui);color:var(--navy-800);font-variant-numeric:tabular-nums}
.ag-t{font:600 12.5px/1.3 var(--font-ui);color:var(--dark);margin-top:2px}
.ag-p{font-size:12px;color:var(--text2)}
.ag-w{font-size:11px;color:var(--mid);margin-bottom:3px}
.ag-livre{font-size:12px;color:var(--mid);text-align:center;padding:14px 0}
/* Disponibilidade, propostas de parceiros e vista mensal */
.ag-disp{font:600 10.5px/1.35 var(--font-ui);color:var(--ok-c);background:var(--ok-bg);border-radius:3px;padding:4px 6px}
.ag-disp.off{color:var(--mid);background:var(--cream-2)}
.ag-aus{display:block;color:var(--warn-c);margin-top:2px}
.ag-item.proposta{border-left:3px dashed var(--accent);background:var(--white);outline:1px dashed var(--gold-200)}
.ag-item.proposta .ag-t{color:var(--accent-txt)}
.ag-vista{display:flex;gap:4px}
.pg-btn.on,.pg-btn.on:hover:not(:disabled){background:var(--navy-800);border-color:var(--navy-800);color:var(--white)}
.ag-mes{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.ag-mes-hd{font:700 10px var(--font-ui);letter-spacing:1.6px;text-transform:uppercase;color:var(--mid);padding:0 4px 2px}
.ag-mes-dia{background:var(--white);border-top:3px solid var(--border);box-shadow:var(--shadow);min-height:104px;padding:6px 7px;display:flex;flex-direction:column;gap:3px;cursor:pointer;min-width:0}
.ag-mes-dia:hover{background:var(--cream-2)}
.ag-mes-dia b{font:400 15px var(--font-title);color:var(--navy-800)}
.ag-mes-dia.hoje{border-top-color:var(--accent)}
.ag-mes-dia.fora{opacity:.45}
.ag-mes-dia.sem-disp{background:var(--cream)}
.ag-mes-it{font:600 10.5px/1.3 var(--font-ui);color:var(--dark);border-left:3px solid var(--navy-800);padding-left:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-mes-it.c-gold{border-left-color:var(--accent)}
.ag-mes-it.c-green{border-left-color:var(--ok-c)}
.ag-mes-it.c-grey{border-left-color:var(--border-input)}
.ag-mes-it.st-requested,.ag-mes-it.proposta{border-left-style:dashed;color:var(--accent-txt)}
.ag-mes-it.st-cancelled{text-decoration:line-through;opacity:.55}
.ag-mes-mais{font-size:10.5px;color:var(--mid)}
@media(max-width:900px){.ag-mes{grid-template-columns:repeat(7,minmax(44px,1fr));overflow-x:auto}.ag-mes-it,.ag-mes-mais{display:none}.ag-mes-dia{min-height:56px}.ag-mes-dia.tem::after{content:'';width:7px;height:7px;border-radius:50%;background:var(--accent)}}
/* Sino de notificações e conta */
.tb-bell-wrap{position:relative}
.tb-bell{position:relative;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--border-input);background:transparent;color:var(--navy-800);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.tb-bell:hover{border-color:var(--accent)}
.tb-bell svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tb-bell b{position:absolute;top:-4px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--white);font:700 10px/18px var(--font-ui);text-align:center}
.tb-me{display:flex;align-items:center;gap:10px;background:none;border:0;padding:2px 4px;border-radius:6px;cursor:pointer;text-align:left;font:inherit;color:inherit}
.tb-me:hover{background:var(--cream-2)}
.nav-n{display:inline-block;min-width:16px;height:16px;padding:0 4px;margin-left:5px;border-radius:8px;background:var(--accent);color:var(--white);font:700 9.5px/16px var(--font-ui);text-align:center;vertical-align:1px;letter-spacing:0}
.notif-panel{position:absolute;right:0;top:44px;width:380px;max-width:calc(100vw - 24px);max-height:70vh;overflow:auto;background:var(--white);border:1px solid var(--border);border-radius:6px;box-shadow:0 12px 32px rgba(18,29,51,.16);z-index:80}
.notif-hd{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);font:700 11px var(--font-ui);letter-spacing:1.6px;text-transform:uppercase;color:var(--navy-800)}
.notif-hd .btn-link{letter-spacing:.5px}
.notif-list{list-style:none}
.notif-item{display:flex;flex-direction:column;gap:2px;padding:11px 16px 11px 26px;border-bottom:1px solid var(--border);cursor:pointer;position:relative}
.notif-item:hover{background:var(--cream-2)}
.notif-item.nova::before{content:"";position:absolute;left:11px;top:17px;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.notif-t{font:600 13px/1.35 var(--font-ui);color:var(--dark)}
.notif-b{font-size:12px;color:var(--text2)}
.notif-q{font-size:11px;color:var(--mid)}
.notif-vazio{padding:18px 16px;font-size:13px;color:var(--mid)}
.cl-task.nova b{color:var(--navy-800)}
.cl-wide{margin-bottom:20px}
/* Pedidos de disponibilidade */
.slot-list{display:grid;gap:6px}
.slot-opt{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer}
.slot-opt.on{border-color:var(--ok-c);background:var(--ok-bg)}
.slot-dia{display:flex;gap:12px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border)}
.slot-dia>span{flex:0 0 130px;font:600 12px var(--font-ui);color:var(--text2);padding-top:5px}
.slot-chips{display:flex;flex-wrap:wrap;gap:6px}
.slot-chip input{position:absolute;opacity:0;pointer-events:none}
.slot-chip span{display:inline-block;padding:5px 11px;border:1px solid var(--border-input);border-radius:var(--radius-pill);font:600 12px var(--font-ui);color:var(--navy-800);cursor:pointer;font-variant-numeric:tabular-nums}
.slot-chip input:checked+span{background:var(--navy-800);border-color:var(--navy-800);color:var(--white)}
.slot-chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:1px}
.td-sub{font-size:11.5px;color:var(--mid);font-weight:400}
/* Disponibilidade semanal */
.disp-grid{display:grid;gap:4px;margin:10px 0 6px}
.disp-dia{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:7px 0;border-bottom:1px solid var(--border)}
.disp-nome{flex:0 0 120px;font:600 12.5px var(--font-ui);color:var(--dark)}
.disp-pers{display:flex;flex-wrap:wrap;gap:8px}
.disp-per{display:inline-flex;align-items:center;gap:5px;background:var(--cream-2);border-radius:6px;padding:4px 6px}
.disp-per .form-input{width:104px;padding:5px 7px}
.disp-per span{font-size:12px;color:var(--mid)}
.disp-aus{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}
.copy-row{display:flex;gap:8px}
.copy-row .form-input{flex:1;font-family:var(--font-mono,monospace);font-size:12px}
.cal-help{display:grid;gap:8px;margin-top:10px}
.cal-help div{background:var(--cream-2);border-radius:6px;padding:9px 12px;font-size:12.5px;line-height:1.5}
.cal-help b{display:block;font:700 10.5px var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--navy-800);margin-bottom:2px}
/* Indicadores das fontes */
.ind-lista{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;overflow:auto}
.ind-chip{font-size:12px;padding:4px 10px;border-radius:var(--radius-pill);background:var(--cream-2);border:1px solid var(--border);color:var(--text2)}
.ind-chip small{color:var(--mid)}
.ind-escolha{max-height:52vh;overflow:auto;border:1px solid var(--border);padding:4px 12px}
.ind-dom-hd{font:700 10.5px var(--font-ui);letter-spacing:1.8px;text-transform:uppercase;color:var(--accent-txt);margin:14px 0 6px}
.ind-op{display:flex;align-items:baseline;gap:8px;padding:4px 0;font-size:13.5px;cursor:pointer}
.ind-op small{color:var(--mid)}
.ind-op[hidden],.ind-dom[hidden]{display:none}
/* Pontos de atenção (utente) */
.alertas{display:grid;gap:12px}
.alerta{background:var(--white);border-left:4px solid var(--border-input);box-shadow:var(--shadow);padding:14px 18px}
.alerta.att{border-left-color:var(--accent)}
.alerta-hd{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:4px}
.alerta-hd b{font:400 15px var(--font-title);color:var(--navy-800)}
.alerta p{margin:8px 0;font-size:13.5px}
.td-ordem{white-space:nowrap}
/* Código de ativação */
.code-box{font:400 30px/1.2 var(--font-title);letter-spacing:6px;text-align:center;padding:20px;background:var(--navy-800);color:var(--accent-on-dark);margin:16px 0}
.note{font-size:12.5px;color:var(--mid);line-height:1.55}
.note.box{padding:12px 16px;background:var(--cream-2);border-left:3px solid var(--accent)}
details.vendor summary{cursor:pointer;font-size:12px;color:var(--mid)}
details.vendor p{font-size:12.5px;color:var(--text2);margin-top:6px;white-space:normal}

/* ── Filtros ── */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.filter-search{flex:0 1 360px;min-width:200px;position:relative}
.filter-search input{width:100%;padding:9px 12px 9px 36px;border:1px solid var(--border-input);border-radius:var(--radius);font:400 13.5px var(--font-body);color:var(--dark);background:var(--white);transition:border-color .15s,box-shadow .15s}
.filter-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--mid);pointer-events:none}
.filter-select{padding:9px 32px 9px 12px;border:1px solid var(--border-input);border-radius:var(--radius);font:400 13.5px var(--font-body);color:var(--dark);background-color:var(--white);cursor:pointer}
.filter-select,.form-select{-webkit-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235E6472' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.filter-search input:focus,.filter-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(156,122,60,.18)}
.filter-count{font-size:12px;color:var(--mid);white-space:nowrap;padding-left:4px;font-variant-numeric:tabular-nums}
.filter-check{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text2);cursor:pointer}
.filter-check input{accent-color:var(--navy-800)}

/* ── Tabelas ── */
.table-wrap{overflow-x:auto;background:var(--white);border:1px solid var(--border)}
table{width:100%;border-collapse:collapse;font-size:13px}
th{padding:12px 14px;text-align:left;font:700 10px/1.3 var(--font-ui);color:var(--mid);background:var(--white);text-transform:uppercase;letter-spacing:1.4px;border-bottom:2px solid var(--navy-800);white-space:nowrap}
th.num,td.num{text-align:right}
td{padding:11px 14px;border-bottom:1px solid #F0EEE8;vertical-align:middle;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
td.num{font-variant-numeric:tabular-nums}
tbody tr:hover{background:var(--cream-2)}
tbody tr:last-child td{border-bottom:none}
tr.clicavel{cursor:pointer}
tr.clicavel:hover{background:var(--gold-100)}
tr.clicavel.sel{background:var(--gold-100);box-shadow:inset 3px 0 0 var(--accent)}
td.wrap{white-space:normal;max-width:460px;min-width:220px}
td.actions{white-space:nowrap;width:84px;text-align:right}
.td-mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;color:var(--mid)}
.td-name{font-weight:600;color:var(--dark)}
.empty-row td{text-align:center;color:var(--mid);padding:40px;font-style:italic}
.txt-mid{color:var(--mid)}
.txt-err{color:var(--err-c);font-weight:600}
th.sortable{cursor:pointer;user-select:none}
th.sortable:hover{color:var(--dark)}
.th-inner{display:flex;align-items:center;gap:6px}
.sort-icon{font-size:10px;color:var(--border-input)}
th.sort-asc,th.sort-desc{color:var(--dark)}
th.sort-asc .sort-icon,th.sort-desc .sort-icon{color:var(--accent)}
th.sort-asc .sort-icon::after{content:'▲'}
th.sort-desc .sort-icon::after{content:'▼'}
th:not(.sort-asc):not(.sort-desc) .sort-icon::after{content:'⇅'}
.pg-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:10px 14px;font-size:12px;color:var(--mid);border-top:1px solid var(--border);background:var(--white)}
.pg-btn{min-width:30px;padding:4px 10px;border:1px solid var(--border-input);border-radius:var(--radius-pill);background:var(--white);color:var(--dark);font:600 12px var(--font-ui);cursor:pointer}
.pg-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent-txt)}
.pg-btn:disabled{opacity:.35;cursor:default}

/* ── Badges ── */
.badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-pill);font:700 9.5px/1.4 var(--font-ui);letter-spacing:1.1px;text-transform:uppercase;white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-c)}
.badge.verde{background:var(--ok-bg);color:var(--ok-c)}
.badge.vermelho{background:var(--err-bg);color:var(--err-c)}
.badge.dourado{background:var(--warn-bg);color:var(--warn-c)}
.badge.escuro{background:var(--ink-bg);color:var(--ink-c)}
.badge.cinza{background:var(--neutral-bg);color:var(--neutral-c)}
.dots{display:inline-flex;gap:4px}
.dot-s{width:9px;height:9px;border-radius:50%;background:var(--border);display:inline-block}
.dot-s.s1{background:var(--ok-c)}
.dot-s.s0,.dot-s.s2{background:var(--err-c)}

/* ── Separadores ── */
.cfg-tabs{display:flex;gap:4px 28px;border-bottom:1px solid var(--border);margin-bottom:24px;flex-wrap:wrap}
.cfg-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:12px 0 11px;font:600 11.5px/1.2 var(--font-ui);letter-spacing:1.8px;text-transform:uppercase;color:var(--text2);cursor:pointer;transition:color .15s}
.cfg-tab:hover{color:var(--accent-txt)}
.cfg-tab.active{color:var(--accent-txt);border-bottom-color:var(--accent)}
.cfg-tab .tab-n{display:inline-block;min-width:20px;padding:2px 6px;margin-left:6px;border-radius:var(--radius-pill);background:var(--neutral-bg);color:var(--neutral-c);font:700 10px/1.2 var(--font-ui);text-align:center;vertical-align:1px}
.cfg-tab .tab-n:empty{display:none}
.cfg-tab.active .tab-n{background:var(--navy-800);color:var(--white)}
/* Separadores em índice vertical à esquerda (como o índice da ficha de acolhimento):
   numeração automática 01, 02…; em ecrãs estreitos voltam a ser uma faixa horizontal. */
.page-body.com-indice{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}
.indice-conteudo{min-width:0}
.cfg-tabs.indice{position:sticky;top:96px;flex-direction:column;flex-wrap:nowrap;gap:0;margin:0;padding:10px 0;border:0;border-top:3px solid var(--accent);background:var(--white);box-shadow:var(--shadow);counter-reset:indice}
.cfg-tabs.indice .cfg-tab{display:flex;align-items:baseline;gap:10px;width:100%;margin:0;padding:8px 16px;border:0;border-left:3px solid transparent;font:600 12.5px/1.35 var(--font-ui);letter-spacing:0;text-transform:none;text-align:left;color:var(--text2);counter-increment:indice}
.cfg-tabs.indice .cfg-tab::before{content:counter(indice,decimal-leading-zero);min-width:20px;font:700 10.5px/1.3 var(--font-ui);letter-spacing:1px;color:var(--accent-txt)}
.cfg-tabs.indice .cfg-tab:hover{background:var(--cream-2);border-left-color:var(--accent);color:var(--navy-800)}
.cfg-tabs.indice .cfg-tab.active{background:var(--gold-100);border-left-color:var(--accent);color:var(--navy-800)}
.cfg-tabs.indice .tab-n{margin-left:auto;align-self:center}
.cfg-section{display:none;counter-reset:sec}
.cfg-section.active{display:block}

/* ── Modal ── */
.modal-overlay{position:fixed;inset:0;background:rgba(14,22,40,.6);z-index:200;display:flex;align-items:center;justify-content:center;padding:16px}
.modal-box{background:var(--white);border-top:3px solid var(--accent);width:100%;max-width:640px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.modal-hd{padding:22px 28px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px}
.modal-hd h2{font:400 19px/1.2 var(--font-title);text-transform:uppercase;letter-spacing:2px;color:var(--navy-800)}
.modal-close{background:none;border:none;cursor:pointer;color:var(--mid);font-size:26px;line-height:1;padding:0 4px}
.modal-close:hover{color:var(--accent-txt)}
.modal-body{padding:24px 28px;overflow-y:auto;flex:1}
.modal-ft{padding:16px 28px;border-top:1px solid var(--border);background:var(--cream-2);display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}
/* Destructive action on the left, apart from the others; buttons wrap instead of leaving the window. */
.modal-ft .btn-danger-txt{order:-1;margin-right:auto}
@media(max-width:600px){
  .modal-overlay{padding:8px}
  .modal-box{max-height:94vh}
  .modal-hd,.modal-body,.modal-ft{padding-left:18px;padding-right:18px}
  .modal-ft > button,.modal-ft > a{flex:1 1 100%;white-space:normal}
  .modal-ft .btn-danger-txt{order:99;margin-right:0}
}

/* ── Formulários ── */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.form-full{grid-column:1/-1}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-label{font:700 10px/1.3 var(--font-ui);color:var(--text2);letter-spacing:1.5px;text-transform:uppercase}
.form-label .req{color:var(--accent-txt)}
.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;border:1px solid var(--border-input);border-radius:var(--radius);font:400 14px var(--font-body);color:var(--dark);background-color:var(--white);transition:border-color .15s,box-shadow .15s}
.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(156,122,60,.18)}
.form-textarea{resize:vertical;min-height:80px}
.form-hint{font-size:12px;color:var(--mid)}
.section-title{grid-column:1/-1;font:700 10.5px/1.3 var(--font-ui);color:var(--accent-txt);text-transform:uppercase;letter-spacing:2.5px;padding-bottom:8px;border-bottom:1px solid var(--border);margin-top:12px}
.form-checkbox-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text2);cursor:pointer}
.form-checkbox-row input{width:16px;height:16px;accent-color:var(--navy-800)}
.form-checkbox-row.form-group{flex-direction:row;align-items:center;gap:10px;align-self:end;padding:8px 0}
td.actions.stack{white-space:normal;width:150px}
td.actions.stack .btn-link{display:inline-block;margin:3px 0 3px 12px}

/* ── Alertas ── */
.alert{padding:12px 16px;border-left:4px solid;font-size:13px;font-weight:600;margin-bottom:12px}
.alert-err{background:var(--err-bg);color:var(--err-c)}
.alert-ok{background:var(--ok-bg);color:var(--ok-c)}
.alert-warn{background:var(--warn-bg);color:var(--warn-c)}
/* Leitura de PDF com IA: campo lido do documento (verde) ou por confirmar (dourado). */
.doc-ia{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:14px 0}
.doc-ia .note{flex:1 1 280px}
.doc-ia .doc-resumo{flex:1 1 100%;margin:4px 0 0}
.doc-lido .form-input{border-color:var(--ok-c);box-shadow:inset 3px 0 0 var(--ok-c)}
.doc-assinalado .form-input{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:var(--warn-bg)}
.doc-dica{display:block}
.doc-assinalado .doc-dica{color:var(--warn-c);font-weight:600}
.doc-anexo{flex:1 1 100%;margin-top:6px;padding:12px 14px;border:1px solid var(--border);background:var(--white)}
.doc-ficheiro{font-size:13px;margin-bottom:10px;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px}
.doc-texto{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.5}
.doc-tabela{margin-top:6px}
.doc-tabela table{table-layout:fixed}
.doc-tabela th:nth-child(1){width:34%}.doc-tabela th:nth-child(2){width:11%}.doc-tabela th:nth-child(3){width:11%}.doc-tabela th:nth-child(4){width:16%}
.doc-tabela td{max-width:none;white-space:normal;overflow-wrap:anywhere;padding:8px 12px;vertical-align:top}
.doc-tabela th{padding:9px 12px}
.doc-secao{font:700 10.5px/1.3 var(--font-ui);color:var(--accent-txt);text-transform:uppercase;letter-spacing:2px;margin-top:14px}
.doc-tabela td.doc-nota{color:var(--warn-c);background:var(--warn-bg);font-weight:600}
.doc-vista{max-height:420px;overflow:auto;padding-right:4px}
.doc-vista>.note:first-child{margin-top:0}
.doc-editar{margin-top:10px}
.doc-editar summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent-txt)}
.doc-editar .doc-texto{margin-top:8px}
.alert-info{background:var(--gold-100);color:var(--gold-700);border-color:var(--accent)}
.toast{position:fixed;right:24px;bottom:24px;z-index:500;padding:14px 20px;max-width:420px;background:var(--navy-900);color:var(--white);border-left:4px solid;font-size:13px;font-weight:600;box-shadow:var(--shadow-lg)}
.toast-ok{border-left-color:#8FD0A2}
.toast-err{border-left-color:#F0A29E}

/* ── Listas e utilizadores ── */
.lista-simples{list-style:none;font-size:13px}
.lista-simples li{padding:9px 0;border-bottom:1px solid #F0EEE8;display:flex;gap:12px;align-items:baseline;justify-content:space-between}
.lista-simples li:last-child{border-bottom:none}
.lista-simples .ls-meta{color:var(--mid);font-size:12px;white-space:nowrap}
.user-card{background:var(--white);border:1px solid var(--border);border-left:3px solid var(--accent);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:12px}
.user-name{font:400 15px var(--font-title);color:var(--navy-800)}
.user-role{font:700 9.5px var(--font-ui);color:var(--mid);text-transform:uppercase;letter-spacing:1.6px}
.log-box{background:var(--navy-950);padding:16px;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:#E8E8E8;max-height:280px;overflow-y:auto;white-space:pre-wrap;border-left:4px solid var(--accent)}

/* ── Página de entrada ── */
.login-page{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);min-height:100vh}
/* Servidor de demonstração (APP_ENV=demo): faixa no topo de todas as páginas, só com CSS. */
body[data-env="demo"]::before{content:"Ambiente de demonstração · só dados fictícios";display:block;padding:6px 16px;background:var(--gold-100);border-bottom:1px solid var(--gold-200);color:var(--gold-700);font:700 10.5px/1.4 var(--font-ui);letter-spacing:1.5px;text-transform:uppercase;text-align:center}
.login-page[data-env="demo"]{grid-template-rows:auto 1fr}
.login-page[data-env="demo"]::before{grid-column:1/-1}
/* Entrada: azul-marinho liso, só com o logótipo e os textos (sem fotografia). */
.lg-hero{display:flex;flex-direction:column;justify-content:space-between;gap:48px;padding:44px 56px;background:var(--navy-900);color:var(--white)}
.lg-mark img{height:46px;width:auto;display:block}
.lg-texto{max-width:470px}
.lg-hero .kicker{color:var(--accent-on-dark);margin-bottom:18px}
.lg-hero h1{font:400 clamp(34px,3vw,50px)/1.08 var(--font-title);text-transform:uppercase;letter-spacing:4px;text-wrap:balance}
.lg-hero h1 span{display:block;color:var(--accent-on-dark)}
.lg-hero p{font-size:16px;line-height:1.65;color:rgba(255,255,255,.78);margin-top:22px}
.lg-rule{width:56px;height:2px;background:var(--accent-on-dark);margin-top:26px}
.lg-pontos{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:12px 40px}
.lg-pontos div{font:600 10.5px/1.4 var(--font-ui);letter-spacing:2.2px;text-transform:uppercase;color:rgba(255,255,255,.85)}
.lg-pontos b{display:block;font:400 16px var(--font-title);color:var(--accent-on-dark);letter-spacing:2px;margin-bottom:4px}
.lg-form{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:var(--bg)}
.lg-card{width:100%;max-width:400px;background:var(--white);border-top:3px solid var(--accent);box-shadow:var(--shadow);padding:40px 36px 32px}
.lg-card h2{font:400 24px/1.15 var(--font-title);text-transform:uppercase;letter-spacing:3px;color:var(--navy-800);margin-bottom:24px}
.lg-card .form-group{margin-bottom:16px}
.lg-card .form-input{padding:13px 16px;font-size:15px}
.lg-card .btn-primary{width:100%;padding:15px 32px;font-size:12px;margin-top:8px}
.lg-foot{margin-top:24px;padding-top:16px;border-top:1px solid var(--border);font-size:12px;color:var(--mid);text-align:center}

/* ── Submenus: separadores do menu principal no topo da página ── */
.sec-tabs{display:inline-flex;flex-wrap:wrap;gap:4px;margin-bottom:14px;padding:3px;border:1px solid var(--border-input);border-radius:var(--radius-pill);background:var(--white)}
.sec-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:var(--radius-pill);font:700 10.5px/1.3 var(--font-ui);letter-spacing:1.6px;text-transform:uppercase;color:var(--text2);text-decoration:none;white-space:nowrap;cursor:pointer}
.sec-tab:hover{color:var(--navy-800);background:var(--cream-2)}
.sec-tab.on{background:var(--navy-800);color:var(--white)}
.sec-tab .nav-n{margin-left:0}
.sec-tab.on .nav-n{background:var(--accent-on-dark);color:var(--navy-900)}
.int-cel{white-space:nowrap}
.int-cel .td-sub{display:block;margin:2px 0}
.int-nota{margin-top:16px}
/* Bloco secundário dentro de um formulário (ex.: nova ligação à API ao criar um equipamento). */
.box-sub{margin-top:18px;padding:14px 16px 16px;border-left:3px solid var(--accent);background:var(--cream-2)}
.box-sub .section-title{margin-top:0;margin-bottom:12px}
#fdBody .section-hd .hdr-btns{display:flex;gap:10px;flex-wrap:wrap}

/* ── Withings: configuração, conta do utente e página de resposta à autorização ── */
.wt-row{margin-top:18px}
.wt-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.wt-nota{margin-top:10px}
.wt-mt{margin-top:12px}
.wt-card{margin-top:18px}
.wt-passos{margin-top:18px}
.wt-passos ol{margin:8px 0 8px 18px}
.wt-passos li{margin:3px 0}
.wt-body{background:var(--cream);min-height:100vh}
.wt-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px}
.wt-page .lg-card{max-width:460px;width:100%;text-align:left}
.wt-logo{display:block;height:30px;width:auto;margin-bottom:22px}
.wt-msg{margin:12px 0 22px;color:var(--text2)}

/* ── Admissão: ficha de acolhimento ── */
.adm-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start}
.adm-index{position:sticky;top:96px;display:flex;flex-direction:column;background:var(--white);border-top:3px solid var(--accent);box-shadow:var(--shadow);padding:10px 0}
.adm-index a{display:flex;align-items:baseline;gap:10px;padding:7px 16px;border-left:3px solid transparent;font:600 12.5px/1.35 var(--font-ui);color:var(--text2);text-decoration:none}
.adm-index a span{min-width:20px;font:700 10.5px/1.3 var(--font-ui);letter-spacing:1px;color:var(--accent-txt)}
.adm-index a:hover{background:var(--cream-2);border-left-color:var(--accent);color:var(--navy-800)}
.adm-index a.feito::after{content:'';flex-shrink:0;width:7px;height:7px;margin-left:auto;border-radius:50%;background:var(--ok-c);align-self:center}
.adm-form{display:flex;flex-direction:column;gap:20px;min-width:0;border:0;margin:0;padding:0}
.adm-form:disabled{opacity:.8}
.adm-sec{scroll-margin-top:96px}
.adm-sec-t{display:flex;align-items:baseline;gap:12px;margin-bottom:18px;font:400 16px/1.3 var(--font-title);letter-spacing:2px;text-transform:uppercase;color:var(--navy-800)}
.adm-sec-t span{font:700 11px/1 var(--font-ui);letter-spacing:1.5px;color:var(--accent-txt)}
.adm-checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px;border:0;margin:0;padding:0}
.adm-checks legend{margin-bottom:8px;padding:0}
.adm-tab{width:100%;border-collapse:collapse}
.adm-tab th,.adm-tab td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.adm-tab thead th{font:700 10px/1.3 var(--font-ui);letter-spacing:1.5px;text-transform:uppercase;color:var(--text2);white-space:nowrap}
.adm-tab tbody th{width:170px;padding-top:16px;font:600 13px/1.3 var(--font-ui);color:var(--dark)}
.adm-tab tbody tr:last-child th{border-bottom:none}
.adm-tab .form-input,.adm-tab .form-textarea{padding:7px 9px;font-size:13px}
.adm-plano td.num{width:96px}
.adm-plano td.actions{white-space:nowrap;vertical-align:middle}
.adm-plano td.actions .btn-icon{margin-left:8px}
.adm-bio{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 20px}
.adm-bio .form-full{grid-column:1/-1}
.adm-out{display:flex;align-items:center;min-height:42px;padding:10px 12px;border:1px dashed var(--border-input);border-radius:var(--radius);background:var(--cream-2);font:600 14px/1.2 var(--font-body);color:var(--navy-800);font-variant-numeric:tabular-nums}
.adm-nota{margin-top:14px}
.adm-mt{margin-top:14px}
.adm-acoes{margin-top:12px}
.adm-fim{justify-content:flex-end;align-items:flex-start}
.form-unit{text-transform:none;letter-spacing:.2px}
.adm-consents{display:flex;flex-direction:column;gap:8px}
/* Ficha curta: tipo de ficha na janela de nova admissão e triagem (pergunta e nota lado a lado). */
.adm-tipo,.cons-origem{display:flex;flex-direction:column;gap:8px;border:0;padding:0;margin:0}
.adm-triagem{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
/* Consulta aberta no separador Consultas. */
.cons-card{margin-bottom:20px}
.cons-card fieldset{border:0;padding:0;min-width:0}
.cons-acoes{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:16px}
.cons-acoes .btn-danger-txt{margin-right:auto}
.adm-estado{font-size:12px;color:var(--mid)}
.adm-estado.erro{color:var(--err-c);font-weight:600}
@media(max-width:1100px){
  .adm-layout{grid-template-columns:1fr}
  .adm-index{display:none}
  .adm-bio{grid-template-columns:repeat(2,minmax(0,1fr))}
  .adm-checks{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .adm-checks{grid-template-columns:1fr}
  .adm-tab tbody th{width:auto}
}

/* ── Responsivo ── */
@media(max-width:1600px){
  .topbar{gap:22px}
  .tb-nav{gap:16px}
  .nav-item{letter-spacing:1px}
  .tb-me .tb-nome,.tb-me .tb-role{display:none}
}
@media(max-width:1480px){
  .tb-app{display:none}
}
@media(max-width:1300px) and (min-width:901px){
  .topbar{flex-wrap:wrap;height:auto;gap:8px 22px;padding-top:12px}
  .tb-nav{order:3;flex-basis:100%;overflow-x:auto;scrollbar-width:none;padding-bottom:10px}
}
@media(max-width:1200px){
  .stats-grid.g6{grid-template-columns:repeat(3,1fr)}
  .seg-grid,.photo-grid{grid-template-columns:repeat(3,1fr)}
  .photo-grid.g4{grid-template-columns:repeat(2,1fr)}
  .ag-week{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cl-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tb-app{display:none}
}
@media(max-width:900px){
  .page-body.com-indice{grid-template-columns:minmax(0,1fr);gap:16px}
  .cfg-tabs.indice{position:static;flex-direction:row;overflow-x:auto;scrollbar-width:none;padding:0;border-top:0;border-bottom:1px solid var(--border);background:none;box-shadow:none}
  .cfg-tabs.indice .cfg-tab{width:auto;flex:0 0 auto;padding:12px 12px 11px;border-left:0;border-bottom:2px solid transparent;white-space:nowrap}
  .cfg-tabs.indice .cfg-tab:hover{background:none}
  .cfg-tabs.indice .cfg-tab.active{background:none;border-bottom-color:var(--accent)}
  .avatar-view{height:420px}
  .cl-grid.g32{grid-template-columns:1fr}
  .cl-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cl-kpi-v{font-size:28px}
  .vista-img{height:260px}
  .topbar{flex-wrap:wrap;height:auto;gap:10px 20px;padding:12px 16px 0}
  .tb-nav{order:3;flex-basis:100%;overflow-x:auto;scrollbar-width:none;gap:22px;padding-bottom:10px}
  .tb-nome,.tb-role{display:none}
  .pane{min-height:0}
  .page-hd{padding:20px 16px}
  .page-hd.com-tabs{padding-bottom:0}
  .page-hd h1{font-size:23px;letter-spacing:2px}
  .page-hd > .cfg-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:22px;margin-bottom:0}
  .page-hd > .cfg-tabs .cfg-tab{white-space:nowrap;margin-bottom:0}
  .page-body{padding:20px 16px 40px}
  .stats-grid,.stats-grid.g6,.stats-grid.g5,.stats-grid.g3{grid-template-columns:1fr 1fr}
  .stat-val{font-size:32px}
  .charts-row,.charts-row.c3{grid-template-columns:1fr}
  .seg-grid,.photo-grid{grid-template-columns:1fr 1fr}
  .form-grid{grid-template-columns:1fr}
  .card,.chart-card{padding:20px}
  .login-page{grid-template-columns:1fr}
  .lg-hero{padding:28px 24px;gap:28px}
  .lg-mark img{height:32px}
  .lg-hero h1{font-size:32px;letter-spacing:3px}
  .lg-pontos{display:none}
}
/* Relatório de avaliação (relatorio.js, portal e webapp): as páginas do relatório Visbody
   (composição, postura, coluna, perímetros, glúteos, equilíbrio) no design EXORYA. Cada
   página é uma folha A4 com o cabeçalho repetido; no papel, uma página por folha.
   Tamanhos em pt, como no papel; margens e números de página no @page. */
html.rel-aberto{overflow:hidden}
.rel-preview{position:fixed;inset:0;z-index:950;overflow:auto;background:var(--cream);color:var(--ink)}
.rel-barra{position:sticky;top:0;z-index:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:12px 24px;background:var(--navy-900);color:var(--white);font:700 10.5px/1.3 var(--font-ui);letter-spacing:1.6px;text-transform:uppercase}
.rel-barra-b{display:flex;gap:10px}
.rel-barra .btn-secondary{background:transparent;color:var(--white);border-color:rgba(255,255,255,.55)}
.rel-barra .btn-primary{background:var(--accent-on-dark);border-color:var(--accent-on-dark);color:var(--navy-900)}
.rel-doc{padding:20px 0 40px;color:var(--ink);font:8pt/1.4 var(--font-body);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.rel-pag{box-sizing:border-box;width:210mm;min-height:297mm;margin:0 auto 24px;padding:13mm 14mm 15mm;background:var(--white);box-shadow:var(--shadow-lg)}
.rel-doc td{max-width:none;overflow:visible;white-space:normal}
/* The portal's table headings (uppercase, white, thick rule) do not apply on paper. */
.rel-doc th{text-transform:none;letter-spacing:0;white-space:normal;background:none;border-bottom:0;color:var(--ink)}
.rel-doc small{font-size:inherit}
/* Cabeçalho de cada página: marca, título, identificação e pontuação. */
.rel-ph{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:8px}
.rel-ph img{display:block;height:24px;width:auto}
.rel-ph span{font:600 6.8pt/1.3 var(--font-ui);letter-spacing:.6px;color:var(--mid)}
.rel-pt{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding-bottom:7px;margin-bottom:10px;border-bottom:2px solid var(--accent)}
.rel-pt h1{font:400 18pt/1.1 var(--font-title);letter-spacing:2.2px;text-transform:uppercase;color:var(--navy-800)}
.rel-idl{display:flex;flex-wrap:wrap;gap:3px 16px;margin-top:6px;font-size:7.6pt;color:var(--mid)}
.rel-idl b{font-weight:600;color:var(--ink)}
.rel-pts{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0;text-align:right}
.rel-pts b{font:400 26pt/1 var(--font-title);color:var(--accent-txt)}
.rel-pts span{font:700 6.8pt/1.3 var(--font-ui);letter-spacing:1.4px;text-transform:uppercase;color:var(--accent-txt)}
.rel-pts small{font-size:6.6pt;color:var(--mid)}
/* Blocos, grelhas e notas. */
.rel-bl{margin-top:9px;break-inside:avoid}
.rel-bl:first-child{margin-top:0}
.rel-bl h2{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;font:400 10.5pt/1.2 var(--font-title);letter-spacing:1.6px;text-transform:uppercase;color:var(--navy-800)}
.rel-bl h2 small{margin-left:auto;font:600 6.6pt/1.3 var(--font-ui);letter-spacing:.4px;text-transform:none;color:var(--mid)}
.rel-bl h3,.rel-seg h3,.rel-tend h3,.rel-par h3,.rel-hist h3,.rel-global h3{margin:0 0 4px;font:700 6.8pt/1.3 var(--font-ui);letter-spacing:1.2px;text-transform:uppercase;color:var(--accent-txt)}
.rel-seg h3 small,.rel-tend h3 small{font-weight:600;letter-spacing:0;text-transform:none;color:var(--mid)}
.rel-g2{display:grid;grid-template-columns:minmax(0,1fr) 58mm;gap:12px;align-items:start}
.rel-g2 > aside{display:flex;flex-direction:column;gap:8px}
.rel-g2b{grid-template-columns:minmax(0,1fr) 72mm}
.rel-g2c{grid-template-columns:76mm minmax(0,1fr)}
.rel-g2d{grid-template-columns:62mm minmax(0,1fr)}
.rel-g2e{grid-template-columns:1fr 1fr}
.rel-nota{margin-top:8px;padding:5px 9px;background:var(--cream-2);border-left:2px solid var(--accent);font-size:6.8pt;line-height:1.45;color:var(--text2);break-inside:avoid}
.rel-g2 > aside .rel-nota{margin-top:0}
.rel-nada{color:var(--mid)}
.rel-vazio{padding:30px 0;font-size:10pt;text-align:center}
.rel-fora,.rel-niv.fora{color:var(--accent-txt) !important;font-weight:700}
.rel-quando{display:block;font-size:6.4pt;color:var(--mid)}
/* Tabelas. */
.rel-tab{width:100%;border-collapse:collapse;font-size:7.6pt}
.rel-tab th,.rel-tab td{padding:3px 5px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;background:none;white-space:normal}
.rel-tab thead th{padding:3px 5px;font:700 6.2pt/1.3 var(--font-ui);letter-spacing:1px;text-transform:uppercase;color:var(--mid);border-bottom:1.5px solid var(--navy-800)}
.rel-tab thead th small{display:block;text-transform:none;letter-spacing:0;font-weight:600}
.rel-tab thead th:first-child small{display:inline}
.rel-tab tbody th{font:600 7.6pt/1.3 var(--font-body);letter-spacing:0;text-transform:none;color:var(--ink)}
.rel-tab tbody th small{display:block;font-weight:400;font-size:6.6pt;color:var(--mid)}
.rel-tab tr{break-inside:avoid}
.rel-doc tbody tr:last-child th{border-bottom:0}
.rel-tab .num{text-align:right;white-space:nowrap}
.rel-tab tr.on th,.rel-tab tr.on td{background:var(--gold-100);color:var(--navy-800)}
.rel-v{font:400 9pt/1.2 var(--font-title);color:var(--navy-800);font-variant-numeric:tabular-nums lining-nums}
.rel-v small{font:6.6pt var(--font-body);color:var(--mid)}
.rel-grande{font-size:13pt}
.rel-ref{white-space:nowrap;color:var(--text2)}
.rel-var{white-space:nowrap;color:var(--text2)}
.rel-mini{margin-top:4px}
/* Visão geral da composição (em degraus, como no relatório Visbody). */
.rel-visao{width:100%;border-collapse:separate;border-spacing:2px;font-size:7.4pt}
.rel-visao thead th{padding:2px 4px;font:700 6.2pt/1.3 var(--font-ui);letter-spacing:1px;text-transform:uppercase;color:var(--mid);text-align:center;border-bottom:1.5px solid var(--navy-800)}
.rel-visao tbody th{padding:3px 5px;font:600 7.4pt/1.25 var(--font-body);text-align:left;color:var(--ink);width:30%}
.rel-cv{padding:3px 6px;background:var(--cream-2);border-left:2px solid var(--gold-300);text-align:center}
.rel-cv b{display:block;font:400 9.5pt/1.15 var(--font-title);color:var(--navy-800)}
.rel-cv b small{font:6.4pt var(--font-body);color:var(--mid)}
.rel-cv span{display:block;font-size:6.4pt;color:var(--mid)}
.rel-cv.fora{border-left-color:var(--accent)}
.rel-cv.fora b{color:var(--accent-txt)}
.rel-cvx{background:none}
/* Barras de três níveis (músculo-gordura, obesidade, metabolismo, água). */
.rel-bars{width:100%;border-collapse:collapse;font-size:7.4pt;table-layout:fixed}
.rel-bars th,.rel-bars td{padding:2.5px 5px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;white-space:normal}
.rel-bars thead th{font:700 6.2pt/1.3 var(--font-ui);letter-spacing:1px;text-transform:uppercase;color:var(--mid);border-bottom:1.5px solid var(--navy-800)}
.rel-bars thead th.z{width:15%;text-align:center}
.rel-bars thead th.z.ok{color:var(--accent-txt)}
.rel-bars-t{width:27%}
.rel-bars thead th:nth-last-child(2){width:14%}
.rel-bars thead th:last-child{width:14%}
.rel-bars tbody th{font:600 7.4pt/1.25 var(--font-body);color:var(--ink)}
.rel-bars tbody th small{font-weight:400;font-size:6.4pt;color:var(--mid)}
.rel-bars .num{text-align:right;white-space:nowrap}
.rel-bars td.rel-ref{white-space:nowrap}
.rel-barcel{padding:2.5px 0 !important;background:linear-gradient(90deg,transparent 33.33%,var(--gold-100) 33.33%,var(--gold-100) 66.67%,transparent 66.67%);background-clip:content-box}
.rel-b{position:relative;height:13px}
.rel-b i{position:absolute;left:0;top:4.5px;height:4px;border-radius:0 2px 2px 0;background:var(--navy-700)}
.rel-b span{position:absolute;top:0;padding:0 4px;font:400 8.4pt/13px var(--font-title);color:var(--navy-800);white-space:nowrap}
.rel-b span.in{top:-1px;padding:0 2px;background:var(--white);line-height:11px}
.rel-b.fora i{background:var(--accent)}
.rel-b.fora span{color:var(--accent-txt);font-weight:700}
.rel-bars td.rel-sembarra{text-align:center;font:400 9pt var(--font-title);color:var(--navy-800)}
/* Linha de níveis em segmentos iguais (postura e coluna). */
.rel-lv{position:relative;min-width:140px}
.rel-lv-b{position:relative;display:grid;grid-template-columns:repeat(var(--k),1fr);gap:2px}
.rel-lv-b span{padding:1.5px 2px;background:var(--navy-50);font:600 5.8pt/1.3 var(--font-ui);letter-spacing:.4px;text-transform:uppercase;text-align:center;color:var(--mid)}
.rel-lv-b span.ok{background:var(--gold-100)}
.rel-lv-b span.on{background:var(--navy-800);color:var(--white)}
.rel-lv.fora .rel-lv-b span.on{background:var(--accent);color:var(--white)}
.rel-lv-b i{position:absolute;top:-3px;width:0;height:0;margin-left:-3.5px;border:3.5px solid transparent;border-top-color:var(--navy-800);border-bottom:0}
.rel-lv-t{position:relative;height:9px;margin-top:1px}
.rel-lv-t span{position:absolute;font-size:5.8pt;color:var(--mid);transform:translateX(-1px)}
/* Figuras da análise segmentar. */
.rel-seg{padding:6px 8px;border:1px solid var(--border);border-top:2px solid var(--accent);break-inside:avoid}
.rel-seg svg{display:block;width:100%;height:auto}
.rel-seg .corpo circle,.rel-seg .corpo rect{fill:var(--navy-100);stroke:var(--navy-300);stroke-width:1}
.rel-seg text{font-family:var(--font-body)}
.rel-seg text.v{font:400 11px var(--font-title);fill:var(--navy-800)}
.rel-seg text.l{font-size:6.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;fill:var(--mid)}
.rel-seg text.fora{fill:var(--accent-txt)}
.rel-seg text.s{font-size:7px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;fill:var(--accent-txt)}
/* Tendência histórica. */
.rel-tends{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rel-tend{padding:5px 7px;border:1px solid var(--border)}
.rel-tend svg{display:block;width:100%;height:auto}
.rel-tend line{stroke:var(--border-input);stroke-width:.8}
.rel-tend polyline{fill:none;stroke:var(--navy-700);stroke-width:1.2}
.rel-tend circle{fill:var(--white);stroke:var(--navy-700);stroke-width:1}
.rel-tend circle.u{fill:var(--accent);stroke:var(--accent)}
.rel-tend text{font-family:var(--font-body)}
.rel-tend text.v{font-size:6.5px;fill:var(--navy-800)}
.rel-tend text.d{font-size:5.6px;fill:var(--mid)}
/* Vistas 3D (fundo creme com grelha fina, como as imagens da medição). */
.rel-vista{margin:0;display:flex;flex-direction:column;gap:2px}
.rel-vista figcaption{font:700 6pt/1.3 var(--font-ui);letter-spacing:.8px;text-transform:uppercase;color:var(--mid)}
.rel-vista-img{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:var(--ar,120/210);background-color:var(--cream-2);background-image:linear-gradient(var(--gold-100) 1px,transparent 1px),linear-gradient(90deg,var(--gold-100) 1px,transparent 1px);background-size:10px 10px;border:1px solid var(--border)}
.rel-vista-img img{display:block;width:100%;height:100%;object-fit:contain}
.rel-vista-img span{padding:6px;font-size:6.6pt;color:var(--mid);text-align:center}
.rel-vista-img.vazia{background-image:none}
.rel-vistas5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;align-items:start}
.rel-vistas5 .rel-vista-img[data-vista="cima"]{aspect-ratio:1}
.rel-vistas2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rel-vistas2 .rel-vista-img{aspect-ratio:130/230}
.rel-pares{display:flex;flex-direction:column;gap:6px}
.rel-par{padding:5px 6px;border:1px solid var(--border)}
.rel-par-g{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rel-par .rel-vista-img{aspect-ratio:110/190}
.rel-glut{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.rel-glut .rel-vista-img{aspect-ratio:120/140}
/* Coluna: pontuação global. */
.rel-global{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--border);border-top:2px solid var(--accent)}
.rel-anel{width:30mm;height:30mm;flex-shrink:0}
.rel-anel .t{fill:none;stroke:var(--navy-50);stroke-width:8}
.rel-anel .a{fill:none;stroke:var(--navy-700);stroke-width:8;stroke-linecap:round}
.rel-anel.fora .a{stroke:var(--accent)}
.rel-anel text{font:400 22px var(--font-title);fill:var(--navy-800)}
.rel-global b{display:block;margin-bottom:6px;font:400 11pt var(--font-title);color:var(--navy-800)}
.rel-legenda{margin:0;padding:0;list-style:none;display:grid;gap:2px;font-size:6.8pt;color:var(--text2)}
.rel-legenda li::before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;vertical-align:-1px;border-radius:2px;background:var(--gold-100)}
.rel-legenda .k0::before{background:var(--navy-700)}
.rel-legenda .k1::before{background:var(--gold-300)}
.rel-legenda .k2::before{background:var(--gold-600)}
.rel-legenda .k3::before{background:var(--gold-700)}
.rel-coluna tbody th{width:32%;font-size:8.4pt}
.rel-coluna tbody th small{font-weight:700;letter-spacing:.6px;text-transform:uppercase;font-size:6.2pt}
.rel-lvcel{width:52%}
/* Glúteos. */
.rel-forma{font:400 13pt/1.2 var(--font-title);color:var(--navy-800)}
.rel-hip{margin:3px 0 8px;font-size:7.6pt;color:var(--text2)}
.rel-hip b{font:400 10pt var(--font-title);color:var(--navy-800)}
.rel-formas{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:8px}
.rel-formas figure{margin:0;padding:4px 2px 3px;border:1px solid var(--border);text-align:center}
.rel-formas svg{display:block;width:100%;height:auto}
.rel-formas path{fill:var(--navy-50);stroke:var(--navy-300);stroke-width:1.4}
.rel-formas path.m{fill:none;stroke:var(--navy-300);stroke-width:1;stroke-dasharray:2 2}
.rel-formas figcaption{font:700 5.8pt/1.3 var(--font-ui);letter-spacing:.5px;text-transform:uppercase;color:var(--mid)}
.rel-formas figure.on{border-color:var(--accent);background:var(--gold-100)}
.rel-formas figure.on path{fill:var(--gold-200);stroke:var(--accent)}
.rel-formas figure.on figcaption{color:var(--accent-txt)}
.rel-hist{padding:6px 8px;border:1px solid var(--border)}
.rel-hist .rel-forma{font-size:11pt}
.rel-hist .rel-glut{margin-top:6px}
/* Equilíbrio. */
.rel-equi{padding:10px 12px;border:1px solid var(--border);border-top:2px solid var(--accent)}
.rel-equi > span{display:block;font:700 6.8pt/1.3 var(--font-ui);letter-spacing:1.2px;text-transform:uppercase;color:var(--mid)}
.rel-equi > b{display:block;margin:4px 0;font:400 13pt/1.3 var(--font-title);color:var(--navy-800)}
.rel-equi > b.n{font-size:26pt}
.rel-equi > small{display:block;font-size:6.8pt;color:var(--mid)}
.rel-equi p{margin-top:6px;font-size:7.6pt;color:var(--text2)}
/* Objetivos, aviso final e assinatura. */
.rel-ficha{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;padding:8px 12px;background:var(--cream-2);border-left:3px solid var(--accent)}
.rel-ficha blockquote{margin:0;font:italic 400 10pt/1.4 var(--font-title);color:var(--navy-800)}
.rel-ficha dt,.rel-ficha blockquote span{display:block;font:700 6.4pt/1.3 var(--font-ui);letter-spacing:1.1px;text-transform:uppercase;color:var(--mid);font-style:normal}
.rel-ficha dl{margin:0;display:grid;gap:5px}
.rel-ficha dd{margin:1px 0 0}
.rel-fim{margin-top:14px;break-inside:avoid}
.rel-aviso{padding:6px 10px;background:var(--cream-2);border-left:3px solid var(--accent);font-size:7pt;line-height:1.5;color:var(--text2)}
.rel-ass{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;margin-top:26px;font-size:7.4pt;color:var(--mid)}
.rel-ass span{display:block;height:22px;margin-bottom:4px;border-bottom:1px solid var(--ink)}

/* Papel: A4 com margens próprias (relatório e qualquer página impressa), rodapé com a
   marca e o número da página. Os navegadores sem caixas de margem (Firefox) imprimem sem
   o rodapé, com as mesmas margens. A ficha de acolhimento é um PDF gerado no servidor
   (app/form_pdf.py). */
@page{
  size:A4;
  margin:15mm 14mm 17mm;
  @bottom-left{content:"EXORYA · Longevity Experience";font:7pt Helvetica,Arial,sans-serif;letter-spacing:.6pt;color:#6B7080}
  @bottom-right{content:"Página " counter(page) " de " counter(pages);font:7pt Helvetica,Arial,sans-serif;color:#6B7080}
}
@media print{
  .topbar,.hdr-btns,.cfg-tabs{display:none}
  body{background:#fff}
  /* Relatório: só o documento, sem a barra nem a sombra; as margens são as do @page. */
  html.rel-aberto{overflow:visible}
  body.imprimir-relatorio{background:#fff}
  body.imprimir-relatorio > :not(#relPrint){display:none !important}
  body.imprimir-relatorio .rel-preview{position:static;overflow:visible;background:none}
  body.imprimir-relatorio .rel-barra{display:none}
  body.imprimir-relatorio .rel-doc{zoom:1 !important;padding:0}
  body.imprimir-relatorio .rel-pag{width:auto;min-height:0;margin:0;padding:0;box-shadow:none;break-after:page}
  body.imprimir-relatorio .rel-pag:last-child{break-after:auto}
}

/* Estilos do avatar 3D (avatar.js): botões por baixo do corpo, terceira linha da legenda
   (diferença para a medição anterior ou estado da zona) e legendas escuras no holograma. */
.av-estilos{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}
.av-estilos[hidden]{display:none}
.av-btn{padding:7px 13px;border-radius:var(--radius-pill);border:1px solid var(--border-input);background:var(--white);color:var(--text2);font:700 10.5px/1.2 var(--font-ui);letter-spacing:1.1px;text-transform:uppercase;cursor:pointer;white-space:nowrap}
.av-btn.on{background:var(--navy-800);border-color:var(--navy-800);color:var(--white)}
.av-btn:disabled{opacity:.4;cursor:not-allowed}
.av-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.av-legenda .d{font:600 10px/1.25 var(--font-ui);color:var(--av-nome);letter-spacing:.2px}
.av-estilo-holograma .av-medidas,.w-avatar.av-estilo-holograma .av-medidas{--av-linha:#9FD8F5;--av-nome:#A7B0C3;--av-valor:#F4F1EA;--av-fundo:rgba(8,18,36,.8)}
