*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

button, input, select, textarea { font-family: inherit; }

body {
    font-family: var(--font-sans);
    font-size: 14px;
    line-height: 1.5;
    color: var(--text);
    background: var(--bg);
    -webkit-font-smoothing: antialiased;
}

a { color: var(--cor-primaria); text-decoration: none; }
a:hover { text-decoration: underline; }

img { max-width: 100%; display: block; }

h1, h2, h3, h4 {
    font-family: var(--font-titulo);
    font-weight: 600;
    line-height: 1.3;
    color: var(--text);
}

h1 { font-size: 1.5rem; }
h2 { font-size: 1.25rem; }
h3 { font-size: 1.1rem; }

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.flash {
    position: fixed;
    top: var(--sp-5);
    left: 50%;
    transform: translateX(-50%);
    z-index: var(--z-toast);
    padding: var(--sp-3) var(--sp-5);
    border-radius: var(--radius-sm);
    font-size: 0.875rem;
    box-shadow: var(--sombra-elevada);
    max-width: min(90vw, 480px);
    text-align: center;
    animation: flash-in 0.3s ease;
}
.flash-error { background: #FEE2E2; color: var(--erro-escura); border: 1px solid #FECACA; }
.flash-success { background: #DCFCE7; color: var(--sucesso-escura); border: 1px solid #BBF7D0; }
.flash-warning { background: #FEF3C7; color: #92400E; border: 1px solid #FDE68A; }

@keyframes flash-in {
    from { opacity: 0; transform: translateX(-50%) translateY(-10px); }
    to { opacity: 1; transform: translateX(-50%) translateY(0); }
}
