:root {
    --ad-menu-size: 260px;

    /* Central Vet Pro: semantic design tokens */
    --cv-color-primary: #176b5b;
    --cv-color-primary-hover: #105548;
    --cv-color-primary-soft: #e3f3ef;
    --cv-color-surface: #ffffff;
    --cv-color-surface-subtle: #f5f7f8;
    --cv-color-border: #cbd5d8;
    --cv-color-text: #172124;
    --cv-color-text-muted: #536469;
    --cv-color-focus: #0b63ce;
    --cv-color-info: #075ea8;
    --cv-color-info-soft: #e5f1fb;
    --cv-color-success: #167044;
    --cv-color-success-soft: #e4f5eb;
    --cv-color-warning: #8a5300;
    --cv-color-warning-soft: #fff2d6;
    --cv-color-danger: #b42318;
    --cv-color-danger-soft: #fdecea;
    --cv-space-1: 0.25rem;
    --cv-space-2: 0.5rem;
    --cv-space-3: 0.75rem;
    --cv-space-4: 1rem;
    --cv-space-5: 1.5rem;
    --cv-space-6: 2rem;
    --cv-radius-sm: 0.375rem;
    --cv-radius-md: 0.625rem;
    --cv-radius-lg: 1rem;
    --cv-shadow-sm: 0 1px 3px rgb(23 33 36 / 12%);
    --cv-shadow-md: 0 8px 24px rgb(23 33 36 / 12%);
    --cv-content-max: 90rem;
    --cv-touch-target: 2.75rem;
    --cv-breakpoint-mobile: 36rem;
    --cv-breakpoint-tablet: 64rem;
}

[data-bs-theme="dark"] {
    --cv-color-primary: #65cdb6;
    --cv-color-primary-hover: #8cddca;
    --cv-color-primary-soft: #143e36;
    --cv-color-surface: #20272a;
    --cv-color-surface-subtle: #172023;
    --cv-color-border: #526167;
    --cv-color-text: #f4f7f8;
    --cv-color-text-muted: #bdc9cd;
    --cv-color-focus: #77b7ff;
    --cv-color-info: #8bc8ff;
    --cv-color-info-soft: #153b5b;
    --cv-color-success: #81d4a8;
    --cv-color-success-soft: #173d2b;
    --cv-color-warning: #ffd17a;
    --cv-color-warning-soft: #4a3515;
    --cv-color-danger: #ffaaa2;
    --cv-color-danger-soft: #52231f;
}

/* Keyboard visibility and minimum interactive area */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
    outline: 3px solid var(--cv-color-focus) !important;
    outline-offset: 2px;
    box-shadow: none !important;
}

:where(.btn, .form-control, .form-select, .select2-selection) {
    border-radius: var(--cv-radius-sm);
}

.btn-primary {
    --bs-btn-bg: var(--cv-color-primary);
    --bs-btn-border-color: var(--cv-color-primary);
    --bs-btn-hover-bg: var(--cv-color-primary-hover);
    --bs-btn-hover-border-color: var(--cv-color-primary-hover);
}

/* ------------------------------------------------------------------
   Central Vet Pro: application shell (sidebar, topbar, footer)
   Single dark sidebar (no master icon rail), light topbar with global
   search, notifications, help and user card; one-line brand footer.
   ------------------------------------------------------------------ */
:root {
    --cv-shell-sidebar-bg: #0f2a24;
    --cv-shell-sidebar-bg-end: #0b211c;
    --cv-shell-sidebar-text: #c9dbd6;
    --cv-shell-sidebar-text-strong: #ffffff;
    --cv-shell-sidebar-hover: rgb(255 255 255 / 7%);
    --cv-shell-sidebar-open: rgb(255 255 255 / 10%);
    --cv-shell-sidebar-active: #1f8a73;
    --cv-shell-topbar-height: 4rem;
    --ad-menu-item-color: var(--cv-shell-sidebar-active);
}

/* Sidebar */
[data-menu-theme="dark"] #sidebar {
    background: linear-gradient(180deg, var(--cv-shell-sidebar-bg) 0%, var(--cv-shell-sidebar-bg-end) 100%);
    color: var(--cv-shell-sidebar-text);
}

