/* ============================================================
   perf-admin.css — Admin + Administrator · Performance layer (loads LAST)
   Chain: … → admin-refine.css → aura-admin.css → perf-admin.css
   Same strategy as perf.css: universal cheap wins + a "lite" fast path
   for phones / low-end machines. Purely additive.
   ============================================================ */

/* universal: don't paint off-screen table rows / cards */
table.tbl tbody tr { content-visibility: auto; contain-intrinsic-size: 44px; }
.card, .panel { contain: layout style; }

/* only pay GPU cost while hovering a KPI */
.kpi { will-change: auto; }
.kpi:hover { will-change: transform; }

/* ============================================================
   LITE MODE — fast back office for weak devices
   ============================================================ */
html.lite .sidebar,
html.lite .topbar,
html.lite .card,
html.lite .panel,
html.lite .kpi,
html.lite .login-card {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
html.lite .sidebar   { background: #ffffff !important; }
html.lite .topbar    { background: #ffffff !important; }
html.lite .card,
html.lite .panel,
html.lite .kpi,
html.lite .login-card { background: #ffffff !important; }

/* drop the animated aurora */
html.lite body::before,
html.lite body::after { display: none !important; }

/* no 3D tilt on KPI / login card (admin-fx.js also stops attaching) */
html.lite .tilt { transform: none !important; }
html.lite .tilt::after { display: none !important; }

/* charts: keep the shape, drop the endless gloss sweep */
html.lite .bar-fill::after { display: none !important; }
html.lite .bar-fill { animation: none !important; }

/* cheap, snappy transitions */
html.lite * { transition-duration: .12s !important; animation-duration: .3s !important; }
html.lite .kpi:hover { transform: translateY(-2px); }

html.reduce body::before { animation: none !important; }
html.reduce .bar-fill::after,
html.reduce .bar-fill { animation: none !important; }
