:root {
    --bg-primary: #0f172a;
    --bg-secondary: #1e293b;
    --bg-card: #1e293b;
    --border-color: #334155;
    --text-main: #f8fafc;
    --text-muted: #94a3b8;
    --accent-blue: #38bdf8;
    --accent-green: #22c55e;
    --accent-red: #ef4444;
    --accent-amber: #f59e0b;
    --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

[data-theme="light"] {
    --bg-primary: #f8fafc;
    --bg-secondary: #ffffff;
    --bg-card: #ffffff;
    --border-color: #cbd5e1;
    --text-main: #0f172a;
    --text-muted: #64748b;
    --accent-blue: #0284c7;
    --accent-green: #16a34a;
    --accent-red: #dc2626;
    --accent-amber: #d97706;
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    background-color: var(--bg-primary);
    color: var(--text-main);
    font-family: var(--font-sans);
    line-height: 1.5;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    transition: background-color 0.2s, color 0.2s;
}

.container {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 1.5rem;
    width: 100%;
}

main.container {
    flex: 1;
}

/* Header & Navegação */
.top-bar {
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    padding: 0.75rem 0;
    margin-bottom: 2rem;
    position: sticky;
    top: 0;
    z-index: 1000;
}

.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.logo a {
    font-size: 2.1rem;
    font-weight: 700;
    color: var(--text-main);
    text-decoration: none;
    letter-spacing: -0.5px;
    display: inline-flex;
    align-items: center;
    gap: 12px;
}

.logo span {
    color: var(--accent-blue);
}

.gnu-helmet-svg,
.brand-sunflower-svg {
    width: 56px;
    height: 56px;
    vertical-align: middle;
    transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), filter 0.25s ease;
    filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

.logo a:hover .gnu-helmet-svg,
.logo a:hover .brand-sunflower-svg {
    transform: rotate(15deg) scale(1.12);
    filter: drop-shadow(0 0 10px rgba(56, 189, 248, 0.6));
}

.main-nav {
    display: flex;
    align-items: center;
    gap: 1.25rem;
}

.main-nav a.nav-link {
    color: var(--text-muted);
    text-decoration: none;
    font-size: 0.9rem;
    font-weight: 500;
    transition: color 0.2s;
}

.main-nav a.nav-link:hover,
.main-nav a.nav-link.active {
    color: var(--accent-blue);
}
.nav-dropdown {
    position: relative;
    display: inline-block;
}

.dropdown-trigger {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    padding: 0.25rem 0;
}

.dropdown-trigger:hover {
    color: var(--accent-blue);
}

.dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    min-width: 210px;
    box-shadow: 0 8px 16px rgba(0,0,0,0.25);
    z-index: 100;
    padding: 0.5rem 0;
}

.nav-dropdown:hover .dropdown-menu {
    display: block;
}

.dropdown-menu a {
    display: block;
    padding: 0.5rem 1rem;
    color: var(--text-main) !important;
    text-decoration: none;
    font-size: 0.85rem;
}

.dropdown-menu a:hover {
    background-color: var(--bg-primary);
}

/* Ações do Header & Botão Menu Mobile */
.header-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.btn-theme, .btn-menu-toggle {
    background: none;
    border: 1px solid var(--border-color);
    color: var(--text-main);
    padding: 0.4rem 0.6rem;
    border-radius: 6px;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
}

.btn-theme:hover, .btn-menu-toggle:hover {
    background-color: var(--border-color);
}

.btn-menu-toggle {
    display: none;
}

.btn-close-nav {
    display: none;
    background: none;
    border: none;
    color: var(--text-main);
    font-size: 1.75rem;
    cursor: pointer;
    align-self: flex-end;
    margin-bottom: 1rem;
}

.nav-overlay {
    position: fixed;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    background: rgba(0, 0, 0, 0.6);
    z-index: 90;
}

/* Responsividade Mobile (Drawer) */
@media (max-width: 768px) {
    .btn-menu-toggle {
        display: inline-block;
    }

    .main-nav {
        position: fixed;
        top: 0;
        right: -100%;
        width: 280px;
        height: 100vh;
        background-color: var(--bg-secondary);
        border-left: 1px solid var(--border-color);
        box-shadow: -6px 0 24px rgba(0, 0, 0, 0.4);
        flex-direction: column;
        align-items: flex-start;
        padding: 1.5rem;
        gap: 0.75rem;
        z-index: 100;
        overflow-y: auto;
        transition: right 0.3s ease-in-out;
    }

    .main-nav.nav-open {
        right: 0;
    }

    .btn-close-nav {
        display: block;
    }

    .nav-dropdown {
        width: 100%;
    }

    .dropdown-trigger {
        width: 100%;
        text-align: left;
        font-size: 1rem;
        font-weight: 600;
        color: var(--text-main);
        padding: 0.5rem 0;
        border-bottom: 1px solid var(--border-color);
    }

    .dropdown-menu {
        position: static;
        box-shadow: none;
        border: none;
        padding-left: 1rem;
        display: block;
        background-color: transparent;
    }

    .dropdown-menu a {
        padding: 0.4rem 0;
        color: var(--text-muted) !important;
        font-size: 0.9rem;
    }

    .dropdown-menu a:hover,
    .dropdown-menu a.active {
        color: var(--accent-blue) !important;
    }

    .main-nav a.nav-link {
        font-size: 1rem;
        font-weight: 500;
        color: var(--text-main);
        padding: 0.5rem 0;
        width: 100%;
        border-bottom: 1px solid var(--border-color);
    }

    .main-nav a.nav-link:hover,
    .main-nav a.nav-link.active {
        color: var(--accent-blue);
    }
}
.hero-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 2.5rem 2rem;
    margin-bottom: 2rem;
    text-align: center;
}

.hero-badge {
    display: inline-block;
    background-color: rgba(56, 189, 248, 0.15);
    color: var(--accent-blue);
    font-size: 0.8rem;
    font-weight: 700;
    padding: 0.25rem 0.75rem;
    border-radius: 20px;
    margin-bottom: 1rem;
}

.hero-card h2 {
    font-size: 1.85rem;
    color: var(--text-main);
    margin-bottom: 1rem;
    letter-spacing: -0.5px;
}

.hero-card p {
    font-size: 1.05rem;
    color: var(--text-muted);
    max-width: 800px;
    margin: 0 auto 1.75rem auto;
    line-height: 1.6;
}

.hero-actions {
    display: flex;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.home-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1.5rem;
    margin-bottom: 2rem;
}

.home-feature-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.75rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.feature-icon {
    font-size: 2rem;
    margin-bottom: 0.75rem;
}

.home-feature-card h3 {
    color: var(--accent-blue);
    font-size: 1.15rem;
    margin-bottom: 0.5rem;
}

.home-feature-card p {
    font-size: 0.9rem;
    color: var(--text-muted);
    line-height: 1.5;
    margin-bottom: 1.25rem;
}

.feature-link {
    color: var(--accent-blue);
    text-decoration: none;
    font-size: 0.875rem;
    font-weight: 600;
}

.feature-link:hover {
    text-decoration: underline;
}
.search-card, .content-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
}

.search-card h2 {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--text-main);
    margin-bottom: 0.35rem;
}

.search-card p.text-muted {
    font-size: 0.9rem;
    color: var(--text-muted);
    margin-bottom: 1.25rem;
    line-height: 1.5;
}

.content-card h2 {
    color: var(--accent-blue);
    margin-bottom: 0.75rem;
}

.content-card p {
    font-size: 0.95rem;
    line-height: 1.6;
    margin-bottom: 1rem;
}

.tag-license {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
    margin-bottom: 0.75rem;
}

.tag-license.open-source {
    background-color: rgba(34, 197, 94, 0.2);
    color: var(--accent-green);
}

.tag-license.freeware {
    background-color: rgba(56, 189, 248, 0.2);
    color: var(--accent-blue);
}

.ref-links ul {
    list-style: none;
    padding-left: 0;
    margin-top: 0.5rem;
}

.ref-links li {
    margin-bottom: 0.35rem;
}

.ref-links a {
    color: var(--accent-blue);
    text-decoration: none;
    font-size: 0.9rem;
}

.ref-links a:hover {
    text-decoration: underline;
}

/* Grid Biblioteca */
.biblio-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1rem;
    margin-top: 1.5rem;
}

.biblio-item {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 1rem;
}

.biblio-item h3 {
    font-size: 1rem;
    color: var(--accent-blue);
    margin-bottom: 0.5rem;
}

.biblio-item p {
    font-size: 0.85rem;
    color: var(--text-muted);
    margin-bottom: 0;
}

/* Formulário de Busca */
.search-inputs-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-bottom: 1rem;
}

@media (max-width: 768px) {
    .search-inputs-grid { grid-template-columns: 1fr; }
}

.input-field label, .filter-item label {
    display: block;
    font-size: 0.875rem;
    font-weight: 600;
    margin-bottom: 0.35rem;
    color: var(--text-muted);
}

.input-field input, .filter-item select {
    width: 100%;
    padding: 0.65rem 0.85rem;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    color: var(--text-main);
    font-size: 0.95rem;
    outline: none;
}

.green-field input { border-left: 4px solid var(--accent-green); }
.red-field input { border-left: 4px solid var(--accent-red); }

.filters-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.form-actions {
    display: flex;
    justify-content: flex-end;
}

.btn-primary {
    background-color: var(--accent-blue);
    color: #000;
    font-weight: 600;
    border: none;
    border-radius: 6px;
    padding: 0.65rem 1.75rem;
    cursor: pointer;
}

.btn-primary:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Barra de Resultados */
.results-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin: 1.5rem 0;
    flex-wrap: wrap;
    gap: 1rem;
}

.results-info { font-size: 0.9rem; color: var(--text-muted); }
.results-info span { font-weight: 700; color: var(--text-main); }
.export-container { display: flex; align-items: center; gap: 0.75rem; }

.btn-secondary, .btn-page, .btn-action {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    padding: 0.4rem 0.8rem;
    border-radius: 4px;
    font-size: 0.85rem;
    cursor: pointer;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-secondary:hover:not(:disabled), .btn-page:hover:not(:disabled), .btn-action:hover {
    background-color: var(--border-color);
}

.btn-secondary:disabled, .btn-page:disabled { opacity: 0.5; cursor: not-allowed; }
.pagination-controls { display: flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; }
.results-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
.item-card { background-color: var(--bg-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 1rem; }
.card-header { display: flex; justify-content: space-between; margin-bottom: 0.5rem; }
.tipo-tag { font-size: 0.75rem; font-weight: 700; padding: 0.15rem 0.5rem; border-radius: 4px; }
.tipo-tag.composicao { background-color: rgba(56, 189, 248, 0.2); color: var(--accent-blue); }
.tipo-tag.insumo { background-color: rgba(34, 197, 94, 0.2); color: var(--accent-green); }
.codigo-tag { font-size: 0.85rem; color: var(--text-muted); }
.card-body .descricao { font-size: 0.95rem; margin-bottom: 0.5rem; color: var(--text-main); }
.metadados { font-size: 0.8rem; color: var(--text-muted); display: flex; gap: 1rem; }

.card-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-color);
}

.preco-info { display: flex; align-items: center; gap: 0.6rem; }
.preco { font-size: 1.1rem; font-weight: 700; }
.badge { font-size: 0.7rem; padding: 0.15rem 0.4rem; border-radius: 4px; font-weight: 600; text-decoration: none; }
.badge-c { background-color: rgba(34, 197, 94, 0.2); color: var(--accent-green); }
.badge-as { background-color: rgba(245, 158, 11, 0.2); color: var(--accent-amber); }
.badge-sc { background-color: rgba(148, 163, 184, 0.2); color: var(--text-muted); }

.badge-analitico {
    background-color: rgba(56, 189, 248, 0.2);
    color: var(--accent-blue);
    border: 1px solid rgba(56, 189, 248, 0.4);
    cursor: pointer;
    font-size: 0.75rem;
    padding: 0.2rem 0.55rem;
}
.badge-analitico:hover {
    background-color: var(--accent-blue);
    color: #000;
}
mark.highlight, .item-card mark {
    background-color: #fef08a !important;
    color: #0f172a !important;
    padding: 0.1rem 0.25rem !important;
    border-radius: 3px !important;
    font-weight: 700 !important;
    display: inline !important;
}

/* Card Contato / Email */
.email-card-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 1rem 1.25rem;
    flex-wrap: wrap;
    gap: 1rem;
}

.email-display { display: flex; align-items: center; gap: 0.75rem; }
.email-icon { font-size: 1.25rem; color: var(--accent-blue); }
.email-address { font-size: 1.05rem; font-weight: 600; color: var(--text-main); text-decoration: none; }
.email-address:hover { color: var(--accent-blue); text-decoration: underline; }
.email-actions { display: flex; gap: 0.5rem; align-items: center; }

/* Rodapé & Botão de Feedback */
.app-footer {
    background-color: var(--bg-secondary);
    border-top: 1px solid var(--border-color);
    padding: 1.25rem 0;
    margin-top: 3rem;
}

.footer-content {
    display: flex;
    justify-content: center;
    align-items: center;
}

.user-feedback-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--text-muted);
    font-size: 0.85rem;
    text-decoration: none;
    padding: 0.4rem 0.8rem;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    background-color: var(--bg-primary);
    cursor: pointer;
    transition: color 0.2s, border-color 0.2s;
}

.user-feedback-link:hover {
    color: var(--accent-blue);
    border-color: var(--accent-blue);
}

.user-feedback-link__svg-container {
    flex-shrink: 0;
}

