/*
 * TopLab UI 2026.10
 * Camada canônica de unificação visual.
 * Fonte estética: modelo-layout, dashboard, financeiro-modal, clínica e lista de requisições.
 * Regra: componentes de domínio podem complementar, mas não redefinir a linguagem base.
 */
:root {
    --tlp-primary: #1f73e8;
    --tlp-primary-hover: #195fc0;
    --tlp-primary-soft: #eef5ff;
    --tlp-primary-border: #d7e7ff;
    --tlp-success: #16875d;
    --tlp-success-soft: #edf9f3;
    --tlp-warning: #a86b08;
    --tlp-warning-soft: #fff7e8;
    --tlp-danger: #c63b45;
    --tlp-danger-soft: #fff1f2;
    --tlp-info: #1769d2;
    --tlp-info-soft: #eff6ff;
    --tlp-purple: #6d5dfc;
    --tlp-purple-soft: #f2f0ff;
    --tlp-bg: #f5f7fb;
    --tlp-surface: #ffffff;
    --tlp-surface-soft: #f8fafc;
    --tlp-border: #dfe8f5;
    --tlp-border-soft: #edf2f8;
    --tlp-text: #101828;
    --tlp-text-2: #344054;
    --tlp-muted: #667085;
    --tlp-muted-2: #98a2b3;
    --tlp-shadow: 0 6px 20px rgba(16, 24, 40, .045);
    --tlp-shadow-hover: 0 10px 28px rgba(31, 115, 232, .11);
    --tlp-radius-sm: 8px;
    --tlp-radius: 12px;
    --tlp-radius-lg: 16px;
    --tlp-control-height: 36px;
    --tlp-focus: 0 0 0 3px rgba(31, 115, 232, .12);
    --tlp-transition: 150ms ease;
}

