:root { --cnp: #1f6f43; --cnp-dark: #155232; --cnp-soft: #e8f3ec; }
body { background: #f4f6f5; font-size: .925rem; }
.topbar { background: linear-gradient(90deg, var(--cnp-dark), var(--cnp)); }
.sidebar { width: 260px; flex-shrink: 0; min-height: calc(100vh - 56px); background: #fff; border-right: 1px solid #e3e7e5; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 56px; height: calc(100vh - 56px); overflow-y: auto; } }
.sidebar .nav-link { color: #2b3a33; padding: .42rem .7rem; border-radius: .4rem; font-size: .9rem; align-items: center; }
.sidebar .nav-link i { width: 1.3rem; display: inline-block; }
.sidebar .nav-link:hover { background: var(--cnp-soft); }
.sidebar .nav-link.active { background: var(--cnp); color: #fff; }
.nav-section { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: #8a958f; margin: .8rem .7rem .2rem; font-weight: 600; }
.main-content { min-width: 0; }
.btn-primary { --bs-btn-bg: var(--cnp); --bs-btn-border-color: var(--cnp); --bs-btn-hover-bg: var(--cnp-dark); --bs-btn-hover-border-color: var(--cnp-dark); --bs-btn-active-bg: var(--cnp-dark); }
.text-cnp { color: var(--cnp) !important; }
.card { border: 1px solid #e3e7e5; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.card-header { background: #fff; font-weight: 600; }
.stat { border-left: 4px solid var(--cnp); }
.stat .n { font-size: 1.8rem; font-weight: 700; line-height: 1; }
.table > :not(caption) > * > * { padding: .5rem .6rem; }
.table td { vertical-align: middle; }
.exp-num { font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 600; color: var(--cnp-dark); }
.timeline { position: relative; padding-left: 1.6rem; }
.timeline::before { content: ""; position: absolute; left: .55rem; top: .3rem; bottom: .3rem; width: 2px; background: #d5ddd8; }
.timeline .ti { position: relative; margin-bottom: 1rem; }
.timeline .ti::before { content: ""; position: absolute; left: -1.38rem; top: .35rem; width: .8rem; height: .8rem; border-radius: 50%; background: var(--cnp); border: 2px solid #fff; box-shadow: 0 0 0 2px var(--cnp); }
.timeline .ti.pend::before { background: #ffc107; box-shadow: 0 0 0 2px #ffc107; }
.vencido { color: #b02a37; font-weight: 600; }
.public-bg { background: #eef3f0; }
.ql-editor { min-height: 320px; font-size: 11pt; font-family: "DejaVu Sans", Arial, sans-serif; }
.cargo { max-width: 720px; margin: auto; background: #fff; border: 1px dashed #999; padding: 1.5rem; }
@media print { .no-print, .topbar, .sidebar, footer { display: none !important; } body { background: #fff; } .main-content { padding: 0 !important; } }