.feedback-meta-box {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.85rem;
}
.modal {
    position: fixed;
    top: 0; left: 0;
    width: 100vw; height: 100vh;
    background-color: rgba(0, 0, 0, 0.75);
    display: flex; justify-content: center; align-items: center;
    z-index: 1000;
}
.modal-content {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    width: 90%; max-width: 1000px; max-height: 85vh;
    display: flex; flex-direction: column; overflow: hidden;
}
.modal-sm { max-width: 480px; }
.modal-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem; border-bottom: 1px solid var(--border-color); }
.btn-close { background: none; border: none; font-size: 1.5rem; color: var(--text-muted); cursor: pointer; }
.modal-body { padding: 1rem; overflow-y: auto; }
.pai-card { background-color: var(--bg-primary); padding: 0.75rem; border-radius: 6px; margin-bottom: 1rem; font-size: 0.9rem; }
.table-analitico { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.table-analitico th, .table-analitico td { padding: 0.5rem; border-bottom: 1px solid var(--border-color); text-align: left; }
.table-analitico th { background-color: var(--bg-primary); color: var(--text-muted); }
.modal-actions-export { display: flex; justify-content: flex-end; gap: 0.75rem; margin-top: 1.5rem; }
.hidden { display: none !important; }
.empty-state { text-align: center; padding: 2rem; color: var(--text-muted); }
.text-muted { color: var(--text-muted); font-size: 0.9rem; }

/* ------------------------------------------------------------- */
/* Formulário Dinâmico & Tabela de Itens (Busca Reversa)          */
/* ------------------------------------------------------------- */
.table-form-container {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1rem;
    position: relative;
    z-index: 20;
    overflow: visible !important;
}

.table-form-responsive {
    width: 100%;
    overflow: visible !important;
}

.table-form-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.table-form-itens {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.88rem;
}

.table-form-itens th {
    background-color: var(--bg-secondary);
    color: var(--text-muted);
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid var(--border-color);
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.table-form-itens td {
    padding: 0.5rem;
    border-bottom: 1px solid var(--border-color);
    vertical-align: middle;
    position: relative;
    overflow: visible;
}

.tabela-reverso-row {
    position: relative;
}

.tabela-reverso-row:focus-within,
.tabela-reverso-row.row-active-dropdown {
    position: relative;
    z-index: 950 !important;
}

.input-table-code, .input-table-desc {
    width: 100%;
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 0.45rem 0.6rem;
    color: var(--text-main);
    font-size: 0.88rem;
    font-family: inherit;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.input-table-code:focus, .input-table-desc:focus {
    outline: none;
    border-color: var(--accent-blue);
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
}

.badge-un-tag {
    display: inline-block;
    padding: 0.2rem 0.4rem;
    background-color: rgba(148, 163, 184, 0.15);
    color: var(--text-muted);
    border-radius: 4px;
    font-weight: 700;
    font-size: 0.75rem;
}

.cost-cell-value {
    font-weight: 700;
    color: var(--accent-green);
    font-size: 0.9rem;
    text-align: right;
    display: block;
}

.btn-del-row {
    background: none;
    border: none;
    color: var(--accent-red);
    cursor: pointer;
    font-size: 1.1rem;
    padding: 0.2rem 0.4rem;
    border-radius: 4px;
    transition: background-color 0.2s, transform 0.1s;
}

.btn-del-row:hover {
    background-color: rgba(239, 68, 68, 0.15);
    transform: scale(1.1);
}

/* ------------------------------------------------------------- */
/* Autocomplete Flutuante (Sugestões de Itens)                   */
/* ------------------------------------------------------------- */
.autocomplete-wrapper {
    position: relative;
    width: 100%;
}

.autocomplete-wrapper:focus-within,
.autocomplete-wrapper:has(.autocomplete-dropdown.active) {
    position: relative;
    z-index: 960 !important;
}

.autocomplete-dropdown {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    width: 100%;
    min-width: 480px;
    max-width: min(850px, 92vw);
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    box-shadow: 0 14px 35px -4px rgba(0, 0, 0, 0.75), 0 0 0 1px rgba(56, 189, 248, 0.25);
    max-height: 320px;
    overflow-y: auto;
    z-index: 999 !important;
    display: none;
}

.autocomplete-dropdown.active {
    display: block !important;
}

.autocomplete-item {
    padding: 0.6rem 0.8rem;
    border-bottom: 1px solid var(--border-color);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    transition: background-color 0.15s;
}

.autocomplete-item:last-child {
    border-bottom: none;
}

.autocomplete-item:hover, .autocomplete-item.selected {
    background-color: rgba(56, 189, 248, 0.18);
}

.autocomplete-info {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    text-align: left;
    flex: 1;
}

.autocomplete-header {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.75rem;
}

.autocomplete-desc {
    font-size: 0.82rem;
    color: var(--text-main);
    line-height: 1.25;
}

.autocomplete-price {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--accent-green);
    white-space: nowrap;
    text-align: right;
}

/* ------------------------------------------------------------- */
/* Cards de Composições Analíticas (Resultados da Busca Reversa) */
/* ------------------------------------------------------------- */
.reverso-card {
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

.reverso-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 0.75rem;
}

.reverso-header-main {
    flex: 1;
    min-width: 260px;
}

.reverso-tags-line {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.4rem;
    flex-wrap: wrap;
}

.badge-match {
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.2rem 0.55rem;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

.badge-match-full {
    background-color: rgba(34, 197, 94, 0.2);
    color: var(--accent-green);
    border: 1px solid rgba(34, 197, 94, 0.4);
}

.badge-match-partial {
    background-color: rgba(245, 158, 11, 0.2);
    color: var(--accent-amber);
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.reverso-pai-desc {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-main);
    line-height: 1.35;
    margin-bottom: 0.4rem;
}

.reverso-pai-meta {
    font-size: 0.8rem;
    color: var(--text-muted);
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.reverso-header-totals {
    text-align: right;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 140px;
}

.total-calc-label {
    font-size: 0.75rem;
    color: var(--text-muted);
    text-transform: uppercase;
}

.total-calc-value {
    font-size: 1.25rem;
    font-weight: 800;
    color: var(--accent-green);
}

/* Destaque para Itens Critério de Busca */
.row-criterio-destaque {
    background-color: rgba(245, 158, 11, 0.14) !important;
    font-weight: 600;
    position: relative;
}

[data-theme="light"] .row-criterio-destaque {
    background-color: #fef9c3 !important;
}

.badge-criterio {
    background-color: #f59e0b;
    color: #0f172a;
    font-size: 0.65rem;
    font-weight: 800;
    padding: 0.12rem 0.4rem;
    border-radius: 3px;
    margin-left: 0.35rem;
    text-transform: uppercase;
    display: inline-block;
}

.table-analitica-reverso {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

/* =============================================================
   SISTEMA DE ORÇAMENTAÇÃO & EXCEL SUITE (ESTILO PLANILHA)
   ============================================================= */

/* 1. Marca d'Água Diagonal e Banner de Desenvolvimento */
.dev-banner-container {
    margin-bottom: 1.25rem;
}

.dev-banner {
    background: linear-gradient(90deg, #dc2626, #b91c1c, #991b1b);
    color: #ffffff;
    padding: 0.6rem 1.25rem;
    border-radius: 8px;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.85rem;
    font-weight: 600;
    box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3);
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.dev-pulse-dot {
    width: 10px;
    height: 10px;
    background-color: #fef08a;
    border-radius: 50%;
    animation: devPulse 1.5s infinite;
}

@keyframes devPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(1.3); }
}

.watermark-diagonal {
    position: fixed;
    top: 45%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(-25deg);
    font-size: clamp(3rem, 7vw, 7.5rem);
    font-weight: 900;
    color: rgba(239, 68, 68, 0.08);
    pointer-events: none;
    user-select: none;
    z-index: 10;
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 6px;
}

[data-theme="light"] .watermark-diagonal {
    color: rgba(220, 38, 38, 0.09);
}

.badge-beta-nav {
    background-color: var(--accent-red);
    color: #ffffff;
    font-size: 0.65rem;
    font-weight: 800;
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
    margin-left: 0.25rem;
    vertical-align: middle;
}

/* 2. Container da Planilha & Ribbon */
.excel-app-container {
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 10px;
    overflow: visible;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
    margin-bottom: 2rem;
}

.excel-ribbon {
    background-color: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    padding: 0.75rem 1.25rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
}

.excel-ribbon-title h2 {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--text-main);
    display: inline-block;
    margin-right: 0.75rem;
}

.excel-badge-file {
    background-color: rgba(56, 189, 248, 0.12);
    color: var(--accent-blue);
    font-family: monospace;
    font-size: 0.8rem;
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.excel-ribbon-actions {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.btn-excel-tool {
    background-color: var(--bg-primary);
    color: var(--text-main);
    border: 1px solid var(--border-color);
    padding: 0.4rem 0.75rem;
    border-radius: 5px;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    transition: all 0.15s;
}

.btn-excel-tool:hover {
    background-color: var(--border-color);
    transform: translateY(-1px);
}

.btn-excel-primary {
    background-color: var(--accent-blue) !important;
    color: #0f172a !important;
    border-color: var(--accent-blue) !important;
    font-weight: 700 !important;
}

.btn-excel-primary:hover {
    filter: brightness(1.1);
}

/* 3. Faixa de KPIs / Resumo */
.excel-kpi-bar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1px;
    background-color: var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

.excel-kpi-card {
    background-color: var(--bg-secondary);
    padding: 0.65rem 1rem;
    display: flex;
    flex-direction: column;
}

.excel-kpi-card .kpi-label {
    font-size: 0.7rem;
    text-transform: uppercase;
    color: var(--text-muted);
    font-weight: 600;
}

.excel-kpi-card .kpi-val {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--text-main);
    font-family: monospace;
}

.excel-kpi-card.kpi-highlight {
    background-color: rgba(34, 197, 94, 0.08);
}

.excel-kpi-card .text-green {
    color: var(--accent-green) !important;
}

/* 4. Conteúdo das Abas */
.excel-sheets-content {
    min-height: 480px;
    background-color: var(--bg-card);
}

.excel-sheet {
    display: none;
    padding: 1.25rem;
}

.excel-sheet.active,
.excel-sheet:not(.hidden) {
    display: block;
}

/* 5. Tabela Principal Estilo Excel Grid */
.excel-grid-wrapper {
    display: flex;
    flex-direction: column;
}

.excel-grid-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.badge-tag-sheet {
    background-color: var(--border-color);
    color: var(--text-main);
    padding: 0.2rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 700;
    border-radius: 4px;
    margin-right: 0.5rem;
}

.btn-action-small {
    background-color: var(--bg-secondary);
    color: var(--text-main);
    border: 1px solid var(--border-color);
    padding: 0.3rem 0.6rem;
    font-size: 0.75rem;
    font-weight: 600;
    border-radius: 4px;
    cursor: pointer;
}

.btn-action-small:hover {
    background-color: var(--accent-blue);
    color: #0f172a;
}

.table-responsive {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden !important;
}

.excel-scroll-container,
.table-responsive.excel-scroll-container,
#sheet-planilha .excel-scroll-container,
#sheet-curva-servicos .excel-scroll-container,
#sheet-curva-insumos .excel-scroll-container,
#sheet-resumo .excel-scroll-container {
    max-height: none !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    border: 1px solid var(--border-color);
    border-radius: 6px;
}

/* Tipografia e Cores de Caracteres ABC */
.abc-char-faixa {
    font-size: 1.15rem;
    line-height: 1;
    vertical-align: middle;
    display: inline-block;
    font-weight: 700;
    margin-right: 2px;
}
.abc-char-faixa.faixa-a { color: var(--accent-green, #10b981); }
.abc-char-faixa.faixa-b { color: #f59e0b; }
.abc-char-faixa.faixa-c { color: var(--accent-red, #ef4444); }

/* Hierarquia Visual por Níveis na Aba Resumo */
.resumo-row-nivel-1 {
    background-color: rgba(56, 189, 248, 0.04);
    font-weight: 800;
}
.resumo-row-nivel-1 td {
    border-top: 1px solid var(--border-color);
}
.resumo-row-nivel-1 .col-resumo-item {
    font-weight: 800;
    color: var(--accent-blue);
    font-size: 0.88rem;
}
.resumo-row-nivel-1 .col-desc-main {
    font-weight: 800;
    color: var(--text-main);
    font-size: 0.88rem;
}
.resumo-row-nivel-2 .col-resumo-item {
    padding-left: 1.25rem !important;
    font-weight: 700;
    color: var(--text-main);
}
.resumo-row-nivel-2 .col-desc-main {
    padding-left: 1.25rem !important;
    font-weight: 600;
}
.resumo-row-nivel-3 .col-resumo-item {
    padding-left: 2.25rem !important;
    font-weight: 600;
    color: var(--text-muted);
}
.resumo-row-nivel-3 .col-desc-main {
    padding-left: 2.25rem !important;
    font-weight: 500;
    color: var(--text-muted);
}
.resumo-row-nivel-4 .col-resumo-item {
    padding-left: 3.25rem !important;
    font-weight: 500;
    color: var(--text-muted);
}
.resumo-row-nivel-4 .col-desc-main {
    padding-left: 3.25rem !important;
    font-weight: 400;
    color: var(--text-muted);
}

/* Hierarquia e Estilos do Cronograma Físico-Financeiro */
.crono-row-nivel-1 {
    background-color: rgba(56, 189, 248, 0.04);
    font-weight: 800;
}
.crono-row-nivel-1 td {
    border-top: 1px solid var(--border-color);
}
.crono-row-nivel-1 .col-crono-item {
    font-weight: 800;
    color: var(--accent-blue);
    font-size: 0.88rem;
}
.crono-row-nivel-1 .col-desc-main {
    font-weight: 800;
    color: var(--text-main);
    font-size: 0.88rem;
}
.crono-row-nivel-2 .col-crono-item {
    padding-left: 1.25rem !important;
    font-weight: 700;
    color: var(--text-main);
}
.crono-row-nivel-2 .col-desc-main {
    padding-left: 1.25rem !important;
    font-weight: 600;
}
.crono-row-nivel-3 .col-crono-item {
    padding-left: 2.25rem !important;
    font-weight: 600;
    color: var(--text-muted);
}
.crono-row-nivel-3 .col-desc-main {
    padding-left: 2.25rem !important;
    font-weight: 500;
    color: var(--text-muted);
}
.crono-row-direto-10 {
    font-style: italic;
    background-color: rgba(255, 255, 255, 0.015);
}
.crono-row-direto-10 .col-crono-item {
    color: var(--accent-blue);
    opacity: 0.9;
}

.crono-duracao-control {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--bg-primary, rgba(255, 255, 255, 0.04));
    padding: 0.2rem 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: 6px;
}
.crono-duracao-control input[type="number"]::-webkit-inner-spin-button,
.crono-duracao-control input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.crono-duracao-control input[type="number"] {
    -moz-appearance: textfield;
}

.input-crono-mes {
    font-family: inherit;
    font-size: 0.82rem;
    text-align: center;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 4px;
    padding: 0.15rem 0.25rem;
    width: 65px;
    color: inherit;
    font-weight: 600;
}
.input-crono-mes:focus {
    background-color: var(--bg-primary);
    border-color: var(--accent-blue);
    outline: none;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
}
.input-crono-mes:disabled {
    background-color: rgba(255, 255, 255, 0.03);
    border-color: transparent;
    color: var(--text-muted);
    cursor: default;
}
.btn-crono-level.active {
    background-color: var(--accent-blue) !important;
    color: #0f172a !important;
    font-weight: 700;
}

.table-excel-main {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8rem;
    background-color: var(--bg-card);
}

.table-excel-main th,
.table-excel-main td {
    padding: 0.35rem 0.45rem;
    border-right: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    white-space: nowrap;
}

.table-excel-main thead {
    position: sticky;
    top: 0;
    z-index: 25;
}

.tr-header-group th {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    padding: 0.45rem 0.4rem;
    background-color: var(--bg-secondary);
    position: sticky;
    top: 0;
    z-index: 26;
    border-top: 1px solid var(--border-color);
}

.tr-header-cols th {
    background-color: var(--bg-secondary);
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    position: sticky;
    top: 29px;
    z-index: 25;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.18);
}

.table-excel-main thead tr:only-child th {
    position: sticky;
    top: 0;
    z-index: 25;
    background-color: var(--bg-secondary);
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.18);
}

/* Cabeçalho Flutuante Dinâmico da Planilha */
.floating-table-header-container {
    position: fixed;
    top: 0;
    z-index: 1100;
    background-color: var(--bg-secondary);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
    border-bottom: 2px solid var(--border-color);
    border-left: 1px solid var(--border-color);
    border-right: 1px solid var(--border-color);
    border-top: none;
    overflow: hidden;
    pointer-events: auto;
}

.floating-table-header-container.hidden {
    display: none !important;
}

.floating-table-header-inner {
    overflow-x: hidden;
    width: 100%;
}

.floating-table-header-inner table {
    margin-bottom: 0 !important;
    border-bottom: none !important;
    border-collapse: separate !important;
    border-spacing: 0 !important;
    width: 100%;
}

.floating-table-header-inner table thead {
    position: static !important;
}

.floating-table-header-inner table th {
    position: static !important;
    top: auto !important;
    box-shadow: none !important;
    background-color: var(--bg-secondary) !important;
    padding: 0.45rem 0.45rem !important;
    line-height: 1.3 !important;
    vertical-align: middle !important;
}

.floating-table-header-inner .tr-header-group th {
    font-size: 0.75rem !important;
    font-weight: 700 !important;
    border-bottom: 1px solid var(--border-color) !important;
}

.floating-table-header-inner .tr-header-cols th {
    font-size: 0.72rem !important;
    font-weight: 600 !important;
    color: var(--text-muted) !important;
}

.table-excel-main tbody tr:hover {
    background-color: rgba(56, 189, 248, 0.06);
}

/* =============================================================
   Diferenciação Hierárquica Visual de Títulos na Planilha
   (Opacidade de fundo, intensidade de negrito, cores e bordas)
   ============================================================= */
.table-excel-main tr.tr-titulo-grupo,
.table-excel-main tr.tr-row-titulo {
    font-weight: 800;
}

/* Nível 1 - Macroetapas (1, 2, 3...) */
.table-excel-main tr.row-titulo-nivel-1,
.table-excel-main tr.tr-row-titulo {
    background-color: rgba(56, 189, 248, 0.12) !important;
    border-top: 2px solid var(--accent-blue) !important;
}
[data-theme="light"] .table-excel-main tr.row-titulo-nivel-1,
[data-theme="light"] .table-excel-main tr.tr-row-titulo {
    background-color: #e0f2fe !important;
}
.table-excel-main tr.row-titulo-nivel-1 td,
.table-excel-main tr.tr-row-titulo td {
    border-bottom: 2px solid var(--border-color);
}
.table-excel-main tr.row-titulo-nivel-1 .cell-item,
.table-excel-main tr.tr-row-titulo .cell-item {
    font-weight: 900 !important;
    color: var(--accent-blue) !important;
}
.table-excel-main tr.row-titulo-nivel-1 textarea.cell-desc,
.table-excel-main tr.tr-row-titulo textarea.cell-desc {
    font-weight: 800 !important;
    color: var(--text-main) !important;
    letter-spacing: 0.15px;
}

/* Nível 2 - Subetapas (1.1, 1.2, 5.6...) */
.table-excel-main tr.row-titulo-nivel-2,
.table-excel-main tr.tr-row-subtitulo {
    background-color: rgba(56, 189, 248, 0.05) !important;
    border-top: 1px solid rgba(56, 189, 248, 0.3) !important;
    font-weight: 700 !important;
}
[data-theme="light"] .table-excel-main tr.row-titulo-nivel-2,
[data-theme="light"] .table-excel-main tr.tr-row-subtitulo {
    background-color: #f0f9ff !important;
}
.table-excel-main tr.row-titulo-nivel-2 .cell-item,
.table-excel-main tr.tr-row-subtitulo .cell-item {
    font-weight: 800 !important;
    color: var(--accent-blue) !important;
}
.table-excel-main tr.row-titulo-nivel-2 textarea.cell-desc,
.table-excel-main tr.tr-row-subtitulo textarea.cell-desc {
    font-weight: 700 !important;
    color: var(--text-main) !important;
}

/* Nível 3 - Sub-subetapas (1.1.1, 1.1.2...) */
.table-excel-main tr.row-titulo-nivel-3 {
    background-color: rgba(255, 255, 255, 0.025) !important;
    border-top: 1px dashed rgba(255, 255, 255, 0.15) !important;
    font-weight: 600 !important;
}
[data-theme="light"] .table-excel-main tr.row-titulo-nivel-3 {
    background-color: #f8fafc !important;
}
.table-excel-main tr.row-titulo-nivel-3 .cell-item {
    font-weight: 700 !important;
    color: var(--text-muted) !important;
}
.table-excel-main tr.row-titulo-nivel-3 textarea.cell-desc {
    font-weight: 600 !important;
    color: var(--text-main) !important;
}
.table-excel-main tr.row-titulo-nivel-4 {
    background-color: rgba(255, 255, 255, 0.01) !important;
    font-weight: 600 !important;
}
.table-excel-main tr.row-titulo-nivel-4 .cell-item {
    color: var(--text-muted) !important;
}

/* Células Editáveis da Planilha */
.excel-cell-input {
    background: transparent;
    border: 1px solid transparent;
    color: inherit;
    font-size: 0.8rem;
    font-family: inherit;
    width: 100%;
    padding: 0.15rem 0.25rem;
    border-radius: 3px;
    text-align: inherit;
}

.excel-cell-input:hover {
    border-color: rgba(56, 189, 248, 0.3);
}

.excel-cell-input:focus {
    background-color: var(--bg-primary);
    border-color: var(--accent-blue);
    outline: none;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
}

.table-excel-main tfoot td {
    background-color: var(--bg-secondary);
    position: sticky;
    bottom: 0;
    z-index: 4;
    border-top: 2px solid var(--border-color);
}

/* Botões de Ações e Controles Compactos da Planilha */
.col-orc-acoes {
    width: 62px !important;
    min-width: 62px !important;
    max-width: 62px !important;
    text-align: center;
    padding: 0.2rem 0.25rem !important;
}

/* Coluna Tipo Compacta (INS, COMP, TIT) */
.col-orc-tipo {
    width: 55px !important;
    min-width: 55px !important;
    max-width: 55px !important;
    text-align: center !important;
    padding: 0.2rem 0.15rem !important;
}

/* Padronização de Colunas de Descrição e Quebra de Linha em Todas as Tabelas */
.col-orc-desc,
.col-desc-main,
th.col-desc-main,
td.col-desc-main,
th.col-orc-desc,
td.col-orc-desc {
    min-width: 500px !important;
    width: 500px !important;
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
}

td.col-desc-main,
td.col-orc-desc,
.table-excel-main td.cell-desc-wrapper,
.table-analitica-reverso td.cell-desc-wrapper {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    line-height: 1.35 !important;
}

.excel-cell-input.cell-desc,
.excel-cell-input.comp-filho-desc-autocomplete,
.input-inline-pai.input-pai-desc {
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    min-width: 100% !important;
    width: 100% !important;
    line-height: 1.35 !important;
    resize: none !important;
    overflow: hidden !important;
    field-sizing: content;
}

textarea.excel-cell-input,
textarea.input-inline-pai {
    font-family: inherit;
    color: inherit;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 0.15rem 0.25rem;
    box-sizing: border-box;
    display: block;
    resize: none !important;
    overflow: hidden !important;
    field-sizing: content;
    min-height: 24px;
    width: 100%;
}

textarea.excel-cell-input:hover,
textarea.input-inline-pai:hover {
    border-color: rgba(56, 189, 248, 0.3);
}

textarea.excel-cell-input:focus,
textarea.input-inline-pai:focus {
    background-color: var(--bg-primary);
    border-color: var(--accent-blue);
    outline: none;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
}

.btn-row-action {
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0.1rem 0.2rem;
    line-height: 1;
    border-radius: 3px;
    transition: transform 0.15s ease, background 0.15s ease;
}

.btn-row-action:hover {
    background: rgba(255, 255, 255, 0.08);
    transform: scale(1.15);
}

/* Controles de Identação na Célula <Item> */
.cell-item-container {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1px;
    width: 100%;
    min-width: 68px;
}

.cell-item-container input.cell-item {
    flex: 1 1 auto;
    width: 34px !important;
    min-width: 28px !important;
    text-align: center !important;
    font-weight: 700 !important;
    font-size: 0.82rem !important;
    padding: 0.15rem 0.1rem !important;
    color: var(--text-main) !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    border-radius: 3px;
}

.cell-item-container input.cell-item:focus {
    background-color: var(--bg-primary) !important;
    border-color: var(--accent-blue) !important;
}

.tr-row-titulo .cell-item-container input.cell-item {
    font-weight: 900 !important;
    color: var(--accent-blue) !important;
}

.btn-cell-indent {
    flex: 0 0 auto;
    background: transparent;
    border: none;
    padding: 0.1rem 2px;
    color: var(--text-muted);
    cursor: pointer;
    font-size: 0.65rem;
    line-height: 1;
    border-radius: 3px;
    transition: color 0.15s ease, background 0.15s ease, transform 0.15s ease;
    user-select: none;
}

.btn-cell-indent:hover {
    color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.18);
    transform: scale(1.15);
}

/* Botão de Alternância de Tipo (Item / Título) */
.btn-toggle-tipo {
    cursor: pointer;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 0.15rem 0.28rem;
    font-size: 0.68rem;
    font-weight: 800;
    border-radius: 4px;
    transition: transform 0.15s ease, filter 0.15s ease, border-color 0.15s ease, background 0.15s ease;
    user-select: none;
    line-height: 1.2;
    min-width: 44px;
}

.btn-toggle-tipo.composicao {
    background: rgba(56, 189, 248, 0.18);
    color: var(--accent-blue);
    border-color: rgba(56, 189, 248, 0.3);
}

.btn-toggle-tipo.insumo {
    background: rgba(245, 158, 11, 0.18);
    color: var(--accent-amber);
    border-color: rgba(245, 158, 11, 0.3);
}

.btn-toggle-tipo.titulo {
    background: rgba(168, 85, 247, 0.2);
    color: #c084fc;
    border-color: rgba(168, 85, 247, 0.4);
}

.btn-toggle-tipo:hover {
    transform: scale(1.06);
    filter: brightness(1.15);
    border-color: rgba(255, 255, 255, 0.4);
}

.tipo-cycle-icon {
    font-size: 0.65rem;
    opacity: 0.75;
    transition: transform 0.25s ease;
}

.btn-toggle-tipo:hover .tipo-cycle-icon {
    opacity: 1;
    transform: rotate(180deg);
}

/* Divisor Horizontal Interativo de Linha Inteira (Notion / Airtable Style) */
.table-excel-main tbody tr {
    position: relative;
}

.table-excel-main tbody tr::after {
    content: "";
    position: absolute;
    bottom: -1px;
    left: 0;
    right: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(90deg, rgba(34, 197, 94, 0.1) 0%, rgba(34, 197, 94, 0.75) 20%, rgba(34, 197, 94, 0.95) 50%, rgba(34, 197, 94, 0.75) 80%, rgba(34, 197, 94, 0.1) 100%);
    opacity: 0;
    pointer-events: none;
    z-index: 28;
    transition: opacity 0.2s ease;
}

.table-excel-main tbody tr:hover::after,
.table-excel-main tbody tr.tr-row-item0:hover::after {
    opacity: 1;
}

.row-insert-divider {
    position: absolute;
    bottom: -8px;
    left: 0;
    right: 0;
    width: 100%;
    height: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 35;
    pointer-events: none;
}

.btn-insert-divider-pill {
    pointer-events: auto;
    background-color: var(--bg-secondary);
    color: var(--accent-green);
    border: 1.5px solid var(--accent-green);
    border-radius: 50%;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    font-weight: 900;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    opacity: 0;
    transform: scale(0.85);
    transition: opacity 0.18s ease, transform 0.18s ease, background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
}

.table-excel-main tbody tr:hover .btn-insert-divider-pill,
.btn-insert-divider-pill:hover {
    opacity: 0.92;
    transform: scale(1);
}

.btn-insert-divider-pill:hover {
    opacity: 1 !important;
    background-color: var(--accent-green) !important;
    color: #ffffff !important;
    transform: scale(1.3) !important;
    box-shadow: 0 0 10px rgba(34, 197, 94, 0.85) !important;
}

/* Subdivisão por Classes de Insumos (Macrofamílias) */
.subdivisoes-grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1rem;
}

.subdivisao-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 0.9rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    transition: border-color 0.2s;
}

.subdivisao-card:hover {
    border-color: var(--accent-blue);
}

.subdivisao-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
}

.subdivisao-badge-index {
    font-size: 0.72rem;
    font-weight: 700;
    background: rgba(56, 189, 248, 0.15);
    color: var(--accent-blue);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
}

.subdivisao-nome-input {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    font-weight: 700;
    font-size: 0.85rem;
    padding: 0.35rem 0.5rem;
    border-radius: 4px;
    width: 100%;
}

.subdivisao-nome-input:focus {
    border-color: var(--accent-blue);
    outline: none;
}

.subdivisao-classes-list {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    background: var(--bg-secondary);
    border-radius: 6px;
    padding: 0.5rem 0.65rem;
    max-height: 160px;
    overflow-y: auto;
    font-size: 0.76rem;
}

.subdivisao-class-checkbox {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    cursor: pointer;
    user-select: none;
}

.modelos-classes-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 0.85rem 1rem;
    margin-bottom: 0.75rem;
    cursor: pointer;
    transition: all 0.2s;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}

