html {font-size:16px; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;}
body {font-family:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; line-height:1.5; color:#0f172a;}
h1,h2,h3,h4,h5,h6 {font-family:Merriweather, serif; margin:0 0 .5rem 0;}
img, picture, video {max-width:100%; height:auto; display:block; object-fit:cover;}
.container {max-width:1200px; margin-left:auto; margin-right:auto;}
:focus {outline:2px solid transparent; outline-offset:2px;}
:focus-visible {box-shadow:0 0 0 4px rgba(59,130,246,0.18); border-radius:8px;}
button, a[role="button"] {transition:transform .18s cubic-bezier(.2,.9,.3,1), box-shadow .18s;}
button:active, a[role="button"]:active {transform:translateY(1px);}
button[disabled], .btn-disabled {opacity:.6; cursor:not-allowed; pointer-events:none;}
.no-scroll {height:100vh; overflow:hidden;}
#mobile-menu {transition:opacity .28s ease, transform .28s ease;}
#mobile-menu.hidden {opacity:0; pointer-events:none;}
#mobile-menu .transform {transition:transform .28s ease, opacity .28s ease;}
#mobile-overlay {transition:opacity .28s ease;}
.iconify {display:inline-block; vertical-align:middle;}
.icon-decorative {opacity:.9; transition:transform .28s ease, opacity .28s ease;}
.icon-decorative:hover, .icon-decorative:focus {transform:rotate(6deg) scale(1.02); opacity:1;}
.cookie-animate {transition:transform .28s cubic-bezier(.2,.9,.3,1), opacity .28s ease;}
#cookie {min-width:18rem; max-width:22rem;}
@media (max-width: 640px) {
  #cookie {right:.75rem; left:.75rem; bottom:1rem; max-width:unset;}
}
.card-focus {border-radius:1rem;}
.card-focus:focus-within {box-shadow:0 8px 30px rgba(15,23,42,0.08); transform:translateY(-4px);}
.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;}
kbd {background:#f1f5f9; border:1px solid #e2e8f0; padding:.12rem .4rem; border-radius:.35rem; font-family:Inter, system-ui; font-size:.85em}
/* Accessibility color enforcement */
a, button {color:inherit}
/* Ensure minimum touch target for interactive elements */
button, a, input, select, textarea {min-height:44px}
/* Utility for subtle gradient backgrounds when Tailwind classes are insufficient */
.gradient-soft {background-image:linear-gradient(135deg, rgba(59,130,246,0.06), rgba(99,102,241,0.03));}
/* Small performance-friendly reveal */
.reveal {opacity:0; transform:translateY(10px); transition:opacity .6s ease, transform .6s ease;}
.reveal.in-view {opacity:1; transform:none}
/* Ensure focusable Iconify buttons have visible focus ring */
.icon-button:focus-visible {box-shadow:0 0 0 4px rgba(79,70,229,0.14); border-radius:8px}
/* Form validation states */
.input-error {border-color:#ef4444; box-shadow:0 0 0 4px rgba(239,68,68,0.06)}
.input-success {border-color:#16a34a; box-shadow:0 0 0 4px rgba(16,185,129,0.06)}
/* Modal focus trap helper */
.modal-hidden {opacity:0; pointer-events:none}
.modal-visible {opacity:1; pointer-events:auto}
