/* Evergreen Epoxy — minimal motion layer */

/* -- LOADER (contained circle) -- */
.eef-loader{position:fixed;inset:0;z-index:9999;background:#0a0a0a;display:grid;place-items:center;transition:opacity .55s cubic-bezier(.22,.8,.36,1) .1s,visibility .55s cubic-bezier(.22,.8,.36,1) .1s}
.eef-loader.gone{opacity:0;visibility:hidden;pointer-events:none}
.eef-loader-stack{position:relative;width:240px;height:240px;display:grid;place-items:center;animation:eef-pulse 2s ease-in-out infinite}
.eef-loader-stack img{width:170px;height:170px;object-fit:contain;display:block;filter:drop-shadow(0 0 30px rgba(151,184,106,.45))}
.eef-loader-stack::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid transparent;border-top-color:#2d7d3a;border-right-color:#97b86a;animation:eef-spin 1.4s linear infinite;box-shadow:0 0 40px rgba(45,125,58,.25)}
.eef-loader-bar,.eef-loader-ring,.eef-loader-inner{display:none}
@keyframes eef-spin{to{transform:rotate(360deg)}}
@keyframes eef-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.03);opacity:.95}}
@media (max-width:640px){.eef-loader-stack{width:200px;height:200px}.eef-loader-stack img{width:140px;height:140px}}

/* -- SCROLL REVEAL -- */
[data-eef-reveal]{opacity:0;transform:translateY(20px);filter:blur(5px);transition:opacity .7s cubic-bezier(.16,.84,.32,1),transform .7s cubic-bezier(.16,.84,.32,1),filter .7s ease;will-change:opacity,transform,filter}
[data-eef-reveal].eef-visible{opacity:1;transform:translateY(0);filter:blur(0)}

/* -- CLICK RIPPLE -- */
@keyframes eef-ripple{to{transform:scale(1);opacity:0}}
.eef-ripple{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(45,125,58,.45),transparent 60%);pointer-events:none;transform:scale(0);animation:eef-ripple .6s ease-out forwards;z-index:20;mix-blend-mode:screen}

/* -- Lightweight polish (no layout side-effects) -- */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
::selection{background:#2d7d3a;color:#fff}
::-moz-selection{background:#2d7d3a;color:#fff}

/* -- SHINE HOVER on all buttons (21st.dev pattern, vanilla CSS) -- */
.btn, .btn-cta, .btn-cta-outline, .btn-primary, .btn-secondary, .btn-outline, .cta-btn, .cta-btn-secondary, .sticky-cta-btn, .sticky-cta-quote, .sticky-cta-call, .nav-cta, .hero-cta, .blog-cta, .phone-btn, .calc-btn-primary, .calc-option-btn, .space-card-cta, .eef-shine-btn{
  position:relative !important;
  overflow:hidden !important;
  isolation:isolate;
}
.btn::before, .btn-cta::before, .btn-cta-outline::before, .btn-primary::before, .btn-secondary::before, .btn-outline::before, .cta-btn::before, .cta-btn-secondary::before, .sticky-cta-btn::before, .sticky-cta-quote::before, .sticky-cta-call::before, .nav-cta::before, .hero-cta::before, .blog-cta::before, .phone-btn::before, .calc-btn-primary::before, .calc-option-btn::before, .space-card-cta::before, .eef-shine-btn::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(45deg,transparent 25%,rgba(255,255,255,.7) 50%,transparent 75%,transparent 100%);
  background-size:250% 250%;
  background-position:200% 0;
  background-repeat:no-repeat;
  transition:background-position 1s ease;
  pointer-events:none;
  z-index:1;
}
.btn:hover::before, .btn-cta:hover::before, .btn-cta-outline:hover::before, .btn-primary:hover::before, .btn-secondary:hover::before, .btn-outline:hover::before, .cta-btn:hover::before, .cta-btn-secondary:hover::before, .sticky-cta-btn:hover::before, .sticky-cta-quote:hover::before, .sticky-cta-call:hover::before, .nav-cta:hover::before, .hero-cta:hover::before, .blog-cta:hover::before, .phone-btn:hover::before, .calc-btn-primary:hover::before, .calc-option-btn:hover::before, .space-card-cta:hover::before, .eef-shine-btn:hover::before{
  background-position:-100% 0;
}
/* Keep button text above the shine layer */
.btn > *, .btn-cta > *, .btn-cta-outline > *, .btn-primary > *, .btn-secondary > *, .btn-outline > *, .cta-btn > *, .cta-btn-secondary > *, .sticky-cta-btn > *, .sticky-cta-quote > *, .sticky-cta-call > *, .nav-cta > *, .hero-cta > *, .blog-cta > *, .phone-btn > *, .calc-btn-primary > *, .calc-option-btn > *, .space-card-cta > *, .eef-shine-btn > *{
  position:relative;
  z-index:2;
}