.modelos-classes-card:hover {
    border-color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.05);
    transform: translateY(-1px);
}

.modelos-classes-card h4 {
    margin: 0 0 0.25rem 0;
    font-size: 0.95rem;
    color: var(--text-main);
}

.modelos-classes-card p {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-muted);
}

.modelos-classes-badges {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
    margin-top: 0.4rem;
}

.modelo-tag-subdiv {
    font-size: 0.7rem;
    font-weight: 600;
    background: rgba(56, 189, 248, 0.12);
    color: var(--accent-blue);
    padding: 0.1rem 0.4rem;
    border-radius: 4px;
}

/* 6. Barra de Navegação Inferior de Abas (Estilo Guia do Excel) */
.excel-sheet-tabs-bar {
    background-color: var(--bg-secondary);
    border-top: 1px solid var(--border-color);
    display: flex;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
    padding: 0.25rem 0.5rem 0 0.5rem;
    gap: 0.25rem;
    flex-wrap: nowrap;
    align-items: flex-end;
    transition: box-shadow 0.2s ease;
}

/* Fixação da barra de abas na borda inferior da tela ao rolar */
.excel-sheet-tabs-bar.is-fixed-bottom {
    position: fixed;
    bottom: 0;
    z-index: 950;
    box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.45);
    border-top: 2px solid var(--accent-blue);
    border-left: 1px solid var(--border-color);
    border-right: 1px solid var(--border-color);
    border-radius: 8px 8px 0 0;
    backdrop-filter: blur(8px);
}