#sidebar .cv-brand {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: var(--cv-space-3);
    height: var(--cv-shell-topbar-height);
    padding: 0 var(--cv-space-4);
    text-align: start;
}

[data-menu-theme="dark"] #sidebar .cv-brand {
    background: rgb(0 0 0 / 18%);
    border-color: rgb(255 255 255 / 8%) !important;
}

#sidebar .cv-brand-mark {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: var(--cv-radius-md);
    background: var(--cv-shell-sidebar-active);
}

#sidebar .cv-brand-icon {
    margin: 0 !important;
    color: #ffffff;
}

#sidebar .cv-brand-wordmark {
    color: var(--cv-shell-sidebar-text-strong);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    white-space: nowrap;
}

#sidebar .sidebar-menu-title {
    display: block;
    padding: var(--cv-space-4) var(--cv-space-4) var(--cv-space-1);
    color: rgb(201 219 214 / 60%);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
}

[data-menu-theme="dark"] #sidebar a.sidebar-link {
    display: flex;
    align-items: center;
    gap: var(--cv-space-2);
    min-height: 2.5rem;
    color: var(--cv-shell-sidebar-text);
}

[data-menu-theme="dark"] #sidebar a.sidebar-link:hover {
    color: var(--cv-shell-sidebar-text-strong);
    background: var(--cv-shell-sidebar-hover);
}

[data-menu-theme="dark"] #sidebar a.sidebar-link[aria-expanded="true"] {
    color: var(--cv-shell-sidebar-text-strong);
    background: var(--cv-shell-sidebar-open);
}

#sidebar a.sidebar-link.active,
#sidebar a.sidebar-link.active:hover {
    background: var(--cv-shell-sidebar-active) !important;
    color: #ffffff !important;
    font-weight: 600;
}

/* Hamburger (#sidebar-toggle toggles #sidebar.collapsed in theme.js):
   collapse to zero width instead of the base negative margin, so the
   sidebar really leaves the layout and the content takes the full width. */
#sidebar.collapsed {
    width: 0;
    min-width: 0;
    max-width: 0;
    margin-left: 0;
    overflow: hidden;
    box-shadow: none !important;
}

/* Sidebar final (T-19): coluna com o menu principal em cima e
   Configurações/Ajuda (ícone com .cv-menu-footer em menu.xml) colados
   ao rodapé; itens sem tela (.cv-menu-disabled, marcados por cv-shell.js)
   ficam esmaecidos, sem navegação e com o selo "Em breve". */
#sidebar {
    height: 100vh;
}

#sidebar #menu-wrapper {
    display: flex;
    flex-direction: column;
    height: auto !important;
    min-height: 100%;
}

#sidebar #side-menu {
    display: flex;
    flex: 1 0 auto;
    flex-direction: column;
}

#sidebar #side-menu > li:has(> a > .cv-menu-footer) {
    margin-top: auto;
    padding-top: var(--cv-space-2);
    border-top: 1px solid rgb(255 255 255 / 10%);
}

#sidebar #side-menu > li:has(> a > .cv-menu-footer) ~ li:has(> a > .cv-menu-footer) {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}

#sidebar a.sidebar-link.cv-menu-disabled,
#sidebar a.sidebar-link.cv-menu-disabled:hover {
    cursor: not-allowed;
    color: rgb(201 219 214 / 55%) !important;
    background: transparent !important;
}

#sidebar .cv-menu-soon {
    margin-inline-start: auto;
    padding: 0.05rem 0.45rem;
    border: 1px solid rgb(255 255 255 / 18%);
    border-radius: 999px;
    color: rgb(201 219 214 / 80%);
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

/* Seletor de unidade (montado por cv-shell.js em [data-cv-unit-switch]) */
.cv-unit-switch__select,
.cv-unit-switch__select.form-select {
    min-width: 180px;
    height: 2.25rem;
    padding-block: 0;
    border: 1px solid var(--cv-color-border);
    border-radius: var(--cv-radius-md);
    background-color: var(--cv-color-surface);
    color: var(--cv-color-text);
    font-size: 0.875rem;
}

