:root {
    --app-primary: #1f5d3a;
    --app-primary-dark: #153f28;
    --app-primary-soft: #eaf5ee;
    --app-bg: #f4f7f5;
    --app-surface: #ffffff;
    --app-border: #e3eae6;
    --app-text: #20332a;
    --app-muted: #6f7f76;
    --app-radius: 16px;
    --app-navbar-height: 68px;
    --app-sidebar-width: 16.666667%;
}

html { scroll-behavior: smooth; }
body { background: var(--app-bg) !important; color: var(--app-text); }

.navbar {
    min-height: var(--app-navbar-height);
    background: linear-gradient(135deg, var(--app-primary-dark), var(--app-primary)) !important;
    box-shadow: 0 4px 18px rgba(17, 52, 32, .16);
    z-index: 1040;
}
/* Mantém o cabeçalho unido ao aside durante a rolagem. As páginas que já
   usam fixed-top conservam esse comportamento; as restantes tornam-se sticky. */
.navbar:not(.fixed-top) {
    position: sticky !important;
    top: 0 !important;
}
.navbar-brand { font-weight: 700; letter-spacing: -.02em; }
.navbar-brand i { color: #a8d5ba; }
.navbar .nav-link { border-radius: 9px; transition: background-color .18s ease, color .18s ease; }
.navbar .nav-link:hover { background: rgba(255,255,255,.11); }

.card {
    border: 1px solid var(--app-border) !important;
    border-radius: var(--app-radius) !important;
    box-shadow: 0 8px 28px rgba(23, 57, 38, .065) !important;
    overflow: hidden;
}
.card-header { background: #fbfcfb !important; border-bottom-color: var(--app-border) !important; font-weight: 700; }
.stats-card, .stat-card { border-radius: var(--app-radius) !important; box-shadow: 0 8px 26px rgba(23,57,38,.07) !important; }

.btn { border-radius: 9px; font-weight: 600; }
.btn-primary, .btn-success { box-shadow: 0 5px 13px rgba(31, 93, 58, .16); }
.form-control, .form-select {
    border-radius: 10px;
    border-color: #d9e2dc;
    min-height: 42px;
}
.form-control:focus, .form-select:focus {
    border-color: #68a17d;
    box-shadow: 0 0 0 .2rem rgba(31, 93, 58, .13);
}
.table { --bs-table-hover-bg: #f5faf7; }
.table thead th {
    color: #596a60;
    font-size: .76rem;
    letter-spacing: .035em;
    text-transform: uppercase;
    border-bottom-color: var(--app-border);
    white-space: nowrap;
}
.table td, .table th { padding: .82rem .75rem; vertical-align: middle; }
.modal-content { border: 0; border-radius: 18px; box-shadow: 0 24px 70px rgba(13,40,24,.24); overflow: hidden; }
.modal-header { border-bottom-color: var(--app-border); }
.pagination .page-link { color: var(--app-primary); border-color: var(--app-border); }
.pagination .active > .page-link { background: var(--app-primary); border-color: var(--app-primary); }

/* Sidebar: fixa no viewport e independente da rolagem do conteúdo. */
@media (min-width: 768px) {
    .sidebar {
        position: fixed !important;
        top: var(--app-navbar-height) !important;
        bottom: 0 !important;
        left: 0 !important;
        width: 25% !important;
        height: calc(100vh - var(--app-navbar-height)) !important;
        min-height: 0 !important;
        overflow-x: hidden !important;
        overflow-y: auto !important;
        padding: 18px 12px 28px !important;
        background: linear-gradient(180deg, #183f29 0%, #102d1d 100%) !important;
        border-right: 1px solid rgba(255,255,255,.06);
        box-shadow: 8px 0 24px rgba(17,48,29,.08);
        scrollbar-width: thin;
        scrollbar-color: rgba(255,255,255,.24) transparent;
        z-index: 1020;
    }
    .sidebar + main,
    .sidebar + .main-content,
    .row > .sidebar ~ main,
    .row > .sidebar ~ .main-content {
        margin-left: 25% !important;
    }
}

@media (min-width: 992px) {
    .sidebar { width: var(--app-sidebar-width) !important; }
    .sidebar + main,
    .sidebar + .main-content,
    .row > .sidebar ~ main,
    .row > .sidebar ~ .main-content { margin-left: var(--app-sidebar-width) !important; }
}

.sidebar .position-sticky { position: static !important; top: auto !important; }
.sidebar .nav-header {
    color: rgba(255,255,255,.48) !important;
    font-size: .68rem !important;
    font-weight: 800 !important;
    letter-spacing: .12em !important;
    padding: 12px 13px 7px !important;
}
.sidebar .nav-link {
    display: flex !important;
    align-items: center;
    gap: 10px;
    color: rgba(255,255,255,.76) !important;
    margin: 3px 0 !important;
    padding: 10px 13px !important;
    border-radius: 10px !important;
    transition: background-color .18s ease, color .18s ease, transform .18s ease !important;
}
.sidebar .nav-link i { width: 20px; text-align: center; }
.sidebar .nav-link:hover { color: #fff !important; background: rgba(255,255,255,.09) !important; transform: translateX(2px); }
.sidebar .nav-link.active { color: #fff !important; background: rgba(83, 171, 115, .28) !important; box-shadow: inset 3px 0 #79cf98; }

main, .main-content { min-width: 0; }
main > h1, main > h2, .main-content > h1, .main-content > h2 { letter-spacing: -.025em; }

@media (max-width: 767.98px) {
    :root { --app-navbar-height: 60px; }
    .sidebar {
        position: relative !important;
        top: auto !important;
        width: 100% !important;
        height: auto !important;
        min-height: 0 !important;
        overflow: visible !important;
        padding: 10px !important;
        background: #173e28 !important;
    }
    .sidebar .nav { flex-direction: row; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; }
    .sidebar .nav-header { display: none; }
    .sidebar .nav-item { flex: 0 0 auto; }
    .sidebar .nav-link { white-space: nowrap; padding: 8px 11px !important; }
    .row > .sidebar ~ main, .row > .sidebar ~ .main-content { margin-left: 0 !important; width: 100% !important; }
    .card { border-radius: 13px !important; }
    .table-responsive { border-radius: 12px; }
}

@media print {
    .sidebar, .navbar { display: none !important; }
    main, .main-content { margin-left: 0 !important; width: 100% !important; }
    body { background: #fff !important; }
    .card { box-shadow: none !important; }
}