.excel-tab-btn {
    background-color: var(--bg-primary);
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    border-bottom: none;
    border-radius: 6px 6px 0 0;
    padding: 0.45rem 0.85rem;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.15s;
    flex-shrink: 0;
}

.excel-tab-btn:hover {
    background-color: var(--border-color);
    color: var(--text-main);
}

.excel-tab-btn.active {
    background-color: var(--bg-card);
    color: var(--accent-blue);
    font-weight: 700;
    border-top: 3px solid var(--accent-blue);
    border-bottom: 1px solid var(--bg-card);
    margin-bottom: -1px;
    z-index: 2;
}

/* 7. Capa e Selo NBR 16752 */
.capa-nbr-container {
    max-width: 900px;
    margin: 0 auto;
}

.nbr-selo-card {
    background-color: var(--bg-secondary);
    border: 2px solid var(--border-color);
    border-radius: 8px;
    padding: 1.5rem;
}

.nbr-selo-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 2px solid var(--border-color);
    padding-bottom: 1rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
    gap: 1rem;
}

.nbr-logo-box h3 {
    font-size: 1.6rem;
    font-weight: 800;
}

.nbr-logo-box h3 span {
    color: var(--accent-blue);
}

.nbr-titulo-box h2 {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--text-main);
}

.nbr-titulo-box p {
    font-size: 0.8rem;
    color: var(--text-muted);
}

.nbr-form-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 0.75rem;
}

.nbr-col-12 { grid-column: span 12; }
.nbr-col-8 { grid-column: span 8; }
.nbr-col-6 { grid-column: span 6; }
.nbr-col-4 { grid-column: span 4; }

.nbr-field label {
    display: block;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.25rem;
}

.nbr-input, .nbr-textarea {
    width: 100%;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    padding: 0.45rem 0.65rem;
    border-radius: 4px;
    font-size: 0.85rem;
    font-family: inherit;
}

.nbr-input:focus, .nbr-textarea:focus {
    border-color: var(--accent-blue);
    outline: none;
}

.nbr-valor-extenso-box {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    padding: 0.75rem 1rem;
    border-radius: 6px;
    display: flex;
    flex-direction: column;
}

.nbr-assinaturas-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px dashed var(--border-color);
}

.nbr-assinatura-box {
    text-align: center;
}

.nbr-linha-assinatura {
    border-top: 1px solid var(--text-muted);
    margin-bottom: 0.4rem;
    width: 80%;
    margin-left: auto;
    margin-right: auto;
}

.nbr-assinatura-box span {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--text-muted);
}

/* 8. Resumo por Níveis */
.resumo-header-controls {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.resumo-level-buttons {
    display: flex;
    gap: 0.35rem;
}

.btn-level {
    background-color: var(--bg-primary);
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    padding: 0.35rem 0.7rem;
    border-radius: 5px;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
}

.btn-level.active {
    background-color: var(--accent-blue);
    color: #0f172a;
    font-weight: 700;
    border-color: var(--accent-blue);
}

.progress-bar-container {
    background-color: var(--bg-primary);
    border-radius: 4px;
    height: 14px;
    width: 100%;
    overflow: hidden;
    position: relative;
}

.progress-bar-fill {
    background: linear-gradient(90deg, var(--accent-blue), var(--accent-green));
    height: 100%;
    border-radius: 4px;
}

.progress-bar-full {
    background-color: var(--accent-green);
    height: 14px;
    border-radius: 4px;
    width: 100%;
}

/* 9. Curva ABC Badges & Tabelas */
.abc-badge {
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
    text-transform: uppercase;
}

.badge-faixa-a {
    background-color: rgba(34, 197, 94, 0.15);
    color: var(--accent-green);
    border: 1px solid var(--accent-green);
}

.badge-faixa-b {
    background-color: rgba(245, 158, 11, 0.15);
    color: var(--accent-amber);
    border: 1px solid var(--accent-amber);
}

.badge-faixa-c {
    background-color: rgba(148, 163, 184, 0.15);
    color: var(--text-muted);
    border: 1px solid var(--border-color);
}

.abc-legend-box {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* 9.1 Chip de Status de Sincronização em Background */
.chip-status-bg {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.28rem 0.7rem;
    border-radius: 6px;
    background: rgba(56, 189, 248, 0.10);
    border: 1px solid rgba(56, 189, 248, 0.35);
    color: var(--text-main);
    font-size: 0.78rem;
    font-weight: 600;
    transition: all 0.2s ease;
    cursor: pointer;
    user-select: none;
}

.chip-status-bg:hover {
    background: rgba(56, 189, 248, 0.22);
    border-color: var(--accent-blue);
    transform: translateY(-1px);
}

.chip-status-bg.ativo {
    background: rgba(56, 189, 248, 0.20);
    border-color: var(--accent-blue);
    cursor: wait;
}

.chip-status-bg.concluido {
    background: rgba(34, 197, 94, 0.15);
    border-color: rgba(34, 197, 94, 0.45);
    color: var(--accent-green);
    cursor: default;
}

.chip-status-bg.pausado {
    background: rgba(245, 158, 11, 0.15);
    border-color: rgba(245, 158, 11, 0.5);
    color: var(--accent-amber);
    cursor: wait;
}

.icon-loading-spin {
    display: inline-block;
    animation: anim-spin 1.2s linear infinite;
    font-size: 0.95rem;
    line-height: 1;
}

@keyframes anim-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.badge-timer-rate {
    background: var(--accent-amber);
    color: #000;
    font-size: 0.7rem;
    font-weight: 800;
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
    line-height: 1;
}

/* 10. BDI TCU 2622/2013 */
.bdi-header-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
}

.bdi-formula-badge {
    background-color: var(--bg-primary);
    border: 1px solid var(--accent-blue);
    padding: 0.5rem 1rem;
    border-radius: 6px;
    font-family: monospace;
    font-size: 0.9rem;
    color: var(--accent-blue);
}

.bdi-tables-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
    gap: 1.5rem;
}

.input-bdi {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    font-weight: 700;
    width: 65px;
    text-align: right;
    padding: 0.15rem 0.35rem;
    border-radius: 4px;
}

.input-bdi:focus {
    border-color: var(--accent-blue);
    outline: none;
}

/* 11. Botões de Ação na Linha da Planilha (Coluna 1) */
.col-orc-acoes {
    width: 82px !important;
    min-width: 82px !important;
    max-width: 82px !important;
    padding: 0.2rem 0.25rem !important;
    text-align: center;
    box-sizing: border-box;
}

.col-orc-acoes > div {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 3px;
}

.drag-handle-row {
    cursor: grab;
    user-select: none;
    font-size: 0.88rem;
    line-height: 1;
    color: var(--text-muted);
    padding: 0 1px;
    opacity: 0.65;
    transition: opacity 0.15s, color 0.15s;
    flex-shrink: 0;
}

.drag-handle-row:hover {
    opacity: 1;
    color: var(--accent-blue);
}

.drag-handle-row:active {
    cursor: grabbing;
}

.btn-row-action {
    background: transparent;
    border: 1px solid transparent;
    color: var(--text-muted);
    padding: 0.15rem 0.2rem;
    font-size: 0.72rem;
    border-radius: 3px;
    cursor: pointer;
    line-height: 1;
    transition: all 0.12s;
    vertical-align: middle;
    flex-shrink: 0;
}

.btn-row-action:hover {
    background-color: var(--border-color);
    color: var(--text-main);
    border-color: var(--accent-blue);
}

.btn-row-action.btn-row-delete {
    color: var(--accent-red);
    font-size: 0.82rem;
    padding: 0.15rem 0.35rem;
    opacity: 0.85;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    font-family: inherit;
}

.btn-row-action.btn-row-delete:hover {
    background-color: rgba(239, 68, 68, 0.15);
    color: var(--accent-red);
    border-color: var(--accent-red);
    opacity: 1;
}

.chk-row-item,
#chk-orc-selecionar-todos,
#chk-orc-selecionar-todos-floating {
    cursor: pointer;
    vertical-align: middle;
    width: 14px;
    height: 14px;
    margin: 0;
    accent-color: var(--accent-blue);
    flex-shrink: 0;
}

/* Linha Fixa do Item 0 (Projeto / Orçamento Geral) */
.tr-row-item0 {
    background: linear-gradient(90deg, rgba(56, 189, 248, 0.15), rgba(34, 197, 94, 0.15)) !important;
    font-weight: 800 !important;
    border-bottom: 2px solid var(--accent-blue) !important;
}

