:root { --sidebar-width: 250px; }
body { background: #f4f6f9; }
.sidebar { width: var(--sidebar-width); min-height: 100vh; }
@media (min-width: 992px) {
    .sidebar { position: sticky; top: 0; height: 100vh; flex-shrink: 0; }
}
.sidebar-brand { align-items: center; padding: 1.1rem 1.25rem; color: #fff; text-decoration: none; font-weight: 600; font-size: 1.05rem; border-bottom: 1px solid rgba(255,255,255,.1); }
.sidebar-brand i { font-size: 1.6rem; color: #6ea8fe; }
.sidebar-brand small { display: block; font-weight: 400; font-size: .75rem; color: rgba(255,255,255,.55); }
.sidebar .nav-link { color: rgba(255,255,255,.75); display: flex; align-items: center; gap: .6rem; padding: .55rem 1.25rem; border-left: 3px solid transparent; }
.sidebar .nav-link:hover { color: #fff; background: rgba(255,255,255,.05); }
.sidebar .nav-link.active { color: #fff; background: rgba(110,168,254,.15); border-left-color: #6ea8fe; }
.sidebar-heading { padding: .9rem 1.25rem .25rem; font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: rgba(255,255,255,.4); font-weight: 600; }
.main-content { min-width: 0; }
.card { border: 1px solid #e3e6ea; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.card-header { border-bottom-color: #e3e6ea; }
.kpi .fs-3 { line-height: 1.2; }
.chart-box { position: relative; height: 280px; }
.chart-box-sm { height: 240px; }
.dns-record { background: #f8f9fa; border: 1px solid #e9ecef; border-radius: .375rem; padding: .6rem .75rem; white-space: pre-wrap; word-break: break-all; font-size: .85rem; }
.issue-table td { vertical-align: top; }
.heatmap td { min-width: 52px; }
.heat-success { background: #d1e7dd !important; }
.heat-warning { background: #fff3cd !important; }
.heat-danger { background: #f8d7da !important; }
.heat-secondary { background: #fff !important; }
table a { text-decoration: none; }
th.sort-asc::after { content: " \25B2"; font-size: .7em; }
th.sort-desc::after { content: " \25BC"; font-size: .7em; }
.log-step { border-left: 3px solid #dee2e6; padding: .35rem 0 .35rem .75rem; margin-bottom: .35rem; }
.log-step.log-success { border-left-color: #198754; }
.log-step.log-info { border-left-color: #0dcaf0; }
.log-step.log-warning { border-left-color: #ffc107; }
.log-step.log-danger { border-left-color: #dc3545; }
.log-raw { display: block; color: #6c757d; font-size: .75rem; white-space: pre-wrap; word-break: break-all; margin-top: .15rem; }
.log-step.log-none .log-raw { margin-top: 0; }
.hide-raw .log-step:not(.log-none) .log-raw { display: none; }