.cv-unit-switch__select:hover {
    border-color: var(--cv-color-primary);
}

.cv-unit-switch__select:focus,
.cv-unit-switch__select:focus-visible {
    border-color: var(--cv-color-primary);
    outline: 3px solid var(--cv-color-focus) !important;
    outline-offset: 2px;
    box-shadow: none;
}

.cv-unit-switch__select:disabled {
    background-color: var(--cv-color-surface-subtle);
    color: var(--cv-color-text-muted);
    opacity: 1;
}

/* Topbar */
.cv-topbar {
    min-height: var(--cv-shell-topbar-height);
    gap: var(--cv-space-3);
    background: var(--cv-color-surface);
}

.cv-topbar-body {
    display: flex;
    align-items: center;
    gap: var(--cv-space-3);
    padding: 0;
}

.cv-topbar-toggle,
.cv-topbar-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    border-radius: var(--cv-radius-md);
    color: var(--cv-color-text-muted);
    font-size: 1.15rem;
}

.cv-topbar-icon.dropdown-toggle::after {
    display: none;
}

/* Botão sem ação ainda: continua recebendo hover, para o tooltip (title) aparecer. */
.cv-topbar-icon[aria-disabled="true"] {
    opacity: 0.55;
    cursor: not-allowed;
}

.cv-global-search {
    position: relative;
    flex: 1 1 auto;
    max-width: 32rem;
    margin: 0;
}

.cv-global-search__icon {
    position: absolute;
    inset-block-start: 50%;
    inset-inline-start: var(--cv-space-3);
    transform: translateY(-50%);
    color: var(--cv-color-text-muted);
    pointer-events: none;
}

.cv-global-search__input {
    height: 2.5rem;
    padding-inline-start: 2.4rem;
    border-color: var(--cv-color-border);
    border-radius: 999px !important;
    background: var(--cv-color-surface-subtle);
}

.cv-global-search__input:focus {
    background: var(--cv-color-surface);
    border-color: var(--cv-color-primary);
}

.cv-topbar-actions {
    display: flex;
    align-items: center;
    gap: var(--cv-space-2);
    margin-inline-start: auto;
}

.cv-user-card__button {
    display: inline-flex;
    align-items: center;
    gap: var(--cv-space-2);
    padding: var(--cv-space-1) var(--cv-space-2);
    border-radius: var(--cv-radius-md);
    text-align: start;
}

.cv-user-card__avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--cv-color-primary-soft);
    color: var(--cv-color-primary);
}

.cv-user-card__text {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.cv-user-card__name {
    color: var(--cv-color-text);
    font-weight: 600;
}

.cv-user-card__role {
    color: var(--cv-color-text-muted);
    font-size: 0.8rem;
}

.cv-user-card__role:empty {
    display: none;
}

/* Footer */
.cv-footer {
    padding: var(--cv-space-3) var(--cv-space-4);
}

.cv-footer__text {
    margin: 0;
    color: var(--cv-color-text-muted);
    font-size: 0.85rem;
    text-align: center;
}

.cv-footer__text strong {
    color: var(--cv-color-primary);
    letter-spacing: 0.04em;
}

.cv-footer__sep {
    margin-inline: var(--cv-space-2);
    opacity: 0.6;
}

body {
    font-family: 'Source Sans Pro', system-ui, sans-serif;
}

.cv-page {
    width: min(100%, var(--cv-content-max));
    margin-inline: auto;
    color: var(--cv-color-text);
}

.cv-page-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--cv-space-4);
    margin-block-end: var(--cv-space-5);
}

.cv-page-title {
    margin: 0;
    font-size: clamp(1.5rem, 1.1rem + 1.1vw, 2.25rem);
    line-height: 1.2;
}

.cv-page-description {
    max-width: 70ch;
    margin: var(--cv-space-2) 0 0;
    color: var(--cv-color-text-muted);
}

.cv-demo-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--cv-space-4);
}

.cv-section {
    padding: var(--cv-space-5);
    border: 1px solid var(--cv-color-border);
    border-radius: var(--cv-radius-md);
    background: var(--cv-color-surface);
    box-shadow: var(--cv-shadow-sm);
}

