:root {
  --lv1: #d9f2e3; --lv2: #fff4cc; --lv3: #ffd9b3; --lv4: #f4b6b6;
  --lv1-t: #1d6b3f; --lv2-t: #7a5b00; --lv3-t: #8a4300; --lv4-t: #8d1b1b;
  --brand: #1f2a37;
}
body { background: #f4f6f9; font-size: .92rem; }
.app-nav { background: var(--brand); }
.app-nav .nav-link.active { background: rgba(255,255,255,.12); border-radius: .375rem; }
.card { border: 0; box-shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08); }
.card-header { background: #fff; font-weight: 600; }
.table thead th { background: var(--brand); color: #fff; font-weight: 600; font-size: .8rem; vertical-align: middle; white-space: nowrap; }
.table-hover tbody tr { cursor: default; }
.table td { vertical-align: middle; }
.lv { display: inline-block; min-width: 1.6rem; text-align: center; border-radius: .3rem; font-weight: 700; padding: 0 .25rem; }
.tag { display: inline-block; border-radius: 1rem; padding: .1rem .55rem; font-size: .78rem; font-weight: 600; white-space: nowrap; }
.lv0 { background: #e9ecef; color: #6c757d; }
.lv1 { background: var(--lv1); color: var(--lv1-t); }
.lv2 { background: var(--lv2); color: var(--lv2-t); }
.lv3 { background: var(--lv3); color: var(--lv3-t); }
.lv4 { background: var(--lv4); color: var(--lv4-t); }
.heat-table td, .heat-table th { width: 2.6rem; height: 2.2rem; padding: .3rem; }
.heat-table td a { color: inherit; text-decoration: none; display: block; }
.kpi .num { font-size: 1.8rem; font-weight: 700; line-height: 1.1; }
.kpi .lbl { color: #6c757d; font-size: .8rem; }
dl.props { display: grid; grid-template-columns: minmax(9rem, 30%) 1fr; gap: .35rem .75rem; margin: 0; }
dl.props dt { color: #6c757d; font-weight: 500; }
dl.props dd { margin: 0; }
.timeline { list-style: none; padding-left: 1rem; border-left: 2px solid #dee2e6; margin: 0; }
.timeline li { position: relative; padding: 0 0 .75rem .5rem; }
.timeline li::before { content: ""; position: absolute; left: -1.38rem; top: .35rem; width: .7rem; height: .7rem; border-radius: 50%; background: #0d6efd; }
.wf-steps { display: flex; flex-wrap: wrap; list-style: none; padding: 0; margin: 0 0 .5rem; gap: .25rem; counter-reset: s; }
.wf-steps li { counter-increment: s; flex: 1 1 8rem; background: #e9ecef; color: #6c757d; padding: .35rem .5rem; font-size: .75rem; border-radius: .3rem; text-align: center; }
.wf-steps li::before { content: counter(s) ". "; }
.wf-steps li.done { background: #d1e7dd; color: #0f5132; }
.wf-steps li.current { background: #0d6efd; color: #fff; font-weight: 600; }
.wf-steps li.done.current { background: #198754; color: #fff; }
.filters .form-select, .filters .form-control { font-size: .85rem; }
.text-pre { white-space: pre-line; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #1f2a37, #34495e); }
.login-card { width: 100%; max-width: 400px; }
.small-muted { font-size: .78rem; color: #6c757d; }
.link-list a { text-decoration: none; }
@media print { .app-nav, .no-print, footer { display: none !important; } body { background: #fff; } .card { box-shadow: none; } }
.table td.lv1 { --bs-table-bg: var(--lv1); --bs-table-hover-bg: var(--lv1); color: var(--lv1-t); }
.table td.lv2 { --bs-table-bg: var(--lv2); --bs-table-hover-bg: var(--lv2); color: var(--lv2-t); }
.table td.lv3 { --bs-table-bg: var(--lv3); --bs-table-hover-bg: var(--lv3); color: var(--lv3-t); }
.table td.lv4 { --bs-table-bg: var(--lv4); --bs-table-hover-bg: var(--lv4); color: var(--lv4-t); }
.app-nav .nav-link { white-space: nowrap; font-size: .88rem; padding-left: .55rem !important; padding-right: .55rem !important; }
.app-nav .navbar-brand { font-size: 1.05rem; }