[data-theme="light"] .tr-row-item0 {
    background: linear-gradient(90deg, #e0f2fe, #dcfce7) !important;
}

.tr-row-item0 td {
    padding: 0.5rem 0.45rem !important;
    color: var(--text-main);
    border-bottom: 2px solid var(--accent-blue) !important;
}

.badge-tag-projeto {
    background-color: var(--accent-blue);
    color: #0f172a;
    font-weight: 800;
    font-size: 0.7rem;
    padding: 0.15rem 0.45rem;
    border-radius: 3px;
    text-transform: uppercase;
}

/* Alerta de Linha Convertida em Item sem Composição/Insumo */
.row-pendente-insumo {
    background-color: rgba(239, 68, 68, 0.12) !important;
    border-left: 3px solid var(--accent-red) !important;
}

[data-theme="light"] .row-pendente-insumo {
    background-color: #fee2e2 !important;
}

.row-pendente-insumo .cell-desc {
    color: var(--accent-red) !important;
    font-style: italic;
}

/* Autocomplete Dropdown - Itens de Ação no Topo e Rodapé */
.autocomplete-action-item {
    padding: 0.6rem 0.85rem;
    font-size: 0.8rem;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    transition: background-color 0.15s;
}

.autocomplete-action-item.action-search-sinapi {
    background-color: rgba(56, 189, 248, 0.12);
    color: var(--accent-blue);
    border-bottom: 1px solid var(--border-color);
}

.autocomplete-action-item.action-search-sinapi:hover {
    background-color: rgba(56, 189, 248, 0.22);
}

.autocomplete-action-item.action-create-custom {
    background-color: rgba(34, 197, 94, 0.12);
    color: var(--accent-green);
    border-top: 1px solid var(--border-color);
}

.autocomplete-action-item.action-create-custom:hover {
    background-color: rgba(34, 197, 94, 0.22);
}

.modelo-card-item:hover {
    border-color: var(--accent-blue) !important;
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
tr.drag-over {
    border-top: 2px dashed var(--accent-blue) !important;
    background-color: rgba(56, 189, 248, 0.1) !important;
}

/* =============================================================
   MAPA COMPARATIVO & COTAÇÕES DE INSUMOS
   ============================================================= */
.mapa-cards-container {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.mapa-cotacao-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.25rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    transition: border-color 0.2s;
}

.mapa-cotacao-card:hover {
    border-color: rgba(56, 189, 248, 0.4);
}

.mapa-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 1rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    gap: 1rem;
}

.mapa-insumo-id-box {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    flex: 1;
    min-width: 280px;
}

.mapa-insumo-tags {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}

.mapa-tag-codigo {
    background-color: rgba(56, 189, 248, 0.18);
    color: var(--accent-blue);
    font-weight: 800;
    font-size: 0.8rem;
    padding: 0.2rem 0.6rem;
    border-radius: 4px;
    font-family: monospace;
}

.mapa-insumo-desc {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-main);
}

.mapa-adotado-box {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    background: rgba(34, 197, 94, 0.1);
    border: 1px solid rgba(34, 197, 94, 0.3);
    border-radius: 6px;
    padding: 0.6rem 1rem;
}

.mapa-adotado-label {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--accent-green);
    letter-spacing: 0.5px;
}

.mapa-adotado-valor {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--accent-green);
    line-height: 1.2;
}

.mapa-tendencia-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-top: 1rem;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.mapa-tendencia-opcoes {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    align-items: center;
}

.btn-tendencia-select {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.4rem 0.85rem;
    border-radius: 4px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-muted);
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    transition: all 0.15s;
}

.btn-tendencia-select:hover {
    color: var(--text-main);
    border-color: var(--accent-blue);
}

.btn-tendencia-select.active {
    background-color: rgba(56, 189, 248, 0.18);
    border-color: var(--accent-blue);
    color: var(--accent-blue);
    font-weight: 700;
}

.btn-tendencia-select.active.recomendado {
    background-color: rgba(34, 197, 94, 0.18);
    border-color: var(--accent-green);
    color: var(--accent-green);
}

/* =============================================================
   COMPOSIÇÕES ANALÍTICAS UNITÁRIAS
   ============================================================= */
.composicoes-cards-container {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.comp-analitica-card {
    background-color: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.25rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    transition: border-color 0.2s;
}

.comp-analitica-card:hover {
    border-color: rgba(168, 85, 247, 0.4);
}

.comp-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 1rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
    gap: 1rem;
}

.comp-card-meta {
    flex: 1;
    min-width: 280px;
}

.comp-meta-tags {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.4rem;
    flex-wrap: wrap;
}

.comp-card-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-main);
    line-height: 1.35;
}

.comp-card-totals {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
}

.comp-total-pill {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.5rem 0.85rem;
    text-align: right;
}

.comp-total-pill .lbl {
    display: block;
    font-size: 0.65rem;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--text-muted);
}

.comp-total-pill .val {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--text-main);
}

.comp-total-pill.highlight-green .val {
    color: var(--accent-green);
}

.comp-total-pill.highlight-purple .val {
    color: var(--accent-purple, #c084fc);
}

/* Cards da Aba Composições Analíticas (Layout Extrato1) */
.comp-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin: 0;
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1rem;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.comp-wrap:hover {
    border-color: rgba(56, 189, 248, 0.4);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.comp-card-pai {
    background: var(--bg-primary);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 6px;
    padding: 0.85rem;
}

.comp-pai-grid {
    display: grid;
    grid-template-columns: 120px 1fr 115px 135px;
    gap: 0.5rem 0.75rem;
    align-items: stretch;
    margin-top: 0.5rem;
}

@media (max-width: 900px) {
    .comp-pai-grid {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 600px) {
    .comp-pai-grid {
        grid-template-columns: 1fr;
    }
}

.comp-pai-col-stacked {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0.35rem;
    min-width: 0;
}

.comp-pai-col {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}

.comp-pai-box {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 0.35rem 0.5rem;
    font-size: 0.85rem;
    font-weight: 600;
    min-height: 34px;
    display: flex;
    align-items: flex-start;
    color: var(--text-main);
    box-sizing: border-box;
    overflow: hidden;
}

.comp-pai-lbl {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
    letter-spacing: 0.02em;
}

.comp-card-filhos {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem;
}

.comp-filhos-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
    flex-wrap: wrap;
    gap: 0.5rem;
    background: var(--bg-secondary);
    padding: 0.45rem 0.65rem;
    border-radius: 4px;
    border: 1px solid var(--border-color);
}

/* Células e Inputs Editáveis - Suporte a Tema Escuro e Claro */
.input-excel {
    background: transparent;
    border: 1px solid transparent;
    color: var(--text-main);
    font-size: 0.82rem;
    font-family: inherit;
    width: 100%;
    padding: 0.2rem 0.35rem;
    border-radius: 3px;
    text-align: inherit;
    box-sizing: border-box;
    transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
}

.input-excel:hover {
    border-color: rgba(56, 189, 248, 0.3);
    background-color: rgba(56, 189, 248, 0.04);
}

.input-excel:focus {
    background-color: var(--bg-primary) !important;
    border-color: var(--accent-blue) !important;
    color: var(--text-main) !important;
    outline: none;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.25);
}

/* Linha de Destaque Tabular do Item-Pai nas Composições */
.tr-item-pai-destaque {
    background-color: rgba(56, 189, 248, 0.06);
    border-bottom: 2px solid var(--border-color);
}

.tr-item-pai-destaque td {
    padding: 0.5rem 0.4rem !important;
    vertical-align: middle;
}

.input-inline-pai {
    background: transparent;
    border: 1px solid transparent;
    border-radius: 4px;
    padding: 0.25rem 0.35rem;
    font-size: 0.85rem;
    color: var(--text-main);
    transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
    width: 100%;
    box-sizing: border-box;
}

.input-inline-pai:hover {
    background: var(--bg-primary);
    border-color: var(--border-color);
}

.input-inline-pai:focus {
    background: var(--bg-primary);
    border-color: var(--accent-blue);
    outline: none;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.25);
}

.input-pai-codigo {
    font-weight: 800;
    color: var(--accent-blue);
    text-align: center;
    font-size: 0.8rem;
}

.input-pai-un {
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
}

.input-pai-desc {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--text-main);
}

.input-pai-classe {
    font-size: 0.8rem;
    color: var(--text-muted);
    font-weight: 600;
}

.comp-link-caderno {
    color: var(--accent-blue);
    text-decoration: none;
    font-size: 0.75rem;
    font-weight: 600;
    margin-left: 0.25rem;
}

.comp-link-caderno:hover {
    text-decoration: underline;
}

/* =============================================================
   MATRIZ DE CÁLCULO E PERFIS DE BDI
   ============================================================= */

.table-bdi-matriz {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.82rem;
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    overflow: hidden;
}

.table-bdi-matriz th,
.table-bdi-matriz td {
    padding: 0.5rem 0.6rem;
    border-right: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    vertical-align: middle;
}

.table-bdi-matriz th {
    background-color: var(--bg-secondary);
    color: var(--text-main);
    font-weight: 700;
}

.input-bdi-col-name {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--accent-blue);
    font-weight: 800;
    font-size: 0.85rem;
    padding: 0.3rem 0.4rem;
    text-align: center;
    width: 100%;
}

.input-bdi-col-name:focus {
    border-color: var(--accent-blue);
    outline: none;
}

.select-bdi-modelo {
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-muted);
    font-size: 0.72rem;
    padding: 0.25rem 0.35rem;
    width: 100%;
    cursor: pointer;
}

.select-bdi-modelo:focus {
    border-color: var(--accent-blue);
    outline: none;
    color: var(--text-main);
}

.input-bdi-cell {
    width: 75px;
    background-color: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-main);
    padding: 0.25rem 0.4rem;
    text-align: right;
    font-weight: 600;
    font-size: 0.82rem;
}

.input-bdi-cell:focus {
    outline: none;
    border-color: var(--accent-blue);
    background-color: var(--bg-card);
}

.badge-bdi-alerta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 0.3rem;
    cursor: help;
    font-size: 0.85rem;
    color: var(--accent-amber);
}

.row-tributos-header {
    background: rgba(56, 189, 248, 0.08);
    font-weight: 700;
}

.row-tributos-filho td:nth-child(2) {
    padding-left: 1.75rem;
    color: var(--text-muted);
}

/* ============================================================= */
/* SEÇÃO SOBRE, MANIFESTO DE PRIVACIDADE & APOIO PIX              */
/* ============================================================= */
.sobre-header-badge {
    display: inline-block;
    background: rgba(56, 189, 248, 0.15);
    color: var(--accent-blue);
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.75rem;
}

.sobre-intro-text {
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--text-main);
    margin-bottom: 1.75rem;
}

.pilares-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.25rem;
    margin-bottom: 2rem;
}

.pilar-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.25rem;
    transition: transform 0.2s, border-color 0.2s;
}

.pilar-card:hover {
    border-color: var(--accent-blue);
    transform: translateY(-2px);
}

.pilar-icon {
    font-size: 1.8rem;
    margin-bottom: 0.6rem;
}

.pilar-card h3 {
    font-size: 1rem;
    color: var(--text-main);
    margin-bottom: 0.4rem;
}

.pilar-card p {
    font-size: 0.85rem;
    line-height: 1.5;
    color: var(--text-muted);
}

/* Card de Apoio Financeiro (PIX) */
.pix-support-card {
    background: linear-gradient(145deg, rgba(34, 197, 94, 0.04) 0%, rgba(56, 189, 248, 0.04) 100%);
    border: 1px solid rgba(34, 197, 94, 0.25);
    border-radius: 12px;
    padding: 1.75rem;
    margin-top: 2rem;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

.pix-card-header {
    margin-bottom: 1.5rem;
}

.pix-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: rgba(34, 197, 94, 0.15);
    color: var(--accent-green);
    padding: 0.25rem 0.75rem;
    border-radius: 9999px;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 0.75rem;
}

.pix-card-header h3 {
    font-size: 1.35rem;
    color: var(--text-main);
}

.pix-columns-grid {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 2rem;
    align-items: start;
}

@media (max-width: 768px) {
    .pix-columns-grid {
        grid-template-columns: 1fr;
        justify-items: center;
        text-align: center;
    }
}

.pix-qrcode-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}

.pix-qrcode-box {
    background: #ffffff;
    padding: 0.75rem;
    border-radius: 10px;
    border: 2px solid rgba(34, 197, 94, 0.3);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
    display: flex;
    align-items: center;
    justify-content: center;
}

.pix-qrcode-svg {
    display: block;
    width: 180px;
    height: 180px;
}

.pix-qrcode-hint {
    font-size: 0.75rem;
    color: var(--text-muted);
    font-weight: 600;
}

