/* KCN Manager — base: reset nhẹ, typography, focus, print */
*, *::before, *::after { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    color: var(--text);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 { color: var(--brand-primary); margin: 0 0 var(--space-3); line-height: 1.3; }
h1 { font-size: var(--fs-2xl); }
h2 { font-size: var(--fs-xl); }
h3 { font-size: var(--fs-lg); }
p  { margin: 0 0 var(--space-3); line-height: 1.55; }

a { color: var(--brand-accent); text-decoration: none; }
a:hover { color: var(--brand-accent-hover); text-decoration: underline; }

img { max-width: 100%; }

/* Focus ring rõ ràng trên MỌI phần tử tương tác (a11y) */
:focus-visible {
    outline: 2px solid var(--brand-accent);
    outline-offset: 2px;
    border-radius: 2px;
}

/* Số tiền căn phải, tabular để thẳng cột */
.money { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }

.text-secondary { color: var(--text-secondary); }
.text-danger { color: var(--status-overdue); }
.text-success { color: var(--status-paid); }
.nowrap { white-space: nowrap; }
.mt-0 { margin-top: 0; } .mb-0 { margin-bottom: 0; }
.text-right { text-align: right; }
.text-warning { color: #7a5d00; font-size: var(--fs-sm); }

/* In báo cáo: ẩn khung ứng dụng */
@media print {
    .sidebar, .topbar, .no-print, .flash-container { display: none !important; }
    .main-content { margin-left: 0 !important; padding: 0 !important; }
    body { background: #fff; }
}
