:root {
    --fvc-sidenav-bg: #5C4E63;
    --fvc-sidenav-active: #5C4E63;

    --rz-text-font-family: "Encode Sans Expanded", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

    --fvc-progress-color: #A0DAB3;

    --rz-input-focus-border: 1px solid color-mix(in srgb, var(--fvc-progress-color) 55%, black);
    --rz-input-focus-shadow: 0 0 0 3px color-mix(in srgb, var(--fvc-progress-color) 35%, transparent);
}

.form-control:focus,
.form-control:hover:focus {
    border-color: color-mix(in srgb, var(--fvc-progress-color) 55%, black);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--fvc-progress-color) 35%, transparent);
}

.input-group .form-control:focus {
    border-color: color-mix(in srgb, var(--fvc-progress-color) 55%, black) !important;
}

.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--fvc-sidenav-bg);
    --bs-btn-border-color: var(--fvc-sidenav-bg);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: color-mix(in srgb, var(--fvc-sidenav-bg) 85%, white);
    --bs-btn-hover-border-color: color-mix(in srgb, var(--fvc-sidenav-bg) 85%, white);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: color-mix(in srgb, var(--fvc-sidenav-bg) 78%, black);
    --bs-btn-active-border-color: color-mix(in srgb, var(--fvc-sidenav-bg) 78%, black);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--fvc-sidenav-bg);
    --bs-btn-disabled-border-color: var(--fvc-sidenav-bg);
}

.btn-primary:hover {
    background-color: color-mix(in srgb, var(--fvc-sidenav-bg) 85%, white);
    border-color: color-mix(in srgb, var(--fvc-sidenav-bg) 85%, white);
}

.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active {
    background-color: color-mix(in srgb, var(--fvc-sidenav-bg) 78%, black);
    border-color: color-mix(in srgb, var(--fvc-sidenav-bg) 78%, black);
}
.btn-outline-primary {
    --bs-btn-color: var(--fvc-sidenav-bg);
    --bs-btn-border-color: var(--fvc-sidenav-bg);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--fvc-sidenav-bg);
    --bs-btn-hover-border-color: var(--fvc-sidenav-bg);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--fvc-sidenav-bg);
    --bs-btn-active-border-color: var(--fvc-sidenav-bg);
    --bs-btn-disabled-color: var(--fvc-sidenav-bg);
}

.btn-outline-success {
    --bs-btn-color: var(--rz-success);
    --bs-btn-border-color: var(--rz-success);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--rz-success);
    --bs-btn-hover-border-color: var(--rz-success);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--rz-success);
    --bs-btn-active-border-color: var(--rz-success);
    --bs-btn-disabled-color: var(--rz-success);
}

.pc-bar-fill,
.emp-bar-fill,
.con-bar-fill,
.pbd-bar-fill {
    background: var(--fvc-progress-color) !important;
}

.sidenav .nav-link.active,
.g-sidenav-hidden .navbar-vertical .nav-link.active .menu-item-icon,
.g-sidenav-hidden .navbar-vertical .nav-link.active:hover .menu-item-icon {
    background: #ffffff !important;
    color: #000000 !important;
}

.sidenav .nav-link.active .menu-item-icon {
    color: #000000 !important;
}

.g-sidenav-hidden .navbar-vertical .navbar-nav > .nav-item .nav-link.active {
    background-color: #ffffff !important;
}

.main-content:not(.auth-main-wrapper)::before {
    height: 20rem;
    background: linear-gradient(to bottom, var(--fvc-progress-color) 0%, var(--fvc-progress-color) 25%, transparent 100%);
}

.navbar-main,
.navbar-main .text-color,
.navbar-main .breadcrumb-item,
.navbar-main .breadcrumb-item a,
.navbar-main .breadcrumb-item.active,
.navbar-main .text-white,
.navbar-main .text-white-50 {
    color: var(--fvc-sidenav-bg) !important;
}

.navbar-main .page-title-breadcrumb .breadcrumb-item:last-child {
    color: var(--fvc-sidenav-bg) !important;
}
.navbar-main .breadcrumb-item + .breadcrumb-item::before {
    color: var(--fvc-sidenav-bg) !important;
}
.navbar-main .sidenav-toggler-inner .sidenav-toggler-line {
    background-color: var(--fvc-sidenav-bg) !important;
}