.pix-info-container {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pix-key-wrapper {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.pix-key-label {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
}

.pix-key-box {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.6rem 0.85rem;
    overflow-x: auto;
}

.pix-key-code {
    font-family: monospace;
    font-size: 0.95rem;
    color: var(--accent-blue);
    font-weight: 700;
    user-select: all;
}

.btn-pix-copy {
    background: var(--accent-green);
    color: #000000;
    font-weight: 700;
    font-size: 0.95rem;
    padding: 0.65rem 1.25rem;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.2s ease;
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.btn-pix-copy:hover {
    filter: brightness(1.1);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(34, 197, 94, 0.3);
}

@media (max-width: 768px) {
    .btn-pix-copy {
        align-self: center;
    }
}

.btn-copied-success {
    background: var(--accent-blue) !important;
    color: #000000 !important;
}

.pix-copy-feedback {
    font-size: 0.82rem;
    color: var(--accent-green);
    font-weight: 600;
}

.pix-destinacao-box {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-top: 0.5rem;
}

.pix-destinacao-box h4 {
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
    margin-bottom: 0.5rem;
}

.pix-destinacao-box ul {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 0.82rem;
    color: var(--text-main);
    line-height: 1.6;
}

/* Rodapé Global Atualizado */
.footer-content-wrapper {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.footer-support-section {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    background: rgba(34, 197, 94, 0.04);
    border: 1px solid rgba(34, 197, 94, 0.15);
    border-radius: 8px;
    padding: 0.85rem 1.25rem;
}

.footer-support-text {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.85rem;
    color: var(--text-main);
}

.footer-support-icon {
    font-size: 1.35rem;
}

.footer-support-actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.btn-footer-pix-copy {
    background: var(--bg-secondary);
    border: 1px solid rgba(34, 197, 94, 0.4);
    color: var(--accent-green);
    font-weight: 700;
    font-size: 0.8rem;
    padding: 0.35rem 0.75rem;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.2s ease;
}

.btn-footer-pix-copy:hover {
    background: var(--accent-green);
    color: #000000;
}

.btn-footer-apoie-link {
    color: var(--accent-blue);
    font-size: 0.8rem;
    font-weight: 600;
    text-decoration: none;
    transition: color 0.2s;
}

.btn-footer-apoie-link:hover {
    text-decoration: underline;
}

.footer-divider {
    height: 1px;
    background: var(--border-color);
    width: 100%;
}

.footer-bottom-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.footer-brand-info {
    font-size: 0.8rem;
    color: var(--text-muted);
}

/* Nav Link Apoie */
.nav-link-apoie {
    color: var(--accent-green) !important;
    font-weight: 600;
}

/* Banner de Apoio nos Modais */
.modal-pix-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    background: rgba(34, 197, 94, 0.06);
    border: 1px solid rgba(34, 197, 94, 0.2);
    border-radius: 6px;
    padding: 0.6rem 0.85rem;
    margin-top: 1rem;
}

.modal-pix-text {
    font-size: 0.8rem;
    color: var(--text-main);
}

.modal-pix-text code {
    font-family: monospace;
    color: var(--accent-green);
    font-weight: 700;
    background: var(--bg-primary);
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
}

.btn-copy-pix-mini {
    background: var(--accent-green);
    color: #000000;
    border: none;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.3rem 0.65rem;
    cursor: pointer;
    transition: all 0.2s ease;
    white-space: nowrap;
}

.btn-copy-pix-mini:hover {
    filter: brightness(1.15);
}

/* =============================================================
   SISTEMA DE MODELOS DE BDI & RESPONSIVIDADE MOBILE
   ============================================================= */
.dropdown-bdi-modelos {
    position: relative;
    display: inline-block;
}

.bdi-modelos-menu {
    position: absolute;
    top: calc(100% + 5px);
    left: 0;
    z-index: 100;
    background-color: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.4);
    min-width: 320px;
    max-height: 420px;
    overflow-y: auto;
    padding: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.bdi-modelos-grupo-titulo {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--accent-blue);
    padding: 0.4rem 0.5rem 0.2rem 0.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    margin-top: 0.35rem;
}

.bdi-modelos-grupo-titulo:first-child {
    margin-top: 0;
}

.bdi-modelo-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.45rem 0.65rem;
    border: none;
    background: transparent;
    color: var(--text-main);
    font-size: 0.82rem;
    border-radius: 5px;
    cursor: pointer;
    text-align: left;
    transition: all 0.15s ease;
    width: 100%;
}

.bdi-modelo-item:hover {
    background-color: rgba(56, 189, 248, 0.12);
    color: var(--accent-blue);
}

.bdi-modelo-taxa {
    color: var(--accent-green);
    font-weight: 700;
    font-size: 0.85rem;
    background: rgba(34, 197, 94, 0.1);
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
}

/* Radio button de BDI Principal */
.radio-bdi-principal-label {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    cursor: pointer;
    user-select: none;
    color: var(--text-muted);
}

.radio-bdi-principal-label input[type="radio"] {
    accent-color: var(--accent-green);
    cursor: pointer;
}

.badge-bdi-principal {
    display: inline-block;
    font-size: 0.7rem;
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
    border: 1px solid var(--border-color);
    background: var(--bg-primary);
    color: var(--text-muted);
    transition: all 0.2s ease;
}

.badge-bdi-principal.is-active {
    background: rgba(34, 197, 94, 0.15);
    border-color: var(--accent-green);
    color: var(--accent-green);
    font-weight: 800;
}

.badge-bdi-metodo {
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.15rem 0.35rem;
    border-radius: 4px;
    background: rgba(56, 189, 248, 0.1);
    color: var(--accent-blue);
    display: inline-block;
    margin-top: 0.25rem;
}

.input-bdi-pct {
    text-align: right;
    font-weight: 700;
}

/* Botão de Edição de Fórmula no Cabeçalho da Coluna */
.btn-bdi-col-formula {
    background: rgba(56, 189, 248, 0.12);
    border: 1px solid rgba(56, 189, 248, 0.35);
    border-radius: 4px;
    color: var(--accent-blue);
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.2rem 0.45rem;
    cursor: pointer;
    transition: all 0.15s ease;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

.btn-bdi-col-formula:hover {
    background: var(--accent-blue);
    color: #000;
    border-color: var(--accent-blue);
}

/* Caixa de Instruções de Sintaxe no Modal de Fórmula */
.bdi-formula-instrucoes-box {
    background: rgba(56, 189, 248, 0.06);
    border: 1px solid rgba(56, 189, 248, 0.25);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    font-size: 0.82rem;
    line-height: 1.45;
}

.bdi-instrucoes-lista {
    margin: 0.35rem 0 0 1.2rem;
    padding: 0;
    color: var(--text-main);
}

.bdi-instrucoes-lista li {
    margin-bottom: 0.25rem;
}

.bdi-instrucoes-lista code {
    background: rgba(0, 0, 0, 0.3);
    padding: 0.1rem 0.35rem;
    border-radius: 3px;
    color: var(--accent-amber);
    font-family: monospace;
    font-size: 0.85em;
}

/* Barra de Presets Rápidos de Fórmulas */
.bdi-formula-presets-bar {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
}

.btn-formula-preset {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 5px;
    padding: 0.35rem 0.6rem;
    font-size: 0.76rem;
    font-weight: 600;
    color: var(--text-main);
    cursor: pointer;
    transition: all 0.15s ease;
}

.btn-formula-preset:hover {
    border-color: var(--accent-blue);
    color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.08);
}

/* Editor de Código da Fórmula */
.input-formula-code {
    font-family: "Cascadia Code", "Fira Code", Consolas, Monaco, monospace !important;
    font-size: 0.95rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.3px;
    background-color: var(--bg-primary) !important;
    color: #38bdf8 !important;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
    width: 100%;
    resize: vertical;
}

.input-formula-code:focus {
    border-color: var(--accent-blue) !important;
    box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
    outline: none;
}

/* Barra de Atalhos de Inserção */
.bdi-formula-shortcuts-bar {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    flex-wrap: wrap;
    margin-top: 0.4rem;
}

.btn-shortcut {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 0.2rem 0.45rem;
    font-size: 0.75rem;
    font-family: monospace;
    font-weight: 700;
    color: var(--text-main);
    cursor: pointer;
    transition: all 0.15s ease;
}

.btn-shortcut:hover {
    border-color: var(--accent-green);
    color: var(--accent-green);
    background: rgba(34, 197, 94, 0.1);
}

/* Card de Resultado / Teste da Fórmula */
.bdi-formula-resultado-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.85rem 1rem;
}

.badge-validacao-valida {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--accent-green);
    background: rgba(34, 197, 94, 0.15);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    border: 1px solid rgba(34, 197, 94, 0.3);
}

.badge-validacao-invalida {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--accent-red);
    background: rgba(239, 68, 68, 0.15);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.badge-var-tag {
    font-size: 0.72rem;
    font-weight: 800;
    font-family: monospace;
    color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.15);
    border: 1px solid rgba(56, 189, 248, 0.3);
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
}

.badge-subformula-fx {
    font-size: 0.68rem;
    font-weight: 800;
    color: var(--accent-amber);
    background: rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.3);
    padding: 0.1rem 0.3rem;
    border-radius: 3px;
    margin-left: 0.25rem;
}

.linha-subformula-item {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 0.35rem 0.5rem;
}

/* Rótulo de Variável Personalizada Editável */
.input-bdi-custom-label {
    background-color: var(--bg-primary);
    border: 1px dashed var(--border-color);
    border-radius: 4px;
    color: var(--text-main);
    font-size: 0.82rem;
    padding: 0.2rem 0.45rem;
    width: 100%;
    max-width: 320px;
    transition: all 0.15s ease;
}

.input-bdi-custom-label:focus {
    border-style: solid;
    border-color: var(--accent-blue);
    background-color: var(--bg-card);
    outline: none;
}

/* =============================================================
   NOTAS DE REVISÃO & CHANGELOG
   ============================================================= */
.timeline-revisoes {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    margin-top: 1rem;
}

.card-revisao {
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-left: 4px solid var(--accent-blue);
    border-radius: 8px;
    padding: 1.25rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.card-revisao-header {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.75rem;
    flex-wrap: wrap;
}

.badge-versao-tag {
    font-size: 0.82rem;
    font-weight: 800;
    color: #000;
    background: var(--accent-blue);
    padding: 0.15rem 0.55rem;
    border-radius: 5px;
    font-family: monospace;
}

.revisao-build-nome {
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--text-main);
}

.revisao-data {
    font-size: 0.78rem;
    color: var(--text-muted);
    margin-left: auto;
    background: rgba(255, 255, 255, 0.05);
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
}

.badge-revisao-beta {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--accent-amber);
    background: rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.3);
    padding: 0.25rem 0.6rem;
    border-radius: 20px;
}

.revisao-lista {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 0.85rem;
    line-height: 1.6;
    color: var(--text-main);
}

.revisao-lista li {
    margin-bottom: 0.35rem;
}

.revisao-lista code {
    background: rgba(0, 0, 0, 0.3);
    padding: 0.1rem 0.35rem;
    border-radius: 3px;
    color: var(--accent-amber);
    font-family: monospace;
}



/* =============================================================
   CAPA & SELO TÉCNICO NBR 16752 (PRANCHA A4 RETRATO - 210 x 297 mm)
   ============================================================= */
.prancha-a4-outer {
    display: flex;
    justify-content: center;
    padding: 1.5rem 0.5rem;
    background-color: var(--bg-primary);
    overflow-x: auto;
}

.prancha-a4-sheet {
    width: 210mm;
    min-height: 297mm;
    background-color: var(--bg-secondary);
    border: 2px solid var(--border-color);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
    box-sizing: border-box;
    position: relative;
    padding: 10mm 10mm 10mm 20mm; /* Margem NBR: Esquerda 20mm, Topo/Direita/Fundo 10mm */
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

/* Guias de dobra e furação NBR 16752 */
.prancha-furacao-guia {
    position: absolute;
    left: 10mm;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    flex-direction: column;
    gap: 80mm;
    pointer-events: none;
}

.ponto-furacao {
    width: 6mm;
    height: 6mm;
    border: 1px dashed var(--text-muted);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.5rem;
    color: var(--text-muted);
    opacity: 0.4;
}

/* Área Interna Útil (180 mm de largura) */
.prancha-area-util {
    width: 180mm;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    box-sizing: border-box;
}

.prancha-header-titulo {
    border: 2px solid var(--border-color);
    padding: 0.75rem 1rem;
    background: rgba(0, 0, 0, 0.15);
    border-radius: 4px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* Carimbo Técnico NBR 16752 (Largura 180 mm) */
.carimbo-nbr-16752 {
    width: 180mm;
    border: 2px solid var(--border-color);
    border-radius: 4px;
    background-color: var(--bg-secondary);
    display: flex;
    flex-direction: column;
    font-size: 0.8rem;
    box-sizing: border-box;
    margin-top: auto;
}

.carimbo-row {
    display: flex;
    border-bottom: 1px solid var(--border-color);
}

.carimbo-row:last-child {
    border-bottom: none;
}

.carimbo-cell {
    padding: 0.4rem 0.6rem;
    border-right: 1px solid var(--border-color);
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    box-sizing: border-box;
}

.carimbo-cell:last-child {
    border-right: none;
}

.carimbo-label {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: 0.2rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.carimbo-input {
    width: 100%;
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    padding: 0.3rem 0.45rem;
    border-radius: 3px;
    font-size: 0.82rem;
    font-family: inherit;
}

.carimbo-input:focus {
    border-color: var(--accent-blue);
    outline: none;
}

.carimbo-logo-container {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.carimbo-logo-preview {
    max-height: 38px;
    max-width: 90px;
    object-fit: contain;
    border: 1px dashed var(--border-color);
    border-radius: 3px;
    padding: 2px;
    background: #fff;
}

.carimbo-logo-preview.hidden {
    display: none;
}

.carimbo-assinatura-box {
    min-height: 11mm;
    min-width: 50mm;
    border: 1px dashed var(--border-color);
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0.25rem;
    background: rgba(0, 0, 0, 0.1);
    margin-top: 0.25rem;
}

.carimbo-assinatura-img {
    max-height: 14mm;
    max-width: 55mm;
    object-fit: contain;
}

/* Tabela de Revisões da Capa */

.carimbo-revisoes-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.78rem;
}

.carimbo-revisoes-table th {
    background: rgba(0, 0, 0, 0.25);
    color: var(--text-muted);
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.7rem;
    padding: 0.35rem 0.5rem;
    border-bottom: 1px solid var(--border-color);
}

.carimbo-revisoes-table td {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--border-color);
}

.carimbo-revisoes-table input {
    width: 100%;
    background: transparent;
    border: none;
    color: var(--text-main);
    font-size: 0.8rem;
    padding: 0.2rem 0.3rem;
}

.carimbo-revisoes-table input:focus {
    background: var(--bg-primary);
    outline: 1px solid var(--accent-blue);
    border-radius: 2px;
}

/* =============================================================
   CURVA ABC INTERATIVA & BARRA DE CONTROLE DUAL-SLIDER
   ============================================================= */
.abc-control-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.5rem;
}

.abc-dual-slider-wrapper {
    position: relative;
    width: 100%;
    height: 48px;
    margin: 1.25rem 0 1.5rem 0;
    user-select: none;
    touch-action: none;
}

.abc-bar-track {
    width: 100%;
    height: 100%;
    display: flex;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--border-color);
    box-shadow: inset 0 2px 6px rgba(0,0,0,0.4);
    background: #1e293b;
    position: relative;
}

