/* The Next root must not change OBS sizing or the existing body grid layout. */
#__next { display: contents; }
:root { --stream-ease: cubic-bezier(.22,.8,.22,1); }
button, a { touch-action: manipulation; }
:is(button, a, input, select):focus-visible { outline: 2px solid #b9ff66; outline-offset: 4px; }
.admin .glass, .login-page .auth-card, .login-page .brand-panel {
  animation: stream-arrive .45s var(--stream-ease) both;
}
.admin .grid > :nth-child(2) { animation-delay: 65ms; }
.admin button, .login-page button { transition: transform .18s var(--stream-ease), filter .18s, box-shadow .18s; }
@media (hover: hover) {
  .admin button:not(:disabled):hover, .login-page button:not(:disabled):hover { transform: translateY(-2px); filter: brightness(1.08); }
}
.admin button:not(:disabled):active, .login-page button:not(:disabled):active { transform: translateY(0) scale(.98); }
.runtime-error { position: fixed; bottom: 16px; left: 16px; right: 16px; z-index: 10000; padding: 16px; color: white; background: #701b28; border-radius: 12px; font: 14px system-ui; }
@keyframes stream-arrive { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; animation-delay: 0ms !important; transition-duration: .01ms !important; transition-delay: 0ms !important; scroll-behavior: auto !important; }
}
