/* Noor Web v2 base — the design's global rules (Noor Web App.dc.html <helmet>),
   1:1, with the token names. The page itself never scrolls. */
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
button { font: inherit; color: inherit; background: none; border: 0; margin: 0; padding: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
textarea, input { font: inherit; color: inherit; background: none; border: 0; margin: 0; padding: 0; outline: none; resize: none; }
button:focus-visible, a:focus-visible { outline: 2px solid var(--text-2); outline-offset: 2px; }
::selection { background: var(--surface-3); color: var(--text-1); }
a { color: var(--text-1); }
a:hover { color: var(--text-2); }
@keyframes noorPulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .35; transform: scale(.75); } }
@media (prefers-reduced-motion: reduce) { @keyframes noorPulse { 0%, 100% { opacity: 1; } 50% { opacity: .4; } } }

/* Fonts gate: nothing paints until the four families are ready (chat.js lifts it). */
html.nw-fonts-pending body { visibility: hidden; }

/* View Transitions between the account pages and into the chat
   (Noor Sign In.dc.html, 6 Handoff, verbatim). Browsers without them navigate. */
@view-transition { navigation: auto; }
::view-transition-group(*) { animation-duration: 220ms; animation-timing-function: cubic-bezier(.2, .8, .2, 1); }
::view-transition-old(*), ::view-transition-new(*) { animation-duration: 220ms; }
@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*) { animation: none; }   /* no travel, crossfade only */
}