.abc-bar-segment-a {
    background: linear-gradient(135deg, #ef4444, #b91c1c);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 800;
    font-size: 0.85rem;
    position: relative;
    min-width: 0;
    overflow: hidden;
    flex-shrink: 0;
    flex-grow: 0;
    box-sizing: border-box;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.25);
    transition: width 0.05s ease, flex-basis 0.05s ease;
}

.abc-bar-segment-b {
    background: linear-gradient(135deg, #f59e0b, #b45309);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #000;
    font-weight: 800;
    font-size: 0.85rem;
    position: relative;
    min-width: 0;
    overflow: hidden;
    flex-shrink: 0;
    flex-grow: 0;
    box-sizing: border-box;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.25);
    transition: width 0.05s ease, flex-basis 0.05s ease;
}

.abc-bar-segment-c {
    background: linear-gradient(135deg, #10b981, #047857);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 800;
    font-size: 0.85rem;
    position: relative;
    min-width: 0;
    overflow: hidden;
    flex-shrink: 0;
    flex-grow: 0;
    box-sizing: border-box;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.25);
    transition: width 0.05s ease, flex-basis 0.05s ease;
}

.abc-seg-label {
    display: inline-block;
    padding: 0.15rem 0.35rem;
    border-radius: 4px;
    cursor: text;
    white-space: nowrap;
    text-align: center;
    font-size: 0.82rem;
    font-weight: 800;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    user-select: text;
    transition: background 0.15s ease;
}

.abc-seg-label:hover {
    background: rgba(0, 0, 0, 0.25);
}

.abc-seg-label:focus {
    outline: 2px solid #38bdf8;
    background: rgba(0, 0, 0, 0.55);
    color: #fff !important;
}

/* Handles / Botões Deslizantes Divisórios */
.abc-slider-handle {
    position: absolute;
    top: -6px;
    bottom: -6px;
    width: 28px;
    transform: translateX(-50%);
    cursor: ew-resize;
    z-index: 20;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    touch-action: none;
    user-select: none;
}

.abc-handle-pill {
    width: 20px;
    height: 100%;
    background: #0f172a;
    border: 2px solid #f8fafc;
    border-radius: 6px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.2);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.1s ease, border-color 0.1s ease, background 0.1s ease;
}

.abc-slider-handle:hover .abc-handle-pill,
.abc-slider-handle.dragging .abc-handle-pill {
    transform: scale(1.15);
    border-color: #38bdf8;
    background: #1e293b;
    box-shadow: 0 0 14px rgba(56, 189, 248, 0.6);
}

.handle-icon {
    font-size: 0.55rem;
    color: #94a3b8;
    letter-spacing: -1px;
}

.abc-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.75rem;
    margin-top: 1rem;
}

.abc-sum-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.75rem 1rem;
}

.abc-sum-card.card-faixa-a { border-left: 4px solid #ef4444; }
.abc-sum-card.card-faixa-b { border-left: 4px solid #f59e0b; }
.abc-sum-card.card-faixa-c { border-left: 4px solid #10b981; }

.abc-sum-header {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    margin-bottom: 0.25rem;
}

.abc-sum-detail {
    font-size: 0.78rem;
    color: var(--text-muted);
}

.abc-info-banner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 6px;
    padding: 0.65rem 1rem;
    margin-bottom: 1rem;
    font-size: 0.85rem;
}

/* =============================================================
   TABELA DE ENCARGOS SOCIAIS (SINAPI / CAIXA 54 MODELOS)
   ============================================================= */
.encargos-header-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-color);
}

.encargos-filtros-box {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.tabela-encargos-sinapi {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
}

.tabela-encargos-sinapi th {
    background: rgba(0, 0, 0, 0.3);
    color: var(--text-muted);
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--border-color);
    font-size: 0.78rem;
    text-transform: uppercase;
    font-weight: 700;
}

.tabela-encargos-sinapi td {
    padding: 0.35rem 0.65rem;
    border: 1px solid var(--border-color);
}

.tr-grupo-header {
    background: rgba(56, 189, 248, 0.08);
    font-weight: 800;
    color: var(--accent-blue);
}

.tr-subtotal-grupo {
    background: rgba(255, 255, 255, 0.04);
    font-weight: 800;
}

.tr-total-geral-encargos {
    background: rgba(16, 185, 129, 0.15) !important;
    font-weight: 900;
    font-size: 1rem;
    color: var(--accent-green);
}

.input-encargo-val {
    width: 85px;
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    color: var(--text-main);
    padding: 0.25rem 0.45rem;
    border-radius: 4px;
    text-align: right;
    font-weight: 600;
    font-family: inherit;
}

.input-encargo-val:focus {
    border-color: var(--accent-blue);
    outline: none;
}

/* Responsividade Mobile - Ocultar Abas Complexas e Colunas Secundárias */
@media (max-width: 768px) {
    .col-mobile-hide {
        display: none !important;
    }
    .tr-header-group {
        display: none !important;
    }
}

/* Chip de Bases de Referência Ativas (Topo do LibreOrça) */
.bases-ativas-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.75rem;
    background: rgba(56, 189, 248, 0.1);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 5px;
    font-size: 0.78rem;
    color: var(--text-main);
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.15s;
    user-select: none;
}

.bases-ativas-chip:hover {
    background: rgba(56, 189, 248, 0.2);
    border-color: var(--accent-blue);
    transform: translateY(-1px);
}

.bases-ativas-chip strong {
    color: var(--accent-blue);
    font-weight: 700;
}

/* Modal de Fontes de Referência */
.base-ref-card {
    background: var(--bg-primary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 0.75rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: border-color 0.15s;
}

.base-ref-card.ativa {
    border-color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.04);
}

.base-ref-info h4 {
    margin: 0 0 0.25rem 0;
    font-size: 0.92rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.base-ref-info p {
    margin: 0;
    font-size: 0.78rem;
    color: var(--text-muted);
}

.base-ref-badge-vigencia {
    display: inline-block;
    padding: 0.15rem 0.45rem;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 700;
    margin-top: 0.35rem;
    background: var(--bg-secondary);
    color: var(--text-main);
    border: 1px solid var(--border-color);
}

.base-ref-badge-vigencia.vigente {
    background: rgba(16, 185, 129, 0.15);
    color: var(--accent-green);
    border-color: rgba(16, 185, 129, 0.3);
}

.chk-base-verde {
    accent-color: #10b981 !important;
    width: 20px;
    height: 20px;
    cursor: pointer;
    opacity: 1 !important;
    vertical-align: middle;
}

.base-ref-card.selecionada {
    border-color: #10b981;
    background: rgba(16, 185, 129, 0.05);
}

/* Documentos Legais & Termos de Uso / Privacidade */
.footer-legal-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-color);
    font-size: 0.8rem;
    color: var(--text-muted);
}

.footer-legal-links {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}

.footer-legal-link {
    color: var(--text-muted);
    text-decoration: none;
    transition: color 0.15s ease;
}

.footer-legal-link:hover {
    color: var(--accent-blue);
    text-decoration: underline;
}

.footer-disclaimer-text {
    font-size: 0.75rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.legal-doc-content {
    color: var(--text-main);
    line-height: 1.6;
    font-size: 0.88rem;
    max-height: 70vh;
    overflow-y: auto;
    padding-right: 0.5rem;
}

.legal-section {
    margin-bottom: 1.5rem;
}

.legal-section h4 {
    color: var(--accent-blue);
    font-size: 1rem;
    margin-bottom: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.legal-section p {
    margin-bottom: 0.6rem;
    color: var(--text-main);
}

.legal-section ul {
    margin-left: 1.25rem;
    margin-bottom: 0.75rem;
}

.legal-section li {
    margin-bottom: 0.35rem;
}

.legal-highlight-box {
    background: rgba(56, 189, 248, 0.08);
    border-left: 3px solid var(--accent-blue);
    padding: 0.75rem 1rem;
    border-radius: 0 6px 6px 0;
    margin: 0.75rem 0;
    font-size: 0.84rem;
}

.legal-highlight-box.green {
    background: rgba(34, 197, 94, 0.08);
    border-left-color: var(--accent-green);
}

.legal-highlight-box.amber {
    background: rgba(245, 158, 11, 0.08);
    border-left-color: var(--accent-amber);
}

/* ============================================================= */
/* IMPORTAÇÃO MASSIVA: CONFERÊNCIA, RATE LIMIT & ALERTA DE #N/D */
/* ============================================================= */

/* Alerta de Linha com Dados Próprios / Custo Pendente (#N/D) */
.row-alerta-pendente {
    background-color: rgba(245, 158, 11, 0.12) !important;
    border-left: 4px solid var(--accent-red) !important;
}

[data-theme="light"] .row-alerta-pendente {
    background-color: #fef9c3 !important;
    border-left: 4px solid #dc2626 !important;
}

.row-alerta-pendente .cell-desc {
    color: var(--text-main) !important;
}

/* Badge de Erro #N/D */
.badge-nd-erro {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    padding: 0.12rem 0.4rem;
    font-size: 0.76rem;
    font-weight: 800;
    font-family: monospace;
    border-radius: 4px;
    background-color: rgba(239, 68, 68, 0.18);
    color: #f87171;
    border: 1px solid rgba(239, 68, 68, 0.35);
    white-space: nowrap;
}

[data-theme="light"] .badge-nd-erro {
    background-color: #fee2e2;
    color: #b91c1c;
    border: 1px solid #fca5a5;
}

/* Painel de Rate Limit na Tela Intermediária */
.painel-rate-limit {
    background: rgba(245, 158, 11, 0.12);
    border: 1px solid rgba(245, 158, 11, 0.4);
    border-left: 4px solid var(--accent-amber);
    border-radius: 6px;
    padding: 0.85rem 1.1rem;
    margin-bottom: 1rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.painel-rate-limit-texto {
    font-size: 0.86rem;
    color: var(--text-main);
    line-height: 1.45;
    flex: 1;
    min-width: 280px;
}

.timer-rate-limit-badge {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    font-size: 0.95rem;
    font-weight: 800;
    font-family: monospace;
    color: var(--accent-amber);
    background: var(--bg-primary);
    border: 1px solid rgba(245, 158, 11, 0.4);
    border-radius: 4px;
    min-width: 28px;
    text-align: center;
}

/* Modal de Conferência de Importação - Layout Full-Height com Rolagem Única */
#modal-orc-importar-conferencia .modal-content {
    max-width: 98vw;
    width: 98vw;
    height: 98vh;
    max-height: 98vh;
    margin: 1vh auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

#modal-orc-importar-conferencia .modal-header {
    padding: 0.45rem 0.85rem;
    flex-shrink: 0;
}

#modal-orc-importar-conferencia .modal-header h2 {
    font-size: 1.05rem;
    margin: 0;
}

#modal-orc-importar-conferencia .modal-body {
    padding: 0.35rem 0.85rem 0.5rem 0.85rem;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden; /* Elimina barra de rolagem externa do corpo do modal */
}

.modal-conferencia-tabela-wrap {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overflow-x: auto;
    border: 1px solid var(--border-color);
    border-radius: 6px;
    margin: 0.25rem 0;
    background: var(--bg-primary);
}

.modal-conferencia-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.75rem;
    margin-top: 0.35rem;
    padding-top: 0.35rem;
    border-top: 1px solid var(--border-color);
    flex-shrink: 0;
}

.table-conferencia {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
    white-space: normal;
}

.table-conferencia th {
    position: sticky;
    top: 0;
    background: var(--bg-secondary);
    z-index: 10;
    padding: 0.55rem 0.5rem;
    border-bottom: 2px solid var(--border-color);
    border-right: 1px solid var(--border-color);
    font-size: 0.74rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--text-muted);
    line-height: 1.25;
}

.header-sub-bd {
    display: inline-block;
    font-size: 0.68rem;
    color: var(--accent-green);
    font-weight: 600;
    text-transform: none;
    margin-top: 0.15rem;
}

.table-conferencia td {
    padding: 0.5rem 0.55rem;
    border-bottom: 1px solid var(--border-color);
    border-right: 1px solid var(--border-color);
    vertical-align: top;
}

.table-conferencia tr:hover {
    background-color: rgba(56, 189, 248, 0.04);
}

.table-conferencia tr.row-encontrado-bd {
    background-color: rgba(34, 197, 94, 0.04);
}

.table-conferencia tr.row-nao-encontrado-bd {
    background-color: rgba(245, 158, 11, 0.05);
}

.table-conferencia tr.row-titulo {
    background-color: rgba(100, 116, 139, 0.08);
}

/* Sub-linha Deslocada para Dados Oficiais do BD com Seta sob o 2º Caractere */
.sub-linha-bd {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.35rem;
    padding-top: 0.25rem;
    padding-left: 0.85rem; /* Desloca o caractere ↳ para ficar sob o 2º caractere da 1ª linha */
    border-top: 1px dashed rgba(255, 255, 255, 0.08);
}

.seta-sub-bd {
    color: var(--accent-amber);
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1;
    flex-shrink: 0;
}