.navbar-main {
    margin-top: 0 !important;
    padding-top: 0.5rem !important;
    padding-bottom: 0 !important;
}
.navbar-main .main-navbar-container {
    align-items: center !important;
    min-height: 1.75rem;
    padding-top: 0.125rem !important;
    padding-bottom: 0.125rem !important;
}
.navbar-main .main-navbar-actions {
    margin-top: 0 !important;
}
.navbar-main .breadcrumb {
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1.2;
}
.navbar-main .navbar-collapse {
    gap: 0 !important;
    padding: 0 !important;
}
.navbar-main .page-title-breadcrumb .breadcrumb-item {
    font-size: 0.8125rem !important;
    padding-bottom: 0 !important;
}
.navbar-main .page-title-breadcrumb .breadcrumb-item:last-child {
    font-size: 0.875rem !important;
    font-weight: 600;
}
.navbar-main .sidenav-toggler-inner {
    transform: scale(0.8);
}

.navbar-main {
    position: static !important;
}

:root {
    --rz-pager-numeric-button-selected-background-color: var(--fvc-sidenav-bg);
    --fvc-primary-light: var(--fvc-sidenav-bg);

    /* Paleta FVC (roxo #5C4E63 + verde #A0DAB3): o tema partilhado define o azul por omissão em
       --fvc-primary e o Radzen deriva daí --rz-primary (badges, spinners, seleções, links...). */
    --fvc-primary: var(--fvc-sidenav-bg);
    --fvc-primary-dark: color-mix(in srgb, var(--fvc-sidenav-bg) 85%, black);
    --fvc-primary-lighter: color-mix(in srgb, var(--fvc-sidenav-bg) 60%, white);
    --fvc-dark-blue: color-mix(in srgb, var(--fvc-sidenav-bg) 70%, black);
}

/* RadzenBadge Primary: o tema partilhado fixa azul (#dbeafe/#1e40af); na paleta FVC é o mesmo aspeto do .badge-brand. */
.rz-badge.rz-badge-primary,
.rz-badge-primary.rz-shade-default {
    color: color-mix(in srgb, var(--fvc-progress-color) 55%, black);
    background-color: color-mix(in srgb, var(--fvc-progress-color) 18%, white);
}

.settings-layout-inner .rz-tabview-nav .rz-tabview-selected a,
.settings-layout-inner .rz-tabview-nav .rz-tabview-selected button {
    color: var(--fvc-sidenav-bg) !important;
}
.settings-layout-inner .rz-tabview-nav .rz-tabview-selected {
    box-shadow: var(--rz-shadow-xs), inset 0 0 0 1px color-mix(in srgb, var(--fvc-sidenav-bg) 12%, transparent);
}

.loading-progress circle:last-child {
    stroke: var(--fvc-progress-color);
}

:root {
    --fvc-icon-btn-accent: var(--fvc-progress-color);
    --fvc-chip-hover-bg: var(--fvc-sidenav-bg);
}

.icon-shape.bg-gray-100 i {
    color: #94a3b8;
    opacity: 1;
}

.icon-shape {
    display: flex;
    align-items: center;
    justify-content: center;
}
.icon-shape i {
    position: static;
    top: auto;
}

.icon-shape.icon-sm i.text-lg {
    font-size: 1.125rem;
}
.icon-shape.icon-sm i.text-2xl {
    font-size: 1.5rem;
}

.ps-stat-card {
    padding: 0;
}

