:root{
  --brand:#5FCC5F;
  --darkbg:#0f172a;
  --muted:#6b7280;
  --bg:#ffffff;
}
html{font-size:16px}
body{font-family:Inter,ui-sans-serif,system-ui,Helvetica,Arial,sans-serif;background-color:var(--bg);color:var(--darkbg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
h1,h2,h3,h4,h5,h6{font-family:Montserrat,ui-sans-serif,system-ui,Helvetica,Arial,sans-serif}
img{max-width:100%;height:auto;display:block}
.container{max-width:1200px;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}
a{color:inherit}
button{font-family:inherit}
input,textarea,select{font-family:inherit}
:focus{outline:transparent}
:focus-visible{box-shadow:0 0 0 3px rgba(95,204,95,0.18);border-radius:0.5rem}
.header-shadow{box-shadow:0 6px 20px rgba(15,23,42,0.06)}
.rounded-2xl{border-radius:1rem}
.rounded-xl{border-radius:0.75rem}
.shadow-md{box-shadow:0 6px 18px rgba(15,23,42,0.08)}
.shadow-lg{box-shadow:0 20px 40px rgba(15,23,42,0.12)}
.grid-image{object-fit:cover}
/* mobile menu states */
#mobileMenu{transition:opacity 320ms ease,transform 360ms ease}
#mobileMenu.hidden{opacity:0;pointer-events:none}
#mobileMenu.show{opacity:1;pointer-events:auto}
#mobileBackdrop{transition:opacity 220ms ease}
#mobileMenu .m-menu-panel{transform:translateY(8px);opacity:0;transition:transform 320ms ease,opacity 320ms ease}
#mobileMenu.show .m-menu-panel{transform:translateY(0);opacity:1}
/* cookie consent */
#cookieConsent{max-width:20rem}
@media(min-width:1024px){#cookieConsent{max-width:24rem}}
/* FAQ transitions */
.faq-content{max-height:0;overflow:hidden;transition:max-height 320ms ease,padding 220ms ease}
.faq-open .faq-content{max-height:420px;padding:1rem}
.faq-toggle{background:transparent;border:0;width:100%;text-align:left}
/* toast notifications */
#toast-root{pointer-events:none}
.toast{pointer-events:auto;display:flex;gap:0.75rem;align-items:center;background:#0f172a;color:#fff;padding:0.75rem 1rem;border-radius:0.75rem;box-shadow:0 10px 30px rgba(2,6,23,0.25)}
.toast.success{background:linear-gradient(90deg,var(--brand),#4fb24f)}
.toast.info{background:rgba(15,23,42,0.95)}
.toast .icon{font-size:20px}
@keyframes toast-in{0%{transform:translateY(6px);opacity:0}100%{transform:translateY(0);opacity:1}}
.toast-animate{animation:toast-in 360ms ease-out both}
/* form status */
#formStatus{min-height:1.4rem}
/* small helpers */
.sr-only{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
/* ensure high contrast for footer links */
footer a{color:rgba(255,255,255,0.95)}
/* responsive image grid min heights */
@media(min-width:1024px){.hero-media img{height:160px}}
/* Focus ring for interactive Iconify icons */
.iconify:focus{outline:transparent;box-shadow:0 0 0 3px rgba(95,204,95,0.14);border-radius:0.375rem}
/* Accessible hidden when JS toggles overflow lock */
.body-scroll-locked{height:100vh;overflow:hidden}
/* ensure buttons use visible text color when brand background applied */
.btn-primary{background:var(--brand);color:#000}
.btn-secondary{background:transparent;border:1px solid rgba(15,23,42,0.06);color:var(--darkbg)}
/* small utility for content cards to maintain overlay contrast */
.card-overlay{background:linear-gradient(180deg,rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.55) 70%)}
/* enforce min readable font sizes */
body{font-size:16px}
h1{font-size:2.25rem}
@media(min-width:640px){h1{font-size:2.5rem}}
h2{font-size:1.5rem}
p,li{font-size:1rem}
/* ensure rounded controls have consistent appearance across browsers */
input[type=text],input[type=email],input[type=tel],textarea{appearance:none}
/* grid cards hover lift */
.group:hover, .group:focus-within{transform:translateY(-6px);transition:transform 240ms ease;will-change:transform}
/* ensure footer has sufficient padding on small screens */
@media(max-width:640px){footer{padding-top:2.5rem;padding-bottom:2.5rem}}
