/* #031736 — CSS RIÊNG màn Đăng nhập + màn vào từ link Ồn Staff (giao diện Vercel bản Opus). Biến/lớp chung ở /osv.css. */
body.dn-body { padding-bottom: 0; min-height: 100vh; min-height: 100dvh;
  background: radial-gradient(80% 50% at 50% 0%, color-mix(in srgb, var(--accent) 7%, transparent), transparent 70%), var(--bg); }
.dn-wrap { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--s6); padding: var(--s8) var(--s4) calc(var(--s8) + env(safe-area-inset-bottom)); }
.dn-brand { display: flex; align-items: center; gap: 10px; font: 600 20px/28px var(--font); letter-spacing: -0.02em; }
.dn-logo { width: 32px; height: 32px; display: grid; place-items: center; }
.dn-logo svg { width: 28px; height: 28px; fill: var(--text); }
.dn-card { width: 100%; max-width: 400px; padding: var(--s6); display: flex; flex-direction: column; gap: var(--s4); box-shadow: var(--shadow-md); }
@media (min-width: 900px) { .dn-card { padding: var(--s8); } }
.dn-card .h2 { margin: 0; }
.dn-sub { margin: -8px 0 0; }
.dn-submit { width: 100%; }
.dn-hint { margin: 0; }
.dn-error:not(.visible) { display: none; }
.dn-theme { position: fixed; top: calc(var(--s3) + env(safe-area-inset-top)); right: var(--s3); z-index: 40; }
.dn-theme .menu { max-height: calc(100dvh - 72px); }
.dn-status { display: flex; align-items: center; gap: var(--s3); }
.dn-status .subtitle { margin: 0; color: var(--text-2); }
.spinner { width: 18px; height: 18px; flex: none; border-radius: 50%; border: 2px solid var(--g500); border-right-color: transparent; animation: spin .7s linear infinite; }
.hint { margin: 0; }