html {
    scrollbar-color: #b9c6d7 #eef2f7;
    scrollbar-width: thin;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar,
body.restrita-layout *::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track,
body.restrita-layout *::-webkit-scrollbar-track {
    background: #eef2f7;
}
html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb,
body.restrita-layout *::-webkit-scrollbar-thumb {
    background: #b9c6d7;
    border: 2px solid #eef2f7;
    border-radius: 999px;
}
html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover,
body.restrita-layout *::-webkit-scrollbar-thumb:hover {
    background: #93a4ba;
}

body.restrita-layout {
    background: var(--tlp-bg);
    color: var(--tlp-text-2);
}
body.restrita-layout a,
body.restrita-layout button,
body.restrita-layout input,
body.restrita-layout select,
body.restrita-layout textarea {
    transition: border-color var(--tlp-transition), box-shadow var(--tlp-transition), background-color var(--tlp-transition), color var(--tlp-transition), transform var(--tlp-transition);
}
body.restrita-layout a:focus,
body.restrita-layout button:focus,
body.restrita-layout input:focus,
body.restrita-layout select:focus,
body.restrita-layout textarea:focus,
body.restrita-layout [tabindex]:focus {
    outline: 2px solid transparent;
    outline-offset: 2px;
}
body.restrita-layout a:focus-visible,
body.restrita-layout button:focus-visible,
body.restrita-layout input:focus-visible,
body.restrita-layout select:focus-visible,
body.restrita-layout textarea:focus-visible,
body.restrita-layout [tabindex]:focus-visible {
    box-shadow: var(--tlp-focus);
}

/* Shell canônico */
body.restrita-layout .tlp-bs3,
body.restrita-layout .tlp-module-shell,
body.restrita-layout .toplab-clinica-page,
body.restrita-layout .nfse-shell,
body.restrita-layout .le-shell,
body.restrita-layout .estoque-module-page {
    color: var(--tlp-text-2);
}
body.restrita-layout .tlp-module-shell {
    width: 100%;
    max-width: 1540px;
    margin: 0 auto;
    padding: 2px 0 28px;
}

/* Hero/cabeçalho de módulo inspirado na página de clínica. */
body.restrita-layout .tlp-module-hero {
    position: relative;
    margin: 0 0 16px;
    padding: 18px 20px 14px;
    background: var(--tlp-surface);
    border: 1px solid var(--tlp-border);
    border-radius: var(--tlp-radius);
    box-shadow: var(--tlp-shadow);
}
body.restrita-layout .tlp-module-nav {
    margin-bottom: 16px;
    overflow: hidden;
}

/* Cabeçalhos: um único ritmo para todos os módulos. */
body.restrita-layout .tlp-page-header,
body.restrita-layout .nfse-page-heading,
body.restrita-layout .le-page-header {
    gap: 18px;
    margin-bottom: 16px;
}
body.restrita-layout .tlp-page-title h1,
body.restrita-layout .nfse-page-heading h3,
body.restrita-layout .le-page-header h1 {
    color: var(--tlp-text);
    letter-spacing: -.018em;
}
body.restrita-layout .tlp-page-title p,
body.restrita-layout .nfse-page-heading p,
body.restrita-layout .le-page-header p {
    color: var(--tlp-muted);
}

/* Superfícies compartilhadas. */
body.restrita-layout .tlp-panel,
body.restrita-layout .tlp-kpi,
body.restrita-layout .tlp-filter,
body.restrita-layout .tl-card,
body.restrita-layout .nfse-card,
body.restrita-layout .nfse-toolbar-card,
body.restrita-layout .nfse-nav-card,
body.restrita-layout .nfse-mini-summary,
body.restrita-layout .nfse-info-side-card,
body.restrita-layout .le-card,
body.restrita-layout .le-kpi {
    background: var(--tlp-surface);
    border-color: var(--tlp-border);
    border-radius: var(--tlp-radius);
    box-shadow: var(--tlp-shadow);
}
body.restrita-layout .tlp-panel > .panel-heading,
body.restrita-layout .tl-card-header,
body.restrita-layout .nfse-card-header,
body.restrita-layout .le-card-head {
    background: var(--tlp-surface);
    border-color: var(--tlp-border-soft);
}
body.restrita-layout .tlp-panel > .panel-heading h2,
body.restrita-layout .tlp-panel > .panel-heading h3,
body.restrita-layout .tl-card-header h4,
body.restrita-layout .nfse-card-header h4,
body.restrita-layout .le-card-head h2 {
    color: var(--tlp-text);
}

/* Botões: preserva Bootstrap 3 e normaliza geometria/feedback. */
body.restrita-layout .tlp-btn,
body.restrita-layout .le-btn,
body.restrita-layout .nfse-primary-action,
body.restrita-layout .tl-btn {
    border-radius: var(--tlp-radius-sm);
    font-weight: 700;
    box-shadow: none;
}
body.restrita-layout .btn-primary,
body.restrita-layout .tlp-btn.btn-primary,
body.restrita-layout .tl-btn-primary,
body.restrita-layout .nfse-primary-action {
    background: var(--tlp-primary);
    border-color: var(--tlp-primary);
    color: #fff;
}
body.restrita-layout .btn-primary:hover,
body.restrita-layout .btn-primary:focus,
body.restrita-layout .tl-btn-primary:hover,
body.restrita-layout .nfse-primary-action:hover {
    background: var(--tlp-primary-hover);
    border-color: var(--tlp-primary-hover);
    color: #fff;
}
body.restrita-layout .btn-default,
body.restrita-layout .tl-btn-light {
    background: #fff;
    border-color: var(--tlp-border);
    color: var(--tlp-text-2);
}
body.restrita-layout .btn-default:hover,
body.restrita-layout .tl-btn-light:hover {
    background: var(--tlp-surface-soft);
    border-color: #c9d7e8;
}

/* Formulários adotados pelo padrão. Não invade canvases especiais de requisição. */
body.restrita-layout .tlp-bs3 .form-control,
body.restrita-layout .nfse-shell .form-control,
body.restrita-layout .le-shell .form-control,
body.restrita-layout .estoque-module-page .form-control,
body.restrita-layout .toplab-clinica-page .form-control {
    min-height: var(--tlp-control-height);
    border-color: var(--tlp-border);
    border-radius: var(--tlp-radius-sm);
    box-shadow: none;
    color: var(--tlp-text-2);
    background-color: #fff;
}
body.restrita-layout .tlp-bs3 .form-control:focus,
body.restrita-layout .nfse-shell .form-control:focus,
body.restrita-layout .le-shell .form-control:focus,
body.restrita-layout .estoque-module-page .form-control:focus,
body.restrita-layout .toplab-clinica-page .form-control:focus {
    border-color: #8fb8f0;
    box-shadow: var(--tlp-focus);
}
body.restrita-layout textarea.form-control {
    resize: none;
}

/* Tabelas: leitura primeiro, sem aumentar a densidade artificialmente. */
body.restrita-layout .tlp-table-wrap,
body.restrita-layout .nfse-table-card,
body.restrita-layout .le-table-wrap {
    scrollbar-gutter: stable;
}
body.restrita-layout .tlp-table,
body.restrita-layout .nfse-table,
body.restrita-layout .le-table {
    color: var(--tlp-text-2);
}
body.restrita-layout .tlp-table > thead > tr > th,
body.restrita-layout .nfse-table > thead > tr > th,
body.restrita-layout .le-table > thead > tr > th {
    background: var(--tlp-surface-soft) !important;
    border-color: var(--tlp-border-soft) !important;
    color: var(--tlp-muted) !important;
}
body.restrita-layout .tlp-table > tbody > tr > td,
body.restrita-layout .nfse-table > tbody > tr > td,
body.restrita-layout .le-table > tbody > tr > td {
    border-color: var(--tlp-border-soft) !important;
}
body.restrita-layout .tlp-table.table-hover > tbody > tr:hover,
body.restrita-layout .nfse-table > tbody > tr:hover,
body.restrita-layout .le-table > tbody > tr:hover {
    background: #f7faff;
}

/* Status e chips: semântica compartilhada. */
body.restrita-layout .tlp-status,
body.restrita-layout .tlp-chip,
body.restrita-layout .tl-badge,
body.restrita-layout .nfse-status-pill,
body.restrita-layout .nfse-badge,
body.restrita-layout .le-status,
body.restrita-layout .tl-chip {
    border-radius: 999px;
    box-shadow: none;
}
body.restrita-layout .tlp-status.label-success,
body.restrita-layout .tl-badge-success,
body.restrita-layout .nfse-status-success,
body.restrita-layout .nfse-badge-success,
body.restrita-layout .le-status.success,
body.restrita-layout .tl-chip-success {
    color: var(--tlp-success) !important;
    background: var(--tlp-success-soft) !important;
    border-color: #cdebdc !important;
}
body.restrita-layout .tlp-status.label-warning,
body.restrita-layout .tl-badge-warning,
body.restrita-layout .nfse-status-warning,
body.restrita-layout .nfse-badge-warning,
body.restrita-layout .le-status.warning,
body.restrita-layout .tl-chip-warning {
    color: var(--tlp-warning) !important;
    background: var(--tlp-warning-soft) !important;
    border-color: #f2dfb4 !important;
}
body.restrita-layout .tlp-status.label-danger,
body.restrita-layout .tl-badge-danger,
body.restrita-layout .nfse-status-danger,
body.restrita-layout .nfse-badge-danger,
body.restrita-layout .le-status.danger,
body.restrita-layout .tl-chip-danger {
    color: var(--tlp-danger) !important;
    background: var(--tlp-danger-soft) !important;
    border-color: #f0cdd1 !important;
}
body.restrita-layout .tlp-status.label-primary,
body.restrita-layout .tl-badge-blue,
body.restrita-layout .nfse-status-info,
body.restrita-layout .nfse-badge-blue,
body.restrita-layout .le-status.info,
body.restrita-layout .tl-chip-primary {
    color: var(--tlp-info) !important;
    background: var(--tlp-info-soft) !important;
    border-color: var(--tlp-primary-border) !important;
}

/* Navegação interna de módulo. */
body.restrita-layout .tlp-tabs,
body.restrita-layout .nfse-nav,
body.restrita-layout .le-nav-tabs,
body.restrita-layout .tl-tabs {
    border-bottom-color: var(--tlp-border-soft);
}
body.restrita-layout .nfse-nav > li > a,
body.restrita-layout .le-nav-tab,
body.restrita-layout .tl-tabs > li > a {
    color: var(--tlp-muted);
}
body.restrita-layout .nfse-nav > li.active > a,
body.restrita-layout .le-nav-tab.is-active,
body.restrita-layout .tl-tabs > li.active > a {
    color: var(--tlp-primary) !important;
}

/* Modais gerais e o modal financeiro de referência. */
body.restrita-layout .modal-content {
    border: 1px solid var(--tlp-border);
    border-radius: var(--tlp-radius-lg);
    box-shadow: 0 24px 60px rgba(16, 24, 40, .18);
    overflow: hidden;
}
body.restrita-layout .modal-header {
    background: #fff;
    border-bottom-color: var(--tlp-border-soft);
}
body.restrita-layout .modal-footer {
    background: var(--tlp-surface-soft);
    border-top-color: var(--tlp-border-soft);
}
body.restrita-layout #modal-cobrancas .modal-content,
body.restrita-layout .tl-premium-modal .tl-card {
    border-color: var(--tlp-border);
    box-shadow: var(--tlp-shadow);
}

/* Estados vazios e alertas. */
body.restrita-layout .tlp-empty,
body.restrita-layout .nfse-empty-state,
body.restrita-layout .le-empty {
    color: var(--tlp-muted);
}
body.restrita-layout .alert,
body.restrita-layout .tlp-alert,
body.restrita-layout .nfse-callout,
body.restrita-layout .le-callout {
    border-radius: 10px;
}

/* Pequenas correções de estabilidade visual. */
body.restrita-layout .btn[disabled],
body.restrita-layout .btn.disabled {
    cursor: not-allowed;
    opacity: .58;
}
body.restrita-layout .tlp-actions-cell,
body.restrita-layout .nfse-row-actions,
body.restrita-layout .le-actions {
    gap: 6px;
}
body.restrita-layout .table-responsive {
    border: 0;
    scrollbar-gutter: stable;
}
body.restrita-layout .tlp-scroll-surface {
    scrollbar-gutter: stable;
}

@media (max-width: 991px) {
    body.restrita-layout .tlp-module-shell { padding-bottom: 20px; }
    body.restrita-layout .tlp-page-header,
    body.restrita-layout .nfse-page-heading,
    body.restrita-layout .le-page-header {
        align-items: stretch;
        flex-direction: column;
    }
}

@media (max-width: 767px) {
    body.restrita-layout .main .main-content .container-fluid {
        padding-left: 12px;
        padding-right: 12px;
    }
    body.restrita-layout .tlp-panel,
    body.restrita-layout .tlp-filter,
    body.restrita-layout .tl-card,
    body.restrita-layout .nfse-card,
    body.restrita-layout .le-card {
        border-radius: 10px;
    }
    body.restrita-layout .modal-dialog {
        max-width: calc(100vw - 20px);
        margin: 10px auto;
    }
}

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

@media (forced-colors: active) {
    html { scrollbar-color: auto; }
    body.restrita-layout .tlp-status,
    body.restrita-layout .tlp-chip,
    body.restrita-layout .tl-badge,
    body.restrita-layout .nfse-status-pill,
    body.restrita-layout .le-status { border: 1px solid CanvasText !important; }
}

