/* Impulso +PME — estilos das páginas ainda por converter para o layout Viho.
   TRANSITÓRIO: as cores, sombras e o tipo de letra já vêm dos tokens Viho (assets/css/viho.css);
   este ficheiro desaparece quando a última página estiver convertida. */
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/barlow-400.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/barlow-500.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/barlow-600.woff2') format('woff2'); }
@font-face { font-family: 'Barlow'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/barlow-700.woff2') format('woff2'); }
/* Valores de base dos tokens Viho: usados nas páginas que carregam só este ficheiro (questionários públicos,
   páginas de erro). Na área privada, o viho.css redefine-os (incluindo modo escuro e cores do personalizador). */
:root {
  --vh-border: #E6EDEF;
  --vh-danger: #D22D3D;
  --vh-font: 'Barlow', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --vh-heading: #2C323F;
  --vh-muted: #717171;
  --vh-primary: #2B9FBF;
  --vh-primary-dark: color-mix(in srgb, var(--vh-primary) 76%, #000);
  --vh-primary-light: color-mix(in srgb, var(--vh-primary) 72%, #fff);
  --vh-primary-tint: color-mix(in srgb, var(--vh-primary) 10%, transparent);
  --vh-primary-tint2: color-mix(in srgb, var(--vh-primary) 18%, transparent);
  --vh-shadow-card: 0 0 11px 5px rgba(113, 113, 113, 0.06);
  --vh-shadow-modal: 0 20px 35px rgba(0, 0, 0, 0.21);
  --vh-success: #0E9F6E;
  --vh-surface: #FFFFFF;
  --vh-surface-2: #F5F7FB;
  --vh-surface-3: #EEF2F6;
  --vh-text-2: #3F475A;
  --vh-warning: #D97706;
}
:root {
  --p-900: var(--vh-primary-dark); --p-700: var(--vh-primary); --p-500: var(--vh-primary-light); --p-100: var(--vh-primary-tint2); --p-050: var(--vh-primary-tint); --p-rgb: 43,159,191;
  --azul-900: var(--p-900); --azul-800: var(--p-900); --azul-700: var(--p-700); --azul-500: var(--p-500); --azul-100: var(--p-100); --azul-050: var(--p-050);
  --verde-600: var(--vh-success); --verde-700: color-mix(in srgb, var(--vh-success) 84%, #000); --verde-100: color-mix(in srgb, var(--vh-success) 13%, transparent);
  --amarelo-500: var(--vh-warning); --amarelo-100: color-mix(in srgb, var(--vh-warning) 14%, transparent);
  --cinza-900: var(--vh-heading); --cinza-700: var(--vh-text-2); --cinza-500: var(--vh-muted); --cinza-300: var(--vh-border); --cinza-200: var(--vh-border); --cinza-100: var(--vh-surface-3); --cinza-050: var(--vh-surface-2);
  --vermelho-600: var(--vh-danger); --vermelho-100: color-mix(in srgb, var(--vh-danger) 11%, transparent);
  --branco: var(--vh-surface);
  --radius: 5px;
  --shadow: var(--vh-shadow-card);
  --shadow-lg: var(--vh-shadow-modal);
  --font: var(--vh-font);
  --fs-title: 24px; --fs-h: 16px; --fs-body: 14px; --fs-small: 12px; --fs-label: 13px; --fs-num: 26px;
}
html[data-scheme="dark"] .azul-100-text, html[data-scheme="dark"] .badge-blue { color: #BFDBFE; }
html[data-scheme="dark"] .badge-green, html[data-scheme="dark"] .tag-green { color: #9FE39A; } html[data-scheme="dark"] .badge-yellow, html[data-scheme="dark"] .tag-yellow { color: #FCD34D; } html[data-scheme="dark"] .badge-red, html[data-scheme="dark"] .tag-red { color: #FCA5A5; }
html[data-scheme="dark"] .tag-blue { color: #BFDBFE; }
html[data-scheme="dark"] .alert.success { color: #B7F0B4; } html[data-scheme="dark"] .alert.error { color: #FECACA; } html[data-scheme="dark"] .alert.warning { color: #FDE68A; } html[data-scheme="dark"] .alert.info { color: #BFDBFE; }
html[data-scheme="dark"] .header { background: rgba(25,33,50,.85); }
html[data-scheme="dark"] .rail, html[data-scheme="dark"] .panel-nav { border-right-color: #313E59; }
html[data-scheme="dark"] .stat-ic.navy { background: rgba(255,255,255,.08); color: #E7E9EF; }
html[data-scheme="dark"] .stat { background: #313E59; } html[data-scheme="dark"] .stat:hover { background: #384766; }
html[data-scheme="dark"] .donut svg circle:first-child, html[data-scheme="dark"] .ring circle:first-child { stroke: #384766; }
html[data-scheme="dark"] .chart .grid { stroke: #384766; }
html[data-scheme="dark"] .btn.secondary { background: #313E59; border-color: #465675; color: #E7E9EF; }
html[data-scheme="dark"] .btn.soft { background: #313E59; color: #E7E9EF; }
html[data-scheme="dark"] input, html[data-scheme="dark"] select, html[data-scheme="dark"] textarea { background: #202B40; color: #E7E9EF; border-color: #465675; }
html[data-scheme="dark"] .hsearch, html[data-scheme="dark"] .tsearch { background: #313E59; border-color: #313E59; }
html[data-scheme="dark"] .editor .ql-toolbar.ql-snow, html[data-scheme="dark"] .editor .ql-container.ql-snow { background: #202B40; color: #E7E9EF; }
html[data-scheme="dark"] .ql-snow .ql-stroke { stroke: #C2C9D6; } html[data-scheme="dark"] .ql-snow .ql-fill { fill: #C2C9D6; } html[data-scheme="dark"] .ql-snow .ql-picker { color: #C2C9D6; }
html[data-scheme="dark"] .static-text, html[data-scheme="dark"] .empty-inline { background: #202B40; }
html[data-scheme="dark"] .sticky-bar, html[data-scheme="dark"] .form-actions { background: rgba(38,51,77,.96); }
html[data-scheme="dark"] .rail-logo img, html[data-scheme="dark"] .panel-head img { filter: brightness(0) invert(1); }
html[data-scheme="dark"] .table th { background: #202B40; }
html[data-scheme="dark"] .table tr:hover td { background: #2B3952; }
html[data-scheme="dark"] .avatar-btn, html[data-scheme="dark"] .rail-avatar { background: linear-gradient(135deg, var(--p-700), var(--p-500)); }
html[data-scheme="dark"] .dropdown { border-color: #384766; }
html[data-scheme="dark"] .msg { background: #313E59; }
html[data-scheme="dark"] .provisional { background: rgba(248,183,18,.15); border-color: rgba(248,183,18,.4); color: #FDE68A; }
* { box-sizing: border-box; }
/* Todos os controlos herdam a fonte da plataforma (os browsers usam a fonte do sistema em botões, selects e inputs) */
button, input, select, textarea, optgroup, option, .btn, .btn-link, .file-btn, summary, legend, table, th, td, .ql-container, .ql-toolbar, .ql-snow .ql-picker, .ql-snow .ql-tooltip, .ql-snow .ql-tooltip input { font-family: var(--font) !important; }
button, input, select, textarea { font-size: inherit; line-height: inherit; }
html { font-size: 13px; -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: var(--font); color: var(--cinza-700); background: var(--cinza-050); line-height: 1.55; }
a { color: var(--azul-700); text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; }
h1, h2, h3, h4 { color: var(--cinza-900); line-height: 1.3; margin: 0 0 .5rem; font-weight: 600; }
h1 { font-size: var(--fs-title); font-weight: 500; } h2 { font-size: var(--fs-h); font-weight: 500; } h3 { font-size: var(--fs-h); font-weight: 500; }
p { margin: 0 0 .75rem; }
.muted { color: var(--cinza-500); }
.small { font-size: var(--fs-body); }
.nowrap { white-space: nowrap; }
.text-right { text-align: right; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ---------- Site público ---------- */
.site-header { background: var(--branco); border-bottom: 1px solid var(--cinza-200); position: sticky; top: 0; z-index: 20; }
.site-header .wrap { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem 1.25rem; max-width: 1180px; margin: 0 auto; }
.site-header .brand img { height: 56px; display: block; }
.site-nav { display: flex; gap: 1.25rem; align-items: center; }
.site-nav a { color: var(--azul-900); font-weight: 500; }
.btn-login { background: var(--azul-700); color: var(--branco) !important; padding: .5rem 1.1rem; border-radius: 999px; font-weight: 600; }
.btn-login:hover { background: var(--azul-900); text-decoration: none; }
.hero { background: linear-gradient(135deg, var(--azul-900) 0%, var(--azul-700) 55%, var(--azul-500) 100%); color: var(--branco); }
.hero .wrap { max-width: 1180px; margin: 0 auto; padding: 4rem 1.25rem 3.5rem; display: grid; grid-template-columns: 1.2fr .8fr; gap: 2rem; align-items: center; }
.hero h1 { color: var(--branco); font-size: var(--fs-num); margin-bottom: 1rem; }
.hero p { font-size: var(--fs-body); opacity: .95; max-width: 60ch; }
.hero .tag { display: inline-block; background: var(--amarelo-500); color: var(--azul-900); font-weight: 700; padding: .25rem .75rem; border-radius: 999px; font-size: var(--fs-body); margin-bottom: 1rem; }
.hero .logo-card { background: var(--branco); border-radius: 16px; padding: 1.5rem; box-shadow: 0 12px 40px rgba(0,0,0,.2); text-align: center; }
.hero .logo-card img { max-height: 190px; }
section.block { max-width: 1180px; margin: 0 auto; padding: 3rem 1.25rem; }
section.block h2 { font-size: var(--fs-num); margin-bottom: 1.5rem; }
section.block h2 span { color: var(--verde-600); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; }
.card { background: var(--branco); border: 0; border-radius: var(--radius); padding: 1.25rem; box-shadow: var(--shadow); }
.card h3 { margin-bottom: .35rem; }
.theme-card { border-top: 4px solid var(--verde-600); }
.theme-card .n { color: var(--verde-600); font-weight: 700; font-size: var(--fs-body); }
.band { background: var(--azul-050); border-top: 1px solid var(--azul-100); border-bottom: 1px solid var(--azul-100); }
.site-footer { background: var(--branco); border-top: 1px solid var(--cinza-200); margin-top: 2rem; }
.site-footer .wrap { max-width: 1180px; margin: 0 auto; padding: 2rem 1.25rem; display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: center; }
.site-footer .funding img { max-height: 48px; }
.site-footer .legal { color: var(--cinza-500); font-size: var(--fs-body); }
.source-note { font-size: var(--fs-small); color: var(--cinza-500); border-left: 3px solid var(--amarelo-500); padding-left: .75rem; }

/* ---------- Área privada: barra de ícones + painel + cabeçalho ---------- */
.app { display: grid; grid-template-columns: var(--rail-w) var(--panel-w) minmax(0, 1fr); min-height: 100vh; width: 100%; transition: grid-template-columns .2s; }
html.panel-closed .app { grid-template-columns: var(--rail-w) 0 minmax(0, 1fr); }
.rail { position: sticky; top: 0; height: 100vh; background: var(--branco); border-right: 1px solid var(--cinza-200); display: flex; flex-direction: column; align-items: center; padding: .9rem 0; gap: .4rem; z-index: 40; }
.rail-logo img { width: 48px; height: auto; display: block; }
.rail-logo { margin-bottom: .6rem; }
.rail-nav { display: flex; flex-direction: column; gap: .35rem; align-items: center; }
.rail-item { position: relative; width: 44px; height: 44px; border-radius: 10px; margin: 0 auto; display: inline-flex; align-items: center; justify-content: center; color: var(--cinza-500); transition: background .15s, color .15s; }
.icon-btn svg, .hsearch svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.rail-item svg { width: 28px; height: 28px; }
.rail-item svg.duo { fill: currentColor; stroke: none; }
.rail-item svg.line { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; width: 22px; height: 22px; }
.icon-btn svg.fill { fill: currentColor; stroke: none; }
.rail-item:hover { background: var(--cinza-100); color: var(--azul-700); text-decoration: none; }
.rail-item.active { background: var(--azul-100); color: var(--azul-700); }
.rail-dot { position: absolute; top: 9px; right: 9px; width: 8px; height: 8px; border-radius: 50%; background: var(--vermelho-600); border: 2px solid var(--branco); }
.rail-bottom { margin-top: auto; display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.rail-avatar { position: relative; width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, var(--azul-700), var(--azul-500)); color: var(--branco); display: inline-flex; align-items: center; justify-content: center; font-weight: 600; font-size: var(--fs-body); }
.rail-avatar:hover { text-decoration: none; }
.rail-avatar .on { position: absolute; right: -1px; bottom: -1px; width: 11px; height: 11px; border-radius: 50%; background: var(--verde-600); border: 2px solid var(--branco); }

.panel-nav { position: sticky; top: 0; height: 100vh; background: var(--branco); border-right: 1px solid var(--cinza-200); overflow: hidden auto; display: flex; flex-direction: column; min-width: 0; z-index: 35; }
html.panel-closed .panel-nav { border-right: 0; visibility: hidden; }
.panel-head { display: none; align-items: center; justify-content: space-between; padding: .75rem 1rem; }
.panel-head img { height: 40px; }
.panel-close { display: inline-flex; }
.panel-sec:first-of-type, .panel-sec.active { }
.panel-nav > .panel-sec { padding-top: .25rem; }
.panel-sec { display: none; padding: .25rem 1.25rem 1rem; }
.panel-sec.active { display: block; }
.panel-sec h3 { display: none; }
.panel-sec ul { list-style: none; margin: 0; padding: 0; }
.panel-sec li a { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .55rem .35rem; border-radius: 6px; color: var(--cinza-700); font-size: var(--fs-body); letter-spacing: .01em; transition: color .15s; }
.panel-sec li a:hover { text-decoration: none; color: var(--cinza-900); }
.panel-sec li a.active { color: var(--azul-700); font-weight: 500; }
.panel-user { margin-top: auto; border-top: 1px solid var(--cinza-200); padding: .9rem 1.1rem; font-size: var(--fs-body); }
.panel-user-row { display: flex; gap: .65rem; align-items: center; }
.panel-user strong { display: block; color: var(--cinza-900); font-weight: 600; font-size: var(--fs-body); line-height: 1.2; }
.panel-user .role { display: inline-block; color: var(--verde-700); font-size: var(--fs-small); font-weight: 500; }
.panel-user-actions { display: flex; gap: 1rem; margin-top: .6rem; padding-left: calc(32px + .65rem); }
.panel-user-actions a, .panel-user-actions .btn-link { color: var(--cinza-500); font-size: var(--fs-small); }
.avatar-sm { width: 32px; height: 32px; border-radius: 50%; background: var(--azul-100); color: var(--azul-700); display: inline-flex; align-items: center; justify-content: center; font-weight: 600; font-size: var(--fs-small); flex: 0 0 32px; }
.backdrop { display: none; }

.main { min-width: 0; width: 100%; display: flex; flex-direction: column; }
.header { position: sticky; top: 0; z-index: 30; height: var(--header-h); display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0 2rem; background: rgba(248,250,252,.85); backdrop-filter: blur(10px); border-bottom: 1px solid transparent; }
.header-left, .header-right { display: flex; align-items: center; gap: .5rem; }
.header-crumb { margin: 0 0 0 .5rem; }
.icon-btn { width: 40px; height: 40px; border-radius: 50%; border: 0; background: transparent; color: var(--cinza-700); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; position: relative; font: inherit; transition: background .15s; }
.icon-btn:hover { background: var(--cinza-200); color: var(--azul-700); text-decoration: none; }
.bell-dot { position: absolute; top: 9px; right: 10px; width: 8px; height: 8px; border-radius: 50%; background: var(--vermelho-600); border: 2px solid var(--cinza-050); }
.hsearch { display: flex; align-items: center; gap: .5rem; background: var(--cinza-200); border-radius: 999px; padding: 0 .9rem; height: 38px; width: 260px; color: var(--cinza-500); transition: background .15s, width .2s; }
.hsearch:focus-within { background: var(--branco); box-shadow: 0 0 0 2px var(--azul-100); width: 320px; }
.hsearch svg { width: 18px; height: 18px; flex: 0 0 18px; }
.hsearch input[type=search] { border: 0; background: transparent; padding: 0; height: 100%; font: inherit; color: var(--cinza-900); width: 100%; outline: none; box-shadow: none; }
.hsearch input[type=search]:focus { outline: none; border: 0; }
.hsearch input::placeholder { color: var(--cinza-500); }
.avatar-btn { width: 36px; height: 36px; border-radius: 50%; border: 0; cursor: pointer; background: linear-gradient(135deg, var(--azul-700), var(--azul-500)); color: var(--branco); font-weight: 600; font-size: var(--fs-small); font-family: inherit; }
.hmenu { position: relative; }
.dropdown { display: none; position: absolute; right: 0; top: calc(100% + 8px); min-width: 220px; background: var(--branco); border: 1px solid var(--cinza-200); border-radius: 10px; box-shadow: var(--shadow-lg); padding: .4rem; z-index: 50; }
.dropdown.open { display: block; }
.dropdown a, .dropdown .btn-link { display: block; width: 100%; text-align: left; padding: .55rem .8rem; border-radius: 7px; color: var(--cinza-700); font-size: var(--fs-body); }
.dropdown a:hover, .dropdown .btn-link:hover { background: var(--cinza-100); color: var(--azul-700); text-decoration: none; }
.dropdown .dd-head { padding: .6rem .8rem .7rem; border-bottom: 1px solid var(--cinza-200); margin-bottom: .3rem; }
.dropdown .dd-head strong { display: block; color: var(--cinza-900); }
.dropdown .dd-head span { font-size: var(--fs-small); color: var(--cinza-500); }

.content { padding: .75rem 2rem 3rem; flex: 1; }
.topbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.25rem; flex-wrap: wrap; }
.topbar .actions { display: flex; gap: .5rem; flex-wrap: wrap; }
.breadcrumb { font-size: var(--fs-body); color: var(--cinza-500); margin-bottom: .25rem; }
.breadcrumb a { color: var(--cinza-500); }
.menu-toggle { display: none !important; }

/* botões */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 1px solid transparent; border-radius: 8px; padding: 0 1.1rem; height: 38px; font-weight: 500; font-size: var(--fs-body); cursor: pointer; background: var(--azul-700); color: var(--branco); font-family: inherit; line-height: 1.3; }
.btn:hover { background: var(--azul-900); text-decoration: none; }
.btn.secondary { background: var(--branco); color: var(--cinza-700); border-color: var(--cinza-300); }
.btn.secondary:hover { background: var(--azul-050); }
.btn.green { background: var(--verde-600); } .btn.green:hover { background: var(--verde-700); }
.btn.yellow { background: var(--amarelo-500); color: var(--azul-900); } .btn.yellow:hover { background: #e0a400; }
.btn.danger { background: var(--vermelho-600); } .btn.danger:hover { background: #991b1b; }
.btn.sm { height: 32px; padding: 0 .8rem; font-size: var(--fs-body); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn-link { background: none; border: 0; color: var(--azul-700); cursor: pointer; padding: 0; font: inherit; }

/* alerts */
.alert { padding: .75rem 1rem; border-radius: 8px; margin-bottom: 1rem; border: 1px solid; font-size: var(--fs-body); }
.alert.success { background: var(--verde-100); border-color: #B7E3BF; color: #0B5A1A; }
.alert.error { background: var(--vermelho-100); border-color: #F5B5B5; color: #7F1D1D; }
.alert.warning { background: var(--amarelo-100); border-color: #F3D98A; color: #6B4E00; }
.alert.info { background: var(--azul-100); border-color: #BDD4EE; color: var(--azul-900); }

/* badges */
.badge { display: inline-block; padding: .2rem .55rem; border-radius: 6px; font-size: var(--fs-small); font-weight: 500; white-space: nowrap; line-height: 1.3; }
.badge-grey { background: var(--cinza-200); color: var(--cinza-700); }
.badge-blue { background: var(--azul-100); color: var(--azul-900); }
.badge-yellow { background: var(--amarelo-100); color: #6B4E00; }
.badge-green { background: var(--verde-100); color: var(--verde-700); }
.badge-green-dark { background: var(--verde-700); color: var(--branco); }
.badge-red { background: var(--vermelho-100); color: var(--vermelho-600); }
.badge-count { background: var(--amarelo-500); color: var(--azul-900); min-width: 1.4rem; text-align: center; }

/* cards / KPIs */
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.kpis-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 1100px) { .kpis-4 { grid-template-columns: repeat(2, 1fr); } }
.kpi { background: var(--branco); border: 0; border-radius: var(--radius); padding: 1.1rem 1.25rem; box-shadow: var(--shadow); border-left: 0; position: relative; overflow: hidden; text-decoration: none; display: block; transition: transform .15s, box-shadow .15s; }
a.kpi:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(0,48,120,.12); text-decoration: none; }
.kpi::after { content: ""; position: absolute; left: 1.25rem; right: 1.25rem; bottom: 0; height: 3px; border-radius: 3px 3px 0 0; background: var(--azul-500); }
.kpi.green::after { background: var(--verde-600); } .kpi.yellow::after { background: var(--amarelo-500); } .kpi.dark::after { background: var(--azul-900); }
.kpi .v { font-size: var(--fs-num); font-weight: 600; color: var(--cinza-900); line-height: 1.1; }
.kpi .l { color: var(--cinza-500); font-size: var(--fs-body); }
.kpi .s { font-size: var(--fs-small); color: var(--cinza-500); margin-top: .25rem; }
.panel { background: var(--branco); border: 0; border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 1.25rem; }
.panel > .ph { padding: 1rem 1.25rem .6rem; border-bottom: 0; display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
.panel > .ph h2, .panel > .ph h3 { margin: 0; font-size: var(--fs-body); font-weight: 500; color: var(--cinza-900); }
.panel > .pb { padding: .75rem 1.25rem 1.25rem; }
.cols-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.cols-3 { display: grid; grid-template-columns: 2fr 1fr; gap: 1.25rem; }

/* tabelas */
.table { width: 100%; border-collapse: collapse; font-size: var(--fs-body); }
.table th, .table td { padding: .7rem .9rem; border-bottom: 1px solid var(--cinza-200); text-align: left; vertical-align: top; }
.table th { background: var(--cinza-050); color: var(--cinza-500); font-weight: 600; font-size: var(--fs-small); text-transform: uppercase; letter-spacing: .08em; border-top: 1px solid var(--cinza-200); }
.table tr:hover td { background: var(--cinza-050); }
.table .num { text-align: right; }
.table-wrap { overflow-x: auto; }
.empty { padding: 1.5rem; text-align: center; color: var(--cinza-500); }

/* formulários */
.form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (min-width: 1400px) { .form-grid { grid-template-columns: repeat(3, 1fr); } .form-grid .full { grid-column: 1 / -1; } }
.form-grid .full { grid-column: 1 / -1; }
label { display: block; font-weight: 400; font-size: var(--fs-body); color: var(--cinza-700); margin-bottom: .4rem; }
input[type=text], input[type=email], input[type=password], input[type=number], input[type=date], input[type=search], input[type=url], input[type=tel], select, textarea {
  width: 100%; height: 38px; padding: 0 .85rem; border: 1px solid var(--cinza-300); border-radius: 8px; font: inherit; font-size: var(--fs-body); color: var(--cinza-900); background: var(--branco); }
textarea { height: auto; padding: .6rem .85rem; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--azul-500); outline-offset: 1px; border-color: var(--azul-500); }
textarea { min-height: 90px; resize: vertical; }
.help { font-size: var(--fs-small); color: var(--cinza-500); margin-top: .3rem; }
.check { display: flex; align-items: center; gap: .5rem; font-weight: 500; }
.check input { width: auto; }
.inline-form { display: inline; }
.filters { display: flex; gap: .75rem; flex-wrap: wrap; align-items: end; margin-bottom: 1rem; background: var(--branco); border: 0; box-shadow: var(--shadow); border-radius: var(--radius); padding: 1rem 1.25rem; }
.filters > div { flex: 1 1 180px; min-width: 160px; }
.filters > div:last-child { flex: 0 0 auto; }
.filters .btn { height: 38px; padding: 0 1.3rem; background: var(--azul-700); color: var(--branco); border-color: var(--azul-700); }
.filters .btn:hover { background: var(--azul-900); }
.filters input, .filters select { height: 38px; }
.filters label { font-size: var(--fs-small); }
.progress { background: var(--cinza-200); border-radius: 999px; height: 8px; overflow: hidden; min-width: 80px; }
.progress > span { display: block; height: 100%; background: var(--verde-600); }
.progress.blue > span { background: var(--azul-500); }

/* editor de documentos */
.doc-layout { display: grid; grid-template-columns: 260px 1fr; gap: 1.5rem; align-items: start; }
.doc-nav { position: sticky; top: calc(var(--header-h) + .75rem); background: var(--branco); border: 0; box-shadow: var(--shadow); border-radius: var(--radius); padding: .75rem; max-height: calc(100vh - var(--header-h) - 1.5rem); overflow: auto; }
.doc-nav a { display: block; padding: .4rem .6rem; border-radius: 6px; font-size: var(--fs-body); color: var(--cinza-700); }
.doc-nav a.active, .doc-nav a:hover { background: var(--azul-050); color: var(--azul-900); text-decoration: none; }
.doc-nav a .pct { float: right; font-size: var(--fs-small); color: var(--cinza-500); }
.doc-nav .sub { padding-left: .9rem; }
.save-state { font-size: var(--fs-body); color: var(--cinza-500); display: flex; align-items: center; gap: .5rem; }
.save-state .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--cinza-300); display: inline-block; }
.save-state.saving .dot { background: var(--amarelo-500); animation: pulse 1s infinite; }
.save-state.saved .dot { background: var(--verde-600); }
.save-state.error .dot { background: var(--vermelho-600); }
.save-state.dirty .dot { background: var(--azul-500); }
@keyframes pulse { 50% { opacity: .4; } }
.doc-section { background: var(--branco); border: 0; box-shadow: var(--shadow); border-radius: var(--radius); padding: 1.25rem 1.5rem; margin-bottom: 1.25rem; scroll-margin-top: calc(var(--header-h) + .75rem); }
.doc-section h2 { border-bottom: 2px solid var(--azul-100); padding-bottom: .5rem; margin-bottom: 1rem; }
.doc-section h3.sub-heading { color: var(--azul-700); margin: 1.25rem 0 .5rem; font-size: var(--fs-body); }
.field { margin-bottom: 1.1rem; }
.field > label { display: flex; gap: .4rem; align-items: baseline; flex-wrap: wrap; }
.field .req { color: var(--vermelho-600); }
.field .help-toggle { font-weight: 400; font-size: var(--fs-small); color: var(--azul-500); cursor: pointer; background: none; border: 0; padding: 0; }
.field .help-text { display: none; background: var(--azul-050); border-left: 3px solid var(--azul-500); padding: .5rem .75rem; font-size: var(--fs-body); color: var(--azul-900); margin: .35rem 0 .5rem; white-space: pre-line; }
.field.help-open .help-text { display: block; }
.field.invalid > label { color: var(--vermelho-600); }
.field.invalid input, .field.invalid .ql-container { border-color: var(--vermelho-600); }
.field.hidden-field { display: none; }
.static-text { background: var(--cinza-050); border: 1px dashed var(--cinza-300); padding: .75rem 1rem; border-radius: 8px; font-size: var(--fs-body); color: var(--cinza-700); }
.editor { border: 1px solid var(--cinza-300); border-radius: 8px; overflow: hidden; background: var(--branco); }
.editor .ql-toolbar.ql-snow { border: 0; border-bottom: 1px solid var(--cinza-200); background: var(--cinza-050); }
.editor .ql-container.ql-snow { border: 0; min-height: 140px; font-family: var(--font); font-size: var(--fs-body); }
.editor .ql-editor { min-height: 140px; }
.editor .ql-editor img { max-width: 100%; }
.data-table { width: 100%; border-collapse: collapse; font-size: var(--fs-body); }
.data-table th, .data-table td { border: 1px solid var(--cinza-300); padding: .35rem .4rem; }
.data-table th { background: var(--azul-050); color: var(--azul-900); font-size: var(--fs-small); font-weight: 600; text-align: center; }
.data-table input, .data-table select { padding: .35rem .45rem; border-radius: 6px; }
.data-table input[type=number] { text-align: center; }
.data-table .fixed { background: var(--cinza-050); font-weight: 500; }
.data-table .totals td { background: var(--cinza-100); font-weight: 700; text-align: center; }
.data-table .rm { color: var(--vermelho-600); background: none; border: 0; cursor: pointer; font-size: var(--fs-body); }
.image-field { display: flex; gap: 1rem; align-items: flex-start; flex-wrap: wrap; }
.image-field img { max-height: 160px; border: 1px solid var(--cinza-300); border-radius: 6px; background: var(--branco); padding: 4px; }
.themes-field label { font-weight: 400; display: flex; gap: .5rem; align-items: center; }
.sticky-bar { position: sticky; bottom: 0; background: rgba(255,255,255,.96); border-top: 1px solid var(--cinza-200); padding: .75rem 2rem; display: flex; gap: .75rem; align-items: center; justify-content: space-between; flex-wrap: wrap; z-index: 5; margin: 0 -2rem -3rem; }
.provisional { background: var(--amarelo-100); border: 1px solid #F3D98A; color: #6B4E00; padding: .6rem .9rem; border-radius: 8px; font-size: var(--fs-body); margin-bottom: 1rem; }

/* timeline */
.timeline { list-style: none; margin: 0; padding: 0; }
.timeline li { padding: .5rem 0 .5rem 1.1rem; border-left: 2px solid var(--azul-100); position: relative; font-size: var(--fs-body); }
.timeline li::before { content: ""; position: absolute; left: -6px; top: .9rem; width: 10px; height: 10px; border-radius: 50%; background: var(--azul-500); }
.timeline .when { color: var(--cinza-500); font-size: var(--fs-small); }

/* mensagens */
.chat { display: grid; grid-template-columns: 280px 1fr; gap: 1.25rem; }
.conv-list a { display: block; padding: .7rem .9rem; border-bottom: 1px solid var(--cinza-200); color: var(--cinza-900); }
.conv-list a:hover, .conv-list a.active { background: var(--azul-050); text-decoration: none; }
.messages { display: flex; flex-direction: column; gap: .6rem; max-height: 60vh; overflow-y: auto; padding: 1rem; }
.msg { max-width: 78%; padding: .6rem .9rem; border-radius: 12px; background: var(--cinza-100); font-size: var(--fs-body); }
.msg.mine { align-self: flex-end; background: var(--azul-100); }
.msg .meta { font-size: var(--fs-small); color: var(--cinza-500); margin-top: .3rem; }
.msg .ctx { font-size: var(--fs-small); color: var(--azul-700); margin-bottom: .2rem; }
.msg .body { white-space: pre-wrap; word-break: break-word; }

/* pré-visualização */
.pdf-frame { width: 100%; height: calc(100vh - 230px); min-height: 500px; border: 1px solid var(--cinza-300); border-radius: 8px; background: var(--cinza-100); }

/* responsivo (computador e tablet) */
@media (max-width: 1100px) {
  .cols-3 { grid-template-columns: 1fr; }
  .grid-3 { grid-template-columns: 1fr 1fr; }
  .hero .wrap { grid-template-columns: 1fr; text-align: center; }
  .hero p { margin: 0 auto 1rem; }
}
@media (max-width: 900px) {
  .app, html.panel-closed .app { grid-template-columns: 1fr; }
  .rail { display: none; }
  .panel-nav { position: fixed; left: -280px; top: 0; width: 270px; transition: left .2s; z-index: 60; box-shadow: none; }
  .app.mobile-open .panel-nav { left: 0; box-shadow: var(--shadow-lg); }
  .app.mobile-open .backdrop { display: block; position: fixed; inset: 0; background: rgba(0,0,0,.4); z-index: 55; }
  .panel-head { display: flex; }
  .panel-sec { display: block; padding-top: .5rem; }
  .panel-nav > .panel-sec { padding-top: .5rem; }
  .header { padding: 0 1rem; }
  .hsearch { display: none; }
  .content { padding: .5rem 1rem 3rem; }
  .sticky-bar { margin: 0 -1rem -3rem; padding: .75rem 1rem; }
  .doc-layout { grid-template-columns: 1fr; }
  .doc-nav { position: static; max-height: none; }
  .cols-2, .form-grid, .grid-2, .grid-3, .chat, .site-footer .wrap { grid-template-columns: 1fr; }
  .site-nav { gap: .75rem; }
  .site-nav .hide-sm { display: none; }
}
@media print { .rail, .panel-nav, .header, .topbar .actions, .sticky-bar { display: none; } .app { display: block; } }

/* Administração — cartões de área */
.admin-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.admin-card { background: var(--branco); border: 0; border-radius: var(--radius); padding: 1.5rem; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: .9rem; text-decoration: none; color: var(--cinza-900); min-height: 210px; transition: transform .15s, box-shadow .15s; position: relative; }
.admin-card:hover { transform: translateY(-3px); box-shadow: 0 14px 34px rgba(0,48,120,.14); text-decoration: none; }
.admin-card .ic { width: 48px; height: 48px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-title); }
.admin-card .ic.blue { background: var(--azul-100); color: var(--azul-700); }
.admin-card .ic.green { background: var(--verde-100); color: var(--verde-700); }
.admin-card .ic.yellow { background: var(--amarelo-100); color: #8a6100; }
.admin-card .ic.grey { background: var(--cinza-100); color: var(--cinza-700); }
.admin-card h3 { margin: 0 0 .35rem; font-size: var(--fs-body); }
.admin-card p { margin: 0; color: var(--cinza-500); font-size: var(--fs-body); }
.admin-card .go { margin-top: auto; font-weight: 700; color: var(--azul-700); font-size: var(--fs-body); }
.admin-card.featured { background: linear-gradient(135deg, var(--azul-900), var(--azul-500)); color: var(--branco); border: 0; }
.admin-card.featured h3, .admin-card.featured .go { color: var(--branco); }
.admin-card.featured p { color: rgba(255,255,255,.85); }
.admin-card.featured .ic { background: var(--amarelo-500); color: var(--azul-900); }
@media (max-width: 1100px) { .admin-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) { .admin-grid { grid-template-columns: 1fr; } }

/* Campos de ficheiro com o estilo da plataforma (substituem o botão nativo do sistema) */
.file-ctl { display: inline-flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.file-ctl input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; pointer-events: none; }
.file-ctl .file-btn { display: inline-flex; align-items: center; gap: .4rem; background: var(--azul-700); color: var(--branco); border-radius: 8px; padding: 0 .95rem; height: 32px; font-weight: 500; font-size: var(--fs-body); cursor: pointer; line-height: 1.3; border: 1px solid var(--azul-700); }
.file-ctl .file-btn:hover { background: var(--azul-900); }
.file-ctl:focus-within .file-btn { outline: 2px solid var(--azul-500); outline-offset: 2px; }
.file-ctl .file-name { font-size: var(--fs-body); color: var(--cinza-500); max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-ctl .file-name.has { color: var(--cinza-900); font-weight: 500; }

/* Formulários "pro": secções com cabeçalho, grelha de 3 colunas, chips, barra de ações */
.form-pro .fsec { background: var(--branco); border: 0; border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 1.25rem; overflow: hidden; }
.fsec-h { display: flex; gap: 1rem; align-items: center; padding: 1.1rem 1.5rem; border-bottom: 1px solid var(--cinza-100); background: var(--branco); }
.fsec-h h2 { margin: 0; font-size: var(--fs-body); }
.fsec-h p { margin: .1rem 0 0; color: var(--cinza-500); font-size: var(--fs-body); }
.fsec-ic { width: 42px; height: 42px; border-radius: 10px; background: var(--azul-100); color: var(--azul-700); display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-h); flex: 0 0 42px; }
.fsec-ic.green { background: var(--verde-100); color: var(--verde-700); }
.fsec-ic.yellow { background: var(--amarelo-100); color: #8a6100; }
.fsec-b { padding: 1.5rem; }
.fgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.1rem 1.25rem; }
.fgrid .span-2 { grid-column: span 2; }
.fgrid .span-3 { grid-column: 1 / -1; }
.fgrid label { margin-bottom: .4rem; }
.fgrid .req { color: var(--vermelho-600); }
.fgrid textarea { padding: .6rem .85rem; }
.chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip { display: inline-flex; align-items: center; cursor: pointer; margin: 0; font-weight: 500; }
.chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.chip span { display: inline-block; padding: .5rem .95rem; border-radius: 999px; border: 1px solid var(--cinza-300); background: var(--branco); color: var(--cinza-700); font-size: var(--fs-body); transition: all .15s; }
.chip:hover span { border-color: var(--azul-500); color: var(--azul-900); }
.chip input:checked + span { background: var(--azul-700); border-color: var(--azul-700); color: var(--branco); box-shadow: 0 4px 12px rgba(0,56,136,.25); }
.chip input:focus-visible + span { outline: 2px solid var(--azul-500); outline-offset: 2px; }
.empty-inline { background: var(--cinza-050); border: 1px dashed var(--cinza-300); border-radius: 8px; padding: .75rem 1rem; font-size: var(--fs-body); color: var(--cinza-500); }
.form-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; gap: .75rem; padding: 1rem 1.5rem; background: rgba(255,255,255,.95); border: 1px solid var(--cinza-200); border-radius: var(--radius); box-shadow: 0 -4px 20px rgba(0,48,120,.06); z-index: 5; }
.form-actions .btn { padding: .7rem 1.4rem; font-size: var(--fs-body); }
@media (max-width: 1100px) { .fgrid { grid-template-columns: repeat(2, 1fr); } .fgrid .span-2, .fgrid .span-3 { grid-column: 1 / -1; } }
@media (max-width: 700px) { .fgrid { grid-template-columns: 1fr; } .fsec-b { padding: 1rem; } .form-actions { flex-direction: column-reverse; } .form-actions .btn { justify-content: center; } }

/* Painel principal — grelha regular */
.kpis-7 { grid-template-columns: repeat(7, 1fr); }
.kpis-7 .kpi { padding: 1rem 1.1rem; min-height: 118px; }
.kpis-7 .kpi .l { font-size: var(--fs-small); font-weight: 500; color: var(--cinza-500); margin-bottom: .25rem; }
.kpis-7 .kpi .v { font-size: var(--fs-num); }
.kpis-7 .kpi .s { font-size: var(--fs-small); }
@media (max-width: 1500px) { .kpis-7 { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 900px) { .kpis-7 { grid-template-columns: repeat(2, 1fr); } }
.dash-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; align-items: stretch; }
.dash-3 .panel { margin-bottom: 1.25rem; display: flex; flex-direction: column; }
.dash-3 .panel .pb, .dash-3 .panel .table-wrap { flex: 1; }
@media (max-width: 1100px) { .dash-3 { grid-template-columns: 1fr; } }
.table-fixed { table-layout: fixed; }
.table-fixed td { overflow-wrap: anywhere; }
.progress-row { display: flex; align-items: center; gap: .6rem; }
.progress-row .progress { flex: 1; }
.bar-row { padding: .55rem 0; border-bottom: 1px solid var(--cinza-100); }
.bar-row:last-child { border-bottom: 0; }
.bar-head { display: flex; justify-content: space-between; font-size: var(--fs-body); margin-bottom: .35rem; }
.status-row { display: grid; grid-template-columns: 1fr 90px 2.2rem; align-items: center; gap: .75rem; padding: .5rem 0; border-bottom: 1px solid var(--cinza-100); text-decoration: none; color: var(--cinza-900); }
.status-row:last-of-type { border-bottom: 0; }
.status-row:hover { text-decoration: none; background: var(--cinza-050); }
.status-row strong { text-align: right; }
.status-bar { height: 8px; background: var(--cinza-200); border-radius: 999px; overflow: hidden; display: block; }
.status-bar span { display: block; height: 100%; background: var(--azul-500); }
.status-row .badge { justify-self: start; }

/* ===================== Painéis estilo "widgets" ===================== */
.dash-row { display: grid; gap: 1.25rem; margin-bottom: 1.25rem; }
.dash-main { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); align-items: stretch; }
.dash-side { display: grid; gap: 1.25rem; grid-template-rows: auto minmax(min-content, 1fr); }
.dash-row .panel { margin-bottom: 0; }
.dash-row.dash-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dash-row.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pill-tabs { display: inline-flex; background: var(--cinza-100); border-radius: 999px; padding: 3px; font-size: var(--fs-small); }
.pill-tabs span { padding: .25rem .8rem; border-radius: 999px; color: var(--cinza-500); }
.pill-tabs span.active { background: var(--branco); color: var(--azul-700); font-weight: 500; box-shadow: var(--shadow); }
.stat-boxes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .9rem; margin-bottom: 1.25rem; }
.stat { position: relative; display: flex; flex-direction: column; background: var(--cinza-100); border-radius: 10px; padding: 1rem 1.1rem; color: var(--cinza-700); min-height: 108px; transition: background .15s, transform .15s; }
.stat:hover { background: var(--azul-100); text-decoration: none; transform: translateY(-2px); }
.stat-ic { position: absolute; right: .9rem; top: .9rem; width: 34px; height: 34px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; }
.stat-ic svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.stat-ic.blue { background: var(--azul-100); color: var(--azul-700); } .stat-ic.navy { background: #DCE6F5; color: var(--azul-900); }
.stat-ic.green { background: var(--verde-100); color: var(--verde-700); } .stat-ic.yellow { background: var(--amarelo-100); color: #9A6B00; }
.stat-v { font-size: var(--fs-num); font-weight: 600; color: var(--cinza-900); line-height: 1.1; margin-top: .1rem; }
.stat-l { font-size: var(--fs-body); color: var(--cinza-700); margin-top: .25rem; font-weight: 500; }
.stat-s { font-size: var(--fs-small); color: var(--cinza-500); margin-top: .15rem; }
.chart-wrap { padding-top: .25rem; }
.barchart { display: grid; grid-template-columns: 34px 1fr; gap: 0 .5rem; width: 100%; }
.bc-y { display: flex; flex-direction: column; justify-content: space-between; height: var(--h); font-size: var(--fs-small); color: var(--cinza-500); text-align: right; transform: translateY(.45em); }
.bc-plot svg { width: 100%; height: var(--h); display: block; }
.bc-plot .grid { stroke: var(--cinza-200); stroke-width: 1; }
.bc-x { display: grid; margin-top: .6rem; font-size: var(--fs-small); color: var(--cinza-500); text-align: center; }
html[data-scheme="dark"] .bc-plot .grid { stroke: #384766; }
.legend { list-style: none; margin: .75rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .35rem; font-size: var(--fs-small); }
.legend li { display: block; }
.legend li, .legend li a { color: var(--cinza-700); }
.legend li > a, .legend li:not(:has(a)) { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto 2.8rem; align-items: center; gap: .6rem; padding: .3rem 0; border-bottom: 1px solid var(--cinza-100); }
.legend li:last-child > a, .legend li:last-child:not(:has(a)) { border-bottom: 0; }
.legend li a:hover { text-decoration: none; color: var(--azul-700); }
.legend i { width: 10px; height: 10px; border-radius: 3px; flex: 0 0 10px; }
.legend span { flex: 1; }
.legend strong { color: var(--cinza-900); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.legend em { font-style: normal; color: var(--cinza-500); font-size: var(--fs-small); text-align: right; font-variant-numeric: tabular-nums; }
.legend.inline { flex-direction: row; flex-wrap: wrap; gap: .4rem 1.25rem; justify-content: center; margin-top: .5rem; }
.legend.inline li { display: inline-flex; align-items: center; gap: .45rem; }
.donut { display: flex; align-items: center; gap: 1rem 1.25rem; flex-wrap: wrap; justify-content: center; }
.donut .legend { min-width: 0; flex: 1 1 230px; }
.donut .legend { margin: 0; }
.donut-v { font-size: 22px; font-weight: 600; fill: var(--cinza-900); font-family: var(--font); }
.donut-l { font-size: 9px; fill: var(--cinza-500); font-family: var(--font); }
.mini-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; align-items: stretch; }
.panel.mini { padding: 1rem 1.1rem .4rem; display: flex; flex-direction: column; color: var(--cinza-700); overflow: hidden; }
.panel.mini:hover { text-decoration: none; box-shadow: var(--shadow-lg); }
.mini-h { display: flex; justify-content: space-between; align-items: center; font-size: var(--fs-small); color: var(--cinza-500); }
.mini-h svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.mini-v { font-size: var(--fs-title); font-weight: 600; color: var(--cinza-900); margin: .2rem 0 .3rem; }
.spark { width: calc(100% + 2.2rem); margin: 0 -1.1rem; height: 52px; display: block; }
.mini-chart .spark.bars { width: 100%; margin: 0; height: 100%; min-height: 44px; }
.mini-chart { margin-top: .4rem; flex: 1 1 auto; display: flex; align-items: flex-end; min-height: 44px; }
.mini-axis { display: flex; justify-content: space-between; font-size: var(--fs-small); color: var(--cinza-500); margin: .2rem 0 .5rem; }
.panel.mini { padding-bottom: .6rem; }
.ring-t { font-size: var(--fs-small); font-weight: 600; fill: var(--cinza-900); font-family: var(--font); }
.ring { flex: 0 0 auto; }
.pb.center { text-align: center; }
.people { display: flex; flex-direction: column; }
.person { display: flex; align-items: center; gap: .8rem; padding: .6rem 0; border-bottom: 1px solid var(--cinza-100); color: var(--cinza-700); }
.person:last-child { border-bottom: 0; }
.person:hover { text-decoration: none; }
.person-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.an-n { color: var(--cinza-900); font-weight: 500; font-size: var(--fs-body); line-height: 1.25; }
.an-s { color: var(--cinza-500); font-size: var(--fs-small); }
.theme-row { display: grid; grid-template-columns: 10px minmax(0, 1fr) 90px 2rem; align-items: center; gap: .7rem; padding: .55rem 0; border-bottom: 1px solid var(--cinza-100); color: var(--cinza-700); font-size: var(--fs-body); }
.theme-row:last-child { border-bottom: 0; }
.theme-row:hover { text-decoration: none; color: var(--azul-700); }
.theme-row i { width: 10px; height: 10px; border-radius: 50%; display: block; }
.theme-n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.theme-bar { height: 6px; background: var(--cinza-100); border-radius: 999px; overflow: hidden; }
.theme-bar span { display: block; height: 100%; border-radius: 999px; }
.theme-row strong { text-align: right; color: var(--cinza-900); }
.list-rows { display: flex; flex-direction: column; }
.list-row { display: flex; align-items: center; gap: .8rem; padding: .6rem 0; border-bottom: 1px solid var(--cinza-100); color: var(--cinza-700); }
.list-row:last-child { border-bottom: 0; }
.list-row:hover { text-decoration: none; }
.list-row:hover .an-n { color: var(--azul-700); }
.lr-ic { width: 36px; height: 36px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 36px; }
.lr-ic svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lr-ic.blue { background: var(--azul-100); color: var(--azul-700); } .lr-ic.green { background: var(--verde-100); color: var(--verde-700); } .lr-ic.yellow { background: var(--amarelo-100); color: #9A6B00; }
.lr-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.lr-b .an-n, .lr-b .an-s { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lr-r { display: flex; flex-direction: column; align-items: flex-end; gap: .15rem; }

/* avatares */
.avatar { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; font-weight: 500; flex: 0 0 auto; letter-spacing: .02em; }
.avatar.md { width: 40px; height: 40px; font-size: var(--fs-body); }
.avatar.sm { width: 34px; height: 34px; font-size: var(--fs-small); }
.avatar.xs { width: 26px; height: 26px; font-size: var(--fs-small); margin-right: -6px; box-shadow: 0 0 0 2px var(--branco); }
.avatar-name { display: inline-flex; align-items: center; gap: .65rem; }
.avatar-stack { display: inline-flex; align-items: center; }
.avatar-stack .avatar.xs:last-child { margin-right: 0; }
.avatar-name > span { display: flex; flex-direction: column; min-width: 0; }
.row-link:hover { text-decoration: none; } .row-link:hover .an-n { color: var(--azul-700); }

/* tabelas: linhas mais arejadas e ações discretas */
.table td { color: var(--cinza-700); }
.table td a:not(.btn):not(.row-link) { color: var(--azul-700); font-weight: 500; }
.table tr:hover td { background: var(--cinza-050); }
.table .btn.sm.secondary { border-radius: 8px; }
.table-wrap { border-radius: 0 0 var(--radius) var(--radius); }
.panel > .table-wrap:first-child .table th { border-top: 0; }

/* formulários: campos estilo Lineone */
input[type=text], input[type=email], input[type=password], input[type=number], input[type=date], input[type=search], input[type=url], input[type=tel], select, textarea { transition: border-color .15s, box-shadow .15s; }
input:not([type=checkbox]):not([type=radio]):hover, select:hover, textarea:hover { border-color: #94A3B8; }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--azul-700); box-shadow: none; }
select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236E7A90' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat: no-repeat; background-position: right .7rem center; padding-right: 2.2rem; }
input[type=checkbox], input[type=radio] { accent-color: var(--azul-700); width: 16px; height: 16px; }
.field > label, .fgrid label { color: var(--cinza-700); font-size: var(--fs-body); font-weight: 400; }
.help { color: var(--cinza-500); font-size: var(--fs-body); }
.fsec-ic { border-radius: 50%; }
.filters label { font-size: var(--fs-body); color: var(--cinza-500); margin-bottom: .35rem; }
.filters .btn { border-radius: 8px; }
.alert { border: 0; box-shadow: var(--shadow); }


@media (max-width: 1250px) { .stat-boxes { grid-template-columns: repeat(2, 1fr); } .dash-main { grid-template-columns: 1fr; } .dash-side { grid-template-rows: auto auto; } .mini-chart .spark.bars { height: 60px; } .dash-row.dash-3 { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .dash-row.cols-2, .mini-cards { grid-template-columns: 1fr; } .donut { flex-direction: column; align-items: flex-start; } }
@media (max-width: 600px) { .stat-boxes { grid-template-columns: 1fr; } }

.conv-item { display: flex !important; align-items: center; gap: .8rem; padding: .75rem 1.25rem !important; }
.conv-item .conv-b { flex: 1; min-width: 0; }
.conv-item .conv-b strong { color: var(--cinza-900); font-weight: 500; }
.conv-list a { border-bottom: 1px solid var(--cinza-100); }
.conv-list a:hover, .conv-list a.active { background: var(--cinza-050); }
.msg.mine { background: var(--azul-700); color: var(--branco); }
.msg.mine .meta, .msg.mine .ctx { color: rgba(255,255,255,.75); }
.msg { border-radius: 14px 14px 14px 4px; }
.msg.mine { border-radius: 14px 14px 4px 14px; }
.timeline li::before { background: var(--verde-600); }

/* ===================== Toolbar de página, cartões de utilizador, tags ===================== */
.hidden { display: none !important; }
.toolbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin: -.25rem 0 1.25rem; flex-wrap: wrap; }
.toolbar-r { display: flex; align-items: center; gap: .6rem; }
.tsearch { display: flex; align-items: center; gap: .5rem; background: var(--branco); border: 1px solid var(--cinza-300); border-radius: 999px; padding: 0 .9rem; height: 40px; width: 260px; margin: 0; font-weight: 400; }
.tsearch svg { width: 18px; height: 18px; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; flex: 0 0 18px; }
.tsearch input[type=search] { border: 0; padding: 0; height: 100%; background: transparent; box-shadow: none; }
.tsearch input[type=search]:focus { outline: 0; border: 0; box-shadow: none; }
.tsearch:focus-within { border-color: var(--azul-700); box-shadow: 0 0 0 3px var(--azul-100); }
.seg { display: inline-flex; background: var(--branco); border: 1px solid var(--cinza-300); border-radius: 8px; overflow: hidden; }
.seg button { border: 0; background: transparent; width: 38px; height: 38px; cursor: pointer; color: var(--cinza-500); display: inline-flex; align-items: center; justify-content: center; }
.seg button + button { border-left: 1px solid var(--cinza-200); }
.seg button.active { background: var(--azul-100); color: var(--azul-700); }
.seg svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.icon-btn.sm { width: 32px; height: 32px; font-size: var(--fs-body); letter-spacing: .05em; color: var(--cinza-500); }
.user-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; margin-bottom: 1rem; }
.ucard { position: relative; background: var(--branco); border-radius: 10px; box-shadow: var(--shadow); padding: 1.5rem 1.25rem 1.25rem; display: flex; flex-direction: column; align-items: center; text-align: center; transition: box-shadow .15s, transform .15s; }
.ucard:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.ucard-menu { position: absolute; top: .6rem; right: .6rem; }
.ucard-avatar { position: relative; margin: .5rem 0 .9rem; }
.ucard-avatar .on { position: absolute; right: 4px; bottom: 4px; width: 14px; height: 14px; border-radius: 50%; background: var(--verde-600); border: 2.5px solid var(--branco); }
.ucard-avatar.off .avatar { filter: grayscale(1); opacity: .6; }
.avatar.xl { width: 80px; height: 80px; font-size: var(--fs-title); border-radius: 50%; }
.ucard h3 { margin: 0 0 .15rem; font-size: var(--fs-body); font-weight: 600; color: var(--cinza-900); }
.ucard-sub { margin: 0 0 .8rem; color: var(--cinza-500); font-size: var(--fs-body); }
.tags { display: flex; flex-wrap: wrap; justify-content: center; gap: .35rem; min-height: 1.6rem; }
.tag { display: inline-block; padding: .18rem .6rem; border-radius: 999px; font-size: var(--fs-small); font-weight: 500; line-height: 1.4; }
.tag-blue { background: var(--azul-100); color: var(--azul-700); } .tag-green { background: var(--verde-100); color: var(--verde-700); }
.tag-yellow { background: var(--amarelo-100); color: #9A6B00; } .tag-grey { background: var(--cinza-100); color: var(--cinza-700); } .tag-red { background: var(--vermelho-100); color: var(--vermelho-600); }
.ucard-meta { margin: .8rem 0 1.1rem; display: flex; flex-direction: column; gap: .1rem; max-width: 100%; }
.ucard-meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ucard-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; width: 100%; margin-top: auto; }
.ucard-actions .btn { justify-content: center; padding: .6rem .5rem; }
.btn svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.btn.soft { background: var(--cinza-100); color: var(--cinza-700); }
.btn.soft:hover { background: var(--cinza-200); color: var(--cinza-900); }
.dropdown .btn-link.danger { color: var(--vermelho-600); }
@media (max-width: 1400px) { .user-cards { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1000px) { .user-cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .user-cards { grid-template-columns: 1fr; } .tsearch { width: 100%; } .toolbar-r { width: 100%; } }

/* Cabeçalho: seletor de paleta e modo escuro */
.theme-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; padding: .5rem .6rem .7rem; }
.theme-grid button { width: 34px; height: 34px; border-radius: 50%; border: 3px solid transparent; cursor: pointer; padding: 0; position: relative; }
.theme-grid button.active { border-color: var(--branco); box-shadow: 0 0 0 2px var(--p-700); }
.theme-grid button span { position: absolute; inset: 0; border-radius: 50%; }
.dd-title { padding: .6rem .8rem .2rem; font-size: var(--fs-small); letter-spacing: .06em; text-transform: uppercase; color: var(--cinza-500); font-weight: 600; }
.apps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: .35rem; padding: .4rem; min-width: 280px; }
.apps-grid a { display: flex !important; flex-direction: column; align-items: center; gap: .4rem; padding: .7rem .4rem !important; font-size: var(--fs-small) !important; text-align: center !important; }
.apps-grid a svg { width: 26px; height: 26px; fill: currentColor; color: var(--p-700); }
.icon-btn .sun, .icon-btn .moon { position: absolute; transition: transform .3s, opacity .3s; }
.icon-btn .moon { opacity: 0; transform: rotate(-90deg) scale(.6); }
html[data-scheme="dark"] .icon-btn .sun { opacity: 0; transform: rotate(90deg) scale(.6); }
html[data-scheme="dark"] .icon-btn .moon { opacity: 1; transform: none; }
.icon-btn .sun { color: #F59E0B; }
.icon-btn .pal { color: #0EA5E9; }
code, kbd, pre { font-family: var(--font); background: var(--cinza-100); border-radius: 5px; padding: .05rem .4rem; font-size: .9em; color: var(--cinza-700); }

/* ===================== Área por consultor ===================== */
.profile-head { display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding: 1.25rem 1.5rem; }
.ph-main { display: flex; align-items: center; gap: 1.1rem; flex: 1 1 auto; min-width: 0; }
.ph-ring { flex: 0 0 auto; }
@media (max-width: 800px) { .profile-head { flex-wrap: wrap; } }
.ph-main h2 { margin: 0 0 .15rem; font-weight: 600; display: flex; align-items: center; gap: .6rem; }
.ph-ring { display: flex; align-items: center; gap: .75rem; }
.stat-boxes.six { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.stat-boxes.six .stat { min-height: 92px; padding: .9rem 1rem; }
.tabs { display: flex; gap: .25rem; border-bottom: 1px solid var(--cinza-200); margin: 1.5rem 0 1.25rem; }
.tabs a { padding: .65rem 1rem; color: var(--cinza-500); font-weight: 500; border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; align-items: center; gap: .4rem; }
.tabs a:hover { color: var(--azul-700); text-decoration: none; }
.tabs a.active { color: var(--azul-700); border-bottom-color: var(--azul-700); }
.tabs .count { background: var(--cinza-100); color: var(--cinza-700); border-radius: 999px; padding: 0 .5rem; font-size: var(--fs-small); }
.company-block > .ph h3 { margin: 0; }
.proj-block { padding: 1rem 1.25rem 1.25rem; border-top: 1px solid var(--cinza-100); }
.proj-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: .9rem; flex-wrap: wrap; }
.doc-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; }
.doc-card { display: flex; flex-direction: column; gap: .4rem; background: var(--cinza-050); border: 1px solid var(--cinza-200); border-radius: 10px; padding: 1rem; color: var(--cinza-700); transition: transform .15s, box-shadow .15s, border-color .15s; }
.doc-card:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-lg); border-color: var(--azul-100); }
.doc-card.draft { border-style: dashed; }
.dc-top { display: flex; justify-content: space-between; align-items: center; }
.doc-card strong { color: var(--cinza-900); font-weight: 600; font-size: var(--fs-body); }
.doc-card .badge { align-self: flex-start; }
.dc-by { font-size: var(--fs-small); line-height: 1.45; }
.dc-by b { color: var(--cinza-900); font-weight: 600; }
.seg .seg-a { padding: 0 .9rem; height: 38px; display: inline-flex; align-items: center; font-size: var(--fs-body); color: var(--cinza-700); border-left: 1px solid var(--cinza-200); }
.seg .seg-a:first-child { border-left: 0; }
.seg .seg-a:hover { text-decoration: none; background: var(--cinza-100); }
.seg .seg-a.active { background: var(--azul-100); color: var(--azul-700); font-weight: 500; }
.work-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; }
.wk { margin: 0; padding: 1.25rem; display: flex; flex-direction: column; gap: 1rem; }
.wk-head { display: flex; align-items: center; gap: .8rem; }
.wk-id { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.wk-id .an-n { font-size: var(--fs-body); font-weight: 600; }
.wk-stats { display: grid; grid-template-columns: repeat(5, 1fr); gap: .5rem; }
.wk-stats div { background: var(--cinza-100); border-radius: 8px; padding: .55rem .4rem; text-align: center; display: flex; flex-direction: column; }
.wk-stats strong { font-size: var(--fs-h); color: var(--cinza-900); font-weight: 600; line-height: 1.1; }
.wk-stats span { font-size: var(--fs-small); color: var(--cinza-500); }
.wk-stats .y strong { color: #9A6B00; } .wk-stats .b strong { color: var(--azul-700); } .wk-stats .g strong { color: var(--verde-700); }
.wk-list { display: flex; flex-direction: column; }
.wk-row { display: flex; align-items: center; gap: .6rem; padding: .45rem 0; border-bottom: 1px solid var(--cinza-100); color: var(--cinza-700); font-size: var(--fs-body); }
.wk-row:hover { text-decoration: none; color: var(--azul-700); }
.wk-row .avatar.xs { margin-right: 0; }
.wk-row-t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wk-foot { border-top: 1px solid var(--cinza-100); padding-top: .6rem; }
@media (max-width: 1250px) { .stat-boxes.six { grid-template-columns: repeat(3, 1fr); } .doc-grid { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .work-cards { grid-template-columns: 1fr; } .wk-stats { grid-template-columns: repeat(3, 1fr); } .tabs { overflow-x: auto; } }

/* ===================== Conta (estilo Account Setting) ===================== */
.acc-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 1.25rem; align-items: start; }
.acc-side { padding: 1.25rem; margin: 0; }
.acc-user { display: flex; align-items: center; gap: .8rem; margin-bottom: 1.1rem; }
.acc-user strong { display: block; color: var(--cinza-900); font-weight: 600; }
.acc-user span { font-size: var(--fs-small); color: var(--cinza-500); }
.acc-nav { display: flex; flex-direction: column; gap: .2rem; }
.acc-nav a, .acc-nav .acc-link { display: flex; align-items: center; gap: .7rem; padding: .7rem .9rem; border-radius: 8px; color: var(--cinza-700); font-weight: 500; font-size: var(--fs-body); background: none; border: 0; width: 100%; text-align: left; cursor: pointer; font-family: inherit; }
.acc-nav a:hover, .acc-nav .acc-link:hover { background: var(--cinza-100); color: var(--azul-700); text-decoration: none; }
.acc-nav a.active { background: var(--azul-700); color: var(--branco); }
.acc-nav svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.acc-main { margin: 0; padding: 0; }
.acc-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.5rem; border-bottom: 1px solid var(--cinza-200); flex-wrap: wrap; }
.acc-head h2 { margin: 0; font-size: var(--fs-h); font-weight: 500; }
.acc-actions { display: flex; gap: .6rem; }
.acc-section { padding: 1.4rem 1.5rem; border-bottom: 1px solid var(--cinza-200); }
.acc-section:last-child { border-bottom: 0; }
.acc-section h3 { margin: 0 0 .9rem; font-size: var(--fs-body); font-weight: 500; }
.acc-avatar { display: flex; align-items: center; gap: 1rem; }
.acc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.5rem; }
.acc-grid .span-2 { grid-column: 1 / -1; }
.acc-grid label { font-size: var(--fs-body); margin-bottom: .35rem; }
.input-ic { position: relative; }
.input-ic svg { position: absolute; left: .85rem; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; }
.input-ic input { padding-left: 2.6rem; border-radius: 999px; height: 44px; }
.input-ic input:disabled { background: var(--cinza-050); color: var(--cinza-500); }
.acc-row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-top: 1rem; margin-top: 1rem; border-top: 1px dashed var(--cinza-200); flex-wrap: wrap; }
.acc-row strong { display: block; font-weight: 500; color: var(--cinza-900); }
@media (max-width: 1000px) { .acc-layout { grid-template-columns: 1fr; } .acc-grid { grid-template-columns: 1fr; } }

/* fotografias de perfil */
.avatar.photo { overflow: hidden; background: var(--cinza-200) !important; }
.avatar.photo img, .rail-avatar.photo img, .avatar-btn.photo img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 50%; }
.rail-avatar.photo, .avatar-btn.photo { padding: 0; overflow: visible; background: var(--cinza-200); }
.avatar-btn.photo { overflow: hidden; }
.avatar-edit { position: relative; display: inline-block; cursor: pointer; margin: 0; }
.avatar-edit input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.avatar-pen { position: absolute; right: -2px; bottom: -2px; width: 28px; height: 28px; border-radius: 50%; background: var(--branco); border: 1px solid var(--cinza-200); box-shadow: var(--shadow); display: inline-flex; align-items: center; justify-content: center; color: var(--cinza-700); }
.avatar-pen svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.avatar-edit:hover .avatar-pen { color: var(--azul-700); }
.acc-avatar-actions { display: flex; gap: .5rem; margin-top: .7rem; }
.acc-avatar-actions label.btn { margin: 0; }

/* ---- cabeçalho de página (título | breadcrumb) e topo do painel lateral, como no Lineone ---- */
.page-head { display: flex; align-items: center; gap: 1rem; min-height: 40px; }
.page-head h1 { margin: 0; }
.ph-sep { width: 1px; height: 22px; background: var(--cinza-300); }
.page-head .breadcrumb { margin: 0; font-size: var(--fs-body); color: var(--cinza-500); display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.page-head .breadcrumb a { color: var(--azul-700); }
.page-head .breadcrumb a:hover { color: var(--azul-900); text-decoration: none; }
.panel-top { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem .6rem; min-height: var(--header-h); }
.panel-title { font-size: var(--fs-body); color: var(--cinza-900); font-weight: 500; }
.panel-collapse svg { width: 18px; height: 18px; }
.panel-collapse { color: var(--cinza-500); }
@media (max-width: 900px) { .panel-top { display: none; } .panel-sec h3 { display: block; font-size: var(--fs-small); text-transform: uppercase; letter-spacing: .06em; color: var(--cinza-500); margin: .6rem .35rem .3rem; font-weight: 600; } .page-head { flex-wrap: wrap; } .ph-sep { display: none; } }
.rail-avatar.photo { background: transparent; }

/* Escala tipográfica aplicada a tudo o que escapa às classes */
.table, .table td, .table th, input, select, textarea, button, .btn, .badge, .tag, .help, .breadcrumb, .small { font-size: var(--fs-body); }
.table th, .badge, .tag, .help, .small, .breadcrumb, .an-s, .stat-s, .ucard-sub, .legend em, .bc-x, .bc-y, .mini-axis, .notes, .muted.small, .panel-user .role, .dropdown .dd-head span, .lr-r .an-s, .wk-stats span, .acc-user span, .tabs .count, .dc-by, .kpi .s, .ucard-meta, .wk-foot, .legend { font-size: var(--fs-small); }
.stat-l, .kpi .l, .mini-h, .theme-row, .panel-user, .legend span, .legend strong, label, .fgrid label, .field > label, .filters label, .panel-sec li a, .acc-nav a, .acc-nav .acc-link, .tabs a, .ucard-sub, .dropdown a, .dropdown .btn-link, .page-head .breadcrumb { font-size: var(--fs-label); }
.btn.sm { font-size: var(--fs-small); }
.stat-v, .kpi .v, .mini-v, .wk-stats strong, .donut-v { font-size: var(--fs-num); font-weight: 600; }
.ucard h3, .panel-title, .acc-head h2, .proj-head .an-n, .person .an-n, .wk-id .an-n, .profile-head h2, .card.faq h3, .admin-card h3, .fsec-h h2, .doc-section h2, .acc-section h3 { font-size: var(--fs-h); }
.avatar.xl { font-size: var(--fs-num); }

/* iniciais dos avatares proporcionais ao círculo */
.avatar.xs { font-size: 10px; } .avatar.sm { font-size: 12px; } .avatar.md { font-size: 14px; } .avatar.xl { font-size: 26px; }
.rail-avatar, .avatar-btn { font-size: 13px; }
.badge, .tag { padding: .25rem .5rem; letter-spacing: .02em; }

/* ===================== Empresas: cartões e ficha ===================== */
.avatar.square { border-radius: 10px; }
.avatar.lg { width: 56px; height: 56px; font-size: 18px; }
.avatar.photo.square img { border-radius: 10px; object-fit: contain; background: var(--branco); padding: 4px; }
.co-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; }
.co-card { background: var(--branco); border-radius: 10px; box-shadow: var(--shadow); padding: 1.25rem; color: var(--cinza-700); display: flex; flex-direction: column; gap: .9rem; transition: transform .15s, box-shadow .15s; }
.co-card:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.co-head { display: flex; align-items: center; gap: .9rem; }
.co-id { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.co-id strong { color: var(--cinza-900); font-weight: 600; font-size: var(--fs-h); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.co-head .tag { align-self: flex-start; }
.co-meta { display: flex; flex-wrap: wrap; gap: .4rem 1.1rem; font-size: var(--fs-label); color: var(--cinza-700); border-top: 1px solid var(--cinza-100); padding-top: .8rem; }
.co-meta span { display: inline-flex; align-items: center; gap: .35rem; }
.co-meta svg { width: 14px; height: 14px; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.co-sub { color: var(--cinza-500); margin: .1rem 0 .5rem; }
.co-contacts { display: flex; flex-wrap: wrap; gap: .35rem 1.1rem; font-size: var(--fs-label); }
.co-contacts a, .co-contacts span { display: inline-flex; align-items: center; gap: .35rem; color: var(--cinza-700); }
.co-contacts a:hover { color: var(--azul-700); text-decoration: none; }
.co-contacts svg { width: 14px; height: 14px; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.dl { display: grid; grid-template-columns: minmax(140px, 38%) 1fr; gap: .55rem 1rem; margin: 0; }
.dl dt { color: var(--cinza-500); font-size: var(--fs-label); }
.dl dd { margin: 0; color: var(--cinza-900); }
.toolbar.toolbar form, form.toolbar { margin-bottom: 1.25rem; }
@media (max-width: 1250px) { .co-cards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 700px) { .co-cards { grid-template-columns: 1fr; } .dl { grid-template-columns: 1fr; } }

/* ficha com menu lateral (empresas / conta) */
.acc-section.flush { padding: 0; }
.acc-section.flush .table-wrap { border-radius: 0; }
.acc-section.flush .table th { border-top: 0; }
.acc-nav .nav-count { margin-left: auto; background: var(--cinza-100); color: var(--cinza-700); border-radius: 999px; padding: 0 .5rem; font-size: var(--fs-small); }
.acc-nav a.active .nav-count { background: rgba(255,255,255,.25); color: var(--branco); }
.acc-sep { display: block; height: 1px; background: var(--cinza-200); margin: .5rem .4rem; }
.acc-facts { border-top: 1px solid var(--cinza-200); margin-top: .9rem; padding-top: .9rem; display: flex; flex-direction: column; gap: .35rem; }
.acc-facts div { display: flex; justify-content: space-between; font-size: var(--fs-label); color: var(--cinza-500); }
.acc-facts strong { color: var(--cinza-900); font-weight: 600; }
.acc-contacts { border-top: 1px solid var(--cinza-200); margin-top: .9rem; padding-top: .9rem; display: flex; flex-direction: column; gap: .45rem; font-size: var(--fs-label); }
.acc-contacts a, .acc-contacts span { display: flex; align-items: flex-start; gap: .5rem; color: var(--cinza-700); line-height: 1.35; }
.acc-contacts a:hover { color: var(--azul-700); text-decoration: none; }
.acc-contacts svg { width: 14px; height: 14px; flex: 0 0 14px; margin-top: .1rem; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.acc-section .dl { max-width: 720px; }

.seg .seg-a, .seg button { font-size: var(--fs-label); }
.toolbar-l { display: flex; align-items: center; gap: .9rem; flex-wrap: wrap; }
.toolbar-count { font-size: var(--fs-label); color: var(--cinza-500); }
.tsearch input[type=search] { font-size: var(--fs-label); }
.ucard .avatar.square.xl { border-radius: 16px; }

.tselect { height: 40px; border-radius: 999px; font-size: var(--fs-label); padding: 0 2.2rem 0 1rem; width: auto; max-width: 220px; }
.ucard-progress { display: flex; align-items: center; gap: .6rem; width: 100%; margin-top: .9rem; }
.ucard-progress .progress { flex: 1; }
.ucard-progress > span { font-size: var(--fs-label); color: var(--cinza-700); font-weight: 600; min-width: 2.6rem; text-align: right; }
.ucard-team { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; }
.ucard-team .avatar-stack .avatar.xs:last-child { margin-right: 0; }
.ucard-meta { gap: .35rem; }
.toolbar-r { flex-wrap: wrap; justify-content: flex-end; margin-left: auto; }

.dcard-ic { width: 80px; height: 80px; border-radius: 16px; display: inline-flex; align-items: center; justify-content: center; margin: .5rem 0 .9rem; }
.dcard-ic svg { width: 34px; height: 34px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.dcard-ic.blue { background: var(--azul-100); color: var(--azul-700); } .dcard-ic.green { background: var(--verde-100); color: var(--verde-700); } .dcard-ic.yellow { background: var(--amarelo-100); color: #9A6B00; }
.ucard-team .avatar.xs { margin-right: 0; }

/* ===== Detalhe do documento ===== */
.doc-note { display: flex; gap: .7rem; align-items: flex-start; background: var(--amarelo-100); color: #6B4E00; border-radius: 10px; padding: .8rem 1rem; margin-bottom: 1.25rem; font-size: var(--fs-body); }
.doc-note svg { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; margin-top: 1px; }
.doc-hero { display: flex; align-items: center; gap: 1.25rem; padding: 1.25rem 1.5rem; }
.doc-hero .dcard-ic { margin: 0; width: 64px; height: 64px; flex: none; }
.doc-hero .dcard-ic svg { width: 28px; height: 28px; }
.doc-hero-b { flex: 1; min-width: 0; }
.doc-hero-b h2 { margin: .35rem 0 .15rem; font-size: var(--fs-title); font-weight: 600; color: var(--cinza-900); }
.doc-hero-b p { margin: 0; color: var(--cinza-500); }
.doc-hero-r { display: flex; align-items: center; gap: .8rem; padding-left: 1.25rem; border-left: 1px solid var(--cinza-200); }
.doc-hero-r strong { display: block; color: var(--cinza-900); font-weight: 600; }
.doc-hero-r span { font-size: var(--fs-label); color: var(--cinza-500); }
.doc-steps { display: grid; grid-template-columns: repeat(5, 1fr); padding: 1rem 1.25rem; gap: .5rem; }
.doc-step { display: flex; align-items: center; gap: .6rem; position: relative; color: var(--cinza-500); font-size: var(--fs-label); }
.doc-step:not(:last-child)::after { content: ""; flex: 1; height: 2px; background: var(--cinza-200); border-radius: 2px; margin-right: .5rem; }
.doc-step.done:not(:last-child)::after { background: var(--verde-600); }
.ds-n { width: 28px; height: 28px; border-radius: 50%; flex: none; display: inline-flex; align-items: center; justify-content: center; background: var(--cinza-100); color: var(--cinza-500); font-weight: 600; font-size: var(--fs-label); }
.ds-n svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.ds-l { white-space: nowrap; }
.doc-step.done .ds-n { background: var(--verde-600); color: #fff; }
.doc-step.done { color: var(--cinza-700); }
.doc-step.now .ds-n { background: var(--azul-700); color: #fff; box-shadow: 0 0 0 4px rgba(var(--p-rgb), .15); }
.doc-step.now { color: var(--cinza-900); font-weight: 600; }
.dshow-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 1.25rem; align-items: start; }
.doc-main > .panel, .doc-side > .panel { margin-bottom: 1.25rem; }
.next-step > p { margin: 0 0 1rem; color: var(--cinza-700); line-height: 1.6; }
.ns-actions { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.ns-actions form { margin: 0; }
.ns-foot { margin-top: 1.1rem; padding-top: .9rem; border-top: 1px solid var(--cinza-100); font-size: var(--fs-label); color: var(--cinza-500); display: flex; flex-wrap: wrap; gap: .3rem .8rem; align-items: center; }
.inline-form { display: inline; margin: 0; }
.missing-list { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem 1rem; }
.missing-list li a { display: flex; align-items: center; gap: .5rem; color: var(--cinza-700); }
.missing-list li a::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--amarelo-500); flex: none; }
.missing-list li a:hover { color: var(--azul-700); }
.missing-more { margin: -.4rem 0 1rem; } .missing-more summary { cursor: pointer; color: var(--azul-700); font-size: var(--fs-label); margin-bottom: .5rem; }
.doc-upload { margin-top: 1.1rem; padding: 1rem; border: 1px dashed var(--cinza-300); border-radius: 10px; background: var(--cinza-050); }
.doc-upload .field { margin-bottom: .8rem; }
.ver-list { display: flex; flex-direction: column; }
.ver { padding: 1rem 1.5rem; border-top: 1px solid var(--cinza-100); }
.ver:first-child { border-top: 0; }
.ver.current { background: rgba(var(--p-rgb), .035); }
.ver-h, .ver-signed { display: flex; align-items: center; gap: .9rem; }
.ver-n { width: 40px; height: 40px; border-radius: 10px; flex: none; display: inline-flex; align-items: center; justify-content: center; background: var(--azul-100); color: var(--azul-700); font-weight: 600; }
.ver-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.ver-b strong { color: var(--cinza-900); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ver-b > span { font-size: var(--fs-label); color: var(--cinza-500); }
.ver-a { display: flex; gap: .4rem; flex: none; }
.ver-signed { margin: .75rem 0 0 calc(40px + .9rem); padding: .7rem .9rem; border-radius: 10px; background: var(--verde-100); }
.vs-ic { width: 30px; height: 30px; border-radius: 8px; background: var(--verde-600); color: #fff; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.vs-ic svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ver-signed .btn.soft { background: rgba(255,255,255,.7); }
.ver-upload { margin: .75rem 0 0 calc(40px + .9rem); }
.ver-upload summary { cursor: pointer; color: var(--azul-700); font-size: var(--fs-label); display: inline-flex; align-items: center; gap: .4rem; list-style: none; }
.ver-upload summary::-webkit-details-marker { display: none; }
.ver-upload summary svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ver-upload .doc-upload { margin-top: .7rem; }
.dl-stack { grid-template-columns: 1fr; gap: .2rem; }
.dl-stack dd { margin-bottom: .7rem; }
.dl-stack dd:last-child { margin-bottom: 0; }
.help-steps ol { margin: 0 0 .9rem; padding-left: 1.1rem; color: var(--cinza-700); line-height: 1.7; }
.help-steps p { margin: 0; font-size: var(--fs-label); color: var(--cinza-500); line-height: 1.6; }
html[data-scheme="dark"] .doc-note { background: rgba(248,183,18,.12); color: #F8D27A; }
html[data-scheme="dark"] .doc-hero-r { border-left-color: #313E59; }
html[data-scheme="dark"] .ver { border-top-color: #313E59; }
html[data-scheme="dark"] .ver-signed { background: rgba(59,154,54,.14); }
html[data-scheme="dark"] .ver-signed .btn.soft { background: rgba(255,255,255,.08); }
html[data-scheme="dark"] .doc-upload { background: rgba(255,255,255,.03); border-color: #3E4B66; }
html[data-scheme="dark"] .ds-n { background: #313E59; }
html[data-scheme="dark"] .doc-step:not(:last-child)::after { background: #313E59; }
html[data-scheme="dark"] .doc-step.done:not(:last-child)::after { background: var(--verde-600); }
@media (max-width: 1100px) { .dshow-layout { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .doc-steps { grid-template-columns: 1fr; } .doc-step::after { display: none; } .doc-hero { flex-wrap: wrap; } .doc-hero-r { border-left: 0; padding-left: 0; } .missing-list { grid-template-columns: 1fr; } .ver-h, .ver-signed { flex-wrap: wrap; } .ver-signed, .ver-upload { margin-left: 0; } }
.missing-list li a { align-items: flex-start; }
.missing-list li a::before { margin-top: .5em; }
.ver-a .btn, .ns-actions .btn { font-size: var(--fs-body) !important; }

/* ===== Ações destrutivas / gestão ===== */
.danger-zone { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.25rem; border: 1px solid var(--vermelho-100); background: rgba(220,38,38,.03); border-radius: 10px; padding: 1rem 1.1rem; flex-wrap: wrap; }
.dz-b { flex: 1; min-width: 240px; display: flex; flex-direction: column; gap: .25rem; }
.dz-b strong, .dm-item strong { color: var(--cinza-900); font-weight: 500; }
.dz-b span, .dm-item span { font-size: var(--fs-label); color: var(--cinza-500); line-height: 1.55; }
.dz-confirm > summary { list-style: none; display: inline-flex; }
.dz-confirm > summary::-webkit-details-marker { display: none; }
.dz-confirm[open] > summary { display: none; }
.dz-confirm form { display: flex; flex-direction: column; gap: .45rem; min-width: 260px; }
.dz-confirm label { font-size: var(--fs-label); color: var(--cinza-700); }
.dz-row { display: flex; gap: .5rem; }
.dz-row input { flex: 1; min-width: 0; }
.doc-manage { display: flex; flex-direction: column; gap: 1rem; }
.dm-item { display: flex; flex-direction: column; gap: .7rem; }
.dm-item > div { display: flex; flex-direction: column; gap: .2rem; }
.dm-item + .dm-item { padding-top: 1rem; border-top: 1px solid var(--cinza-100); }
.dm-item form { margin: 0; }
.dm-item .btn { width: 100%; }
.dm-item .dz-confirm > summary { width: 100%; }
.dm-item .dz-confirm form { min-width: 0; }
.dm-item .dz-row .btn { width: auto; }
.row-missing td { background: var(--cinza-050); }
html[data-scheme="dark"] .danger-zone { border-color: rgba(220,38,38,.35); background: rgba(220,38,38,.06); }
html[data-scheme="dark"] .dm-item + .dm-item { border-top-color: #313E59; }
html[data-scheme="dark"] .row-missing td { background: rgba(255,255,255,.02); }

/* ===== Gestor do website (CMS) ===== */
.cms { grid-template-columns: 280px minmax(0, 1fr); }
.cms-side { position: sticky; top: calc(var(--header-h) + 1rem); max-height: calc(100vh - var(--header-h) - 2rem); overflow: auto; }
.cms-side-h { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .8rem; padding: 0 .3rem; }
.cms-side-h strong { color: var(--cinza-900); font-weight: 600; }
.cms-side-h span { font-size: var(--fs-small); color: var(--cinza-500); }
.cms-nav a { padding: .6rem .8rem; }
.cms-nav a span:first-of-type { flex: 1; }
.cms-nav a.active .nav-count { background: rgba(255,255,255,.2); color: #fff; }
.cms-tips { margin-top: 1.1rem; padding: .9rem 1rem; border-radius: 10px; background: var(--cinza-050); font-size: var(--fs-label); color: var(--cinza-700); }
.cms-tips strong { display: block; margin-bottom: .4rem; font-weight: 500; color: var(--cinza-900); }
.cms-tips ul { margin: 0; padding-left: 1rem; line-height: 1.6; }
.cms-tips code, .cms code { font-size: var(--fs-small); background: var(--azul-050); color: var(--azul-700); padding: .05rem .3rem; border-radius: 4px; }
.cms-main { overflow: visible; }
.cms-title { display: flex; align-items: center; gap: .8rem; }
.cms-title-ic { width: 40px; height: 40px; border-radius: 10px; background: var(--azul-100); color: var(--azul-700); display: inline-flex; align-items: center; justify-content: center; }
.cms-title-ic svg, .cms-nav svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.cms-title h2 { margin: 0; }
.cms-title span { font-size: var(--fs-small); color: var(--cinza-500); }
.cms .acc-section h3 { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: .06em; color: var(--cinza-500); font-weight: 600; margin-bottom: 1rem; }
.cms-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.25rem; }
.cms-field { display: flex; flex-direction: column; gap: .35rem; min-width: 0; }
.cms-field.wide { grid-column: 1 / -1; }
.cms-field > label { display: flex; align-items: center; gap: .5rem; color: var(--cinza-700); font-size: var(--fs-body); font-weight: 400; }
.cms-field input[type=text], .cms-field input[type=email], .cms-field textarea { width: 100%; }
.cms-field textarea { resize: vertical; min-height: 76px; line-height: 1.55; }
.cms-hint { font-size: var(--fs-small); color: var(--cinza-500); line-height: 1.5; }
.cms-pill { font-size: var(--fs-small); background: var(--amarelo-100); color: #8A6100; border-radius: 999px; padding: .05rem .5rem; cursor: help; }
.cms-media { display: flex; gap: 1rem; align-items: center; border: 1px solid var(--cinza-200); border-radius: 10px; padding: .8rem; }
.cms-thumb { width: 180px; height: 110px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.cms-thumb.dark { background: var(--azul-900); }
.cms-thumb.light { background: #fff; background-image: linear-gradient(45deg, #EEF2F7 25%, transparent 25%, transparent 75%, #EEF2F7 75%), linear-gradient(45deg, #EEF2F7 25%, transparent 25%, transparent 75%, #EEF2F7 75%); background-size: 16px 16px; background-position: 0 0, 8px 8px; border: 1px solid var(--cinza-200); }
.cms-thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }
.cms-thumb.dark img[src*=".jpg"], .cms-thumb.dark img[src*="imagem-site/hero"], .cms-thumb.dark img[src*="imagem-site/banner"], .cms-thumb.dark img[src*="imagem-site/stats"] { width: 100%; height: 100%; object-fit: cover; }
.cms-thumb video { width: 100%; height: 100%; object-fit: cover; }
.cms-empty { color: rgba(255,255,255,.6); font-size: var(--fs-label); }
.cms-media-b { display: flex; flex-direction: column; gap: .45rem; min-width: 0; }
.cms-check { font-weight: 400; font-size: var(--fs-label); color: var(--cinza-700); }
.cms-bar { position: sticky; bottom: 0; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .9rem 1.5rem; background: rgba(255,255,255,.97); border-top: 1px solid var(--cinza-200); border-radius: 0 0 var(--radius) var(--radius); flex-wrap: wrap; }
.cms-bar-a { display: flex; gap: .6rem; }
.cms-state { font-size: var(--fs-label); color: var(--cinza-500); display: inline-flex; align-items: center; gap: .45rem; }
.cms-state::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--verde-600); }
.cms-state.dirty { color: #8A6100; }
.cms-state.dirty::before { background: var(--amarelo-500); }
html[data-scheme="dark"] .cms-tips { background: rgba(255,255,255,.04); }
html[data-scheme="dark"] .cms-media { border-color: #313E59; }
html[data-scheme="dark"] .cms-bar { background: rgba(38,51,77,.97); border-top-color: #313E59; }
@media (max-width: 1100px) { .cms { grid-template-columns: 1fr; } .cms-side { position: static; max-height: none; } }
@media (max-width: 700px) { .cms-grid { grid-template-columns: 1fr; } .cms-media { flex-direction: column; align-items: stretch; } .cms-thumb { width: 100%; } .cms-bar { padding: .8rem 1rem; } }

/* ===== Caixa de diálogo da plataforma ===== */
.ipme-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 1rem; background: rgba(15, 23, 42, 0); transition: background .15s; }
.ipme-modal.show { background: rgba(15, 23, 42, .45); }
.ipme-modal-box { width: 100%; max-width: 440px; background: var(--branco); border-radius: 14px; box-shadow: 0 24px 60px rgba(15,23,42,.25); padding: 1.6rem 1.6rem 1.25rem; text-align: center; transform: translateY(8px) scale(.98); opacity: 0; transition: transform .15s, opacity .15s; font-family: var(--font); }
.ipme-modal.show .ipme-modal-box { transform: none; opacity: 1; }
.ipme-m-ic { width: 52px; height: 52px; border-radius: 50%; margin: 0 auto .9rem; display: flex; align-items: center; justify-content: center; background: var(--azul-100); color: var(--azul-700); }
.ipme-m-ic svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.ipme-modal-box.danger .ipme-m-ic { background: var(--vermelho-100); color: var(--vermelho-600); }
.ipme-modal-box h3 { margin: 0 0 .45rem; font-size: var(--fs-h); font-weight: 600; color: var(--cinza-900); }
.ipme-modal-box p { margin: 0 0 1.1rem; color: var(--cinza-500); line-height: 1.6; font-size: var(--fs-body); white-space: pre-line; }
.ipme-m-lbl { display: block; text-align: left; font-size: var(--fs-label); color: var(--cinza-700); margin-bottom: .35rem; }
.ipme-m-in { width: 100%; margin-bottom: 1.1rem; }
.ipme-m-a { display: flex; gap: .6rem; justify-content: center; }
.ipme-m-a .btn { min-width: 120px; }
html[data-scheme="dark"] .ipme-modal-box { background: #26334D; box-shadow: 0 24px 60px rgba(0,0,0,.5); }
html[data-scheme="dark"] .ipme-modal.show { background: rgba(0,0,0,.55); }
.audit-count { font-size: var(--fs-label); color: var(--cinza-500); }
.audit-count strong { color: var(--cinza-900); font-weight: 600; font-size: var(--fs-body); }
.audit-clear { align-items: center; flex-wrap: wrap; }
.audit-clear .tselect { min-width: 190px; }

/* ===== Cópias de segurança ===== */
.bk-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 1.25rem; align-items: start; }
.bk-layout .ph .btn svg { width: 16px; height: 16px; }
.bk-list { display: flex; flex-direction: column; }
.bk-row { display: flex; align-items: center; gap: .9rem; padding: .85rem 1.5rem; border-top: 1px solid var(--cinza-100); }
.bk-row:first-child { border-top: 0; }
.bk-ic { width: 38px; height: 38px; border-radius: 10px; flex: none; display: inline-flex; align-items: center; justify-content: center; background: var(--azul-100); color: var(--azul-700); }
.bk-ic.auto { background: var(--verde-100); color: var(--verde-700); }
.bk-ic svg, .bk-a svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.bk-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.bk-b strong { font-weight: 500; color: var(--cinza-900); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bk-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.bk-a { display: flex; gap: .4rem; flex: none; }
.bk-a form { margin: 0; }
.bk-a .btn { font-size: var(--fs-body) !important; }
.bk-del:hover { background: var(--vermelho-100); color: var(--vermelho-600); }
.bk-settings { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--cinza-100); display: flex; flex-direction: column; gap: .8rem; }
.bk-settings .field { margin: 0; display: flex; flex-direction: column; gap: .35rem; }
.bk-settings .check { font-weight: 400; }
.bk-note { margin: .9rem 0 0; font-size: var(--fs-label); color: var(--cinza-500); }
html[data-scheme="dark"] .bk-row, html[data-scheme="dark"] .bk-settings { border-color: #313E59; }
@media (max-width: 1100px) { .bk-layout { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .bk-row { flex-wrap: wrap; padding: .8rem 1rem; } }
.dropdown .dd-user { display: flex; align-items: center; gap: .65rem; min-width: 210px; }
.dropdown .dd-user > div { display: flex; flex-direction: column; }

/* ===== Ferramentas → ESG ===== */
.tdate { display: inline-flex; align-items: center; gap: .4rem; background: var(--branco); border: 1px solid var(--cinza-300); border-radius: 999px; padding: 0 .4rem 0 .8rem; height: 40px; margin: 0; font-weight: 400; }
.tdate span { font-size: var(--fs-label); color: var(--cinza-500); }
.tdate input { border: 0; background: transparent; height: 36px; padding: 0 .3rem; width: 135px; box-shadow: none; }
html[data-scheme="dark"] .tdate { background: #313E59; border-color: #313E59; }
.dcard-ic.grey { background: var(--cinza-100); color: var(--cinza-500); }
.lr-ic.grey { background: var(--cinza-100); color: var(--cinza-500); }
.esg-card { position: relative; color: inherit; }
.esg-card:hover { text-decoration: none; }
.esg-flag { position: absolute; top: 1rem; left: 1rem; font-size: var(--fs-small); font-weight: 600; background: var(--amarelo-100); color: #8A6100; padding: .15rem .55rem; border-radius: 999px; }
.esg-score { display: flex; align-items: baseline; gap: .3rem; justify-content: center; margin: .3rem 0 .2rem; }
.esg-score strong { font-size: var(--fs-num); font-weight: 600; color: var(--cinza-900); }
.esg-score span { font-size: var(--fs-label); color: var(--cinza-500); }
.esg-empty { text-align: center; padding: 2.5rem 1.5rem; }
.esg-empty .dcard-ic { margin: 0 auto 1rem; }
.esg-empty h3 { margin: 0 0 .4rem; }
.esg-empty p { max-width: 520px; margin: 0 auto 1.1rem; }
.esg-create { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 1.25rem; align-items: start; }
.esg-create .form-actions { display: flex; justify-content: flex-end; gap: .6rem; padding: 1rem 1.5rem; border-top: 1px solid var(--cinza-200); }
.esg-hero .badge + .badge { margin-left: .3rem; }
.esg-hero-score { gap: 1rem; }
.esg-big { display: flex; align-items: baseline; }
.esg-big strong { font-size: 34px; font-weight: 600; color: var(--cinza-900); line-height: 1; }
.esg-big span { font-size: var(--fs-body); color: var(--cinza-500); }
.esg-p { margin: 0 0 1rem; line-height: 1.6; }
.esg-link { display: flex; gap: .6rem; }
.esg-link input { flex: 1; min-width: 0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace !important; font-size: var(--fs-label); background: var(--cinza-050); }
.esg-link .btn svg { width: 16px; height: 16px; }
.esg-progress { margin-top: 1.2rem; display: flex; flex-direction: column; gap: .4rem; }
.esg-tabs { margin-top: 0; }
.esg-level { display: flex; gap: 1rem; align-items: flex-start; }
.esg-level-n { width: 56px; height: 56px; border-radius: 14px; background: var(--verde-600); color: #fff; font-size: 20px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.esg-level strong { color: var(--cinza-900); font-weight: 600; }
.esg-level p { margin: .35rem 0 0; color: var(--cinza-700); line-height: 1.6; }
.esg-scale { display: grid; grid-template-columns: repeat(5, 1fr); gap: .4rem; margin-top: 1.2rem; }
.esg-scale div { border-radius: 8px; background: var(--cinza-100); padding: .5rem .6rem; display: flex; flex-direction: column; gap: .1rem; }
.esg-scale span { font-size: var(--fs-label); color: var(--cinza-700); }
.esg-scale small { font-size: var(--fs-small); color: var(--cinza-500); }
.esg-scale div.on { background: var(--verde-600); }
.esg-scale div.on span, .esg-scale div.on small { color: #fff; }
.esg-bars { display: flex; flex-direction: column; gap: .9rem; margin-bottom: 1.4rem; }
.esg-bar { display: grid; grid-template-columns: 110px 1fr 60px; align-items: center; gap: .9rem; }
.esg-bar-l { color: var(--cinza-700); }
.esg-bar-t { height: 14px; background: var(--cinza-100); border-radius: 999px; overflow: hidden; }
.esg-bar-t span { display: block; height: 100%; border-radius: 999px; }
.esg-bar-v { text-align: right; font-weight: 600; color: var(--cinza-900); }
.esg-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: .5rem; vertical-align: middle; }
.esg-table .num { text-align: right; }
.esg-total td { font-weight: 600; color: var(--cinza-900); }
.esg-disclaimer { font-size: var(--fs-label); color: var(--cinza-500); background: var(--cinza-050); border-radius: 10px; padding: .9rem 1rem; line-height: 1.6; margin-bottom: 1.25rem; }
.esg-pillar .ph h3 { display: flex; align-items: center; }
.esg-theme { padding: 0 1.5rem 1rem; }
.esg-theme h4 { font-size: var(--fs-label); text-transform: uppercase; letter-spacing: .06em; color: var(--cinza-500); font-weight: 600; margin: .4rem 0 .6rem; }
.esg-q { border: 1px solid var(--cinza-200); border-radius: 10px; padding: .8rem .9rem; margin-bottom: .6rem; }
.esg-q.no { border-left: 4px solid var(--vermelho-600); background: rgba(220,38,38,.025); }
.esg-q.yes { border-left: 4px solid var(--verde-600); }
.esg-q-h { display: flex; gap: .8rem; align-items: flex-start; }
.esg-q-n { flex: none; min-width: 34px; height: 24px; border-radius: 6px; background: var(--cinza-100); font-size: var(--fs-small); font-weight: 600; display: inline-flex; align-items: center; justify-content: center; color: var(--cinza-700); }
.esg-q-b { flex: 1; min-width: 0; }
.esg-q-b strong { font-weight: 500; color: var(--cinza-900); line-height: 1.5; }
.esg-q-s { margin-top: .35rem; font-size: var(--fs-label); color: var(--cinza-700); line-height: 1.55; }
.esg-q-tag { display: inline-block; font-size: var(--fs-small); font-weight: 600; border-radius: 999px; padding: .05rem .5rem; margin-right: .3rem; }
.esg-q.no .esg-q-tag { background: var(--vermelho-100); color: var(--vermelho-600); }
.esg-q.yes .esg-q-tag { background: var(--verde-100); color: var(--verde-700); }
.esg-q-r { display: flex; flex-direction: column; align-items: flex-end; gap: .3rem; flex: none; }
.esg-q-pts { font-size: var(--fs-small); color: var(--cinza-500); }
.esg-q-add { margin: .5rem 0 0 calc(34px + .8rem); }
.esg-q-add .btn-link { font-size: var(--fs-label); display: inline-flex; align-items: center; gap: .3rem; }
.esg-q-add svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.esg-analysis .field textarea { width: 100%; line-height: 1.6; }
.esg-private { background: var(--cinza-050); border-radius: 10px; padding: .9rem 1rem; }
.esg-readonly { background: var(--cinza-050); border-radius: 8px; padding: .7rem .9rem; line-height: 1.6; }
form.panel .form-actions { display: flex; justify-content: space-between; align-items: center; gap: .6rem; padding: 1rem 1.5rem; border-top: 1px solid var(--cinza-200); }
.esg-actions { display: flex; flex-direction: column; }
.esg-action { padding: .9rem 1.5rem; border-top: 1px solid var(--cinza-100); }
.esg-action:first-child { border-top: 0; }
.esg-action-h { display: flex; gap: .8rem; align-items: flex-start; }
.esg-action-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .2rem; }
.esg-action-b strong { font-weight: 500; color: var(--cinza-900); line-height: 1.5; }
.esg-action-b > span { font-size: var(--fs-label); color: var(--cinza-500); }
.esg-action-notes { font-size: var(--fs-label); color: var(--cinza-700); background: var(--cinza-050); border-radius: 6px; padding: .4rem .6rem; margin-top: .2rem; }
.esg-action-edit { margin: .5rem 0 0; }
.esg-action-edit summary { cursor: pointer; color: var(--azul-700); font-size: var(--fs-label); }
.esg-action-edit form { margin-top: .8rem; }
.esg-action-btns { display: flex; justify-content: flex-end; margin-top: .4rem; }
.esg-action-del { margin-top: .5rem; display: flex; justify-content: flex-end; }
.esg-action-form .field { margin: 0; display: flex; flex-direction: column; gap: .3rem; }
.esg-action-form textarea, .esg-action-form input, .esg-action-form select { width: 100%; }
html[data-scheme="dark"] .esg-q { border-color: #313E59; }
html[data-scheme="dark"] .esg-disclaimer, html[data-scheme="dark"] .esg-private, html[data-scheme="dark"] .esg-readonly, html[data-scheme="dark"] .esg-action-notes { background: rgba(255,255,255,.04); }
html[data-scheme="dark"] .esg-action, html[data-scheme="dark"] form.panel .form-actions { border-color: #313E59; }
@media (max-width: 1100px) { .esg-create { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .esg-scale { grid-template-columns: 1fr 1fr; } .esg-bar { grid-template-columns: 80px 1fr 50px; } .esg-link { flex-direction: column; } .esg-q-h { flex-wrap: wrap; } .esg-q-add { margin-left: 0; } }
form.panel .form-actions { position: static; margin: 0; box-shadow: none; background: transparent; border-radius: 0 0 var(--radius) var(--radius); }

/* ===== Ferramentas (catálogo) ===== */
.tools-intro { margin: 0 0 1.25rem; color: var(--cinza-500); max-width: 760px; line-height: 1.6; }
.tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.25rem; }
.tool-card { margin: 0; padding: 1.4rem; display: flex; flex-direction: column; gap: .8rem; }
.tool-h { display: flex; justify-content: space-between; align-items: flex-start; }
.tool-h .dcard-ic { margin: 0; width: 56px; height: 56px; border-radius: 14px; }
.tool-h .dcard-ic svg { width: 26px; height: 26px; }
.tool-tag { font-size: var(--fs-small); font-weight: 600; background: var(--cinza-100); color: var(--cinza-700); border-radius: 999px; padding: .2rem .6rem; }
.tool-card h3 { margin: 0; font-size: var(--fs-h); font-weight: 600; }
.tool-card h3 a { color: var(--cinza-900); }
.tool-card p { margin: 0; color: var(--cinza-500); line-height: 1.6; flex: 1; }
.tool-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.tool-stats div { background: var(--cinza-050); border-radius: 10px; padding: .6rem .7rem; display: flex; flex-direction: column; }
.tool-stats strong { font-size: 20px; font-weight: 600; color: var(--cinza-900); line-height: 1.2; }
.tool-stats span { font-size: var(--fs-small); color: var(--cinza-500); }
.tool-stats .alert-on { background: var(--amarelo-100); }
.tool-stats .alert-on strong { color: #8A6100; }
.tool-a { display: flex; gap: .5rem; }
.tool-soon { border: 2px dashed var(--cinza-200); box-shadow: none; background: transparent; justify-content: center; align-items: flex-start; }
.tool-soon .dcard-ic { margin: 0; width: 56px; height: 56px; border-radius: 14px; }
.tool-soon .dcard-ic svg { width: 24px; height: 24px; }
html[data-scheme="dark"] .tool-stats div { background: rgba(255,255,255,.04); }
html[data-scheme="dark"] .tool-soon { border-color: #313E59; }

/* ===== Administração — visão geral ===== */
.adm-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; margin-bottom: 1.25rem; }
.adm-card { margin: 0; padding: 1.4rem; display: flex; flex-direction: column; gap: .7rem; color: var(--cinza-700); transition: transform .15s, box-shadow .15s; }
.adm-card:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.adm-card h3 { margin: .2rem 0 0; font-size: var(--fs-h); font-weight: 600; color: var(--cinza-900); }
.adm-card p { margin: 0; color: var(--cinza-500); line-height: 1.6; flex: 1; }
.adm-ic { width: 48px; height: 48px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.adm-ic svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.adm-ic.blue { background: var(--azul-100); color: var(--azul-700); }
.adm-ic.green { background: var(--verde-100); color: var(--verde-700); }
.adm-ic.navy { background: rgba(var(--p-rgb), .12); color: var(--p-900); }
.adm-ic.yellow { background: var(--amarelo-100); color: #9A6B00; }
.adm-ic.grey { background: var(--cinza-100); color: var(--cinza-700); }
.adm-foot { display: flex; justify-content: space-between; align-items: center; gap: .8rem; padding-top: .9rem; border-top: 1px solid var(--cinza-100); flex-wrap: wrap; }
.adm-meta { font-size: var(--fs-label); color: var(--cinza-500); }
.adm-go { display: inline-flex; align-items: center; gap: .35rem; color: var(--azul-700); font-weight: 500; }
.adm-go svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s; }
.adm-card:hover .adm-go svg { transform: translateX(3px); }
.adm-system { display: flex; align-items: center; gap: 1rem; padding: 1.1rem 1.4rem; flex-wrap: wrap; }
.adm-sys-b { display: flex; flex-direction: column; min-width: 180px; }
.adm-sys-b strong { color: var(--cinza-900); font-weight: 600; }
.adm-sys-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.adm-system dl { display: flex; gap: 2rem; margin: 0 0 0 auto; flex-wrap: wrap; }
.adm-system dl div { display: flex; flex-direction: column; gap: .1rem; }
.adm-system dt { font-size: var(--fs-small); color: var(--cinza-500); text-transform: uppercase; letter-spacing: .05em; }
.adm-system dd { margin: 0; color: var(--cinza-900); font-weight: 500; }
html[data-scheme="dark"] .adm-foot { border-color: #313E59; }
@media (max-width: 1250px) { .adm-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .adm-grid { grid-template-columns: 1fr; } .adm-system dl { margin-left: 0; gap: 1.2rem; } }
.adm-foot { flex-direction: column; align-items: flex-start; gap: .45rem; }

/* ===== Mensagens (chat) ===== */
.content.page-chat { padding: 0; display: flex; flex-direction: column; }
.page-chat > .topbar, .page-chat > .alert { display: none; }
.chat-app { flex: 1; display: grid; grid-template-columns: 320px minmax(0, 1fr); height: calc(100vh - var(--header-h)); min-height: 480px; border-top: 1px solid var(--cinza-200); background: #F7F9FC; }
.chat-side { background: var(--branco); border-right: 1px solid var(--cinza-200); display: flex; flex-direction: column; min-height: 0; }
.chat-side-h { display: flex; align-items: center; gap: .7rem; padding: 1.1rem 1.25rem .6rem; }
.chat-side-h h2 { margin: 0; font-size: var(--fs-title); font-weight: 500; color: var(--cinza-900); }
.chat-side-ic { width: 36px; height: 36px; border-radius: 10px; background: var(--azul-100); color: var(--azul-700); display: inline-flex; align-items: center; justify-content: center; }
.chat-side-ic svg, .chat-empty-ic svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.chat-recent-h { padding: .6rem 1.25rem .4rem; font-size: var(--fs-small); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--cinza-500); }
.chat-recent { display: flex; gap: .7rem; padding: 0 1.25rem .8rem; overflow-x: auto; scrollbar-width: none; }
.chat-recent::-webkit-scrollbar { display: none; }
.chat-recent a { display: flex; flex-direction: column; align-items: center; gap: .3rem; font-size: var(--fs-label); color: var(--cinza-700); flex: none; width: 52px; }
.chat-recent a:hover { text-decoration: none; color: var(--azul-700); }
.chat-recent a span:last-child { max-width: 52px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-ring { padding: 2px; border-radius: 50%; border: 2px solid var(--azul-500); display: inline-flex; }
.chat-recent a.active .chat-ring { border-color: var(--verde-600); }
.chat-ring .avatar { width: 40px; height: 40px; }
.chat-search { display: flex; align-items: center; gap: .5rem; margin: .2rem 1.25rem .6rem; padding: 0 .9rem; height: 38px; border-radius: 10px; background: var(--cinza-100); font-weight: 400; }
.chat-search svg { width: 16px; height: 16px; fill: none; stroke: var(--cinza-500); stroke-width: 2; stroke-linecap: round; flex: none; }
.chat-search input { border: 0 !important; background: transparent !important; box-shadow: none !important; padding: 0 !important; height: 36px; flex: 1; min-width: 0; }
.chat-list { flex: 1; overflow-y: auto; padding: 0 .6rem 1rem; }
.chat-item { display: flex; gap: .75rem; align-items: center; padding: .65rem .65rem; border-radius: 10px; color: var(--cinza-700); }
.chat-item:hover { background: var(--cinza-050); text-decoration: none; }
.chat-item.active { background: var(--azul-050); }
.chat-item[hidden] { display: none; }
.chat-item-av { position: relative; flex: none; }
.chat-item-av .dot { position: absolute; top: 0; right: 0; width: 10px; height: 10px; border-radius: 50%; background: var(--azul-500); border: 2px solid var(--branco); }
.chat-item-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .15rem; }
.chat-item-r1, .chat-item-r2 { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.chat-item-r1 strong { font-weight: 500; color: var(--cinza-900); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-item-r1 small { font-size: var(--fs-small); color: var(--cinza-500); flex: none; }
.chat-item-r2 .prev { font-size: var(--fs-label); color: var(--cinza-500); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-item-r2 .prev em { font-style: normal; opacity: .75; }
.chat-badge { flex: none; min-width: 20px; height: 20px; padding: 0 .35rem; border-radius: 999px; background: var(--azul-700); color: #fff; font-size: var(--fs-small); font-weight: 600; display: inline-flex; align-items: center; justify-content: center; }
.chat-none { padding: 1rem .7rem; font-size: var(--fs-label); color: var(--cinza-500); }
.chat-team-av { width: 40px; height: 40px; border-radius: 50%; background: var(--branco); border: 1px solid var(--cinza-200); display: inline-flex; align-items: center; justify-content: center; overflow: hidden; flex: none; }
.chat-team-av img { width: 30px; height: auto; }

.chat-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.chat-head { display: flex; align-items: center; gap: .8rem; padding: .7rem 1.5rem; background: var(--branco); border-bottom: 1px solid var(--cinza-200); }
.chat-head-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.chat-head-b strong { color: var(--cinza-900); font-weight: 500; }
.chat-head-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.chat-head-a { display: flex; gap: .2rem; }
.chat-head .icon-btn svg { width: 20px; height: 20px; }
.chat-back { display: none; }
.chat-body { flex: 1; overflow-y: auto; padding: 1.25rem 2rem 1rem; display: flex; flex-direction: column; }
.chat-day { display: flex; align-items: center; gap: 1rem; margin: 1rem 0 1.1rem; color: var(--cinza-500); font-size: var(--fs-label); }
.chat-day::before, .chat-day::after { content: ""; flex: 1; height: 1px; background: var(--cinza-200); }
.chat-row { display: flex; gap: .75rem; align-items: flex-start; margin-top: .9rem; max-width: 100%; }
.chat-row.grouped { margin-top: .3rem; }
.chat-row.mine { flex-direction: row-reverse; }
.chat-row-av { width: 40px; flex: none; }
.chat-msg { display: flex; flex-direction: column; max-width: min(640px, 72%); }
.chat-row.mine .chat-msg { align-items: flex-end; }
.chat-from { font-size: var(--fs-small); color: var(--cinza-500); margin: 0 0 .25rem .2rem; }
.chat-bubble { background: var(--branco); color: var(--cinza-900); border-radius: 4px 14px 14px 14px; padding: .7rem 1rem; box-shadow: 0 1px 2px rgba(15,23,42,.06); line-height: 1.55; }
.chat-row.grouped .chat-bubble { border-radius: 14px; }
.chat-row.mine .chat-bubble { background: var(--azul-100); color: var(--azul-900); border-radius: 14px 4px 14px 14px; box-shadow: none; }
.chat-row.mine.grouped .chat-bubble { border-radius: 14px; }
.chat-text { word-break: break-word; }
.chat-ctx { display: inline-flex; align-items: center; gap: .3rem; font-size: var(--fs-small); color: var(--azul-700); background: rgba(var(--p-rgb), .08); border-radius: 6px; padding: .15rem .45rem; margin-bottom: .4rem; }
.chat-ctx svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 2; }
.chat-time { font-size: var(--fs-small); color: var(--cinza-500); margin: .3rem .2rem 0; display: inline-flex; align-items: center; gap: .3rem; }
.chat-read svg { width: 14px; height: 14px; fill: none; stroke: var(--cinza-500); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-read.read svg { stroke: var(--azul-500); }
.chat-compose { background: var(--branco); border-top: 1px solid var(--cinza-200); padding: .6rem 1.5rem .5rem; }
.chat-compose-r { display: flex; align-items: flex-end; gap: .5rem; }
.chat-compose textarea { flex: 1; border: 0 !important; box-shadow: none !important; background: transparent !important; resize: none; min-height: 40px; max-height: 160px; padding: .6rem .2rem !important; line-height: 1.5; }
.chat-clip svg { width: 20px; height: 20px; }
.chat-clip.on { background: var(--azul-050); color: var(--azul-700); }
.chat-send { width: 40px; height: 40px; border-radius: 50%; border: 0; background: var(--azul-700); color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex: none; transition: background .15s; }
.chat-send:hover { background: var(--azul-900); }
.chat-send:disabled { opacity: .6; }
.chat-send svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-chip { align-self: center; font-size: var(--fs-small); background: var(--azul-050); color: var(--azul-700); border-radius: 999px; padding: .2rem .6rem; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: none; }
.chat-attach { display: flex; gap: .8rem; padding: .3rem 0 .6rem; flex-wrap: wrap; }
.chat-attach label { display: flex; flex-direction: column; gap: .25rem; flex: 1; min-width: 200px; font-weight: 400; }
.chat-attach label span { font-size: var(--fs-small); color: var(--cinza-500); }
.chat-hint { font-size: var(--fs-small); color: var(--cinza-500); padding: .2rem 0 0 2.9rem; }
.chat-flash { font-size: var(--fs-label); padding: .45rem .7rem; border-radius: 8px; margin-bottom: .5rem; background: var(--vermelho-100); color: var(--vermelho-600); }
.chat-flash.success { background: var(--verde-100); color: var(--verde-700); }
.chat-empty { margin: auto; text-align: center; max-width: 380px; padding: 2rem 1rem; color: var(--cinza-500); }
.chat-empty-ic { width: 64px; height: 64px; border-radius: 50%; background: var(--azul-100); color: var(--azul-700); display: inline-flex; align-items: center; justify-content: center; margin-bottom: .9rem; }
.chat-empty-ic svg { width: 28px; height: 28px; }
.chat-empty h3 { margin: 0 0 .35rem; color: var(--cinza-900); font-size: var(--fs-h); font-weight: 500; }
.chat-empty p { margin: 0; line-height: 1.6; }
html[data-scheme="dark"] .chat-app { background: #1A2234; border-color: #313E59; }
html[data-scheme="dark"] .chat-side, html[data-scheme="dark"] .chat-head, html[data-scheme="dark"] .chat-compose { background: #26334D; border-color: #313E59; }
html[data-scheme="dark"] .chat-bubble { background: #26334D; color: #E2E8F0; }
html[data-scheme="dark"] .chat-row.mine .chat-bubble { background: rgba(var(--p-rgb), .35); color: #fff; }
html[data-scheme="dark"] .chat-item:hover { background: rgba(255,255,255,.04); }
html[data-scheme="dark"] .chat-item.active { background: rgba(var(--p-rgb), .25); }
html[data-scheme="dark"] .chat-search { background: #313E59; }
html[data-scheme="dark"] .chat-day::before, html[data-scheme="dark"] .chat-day::after { background: #313E59; }
@media (max-width: 900px) {
  .chat-app { grid-template-columns: 1fr; height: calc(100vh - var(--header-h)); }
  .chat-app.has-conv .chat-side { display: none; }
  .chat-app.no-conv .chat-main { display: none; }
  .chat-back { display: inline-flex; }
  .chat-body { padding: 1rem; }
  .chat-msg { max-width: 82%; }
  .chat-row-av { width: 32px; }
  .chat-row-av .avatar { width: 32px; height: 32px; }
  .chat-compose { padding: .5rem .8rem; }
  .chat-hint { display: none; }
}
/* No chat, a lista de conversas substitui o painel de secção (como no Lineone) */
@media (min-width: 901px) {
  .app.app-page-chat, html.panel-closed .app.app-page-chat { grid-template-columns: var(--rail-w) 0 minmax(0, 1fr); }
  .app.app-page-chat .panel-nav { visibility: hidden; border: 0; }
  .app.app-page-chat #panel-toggle { display: none; }
  .app-page-chat .chat-side-h { min-height: var(--header-h); padding-top: .6rem; }
}
.chat-compose [hidden], .chat-list [hidden] { display: none !important; }
.chat-side { min-width: 0; overflow: hidden; }
@media (max-width: 900px) { .chat-app { grid-template-columns: minmax(0, 1fr); } }
.chat-new-btn { margin-left: auto; width: 36px; height: 36px; border-radius: 10px; border: 0; background: var(--azul-700); color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: background .15s; }
.chat-new-btn:hover { background: var(--azul-900); }
.chat-new-btn svg, .chat-empty .btn svg, .chat-dialog .btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-dialog { position: fixed; inset: 0; z-index: 900; display: flex; align-items: center; justify-content: center; padding: 1rem; background: rgba(15,23,42,0); transition: background .15s; }
.chat-dialog[hidden] { display: none; }
.chat-dialog.show { background: rgba(15,23,42,.45); }
.chat-dialog-box { width: 100%; max-width: 560px; background: var(--branco); border-radius: 14px; box-shadow: 0 24px 60px rgba(15,23,42,.25); transform: translateY(8px); opacity: 0; transition: transform .15s, opacity .15s; display: flex; flex-direction: column; max-height: calc(100vh - 2rem); }
.chat-dialog.show .chat-dialog-box { transform: none; opacity: 1; }
.chat-dialog-h { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.25rem; border-bottom: 1px solid var(--cinza-200); }
.chat-dialog-h h3 { margin: 0; font-size: var(--fs-h); font-weight: 600; color: var(--cinza-900); }
.chat-dialog-b { padding: 1.1rem 1.25rem; overflow-y: auto; }
.chat-dialog-b .field { margin-bottom: 1rem; display: flex; flex-direction: column; gap: .35rem; }
.chat-dialog-b select, .chat-dialog-b textarea { width: 100%; }
.chat-dialog-a { display: flex; justify-content: flex-end; gap: .6rem; padding: .9rem 1.25rem; border-top: 1px solid var(--cinza-200); }
.chat-to { display: flex; align-items: center; gap: .6rem; padding: .4rem .6rem; border-radius: 10px; background: var(--cinza-050); }
.chat-to .chat-team-av { width: 32px; height: 32px; }
.chat-to .chat-team-av img { width: 24px; }
html[data-scheme="dark"] .chat-dialog-box { background: #26334D; }
html[data-scheme="dark"] .chat-dialog-h, html[data-scheme="dark"] .chat-dialog-a { border-color: #313E59; }
/* Mensagens: anexos e emoticons */
.chat-tool svg { width: 20px; height: 20px; }
.chat-tool.on { background: var(--azul-050); color: var(--azul-700); }
.chat-imgs { display: grid; gap: 4px; margin-top: .45rem; border-radius: 10px; overflow: hidden; max-width: 420px; }
.chat-imgs.n1 { grid-template-columns: 1fr; }
.chat-imgs.n2, .chat-imgs.n4 { grid-template-columns: 1fr 1fr; }
.chat-imgs.n3 { grid-template-columns: 1fr 1fr 1fr; }
.chat-imgs a { display: block; background: var(--cinza-100); }
.chat-imgs img { width: 100%; height: 100%; max-height: 260px; object-fit: cover; display: block; aspect-ratio: 4 / 3; }
.chat-imgs.n1 img { aspect-ratio: auto; max-height: 320px; object-fit: contain; background: var(--cinza-050); }
.chat-file { display: flex; align-items: center; gap: .65rem; margin-top: .45rem; padding: .55rem .7rem; border-radius: 10px; background: rgba(15,23,42,.04); color: inherit; min-width: 220px; max-width: 360px; }
.chat-file:hover { text-decoration: none; background: rgba(15,23,42,.08); }
.chat-row.mine .chat-file { background: rgba(255,255,255,.55); }
.chat-file-ic { width: 38px; height: 38px; border-radius: 8px; flex: none; display: inline-flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: #fff; background: #64748B; letter-spacing: .02em; }
.chat-file-ic.ext-pdf { background: #DC2626; }
.chat-file-ic.ext-doc, .chat-file-ic.ext-docx, .chat-file-ic.ext-odt { background: #2563EB; }
.chat-file-ic.ext-xls, .chat-file-ic.ext-xlsx, .chat-file-ic.ext-ods, .chat-file-ic.ext-csv { background: #16A34A; }
.chat-file-ic.ext-ppt, .chat-file-ic.ext-pptx { background: #EA580C; }
.chat-file-ic.ext-zip { background: #7C3AED; }
.chat-file-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.chat-file-b strong { font-weight: 500; font-size: var(--fs-label); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-file-b small { font-size: var(--fs-small); color: var(--cinza-500); }
.chat-file-dl svg { width: 18px; height: 18px; fill: none; stroke: var(--cinza-500); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-files { display: flex; flex-wrap: wrap; gap: .4rem; padding: .3rem 0 .5rem; }
.chat-fchip { display: inline-flex; align-items: center; gap: .4rem; background: var(--cinza-100); border-radius: 8px; padding: .3rem .4rem .3rem .5rem; font-size: var(--fs-label); max-width: 100%; }
.chat-fchip b { font-size: 9px; background: var(--azul-700); color: #fff; border-radius: 4px; padding: .1rem .3rem; }
.chat-fchip small { color: var(--cinza-500); }
.chat-fchip.bad { background: var(--vermelho-100); color: var(--vermelho-600); }
.chat-fchip button { border: 0; background: transparent; cursor: pointer; font-size: 16px; line-height: 1; color: var(--cinza-500); padding: 0 .2rem; }
.chat-main.drop { outline: 3px dashed var(--azul-500); outline-offset: -10px; background: var(--azul-050); }
.chat-emoji-wrap { position: relative; }
.chat-emoji { position: absolute; bottom: calc(100% + 8px); right: -50px; width: 320px; max-height: 300px; overflow-y: auto; background: var(--branco); border-radius: 12px; box-shadow: 0 12px 32px rgba(15,23,42,.18); padding: .6rem .7rem; z-index: 40; }
.chat-emoji[hidden] { display: none; }
.chat-emoji-g { font-size: var(--fs-small); font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--cinza-500); margin: .4rem 0 .3rem; }
.chat-emoji-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 2px; }
.chat-emoji-grid button { border: 0; background: transparent; font-size: 20px; line-height: 1; padding: .3rem 0; border-radius: 6px; cursor: pointer; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif !important; }
.chat-emoji-grid button:hover { background: var(--cinza-100); }
.chat-text { font-family: var(--font), "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
html[data-scheme="dark"] .chat-emoji { background: #26334D; }
html[data-scheme="dark"] .chat-file { background: rgba(255,255,255,.06); }
@media (max-width: 600px) { .chat-emoji { right: -40px; width: 290px; } .chat-file { min-width: 0; } }
.chat-app { grid-template-rows: minmax(0, 1fr); }
.chat-main { overflow: hidden; }
.chat-imgs { max-width: 360px; }
.chat-imgs.n1 img { max-height: 240px; }
/* Mensagens: conversas privadas e emoticons maiores */
.chat-group { display: flex; align-items: center; gap: .4rem; padding: .9rem .65rem .35rem; font-size: var(--fs-small); font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--cinza-500); }
.chat-group svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-group span { margin-left: auto; font-weight: 500; }
.chat-role { font-style: normal; font-size: var(--fs-small); font-weight: 600; color: var(--azul-700); background: var(--azul-050); border-radius: 4px; padding: .05rem .3rem; margin-left: .2rem; vertical-align: middle; }
.chat-ring { position: relative; }
.chat-lock { position: absolute; right: -3px; bottom: -3px; width: 18px; height: 18px; border-radius: 50%; background: #475569; color: #fff; display: inline-flex; align-items: center; justify-content: center; border: 2px solid var(--branco); }
.chat-lock svg { width: 10px; height: 10px; fill: none; stroke: currentColor; stroke-width: 2.4; }
.chat-recent a.private .chat-ring { border-color: #475569; }
.chat-scope { display: inline-flex; align-items: center; gap: .35rem; font-size: var(--fs-label); border-radius: 999px; padding: .3rem .7rem; white-space: nowrap; cursor: help; }
.chat-scope svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-scope.private { background: #F1F5F9; color: #334155; }
.chat-scope.team { background: var(--azul-050); color: var(--azul-700); }
.chat-closed { display: flex; align-items: center; gap: .5rem; color: var(--cinza-500); font-size: var(--fs-label); padding: 1rem 1.5rem; }
.chat-closed svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; }
.chat-kind { display: grid; grid-template-columns: 1fr 1fr; gap: .6rem; }
.chat-kind-o { margin: 0; cursor: pointer; font-weight: 400; }
.chat-kind-o input { position: absolute; opacity: 0; }
.chat-kind-o > span { display: grid; grid-template-columns: 22px 1fr; gap: .1rem .5rem; border: 1.5px solid var(--cinza-300); border-radius: 10px; padding: .7rem .8rem; height: 100%; }
.chat-kind-o svg { width: 20px; height: 20px; fill: none; stroke: var(--cinza-500); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; grid-row: span 2; }
.chat-kind-o strong { font-weight: 500; color: var(--cinza-900); }
.chat-kind-o small { font-size: var(--fs-small); color: var(--cinza-500); line-height: 1.4; }
.chat-kind-o input:checked + span { border-color: var(--azul-700); background: var(--azul-050); }
.chat-kind-o input:checked + span svg { stroke: var(--azul-700); }
.chat-kind-o input:focus-visible + span { outline: 3px solid rgba(var(--p-rgb), .25); }
.chat-dialog [data-kind][hidden] { display: none; }
.chat-text .emo { font-size: 1.45em; line-height: 1; vertical-align: -0.12em; font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
.chat-text.emoji-only { font-size: 2.6em; line-height: 1.15; letter-spacing: .05em; }
.chat-text.emoji-only .emo { font-size: 1em; }
.chat-row .chat-bubble:has(> .chat-text.emoji-only:only-child) { background: transparent; box-shadow: none; padding: .1rem .2rem; }
html[data-scheme="dark"] .chat-scope.private { background: rgba(255,255,255,.08); color: #CBD5E1; }
html[data-scheme="dark"] .chat-kind-o input:checked + span { background: rgba(var(--p-rgb), .2); }
@media (max-width: 900px) { .chat-scope { display: none; } }
@media (max-width: 600px) { .chat-kind { grid-template-columns: 1fr; } }

/* ===== Detalhe do projeto ===== */
.prj-hero { display: flex; align-items: center; gap: 1.25rem; padding: 1.3rem 1.5rem; flex-wrap: wrap; }
.prj-hero .avatar.xl, .prj-hero .co-av { flex: none; }
.prj-hero-b { flex: 1; min-width: 240px; }
.prj-tags { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; }
.prj-tags .tag { font-size: var(--fs-small); background: var(--cinza-100); color: var(--cinza-700); border-radius: 6px; padding: .2rem .55rem; font-weight: 500; }
.prj-hero-b h2 { margin: .45rem 0 .2rem; font-size: var(--fs-title); font-weight: 600; color: var(--cinza-900); }
.prj-hero-b p { margin: 0; color: var(--cinza-500); }
.prj-hero-stats { display: flex; align-items: center; gap: 1.6rem; padding-left: 1.5rem; border-left: 1px solid var(--cinza-200); }
.prj-ring { display: flex; align-items: center; gap: .6rem; }
.prj-ring span, .prj-kpi span { font-size: var(--fs-small); color: var(--cinza-500); line-height: 1.35; }
.prj-kpi { display: flex; align-items: center; gap: .55rem; }
.prj-kpi strong { font-size: 24px; font-weight: 600; color: var(--cinza-900); }
.sec-h { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin: 0 0 .8rem; flex-wrap: wrap; }
.sec-h h3 { margin: 0; font-size: var(--fs-h); font-weight: 500; color: var(--cinza-900); }
.prj-docs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
.prj-doc { margin: 0; padding: 1.1rem 1.2rem; display: flex; flex-direction: column; gap: .55rem; }
.prj-doc-h { display: flex; justify-content: space-between; align-items: flex-start; }
.prj-doc-h .dcard-ic { margin: 0; width: 44px; height: 44px; border-radius: 12px; }
.prj-doc-h .dcard-ic svg { width: 21px; height: 21px; }
.prj-doc h4 { margin: .2rem 0 0; font-size: var(--fs-h); font-weight: 600; }
.prj-doc h4 a { color: var(--cinza-900); }
.prj-doc-sub { margin: 0; font-size: var(--fs-label); color: var(--cinza-500); flex: 1; }
.prj-prov { color: #8A6100; font-weight: 500; }
.prj-doc-prog { display: flex; align-items: center; gap: .6rem; }
.prj-doc-prog .progress { flex: 1; }
.prj-doc-prog span { font-size: var(--fs-label); font-weight: 600; color: var(--cinza-900); }
.prj-doc-meta { display: flex; justify-content: space-between; gap: .5rem; font-size: var(--fs-small); color: var(--cinza-500); flex-wrap: wrap; }
.prj-doc-a { display: flex; gap: .4rem; padding-top: .7rem; border-top: 1px solid var(--cinza-100); margin-top: .2rem; }
.prj-doc-a form { margin: 0; }
.prj-doc-a .btn { font-size: var(--fs-label) !important; }
.prj-doc-a .btn svg { width: 15px; height: 15px; }
.prj-doc.missing { border: 2px dashed var(--cinza-200); box-shadow: none; background: transparent; }
.prj-assign { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; padding: 1rem 1.5rem; border-bottom: 1px solid var(--cinza-100); background: var(--cinza-050); }
.prj-assign select { min-width: 240px; flex: 1; }
.prj-assign .check { font-weight: 400; font-size: var(--fs-label); margin: 0; }
.prj-team { display: flex; flex-direction: column; }
.prj-member { display: flex; align-items: center; gap: .85rem; padding: .85rem 1.5rem; border-top: 1px solid var(--cinza-100); }
.prj-member:first-child { border-top: 0; }
.prj-member.past { opacity: .75; }
.prj-member-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.prj-member-b strong { font-weight: 500; color: var(--cinza-900); }
.prj-member-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.prj-member-a { display: flex; gap: .3rem; align-items: center; }
.prj-member-a .icon-btn svg, .prj-msg .icon-btn svg { width: 17px; height: 17px; }
.prj-status { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--cinza-100); display: flex; flex-direction: column; gap: .4rem; }
.prj-status label { font-size: var(--fs-label); color: var(--cinza-500); }
.prj-status > div { display: flex; gap: .5rem; }
.prj-status select { flex: 1; }
.prj-msgs { display: flex; flex-direction: column; gap: .4rem; }
.prj-msg { display: flex; align-items: center; gap: .6rem; }
.prj-msg span { flex: 1; min-width: 0; color: var(--cinza-900); }
.prj-msgs .btn svg { width: 16px; height: 16px; }
.icon-btn.sm { width: 32px; height: 32px; }
html[data-scheme="dark"] .prj-hero-stats { border-color: #313E59; }
html[data-scheme="dark"] .prj-assign { background: rgba(255,255,255,.03); border-color: #313E59; }
html[data-scheme="dark"] .prj-member, html[data-scheme="dark"] .prj-doc-a, html[data-scheme="dark"] .prj-status { border-color: #313E59; }
@media (max-width: 1400px) { .prj-docs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .prj-docs { grid-template-columns: 1fr; } .prj-hero-stats { border-left: 0; padding-left: 0; width: 100%; } .prj-member { flex-wrap: wrap; } }
.prj-msg .avatar { flex: none; width: 34px; height: 34px; }
.prj-member-a .btn, .prj-status .btn { font-size: var(--fs-label) !important; height: 34px; }
.prj-status select { height: 38px; }
/* Projeto: atividade em largura total */
.prj-activity { margin-top: 0; }
.act-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.act-row { display: flex; align-items: center; gap: .85rem; padding: .85rem 1.5rem; border-top: 1px solid var(--cinza-100); }
.act-row:nth-child(odd) { border-right: 1px solid var(--cinza-100); }
.act-row:nth-child(-n+2) { border-top: 0; }
.act-ic { width: 36px; height: 36px; border-radius: 10px; flex: none; display: inline-flex; align-items: center; justify-content: center; }
.act-ic svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.act-ic.blue { background: var(--azul-100); color: var(--azul-700); }
.act-ic.green { background: var(--verde-100); color: var(--verde-700); }
.act-ic.navy { background: rgba(var(--p-rgb), .12); color: var(--p-900); }
.act-ic.red { background: var(--vermelho-100); color: var(--vermelho-600); }
.act-ic.yellow { background: var(--amarelo-100); color: #9A6B00; }
.act-ic.grey { background: var(--cinza-100); color: var(--cinza-700); }
.act-b { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: .1rem; }
.act-b strong { font-weight: 500; color: var(--cinza-900); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.act-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.act-t { flex: none; text-align: right; font-size: var(--fs-label); color: var(--cinza-700); display: flex; flex-direction: column; }
.act-t small { font-size: var(--fs-small); color: var(--cinza-500); }
html[data-scheme="dark"] .act-row { border-color: #313E59; }
@media (max-width: 900px) { .act-list { grid-template-columns: 1fr; } .act-row:nth-child(odd) { border-right: 0; } .act-row:nth-child(2) { border-top: 1px solid var(--cinza-100); } }
/* Mensagens: eliminar */
.chat-msg { position: relative; }
.chat-del { position: absolute; top: .35rem; margin: 0; opacity: 0; transition: opacity .15s; }
.chat-row.theirs .chat-del { right: -2.2rem; }
.chat-row.mine .chat-del { left: -2.2rem; }
.chat-row.grouped .chat-del { top: .2rem; }
.chat-row:hover .chat-del, .chat-del:focus-within { opacity: 1; }
.chat-del button { width: 28px; height: 28px; border-radius: 50%; border: 0; background: var(--branco); color: var(--cinza-500); box-shadow: 0 1px 3px rgba(15,23,42,.12); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.chat-del button:hover { color: var(--vermelho-600); background: var(--vermelho-100); }
.chat-del svg, .chat-del-conv svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.chat-del-conv:hover { color: var(--vermelho-600); background: var(--vermelho-100); }
.chat-del-conv svg { width: 19px; height: 19px; }
html[data-scheme="dark"] .chat-del button { background: #313E59; }
@media (hover: none) { .chat-del { opacity: .7; } }
.chat-flash-top { margin: 1rem 1.5rem 0; }

/* ---- Alertas de novas mensagens e som das notificações */
.dropdown .dd-toggle { display: flex; align-items: center; justify-content: space-between; gap: .8rem; width: 100%; padding: .55rem .8rem; border: 0; background: none; border-radius: 7px; color: var(--cinza-700); font: inherit; font-size: var(--fs-label); cursor: pointer; text-align: left; }
.dropdown .dd-toggle:hover { background: var(--cinza-100); color: var(--azul-700); }
.dd-toggle .sw { position: relative; flex: none; width: 28px; height: 16px; border-radius: 99px; background: var(--cinza-300); transition: background .15s; }
.dd-toggle .sw::after { content: ""; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: transform .15s; }
.dd-toggle[aria-pressed="true"] .sw { background: rgb(var(--p-rgb)); }
.dd-toggle[aria-pressed="true"] .sw::after { transform: translateX(12px); }
.toast-stack { position: fixed; right: 18px; bottom: 18px; z-index: 1200; display: flex; flex-direction: column; gap: 10px; width: min(360px, calc(100vw - 32px)); pointer-events: none; }
.toast-msg { pointer-events: auto; display: flex; align-items: flex-start; gap: 11px; padding: 12px 34px 12px 12px; position: relative; background: var(--branco); border: 1px solid var(--cinza-200); border-left: 3px solid rgb(var(--p-rgb)); border-radius: 10px; box-shadow: 0 10px 30px rgba(15,23,42,.16); color: var(--cinza-800); text-decoration: none; opacity: 0; transform: translateY(10px); transition: opacity .2s, transform .2s; }
.toast-msg.show { opacity: 1; transform: none; }
.toast-msg:hover { text-decoration: none; border-color: rgba(var(--p-rgb), .45); }
.tm-av { flex: none; width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; overflow: hidden; background: rgba(var(--p-rgb), .14); color: rgb(var(--p-rgb)); font-weight: 600; font-size: var(--fs-label); }
.tm-av img { width: 100%; height: 100%; object-fit: cover; }
.tm-tx { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.tm-h { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.tm-h strong { font-size: var(--fs-body); color: var(--cinza-900); }
.tm-h small { font-size: 9px; text-transform: uppercase; letter-spacing: .04em; color: var(--cinza-500); }
.tm-b { font-size: var(--fs-label); color: var(--cinza-600); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; }
.tm-x { position: absolute; top: 6px; right: 6px; width: 22px; height: 22px; border: 0; background: none; border-radius: 6px; color: var(--cinza-500); font-size: 16px; line-height: 1; cursor: pointer; }
.tm-x:hover { background: var(--cinza-100); color: var(--cinza-800); }
html[data-scheme="dark"] .toast-msg { background: var(--cinza-050); border-color: var(--cinza-200); box-shadow: 0 10px 30px rgba(0,0,0,.45); }
@media (prefers-reduced-motion: reduce) { .toast-msg { transition: none; } }

/* ---- Mensagem eliminada (mantém o lugar na conversa) */
.chat-bubble.chat-deleted, .chat-row.mine .chat-bubble.chat-deleted { display: inline-flex; align-items: center; gap: .45rem; background: transparent; border: 1px dashed var(--cinza-300); box-shadow: none; color: var(--cinza-500); font-style: italic; font-size: var(--fs-label); padding: .5rem .85rem; }
.chat-deleted svg { width: 14px; height: 14px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; }
html[data-scheme="dark"] .chat-bubble.chat-deleted, html[data-scheme="dark"] .chat-row.mine .chat-bubble.chat-deleted { background: transparent; color: #94A3B8; border-color: #3B4A66; }
.tm-hint { margin-top: 4px; font-size: 9px; color: var(--laranja-600, #C2410C); }
/* Chat: a área de conversa tem sempre a altura do ecrã; só a lista de mensagens faz scroll e a barra de escrita fica fixa em baixo */
.content.page-chat { min-height: 0; overflow: hidden; }
.chat-app { flex: 0 0 auto; height: calc(100vh - var(--header-h)); height: calc(100dvh - var(--header-h)); max-height: calc(100dvh - var(--header-h)); min-height: 360px; overflow: hidden; }
.chat-main, .chat-side { height: 100%; }
.chat-head, .chat-compose { flex: none; }
.chat-body { flex: 1 1 0; min-height: 0; overscroll-behavior: contain; }
@media (max-width: 900px) { .chat-app { height: calc(100dvh - var(--header-h)); } }

/* ===== Diagnósticos de maturidade (Gestão Comercial, Competitividade e Internacionalização) */
.mat-scale { grid-template-columns: repeat(4, 1fr); }
.mat-bars .esg-bar { grid-template-columns: minmax(180px, 38%) 1fr 44px; }
.mat-bars .esg-bar-l { font-size: var(--fs-label); line-height: 1.35; }
.mat-bars .esg-bar-l b { color: var(--cinza-500); font-weight: 600; }
.mat-bar-t { position: relative; }
.mat-bar-t i { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--branco); opacity: .9; }
.mat-sw { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: .4rem 0 1rem; }
.mat-sw > div { border: 1px solid var(--cinza-200); border-radius: 10px; padding: .8rem 1rem; }
.mat-sw h4 { margin: 0 0 .5rem; font-size: var(--fs-label); color: var(--cinza-900); }
.mat-sw ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .35rem; }
.mat-sw li { display: flex; justify-content: space-between; align-items: center; gap: .6rem; font-size: var(--fs-label); color: var(--cinza-700); }
.mat-dim .ph h3 { display: flex; align-items: center; gap: .6rem; }
.mat-dim-n { width: 26px; height: 26px; border-radius: 50%; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-label); font-weight: 600; flex: none; }
.mat-opts { list-style: none; margin: 0 0 .8rem; padding: 0; display: flex; flex-direction: column; gap: .4rem; }
.mat-opts li { display: flex; align-items: flex-start; gap: .65rem; padding: .55rem .75rem; border-radius: 9px; border: 1px solid var(--cinza-200); color: var(--cinza-500); font-size: var(--fs-label); line-height: 1.5; }
.mat-opts li.below { color: var(--cinza-700); }
.mat-opts li.on { border-color: rgba(var(--p-rgb), .55); background: rgba(var(--p-rgb), .07); color: var(--cinza-900); font-weight: 500; }
.mat-opt-n { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--cinza-100); color: var(--cinza-700); display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-small); font-weight: 600; }
.mat-opts li.on .mat-opt-n { background: rgb(var(--p-rgb)); color: #fff; }
.mat-opts li > span:nth-child(2) { flex: 1; }
.mat-opt-tag { flex: none; font-size: var(--fs-small); font-weight: 600; color: rgb(var(--p-rgb)); white-space: nowrap; }
.mat-next { font-size: var(--fs-label); color: var(--cinza-700); line-height: 1.5; }
.mat-next .esg-q-tag { background: var(--azul-100); color: var(--azul-700); }
.mat-dim .esg-q-add { margin: .6rem 0 0; }
html[data-scheme="dark"] .mat-opts li { border-color: #313E59; }
html[data-scheme="dark"] .mat-sw > div { border-color: #313E59; }
@media (max-width: 700px) { .mat-scale { grid-template-columns: 1fr 1fr; } .mat-bars .esg-bar { grid-template-columns: 1fr 44px; } .mat-bars .esg-bar-l { grid-column: 1 / -1; } .mat-sw { grid-template-columns: 1fr; } }
.dcard-ic.navy { background: #E3E8F4; color: #003175; } html[data-scheme="dark"] .dcard-ic.navy { background: rgba(120,150,220,.18); color: #A9C1F0; }

/* ---- Documento de acesso (credenciais) */
.pw-gen { display: flex; gap: .4rem; align-items: center; }
.pw-gen input { flex: 1; min-width: 0; }
.pw-gen .btn.sm { font-size: var(--fs-label); padding: .45rem .8rem; flex: none; }
.acc-cred { display: grid; grid-template-columns: 170px 1fr; gap: .55rem 1rem; margin: 0 0 1.2rem; align-items: center; }
.acc-cred dt { font-size: var(--fs-label); color: var(--cinza-500); }
.acc-cred dd { margin: 0; color: var(--cinza-900); word-break: break-all; }
.acc-pw { display: inline-flex; align-items: center; gap: .2rem; background: var(--amarelo-100); border-radius: 8px; padding: .15rem .3rem .15rem .7rem; }
.acc-pw input { border: 0 !important; background: transparent !important; box-shadow: none !important; padding: 0 !important; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 14px; font-weight: 600; width: 13em; color: var(--cinza-900); }
.acc-pw .icon-btn { width: 30px; height: 30px; }
.acc-pw .icon-btn svg { width: 16px; height: 16px; }
.acc-pw .icon-btn.on { color: var(--verde-600); }
.acc-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin: .4rem 0 1rem; }
.acc-actions .btn svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; margin-right: .35rem; vertical-align: -3px; }
.acc-steps { margin: 0 0 1rem; padding-left: 1.2rem; color: var(--cinza-700); line-height: 1.7; }
.acc-reset { margin-top: 1rem; }
html[data-scheme="dark"] .acc-pw { background: rgba(245, 158, 11, .15); }
@media (max-width: 700px) { .acc-cred { grid-template-columns: 1fr; gap: .2rem; } .acc-cred dd { margin-bottom: .5rem; } }

/* ===== Editor de documentos: alinhamento, espaçamento, caixas extensíveis, medidas e calendarização */
.editor .ql-editor { text-align: justify; resize: vertical; overflow-y: auto; min-height: 140px; line-height: 1.5; }
.editor .ql-editor .ql-align-left { text-align: left; }
.editor .ql-editor .ql-align-center { text-align: center; }
.editor .ql-editor .ql-align-right { text-align: right; }
.editor .ql-editor .ql-align-justify { text-align: justify; }
.editor .ql-editor p, .editor .ql-editor li { margin: 0; }
.editor .ql-editor .ql-spacing-none { margin-bottom: 0; }
.editor .ql-editor .ql-spacing-sm { margin-bottom: 6pt; }
.editor .ql-editor .ql-spacing-md { margin-bottom: 12pt; }
.editor .ql-editor .ql-spacing-lg { margin-bottom: 18pt; }
.ql-snow .ql-picker.ql-spacing { width: 92px; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label { white-space: nowrap; overflow: hidden; }
.ql-snow .ql-picker.ql-spacing .ql-picker-options { min-width: 150px; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label::before { content: '¶ Espaço'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-item::before { content: 'Espaçamento normal'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-item[data-value="none"]::before { content: 'Sem espaço'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label[data-value="none"]::before { content: '¶ 0 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-item[data-value="sm"]::before { content: 'Espaço 6 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label[data-value="sm"]::before { content: '¶ 6 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-item[data-value="md"]::before { content: 'Espaço 12 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label[data-value="md"]::before { content: '¶ 12 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-item[data-value="lg"]::before { content: 'Espaço 18 pt'; }
.ql-snow .ql-picker.ql-spacing .ql-picker-label[data-value="lg"]::before { content: '¶ 18 pt'; }
#doc-editor textarea[data-autogrow] { resize: vertical; overflow: hidden; min-height: 2.4rem; line-height: 1.45; }
#doc-editor .data-table textarea[data-autogrow] { width: 100%; min-height: 2.1rem; border: 1px solid var(--cinza-300); border-radius: 6px; padding: .35rem .5rem; font: inherit; font-size: var(--fs-body); }
.rep-items { display: flex; flex-direction: column; gap: 1rem; margin-bottom: .7rem; }
.rep-item { border: 1px solid var(--cinza-200); border-left: 4px solid var(--azul-500); border-radius: 10px; padding: .9rem 1rem 1rem; background: var(--cinza-050); }
.rep-head { display: flex; align-items: center; gap: .6rem; margin-bottom: .7rem; }
.rep-n { font-weight: 600; color: var(--azul-700); white-space: nowrap; font-size: var(--fs-body); }
.rep-head input { flex: 1; min-width: 0; font-weight: 500; }
.rep-tools { display: inline-flex; gap: .15rem; }
.rep-tools .icon-btn { width: 30px; height: 30px; font-size: 15px; }
.rep-tools .rep-rm:hover { color: var(--vermelho-600); background: var(--vermelho-100); }
.rep-sub { margin-top: .65rem; }
.rep-sub > label { display: block; font-weight: 600; margin-bottom: .3rem; font-size: var(--fs-label); color: var(--cinza-700); }
.rep-help { font-weight: 400; color: #4D7CFE; font-size: var(--fs-small); margin-left: .3rem; }
.rep-sub .editor .ql-editor { min-height: 70px; }
.rep-sub textarea, .rep-sub input[type=text] { width: 100%; }
.sched-ctl { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1.2rem; margin-bottom: .7rem; }
.sched-ctl label { display: inline-flex; align-items: center; gap: .45rem; font-size: var(--fs-label); font-weight: 500; }
.sched-ctl input, .sched-ctl select { width: auto; }
.sched-table th, .sched-table td { text-align: center; font-size: var(--fs-small); min-width: 56px; }
.sched-table th.sched-m { text-align: left; min-width: 170px; }
.sched-table th.sched-m small { display: block; font-weight: 400; color: var(--cinza-700); white-space: normal; }
.sched-table td[data-uid] { cursor: pointer; height: 34px; transition: background .1s; }
.sched-table td[data-uid]:hover { background: var(--azul-050); }
.sched-table td[data-uid].on { background: #1F3864; box-shadow: inset 0 0 0 2px #fff; }
.sched-obs-l { display: block; font-weight: 600; margin: .8rem 0 .3rem; font-size: var(--fs-label); }
html[data-scheme="dark"] .rep-item { background: rgba(255,255,255,.03); border-color: #313E59; }
.doc-locked { display: flex; gap: 1rem; align-items: flex-start; }
.doc-locked svg { width: 26px; height: 26px; flex: none; fill: none; stroke: var(--amarelo-600, #B45309); stroke-width: 2; }
.prj-doc.locked { opacity: .78; } .prj-lock-why { align-self: center; }
/* Anexos do Relatório de Diagnóstico (relatórios das Ferramentas) */
.anx-list { display: flex; flex-direction: column; gap: .5rem; }
.anx-item { display: flex; align-items: center; gap: .8rem; padding: .65rem .8rem; border: 1px solid var(--cinza-200); border-radius: 10px; }
.anx-item.off { opacity: .6; border-style: dashed; }
.anx-n { flex: none; font-size: var(--fs-small); font-weight: 600; color: var(--azul-700); background: var(--azul-100); border-radius: 999px; padding: .1rem .55rem; }
.anx-item.off .anx-n { background: var(--cinza-100); color: var(--cinza-500); }
.anx-b { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.anx-b strong { color: var(--cinza-900); font-weight: 500; }
.anx-b span { font-size: var(--fs-label); color: var(--cinza-500); }
.anx-item form { margin: 0; }
@media (max-width: 700px) { .anx-item { flex-wrap: wrap; } }

/* confirmação de rascunho guardado (não bloqueia por campos obrigatórios) */
.draft-toast { position: fixed; left: 50%; bottom: 84px; transform: translate(-50%, 12px); max-width: min(560px, calc(100vw - 32px)); background: #0f2f57; color: #fff; padding: .7rem 1rem; border-radius: 10px; font-size: 13px; line-height: 1.45; box-shadow: 0 10px 30px rgba(15,47,87,.25); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; z-index: 2000; }
.draft-toast.show { opacity: 1; transform: translate(-50%, 0); }
.doc-locked svg { width: 26px; height: 26px; flex: 0 0 26px; }

/* células de tabela: o texto quebra automaticamente para a linha de baixo e a linha cresce com o conteúdo */
#doc-editor textarea[data-cell] { display: block; width: 100%; min-height: 2.1rem; resize: none; overflow: hidden; white-space: pre-wrap; overflow-wrap: anywhere; word-break: normal;
  border: 1px solid var(--cinza-300); border-radius: 6px; padding: .35rem .5rem; font: inherit; font-size: var(--fs-body); line-height: 1.45; background: #fff; }
#doc-editor textarea[data-cell]:focus { outline: none; border-color: var(--azul-500, #2f6fb5); box-shadow: 0 0 0 3px rgba(47,111,181,.12); }
#doc-editor .data-table td { vertical-align: top; }

/* ── Ponte transitória: páginas por converter dentro da estrutura Viho ── */
body.vh .btn:not([class*="btn-"]):not(.secondary):not(.soft):not(.yellow) { color: #fff; }
body.vh .btn.sm { padding: .3rem .8rem; height: auto; font-size: 12px; }
body.vh .panel { border: 1px solid var(--vh-border); border-radius: 0; }
body.vh .panel > .ph h2, body.vh .panel > .ph h3 { font-size: 16px; font-weight: 700; }
body.vh .table th { text-transform: none; letter-spacing: .2px; font-size: 12.5px; color: var(--vh-heading); border-top: 0; }
body.vh p { margin: 0 0 .75rem; } body.vh ul, body.vh ol { padding-left: 1.25rem; } body.vh .vh-crumb, body.vh .vh-list, body.vh .vh-legend, body.vh .vh-bars, body.vh .vh-notes { padding-left: 0; }
body.vh h2, body.vh h3, body.vh h4 { margin: 0 0 .5rem; }

/* Website — controlo «Tamanho da letra» (passos de 5 %) */
.cms-scale { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cms-scale-box { display: inline-flex; align-items: center; height: 42px; border: 1px solid var(--vh-border); border-radius: 5px; background: var(--vh-surface); overflow: hidden; }
.cms-scale-box button { width: 42px; height: 40px; border: 0; background: var(--vh-surface-2); color: var(--vh-heading); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.cms-scale-box button:hover { background: var(--vh-primary-tint); color: var(--vh-primary); }
.cms-scale-box button svg { width: 16px; height: 16px; }
.cms-scale-box input { width: 58px !important; height: 40px; border: 0 !important; box-shadow: none !important; background: transparent !important; text-align: right; padding: 0 2px 0 0 !important; font-weight: 600; font-variant-numeric: tabular-nums; }
.cms-scale-box span { padding-right: 12px; color: var(--vh-muted); font-weight: 600; }
.cms-scale-chips { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.cms-scale-chips button { height: 32px; padding: 0 12px; border-radius: 16px; border: 1px solid var(--vh-border); background: var(--vh-surface); color: var(--vh-text-2); font: 600 12.5px var(--vh-font); cursor: pointer; }
.cms-scale-chips button:hover, .cms-scale-chips button.on { border-color: var(--vh-primary); background: var(--vh-primary-tint); color: var(--vh-primary); }
.cms-scale-demo { margin-top: 8px; padding: 12px 14px; border: 1px dashed var(--vh-border); border-radius: 6px; color: var(--vh-heading); line-height: 1.2; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
body.vh { --header-h: var(--vh-header-h); }
