/* Responsive breakpoints. */
@media (max-width: 1200px) {
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .income-grid { grid-template-columns: repeat(2, 1fr); }
  .dash-hero { grid-template-columns: 1fr; }
  .dash-columns { grid-template-columns: 1fr; }
  .grid-3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 980px) {
  :root { --sidebar-w: 260px; }
  .sidebar { transform: translateX(-100%); box-shadow: var(--shadow); }
  .sidebar.open { transform: none; }
  .shell-main { margin-left: 0; }
  .menu-toggle { display: inline-flex; }
  .sidebar-backdrop { position: fixed; inset: 0; z-index: 55; background: rgba(0,0,0,0.55); backdrop-filter: blur(3px); opacity: 0; pointer-events: none; transition: opacity 0.25s; }
  .sidebar-backdrop.show { opacity: 1; pointer-events: auto; }
}
@media (max-width: 720px) {
  .content { padding: 18px 14px 60px; }
  .topbar { margin: 12px 12px 0; padding: 12px 16px; }
  .grid-2, .grid-3 { grid-template-columns: 1fr; }
  .stat-grid { grid-template-columns: 1fr 1fr; gap: 12px; }
  .income-grid { grid-template-columns: 1fr 1fr; }
  .hero-balance { font-size: 2.1rem; }
  .stat-card .st-value { font-size: 1.25rem; }
  .wallet-grid { grid-template-columns: 1fr; }
  .net-badge span, .net-badge { font-size: 0.7rem; }
  .page-title { font-size: 1.05rem; }
  .auth-card { padding: 28px 22px; }
  .modal { padding: 20px; }
}
@media (max-width: 480px) {
  .stat-grid { grid-template-columns: 1fr; }
  .income-grid { grid-template-columns: 1fr; }
  .hero-meta { gap: 16px; }
  .table-toolbar { flex-direction: column; align-items: stretch; }
  .net-badge { display: none; }
}
