html {box-sizing: border-box; -webkit-text-size-adjust: 100%;}
*, *::before, *::after {box-sizing: inherit;}
:root {color-scheme: light;}
html, body {height: 100%;}
html {font-family: Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial; font-size: 16px;}
body {margin: 0; line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background-color: white; color: #0f172a;}
img, picture, video, svg {max-width: 100%; height: auto; display: block; object-fit: cover;}
.container {max-width: 100%;}
a {color: inherit; text-decoration: none;}
button {font-family: inherit;}
:focus {outline: none;}
:focus-visible {box-shadow: 0 0 0 4px rgba(59,130,246,0.18); border-radius: 0.5rem;}
.iconify {display: inline-block; vertical-align: middle; line-height: 1;}
.no-scroll {overflow: hidden; height: 100vh;}
/* modal and dialog transitions */
.dialog-enter {transform: translateY(8px); opacity: 0;}
.dialog-enter-active {transform: translateY(0); opacity: 1; transition: transform 320ms cubic-bezier(.2,.9,.3,1), opacity 320ms ease-out;}
.dialog-exit {transform: translateY(0); opacity: 1;}
.dialog-exit-active {transform: translateY(8px); opacity: 0; transition: transform 220ms ease-in, opacity 220ms ease-in;}
/* small utilities used by JS */
.hidden {display: none !important;}
.visible {display: block !important;}
/* cookie consent specific fallback styling for small screens */
#cookieConsent {max-width: 22rem;}
@media (max-width: 640px) {#cookieConsent {right: 1rem; left: 1rem; bottom: 1rem;}}
/* ensure focusable interactive elements have clear hit targets */
button, a, input, select, textarea {min-height: 40px;}
/* headings fallback to ensure hierarchy and legibility if custom fonts fail */
h1, h2, h3, h4, h5, h6 {font-family: Merriweather, Georgia, 'Times New Roman', serif; margin: 0 0 0.5rem 0;}
h1 {font-size: 2rem; line-height: 1.1;}
h2 {font-size: 1.5rem;}
h3 {font-size: 1.125rem;}
p {margin: 0 0 1rem 0;}
/* subtle image container constraints */
.rounded-2xl img {border-radius: 1rem; display: block;}
/* ensure high contrast for small text on brand backgrounds */
.text-on-brand {color: #ffffff;}
/* lightweight focus-visible style for icon buttons */
.icon-button:focus-visible {box-shadow: 0 0 0 4px rgba(99,102,241,0.18); border-radius: 0.5rem;}
