:root {
    --primary: #08a9a9;
    --primary-dark: #077d7d;
    --success: #1aa053;
    --info: #078f99;
    --warning: #f16a1b;
    --danger: #e5484d;
    --bg: #f3f7f7;
    --surface: #ffffff;
    --text: #333a40;
    --muted: #6d777c;
    --line: #dce6e6;
    --sidebar: #30373b;
    --shadow: 0 10px 30px rgba(31, 48, 51, .08);
    --bs-primary: #08a9a9;
    --bs-primary-rgb: 8, 169, 169;
    --bs-link-color: #087f83;
    --bs-link-hover-color: #05696d;
    /* Tints suaves para os ícones/pílulas dos cards (stat-card) */
    --primary-soft: #e4f7f7;
    --success-soft: #e3f5ec;
    --danger-soft:  #fdecec;
    --warning-soft: #fdeee1;
    --info-soft:    #e1f4f5;
    --neutral-soft: #f1f3f6;
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;
    color: var(--text);
    background: var(--bg);
    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

a {
    text-decoration: none;
}

.app-shell {
    display: flex;
    min-height: 100vh;
}

.sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 1040;
    display: flex;
    overflow: hidden;
    width: 244px;
    flex-direction: column;
    background: var(--sidebar);
    border-right: 1px solid #454d51;
    padding: 20px 14px;
    box-shadow: 10px 0 30px rgba(28, 38, 41, .08);
    transition: transform .25s ease, width .2s ease;
}
.sidebar.is-collapsed {
    transform: translateX(-100%);
}
.app-shell.has-collapsed-sidebar .main-content {
    margin-left: 0 !important;
}

.brand {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 12px;
    color: #fff;
    margin-bottom: 24px;
}

.brand-mark {
    display: inline-flex;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    color: #fff;
    background: linear-gradient(135deg, #0bc0c0, #078d8d);
    font-weight: 800;
    font-size: 18px;
    letter-spacing: -0.5px;
    box-shadow: 0 8px 18px rgba(8, 169, 169, .28);
}

.brand strong,
.brand small {
    display: block;
}

.brand small {
    color: #aeb9bd;
    font-size: 12px;
}

.sidebar-nav {
    display: grid;
    overflow-x: hidden;
    overflow-y: auto;
    min-height: 0;
    flex: 1 1 auto;
    align-content: start;
    gap: 4px;
    padding-right: 4px;
    padding-bottom: 16px;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    scrollbar-color: rgba(187, 207, 210, .5) transparent;
    scrollbar-width: thin;
}

.sidebar-nav::-webkit-scrollbar {
    width: 6px;
}

.sidebar-nav::-webkit-scrollbar-track {
    background: transparent;
}

.sidebar-nav::-webkit-scrollbar-thumb {
    background: rgba(187, 207, 210, .42);
    border-radius: 999px;
}

.sidebar-nav::-webkit-scrollbar-thumb:hover {
    background: rgba(214, 229, 231, .65);
}

.sidebar-section {
    margin: 14px 10px 5px;
    color: #89959a;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.sidebar-nav a {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
    padding: 8px 12px;
    color: #c5ced1;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
}

.sidebar-nav a > i {
    display: inline-flex;
    width: 18px;
    flex: 0 0 18px;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

.sidebar-nav a:hover,
.sidebar-nav a.active {
    color: #fff;
    background: linear-gradient(135deg, rgba(11, 192, 192, .95), rgba(7, 139, 139, .95));
    box-shadow: 0 7px 18px rgba(4, 27, 29, .18);
}

.main-content {
    width: 100%;
    margin-left: 244px;
    display: flex;
    min-height: 100vh;
    flex-direction: column;
}

.topbar {
    position: sticky;
    top: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    min-height: 86px;
    padding: 18px 32px;
    background: rgba(243, 247, 247, .9);
    border-bottom: 1px solid rgba(220, 230, 230, .78);
    backdrop-filter: blur(14px);
}

.topbar h1 {
    margin: 0;
    font-size: 24px;
    font-weight: 800;
}

.eyebrow {
    margin: 0;
    color: var(--primary);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.topbar-actions {
    display: flex;
    align-items: center;
    gap: 12px;
}

.search-box {
    align-items: center;
    gap: 8px;
    min-width: 320px;
    min-height: 44px;
    padding: 0 14px;
    color: var(--muted);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
}

.search-box input {
    width: 100%;
    border: 0;
    outline: 0;
    background: transparent;
}

.avatar,
.icon-btn {
    display: inline-flex;
    width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    color: var(--text);
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
}

.content-area {
    flex: 1;
    padding: 0 32px 32px;
}

.hero-panel {
    display: flex;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 24px;
    padding: 28px;
    color: #fff;
    background: linear-gradient(135deg, #343c40, #087f83 72%, #09adad);
    border-radius: 8px;
    box-shadow: var(--shadow);
}

.hero-panel h2 {
    max-width: 760px;
    margin: 0 0 10px;
    font-size: 30px;
    font-weight: 800;
}

.hero-panel p {
    max-width: 760px;
    margin: 0;
    color: rgba(255, 255, 255, .82);
}

.hero-metrics {
    min-width: 240px;
    padding: 18px;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 8px;
}

.hero-metrics span,
.hero-metrics small {
    display: block;
    color: rgba(255, 255, 255, .78);
}

.hero-metrics strong {
    display: block;
    margin: 8px 0;
    font-size: 28px;
}

.metric-card,
.panel {
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow);
}

.metric-card {
    min-height: 150px;
    padding: 22px;
}

.metric-card span,
.metric-card strong {
    display: block;
}

.metric-card span {
    margin-top: 18px;
    color: var(--muted);
    font-weight: 700;
}

.metric-card strong {
    margin-top: 6px;
    font-size: 28px;
}

.metric-icon {
    display: inline-flex;
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    color: #fff;
    border-radius: 8px;
    font-size: 22px;
}

.tone-primary { background: var(--primary); }
.tone-info { background: var(--info); }
.tone-success { background: var(--success); }
.tone-warning { background: var(--warning); }

.panel {
    padding: 22px;
}

.panel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 18px;
}

.panel-header h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 800;
}

.panel-header p {
    margin: 4px 0 0;
    color: var(--muted);
}

.table {
    margin: 0;
}

.table thead th {
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
}

.empty-row,
.empty-state {
    color: var(--muted);
    text-align: center;
}

.tag-pill,
.status-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
}

.tag-pill {
    color: var(--primary);
    background: rgba(8, 169, 169, .1);
}

.status-pill {
    color: var(--success);
    background: rgba(26, 160, 83, .1);
}

.status-pill.is-active {
    color: var(--success);
    background: rgba(26, 160, 83, .12);
}

.status-pill.is-inactive {
    color: #64748b;
    background: #f1f5f9;
}

.equipment-list {
    display: grid;
    gap: 12px;
}

.equipment-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.equipment-item span,
.equipment-item small {
    display: block;
}

.equipment-item span {
    color: var(--text);
    font-weight: 700;
}

.equipment-item small,
.equipment-item em {
    color: var(--muted);
    font-style: normal;
}

.client-form .form-label {
    color: var(--text);
    font-weight: 700;
}

.client-form .form-control,
.client-form .form-select,
.login-card .form-control,
.login-card .input-group-text {
    min-height: 40px;
    border-color: var(--line);
}

.client-form .form-control:focus,
.client-form .form-select:focus,
.login-card .form-control:focus {
    border-color: rgba(8, 169, 169, .55);
    box-shadow: 0 0 0 .2rem rgba(8, 169, 169, .12);
}

/* Impede que o input-group do CNPJ estoure a coluna e empurre o
   campo Status para a próxima linha. min-width:0 libera o shrink
   dos filhos do flex, e o botão pode quebrar o texto em vez de
   forçar largura mínima. */
.client-form .input-group {
    flex-wrap: nowrap;
    min-width: 0;
    max-width: 100%;
}
.client-form .input-group > .form-control {
    min-width: 0;
    width: 1px;
    flex: 1 1 auto;
}
.client-form .input-group > .cnpj-search-btn {
    white-space: nowrap;
    flex: 0 0 auto;
    padding-left: 10px;
    padding-right: 10px;
}

.table-search {
    display: flex;
    flex: 1;
    flex-wrap: wrap;
    gap: 10px;
}

.table-search .form-control {
    border: 0;
    box-shadow: none;
}

.search-input {
    display: flex;
    align-items: center;
    gap: 10px;
    width: min(520px, 100%);
    min-height: 40px;
    padding: 0 14px;
    color: var(--muted);
    background: #f9fafb;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.search-input .form-control {
    width: 100%;
    padding-left: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
}

.search-input .form-control:focus {
    background: transparent;
    border: 0;
    box-shadow: none;
}

.professional-modal {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 56px);
    max-height: calc(100vh - 56px);
    border: 0;
    border-radius: 8px;
    box-shadow: 0 24px 70px rgba(17, 24, 39, .22);
    overflow: hidden;
}

.compact-modal {
    height: auto;
    max-height: none;
}

.modal-xl {
    --bs-modal-width: 1040px;
}

.modal-dialog-scrollable .professional-modal {
    height: calc(100vh - 56px);
    max-height: calc(100vh - 56px);
}

/* Modal: Ajustar Faturas Geradas */
.af-tabela-wrap { max-height: 50vh; overflow-y: auto; }
.af-tabela { font-size: 0.825rem; }
.af-tabela th { font-size: 0.7rem; text-transform: uppercase; color: #6b7280; font-weight: 500; padding: 0.35rem 0.45rem; }
.af-tabela td { padding: 0.3rem 0.45rem; vertical-align: middle; }
.af-tabela input.form-control { font-size: 0.825rem; padding: 0.18rem 0.4rem; }
.af-badge-tipo { font-size: 0.7rem; padding: 0.18rem 0.45rem; }
.af-tipo-warn { box-shadow: 0 0 0 1px #f59e0b inset; }
.af-row-weekend td { background-color: rgba(254, 215, 170, 0.35); }
.af-row-weekend td input.af-venc { background-color: rgba(254, 215, 170, 0.5); }
.af-dia { font-weight: 600; font-size: 0.8rem; }
.af-dias { color: #4b5563; font-variant-numeric: tabular-nums; }
.af-dia-weekend { color: #b45309; }
.af-totalizacao {
    display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; justify-content: space-between;
    background: #f8faff; border: 1px solid #e3e8f5; border-radius: 6px;
    padding: 0.6rem 0.75rem; font-size: 0.85rem; margin-top: 0.75rem;
}
.af-totalizacao strong.fs-5 { font-size: 1.05rem; }
.af-badge-ok {
    background: #d8f5e0; color: #166534; padding: 0.3rem 0.6rem; border-radius: 4px;
    font-size: 0.8rem; display: inline-block; white-space: nowrap;
}
.af-badge-nok {
    background: #fee2e2; color: #991b1b; padding: 0.3rem 0.6rem; border-radius: 4px;
    font-size: 0.8rem; display: inline-block; white-space: nowrap;
}
.af-feedback { font-size: 0.82rem; }
.info-row-modal {
    display: flex; flex-wrap: wrap; gap: 1rem; font-size: 0.85rem;
    padding: 0.5rem 0.75rem; background: #f8faff; border: 1px solid #e3e8f5;
    border-radius: 6px; margin-bottom: 0.75rem;
}
.info-row-modal .item-modal { color: #6b7280; }
.info-row-modal .item-modal strong { color: #1f2937; }
.info-row-modal .item-modal:last-child { margin-left: auto; }
.af-subtotal { font-weight: 600; }

.contract-attachments-list {
    display: grid;
    gap: 8px;
}

.contract-attachments-section {
    background: #f8fafc;
}

.contract-attachment-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.contract-attachment-group {
    min-width: 0;
    padding: 14px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 12px;
    box-shadow: 0 3px 12px rgba(15, 23, 42, .035);
}

.contract-attachment-group-header {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    padding-bottom: 11px;
    border-bottom: 1px solid var(--line);
}

.contract-attachment-group-header strong,
.contract-attachment-group-header small {
    display: block;
}

.contract-attachment-group-header small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.35;
}

.contract-attachment-group-icon {
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    color: var(--primary);
    background: var(--primary-soft);
    border-radius: 10px;
    font-size: 18px;
}

.contract-attachment-upload {
    display: flex;
    align-items: stretch;
    gap: 10px;
}

.contract-attachment-upload .form-control {
    min-width: 0;
    flex: 1 1 auto;
}

.contract-attachment-upload .btn {
    min-width: 150px;
    flex: 0 0 auto;
}

@media (max-width: 575.98px) {
    .contract-attachment-groups {
        grid-template-columns: 1fr;
    }
    .contract-attachment-upload {
        align-items: stretch;
        flex-direction: column;
    }
    .contract-attachment-upload .btn {
        width: 100%;
    }
}

.contract-attachment-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 12px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.contract-attachment-icon {
    display: grid;
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    place-items: center;
    color: var(--primary);
    background: var(--primary-soft);
    border-radius: 8px;
    font-size: 18px;
}

.contract-attachment-copy {
    min-width: 0;
    flex: 1;
}

.contract-attachment-copy strong,
.contract-attachment-copy span,
.contract-attachment-copy small {
    display: block;
    overflow-wrap: anywhere;
}

.contract-attachment-copy span,
.contract-attachment-copy small {
    color: var(--muted);
    font-size: 12px;
}

.contract-attachment-copy .badge {
    display: inline-block;
    margin-right: 5px;
}

@media (max-width: 991.98px) {
    .contract-attachment-groups {
        grid-template-columns: 1fr;
    }
}

.saas-storage-overview,
.company-storage-row td {
    display: flex;
    align-items: center;
    gap: 14px;
}

.saas-storage-overview {
    justify-content: space-between;
    margin: 12px 0;
    padding: 14px 18px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 12px;
}

.saas-storage-overview > div,
.company-storage-row td > div {
    display: flex;
    align-items: center;
    gap: 10px;
}

.saas-storage-overview span,
.company-storage-row span {
    color: var(--muted);
    font-size: 12px;
}

.company-storage-row td {
    background: #f8fbfb;
    border-bottom: 0;
}

.company-storage-row .track {
    height: 7px;
    min-width: 180px;
    flex: 1;
    overflow: hidden;
    background: #e4ecec;
    border-radius: 999px;
}

.company-storage-row .track > span {
    display: block;
    height: 100%;
    background: var(--primary);
    border-radius: inherit;
}

.gf-config-grid {
    display: grid;
    grid-template-columns: repeat(16, minmax(0, 1fr));
    gap: 12px 16px;
    align-items: start;
}

.gf-config-method { grid-column: span 11; }
.gf-config-method.is-full-row { grid-column: 1 / -1; }
.gf-config-base { grid-column: span 5; }
.gf-config-date { grid-column: span 4; }
.gf-config-due { grid-column: span 4; }
.gf-config-stat { grid-column: span 2; }

.gf-config-grid .form-label {
    margin-bottom: 5px;
}

@media (max-width: 991.98px) {
    .gf-config-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .gf-config-method,
    .gf-config-base,
    .gf-config-date,
    .gf-config-due,
    .gf-config-stat {
        grid-column: span 1;
    }
}

@media (max-width: 575.98px) {
    .gf-config-grid {
        grid-template-columns: 1fr;
    }
}

.modal-dialog-scrollable .compact-modal {
    height: auto;
    max-height: none;
}

.modal-heading {
    flex: 0 0 auto;
    align-items: flex-start;
    padding: 14px 20px;
    border-bottom: 1px solid var(--line);
    background: #fff;
}

.modal-heading h2 {
    margin: 0;
    font-size: 20px;
    font-weight: 850;
}

.modal-heading p {
    margin: 4px 0 0;
    color: var(--muted);
}

.record-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin-top: 8px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}

.record-meta span {
    display: inline-flex;
    align-items: center;
}

.professional-modal .modal-body {
    flex: 1 1 auto;
    min-height: 0;
    padding: 18px 20px;
    background: var(--bg);
    overflow-y: auto;
}

.compact-modal .modal-body {
    flex: 0 0 auto;
    min-height: 0;
    padding: 18px 20px;
    background: #fff;
    overflow: visible;
}

.professional-modal > form {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
}

.compact-modal > form {
    flex: 0 0 auto;
}

.professional-modal > form > .modal-body {
    flex: 1 1 auto;
    min-height: 0;
}

.compact-modal > form > .modal-body {
    flex: 0 0 auto;
}

.professional-modal .modal-footer {
    flex: 0 0 auto;
    z-index: 2;
    background: #fff;
    border-top: 1px solid var(--line);
    padding: 12px 20px;
}

.compact-modal .modal-footer {
    padding: 12px 20px;
}

.form-hint {
    display: block;
    margin-top: 6px;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.35;
}

.city-combo {
    display: grid;
    grid-template-columns: minmax(140px, 1fr) 132px;
    gap: 8px;
}

.dynamic-table .city-combo {
    min-width: 320px;
}

.professional-modal .panel {
    box-shadow: none;
}

.panel-header .btn i {
    margin-right: 6px;
}

.page-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 24px;
}

.resource-page {
    display: grid;
    gap: 12px;
}

.topbar-title h1 {
    margin-bottom: 0;
}

.resource-hero {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 18px 20px;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: var(--shadow);
}

.resource-hero h2 {
    margin: 2px 0 4px;
    font-size: 24px;
    font-weight: 850;
}

.resource-hero span {
    color: var(--muted);
}

.resource-hero .btn {
    min-height: 40px;
    white-space: nowrap;
}

.resource-stats {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(140px, 1fr));
    gap: 10px;
}

.resource-stats div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 54px;
    padding: 10px 13px;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(17, 24, 39, .05);
}

.resource-stats span,
.resource-stats strong {
    display: block;
}

.resource-stats span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}

