:root{
  --brand-500:#2E8B57;
  --brand-300:#66d683;
  --focus-rgba: rgba(46,139,87,0.18);
  --min-font-size:16px;
}
html,body{
  height:100%;
  font-size:var(--min-font-size);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  color:var(--brand-500);
}
*{box-sizing:border-box}
img,video,figure{max-width:100%;height:auto;display:block;object-fit:cover}
.container{max-width:1200px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}
a{color:var(--brand-500);text-decoration:none}
a:focus{outline:none}
button{font-family:inherit}
:focus{outline-offset:3px}
:focus-visible{box-shadow:0 0 0 4px var(--focus-rgba);border-radius:8px}
header,footer,main,section,nav{scroll-margin-top:6rem}
/* Mobile menu transitions */
#mobileMenu{transition:opacity 280ms ease,transform 320ms ease}
#mobileMenu.hidden{opacity:0;pointer-events:none}
#mobileMenu[aria-hidden="true"]{opacity:0;transform:translateY(6px)}
#mobileMenu[aria-hidden="false"]{opacity:1;transform:none}
/* Cookie panel */
#cookie{transition:transform 260ms ease,opacity 260ms ease}
#cookie.hidden{opacity:0;transform:translateY(10px);pointer-events:none}
/* Buttons */
button[disabled],.btn-disabled{opacity:0.6;cursor:not-allowed}
/* Utility to lock body scroll when overlays are open */
.no-scroll{overflow:hidden;height:100vh}
/* Ensure text remains legible on darker backgrounds */
.bg-dark-safe{color:#ffffff}
/* Card focus styles */
article:focus-within,article:focus{box-shadow:0 6px 20px rgba(46,139,87,0.08);transform:translateY(-4px)}
/* Typography rhythm */
h1,h2,h3,h4{line-height:1.15}
h1{font-family:var(--font-serif, Merriweather, serif)}
/* Small screens adjustments */
@media (max-width:640px){
  header .container{padding-left:1rem;padding-right:1rem}
  #cookie{right:1rem;left:1rem;padding:0.75rem}
}
/* Accessibility helpers */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Ensure forms and inputs are readable */
input,textarea,select{font-size:1rem;padding:0.5rem 0.65rem;border-radius:8px;border:1px solid rgba(34,34,34,0.06)}
input:focus,textarea:focus,select:focus{box-shadow:0 0 0 4px var(--focus-rgba);border-color:var(--brand-500);outline:none}
/* Tiny animation helpers for motion-safe environments */
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
/* Iconify svg sizing fallback */
.iconify{display:inline-block;vertical-align:middle}
