*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: 'Inter', system-ui, sans-serif; color: var(--text); background: var(--white); line-height: 1.6; -webkit-font-smoothing: antialiased; display: flex; flex-direction: column; min-height: 100vh; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }

/* FLASH */
.flash-banner { position: fixed; top: 74px; left: 50%; transform: translateX(-50%); z-index: 200; padding: 14px 28px; border-radius: var(--radius-sm); font-weight: 600; font-size: .95rem; box-shadow: var(--shadow-md); max-width: 90vw; text-align: center; animation: fade-up .3s ease; }
.flash-success { background: var(--green); color: #fff; }
.flash-error   { background: #e53e3e; color: #fff; }

/* KEYFRAMES */
@keyframes pulse-dot { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .6; transform: scale(1.2); } }
@keyframes fade-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