.ps-stat-card .icon-shape {
    width: 2.25rem;
    height: 2.25rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.ps-stat-card .icon-shape i {
    font-size: 0.95rem;
    color: #fff;
    opacity: 1;
}
.ps-stat-card {
    min-height: 6rem;
}

.ps-stat-card .card-body {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    align-content: center;
    column-gap: 0.75rem;
    flex: 1 1 auto;
    position: relative;
}
.ps-stat-card .icon-shape {
    margin-bottom: 0 !important;
}
.ps-stat-card .card-body > p {
    min-width: 0;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}
.ps-stat-card .card-body > h5 {
    white-space: nowrap;
    font-size: 1.1rem;
}
.ps-stat-hint {
    position: absolute;
    right: 0.9rem;
    bottom: 0.65rem;
    margin-top: 0;
}

.ps-stat-card--tinted {
    background: linear-gradient(to bottom, color-mix(in srgb, var(--fvc-progress-color) 22%, white) 0%, #fff 65%);
}

.ps-selector-row {
    display: flex;
    gap: 1.25rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
}
.ps-select-wrap {
    flex: 1;
    min-width: 220px;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

/* Tooltips Bootstrap (ver js/tooltips.js) têm de ficar acima dos diálogos do Radzen (z-index ~100000),
   senão os tooltips dos botões dentro de um diálogo ficavam escondidos atrás dele. */
.tooltip { z-index: 200000 !important; font-family: inherit; font-size: 0.78rem; }

/* O CSS do template (corporate-ui-dashboard) esconde qualquer `ul li input[type="text"]` (pensado para a
   pesquisa do menu), o que fazia desaparecer os campos de texto de qualquer formulário desenhado dentro de
   uma lista <ul><li> — ex.: a edição inline em Fornecedores, onde só a caixa de Notas (um textarea)
   aparecia. Os campos da app são sempre .form-control, por isso é só esses que voltam a aparecer. */
ul li input.form-control[type="text"] { display: block; }

.ps-empty-state {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 1.25rem 1rem;
    color: var(--rz-text-secondary-color);
    font-size: 0.875rem;
}

.ps-no-rows {
    text-align: center;
    color: var(--rz-text-secondary-color);
    font-size: 0.82rem;
}

/* Rodapé das métricas (Prazo/Valor/Área) sempre colado ao fundo do card */
.project-card {
    display: flex;
    flex-direction: column;
}
.project-card > .card-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}
.project-card > .card-body > .border-top {
    margin-top: auto;
}
.project-card .icon-shape,
.con-card .icon-shape {
    width: 2.25rem;
    height: 2.25rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.project-card .icon-shape i,
.con-card .icon-shape i {
    font-size: 1.1rem;
    color: #fff;
    opacity: 1;
}

.card {
    border: 0;
}

.project-card:hover,
.con-card:hover,
button.ps-stat-card:not(:disabled):hover,
.ps-stat-card--clickable:hover {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.09);
}

.rz-chkbox-box.rz-state-active {
    background-color: color-mix(in srgb, var(--fvc-progress-color) 45%, black) !important;
    border-color: color-mix(in srgb, var(--fvc-progress-color) 45%, black) !important;
}

.filter-toggle {
    border-color: transparent !important;
    background-color: transparent !important;
    color: var(--rz-text-secondary-color) !important;
}
.filter-toggle:hover:not(.active) {
    background-color: var(--rz-base-200) !important;
}
.filter-toggle.active {
    background-color: color-mix(in srgb, var(--fvc-sidenav-bg) 5%, white) !important;
    color: var(--fvc-sidenav-bg) !important;
    font-weight: 700;
}

/* Two/three-way segmented toggle (view mode, €/m² vs €, etc.), styled after the template's nav-pills
   component. The template's own active-pill look depends on a "moving-tab" background div that a page
   script clones in on DOMContentLoaded — it never runs for markup a Blazor page renders after that, so
   the active pill would otherwise show no background at all. Styled here instead as a segmented control:
   a visible grey "track" behind the whole group (so it reads as one control with more than one option,
   not a single button), with a white pill + brand-coloured text under whichever option is active. */
.nav-pills {
    background-color: var(--rz-base-200);
    border-radius: 0.75rem;
}
.nav-pills .nav-link {
    color: var(--rz-text-color, #1e293b) !important;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.nav-pills .nav-link:hover:not(.active) {
    color: var(--fvc-sidenav-bg) !important;
}
.nav-pills .nav-link.active {
    background-color: #fff !important;
    color: var(--fvc-sidenav-bg) !important;
    font-weight: 700;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

.btn-group > .btn.active {
    color: var(--fvc-sidenav-bg);
    font-weight: 600;
    background-color: #f9fafb;
    border-color: #dde0e5;
}

.btn-group > .btn:focus {
    box-shadow: none;
}

.alert-warning {
    --bs-alert-color: #915c21;
    --bs-alert-bg: #fcebd7;
    --bs-alert-border-color: #fbe0c3;
}
.alert-info {
    --bs-alert-color: #336495;
    --bs-alert-bg: #ddedfe;
    --bs-alert-border-color: #cce4fd;
}
.alert-success {
    --bs-alert-color: #3e7423;
    --bs-alert-bg: #e1f3d8;
    --bs-alert-border-color: #d1edc4;
}
.alert-danger {
    --bs-alert-color: #8c2f25;
    --bs-alert-bg: #fbdcd8;
    --bs-alert-border-color: #f9cac5;
}

.badge-brand {
    color: color-mix(in srgb, var(--fvc-progress-color) 55%, black) !important;
    background-color: color-mix(in srgb, var(--fvc-progress-color) 18%, white) !important;
    border-color: transparent !important;
}

.dlg-summary {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    font-size: 0.85rem;
    color: var(--rz-text-color);
    margin-bottom: 0.65rem;
    padding: 0.7rem 0.9rem;
    background: var(--rz-base-200);
    border-radius: 8px;
}
.ps-legend {
    display: inline-flex;
    align-items: center;
    gap: 0.9rem;
    flex-wrap: wrap;
    font-size: 0.75rem;
    color: var(--rz-text-secondary-color);
    background: var(--rz-base-100, #fff);
    border: 1px solid #e9eaed;
    border-radius: 8px;
    padding: 0.35rem 0.65rem;
}
.ps-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
button.ps-legend-item {
    background: none;
    border: 1px solid transparent;
    border-radius: 6px;
    padding: 0.15rem 0.4rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
}
button.ps-legend-item:hover { border-color: #e9eaed; }
.ps-legend-item.active {
    border-color: var(--fvc-progress-color);
    background: color-mix(in srgb, var(--fvc-progress-color) 25%, white);
    color: color-mix(in srgb, var(--fvc-progress-color) 55%, black);
    font-weight: 700;
}
.ps-swatch {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 3px;
    border: 1px solid #e9eaed;
}

.ps-dropzone {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    padding: 2rem 1rem;
    border: 2px dashed #e9eaed;
    border-radius: 10px;
    color: var(--rz-text-secondary-color);
    font-size: 0.85rem;
    text-align: center;
    transition: border-color 0.15s, background 0.15s;
}
.ps-dropzone.dragging, .ps-dropzone:hover {
    border-color: var(--fvc-progress-color);
    background: var(--rz-base-200);
}
.ps-dropzone i { font-size: 1.75rem; color: var(--fvc-progress-color); display: block; margin-bottom: 0.5rem; }
.ps-dropzone p { font-size: 0.875rem; font-weight: 500; color: var(--rz-text-color); margin-bottom: 0.15rem; }
.ps-dropzone span { font-size: 0.76rem; color: var(--rz-text-secondary-color); }

.ps-dropzone-file {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.65rem 0.9rem;
    border: 1px solid #e9eaed;
    border-radius: 8px;
    background: var(--rz-base-200);
}

.ps-dropzone-input {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.ps-toolbar-row {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}
.ps-toolbar-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

.ps-card-accent {
    border-left-color: var(--fvc-sidenav-bg) !important;
}


.ps-toggle-icon {
    font-size: 0.68rem;
    width: 0.8rem;
    flex-shrink: 0;
}


.ps-toggle-link {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    font: inherit;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--rz-text-secondary-color);
}


.ps-issue-card-list {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    overflow-y: auto;
    padding: 0.15rem;
}
.ps-issue-card {
    border: 1px solid var(--rz-border);
    border-radius: 8px;
    padding: 0.6rem 0.75rem;
}
.ps-issue-card-head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    font-size: 0.8rem;
    margin-bottom: 0.35rem;
}
.ps-issue-card-muted {
    color: var(--rz-text-secondary-color);
    font-size: 0.78rem;
}
.ps-issue-card-text {
    font-size: 0.8rem;
    margin: 0 0 0.5rem 0;
}

.ps-empty-icon {
    font-size: 2.5rem;
}


/* ---------------- Grid com scroll vertical ---------------- */
/* Preenche a altura do PageCard e mostra as linhas em excesso com scroll interno em vez de
   esticar a página toda (útil sobretudo nas grids sem paginação). Aplicar a qualquer
   CustomRadzenDataGrid dentro de um PageCard com altura definida (ex.: FillHeight). */

.scrollable-grid {
    height: 100%;
    border-style: hidden !important;
}

.scrollable-grid .rz-data-grid-data {
    overflow: auto;
}

/* ---------------- + Scroll horizontal com colunas de largura fixa ---------------- */
/* Só para grids em que TODAS as colunas têm Width explícito (sem coluna "elástica" a
   preencher o resto). table-layout:auto (o padrão do Radzen) encolhe essas colunas para
   caber no contentor em vez de as deixar em overflow; fixed + max-content faz a tabela
   respeitar a largura de cada coluna e ativa o scroll horizontal quando não cabem.
   Combinar com .scrollable-grid; não usar sozinha numa grid com coluna sem Width, que
   ficaria reduzida ao conteúdo em vez de esticar. */

.scrollable-grid-fixed-columns .rz-data-grid-data .rz-grid-table {
    table-layout: fixed;
    width: max-content;
    min-width: 100%;
}

/* Linha expandida com a árvore de agrupamentos de um ativo (AssetGroupingTree): fundo claro na largura toda da
   linha — a árvore tem largura limitada para caber no ecrã e, com o fundo nela, ficava cortado a meio. */
.rz-data-grid .rz-expanded-row-content:has(.gtree) > td,
.rz-data-grid .rz-expanded-row-content:has(.gtree) .rz-expanded-row-template {
    background-color: var(--rz-base-100, #fafafa) !important;
}

/* Scroll horizontal só nas linhas pai: a área expandida fica parada, com a largura visível da tabela.
   - o Radzen põe overflow:hidden em todas as células, o que prendia o sticky à célula (que anda com o scroll);
   - o template fica sticky à esquerda do contentor com scroll (.rz-data-grid-data);
   - 100cqw = largura visível desse contentor (container query), para o conteúdo não passar da margem direita. */
.rz-data-grid .rz-data-grid-data:has(.gtree) {
    container-type: inline-size;
}

/* Sem padding lateral na célula: o sticky só cola depois de o scroll passar a posição natural do template e
   não sai da caixa de conteúdo da célula — com os 0.5rem do Radzen, a área expandida andava esses píxeis com o
   scroll no início e era empurrada no fim. O espaçamento passa para dentro do template (mesmo aspeto). */
.rz-data-grid .rz-expanded-row-content:has(.gtree) > td {
    overflow: visible !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.rz-data-grid .rz-expanded-row-content:has(.gtree) .rz-expanded-row-template {
    position: sticky;
    left: 0;
    width: 100cqw;
    box-sizing: border-box;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

/* ---------------- Linhas clicáveis (abrem o detalhe) ---------------- */
/* Pôr class="grid-rows-clickable" na grid que tem RowClick: mão no cursor e realce da linha ao passar o
   rato, para se perceber que a linha abre alguma coisa. O realce é opaco para cobrir também as células
   fixas (coluna de Ações), que têm fundo próprio. Opcional: class="grid-row-link" no texto principal
   da linha (ex.: nome) para ficar na cor primária durante o hover. */
.grid-rows-clickable .rz-data-row {
    cursor: pointer;
}

.grid-rows-clickable .rz-data-row:hover > td {
    background-color: var(--rz-primary-lighter) !important;
}

.grid-rows-clickable .rz-data-row .grid-row-link {
    transition: color 0.15s;
}

.grid-rows-clickable .rz-data-row:hover .grid-row-link {
    color: var(--rz-primary);
}

/* ================================================================ Densidade compacta (todo o site) */
/* Fonte base mais pequena: o Radzen aplica --rz-root-font-size ao <html>, por isso tudo o que é
   em rem (Radzen e Bootstrap — texto, inputs, botões, paginação, espaçamentos) encolhe na mesma
   proporção. Os valores abaixo reduzem ainda a altura das linhas das tabelas e dos botões. */
:root {
    --rz-root-font-size: 14px;
}

/* Tabelas: linhas mais baixas (sobrepõe corporate-theme.css, carregado antes). */
.rz-density-compact .rz-grid-table td {
    padding: 0.2rem 0.5rem;
}

.rz-density-compact .rz-grid-table thead th {
    padding: 0.3rem 0.5rem;
}

.rz-grid-table td,
.rz-grid-table th {
    line-height: 1.25;
}

/* Coluna estreita só com um ícone/estado (ex.: triângulo de aviso, bolinha de estado). Pôr
   CssClass e HeaderCssClass="grid-icon-cell" na coluna. Necessário porque o corporate-theme.css põe
   todas as colunas a "auto" quando há coluna de Ações fixa (dividem a folga por igual e o Width
   deixa de contar); aqui volta-se a fixar esta — com especificidade maior do que essa regra. */
.rz-data-grid .rz-grid-table th.grid-icon-cell,
.rz-data-grid .rz-grid-table td.grid-icon-cell,
.rz-data-grid .rz-grid-table:has(th.grid-icon-cell:first-child) colgroup col:first-child {
    width: 2rem !important;
    min-width: 2rem !important;
    max-width: 2rem !important;
}

.rz-data-grid .rz-grid-table th.grid-icon-cell,
.rz-data-grid .rz-grid-table td.grid-icon-cell {
    padding-left: 0.4rem !important;
    padding-right: 0 !important;
}

/* Coluna de seleção (checkbox) no início da grid: CssClass e HeaderCssClass="grid-check-cell". Mais larga do
   que a grid-icon-cell e centrada — em 2rem a caixa do checkbox (com o contorno) ficava cortada à direita. */
.rz-data-grid .rz-grid-table th.grid-check-cell,
.rz-data-grid .rz-grid-table td.grid-check-cell,
.rz-data-grid .rz-grid-table:has(th.grid-check-cell:first-child) colgroup col:first-child {
    width: 2.75rem !important;
    min-width: 2.75rem !important;
    max-width: 2.75rem !important;
}

.rz-data-grid .rz-grid-table th.grid-check-cell,
.rz-data-grid .rz-grid-table td.grid-check-cell {
    padding: 0 !important;
    text-align: center !important;
    overflow: visible !important;
}

.rz-data-grid .rz-grid-table th.grid-check-cell > div,
.rz-data-grid .rz-grid-table td.grid-check-cell .rz-cell-data {
    display: flex;
    justify-content: center;
    padding: 0 !important;
    overflow: visible !important;
}

/* Botões dentro das tabelas: só ícone e com texto. */
.rz-data-grid .icon-only-btn.rz-button {
    width: 1.5rem;
    height: 1.5rem;
    min-width: 1.5rem;
    min-height: 1.5rem;
}

.rz-data-grid .icon-only-btn.rz-button i {
    font-size: 0.7rem;
}

.rz-data-grid .rz-button:not(.icon-only-btn) {
    min-height: 1.5rem;
    padding: 0.1rem 0.5rem;
    font-size: 0.75rem;
    line-height: 1.2;
}

.rz-data-grid .rz-badge {
    font-size: 0.7rem;
    padding: 0.1rem 0.4rem;
}

/* Botões fora das tabelas (IconButton / AddButton / ...). */
.compact-button {
    padding: 4px 8px;
    font-size: 0.85rem;
    min-width: 1.9rem;
    min-height: 1.9rem;
}

.icon-only-btn.rz-button,
.compact-button.rz-button-icon-only,
.rz-button.compact-button.rz-button-icon-only {
    width: 1.9rem;
    height: 1.9rem;
    min-width: 1.9rem;
    min-height: 1.9rem;
}

.icon-only-btn.rz-button.rz-button-sm {
    width: 1.7rem;
    height: 1.7rem;
    min-width: 1.7rem;
    min-height: 1.7rem;
}

.icon-only-btn.rz-button.rz-button-xs {
    width: 1.5rem;
    height: 1.5rem;
    min-width: 1.5rem;
    min-height: 1.5rem;
}

/* Seletor de empresa na sidebar: escondido no modo "só ícones" (não cabe). */
.g-sidenav-hidden .sidebar-company-selector {
    display: none;
}

/* Sem empresas associadas o seletor não desenha nada — esconde também o espaço do item. */
.sidebar-company-selector:not(:has(*)) {
    display: none;
}

/* Seletor de empresas: sem o contorno/sombra verde (cor primária) do Radzen ao passar o rato ou focar —
   na sidebar escura destoava. */
.sidebar-company-selector .rz-dropdown,
.sidebar-company-selector .rz-dropdown:hover,
.sidebar-company-selector .rz-dropdown:focus,
.sidebar-company-selector .rz-dropdown:focus-within,
.sidebar-company-selector .rz-dropdown.rz-state-focused,
.sidebar-company-selector .rz-multiselect,
.sidebar-company-selector .rz-multiselect:hover,
.sidebar-company-selector .rz-multiselect:focus,
.sidebar-company-selector .rz-multiselect:focus-within,
.sidebar-company-selector .rz-multiselect.rz-state-focused {
    border-color: transparent !important;
    box-shadow: none !important;
    outline: none !important;
}

/* Barra de filtros (SplitBar): altura única de 2rem para pesquisa, dropdowns e botões. */
.content-filters {
    align-items: center !important;
}
.content-filters .fvc-search-box .form-control,
.content-filters .fvc-search-box .input-group-text,
.fvc-search-box .form-control,
.fvc-search-box .input-group-text {
    height: 2rem;
    min-height: 2rem;
    padding-top: 0;
    padding-bottom: 0;
    font-size: 0.8rem;
}
.content-filters .rz-dropdown,
.content-filters .rz-datepicker input {
    height: 2rem;
    min-height: 2rem;
    line-height: 2rem;
}
.content-filters .rz-button,
.content-filters .rz-button.compact-button,
.content-filters .rz-button.compact-button.rz-button-icon-only {
    height: 2rem;
    min-height: 2rem;
    min-width: 2rem;
}

/* Alternador de vista (grelha/lista) — ver Components/ViewToggle.razor */
.view-toggle {
    display: inline-flex;
    height: 2rem;
    border: 1px solid var(--rz-base-300, #d1d5db);
    border-radius: 0.5rem;
    background: #fff;
    overflow: hidden;
}
.view-toggle button {
    min-width: 2rem;
    padding: 0 0.6rem;
    white-space: nowrap;
    border: 0;
    background: transparent;
    color: var(--rz-text-secondary-color, #64748b);
    font-size: 0.8rem;
    cursor: pointer;
}
.view-toggle button.active {
    background: var(--fvc-sidenav-bg);
    color: #fff;
}
.view-toggle button:not(.active):hover {
    background: var(--rz-base-200, #f1f5f9);
}

/* Espaço à volta do conteúdo das páginas: pouco por baixo da navbar e ainda menos no fundo. */
.main-content > .container-fluid {
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
}

/* ================================================================ Separadores (Definições) compactos */
/* Mesma densidade dos restantes ecrãs: menos altura na barra, letra e espaçamento dos separadores mais pequenos. */
.tabs-layout-shell .rz-tabview {
    padding: 0.125rem 0.25rem !important;
}

.tabs-layout-shell .rz-tabview-nav {
    min-height: 0 !important;
    padding: 0.125rem !important;
    gap: 0.125rem;
}

.tabs-layout-shell .rz-tabview-nav li a,
.tabs-layout-shell .rz-tabview-nav li button {
    padding: 0.3rem 0.7rem !important;
    min-height: 0 !important;
    line-height: 1.25;
}

.tabs-layout-shell .rz-tabview-nav .rz-tabview-title,
.tabs-layout-shell .rz-tabview-nav li a,
.tabs-layout-shell .rz-tabview-nav li button {
    font-size: 0.8125rem !important;
}

.tabs-layout-right {
    min-height: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