.cv-section > :last-child {
    margin-bottom: 0;
}

.cv-state {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--cv-space-3);
    align-items: start;
    padding: var(--cv-space-4);
    border: 1px solid var(--cv-color-border);
    border-inline-start-width: 0.3rem;
    border-radius: var(--cv-radius-md);
    background: var(--cv-color-surface-subtle);
}

.cv-state + .cv-state {
    margin-top: var(--cv-space-3);
}

.cv-state__icon {
    width: 1.5rem;
    text-align: center;
    line-height: 1.5;
}

.cv-state__title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
}

.cv-state__message {
    margin: var(--cv-space-1) 0 0;
    color: var(--cv-color-text-muted);
}

.cv-state--loading,
.cv-state--info {
    border-inline-start-color: var(--cv-color-info);
    background: var(--cv-color-info-soft);
}

.cv-state--success {
    border-inline-start-color: var(--cv-color-success);
    background: var(--cv-color-success-soft);
}

.cv-state--warning,
.cv-state--empty {
    border-inline-start-color: var(--cv-color-warning);
    background: var(--cv-color-warning-soft);
}

.cv-state--error,
.cv-state--denied {
    border-inline-start-color: var(--cv-color-danger);
    background: var(--cv-color-danger-soft);
}

.cv-skeleton {
    display: block;
    width: 100%;
    height: 0.75rem;
    margin-top: var(--cv-space-2);
    border-radius: 999px;
    background: linear-gradient(90deg, var(--cv-color-border) 25%, var(--cv-color-surface) 50%, var(--cv-color-border) 75%);
    background-size: 200% 100%;
    animation: cv-skeleton-loading 1.5s infinite linear;
}

.cv-table-scroll {
    max-width: 100%;
    overflow-x: auto;
    border-radius: var(--cv-radius-sm);
    -webkit-overflow-scrolling: touch;
}

.cv-visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

.cv-visually-hidden.focusable:focus {
    position: fixed !important;
    z-index: 1100;
    inset: var(--cv-space-2) auto auto var(--cv-space-2);
    width: auto !important;
    height: auto !important;
    padding: var(--cv-space-2) var(--cv-space-3) !important;
    margin: 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
    color: var(--cv-color-text);
    background: var(--cv-color-surface);
    border: 2px solid var(--cv-color-focus) !important;
    border-radius: var(--cv-radius-sm);
}

@keyframes cv-skeleton-loading {
    from { background-position: 100% 0; }
    to { background-position: -100% 0; }
}

@media (pointer: coarse) {
    :where(.btn, button, input:not([type="hidden"]), select, .form-select, .dropdown-item) {
        min-height: var(--cv-touch-target);
    }
}

/* Tablet */
@media (max-width: 64rem) {
    .cv-demo-grid {
        grid-template-columns: 1fr;
    }

    .cv-section {
        padding: var(--cv-space-4);
    }
}

/* Mobile */
@media (max-width: 36rem) {
    .cv-page-header {
        flex-direction: column;
    }

    .cv-page-header .btn {
        width: 100%;
        min-height: var(--cv-touch-target);
    }

    .cv-state {
        grid-template-columns: 1fr;
    }

    #adianti_div_content_wrapper {
        padding-inline: var(--cv-space-2) !important;
    }

    .cv-user-card__text {
        display: none;
    }

    .cv-footer__sep {
        display: none;
    }

    .cv-footer__text > span:not(.cv-footer__sep) {
        display: block;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}

@media (forced-colors: active) {
    .cv-state,
    .cv-section {
        border: 1px solid CanvasText;
    }
}

/* Regra do projeto: rótulos sempre alinhados à esquerda (formulários, grids, cortinas
   laterais e views). Sobrepõe o text-align:right do BootstrapFormBuilder (>=576px) e o
   alinhamento por coluna que o TDataGrid grava inline no cabeçalho. Valores numéricos nas
   células continuam livres para alinhar à direita. */
.control-label,
.col-form-label,
.form-label,
.tformrow > .control-label,
label {
    text-align: left !important;
}
th.tdatagrid_col,
.tdatagrid_head th {
    text-align: left !important;
}