.badge-tipo-csv-tag {
    display: inline-block;
    padding: 0.1rem 0.35rem;
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 4px;
    background: rgba(148, 163, 184, 0.15);
    color: var(--text-muted);
    border: 1px solid rgba(148, 163, 184, 0.25);
}

/* Estilos de Textos e Badges nos 2 Níveis */
.desc-csv-text {
    font-weight: 600;
    font-size: 0.8rem;
    color: var(--text-primary);
    word-break: break-word;
    line-height: 1.35;
}

.desc-bd-text {
    font-size: 0.8rem;
    color: var(--accent-green);
    word-break: break-word;
    line-height: 1.35;
    font-weight: 500;
}

.desc-bd-text.nao-encontrado {
    color: var(--text-muted);
    font-style: italic;
    font-size: 0.76rem;
}

.un-bd-badge {
    background: rgba(16, 185, 129, 0.15);
    color: var(--accent-green);
    border: 1px solid rgba(16, 185, 129, 0.3);
}

.badge-tipo-select {
    padding: 0.2rem 0.35rem;
    font-size: 0.72rem;
    font-weight: 700;
    border-radius: 4px;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-main);
}

/* Container e Itens de Radio Buttons para Escolha de Mapeamento */
.radio-escolha-container {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.radio-escolha-item {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.25rem 0.45rem;
    border-radius: 5px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    background: rgba(15, 23, 42, 0.4);
    cursor: pointer;
    transition: all 0.15s ease;
    font-size: 0.75rem;
}

.radio-escolha-item:hover:not(.desabilitado) {
    background: rgba(56, 189, 248, 0.08);
    border-color: rgba(56, 189, 248, 0.3);
}

.radio-escolha-item input[type="radio"] {
    margin: 0;
    cursor: pointer;
    accent-color: var(--accent-green);
}

.radio-escolha-item.selecionado-bd {
    background: rgba(16, 185, 129, 0.12);
    border-color: rgba(16, 185, 129, 0.4);
}

.radio-escolha-item.selecionado-proprio {
    background: rgba(245, 158, 11, 0.12);
    border-color: rgba(245, 158, 11, 0.4);
}

.radio-escolha-item.selecionado-alerta {
    background: rgba(245, 158, 11, 0.18);
    border-color: rgba(245, 158, 11, 0.6);
}

.radio-escolha-item.desabilitado {
    opacity: 0.45;
    cursor: not-allowed;
    background: transparent;
}

.radio-label-texto {
    font-size: 0.74rem;
    font-weight: 600;
    line-height: 1.25;
    white-space: normal;
}

.texto-bd-verde {
    color: var(--accent-green);
}

.texto-proprio {
    color: var(--accent-blue);
}

.texto-proprio-alerta {
    color: var(--accent-amber);
    font-weight: 700;
}

.texto-desabilitado {
    color: var(--text-muted);
}

/* =============================================================
   MÓDULO DE IMPRESSÃO & PRANCHAS NBR 16752
   ============================================================= */
.print-container-grid {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
    margin-top: 1rem;
}

.print-sidebar {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.print-actions-card {
    background: var(--bg-secondary);
    border: 1.5px solid var(--border-color);
    border-radius: 8px;
    padding: 1.1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    width: 100%;
    box-sizing: border-box;
}

.print-section-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 1rem;
    transition: border-color 0.2s;
    width: 100%;
    box-sizing: border-box;
}

.print-section-card:hover {
    border-color: rgba(56, 189, 248, 0.4);
}

.print-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    user-select: none;
    margin-bottom: 0.5rem;
}

.print-section-title {
    font-size: 0.9rem;
    font-weight: 800;
    color: var(--text-main);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.print-col-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0.45rem 0.75rem;
    margin-top: 0.6rem;
    padding-top: 0.6rem;
    border-top: 1px dashed var(--border-color);
}

.print-checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.76rem;
    color: var(--text-muted);
    cursor: pointer;
    user-select: none;
    line-height: 1.25;
}

.print-checkbox-label input[type="checkbox"] {
    cursor: pointer;
    accent-color: var(--accent-blue);
    transform: scale(1.1);
}

.print-checkbox-label.obrigatorio {
    color: var(--text-main);
    font-weight: 700;
}

.badge-col-obrigatoria {
    font-size: 0.65rem;
    padding: 0.1rem 0.35rem;
    border-radius: 3px;
    background: rgba(16, 185, 129, 0.15);
    color: var(--accent-green);
    font-weight: 800;
}

.print-pills-container {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.5rem;
}

.print-pill-toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.25rem 0.55rem;
    font-size: 0.74rem;
    font-weight: 700;
    border-radius: 4px;
    border: 1px solid var(--border-color);
    background: var(--bg-primary);
    color: var(--text-muted);
    cursor: pointer;
    user-select: none;
    transition: all 0.15s;
}

.print-pill-toggle:hover {
    border-color: var(--accent-blue);
    color: var(--text-main);
}

.print-pill-toggle.active {
    background: rgba(56, 189, 248, 0.15);
    border-color: var(--accent-blue);
    color: var(--accent-blue);
}

.print-preview-panel {
    background: var(--bg-secondary);
    border: 1.5px solid var(--border-color);
    border-radius: 8px;
    padding: 1.1rem;
    min-height: 350px;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    overflow-x: hidden;
}

.print-preview-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border-color);
}

.print-preview-stage {
    flex: 1;
    background: #1e293b;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 6px;
    padding: 1.25rem;
    overflow-x: auto;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    max-height: 70vh;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

[data-theme="light"] .print-preview-stage {
    background: #cbd5e1;
}

.prancha-preview-card {
    background: #ffffff;
    color: #0f172a;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
    border-radius: 2px;
    position: relative;
    box-sizing: border-box;
    transition: transform 0.2s;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    margin: 0 auto;
    flex-shrink: 0;
}

.prancha-margem-externa {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border: 1px solid #94a3b8;
    pointer-events: none;
}

.prancha-margem-interna {
    position: absolute;
    top: 10mm;
    left: 20mm;
    right: 10mm;
    bottom: 10mm;
    border: 1.5px solid #0f172a;
    pointer-events: none;
}

.prancha-marca-centro-top {
    position: absolute;
    top: 0;
    left: 50%;
    width: 0.5mm;
    height: 10mm;
    background: #0f172a;
    pointer-events: none;
}

.prancha-marca-centro-bottom {
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 0.5mm;
    height: 10mm;
    background: #0f172a;
    pointer-events: none;
}

.prancha-marca-centro-left {
    position: absolute;
    top: 50%;
    left: 0;
    width: 20mm;
    height: 0.5mm;
    background: #0f172a;
    pointer-events: none;
}

.prancha-marca-centro-right {
    position: absolute;
    top: 50%;
    right: 0;
    width: 10mm;
    height: 0.5mm;
    background: #0f172a;
    pointer-events: none;
}

.print-bottom-actions-card {
    background: var(--bg-secondary);
    border: 1.5px solid var(--accent-blue);
    box-shadow: 0 4px 14px rgba(56, 189, 248, 0.12);
    border-radius: 8px;
    padding: 1.2rem 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    width: 100%;
    box-sizing: border-box;
    margin-top: 0.75rem;
}

.print-dimensoes-aba-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.5rem;
    margin-top: 0.4rem;
    padding: 0.45rem 0.6rem;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 6px;
}

.print-dimensoes-aba-grid select,
.print-dimensoes-aba-grid input {
    background-color: var(--bg-secondary) !important;
    color: var(--text-main) !important;
    border: 1px solid var(--border-color) !important;
}

.print-dimensoes-aba-grid select option {
    background-color: var(--bg-secondary);
    color: var(--text-main);
}

.prancha-mini-carimbo-nbr {
    position: absolute;
    bottom: 10mm;
    right: 10mm;
    width: 180mm;
    height: 9.5mm;
    border: 1px solid #0f172a;
    background: #ffffff;
    box-sizing: border-box;
    display: grid;
    grid-template-columns: 40mm 1fr 40mm 30mm;
    font-size: 5.5pt;
    line-height: 1.2;
    z-index: 5;
}

.prancha-mini-carimbo-nbr > div {
    border-right: 1px solid #0f172a;
    padding: 1mm 2mm;
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.prancha-mini-carimbo-nbr > div:last-child {
    border-right: none;
}

.prancha-carimbo-nbr {
    position: absolute;
    bottom: 10mm;
    right: 10mm;
    width: 175mm;
    height: 55mm;
    border: 1.5px solid #0f172a;
    background: #ffffff;
    box-sizing: border-box;
    display: grid;
    grid-template-rows: 20mm 1fr 15mm;
    font-size: 7pt;
    line-height: 1.2;
}

/* ------------------------------------------------------------- */
/* Notificações Flutuantes Toast                                 */
/* ------------------------------------------------------------- */
.toast-container {
    position: fixed;
    bottom: 4.2rem;
    right: 1.5rem;
    z-index: 99999;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    pointer-events: none;
    max-width: 420px;
}

.toast-item {
    background: #1e293b;
    color: #f8fafc;
    border: 1px solid rgba(255, 255, 255, 0.12);
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.4);
    border-radius: 8px;
    padding: 0.75rem 1.1rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.85rem;
    font-weight: 600;
    pointer-events: auto;
    transform: translateY(20px);
    opacity: 0;
    transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease;
}

.toast-item.show {
    transform: translateY(0);
    opacity: 1;
}

.toast-item.toast-sucesso {
    border-left: 4px solid var(--accent-green, #10b981);
}

.toast-item.toast-alerta,
.toast-item.toast-aviso {
    border-left: 4px solid #f59e0b;
}

.toast-item.toast-erro {
    border-left: 4px solid #ef4444;
}

.toast-item.toast-info {
    border-left: 4px solid var(--accent-blue, #38bdf8);
}

.toast-icon {
    font-size: 1.15rem;
    flex-shrink: 0;
}

.toast-message {
    line-height: 1.35;
}

/* ------------------------------------------------------------- */
/* ------------------------------------------------------------- */

.api-queue-card.minimized:hover {
    opacity: 1;
    border-color: var(--accent-blue);
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45);
}

.api-queue-card.minimized .api-queue-expanded {
    display: none !important;
}

.api-queue-card.minimized .api-queue-minimized {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.76rem;
    color: var(--text-muted);
}

.api-queue-min-title {
    font-weight: 700;
    color: var(--text-main);
    letter-spacing: 0.02em;
}

.api-queue-badge {
    background: rgba(255, 255, 255, 0.06);
    padding: 1px 5px;
    border-radius: 4px;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--text-main);
}

.api-queue-min-active {
    color: var(--accent-blue);
    font-family: monospace;
    font-weight: 600;
}

.api-queue-min-count {
    font-size: 0.7rem;
    color: var(--text-muted);
}

.btn-api-queue-toggle {
    background: transparent;
    border: none;
    color: var(--text-muted);
    font-size: 0.75rem;
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 3px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.15s, background 0.15s;
}

.btn-api-queue-toggle:hover {
    color: var(--text-main);
    background: rgba(255, 255, 255, 0.1);
}

.api-queue-card:not(.minimized) .api-queue-minimized {
    display: none !important;
}

.api-channel-chip {
    flex: 1;
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 0.7rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.api-channel-chip .chan-letter {
    font-weight: 700;
    color: var(--text-muted);
}

.api-channel-chip#api-chip-canal-a .chan-letter { color: var(--accent-blue); }
.api-channel-chip#api-chip-canal-b .chan-letter { color: #c084fc; }
.api-channel-chip#api-chip-canal-c .chan-letter { color: var(--accent-amber); }

.api-channel-chip .chan-icon {
    font-size: 0.7rem;
    font-weight: 600;
}

/* Linha da Fila RPN */
.api-queue-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.28rem 0.65rem;
    min-height: 28px;
    box-sizing: border-box;
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
    gap: 0.5rem;
}

.api-queue-row .chan-badge {
    font-weight: 800;
    font-size: 0.68rem;
    padding: 1px 4px;
    border-radius: 3px;
    min-width: 22px;
    text-align: center;
    flex-shrink: 0;
}

.chan-badge.chan-a {
    color: var(--accent-blue);
    background: rgba(56, 189, 248, 0.15);
}

.chan-badge.chan-b {
    color: #c084fc;
    background: rgba(192, 132, 252, 0.15);
}

.chan-badge.chan-c {
    color: var(--accent-amber);
    background: rgba(245, 158, 11, 0.15);
}

.api-queue-row .row-cod {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text-main);
}

.api-queue-row .row-status-icon {
    font-size: 0.78rem;
    flex-shrink: 0;
}

/* Item Ativo em Consulta (Deslocado para a base da lista, próximo aos canais) */
.api-queue-row.active {
    background: rgba(56, 189, 248, 0.12);
    border-left: 3px solid var(--accent-blue);
    font-weight: 700;
}

.tag-fura-fila {
    color: var(--accent-amber);
    margin-right: 3px;
    font-size: 0.75rem;
}

.spin-icon-queue, .spin-gear {
    display: inline-block;
    animation: api-queue-spin 1.2s linear infinite;
}

@keyframes api-queue-spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* ============================================================= */
/* Modo Aplicativo Dedicado: orca.libreaec.com                   */
/* ============================================================= */
body.subdomain-orca .top-bar {
    display: none !important;
}

body.subdomain-orca {
    padding-top: 0 !important;
}

body.subdomain-orca #view-orcamento {
    padding-top: 0.35rem;
}

body.subdomain-orca .excel-ribbon {
    margin-top: 0.25rem;
}

body.subdomain-orca .btn-link-portal-header {
    display: inline-flex !important;
}