.resource-stats strong {
    margin-top: 0;
    font-size: 19px;
    font-weight: 850;
}

/* Faixa compacta de indicadores (pagina de Contratos, 7 cards). Rotulo
   em cima e valor embaixo para caber os 7 em uma unica linha no desktop,
   com quebra responsiva em telas menores. So afeta quem tem a classe
   .resource-stats--compact -- as demais telas (4 cards) nao mudam. */
.resource-stats.resource-stats--compact {
    grid-template-columns: repeat(7, minmax(0, 1fr));
}
.resource-stats.resource-stats--compact > div {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 1px;
    min-height: 52px;
    padding: 9px 11px;
}
.resource-stats.resource-stats--compact span {
    font-size: 11px;
}
.resource-stats.resource-stats--compact strong {
    font-size: 17px;
    white-space: nowrap;
}
@media (max-width: 1200px) {
    .resource-stats.resource-stats--compact {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}
@media (max-width: 640px) {
    .resource-stats.resource-stats--compact {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ===== Componente stat-card (Opção 2: ícone + contexto) =====
   Usado em todas as telas via Conventions::statCard(). Container proprio
   (.stat-cards) para nao herdar as regras antigas de .resource-stats. */
/* Dimensoes enxutas: em monitor de 19" (1280x1024) a faixa de indicadores nao pode
   consumir a area util da tela. Mesma identidade visual, escala reduzida. */
.stat-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(158px, 1fr));
    gap: 10px;
    margin-bottom: 4px;
}
.stat-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 84px;
    gap: 5px;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 11px;
    padding: 10px 12px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.stat-card:hover {
    border-color: #d7dbe3;
    box-shadow: 0 6px 18px rgba(17, 24, 39, .06);
}
.stat-card__head {
    display: flex;
    align-items: center;
    gap: 8px;
}
.stat-card__icon {
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    background: var(--neutral-soft);
    color: var(--muted);
}
.stat-card__label {
    font-size: 12px;
    font-weight: 600;
    color: var(--muted);
    line-height: 1.2;
}
.stat-card__value {
    font-size: 19px;
    font-weight: 800;
    line-height: 1.05;
    color: var(--text);
    letter-spacing: -.01em;
    font-variant-numeric: tabular-nums;
    overflow-wrap: anywhere;
}
.stat-card__context {
    align-self: flex-start;
    margin-top: auto;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.35;
    padding: 1px 8px;
    border-radius: 999px;
    background: var(--neutral-soft);
    color: var(--muted);
}
.stat-card--accent  .stat-card__icon { background: var(--primary-soft); color: var(--primary); }
.stat-card--success .stat-card__icon { background: var(--success-soft); color: var(--success); }
.stat-card--danger  .stat-card__icon { background: var(--danger-soft);  color: var(--danger); }
.stat-card--warning .stat-card__icon { background: var(--warning-soft); color: var(--warning); }
.stat-card--info    .stat-card__icon { background: var(--info-soft);    color: var(--info); }
.stat-card__context--accent  { background: var(--primary-soft); color: var(--primary); }
.stat-card__context--success { background: var(--success-soft); color: var(--success); }
.stat-card__context--danger  { background: var(--danger-soft);  color: var(--danger); }
.stat-card__context--warning { background: var(--warning-soft); color: var(--warning); }
.stat-card__value--danger  { color: var(--danger); }
.stat-card__value--success { color: var(--success); }

/* ===== Barra de filtros A2 (Conventions::filterBar) =====
   Os grupos de chips [data-f-facet] viram um segmented control (fundo
   neutro, chip ativo em pílula branca). Vale para todas as tabelas. */
.resource-filterbar .btn-group[data-f-facet] {
    background: var(--neutral-soft);
    border: 1px solid var(--line);
    border-radius: 10px;
    padding: 3px;
    gap: 2px;
}
.resource-filterbar .btn-group[data-f-facet] > .btn {
    min-height: 34px;
    border: 0 !important;
    border-radius: 7px !important;
    background: transparent;
    color: var(--muted);
    font-weight: 600;
    box-shadow: none !important;
    padding: 5px 12px;
}
.resource-filterbar .btn-group[data-f-facet] > .btn:hover {
    color: var(--text);
    background: rgba(17, 24, 39, .04);
}
.resource-filterbar .btn-group[data-f-facet] > .btn.active {
    background: var(--surface);
    color: var(--text);
    box-shadow: 0 1px 3px rgba(17, 24, 39, .14) !important;
}
.resource-filterbar .btn-group[data-f-facet] > .btn .badge {
    background: transparent !important;
    color: inherit;
    opacity: .55;
    font-weight: 700;
    padding: 0 0 0 4px;
}
.resource-filterbar select[data-f-facet] {
    border-radius: 8px;
    border-color: var(--line);
    color: var(--text);
    font-weight: 600;
}
.resource-filterbar [data-f-from],
.resource-filterbar [data-f-to] {
    border-radius: 8px;
}
.resource-filterbar [data-f-clear] {
    border-radius: 8px;
    color: var(--muted);
    font-weight: 600;
}

.resource-panel {
    padding: 24px;
    overflow: visible;
    /* Grid item: sem isso o min-width:auto impede o painel de encolher
       abaixo da largura natural da tabela, estourando a pagina. */
    min-width: 0;
}

.resource-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    border-top: 1px solid var(--line);
    margin-top: 12px;
}
.resource-actions .result-count {
    color: var(--muted);
    font-weight: 600;
    font-size: 0.85rem;
}

/* Botoes em tabelas: apenas icone (compactos, com tooltip) */
.btn-icon-only {
    width: 28px;
    height: 28px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 6px;
    font-size: 0.95rem;
    transition: all 0.15s ease;
}
.btn-icon-only:hover {
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(0,0,0,0.08);
}
.btn-icon-only + .btn-icon-only {
    margin-left: 4px;
}

/* DataTables: barra superior com busca, length e paging */
.datatables-top,
div.dataTables_wrapper > div.datatables-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
    gap: 12px;
    flex-wrap: nowrap;
}

/* Filtros do financeiro - todos em uma linha */
.finance-filters {
    width: 100%;
    padding: 12px;
    background: #f9fafb;
    border: 1px solid var(--line);
    border-radius: 8px;
}
.finance-filters .ff-row {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    /* Quebra em varias linhas em vez de rolar. Com nowrap + overflow-x:auto
       os filtros nao cabiam e o .ff-buttons (margin-left:auto) era empurrado
       para fora do scrollport, deixando o botao Filtrar sem area clicavel. */
    flex-wrap: wrap;
    padding-bottom: 2px;
}
.finance-filters .ff-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}
.finance-filters .ff-item .ff-label {
    font-size: 0.65rem;
    font-weight: 700;
    color: #4b5563;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0;
    line-height: 1;
}
.finance-filters .ff-search {
    flex: 1 1 auto;
    min-width: 240px;
}
/* .ff-item.ff-search para ganhar da regra .ff-item .form-control abaixo:
   as duas tinham a mesma especificidade e a de 130px vinha depois, entao o
   input ficava com 130px dentro da caixa de ~370px -- o placeholder cortava
   no meio e o resto da caixa nao focava o campo ao ser clicado. */
.finance-filters .ff-item.ff-search .form-control {
    width: 100%;
    min-width: 0;
}
.finance-filters .ff-item .form-select,
.finance-filters .ff-item .form-control {
    width: 130px;
    min-width: 130px;
}
.finance-filters .ff-dates .form-control {
    width: 105px;
    min-width: 105px;
}
/* Autocomplete de contrato: input um pouco maior que os selects e dropdown
   com largura propria, senao o rotulo com numero_contrato nao cabe. */
.finance-filters .ff-contrato .form-control {
    width: 150px;
    min-width: 150px;
}
.finance-filters .ff-contrato .dropdown-menu {
    min-width: 240px;
}
.finance-filters .ff-buttons {
    flex-direction: row;
    align-items: center;
    gap: 6px;
    margin-left: auto;
}
.finance-filters .ff-buttons .btn {
    white-space: nowrap;
    font-weight: 600;
}
.datatables-search,
div.dataTables_wrapper .datatables-search {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1 1 auto;
    min-width: 0;
}
.datatables-search input.form-control,
div.dataTables_wrapper .datatables-search input {
    min-width: 200px;
    max-width: 320px;
}
div.dataTables_wrapper .dataTables_filter {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    color: var(--muted);
    font-weight: 600;
    font-size: 0.85rem;
}
div.dataTables_wrapper .dataTables_filter input {
    min-width: 200px;
    flex: 1 1 auto;
    margin-left: 8px;
}
div.dataTables_wrapper .dataTables_filter label {
    color: #374151;
    font-weight: 600;
    margin-right: 12px;
}

.resource-toolbar {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    padding: 12px 0;
}

.resource-toolbar > .search-input {
    width: auto;
    min-width: min(320px, 100%);
    max-width: 720px;
    flex: 1 1 420px;
}

.resource-toolbar > .resource-actions {
    flex: 0 0 auto;
    margin: 0 0 0 auto;
    padding: 0;
    border: 0;
}

.resource-toolbar > form {
    flex: 1 1 100%;
    margin-bottom: 4px;
}

.category-filter {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 14px;
}

.category-filter .search-input {
    width: min(420px, 100%);
}

.filter-state {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin: 0 18px 14px;
    padding: 10px 12px;
    color: #334155;
    background: #f8fafc;
    border: 1px solid var(--line);
    border-radius: 8px;
    font-size: 13px;
}

.filter-state:before {
    content: "";
    width: 8px;
    height: 32px;
    flex: 0 0 8px;
    background: var(--primary);
    border-radius: 999px;
}

.filter-state strong {
    color: var(--text);
}

.filterable-table tbody tr.is-filtered-result {
    background: #fbfdff;
}

.filterable-table tbody tr.is-filtered-result td:first-child {
    border-left: 3px solid var(--primary);
}

.category-filter + .filter-state {
    margin-left: 0;
    margin-right: 0;
}

.resource-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
    white-space: nowrap;
}

.table-search .status-select {
    width: 160px;
    min-height: 40px;
    flex: 0 0 160px;
}

