* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--fundo); color: var(--texto); font-family: var(--fonte); }
html { background: var(--fundo); }
body { min-height: 100dvh; overflow: hidden; transition: background-color .2s ease, color .2s ease; }
button, input, textarea, select { font: inherit; }
button { color: inherit; }
button, [role="button"] { -webkit-tap-highlight-color: transparent; }
button { border: 0; background: none; cursor: pointer; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid color-mix(in srgb, var(--texto) 65%, transparent); outline-offset: 2px; }
svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.oculto { display: none !important; }
.icone-botao { width: 38px; height: 38px; display: inline-grid; place-items: center; border-radius: 50%; transition: background .18s ease, transform .18s ease, color .18s ease; flex: 0 0 auto; }
.icone-botao:hover { background: var(--superficie-2); }
.icone-botao:active { transform: scale(.96); }
.avatar { display: inline-grid; place-items: center; border-radius: 50%; overflow: visible; background: var(--superficie-3); color: var(--texto-2); font-weight: 700; position: relative; flex: 0 0 auto; }
.avatar img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: inherit; }
.avatar.online::after, .perfil-resumo > i { content: ""; position: absolute; width: 10px; height: 10px; border-radius: 50%; background: var(--verde); border: 2px solid var(--superficie); right: -1px; bottom: 0; }
.toast { position: fixed; z-index: 80; left: 50%; bottom: 24px; transform: translate(-50%, 20px); background: var(--contraste); color: var(--texto-contraste); padding: 12px 16px; border-radius: 999px; box-shadow: 0 12px 30px rgba(0,0,0,.24); font-size: 13px; opacity: 0; pointer-events: none; transition: .22s ease; white-space: nowrap; }
.toast.visivel { opacity: 1; transform: translate(-50%, 0); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