.result-count {
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

.data-table {
    width: 100%;
    font-size: 13px !important;
    line-height: 1.35;
}

.data-table thead th {
    padding: 11px 10px;
    background: #f9fafb;
    border-bottom: 1px solid var(--line);
    font-size: 11px;
    font-weight: 750;
    line-height: 1.25;
}

.data-table tbody td {
    padding: 12px 10px;
    border-color: #eef0f4;
    font-size: inherit;
    line-height: inherit;
}

.data-table tfoot th,
.data-table tfoot td {
    padding: 11px 10px;
    font-size: 11px;
    line-height: 1.25;
}

div.dataTables_wrapper {
    font-size: 13px;
}

div.dataTables_wrapper .dataTables_length,
div.dataTables_wrapper .dataTables_info,
div.dataTables_wrapper .dataTables_paginate {
    font-size: 12px;
}

/* Tabela do financeiro: prioriza cliente/descricao, compacta o resto.
   Cabe sem scroll horizontal e sem cortar texto: as colunas curtas ficam
   em nowrap (largura natural) e Cliente/Descricao quebram linha, absorvendo
   a sobra. Sem ellipsis: nenhum conteudo e cortado. */
.data-table-financeiro {
    width: 100%;
    table-layout: auto;
}
.data-table-financeiro thead th {
    white-space: nowrap;
}
/* 10 colunas (Contrato dentro de Origem, cobranca dentro de Vencimento e
   meio dentro de Status): com os 18px do .data-table o padding sozinho ja
   estourava a tela e obrigava o scroll lateral. Compactado so aqui. */
.data-table-financeiro thead th,
.data-table-financeiro tbody td {
    display: table-cell !important;
    visibility: visible !important;
    padding-left: 8px;
    padding-right: 8px;
    font-size: .86rem;
}
.data-table-financeiro td:nth-child(1) {   /* Codigo */
    width: 70px;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(2) {   /* Tipo */
    width: 65px;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(3) {   /* Origem + contrato */
    width: 95px;
    white-space: normal;   /* "Manut. (Contratante)" quebra em 2 linhas */
}
.data-table-financeiro td:nth-child(4) {   /* Cliente (PRIORIDADE) */
    min-width: 140px;
    white-space: normal;
    overflow-wrap: anywhere;
}
.data-table-financeiro td:nth-child(5) {   /* Descricao (PRIORIDADE) */
    min-width: 140px;
    white-space: normal;
    overflow-wrap: anywhere;
}
.data-table-financeiro td:nth-child(6) {   /* Vencimento (+ original) */
    width: 95px;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(7) {   /* Valor */
    width: 95px;
    text-align: right;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(8) {   /* Status + meio */
    width: 80px;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(9) {   /* Boleto */
    width: 70px;
    text-align: center;
    white-space: nowrap !important;
}
.data-table-financeiro td:nth-child(10) {  /* Acoes */
    width: 60px;
    text-align: right;
    white-space: nowrap !important;
}

/* Tabela do modal Recebimento: 9 colunas, mesmo motivo do .data-table-financeiro */
#recTable thead th,
#recTable tbody td {
    padding-left: 8px;
    padding-right: 8px;
}

.data-table tbody tr:hover {
    background: #fbfcff;
}

.type-pill {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 4px 9px;
    color: #334155;
    background: #f1f5f9;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
}

/* Per-tipo colors are injected inline via --cat-color on each .type-pill.
   Default to the existing fallback for the canonical tipos when the
   inline style isn't there. */
.type-pill {
    color: var(--cat-text, #334155);
    background: var(--cat-bg, #f1f5f9);
}

.type-pill-equipamento {
    --cat-text: #1d4ed8;
    --cat-bg:   #dbeafe;
}

.type-pill-locacao {
    --cat-text: #7c2d12;
    --cat-bg:   #ffedd5;
}

.action-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.table-actions {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 4px;
}

.table-actions form {
    margin: 0;
    display: inline-flex;
}

.system-action-menu {
    width: 180px !important;
    min-width: 180px !important;
    max-width: 180px !important;
}

.system-action-menu.show {
    display: flex !important;
    flex-direction: column;
    gap: 6px;
}

.table-actions .system-action-menu > form,
.system-action-menu > form {
    display: block;
    width: 100% !important;
    margin: 0;
}

.system-action-menu > .btn,
.system-action-menu > a,
.system-action-menu > form > .btn,
.system-action-menu > form > button {
    display: flex;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 30px;
    align-items: center;
    margin: 0 !important;
    padding: 5px 9px;
    font-size: 11.5px;
    line-height: 1.2;
    white-space: normal;
    overflow: hidden;
}

/* Menu de acoes: todos os itens com a mesma aparencia — fundo branco e texto
   preto. A cor por tipo de acao continua valendo nos botoes da propria linha
   da tabela; dentro do menu ela so virava um arco-iris que atrapalhava ler. */
.system-action-menu > .btn,
.system-action-menu > a.btn,
.system-action-menu > form > .btn,
.system-action-menu > form > button.btn {
    background-color: #ffffff !important;
    background-image: none !important;
    color: #111827 !important;
    border: 1px solid #d7dee8 !important;
    box-shadow: none !important;
}
.system-action-menu > .btn i,
.system-action-menu > a.btn i,
.system-action-menu > form > .btn i,
.system-action-menu > form > button.btn i {
    color: inherit !important;
}
.system-action-menu > .btn:hover,
.system-action-menu > a.btn:hover,
.system-action-menu > form > .btn:hover,
.system-action-menu > form > button.btn:hover,
.system-action-menu > .btn:focus-visible,
.system-action-menu > a.btn:focus-visible,
.system-action-menu > form > .btn:focus-visible,
.system-action-menu > form > button.btn:focus-visible {
    background-color: #f2f5fa !important;
    border-color: #b9c5d6 !important;
    color: #111827 !important;
}


.rich-empty {
    display: grid;
    place-items: center;
    gap: 8px;
    padding: 44px 16px;
}

.rich-empty i {
    color: var(--primary);
    font-size: 32px;
}

.rich-empty strong,
.rich-empty span {
    display: block;
}

.rich-empty strong {
    color: var(--text);
    font-size: 16px;
}

.inline-create {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.inline-create .form-control {
    flex: 1 1 180px;
    min-height: 40px;
}

.inline-create .status-select {
    flex: 0 0 120px;
    min-height: 40px;
}

.inline-create .btn {
    white-space: nowrap;
}

.form-section {
    padding: 12px 0;
    border-top: 1px solid var(--line);
}

.form-section:first-of-type {
    padding-top: 0;
    border-top: 0;
}

.form-section h4 {
    margin: 0 0 10px;
    font-size: 15px;
    font-weight: 850;
}

.section-title-row {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 14px;
    margin-bottom: 10px;
}

.section-title-row > div:first-child {
    flex: 1 1 auto;
    text-align: left;
}

.section-title-row.section-title-row-start {
    justify-content: flex-start;
}

.section-title-row h4 {
    margin: 0;
}

/* Tabs no modal de contrato: dados + faturas (espelho do financeiro). */
.contrato-tabs {
    margin: -18px -20px 14px;
    padding: 0 16px;
    border-bottom: 1px solid var(--line);
    background: #fff;
}
.contrato-tabs .nav-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--muted);
    font-weight: 700;
    padding: 12px 14px;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
}
.contrato-tabs .nav-link.active {
    color: var(--primary);
    background: transparent;
    border-bottom-color: var(--primary);
}
.contrato-tabs .nav-link:hover:not(.active) {
    color: var(--text);
    border-bottom-color: rgba(58, 87, 232, .25);
}
.contrato-tab-content {
    padding-top: 4px;
}
.contrato-faturas-section {
    border-top: 0;
    padding-top: 4px;
}

.faturas-quickfilter .btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 700;
}
.faturas-quickfilter .btn.active {
    color: #fff;
}
.faturas-quickfilter .btn-outline-primary.active { background: var(--primary); border-color: var(--primary); }
.faturas-quickfilter .btn-outline-warning.active { background: var(--warning); border-color: var(--warning); color: #fff; }
.faturas-quickfilter .btn-outline-danger.active { background: #d93025; border-color: #d93025; }
.faturas-quickfilter .btn-outline-success.active { background: var(--success); border-color: var(--success); }
.faturas-quickfilter .btn-outline-secondary.active { background: #64748b; border-color: #64748b; }
.faturas-quickfilter .badge {
    font-size: 11px;
    font-weight: 700;
}

/* Pills de status das faturas: estilo "soft" (fundo claro + texto
   escuro) consistente com o Quitada (is-active) ja existente. As cores
   ficam reservadas para os botoes de filtro e para o texto do pill. */
.status-pill.is-late {
    color: #d93025;
    background: rgba(217, 48, 37, .12);
}
.status-pill.is-cancelled {
    color: #64748b;
    background: #f1f5f9;
    text-decoration: line-through;
}
.status-pill.is-pending {
    color: var(--warning);
    background: rgba(241, 106, 27, .15);
}

.dynamic-table {
    border: 1px solid var(--line);
    border-radius: 8px;
}

.dynamic-table .table th,
.dynamic-table .table td {
    min-width: 180px;
    padding: 10px;
}

.dynamic-table .table th:last-child,
.dynamic-table .table td:last-child {
    width: 58px;
    min-width: 58px;
}

.btn-icon {
    display: inline-flex;
    width: 38px;
    height: 38px;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.upload-box {
    display: grid;
    place-items: center;
    gap: 8px;
    min-height: 170px;
    padding: 24px;
    color: var(--muted);
    text-align: center;
    background: #f9fafb;
    border: 1px dashed #b9c2d0;
    border-radius: 8px;
    cursor: pointer;
}

.upload-box i {
    color: var(--primary);
    font-size: 34px;
}

.upload-box strong {
    color: var(--text);
}

.upload-box span {
    max-width: 480px;
}

.photo-preview {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.photo-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.photo-section-header strong,
.photo-section-header span {
    display: block;
}

.photo-section-header span {
    color: var(--muted);
    font-size: 13px;
}

.photo-preview-item {
    position: relative;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 8px;
}

.photo-preview-item img {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
}

.photo-preview-item span {
    display: block;
    overflow: hidden;
    padding: 8px;
    color: var(--muted);
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.photo-preview-item.is-saved {
    border-color: rgba(37, 99, 235, .24);
}

.photo-preview-item.is-cover {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(37, 99, 235, .12);
}

.photo-preview-item.is-cover:before {
    position: absolute;
    top: 8px;
    left: 8px;
    z-index: 1;
    content: "Capa";
    padding: 3px 8px;
    color: #fff;
    background: var(--primary);
    border-radius: 999px;
    font-size: 11px;
    font-weight: 800;
}

.photo-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0 8px 8px;
}

.photo-actions .btn {
    flex: 1;
    justify-content: center;
    min-height: 30px;
    padding: 4px 7px;
    font-size: 12px;
}

.photo-actions .btn i {
    margin-right: 4px;
}

.photo-lightbox .modal-content {
    color: #fff;
    background: #020617;
}

.photo-lightbox .modal-header {
    border-bottom-color: rgba(255, 255, 255, .12);
}

.photo-lightbox .modal-header h2 {
    margin: 0;
    font-size: 18px;
}

.photo-lightbox .modal-body {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.photo-lightbox img {
    max-width: 100%;
    max-height: calc(100vh - 100px);
    object-fit: contain;
}

.table-thumb {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 40px;
    color: var(--muted);
    background: #f8fafc;
    border: 1px solid var(--line);
    border-radius: 8px;
    object-fit: cover;
}

#equipamentosTable {
    width: max-content !important;
    min-width: 100%;
}

#equipamentosTable > :not(caption) > * > * {
    white-space: nowrap;
    vertical-align: middle;
}

#equipamentosTable br {
    display: none;
}

#equipamentosTable small.d-block {
    display: inline-block !important;
    margin-left: 6px;
}

.equipment-stock-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: max-content;
    padding: 6px 10px;
    border: 1px solid #dbe4e8;
    border-radius: 999px;
    background: #f8fafc;
    color: #475569;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
}

.equipment-stock-pill i {
    font-size: 13px;
}

.equipment-stock-pill strong {
    color: inherit;
    font-size: 13px;
}

.equipment-stock-pill.is-full {
    border-color: #ccebdc;
    background: #e9f8f1;
    color: #087f5b;
}

.equipment-stock-pill.is-partial {
    border-color: #f3df9a;
    background: #fff8db;
    color: #9a6700;
}

.equipment-stock-pill.is-empty {
    border-color: #f2c9cd;
    background: #fff0f1;
    color: #8a3b45;
}

.table-thumb-empty i {
    font-size: 18px;
}

.table-thumb-clickable {
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease;
}
.table-thumb-clickable:hover {
    transform: scale(1.06);
    box-shadow: 0 6px 16px rgba(17, 24, 39, .18);
}
.table-thumb-clickable:focus-visible {
    outline: 2px solid rgba(58, 87, 232, .55);
    outline-offset: 2px;
}

.photo-lightbox-body {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}
.photo-lightbox-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    color: #fff;
    background: rgba(15, 23, 42, .55);
    border: 0;
    border-radius: 999px;
    font-size: 24px;
    transition: background .15s ease;
}
.photo-lightbox-nav:hover {
    background: rgba(15, 23, 42, .85);
}
.photo-lightbox-prev { left: 18px; }
.photo-lightbox-next { right: 18px; }

img.table-thumb {
    display: block;
}

.helper-panel {
    position: sticky;
    top: 108px;
}

.cat-color-swatch {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: 8px;
    border: 1px solid rgba(15, 23, 42, .15);
    border-radius: 4px;
    vertical-align: middle;
}

.categoria-color-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

.categoria-color-input {
    width: 44px;
    height: 38px;
    padding: 2px;
    cursor: pointer;
    border: 1px solid var(--line);
    border-radius: 6px;
    background: var(--surface);
}

.categoria-color-input::-webkit-color-swatch-wrapper { padding: 0; }
.categoria-color-input::-webkit-color-swatch { border: 0; border-radius: 4px; }

.categoria-color-hex {
    flex: 1;
    font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
    font-size: 12px;
}

.helper-panel h3 {
    margin: 18px 0 8px;
    font-size: 20px;
    font-weight: 800;
}

.helper-panel p {
    color: var(--muted);
}

.alert-soft {
    display: flex;
    gap: 10px;
    padding: 14px;
    color: #2442cf;
    background: rgba(58, 87, 232, .1);
    border-radius: 8px;
}

.cnpj-status {
    display: block;
    margin-top: 8px;
    color: var(--muted);
}

.cnpj-status.is-loading {
    color: var(--primary);
}

.cnpj-status.is-success {
    color: var(--success);
}

.cnpj-status.is-error {
    color: #d93025;
}

.app-footer {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 32px;
    color: var(--muted);
    font-size: 14px;
}

.login-page {
    display: grid;
    place-items: center;
    padding: 24px;
    background:
        radial-gradient(circle at 12% 8%, rgba(8, 181, 181, .16), transparent 34%),
        radial-gradient(circle at 92% 88%, rgba(78, 84, 91, .1), transparent 30%),
        #f3f7f7;
}

.login-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.22fr) minmax(360px, .78fr);
    width: min(1140px, 100%);
    min-height: min(670px, calc(100vh - 48px));
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(75, 85, 91, .13);
    border-radius: 22px;
    box-shadow: 0 30px 80px rgba(28, 48, 53, .16);
}

.login-hero,
.login-card {
    padding: 46px;
}

.login-hero {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: #3f454b;
    background:
        linear-gradient(145deg, rgba(255,255,255,.98), rgba(235,249,249,.95)),
        #fff;
    border-right: 1px solid rgba(8, 181, 181, .13);
}

.login-hero::after {
    content: "";
    position: absolute;
    right: -90px;
    bottom: -110px;
    width: 280px;
    height: 280px;
    border: 54px solid rgba(8, 181, 181, .07);
    border-radius: 50%;
    pointer-events: none;
}

.login-brand-visual {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: clamp(230px, 37vh, 330px);
    margin: -42px -14px -32px;
}

.login-brand-visual img {
    display: block;
    width: auto;
    max-width: 100%;
    max-height: min(500px, 48vh);
    height: auto;
    object-fit: contain;
    background: transparent;
    mix-blend-mode: multiply;
    filter: contrast(1.015) saturate(1.02);
}

.login-hero-copy {
    position: relative;
    z-index: 1;
    max-width: 590px;
}

.login-brand-kicker {
    margin: 0 0 8px !important;
    color: #08a9a9 !important;
    font-size: 11px;
    font-weight: 850;
    letter-spacing: .14em;
}

.login-hero h1 {
    max-width: 590px;
    margin: 0 0 12px;
    color: #343a40;
    font-size: clamp(28px, 3vw, 39px);
    font-weight: 850;
    line-height: 1.1;
}

.login-hero p {
    max-width: 560px;
    color: #687178;
    line-height: 1.6;
}

.login-highlights {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 22px;
    position: relative;
    z-index: 1;
}

.login-highlights span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 11px;
    color: #4d575d;
    background: rgba(255, 255, 255, .86);
    border: 1px solid rgba(8, 169, 169, .18);
    border-radius: 999px;
    font-size: 12px;
    font-weight: 650;
}

.login-highlights i {
    color: #08a9a9;
}

.login-card {
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: #fff;
}

.login-card-heading {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 30px;
}

.login-card-symbol {
    display: grid;
    place-items: center;
    flex: 0 0 46px;
    width: 46px;
    height: 46px;
    color: #fff !important;
    background: linear-gradient(135deg, #08b5b5, #079696);
    border-radius: 14px;
    box-shadow: 0 9px 22px rgba(8, 169, 169, .24);
    font-size: 20px;
}

.login-card h2 {
    margin: 0 0 6px;
    color: #333a40;
    font-size: 29px;
    font-weight: 850;
}

.login-card span {
    color: var(--muted);
}

.login-card .eyebrow {
    margin: 0 0 3px;
    color: #08a9a9;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: .12em;
}

.login-card .form-label {
    color: #41494f;
    font-size: 12px;
    font-weight: 750;
}

.login-card .input-group-text {
    color: #08a9a9;
    background: #f2fbfb;
    border-color: #d9e7e7;
}

.login-card .form-control {
    min-height: 48px;
    border-color: #d9e2e2;
}

.login-card .form-control:focus {
    border-color: #08aaaa;
    box-shadow: 0 0 0 .2rem rgba(8, 170, 170, .12);
}

.login-submit {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 49px;
    border: 0;
    background: linear-gradient(135deg, #09b8b8, #078e8e);
    box-shadow: 0 10px 24px rgba(8, 159, 159, .23);
    font-weight: 750;
}

.login-submit:hover,
.login-submit:focus {
    background: linear-gradient(135deg, #08aaaa, #077d7d);
}

.login-submit span {
    color: #fff;
}

.login-security-note {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-top: 22px;
    padding-top: 18px;
    color: #7b858b;
    border-top: 1px solid #edf1f1;
    font-size: 11px;
}

.login-security-note i {
    color: #08a9a9;
}

@media (max-width: 991.98px) {
    .sidebar {
        transform: translateX(-100%);
    }

    .sidebar.is-open {
        transform: translateX(0);
    }

    .main-content {
        margin-left: 0;
    }

    .topbar,
    .content-area,
    .app-footer {
        padding-left: 18px;
        padding-right: 18px;
    }

    .hero-panel {
        flex-direction: column;
    }

    .login-shell {
        grid-template-columns: 1fr;
        min-height: 0;
        width: min(680px, 100%);
    }

    .login-hero {
        border-right: 0;
        border-bottom: 1px solid rgba(8, 181, 181, .13);
    }

    .login-brand-visual {
        min-height: 260px;
        margin: -55px 0 -52px;
    }

    .resource-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .resource-hero {
        align-items: stretch;
        flex-direction: column;
    }

    /* No mobile a toolbar continua em LINHA: a busca cresce e o botão "Novo"
       fica ao lado dela, com o contador quebrando para a linha de baixo.
       Vale para Contratos (toolbar bespoke) e para as telas com filterBar. */
    .resource-toolbar {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 12px;
    }

    /* Busca ocupa o espaço livre da linha. flex-basis:0 é essencial: com
       basis:auto o navegador usa a largura do conteúdo para decidir a quebra
       e o botão desceria; com basis:0 a busca "abre mão" e cresce só depois. */
    .resource-toolbar > .search-input {
        flex: 1 1 0%;
        width: auto;
        min-width: 0;
        max-width: none;
    }

    /* Promove contador + botão para o flex da toolbar sem tocar no HTML/JS.
       Restrito às toolbars com busca direta: o combinador ~ exclui Locações
       (busca dentro de um <form>) e a legenda de Suprimentos (sem busca). */
    .resource-toolbar > .search-input ~ .resource-actions {
        display: contents;
    }
    .resource-toolbar > .search-input ~ .resource-actions .btn {
        order: 2;
        flex: 0 0 auto;
        white-space: nowrap;
    }
    .resource-toolbar > .search-input ~ .resource-actions .result-count {
        order: 3;
        flex: 1 1 100%;
    }

    .resource-actions {
        align-items: stretch;
        flex-direction: column;
    }
}

@media (min-width: 992px) and (max-height: 760px) {
    .login-page {
        padding: 14px;
    }

    .login-shell {
        min-height: calc(100vh - 28px);
    }

    .login-hero,
    .login-card {
        padding-top: 30px;
        padding-bottom: 30px;
    }

    .login-brand-visual {
        min-height: 220px;
        margin-top: -35px;
        margin-bottom: -26px;
    }

    .login-brand-visual img {
        max-height: 44vh;
    }

    .login-hero h1 {
        font-size: 31px;
    }

    .login-card-heading {
        margin-bottom: 22px;
    }

    .login-security-note {
        margin-top: 17px;
        padding-top: 14px;
    }
}

@media (max-width: 575.98px) {
    .topbar {
        align-items: flex-start;
    }

    /* Mantém Sair + Perfil visíveis no mobile. O nome/empresa já é ocultado
       via .d-none.d-md-block no HTML, então sobram só os dois ícones (44x44),
       que cabem no topo sem apertar o título. */
    .topbar-actions {
        display: flex;
        gap: 8px;
    }

    .hero-panel h2,
    .login-hero h1 {
        font-size: 28px;
    }

    .login-hero,
    .login-card {
        padding: 28px;
    }

    .login-page {
        align-items: start;
        padding: 12px;
    }

    .login-shell {
        border-radius: 16px;
    }

    .login-brand-visual {
        min-height: 190px;
        margin: -42px -18px -38px;
    }

    .login-brand-visual img {
        width: min(100%, 315px);
    }

    .login-hero-copy {
        text-align: center;
    }

    .login-hero h1 {
        font-size: 25px;
    }

    .login-hero-copy > p:not(.login-brand-kicker),
    .login-highlights {
        display: none;
    }

    .login-brand-kicker {
        margin-bottom: 7px !important;
    }

    .login-card-heading {
        margin-bottom: 24px;
    }

    .app-footer {
        flex-direction: column;
    }

    .resource-stats {
        grid-template-columns: 1fr;
    }

    .modal-dialog {
        margin: 10px;
    }

    .professional-modal,
    .modal-dialog-scrollable .professional-modal {
        height: calc(100vh - 20px);
        max-height: calc(100vh - 20px);
    }

    .compact-modal,
    .modal-dialog-scrollable .compact-modal {
        height: auto;
        max-height: none;
    }

    .professional-modal .modal-body {
        padding: 16px;
    }
}

/* Linhas com titulos vencidos - forca cor vermelha em todas as celulas */
.linha-vencida td {
    color: #dc3545 !important;
}
.linha-vencida td strong {
    color: #dc3545 !important;
}

/* Linhas com titulos quitados - linha verde claro */
.linha-quitada {
    background-color: rgba(25, 135, 84, 0.08) !important;
}
.linha-quitada td {
    color: #198754 !important;
}
.linha-quitada td strong {
    color: #198754 !important;
}
.linha-quitada input[type="checkbox"] {
    opacity: 0.5;
}
/* ===== Central de relatorios ===== */
.report-main-head{display:flex;align-items:center;justify-content:space-between;gap:20px;min-width:0;margin-bottom:4px;padding:18px 20px;background:var(--surface,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;box-shadow:0 6px 18px rgba(17,24,39,.05)}.report-main-head>div:first-child{min-width:0;flex:1}.report-main-head .resource-eyebrow{display:block;margin-bottom:3px;color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.08em}.report-main-head h2{margin:0 0 4px;font-size:24px;line-height:1.2}.report-main-head p{max-width:760px;margin:0;color:var(--muted);font-size:13px;line-height:1.45}.report-main-head .resource-actions{flex:0 0 auto}
.contract-models-page>.resource-header,.supply-page>.resource-header{display:flex;align-items:center;justify-content:space-between;gap:20px;min-width:0;margin-bottom:4px;padding:18px 20px;background:var(--surface,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;box-shadow:0 6px 18px rgba(17,24,39,.05)}.contract-models-page>.resource-header>div,.supply-page>.resource-header>div{min-width:0}.contract-models-page>.resource-header .resource-eyebrow,.supply-page>.resource-header .resource-eyebrow{display:block;margin-bottom:3px;color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.08em}.contract-models-page>.resource-header h2,.supply-page>.resource-header h2{margin:0 0 4px;font-size:24px;line-height:1.2}.contract-models-page>.resource-header p,.supply-page>.resource-header p{max-width:760px;margin:0;color:var(--muted);font-size:13px;line-height:1.45}
.report-hub-search{position:relative;min-width:280px}.report-hub-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted)}.report-hub-search input{padding-left:38px}
.report-group,.report-favorites{margin-top:24px}.report-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px}.report-section-title>span{font-size:15px;font-weight:750}.report-section-title>span i{color:var(--primary);margin-right:7px}.report-section-title small{color:var(--muted)}
.report-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.report-card{position:relative;display:flex;flex-direction:column;gap:14px;min-height:184px;background:var(--surface,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:17px;cursor:pointer;overflow:hidden;transition:border-color .18s,transform .18s,box-shadow .18s,background-color .18s}.report-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--primary);opacity:0;transition:opacity .18s}.report-card:hover{border-color:rgba(58,87,232,.32);background:color-mix(in srgb,var(--surface,#fff) 97%,var(--primary) 3%);transform:translateY(-2px);box-shadow:0 12px 28px rgba(20,28,48,.09)}.report-card:hover::before,.report-card:focus-visible::before{opacity:1}.report-card:focus-visible{outline:3px solid rgba(58,87,232,.18);outline-offset:2px;border-color:var(--primary)}.report-card-top{display:flex;align-items:center;justify-content:space-between}.report-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;background:var(--primary-soft,#eceffe);color:var(--primary);font-size:18px;transition:transform .18s}.report-card:hover .report-icon{transform:scale(1.05)}.report-star{position:relative;z-index:2;width:34px;height:34px;border:0;border-radius:9px;background:transparent;color:var(--muted);padding:0;font-size:17px;transition:background .15s,color .15s}.report-star:hover{background:var(--neutral-soft,#f1f3f6);color:#b78100}.report-star.active{color:#e5a100}.report-card-content{min-width:0}.report-card h3{font-size:15px;font-weight:750;margin:0 0 5px;color:var(--text,#172033)}.report-card p{font-size:13px;color:var(--muted);margin:0;line-height:1.45}.report-card-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line,#eef0f5);display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;font-weight:650}.report-card-foot span{display:flex;align-items:center;gap:5px}.report-card-arrow{font-size:15px;color:var(--primary);transition:transform .18s}.report-card:hover .report-card-arrow{transform:translate(2px,-2px)}.report-favorites{padding:16px;border:1px solid rgba(58,87,232,.12);border-radius:14px;background:var(--primary-soft,#f1f3ff)}.report-favorites .report-card{min-height:165px}.report-empty,.report-no-results{display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px;color:var(--muted)}
.report-breadcrumb{display:flex;align-items:center;gap:7px;min-height:22px;margin:0 0 3px;padding:0 2px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden}.report-breadcrumb a,.report-breadcrumb span,.report-breadcrumb strong{overflow:hidden;text-overflow:ellipsis}.report-breadcrumb a{flex:0 0 auto;text-decoration:none}.report-breadcrumb i{flex:0 0 auto;font-size:10px}.report-export-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.report-export-actions .btn{white-space:nowrap}
.report-filter-panel{background:var(--surface,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:15px;margin-bottom:17px}.report-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.report-filter-grid .form-label{font-size:12px;font-weight:650;margin:0}.report-filter-grid .form-control,.report-filter-grid .form-select{margin-top:4px}.report-filter-actions{display:flex;gap:7px;margin-top:12px}
.report-autocomplete{position:relative}.report-autocomplete>i{position:absolute;left:11px;top:50%;transform:translateY(-50%);z-index:1;color:var(--muted);font-size:13px}.report-autocomplete>.form-control{padding-left:32px;padding-right:28px}.report-autocomplete-menu{display:none;position:absolute;z-index:1080;top:calc(100% + 4px);left:0;right:0;max-height:270px;overflow:auto;background:var(--surface,#fff);border:1px solid var(--line,#dfe3ea);border-radius:10px;padding:5px;box-shadow:0 14px 34px rgba(20,28,48,.14)}.report-autocomplete-menu.show{display:block}.report-autocomplete-option{display:flex;flex-direction:column;width:100%;border:0;border-radius:7px;background:transparent;color:var(--text,#172033);padding:8px 9px;text-align:left;font-size:12px}.report-autocomplete-option:hover,.report-autocomplete-option.active{background:var(--primary-soft,#eceffe);color:var(--primary)}.report-autocomplete-option span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-autocomplete-option small{color:var(--muted);font-size:10px}
.report-kpis{margin-bottom:8px}.report-comparison-note{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:0 2px 17px;color:var(--muted);font-size:11px}.report-chart-panel,.report-table-panel{background:var(--surface,#fff);border:1px solid var(--line,#e5e7eb);border-radius:14px;padding:16px;margin-bottom:17px}.report-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}.report-panel-head h3{font-size:15px;margin:0}.report-panel-head span{font-size:12px;color:var(--muted)}.report-chart{height:280px}.report-chart canvas{display:block;width:100%;height:100%}.report-table{width:100%!important}.report-table tfoot th{background:var(--neutral-soft,#f4f5f8);border-top:2px solid var(--line,#dfe3ea);font-size:12px;white-space:nowrap}.report-detail-link{font-weight:650;text-decoration:none}.report-note{font-size:12px;color:var(--muted)}
/* Tabelas de relatórios: espaçamento compacto e colunas longas com quebra controlada. */
.report-view .table-responsive,.report-entity .table-responsive{border:1px solid var(--line,#e5e7eb);border-radius:10px;overflow-x:auto}.report-view .table,.report-entity .table{width:100%;margin-bottom:0;font-size:13px}.report-view .table>:not(caption)>*>*,.report-entity .table>:not(caption)>*>*{padding:12px 10px;vertical-align:middle;line-height:1.35}.report-view .table thead th,.report-entity .table thead th{padding-top:11px;padding-bottom:11px;background:var(--neutral-soft,#f4f5f8);border-bottom:1px solid var(--line,#dfe3ea);color:var(--muted);font-size:11px;font-weight:750;line-height:1.25;text-transform:uppercase;vertical-align:middle}.report-view .table tbody td,.report-entity .table tbody td{border-color:var(--line,#e8ebf0);white-space:normal;overflow-wrap:break-word}.report-view .table tbody tr:last-child td,.report-entity .table tbody tr:last-child td{border-bottom:0}.report-view .table tbody tr:hover,.report-entity .table tbody tr:hover{background:color-mix(in srgb,var(--surface,#fff) 96%,var(--primary) 4%)}.report-view .table td.text-end,.report-view .table th.text-end,.report-entity .table td.text-end,.report-entity .table th.text-end{white-space:nowrap}
.report-table{font-size:13px}.report-table>:not(caption)>*>*{padding:12px 10px;vertical-align:middle;line-height:1.35}.report-table thead th{padding-top:11px;padding-bottom:11px;font-size:11px;line-height:1.25;vertical-align:middle}.report-table tbody td{white-space:normal;overflow-wrap:break-word}.report-table tbody tr{height:auto}.report-table td.text-end,.report-table th.text-end,.report-table th:first-child,.report-table td:first-child{white-space:nowrap}.report-table th:last-child,.report-table td:last-child{width:62px;min-width:62px;text-align:center;white-space:nowrap}.report-table td:last-child .btn{margin:auto}.report-table th:nth-child(2),.report-table td:nth-child(2),.report-table th:nth-child(5),.report-table td:nth-child(5),.report-table th:nth-child(8),.report-table td:nth-child(8),.report-table th:nth-child(9),.report-table td:nth-child(9){white-space:nowrap}.report-table th:nth-child(3),.report-table td:nth-child(3){min-width:110px;max-width:145px}.report-table th:nth-child(4),.report-table td:nth-child(4){min-width:140px;max-width:185px}.report-table th:nth-child(6),.report-table td:nth-child(6){min-width:120px;max-width:175px}.report-table th:nth-child(7),.report-table td:nth-child(7){min-width:100px;max-width:140px}
.report-definition-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0}.report-definition-list>div{padding:10px 4px;border-bottom:1px solid var(--line,#eef0f5)}.report-definition-list dt{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.report-definition-list dd{margin:3px 0 0;font-size:13px;overflow-wrap:anywhere}.report-entity-grid{display:grid;gap:17px}
@media(max-width:850px){.report-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-main-head{align-items:flex-start;flex-wrap:wrap}.report-export-actions{width:100%;justify-content:flex-start}}@media(max-width:600px){.report-grid,.report-filter-grid,.report-definition-list{grid-template-columns:1fr}.report-hub-search{min-width:100%;width:100%}.report-main-head{padding:15px}.report-main-head h2{font-size:21px}.report-export-actions{display:grid;grid-template-columns:1fr;width:100%}.report-export-actions .btn{width:100%}.report-card{min-height:160px}}
@media print{.sidebar,.topbar,.app-footer,.report-breadcrumb,.report-filter-panel,.report-export-actions,.datatables-top,.datatables-bottom{display:none!important}.main-content,.content-area{margin:0!important;padding:0!important}.report-chart-panel,.report-table-panel,.stat-card{box-shadow:none!important;break-inside:avoid}.report-view{font-size:10pt}}
/* Impressao dos resultados filtrados das DataTables */
.datatables-top{flex-wrap:wrap;gap:8px}.datatables-top [data-print-filtered]{white-space:nowrap;margin-left:auto!important}
@media(max-width:680px){.datatables-top [data-print-filtered]{width:100%;margin-left:0!important}}
.print-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.print-choice{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:12px;cursor:pointer}.print-choice:has(input:checked){border-color:var(--primary);background:var(--primary-soft,#eceffe)}.print-choice>span{display:grid;grid-template-columns:25px 1fr;align-items:center;column-gap:7px}.print-paper-shape{grid-row:1/3;display:block;justify-self:center;border:2px solid var(--primary);border-radius:3px;position:relative;background:var(--surface,#fff)}.print-paper-shape::after{content:"";position:absolute;left:4px;right:4px;bottom:4px;height:2px;border-radius:2px;background:var(--primary);opacity:.35}.print-paper-shape--portrait{width:16px;height:22px}.print-paper-shape--landscape{width:23px;height:16px}.print-choice strong{font-size:13px}.print-choice small{font-size:11px;color:var(--muted)}
@media(max-width:480px){.print-choice-grid{grid-template-columns:1fr}}

/* ===== Tema ServerLoc — aplicação interna ===== */
.brand-name {
    font-size: 18px;
    letter-spacing: .015em;
}

.brand-name span {
    color: #19c3c3;
}

.topbar-title {
    display: flex;
    align-items: center;
    gap: 10px;
}

.topbar-title::before {
    content: "";
    width: 4px;
    height: 28px;
    flex: 0 0 4px;
    border-radius: 999px;
    background: linear-gradient(180deg, #16c3c3, var(--primary-dark));
    box-shadow: 0 4px 12px rgba(8, 169, 169, .24);
}

.topbar h1 {
    color: #30373b;
}

.icon-btn,
.avatar {
    border-color: var(--line);
}

.icon-btn:hover,
.avatar:hover {
    color: var(--primary);
    border-color: rgba(8, 169, 169, .34);
    background: var(--primary-soft);
}

.app-footer {
    color: #748085;
    border-top-color: var(--line);
}

.panel,
.metric-card,
.resource-hero,
.resource-stats > div,
.resource-panel,
.report-card,
.report-main-head,
.report-filter-panel,
.report-chart-panel,
.report-table-panel,
.stat-card {
    border-color: var(--line);
    box-shadow: var(--shadow);
}

.resource-hero {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 92% 18%, rgba(8, 169, 169, .13), transparent 30%),
        linear-gradient(135deg, #ffffff 0%, #f4fbfb 100%);
}

.resource-hero::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: linear-gradient(180deg, #16c3c3, var(--primary-dark));
}

.resource-hero h2,
.report-main-head h2,
.panel-header h3 {
    color: #30373b;
}

.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--primary);
    --bs-btn-border-color: var(--primary);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--primary-dark);
    --bs-btn-hover-border-color: var(--primary-dark);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #066f73;
    --bs-btn-active-border-color: #066f73;
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: #70c6c6;
    --bs-btn-disabled-border-color: #70c6c6;
    background-image: linear-gradient(135deg, #11b9b9, #078f93);
    box-shadow: 0 7px 16px rgba(8, 143, 147, .18);
}

.btn:not(.btn-close):not(.btn-icon-only):not(.btn-icon) {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 7px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 650;
    line-height: 1.2;
}

.btn.btn-sm:not(.btn-icon-only):not(.btn-icon) {
    min-height: 32px;
    padding: 5px 10px;
    border-radius: 7px;
    font-size: 12px;
}

.btn > i {
    font-size: 15px;
    line-height: 1;
}

.btn.btn-sm > i,
.btn-icon-only > i {
    font-size: 13px;
}

.resource-filterbar .btn-group[data-f-facet] > .btn {
    min-height: 34px;
    padding: 5px 12px;
    font-size: 12px;
}

.btn.login-submit {
    min-height: 49px;
    font-size: 14px;
}

.btn-primary:hover,
.btn-primary:focus-visible {
    background-image: linear-gradient(135deg, #0da6a6, #077d7d);
    box-shadow: 0 9px 20px rgba(8, 125, 125, .24);
}

.btn-outline-primary {
    --bs-btn-color: var(--primary-dark);
    --bs-btn-border-color: rgba(8, 169, 169, .52);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--primary);
    --bs-btn-hover-border-color: var(--primary);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--primary-dark);
    --bs-btn-active-border-color: var(--primary-dark);
}

.text-primary {
    color: var(--primary-dark) !important;
}

.bg-primary,
.text-bg-primary {
    background-color: var(--primary) !important;
}

.bg-primary-subtle {
    background-color: var(--primary-soft) !important;
}

.border-primary {
    border-color: rgba(8, 169, 169, .5) !important;
}

a {
    color: var(--bs-link-color);
}

a:hover {
    color: var(--bs-link-hover-color);
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: rgba(8, 169, 169, .64);
    box-shadow: 0 0 0 .2rem rgba(8, 169, 169, .13);
}

.form-check-input:checked {
    background-color: var(--primary);
    border-color: var(--primary);
}

.nav-pills .nav-link.active,
.nav-pills .show > .nav-link,
.dropdown-item.active,
.dropdown-item:active {
    color: #fff;
    background-color: var(--primary);
}

.page-link {
    color: var(--primary-dark);
}

.page-link:hover {
    color: var(--primary-dark);
    background-color: var(--primary-soft);
    border-color: #b9e1e1;
}

.page-item.active .page-link {
    color: #fff;
    background-color: var(--primary);
    border-color: var(--primary);
}

.modal-heading {
    background:
        radial-gradient(circle at 92% 15%, rgba(8, 169, 169, .14), transparent 32%),
        linear-gradient(135deg, #ffffff, #f1fbfb);
    border-bottom-color: var(--line);
}

.modal-heading::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: linear-gradient(180deg, #16c3c3, var(--primary-dark));
}

.table thead th,
.report-view .table thead th,
.report-entity .table thead th,
.contract-models-page .data-table thead th,
.supply-page .data-table thead th {
    color: #667176;
    background: #f0f6f6;
    border-bottom-color: #d7e5e5;
}

.table > tbody > tr:hover > * {
    background-color: #f6fbfb;
}

.resource-filterbar .btn-group[data-f-facet] > .btn.active,
.supply-tabs .nav-link.active {
    color: var(--primary-dark);
}

.report-card:hover {
    border-color: rgba(8, 169, 169, .36);
}

.report-card:focus-visible {
    outline-color: rgba(8, 169, 169, .2);
}

.report-favorites {
    border-color: rgba(8, 169, 169, .16);
}

.form-section-title > i,
.cnpj-result-icon,
.cnpj-primary-header-icon,
.cnpj-primary-item-icon {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.cnpj-result-card,
.cnpj-primary-card {
    border-color: #cfe3e3;
    box-shadow: 0 7px 22px rgba(8, 103, 107, .08);
}

.cnpj-result-header {
    background: linear-gradient(135deg, #eefafa 0%, #fff 72%);
    border-bottom-color: #dceaea;
}

.cnpj-result-copy small,
.cnpj-readonly-note i,
.cnpj-data-heading i,
.cnpj-data-collection > summary i,
.cnpj-collection-list small,
.cnpj-primary-header-copy span {
    color: var(--primary-dark);
}

.cnpj-collection-count {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.document-lookup-field.is-loading .form-control {
    border-color: #78caca;
}

.document-lookup-field.is-loading .document-lookup-icon,
.document-feedback.is-loading {
    color: var(--primary-dark);
}

.supply-form-body {
    background: var(--bg);
}

.supply-purchase-section {
    border-color: #bfe1e1;
    background: linear-gradient(145deg, #fff 0%, #f1fbfb 100%);
}

.supply-calculation,
.supply-field-card.is-primary {
    border-color: #bfe1e1;
    background: #f2fbfb;
}

.supply-purchase-help {
    color: #627175;
}
/* Suprimentos */
.contract-models-page .table-responsive,.supply-page .table-responsive{border:1px solid var(--line,#e5e7eb);border-radius:10px;overflow-x:auto}.contract-models-page .data-table,.supply-page .data-table{width:100%!important;margin-bottom:0;font-size:13px}.contract-models-page .data-table>:not(caption)>*>*,.supply-page .data-table>:not(caption)>*>*{padding:12px 10px;vertical-align:middle;line-height:1.35}.contract-models-page .data-table thead th,.supply-page .data-table thead th{padding-top:11px;padding-bottom:11px;background:var(--neutral-soft,#f4f5f8);border-bottom:1px solid var(--line,#dfe3ea);color:var(--muted);font-size:11px;font-weight:750;line-height:1.25;text-transform:uppercase}.contract-models-page .data-table tbody td,.supply-page .data-table tbody td{border-color:var(--line,#e8ebf0);white-space:normal;overflow-wrap:break-word}.contract-models-page .data-table tbody tr:hover,.supply-page .data-table tbody tr:hover{background:color-mix(in srgb,var(--surface,#fff) 96%,var(--primary) 4%)}.contract-models-page .data-table td.text-end,.contract-models-page .data-table th.text-end,.supply-page .data-table td.text-end,.supply-page .data-table th.text-end{white-space:nowrap}.contract-models-page .data-table th:last-child,.contract-models-page .data-table td:last-child,.supply-page #suprimentosTable th:last-child,.supply-page #suprimentosTable td:last-child{width:132px;min-width:132px}.contract-models-page .table-actions,.supply-page .table-actions{flex-wrap:nowrap}
.supply-page .supply-panel{padding-top:0;overflow:clip}.supply-tabs{margin:0 -20px;padding:0 20px;background:var(--surface,#fff);border-bottom:1px solid var(--line,#e5e7eb)}.supply-tabs .nav-link{display:flex;align-items:center;gap:7px;padding:15px 18px;border:0;border-bottom:2px solid transparent;color:var(--muted);font-weight:700}.supply-tabs .nav-link:hover{color:var(--primary);border-color:transparent}.supply-tabs .nav-link.active{color:var(--primary);background:transparent;border-bottom-color:var(--primary)}
.supply-balance-box{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 14px;border:1px solid var(--line,#e5e7eb);border-radius:10px;background:var(--neutral-soft,#f6f7f9)}.supply-balance-box span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.supply-balance-box strong{font-size:18px;color:var(--primary)}
.supply-form-body{background:#f6f8fb;padding:24px}.supply-form-section{background:var(--surface,#fff);border:1px solid var(--line,#e2e7ef);border-radius:14px;padding:20px;box-shadow:0 3px 12px rgba(19,33,68,.035)}.supply-form-section+.supply-form-section{margin-top:18px}.supply-form-section .section-title-row{margin-bottom:18px}.supply-form-section .section-title-row strong{display:flex;align-items:center;gap:9px;font-size:15px}.supply-form-section .section-title-row strong i{display:grid;place-items:center;width:31px;height:31px;border-radius:9px;color:var(--primary);background:var(--primary-soft,#eef1ff)}
.supply-purchase-section{border-color:#cdd8ff;background:linear-gradient(145deg,#fff 0%,#f7f9ff 100%)}.supply-info-badge{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#edf8f1;color:#20804b;font-size:11px;font-weight:800;white-space:nowrap}.supply-calculation{height:100%;min-height:76px;display:flex;flex-direction:column;justify-content:center;padding:12px 15px;border:1px solid #c8d4ff;border-radius:11px;background:#fff}.supply-calculation span{font-size:11px;color:var(--muted)}.supply-calculation strong{font-size:20px;color:var(--primary);line-height:1.25}.supply-calculation small{color:var(--muted);font-size:10px}.supply-calculation.is-horizontal{min-height:68px;display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:16px}.supply-calculation.is-horizontal strong{grid-row:1/3;grid-column:2}.supply-purchase-help{display:flex;align-items:center;gap:8px;margin-top:13px;color:#526076;font-size:12px}.supply-purchase-help i{color:var(--primary)}
.supply-field-card{height:100%;display:flex;flex-direction:column;justify-content:center;padding:14px 16px;border:1px solid var(--line,#e2e7ef);border-radius:11px;background:#f8fafc}.supply-field-card span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}.supply-field-card strong{font-size:23px;color:var(--text,#172033)}.supply-field-card strong small{font-size:12px}.supply-field-card em{font-size:10px;font-style:normal;color:var(--muted)}.supply-field-card.is-primary{border-color:#cdd8ff;background:#f3f6ff}.supply-field-card.is-primary strong{color:var(--primary)}.supply-stock-note{height:100%;min-height:70px;display:flex;align-items:center;gap:12px;padding:13px 15px;border:1px dashed #cbd3df;border-radius:11px;background:#fafbfd}.supply-stock-note>i{font-size:21px;color:var(--primary)}.supply-stock-note div{display:flex;flex-direction:column}.supply-stock-note strong{font-size:12px}.supply-stock-note span{font-size:11px;color:var(--muted)}.supply-purchase-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.supply-purchase-overview>div{padding:14px;border:1px solid var(--line,#e2e7ef);border-radius:11px;background:#fafbfd}.supply-purchase-overview span{display:block;margin-bottom:3px;font-size:10px;font-weight:800;color:var(--muted);text-transform:uppercase}.supply-purchase-overview strong{font-size:16px}.supply-purchase-overview strong small{font-size:11px;color:var(--muted)}
.maintenance-supplies{border:1px solid var(--line,#e5e7eb);border-radius:12px;background:var(--neutral-soft,#f8f9fb);padding:14px}.maintenance-supply-search{position:relative}.maintenance-supply-search>i{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);z-index:2}.maintenance-supply-search>.form-control{padding-left:34px}.maintenance-supply-menu{display:none;position:absolute;z-index:1090;top:calc(100% + 4px);left:0;right:0;max-height:230px;overflow:auto;padding:5px;background:var(--surface,#fff);border:1px solid var(--line,#dfe3ea);border-radius:10px;box-shadow:0 14px 34px rgba(20,28,48,.15)}.maintenance-supply-menu.show{display:block}.maintenance-supply-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:9px 10px;border:0;border-radius:7px;background:transparent;text-align:left;color:var(--text,#172033)}.maintenance-supply-option:hover,.maintenance-supply-option.active{background:var(--primary-soft,#eceffe);color:var(--primary)}.maintenance-supply-option:disabled{opacity:.52;cursor:not-allowed}.maintenance-supply-option span{display:flex;flex-direction:column;min-width:0}.maintenance-supply-option strong,.maintenance-supply-option small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.maintenance-supply-option small{color:var(--muted);font-size:11px}.maintenance-supply-option em{font-style:normal;font-size:11px;font-weight:700;white-space:nowrap}.maintenance-supply-empty{padding:18px;text-align:center;color:var(--muted);font-size:12px}.maintenance-supply-summary{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:10px;border-top:1px solid var(--line,#e5e7eb)}.maintenance-supply-summary span{font-size:12px;color:var(--muted)}.maintenance-supply-summary strong{font-size:16px;color:var(--danger)}
.maintenance-supply-alert{display:flex;align-items:flex-start;gap:9px;margin-top:10px;padding:10px 12px;border:1px solid #f2b7bd;border-radius:9px;background:#fff2f3;color:#b42332;font-size:12px;font-weight:600}.maintenance-supply-alert i{margin-top:1px}.maintenance-supplies tr.is-stock-invalid>td{background:#fff6f6}.maintenance-supplies tr.is-stock-zero>td{background:#fffaf0}.maintenance-supplies [data-supply-remaining]{white-space:nowrap}
@media(max-width:767px){.contract-models-page>.resource-header,.supply-page>.resource-header{padding:15px}.contract-models-page>.resource-header h2,.supply-page>.resource-header h2{font-size:21px}.supply-tabs{margin-left:-14px;margin-right:-14px;padding:0 8px}.supply-tabs .nav-link{padding:13px 10px}.maintenance-supplies{padding:10px}.supply-form-body{padding:12px}.supply-form-section{padding:15px}.supply-purchase-overview{grid-template-columns:1fr 1fr}.supply-calculation.is-horizontal{display:flex;align-items:flex-start}.supply-info-badge{margin-top:8px}}

/* Administração SaaS: hierarquia clara entre empresa, administradores e colaboradores. */
.saas-role-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.saas-role-guide article{display:flex;align-items:center;gap:12px;padding:15px 16px;background:#fff;border:1px solid var(--line,#e5e7eb);border-radius:14px}.saas-role-guide strong,.saas-role-guide small{display:block}.saas-role-guide small{margin-top:2px;color:var(--muted,#64748b);font-size:12px}.saas-role-icon{display:grid;place-items:center;flex:0 0 40px;height:40px;border-radius:11px;font-size:19px}.saas-role-icon.is-platform{color:#6d28d9;background:#ede9fe}.saas-role-icon.is-company{color:#1d4ed8;background:#dbeafe}.saas-role-icon.is-user{color:#047857;background:#d1fae5}.saas-count-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;color:#334155;background:#f1f5f9;border-radius:999px;font-weight:700}.form-section-title{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid var(--line,#e5e7eb)}.form-section-title>i{display:grid;place-items:center;width:34px;height:34px;color:var(--primary,#2563eb);background:#eff6ff;border-radius:9px}.form-section-title strong,.form-section-title small{display:block}.form-section-title small{color:var(--muted,#64748b);font-size:12px}.trial-option{padding:14px 16px;background:#f8fafc;border:1px solid var(--line,#e5e7eb);border-radius:12px}.trial-option>small{display:block;margin:4px 0 0 40px;color:var(--muted,#64748b)}.resource-breadcrumb{display:flex;align-items:center;gap:9px;margin-bottom:12px;color:var(--muted,#64748b);font-size:13px}.resource-breadcrumb a{display:inline-flex;align-items:center;gap:6px;text-decoration:none}.access-explanation{display:flex;gap:12px;margin:16px 0}.access-explanation>div{display:flex;align-items:center;gap:10px;flex:1;padding:12px 14px;color:#334155;background:#f8fafc;border:1px solid var(--line,#e5e7eb);border-radius:12px;font-size:13px}.access-explanation i{color:var(--primary,#2563eb);font-size:18px}.permission-heading{display:flex;flex-direction:column;margin-bottom:9px}.permission-heading small{color:var(--muted,#64748b);font-size:12px}
@media(max-width:900px){.saas-role-guide{grid-template-columns:1fr}.access-explanation{flex-direction:column}}@media(max-width:767px){.admin-saas-page .resource-header,.admin-access-page .resource-header{align-items:flex-start;flex-direction:column}.admin-saas-page .resource-header .btn,.admin-access-page .resource-header .btn{width:100%}.trial-option>small{margin-left:0}}
.collaborator-usage{display:flex;flex-direction:column;gap:2px}.collaborator-usage strong{color:#0f172a}.collaborator-usage small{color:var(--muted,#64748b);font-size:12px}.company-access-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.company-access-summary>div{display:flex;flex-direction:column;padding:15px 16px;background:#fff;border:1px solid var(--line,#e5e7eb);border-radius:14px}.company-access-summary small{color:var(--muted,#64748b);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.company-access-summary strong{margin:3px 0;color:#0f172a;font-size:20px}.company-access-summary span{color:var(--muted,#64748b);font-size:12px}.limit-inline-note{display:flex;align-items:center;gap:9px;margin-bottom:14px;padding:11px 13px;color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;font-size:13px}.limit-inline-note i{font-size:18px}@media(max-width:767px){.company-access-summary{grid-template-columns:1fr}}
.admin-company-actions,.admin-access-actions{align-items:center;flex-wrap:nowrap;white-space:nowrap}.admin-company-actions form,.admin-access-actions form{display:inline-flex;margin:0}.admin-saas-page .data-table th:last-child,.admin-saas-page .data-table td:last-child{min-width:184px}.admin-access-page .data-table th:last-child,.admin-access-page .data-table td:last-child{min-width:178px}.password-change-note{display:flex;align-items:center;gap:8px;padding:11px 13px;color:#475569;background:#f8fafc;border:1px solid var(--line,#e5e7eb);border-radius:10px;font-size:12px}.password-change-note i{color:var(--primary,#2563eb)}.danger-confirm-modal{border-color:#fecaca}.danger-modal-heading{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,#fff 0%,#fff7f7 100%);border-bottom-color:#fecaca}.danger-modal-heading .resource-eyebrow{color:#b42318}.danger-heading-icon{display:grid;place-items:center;flex:0 0 44px;height:44px;color:#b42318;background:#fee2e2;border-radius:12px;font-size:21px}.destructive-summary{display:flex;align-items:center;gap:13px;margin-bottom:14px;padding:14px 16px;background:#fff7f7;border:1px solid #fecaca;border-radius:12px}.destructive-summary>i{color:#b42318;font-size:24px}.destructive-summary>div{display:flex;flex-direction:column}.destructive-summary strong{color:#7f1d1d;font-size:15px}.destructive-summary span{color:#7f1d1d;font-size:12px}.destructive-check{display:flex;align-items:flex-start;gap:10px;margin:0;padding:13px 14px;background:#fff7f7;border:1px solid #fecaca;border-radius:10px;color:#7f1d1d;font-size:13px}.destructive-check .form-check-input{flex:0 0 auto;margin:2px 0 0}.destructive-check span{line-height:1.45}@media(max-width:767px){.admin-saas-page .data-table th:last-child,.admin-saas-page .data-table td:last-child,.admin-access-page .data-table th:last-child,.admin-access-page .data-table td:last-child{min-width:0}.admin-company-actions,.admin-access-actions{flex-wrap:wrap;justify-content:flex-end}}
.document-lookup-field{position:relative}.document-lookup-field .form-control{padding-right:40px}.document-lookup-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:grid;place-items:center;color:#64748b;pointer-events:none}.document-feedback{display:block;min-height:18px;margin-top:4px;color:#64748b;font-size:11px;line-height:1.35}.document-lookup-field.is-loading .form-control{border-color:#93c5fd}.document-lookup-field.is-loading .document-lookup-icon{color:#2563eb}.document-lookup-field.is-loading .document-lookup-icon i{animation:document-lookup-spin .85s linear infinite}.document-lookup-field.is-success .form-control{border-color:#86efac}.document-lookup-field.is-success .document-lookup-icon,.document-feedback.is-success{color:#15803d}.document-lookup-field.is-error .form-control{border-color:#fca5a5}.document-lookup-field.is-error .document-lookup-icon,.document-feedback.is-error{color:#b42318}.document-lookup-field.is-warning .form-control{border-color:#fcd34d}.document-lookup-field.is-warning .document-lookup-icon,.document-feedback.is-warning{color:#a16207}.document-feedback.is-loading{color:#2563eb}@keyframes document-lookup-spin{to{transform:rotate(360deg)}}

/* Consulta cadastral de CPF/CNPJ na Administração SaaS. */
#empresaModal .modal-dialog,#configEmpresaModal .modal-dialog,#novoAcessoModal .modal-dialog,#editAccessModal .modal-dialog{--bs-modal-width:1100px;max-width:min(1100px,calc(100vw - 24px));margin:16px auto}
#empresaModal .compact-modal,#configEmpresaModal .compact-modal,#novoAcessoModal .compact-modal,#editAccessModal .compact-modal{height:calc(100vh - 32px);max-height:calc(100vh - 32px)}
#empresaModal .compact-modal .modal-body,#configEmpresaModal .compact-modal .modal-body,#novoAcessoModal .compact-modal .modal-body,#editAccessModal .compact-modal .modal-body{flex:1 1 auto;overflow-y:auto}
.document-lookup-field{position:relative!important;display:block;width:100%;min-width:0}.document-lookup-field .form-control{width:100%;min-height:42px;padding-right:42px}.document-lookup-field>.document-lookup-icon{position:absolute!important;z-index:3;right:13px!important;top:50%!important;left:auto!important;width:18px;height:18px;margin:0!important;transform:translateY(-50%)!important;display:grid!important;place-items:center;color:#64748b;pointer-events:none}.document-feedback{display:block;min-height:18px;margin:6px 0 0;color:#64748b;font-size:11px;line-height:1.35}.document-details-slot{margin-top:2px;margin-bottom:2px}
.cnpj-result-card{overflow:hidden;border:1px solid #cfdcf4;border-radius:14px;background:#fff;box-shadow:0 7px 22px rgba(37,78,148,.08)}.cnpj-result-header{display:flex;align-items:center;gap:12px;padding:15px 17px;background:linear-gradient(135deg,#f4f8ff 0%,#fff 72%);border-bottom:1px solid #e2e9f5}.cnpj-result-icon{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border-radius:11px;background:#dbeafe;color:#1d4ed8;font-size:19px}.cnpj-result-copy{display:flex;flex:1;min-width:0;flex-direction:column}.cnpj-result-copy small{color:#2563eb;font-size:9px;font-weight:850;letter-spacing:.09em}.cnpj-result-copy strong{overflow:hidden;color:#172033;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.cnpj-result-copy span{overflow:hidden;color:#64748b;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.cnpj-status-badge{flex:0 0 auto;padding:5px 9px;border-radius:999px;background:#dcfce7;color:#166534;font-size:10px;font-weight:850;text-transform:uppercase}.cnpj-readonly-note{display:flex;align-items:center;gap:7px;padding:9px 17px;color:#475569;background:#f8fafc;border-bottom:1px solid #e8edf5;font-size:11px}.cnpj-readonly-note i{color:#2563eb}.cnpj-data-section{padding:14px 17px;border-bottom:1px solid #edf1f6}.cnpj-data-heading{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#1e3a5f}.cnpj-data-heading i{color:#2563eb}.cnpj-data-heading strong{font-size:12px}.cnpj-data-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.cnpj-data-item{display:flex;min-width:0;min-height:54px;flex-direction:column;justify-content:center;padding:8px 10px;border:1px solid #e6ebf2;border-radius:9px;background:#fbfcfe}.cnpj-data-item small{margin-bottom:2px;color:#718096;font-size:9px;font-weight:750;letter-spacing:.025em;text-transform:uppercase}.cnpj-data-item strong{overflow-wrap:anywhere;color:#253247;font-size:11px;line-height:1.35}.cnpj-data-collection{border-bottom:1px solid #edf1f6}.cnpj-data-collection:last-child{border-bottom:0}.cnpj-data-collection>summary{display:flex;align-items:center;gap:8px;padding:12px 17px;color:#1e3a5f;cursor:pointer;list-style:none}.cnpj-data-collection>summary::-webkit-details-marker{display:none}.cnpj-data-collection>summary i{color:#2563eb}.cnpj-data-collection>summary strong{font-size:12px}.cnpj-collection-count{display:grid;place-items:center;min-width:21px;height:21px;margin-left:auto;padding:0 6px;border-radius:999px;background:#eaf1ff;color:#1d4ed8;font-size:9px;font-weight:850}.cnpj-collection-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 17px 14px}.cnpj-collection-list article{min-width:0;padding:10px 11px;border:1px solid #e6ebf2;border-radius:9px;background:#fbfcfe}.cnpj-collection-list article>div{display:flex;min-width:0;flex-direction:column}.cnpj-collection-list strong{overflow-wrap:anywhere;color:#253247;font-size:11px}.cnpj-collection-list small{margin:2px 0;color:#2563eb;font-size:9px;font-weight:750;text-transform:uppercase}.cnpj-collection-list p,.cnpj-empty{margin:0;color:#64748b;font-size:10px;line-height:1.45}.cnpj-empty{grid-column:1/-1;padding:8px 0}
@media(max-width:900px){.cnpj-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cnpj-collection-list{grid-template-columns:1fr}}
@media(max-width:575px){#empresaModal .modal-dialog,#configEmpresaModal .modal-dialog,#novoAcessoModal .modal-dialog,#editAccessModal .modal-dialog{max-width:none;margin:8px}#empresaModal .compact-modal,#configEmpresaModal .compact-modal,#novoAcessoModal .compact-modal,#editAccessModal .compact-modal{height:calc(100vh - 16px);max-height:calc(100vh - 16px)}.cnpj-result-header{align-items:flex-start;flex-wrap:wrap}.cnpj-status-badge{margin-left:52px}.cnpj-data-grid{grid-template-columns:1fr}.cnpj-result-copy strong,.cnpj-result-copy span{white-space:normal}}

.cnpj-primary-card{overflow:hidden;border:1px solid #dbe3ef;border-radius:12px;background:#fff;box-shadow:0 5px 16px rgba(31,52,88,.06)}.cnpj-primary-header{display:flex;align-items:center;gap:11px;padding:12px 14px;border-bottom:1px solid #e8edf4;background:#f8fafc}.cnpj-primary-header-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:9px;background:#e8efff;color:#2457d6;font-size:17px}.cnpj-primary-header-copy{display:flex;min-width:0;flex:1;flex-direction:column}.cnpj-primary-header-copy strong{color:#1f2937;font-size:13px}.cnpj-primary-header-copy span{color:#718096;font-size:10px}.cnpj-primary-badge{display:inline-flex;align-items:center;gap:4px;padding:5px 8px;border:1px solid #dbe3ef;border-radius:999px;background:#fff;color:#64748b;font-size:9px;font-weight:750;white-space:nowrap}.cnpj-primary-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;padding:12px 14px 14px}.cnpj-primary-item{display:flex;grid-column:span 4;align-items:flex-start;gap:10px;min-width:0;padding:11px 12px;border:1px solid #e5eaf1;border-radius:9px;background:#fff}.cnpj-primary-item.is-wide{grid-column:span 8}.cnpj-primary-item.is-full{grid-column:1/-1}.cnpj-primary-item-icon{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:8px;background:#f0f4fb;color:#3b67c7;font-size:13px}.cnpj-primary-item>div{display:flex;min-width:0;flex-direction:column}.cnpj-primary-item small{margin-bottom:2px;color:#7b8798;font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.cnpj-primary-item strong{overflow-wrap:anywhere;color:#263449;font-size:11px;font-weight:700;line-height:1.4}.cnpj-primary-item[data-key="address"] strong,.cnpj-primary-item[data-key="main-cnae"] strong{font-weight:600}
@media(max-width:575px){.cnpj-primary-header{align-items:flex-start;flex-wrap:wrap}.cnpj-primary-badge{margin-left:47px}.cnpj-primary-item,.cnpj-primary-item.is-wide{grid-column:1/-1}}

/* Modelos e emissão de contratos digitais */
.contract-model-meta{padding:16px 20px;background:#fff;border-bottom:1px solid var(--line,#e2e7ef)}.contract-editor-toolbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:9px 14px;border-bottom:1px solid #cfd6e2;background:#f8fafc;box-shadow:0 3px 10px rgba(18,31,60,.05)}.contract-toolbar-group{display:flex;align-items:center;gap:2px;padding-right:7px;border-right:1px solid #dce1e9}.contract-toolbar-group:last-child{border-right:0}.contract-editor-toolbar button,.contract-color-tool{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:6px;background:transparent;color:#344054;cursor:pointer}.contract-editor-toolbar button:hover,.contract-color-tool:hover{background:#e9edf7;color:var(--primary)}.contract-editor-toolbar select{height:32px;max-width:145px;border:1px solid #d7dde7;border-radius:6px;background:#fff;color:#344054;font-size:12px;padding:0 25px 0 8px}.contract-color-tool{position:relative}.contract-color-tool input{position:absolute;width:1px;height:1px;opacity:0}.contract-editor-layout{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:calc(100vh - 255px);background:#e9edf3}.contract-variable-panel{z-index:3;background:#fff;border-right:1px solid #d5dbe5;overflow:auto;max-height:calc(100vh - 255px)}.contract-variable-heading{display:flex;flex-direction:column;padding:16px 18px;border-bottom:1px solid #e3e7ee}.contract-variable-heading strong{font-size:14px}.contract-variable-heading small{color:var(--muted);font-size:11px}.contract-variable-panel .accordion-button{font-size:12px;font-weight:750;padding:12px 16px}.contract-variable-panel .accordion-body{padding:8px}.contract-token-list{display:flex;flex-direction:column;gap:4px}.contract-token-list button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px;border:1px solid transparent;border-radius:7px;background:#f7f9fc;text-align:left}.contract-token-list button:hover{border-color:#cbd5ff;background:#f0f3ff}.contract-token-list span{font-size:11px;font-weight:700}.contract-token-list code{font-size:9px;color:var(--primary);word-break:break-all}.contract-variable-tip{display:flex;gap:8px;margin:10px;padding:10px;border-radius:8px;background:#fff8e8;color:#745313;font-size:10px}.contract-paper-stage{overflow:auto;padding:26px 32px 60px}.contract-paper{width:210mm;min-height:297mm;margin:0 auto;background:#fff;box-shadow:0 8px 30px rgba(30,41,59,.16);transition:width .2s,min-height .2s}.contract-paper.is-landscape{width:297mm;min-height:210mm}/* Só a superfície de edição: margem igual à do @page (12mm) e nada de tipografia — quem manda
   no texto é o CSS do documento injetado por view/contract-document-styles.php. */
.contract-editor{min-height:inherit;padding:12mm;outline:0}.contract-editor:focus{box-shadow:inset 0 0 0 2px rgba(61,88,255,.2)}.contract-editor table,.contract-table{width:100%;border-collapse:collapse;margin:10px 0}.contract-editor th,.contract-editor td,.contract-table th,.contract-table td{border:1px solid #667085;padding:5px;font-size:9pt}.contract-editor th,.contract-table th{background:#e9edf3;text-align:center}.contract-editor .page-break{height:28px;margin:22px -12mm;border-top:2px dashed #9aa6b7;border-bottom:2px dashed #9aa6b7;background:#f2f4f7;color:#697386;text-align:center;font-size:10px;line-height:24px;page-break-after:always}.contract-editor .page-break span{display:inline-block}.contract-model-name{display:flex;align-items:center;gap:11px}.contract-model-name>div{display:flex;flex-direction:column}.contract-model-name small{color:var(--muted);font-size:11px;max-width:560px}.contract-model-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--primary-soft,#eef1ff);color:var(--primary);font-size:18px}.contract-document-history{display:flex;flex-direction:column;gap:7px}.contract-document-history a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border:1px solid var(--line,#e2e7ef);border-radius:8px;color:var(--text);text-decoration:none}.contract-document-history a:hover{border-color:#bdc9ff;background:#f7f8ff}.contract-document-history small{color:var(--muted)}.certificate-status-card{display:flex;align-items:center;gap:11px;padding:12px 14px;border:1px solid var(--line,#e2e7ef);border-radius:10px;background:#fafbfd}.certificate-status-card>i{font-size:22px}.certificate-status-card>div{display:flex;flex-direction:column}.certificate-status-card strong{font-size:12px}.certificate-status-card small{font-size:10px;color:var(--muted)}.certificate-status-card.is-success{border-color:#b9dfca;background:#f1fbf5;color:#187446}.certificate-status-card.is-warning{border-color:#ead29a;background:#fff9eb;color:#8a6512}.certificate-status-card.is-danger{border-color:#edb6bc;background:#fff3f4;color:#b32635}.contract-generation-shell{display:grid;grid-template-columns:310px minmax(0,1fr);min-height:calc(100vh - 76px)}.contract-generation-sidebar{padding:18px;border-right:1px solid #d6dce5;background:#fff;overflow:auto}.contract-generation-workspace{min-width:0;background:#e9edf3}.contract-generation-workspace .contract-editor-toolbar{top:0}.contract-generation-workspace .contract-paper-stage{height:calc(100vh - 123px)}.contract-generation-actions{position:sticky;bottom:0;padding-top:14px;background:#fff}.contract-loading{display:grid;place-items:center;min-height:500px;color:var(--muted)}.contract-factured-lock{font-size:11px;color:var(--muted)}
@media(max-width:1100px){.contract-editor-layout{grid-template-columns:230px minmax(0,1fr)}.contract-generation-shell{grid-template-columns:260px minmax(0,1fr)}.contract-paper-stage{padding:18px}.contract-paper{transform-origin:top center}}
@media(max-width:767px){.contract-editor-layout,.contract-generation-shell{display:block}.contract-variable-panel,.contract-generation-sidebar{max-height:none;border-right:0}.contract-variable-panel{max-height:300px}.contract-paper-stage{padding:12px;overflow:auto}.contract-paper{margin:0;transform:scale(.55);transform-origin:top left}.contract-editor-toolbar{overflow-x:auto;flex-wrap:nowrap}.contract-toolbar-group{flex:0 0 auto}
/* Celular: o modal do gerador tem altura fixa (100vh) e o formulario e o filho flex que
   guarda tudo. Sem area de rolagem propria, os campos e os botoes abaixo da dobra ficavam
   inalcancaveis. O formulario passa a rolar, e a folha do documento fica com altura limitada
   para nao engolir a tela inteira. */
#generateContractModal #contractGenerationForm{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
#generateContractModal .contract-generation-sidebar{overflow:visible}
#generateContractModal .contract-generation-workspace .contract-paper-stage{height:62vh;flex:none;-webkit-overflow-scrolling:touch}}
/* Abas presas ao topo da area que rola (corpo do modal ou a propria pagina): em formulario
   longo, trocar de aba obrigava a rolar tudo de volta. Vale para contrato, suprimentos e alertas. */
/* Só o comportamento: a geometria (margens/paddings) de cada barra continua a definida
   antes, para a barra ficar colada no topo, sem folga nova. */
.contrato-tabs,.supply-tabs,.resource-panel>.nav-tabs{position:sticky;top:0;z-index:6;background:var(--surface,#fff)}
/* A barra do contrato sobe 18px (margem negativa) para encostar no cabeçalho. O topo de
   ancoragem tem de descontar o mesmo tanto, senão a rolagem a empurra de volta para dentro
   do padding do corpo do modal e reabre a folga. */
.contrato-tabs{top:-18px}
/* Lista de anexos do gerador: itens curtos, com rolagem propria quando o modelo tiver muitos. */
.contract-annex-list{max-height:190px;overflow:auto;padding:8px 10px;border:1px solid var(--line,#e2e7ef);border-radius:8px;background:#fff}
.contract-annex-list .form-check{margin-bottom:4px}
.contract-annex-list .form-check-label{font-size:12px;line-height:1.3}
.contract-sheet-icon{display:inline-block;width:12px;height:16px;margin-right:5px;border:1.5px solid currentColor;border-radius:2px;vertical-align:-3px;color:var(--primary)}.contract-sheet-icon.is-landscape{width:16px;height:12px;vertical-align:-1px}
.contract-model-heading{align-items:center;gap:14px;padding:16px 22px;background:linear-gradient(135deg,#fff 0%,#f7f9ff 100%);border-bottom-color:#dce3f2}.contract-model-heading-icon{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:11px;background:var(--primary-soft,#eceffe);color:var(--primary);font-size:20px}.contract-model-heading-copy{min-width:0;flex:1}.contract-model-heading .resource-eyebrow{display:block;margin-bottom:2px;color:var(--primary);font-size:10px;font-weight:850;letter-spacing:.09em}.contract-model-heading h2{font-size:20px;line-height:1.25}.contract-model-heading p{font-size:12px;line-height:1.4}.contract-model-heading .btn-close{flex:0 0 auto;margin:0 0 0 12px}.contract-model-meta{padding:16px 22px 18px}.contract-model-meta .form-label{margin-bottom:6px;color:#344054;font-size:12px;font-weight:700;white-space:nowrap}.contract-model-meta .form-control,.contract-model-meta .form-select{min-height:42px}
/* Metadados do modelo em uma única linha: o seletor de padrão acompanha a altura dos campos. */
.contract-model-meta .contract-model-default{display:flex;align-items:center;gap:6px;min-height:42px;margin:0;padding-left:2.4rem}
.contract-model-meta .contract-model-default .form-check-input{margin-left:-2.4rem;width:2.1rem;height:1.1rem}
.contract-model-meta .contract-model-default .form-check-label{font-size:13px;white-space:nowrap}
.contract-model-meta .form-select{padding-right:1.8rem;background-position:right .5rem center}
.modal-fullscreen .professional-modal{height:100vh;max-height:100vh;border-radius:0}
#contractModelForm,#contractGenerationForm{overflow:hidden}
#contractModelForm .contract-model-meta,#contractModelForm .contract-editor-toolbar,#contractModelForm .modal-footer{flex:0 0 auto}
#contractModelForm .contract-editor-layout{flex:1 1 auto;min-height:0;overflow:hidden}
#contractModelForm .contract-variable-panel{height:100%;max-height:none}
#contractModelForm .contract-paper-stage{height:100%;min-height:0}
#contractGenerationForm .contract-generation-shell{flex:1 1 auto;min-height:0}
.contract-generation-sidebar{min-height:0}
.contract-generation-workspace{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.contract-generation-workspace .contract-editor-toolbar{flex:0 0 auto}
.contract-generation-workspace .contract-paper-stage{flex:1 1 auto;height:auto;min-height:0}
.contract-document-card{border:1px solid var(--line,#e2e7ef);border-radius:10px;background:#fff;overflow:hidden}.contract-document-history .contract-document-main{border:0;border-radius:0;padding:10px 11px}.contract-document-history .contract-document-main:hover{background:#f7f8ff}.contract-document-status{display:flex;gap:5px;flex-wrap:wrap;padding:0 11px 9px}.contract-document-status .badge{font-size:9px;font-weight:700}.contract-document-actions{display:flex;gap:6px;padding:8px 10px;border-top:1px solid #edf0f5;background:#fafbfd}.contract-document-history .contract-document-actions a,.contract-document-actions button{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:auto;margin:0;padding:5px 8px;border-radius:6px;font-size:10px;line-height:1.2}.contract-document-history .contract-document-actions a:hover{background:#f0f3f8}
/* Estilo do documento operacional NÃO fica aqui: era uma cópia que envelhecia sozinha e fazia
   a tela do editor sair diferente da impressão. A fonte única é
   ContratoDocumentosService::documentCss(), injetada por view/contract-document-styles.php. */
.contract-editor .contract-reference{text-align:right;color:#475467;font-size:10px;margin:4px 0 14px}
.pades-policy-toggle{padding:1rem 1rem 1rem 3.25rem;border:1px solid #dfe5ef;border-radius:14px;background:#f8faff}.pades-policy-toggle .form-check-input{width:2.6rem;height:1.35rem;margin-left:-2.75rem}.certificate-status-card.policy-disabled{filter:saturate(.35);opacity:.78}.policy-field-disabled{opacity:.58;transition:opacity .18s ease}

/* Acabamento final do tema ServerLoc.
   Mantido no fim do arquivo para prevalecer sobre módulos legados. */
.modal-heading {
    position: relative;
    overflow: hidden;
}

.danger-modal-heading::before {
    background: var(--danger);
}

.type-pill-equipamento {
    --cat-text: #087b7f;
    --cat-bg: #ddf5f5;
}

.supply-form-body {
    background: var(--bg);
}

.supply-purchase-section {
    border-color: #bfe1e1;
    background: linear-gradient(145deg, #fff 0%, #f1fbfb 100%);
}

.supply-calculation,
.supply-field-card.is-primary {
    border-color: #bfe1e1;
    background: #f2fbfb;
}

.form-section-title > i {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.saas-role-icon.is-company {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.limit-inline-note {
    color: #086f73;
    background: #edfafa;
    border-color: #b9e2e2;
}

.document-lookup-field.is-loading .form-control {
    border-color: #78caca;
}

.document-lookup-field.is-loading .document-lookup-icon,
.document-feedback.is-loading {
    color: var(--primary-dark);
}

.cnpj-result-card,
.cnpj-primary-card {
    border-color: #cfe3e3;
    box-shadow: 0 7px 22px rgba(8, 103, 107, .08);
}

.cnpj-result-header {
    background: linear-gradient(135deg, #eefafa 0%, #fff 72%);
    border-bottom-color: #dceaea;
}

.cnpj-result-icon,
.cnpj-primary-header-icon,
.cnpj-primary-item-icon {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.cnpj-result-copy small,
.cnpj-readonly-note i,
.cnpj-data-heading i,
.cnpj-data-collection > summary i,
.cnpj-collection-list small,
.cnpj-primary-header-copy span {
    color: var(--primary-dark);
}

.cnpj-collection-count {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.contract-editor-toolbar button:hover,
.contract-color-tool:hover,
.contract-token-list button:hover {
    color: var(--primary-dark);
    background: var(--primary-soft);
}

.contract-token-list button:hover,
.contract-document-history a:hover {
    border-color: #b9dddd;
}

.contract-editor:focus {
    box-shadow: inset 0 0 0 2px rgba(8, 169, 169, .22);
}

.contract-document-history a:hover,
.contract-document-history .contract-document-main:hover,
.contract-document-history .contract-document-actions a:hover {
    background: #f1fafa;
}

.contract-model-heading {
    background: linear-gradient(135deg, #fff 0%, #f1fbfb 100%);
    border-bottom-color: #d7e8e8;
}

/* Padronização dos controles de listagem e da central de suprimentos. */
.contract-models-page > .resource-header h2,
.supply-page > .resource-header h2 {
    color: var(--text);
    font-weight: 800;
    letter-spacing: -.015em;
}

.resource-filterbar .resource-toolbar > .resource-actions {
    align-items: center;
    flex-direction: row;
    flex-wrap: wrap;
}

.resource-filterbar .resource-toolbar > .resource-actions .btn {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    gap: 7px;
    border-radius: 8px;
    font-weight: 700;
}

.supply-page .supply-panel {
    border-radius: 14px;
    box-shadow: 0 8px 24px rgba(31, 48, 51, .06);
}

.supply-page .resource-filterbar {
    padding-top: 3px;
}

.supply-page .resource-filterbar > .d-flex {
    gap: 10px !important;
    margin-top: 10px !important;
    padding-bottom: 2px;
}

.supply-page .table-responsive {
    margin-top: 14px !important;
    background: var(--surface);
    border-radius: 12px;
}

.supply-page .dataTables_wrapper {
    color: var(--muted);
    font-size: 13px;
}

.resource-filterbar + .table-responsive .datatables-search {
    display: none !important;
}

.supply-page .datatables-top,
.supply-page div.dataTables_wrapper > div.datatables-top {
    min-height: 52px;
    justify-content: flex-end !important;
    gap: 10px;
    margin: 0 !important;
    padding: 9px 12px;
    background: #f8fafa;
    border-bottom: 1px solid var(--line);
}

.supply-page .dataTables_length label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    color: var(--muted);
    font-size: 12px;
    font-weight: 650;
    white-space: nowrap;
}

.supply-page .dataTables_length select {
    width: 68px;
    min-height: 34px;
    margin: 0;
    padding-top: 4px;
    padding-bottom: 4px;
    color: var(--text);
    background-color: var(--surface);
    border-color: var(--line);
    border-radius: 8px;
    font-size: 12px;
}

.supply-page [data-print-filtered] {
    display: inline-flex;
    min-height: 34px;
    align-items: center;
    gap: 6px;
    margin-left: 0 !important;
    color: var(--primary-dark);
    background: var(--surface);
    border-color: #b9dddd;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
}

.supply-page [data-print-filtered]:hover {
    color: #fff;
    background: var(--primary-dark);
    border-color: var(--primary-dark);
}

.supply-page .dataTables_empty {
    height: 76px;
    color: var(--muted) !important;
    background: var(--surface);
    font-size: 13px;
}

.supply-page .datatables-bottom,
.supply-page div.dataTables_wrapper > div.datatables-bottom {
    min-height: 54px;
    gap: 12px;
    margin: 0 !important;
    padding: 10px 12px;
    background: #fbfcfc;
    border-top: 1px solid var(--line);
}

.supply-page .dataTables_info {
    padding: 0 !important;
    color: var(--muted);
    font-size: 12px;
    font-weight: 600;
}

.supply-page .dataTables_paginate {
    padding-top: 0 !important;
}

.supply-page .dataTables_paginate .pagination {
    gap: 5px;
    margin: 0;
}

.supply-page .dataTables_paginate .page-link {
    display: inline-flex;
    min-height: 34px;
    align-items: center;
    justify-content: center;
    padding: 6px 11px;
    color: var(--primary-dark);
    background: var(--surface);
    border: 1px solid #cfe0e0;
    border-radius: 8px !important;
    font-size: 12px;
    font-weight: 650;
}

.supply-page .dataTables_paginate .page-item.disabled .page-link {
    color: #96a1a6;
    background: #f1f4f4;
    border-color: #e0e7e7;
}

/* ===== Correções de regressões visuais e responsividade ===== */
.sidebar-close,
.sidebar-backdrop {
    display: none;
}

@media (max-height: 760px) {
    .sidebar {
        padding-top: 16px;
        padding-bottom: 12px;
    }

    .sidebar .brand {
        margin-bottom: 16px;
    }

    .sidebar-nav {
        padding-bottom: 10px;
    }

    .sidebar-nav a {
        min-height: 40px;
        padding-top: 8px;
        padding-bottom: 8px;
    }

    .sidebar-section {
        margin-top: 12px;
    }

    .sidebar-close {
        top: 16px;
    }
}

html,
body {
    max-width: 100%;
    overflow-x: hidden;
}

.dataTables_wrapper {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.data-table-scroll {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scrollbar-gutter: stable;
}

.data-table-scroll > table.dataTable {
    margin-bottom: 0 !important;
}

#usuariosTable.data-table > :not(caption) > * > * {
    padding-left: 12px;
    padding-right: 12px;
}

#usuariosTable th:last-child,
#usuariosTable td:last-child,
#clientesTable th:nth-child(4),
#clientesTable td:nth-child(4),
#clientesTable th:nth-child(5),
#clientesTable td:nth-child(5) {
    white-space: nowrap;
}

@media (min-width: 992px) {
    #usuariosTable {
        width: 100% !important;
        table-layout: fixed;
    }

    #usuariosTable th:nth-child(1),
    #usuariosTable td:nth-child(1) {
        width: 23%;
        overflow-wrap: anywhere;
    }

    #usuariosTable th:nth-child(2),
    #usuariosTable td:nth-child(2) {
        width: 12%;
    }

    #usuariosTable th:nth-child(3),
    #usuariosTable td:nth-child(3) {
        width: 9%;
    }

    #usuariosTable th:nth-child(4),
    #usuariosTable td:nth-child(4) {
        width: 31%;
    }

    #usuariosTable td:nth-child(4) {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    #usuariosTable th:nth-child(5),
    #usuariosTable td:nth-child(5) {
        width: 13%;
    }

    #usuariosTable th:nth-child(6),
    #usuariosTable td:nth-child(6) {
        width: 108px;
    }
}

@media (max-width: 991.98px) {
    body.sidebar-open {
        overflow: hidden;
    }

    .sidebar-close {
        position: absolute;
        top: 24px;
        right: 16px;
        z-index: 1;
        display: inline-flex;
        width: 40px;
        height: 40px;
        align-items: center;
        justify-content: center;
        color: #dce8e9;
        background: rgba(255, 255, 255, .08);
        border: 1px solid rgba(255, 255, 255, .13);
        border-radius: 9px;
    }

    .sidebar .brand {
        padding-right: 42px;
    }

    .sidebar-backdrop {
        position: fixed;
        inset: 0;
        z-index: 1030;
        display: block;
        padding: 0;
        background: rgba(20, 28, 31, .46);
        border: 0;
        opacity: 0;
        pointer-events: none;
        transition: opacity .2s ease;
    }

    .sidebar.is-open + .sidebar-backdrop {
        opacity: 1;
        pointer-events: auto;
    }

    .topbar {
        align-items: center;
        gap: 12px;
    }

    .topbar-title {
        flex: 1 1 auto;
        min-width: 0;
    }

    .topbar-title h1 {
        min-width: 0;
        overflow: hidden;
        font-size: clamp(19px, 5.7vw, 24px);
        line-height: 1.15;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .content-area {
        min-width: 0;
    }

    .resource-panel {
        padding: 14px;
        overflow: hidden;
    }

    .resource-header.report-main-head {
        align-items: stretch;
        flex-direction: column;
    }

    .resource-header.report-main-head > div {
        width: 100%;
        min-width: 0;
    }

    .resource-header.report-main-head > .btn {
        width: 100%;
    }

    .resource-filterbar {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        overflow: hidden;
    }

    .resource-filterbar > .d-flex {
        align-items: stretch !important;
        min-width: 0;
    }

    .resource-filterbar .btn-group[data-f-facet] {
        width: 100%;
        max-width: 100%;
        justify-content: flex-start;
        overflow-x: auto;
        overscroll-behavior-inline: contain;
    }

    .resource-filterbar .btn-group[data-f-facet] > .btn {
        flex: 0 0 auto;
        white-space: nowrap;
    }

    .resource-filterbar > .d-flex > .d-flex {
        width: 100%;
        min-width: 0;
        flex-wrap: wrap;
    }

    div.dataTables_wrapper > div.datatables-top {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr);
        align-items: stretch !important;
        justify-content: stretch !important;
        width: 100%;
        min-width: 0;
        gap: 10px;
    }

    div.dataTables_wrapper .datatables-search,
    div.dataTables_wrapper .dataTables_filter,
    div.dataTables_wrapper .dataTables_filter label {
        width: 100%;
        min-width: 0;
        margin: 0;
    }

    div.dataTables_wrapper .dataTables_filter label {
        display: grid;
        grid-template-columns: auto minmax(0, 1fr);
        align-items: center;
        gap: 8px;
    }

    div.dataTables_wrapper .datatables-search input,
    div.dataTables_wrapper .dataTables_filter input {
        width: 100% !important;
        min-width: 0;
        max-width: none;
        margin: 0 !important;
    }

    div.dataTables_wrapper .dataTables_length {
        width: 100%;
    }

    div.dataTables_wrapper .dataTables_length label {
        display: flex;
        align-items: center;
        gap: 8px;
        margin: 0;
        white-space: nowrap;
    }

    div.dataTables_wrapper .dataTables_length select {
        flex: 0 0 78px;
        width: 78px;
    }

    div.dataTables_wrapper > div.datatables-top > .dataTables_paginate {
        display: none;
    }

    div.dataTables_wrapper > div.datatables-top [data-print-filtered] {
        width: 100%;
        margin: 0 !important;
    }

    div.dataTables_wrapper > div.datatables-bottom {
        align-items: flex-start !important;
        flex-direction: column;
        gap: 10px;
    }

    div.dataTables_wrapper > div.datatables-bottom .dataTables_info {
        padding-top: 0;
        white-space: normal;
    }

    div.dataTables_wrapper > div.datatables-bottom .dataTables_paginate {
        width: 100%;
        max-width: 100%;
        margin: 0 !important;
        overflow-x: auto;
    }

    div.dataTables_wrapper > div.datatables-bottom .pagination {
        justify-content: flex-start;
        margin: 0;
    }
}

@media (max-width: 575.98px) {
    .modal-dialog.modal-fullscreen {
        width: 100%;
        max-width: 100%;
        margin: 0;
    }

    .modal-dialog.modal-fullscreen .modal-content {
        border-radius: 0;
    }

    .modal-dialog:not(.modal-fullscreen) .compact-modal,
    .modal-dialog-scrollable:not(.modal-fullscreen) .compact-modal {
        height: calc(100vh - 20px);
        max-height: calc(100vh - 20px);
    }

    .modal-dialog:not(.modal-fullscreen) .compact-modal .modal-body {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
    }
}

/* Layout mobile das toolbars (busca + botão Novo na mesma linha, contador
   abaixo) fica consolidado no @media(max-width:991.98px) mais acima, agora
   aplicado de forma uniforme a Contratos e às telas com filterBar. */

/* ===== Normalização visual global =====
   Mantida no fim do arquivo para substituir regras legadas e estilos de
   componentes antigos sem depender da ordem em que cada tela foi criada. */
.integration-page > .resource-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    min-width: 0;
    margin-bottom: 18px;
}
.integration-page > .resource-header > div { min-width: 0; }
.integration-page > .resource-header .resource-eyebrow {
    display: block;
    margin-bottom: 3px;
    color: var(--primary);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
}
.integration-page > .resource-header h2 {
    margin: 0 0 4px;
    color: var(--text);
    font-size: 24px;
    font-weight: 750;
    line-height: 1.2;
}
.integration-page > .resource-header p {
    max-width: 760px;
    margin: 0;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.45;
}
@media (max-width: 767px) {
    .integration-page > .resource-header { align-items: flex-start; flex-direction: column; gap: 12px; }
    .integration-page > .resource-header h2 { font-size: 21px; }
}
.resource-page,
.professional-modal,
.compact-modal {
    font-size: 13px;
}

.panel,
.resource-panel,
.report-main-head,
.report-filter-panel,
.report-chart-panel,
.report-table-panel {
    border-radius: 12px;
}

.resource-panel {
    padding: 20px;
}

.table,
table.dataTable {
    font-size: 13px !important;
    line-height: 1.35;
}

.table > :not(caption) > * > *,
table.dataTable > :not(caption) > * > * {
    padding: 12px 10px;
    vertical-align: middle;
}

.table thead th,
table.dataTable thead th {
    padding: 11px 10px;
    font-size: 11px !important;
    font-weight: 750;
    line-height: 1.25;
    text-transform: uppercase;
}

.table tfoot th,
.table tfoot td,
table.dataTable tfoot th,
table.dataTable tfoot td {
    padding: 11px 10px;
    font-size: 11px !important;
    line-height: 1.25;
}

.table .form-control,
.table .form-select {
    min-height: 32px;
    padding-top: 4px;
    padding-bottom: 4px;
    font-size: 12px;
}

.form-control,
.form-select,
.input-group-text {
    min-height: 40px;
    font-size: 13px;
}

.form-control-sm,
.form-select-sm {
    min-height: 32px;
    padding-top: 4px;
    padding-bottom: 4px;
    font-size: 12px;
}

.form-label {
    margin-bottom: 5px;
    font-size: 12px;
    font-weight: 700;
}

.form-text,
.form-hint {
    font-size: 11px;
    line-height: 1.4;
}

.modal-content:not(.modal-fullscreen .modal-content) {
    border-radius: 12px;
}

.modal-heading {
    padding: 14px 20px;
}

.modal-heading h2 {
    font-size: 20px;
    line-height: 1.25;
}

.modal-heading p {
    font-size: 12px;
    line-height: 1.4;
}

.professional-modal .modal-body,
.compact-modal .modal-body {
    padding: 18px 20px;
}

.professional-modal .modal-footer,
.compact-modal .modal-footer {
    gap: 8px;
    padding: 12px 20px;
}

.resource-filterbar .resource-actions,
.resource-filterbar .resource-toolbar > .resource-actions {
    margin-top: 0;
    padding: 0;
    border-top: 0;
}

.login-card .form-control,
.login-card .input-group-text {
    min-height: 48px;
    font-size: 14px;
}

.login-card .btn.btn-primary.login-submit {
    min-height: 49px;
    font-size: 14px;
}

/* Faturar contrato: aproveita a largura da tela e distribui as sete colunas
   sem criar rolagem horizontal em resolucoes desktop compactas. */
#gerarFaturasModal .modal-dialog {
    width: calc(100vw - 24px);
    max-width: 1120px;
    margin-right: auto;
    margin-left: auto;
}

#gerarFaturasModal .gf-eq-table {
    width: 100%;
    table-layout: fixed;
}

#gerarFaturasModal .gf-eq-table th,
#gerarFaturasModal .gf-eq-table td {
    min-width: 0 !important;
    padding-top: 9px;
    padding-bottom: 9px;
    padding-right: 8px;
    padding-left: 8px;
}

#gerarFaturasModal .gf-eq-table th {
    white-space: normal !important;
}

#gerarFaturasModal .gf-eq-table th:nth-child(1) { width: 9%; }
#gerarFaturasModal .gf-eq-table th:nth-child(2) { width: 22%; }
#gerarFaturasModal .gf-eq-table th:nth-child(3) { width: 12%; }
#gerarFaturasModal .gf-eq-table th:nth-child(4) { width: 13%; }
#gerarFaturasModal .gf-eq-table th:nth-child(5) { width: 16%; }
#gerarFaturasModal .gf-eq-table th:nth-child(6) { width: 12%; }
#gerarFaturasModal .gf-eq-table th:nth-child(7) { width: 16%; }

#gerarFaturasModal .gf-eq-table td:nth-child(2) {
    white-space: normal !important;
    overflow-wrap: anywhere;
}

#gerarFaturasModal .gf-eq-table .form-control,
#gerarFaturasModal .gf-eq-table .form-select {
    width: 100%;
    min-width: 0;
}

#gerarFaturasModal .gf-eq-categoria {
    max-width: 105px;
    margin-right: auto;
    margin-left: auto;
}

#gerarFaturasModal .gf-eq-table td:nth-child(6) {
    position: relative;
}

#gerarFaturasModal .gf-eq-table td:nth-child(6) .gf-eq-categoria {
    transform: translateY(-4px);
}

#gerarFaturasModal .gf-eq-cat-original {
    position: absolute;
    right: 8px;
    bottom: 2px;
    left: 8px;
    margin: 0 !important;
    font-size: 9px !important;
    line-height: 1;
    text-align: center;
    white-space: nowrap;
}

#gerarFaturasModal .gf-eq-valor {
    max-width: 120px;
    margin-left: auto;
}

@media (max-width: 767.98px) {
    #gerarFaturasModal .modal-dialog {
        width: calc(100vw - 12px);
        margin: 6px;
    }

    #gerarFaturasModal .gf-eq-table {
        min-width: 760px;
        table-layout: auto;
    }
}

/* Ajuste de faturas: mesma escala tipografica das demais tabelas e campos. */
#ajustarFaturasModal .af-tabela {
    font-size: 13px !important;
}

#ajustarFaturasModal .af-tabela th {
    font-size: 11px !important;
    font-weight: 750;
}

#ajustarFaturasModal .af-tabela td {
    font-size: 13px;
}

#ajustarFaturasModal .af-tabela .form-control {
    min-height: 36px;
    font-size: 13px;
}

#ajustarFaturasModal .info-row-modal,
#ajustarFaturasModal .af-totalizacao {
    font-size: 13px;
}

#ajustarFaturasModal .af-totalizacao strong.fs-5 {
    font-size: 18px !important;
}

.contract-preview-page { display:flex; flex-direction:column; gap:16px; }
.contract-preview-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:18px 22px; border:1px solid var(--line,#e2e7ef); border-radius:14px; background:#fff; }
.contract-preview-toolbar h2 { margin:2px 0 4px; font-size:22px; }
.contract-preview-toolbar p { margin:0; color:var(--muted); font-size:12px; }
.contract-preview-stage { overflow:auto; padding:28px; min-height:calc(100vh - 230px); border-radius:14px; background:#e9edf3; }
.contract-preview-content { cursor:default; }
.preview-empty-field { color:#9a6700; background:#fff7d6; padding:1px 4px; border-radius:3px; }
.preview-template-token { display:inline-block; color:#075985; background:#e0f2fe; border:1px solid #bae6fd; padding:1px 4px; border-radius:4px; font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace; font-size:.92em; line-height:1.25; }
.preview-equipment-tags td { text-align:center; font-weight:700; }
.contract-models-page .data-table th:last-child,
.contract-models-page .data-table td:last-child { width:176px; min-width:176px; }
@media(max-width:767px) {
    .contract-preview-toolbar { align-items:flex-start; flex-direction:column; }
    .contract-preview-stage { padding:12px; }
}

.row-info-modal { overflow:hidden; }
.row-info-heading { display:flex; align-items:center; gap:13px; }
.row-info-heading > div:nth-child(2) { min-width:0; flex:1; }
.row-info-heading h2 { margin:1px 0 3px; font-size:21px; overflow-wrap:anywhere; }
.row-info-heading p { margin:0; color:var(--muted); font-size:12px; }
.row-info-heading-icon { display:grid; place-items:center; flex:0 0 44px; width:44px; height:44px; border-radius:12px; background:var(--primary-soft,#e8f8f8); color:var(--primary); font-size:21px; }
.row-info-summary { display:flex; align-items:center; gap:16px; margin-bottom:18px; padding:16px; border:1px solid var(--line,#dfe5ea); border-radius:12px; background:linear-gradient(135deg,#f8fbfc,#fff); }
.row-info-summary > img { flex:0 0 86px; width:86px; height:86px; border-radius:10px; object-fit:cover; border:1px solid var(--line,#dfe5ea); background:#fff; }
.row-info-summary > div { display:flex; flex-direction:column; min-width:0; }
.row-info-summary span,.row-info-field span { color:var(--muted); font-size:10px; font-weight:750; letter-spacing:.045em; text-transform:uppercase; }
.row-info-summary strong { margin:2px 0; font-size:19px; overflow-wrap:anywhere; }
.row-info-summary small { color:var(--muted); font-size:11px; }
.row-info-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.row-info-group-title { grid-column:1/-1; margin:10px 0 0; padding-bottom:7px; border-bottom:1px solid var(--line,#dfe5ea); color:var(--text,#202938); font-size:13px; }
.row-info-loading { grid-column:1/-1; display:flex; align-items:center; justify-content:center; gap:9px; min-height:150px; color:var(--muted); }
.row-info-field { min-width:0; padding:12px 13px; border:1px solid var(--line,#dfe5ea); border-radius:9px; background:#fff; }
.row-info-field strong { display:block; margin-top:5px; color:var(--text,#202938); font-size:12px; line-height:1.45; white-space:pre-wrap; overflow-wrap:anywhere; }
table.data-table th:last-child,table.data-table td:last-child { white-space:nowrap; }
@media(max-width:991px) { .row-info-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:575px) {
    .row-info-heading-icon { display:none; }
    .row-info-summary { align-items:flex-start; }
    .row-info-summary > img { width:64px; height:64px; flex-basis:64px; }
    .row-info-grid { grid-template-columns:1fr; }
}

/* Mantem o cabecalho principal visivel durante a navegacao da pagina. */
.topbar {
    position: fixed;
    top: 0;
    right: 0;
    left: 244px;
    z-index: 1035;
    isolation: isolate;
    transition: left .2s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.topbar-spacer {
    flex: 0 0 86px;
    height: 86px;
}

.app-shell.has-collapsed-sidebar .topbar {
    left: 0;
}

.topbar.is-scrolled {
    background-color: rgba(248, 251, 252, .97);
    border-bottom-color: rgba(194, 207, 215, .92);
    box-shadow: 0 8px 22px rgba(25, 46, 54, .10);
    backdrop-filter: blur(10px);
}

@media (prefers-reduced-motion: reduce) {
    .topbar {
        transition: none;
    }
}

@media (max-width: 991.98px) {
    .topbar {
        left: 0;
    }
}

/* Financeiro: o parcelamento pode ter dezenas de faturas. O modal mantém
   cabeçalho e ações acessíveis, enquanto corpo e grade rolam separadamente. */
#financeiroModal .modal-dialog {
    height: calc(100vh - 24px);
    max-height: calc(100vh - 24px);
    margin-top: 12px;
    margin-bottom: 12px;
}

#financeiroModal .professional-modal.compact-modal {
    height: 100%;
    max-height: 100%;
    overflow: hidden;
}

#financeiroModal .professional-modal.compact-modal > form {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

#financeiroModal .professional-modal.compact-modal > form > .modal-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

#financeiroModal .modal-footer {
    flex: 0 0 auto;
    flex-wrap: nowrap;
    gap: 8px;
}

#financeiroModal .modal-footer .btn {
    white-space: nowrap;
}

#financeiroModal .fin-charge-source {
    padding: 14px 16px;
    margin-bottom: 12px;
    border: 1px solid #d7e1e4;
    border-radius: 10px;
    background: #f7f9fa;
}

#financeiroModal .fin-charge-source .form-check-label small {
    color: #6b7b82;
}

#financeiroModal .fin-asaas-option {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

#financeiroModal .fin-asaas-brand {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 2px 9px;
    border-radius: 999px;
    background: #1238bf;
    color: #fff;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .02em;
}

#financeiroModal .fin-asaas-summary {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 13px 14px;
    border: 1px solid #bfcaf5;
    border-radius: 10px;
    background: #f1f4ff;
    color: #172e84;
}

#financeiroModal .fin-asaas-summary.d-none {
    display: none !important;
}

#financeiroModal .fin-asaas-symbol {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 9px;
    background: #1238bf;
    color: #fff;
    font-size: 1rem;
}

#financeiroModal .fin-asaas-summary strong,
#financeiroModal .fin-asaas-summary small {
    display: block;
}

#financeiroModal .fin-asaas-summary small {
    margin-top: 2px;
    color: #53639a;
    line-height: 1.4;
}

#financeiroModal .fin-asaas-status {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 7px;
    color: #263d91;
    font-size: .75rem;
    font-weight: 600;
}

#financeiroModal .fin-asaas-minimum {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin: 7px 0 0 10px;
    color: #53639a;
    font-size: .75rem;
}

#financeiroModal .fin-installments-table {
    max-height: clamp(190px, 32vh, 280px);
    overflow: auto;
    overscroll-behavior: contain;
}

#financeiroModal .fin-installments-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #f3f7f8;
}

#financeiroModal .fin-installments-table tfoot th {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background: #f3f7f8;
}

#financeiroModal .fin-installments-table th,
#financeiroModal .fin-installments-table td {
    height: 38px;
    padding: 4px 8px !important;
}

#financeiroModal .fin-installments-table .form-control-sm,
#financeiroModal .fin-installments-table .form-select-sm {
    min-height: 29px;
    height: 29px;
    padding-top: 2px;
    padding-bottom: 2px;
}

@media (max-width: 575.98px) {
    #financeiroModal .modal-dialog {
        height: calc(100vh - 12px);
        max-height: calc(100vh - 12px);
        margin-top: 6px;
        margin-bottom: 6px;
    }

    #financeiroModal .fin-installments-table {
        max-height: 210px;
    }

    #financeiroModal .modal-footer {
        padding-left: 12px;
        padding-right: 12px;
    }

    #financeiroModal .modal-footer .btn {
        padding-left: 12px;
        padding-right: 12px;
        font-size: .82rem;
    }
}

/* Dialogo global do sistema */
.app-dialog .modal-content {
    position: relative;
    overflow: hidden;
    border: 0;
    border-radius: 16px;
    box-shadow: 0 24px 70px rgba(20, 38, 52, .24);
}
.app-dialog__accent {height: 5px;background: var(--sl-dialog-color, #159d9d)}
.app-dialog__body {display:flex;gap:16px;padding:25px 24px 18px}
.app-dialog__close {position:absolute;top:16px;right:16px}
.app-dialog__icon {display:flex;align-items:center;justify-content:center;width:46px;height:46px;flex:0 0 46px;border-radius:14px;background:var(--sl-dialog-soft, #e8f7f7);color:var(--sl-dialog-color, #159d9d);font-size:1.25rem}
.app-dialog__content {min-width:0;padding-right:18px}
.app-dialog__eyebrow {display:block;margin-bottom:4px;color:var(--sl-dialog-color, #159d9d);font-size:.68rem;font-weight:800;letter-spacing:.09em}
.app-dialog__content h2 {margin:0;color:#26323b;font-size:1.08rem;font-weight:750}
.app-dialog__content p {margin:8px 0 0;color:#66737d;font-size:.88rem;line-height:1.5;white-space:pre-line}
.app-dialog__footer {padding:14px 24px 20px;border-top:1px solid #edf1f3;gap:8px}
.app-dialog__footer .btn {min-width:104px}
.app-dialog[data-dialog-type="success"] {--sl-dialog-color:#15945f;--sl-dialog-soft:#e8f7ef}
.app-dialog[data-dialog-type="warning"] {--sl-dialog-color:#c27a09;--sl-dialog-soft:#fff4df}
.app-dialog[data-dialog-type="danger"] {--sl-dialog-color:#cf3d4c;--sl-dialog-soft:#fdebed}
.app-dialog[data-dialog-type="confirm"] {--sl-dialog-color:#168f96;--sl-dialog-soft:#e8f7f7}
@media (max-width:575.98px){.app-dialog .modal-dialog{margin:12px}.app-dialog__body{padding:22px 18px 16px}.app-dialog__footer{padding:12px 18px 18px}.app-dialog__footer .btn{flex:1}}

.asaas-generation-choice{margin-top:14px;padding:16px;border:1px solid #c9d3fb;border-radius:12px;background:#f5f7ff}
.asaas-generation-choice__head{display:flex;align-items:center;gap:10px;color:#19338e}.asaas-generation-choice__head strong,.asaas-generation-choice__head small{display:block}.asaas-generation-choice__head small{color:#6572a0;font-size:.76rem}
.asaas-generation-option{display:flex;align-items:flex-start;gap:9px;height:100%;padding:12px;border:1px solid #dce2f8;border-radius:10px;background:#fff;cursor:pointer}.asaas-generation-option:has(input:checked){border-color:#244ed8;box-shadow:0 0 0 2px rgba(36,78,216,.1)}.asaas-generation-option strong,.asaas-generation-option small{display:block}.asaas-generation-option strong{color:#26345d;font-size:.82rem}.asaas-generation-option small{margin-top:3px;color:#6c7696;font-size:.72rem;line-height:1.35}

.fin-charge-meta{display:flex;align-items:center;gap:5px;margin-top:4px;white-space:nowrap}.fin-charge-meta .badge{font-size:.62rem}.fin-charge-links{display:inline-flex;align-items:center;gap:2px}.fin-charge-links a,.fin-charge-links .btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin:0;padding:0;border:0;border-radius:5px;color:var(--primary);font-size:.82rem;text-decoration:none}.fin-charge-links a:hover,.fin-charge-links .btn:hover{background:var(--primary-soft);color:var(--primary)}
.btn-asaas{--bs-btn-color:#fff;--bs-btn-bg:#244ed8;--bs-btn-border-color:#244ed8;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#193db8;--bs-btn-hover-border-color:#193db8;--bs-btn-active-color:#fff;--bs-btn-active-bg:#15349e;--bs-btn-active-border-color:#15349e;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#7289dc;--bs-btn-disabled-border-color:#7289dc}

/* Autocomplete compacto e padronizado: o menu ocupa a largura do campo e os
   itens usam fonte reduzida com reticencias, para nomes longos de cliente ou
   contrato nao alargarem o dropdown alem do input. */
.autocomplete-menu{width:100%;min-width:0;max-width:100%;padding:.25rem 0}
.autocomplete-menu .dropdown-item{font-size:.82rem;padding:.3rem .75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.autocomplete-menu .dropdown-item strong{font-size:.82rem}
