/*
Theme Name: Prabhu Premi Welfare Foundation
Theme URI: https://example.com/
Author: Custom Theme Build
Description: Custom WordPress theme for Prabhu Premi Welfare Foundation with Elementor compatibility and working contact form.
Version: 4.6.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: prabhu-premi
*/

/* ==========================================================================
   PRABHU PREMI WELFARE FOUNDATION — custom.css
   Paste into WordPress Customizer → Additional CSS after Elementor build.
   Design tokens extracted from source mockup images.
   ========================================================================== */

:root {
  /* Color palette */
  --c-green:        #163C2C;   /* primary deep forest green (buttons, nav accents) */
  --c-green-deep:    #0F2A1D;   /* footer / darkest green */
  --c-green-soft:    #1F4D39;   /* hover / secondary green */
  --c-orange:        #F0801E;   /* primary accent - CTAs, "Tomorrow", eyebrows */
  --c-orange-dark:   #D96C10;   /* orange hover state */
  --c-cream:         #FBF6EC;   /* page background */
  --c-cream-alt:     #F3ECDC;   /* alternate section background */
  --c-charcoal:      #20302A;   /* heading text */
  --c-gray:          #5F6B64;   /* body text */
  --c-white:         #FFFFFF;
  --c-border:        #E7DFCB;

  /* Typography scale */
  --font-display: "Playfair Display", serif;
  --font-body: "Poppins", sans-serif;

  /* Spacing rhythm */
  --section-pad-y: 6.5rem;
  --section-pad-y-sm: 3.5rem;
  --radius-card: 1.25rem;
  --radius-pill: 999px;
  --shadow-card: 0 20px 45px -20px rgba(22, 60, 44, 0.25);
  --shadow-soft: 0 10px 30px -12px rgba(22, 60, 44, 0.18);
}

/* ==========================================================================
   Base / Accessibility
   ========================================================================== */

* { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}

body { font-family: var(--font-body); }

.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;
}

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 999;
  background: var(--c-green); color: var(--c-white); padding: .75rem 1.25rem;
  border-radius: 0 0 .5rem 0; font-weight: 600; text-decoration: none;
}
.skip-link:focus { left: 0; }

a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 3px solid var(--c-orange);
  outline-offset: 2px;
  border-radius: 4px;
}

img { max-width: 100%; display: block; }

/* ==========================================================================
   Typography helpers
   ========================================================================== */

.eyebrow {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: .8rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  margin-bottom: .5rem;
}
.eyebrow-dark { color: var(--c-green); }
.eyebrow-light { color: var(--c-orange); }
.eyebrow-orange-on-dark { color: var(--c-orange); }

.section-heading {
  font-family: var(--font-display);
  font-weight: 800;
  color: var(--c-green);
  font-size: clamp(1.9rem, 3.4vw, 2.75rem);
  line-height: 1.15;
  margin-bottom: 1rem;
  max-width: 42ch;
}
.section-body {
  color: var(--c-gray);
  font-size: 1rem;
  line-height: 1.75;
  margin-bottom: .9rem;
  max-width: 56ch;
}
.section-lead { max-width: 60ch; }

.section-intro {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 3rem;
  padding: 0 1.5rem;
}
.section-intro .section-heading { margin-left: auto; margin-right: auto; }
.section-intro .section-body { margin-left: auto; margin-right: auto; }

.section-cta-center { display: flex; justify-content: center; margin-top: 2.75rem; }

/* ==========================================================================
   Buttons
   ========================================================================== */

.btn {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--font-body); font-weight: 600; font-size: .95rem;
  padding: .85rem 1.7rem; text-decoration: none; cursor: pointer;
  border: 2px solid transparent; transition: transform .18s ease, background-color .18s ease, color .18s ease, box-shadow .18s ease;
  white-space: nowrap;
}
.btn-pill { border-radius: var(--radius-pill); }
.btn-small { padding: .6rem 1.3rem; font-size: .85rem; }

.btn-icon, .btn-icon-trail { width: 18px; height: 18px; flex-shrink: 0; }

.btn-green { background: var(--c-green); color: var(--c-white); }
.btn-green:hover { background: var(--c-green-soft); transform: translateY(-2px); box-shadow: var(--shadow-soft); }

.btn-orange { background: var(--c-orange); color: var(--c-white); }
.btn-orange:hover { background: var(--c-orange-dark); transform: translateY(-2px); box-shadow: var(--shadow-soft); }

.btn-outline-green { background: transparent; color: var(--c-green); border-color: var(--c-green); }
.btn-outline-green:hover { background: var(--c-green); color: var(--c-white); transform: translateY(-2px); }

.btn-outline-cream { background: transparent; color: var(--c-cream); border-color: rgba(251,246,236,.5); }
.btn-outline-cream:hover { background: var(--c-cream); color: var(--c-green); border-color: var(--c-cream); }

/* ==========================================================================
   Header
   ========================================================================== */

.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(251, 246, 236, 0.92);
  backdrop-filter: none;
  border-bottom: 1px solid var(--c-border);
  transition: box-shadow .2s ease;
}
.site-header.is-scrolled { box-shadow: 0 8px 24px -16px rgba(22,60,44,.35); }

.header-inner {
  max-width: 1320px; margin: 0 auto;
  display: flex; align-items: center; justify-content: space-between;
  padding: .85rem 1.75rem; gap: 1.5rem;
}

.logo-block { display: flex; align-items: center; gap: .65rem; text-decoration: none; }
.logo-mark { border-radius: 50%; }
.logo-text { display: flex; flex-direction: column; line-height: 1.15; }
.logo-text-main { font-family: var(--font-display); font-weight: 800; color: var(--c-green); font-size: 1rem; letter-spacing: .01em; }
.logo-text-sub { font-size: .62rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--c-orange); }

.main-nav .nav-list { display: flex; align-items: center; gap: 1.9rem; list-style: none; margin: 0; padding: 0; }
.nav-link {
  font-size: .92rem; font-weight: 500; color: var(--c-charcoal); text-decoration: none;
  position: relative; padding-bottom: 4px;
}
.nav-link::after {
  content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 0;
  background: var(--c-orange); transition: width .2s ease;
}
.nav-link:hover::after,
.nav-link.is-active::after { width: 100%; }
.nav-link.is-active { color: var(--c-green); font-weight: 600; }

.header-cta-group { display: flex; align-items: center; gap: 1rem; }

.mobile-menu-toggle {
  display: none; flex-direction: column; justify-content: center; gap: 5px;
  width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--c-border);
  background: var(--c-white); cursor: pointer;
}
.hamburger-line { width: 20px; height: 2px; background: var(--c-green); margin: 0 auto; transition: transform .25s ease, opacity .25s ease; }
.mobile-menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.mobile-menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(2) { opacity: 0; }
.mobile-menu-toggle[aria-expanded="true"] .hamburger-line:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ==========================================================================
   Hero
   ========================================================================== */

.hero-section {
  position: relative; overflow: hidden;
  padding: 3.5rem 1.75rem 0;
  max-width: 1400px; margin: 0 auto;
}

.hero-leaf {
  position: absolute; width: 160px; height: 160px; pointer-events: none;
  background: radial-gradient(circle at 30% 30%, rgba(240,128,30,.18), transparent 70%);
  opacity: .8; z-index: 0;
}
.hero-leaf-left { left: -60px; top: 30%; }
.hero-leaf-top-right { right: 8%; top: -20px; }

.hero-grid {
  position: relative; z-index: 1;
  display: grid; grid-template-columns: 1.05fr .95fr; gap: 3rem; align-items: center;
}

.hero-text-col { max-width: 560px; }

.hero-heading {
  font-family: var(--font-display); font-weight: 800; color: var(--c-green);
  font-size: clamp(2.4rem, 5vw, 3.9rem); line-height: 1.08; margin: .35rem 0 1.1rem;
}

.hero-tagline { font-weight: 600; color: var(--c-charcoal); font-size: 1.1rem; margin-bottom: .85rem; }
.hero-description { color: var(--c-gray); line-height: 1.8; margin-bottom: 2rem; max-width: 50ch; }

.hero-btn-group { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.75rem; }

.scroll-down-link {
  display: inline-flex; align-items: center; gap: .6rem; font-size: .85rem; font-weight: 600;
  color: var(--c-green); text-decoration: none;
}
.scroll-down-dot {
  width: 10px; height: 10px; border-radius: 50%; background: var(--c-orange);
  animation: bob 1.6s ease-in-out infinite;
}
@keyframes bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(5px); } }

.hero-image-col { position: relative; }
.hero-image {
  width: 100%; height: 560px; object-fit: cover;
  border-radius: 220px 220px 24px 24px;
  box-shadow: var(--shadow-card);
  position: relative; z-index: 1;
}
.hero-image-shape {
  position: absolute; inset: -18px -18px auto auto; width: 92%; height: 92%;
  border: 2px dashed rgba(240,128,30,.4); border-radius: 220px 220px 24px 24px;
  z-index: 0; top: 18px; right: -18px;
}

.stats-bar-wrap { position: relative; z-index: 2; margin-top: -3.75rem; padding-bottom: 3.5rem; }
.stats-bar {
  background: var(--c-green); border-radius: 1.5rem; box-shadow: var(--shadow-card);
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.9rem 2.5rem; gap: 1rem; flex-wrap: wrap;
}
.stat-item { display: flex; align-items: center; gap: .85rem; color: var(--c-white); flex: 1; min-width: 150px; }
.stat-icon { width: 34px; height: 34px; color: var(--c-orange); flex-shrink: 0; }
.stat-copy { display: flex; flex-direction: column; }
.stat-number { font-family: var(--font-display); font-weight: 800; font-size: 1.5rem; line-height: 1.1; }
.stat-label { font-size: .78rem; color: rgba(251,246,236,.75); }
.stat-divider { width: 1px; height: 40px; background: rgba(251,246,236,.2); }

/* ==========================================================================
   About
   ========================================================================== */

.about-section { padding: var(--section-pad-y) 1.75rem; max-width: 1320px; margin: 0 auto; }

.about-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: 4.5rem; align-items: center; }

.about-image-col { position: relative; min-height: 420px; }
.about-img { border-radius: 1.25rem; box-shadow: var(--shadow-card); object-fit: cover; position: absolute; }
.about-img-main { width: 62%; height: 320px; top: 0; left: 0; z-index: 1; }
.about-img-top { width: 46%; height: 200px; top: -1.5rem; right: 0; z-index: 2; border: 6px solid var(--c-cream); }
.about-img-bottom { width: 42%; height: 190px; bottom: -1.5rem; right: 8%; z-index: 2; border: 6px solid var(--c-cream); }

.about-badge {
  position: absolute; left: 46%; top: 42%; transform: translate(-50%, -50%);
  width: 150px; height: 150px; border-radius: 50%; background: var(--c-cream);
  border: 2px dashed var(--c-orange); box-shadow: var(--shadow-soft);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: .35rem; z-index: 3; padding: 1rem;
}
.about-badge-icon { width: 26px; height: 26px; color: var(--c-orange); }
.about-badge span { font-family: var(--font-display); font-weight: 800; color: var(--c-green); font-size: .92rem; line-height: 1.2; }

.about-text-col .section-heading { max-width: 20ch; }

.values-list { list-style: none; margin: 1.5rem 0 2rem; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem 1.5rem; }
.value-item { display: flex; align-items: flex-start; gap: .75rem; }
.value-icon {
  width: 42px; height: 42px; flex-shrink: 0; border-radius: 50%;
  background: var(--c-cream-alt); color: var(--c-green);
  display: flex; align-items: center; justify-content: center;
}
.value-icon svg { width: 20px; height: 20px; }
.value-copy { display: flex; flex-direction: column; font-size: .85rem; color: var(--c-gray); line-height: 1.4; }
.value-copy strong { color: var(--c-charcoal); font-family: var(--font-body); font-size: .95rem; font-weight: 700; margin-bottom: 1px; }

/* ==========================================================================
   Causes
   ========================================================================== */

.causes-section { padding: var(--section-pad-y) 1.75rem 0; max-width: 1320px; margin: 0 auto; }

.causes-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem; }

.cause-card {
  background: var(--c-white); border-radius: var(--radius-card); padding: 2.1rem 1.85rem;
  box-shadow: var(--shadow-soft); transition: transform .2s ease, box-shadow .2s ease;
  border: 1px solid var(--c-border);
}
.cause-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card); border-color: transparent; }

.cause-icon {
  width: 56px; height: 56px; border-radius: 1rem; background: var(--c-cream-alt);
  color: var(--c-green); display: flex; align-items: center; justify-content: center;
  margin-bottom: 1.25rem;
}
.cause-icon svg { width: 28px; height: 28px; }

.cause-title { font-family: var(--font-display); font-weight: 700; font-size: 1.15rem; color: var(--c-green); margin-bottom: .6rem; }
.cause-desc { color: var(--c-gray); font-size: .9rem; line-height: 1.65; margin-bottom: 1.1rem; }

.cause-link {
  display: inline-flex; align-items: center; gap: .4rem; font-size: .85rem; font-weight: 700;
  color: var(--c-orange); text-decoration: none;
}
.cause-link svg { width: 15px; height: 15px; transition: transform .18s ease; }
.cause-link:hover svg { transform: translateX(3px); }

/* Projects */
.projects-block { margin-top: 6rem; }
.projects-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; margin-bottom: 2.5rem; flex-wrap: wrap; }
.projects-lead { margin-bottom: 1.5rem; }

.carousel-arrows { display: flex; gap: .75rem; }
.carousel-arrow {
  width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--c-border);
  background: var(--c-white); color: var(--c-green); cursor: pointer;
  display: flex; align-items: center; justify-content: center; transition: background .18s ease, color .18s ease;
}
.carousel-arrow svg { width: 18px; height: 18px; }
.carousel-arrow:hover { background: var(--c-green); color: var(--c-white); }

.projects-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }
.project-card { background: var(--c-white); border-radius: var(--radius-card); overflow: hidden; box-shadow: var(--shadow-soft); border: 1px solid var(--c-border); transition: transform .2s ease, box-shadow .2s ease; }
.project-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-card); }
.project-img { width: 100%; height: 170px; object-fit: cover; }
.project-body { padding: 1.4rem; }
.project-tag {
  display: inline-block; font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--c-orange); margin-bottom: .5rem;
}
.project-title { font-family: var(--font-display); font-weight: 700; font-size: 1.05rem; color: var(--c-green); margin-bottom: .5rem; line-height: 1.3; }
.project-desc { color: var(--c-gray); font-size: .85rem; line-height: 1.6; margin-bottom: .9rem; }

/* Impact banner */
.impact-banner { position: relative; margin-top: 6rem; border-radius: 0; overflow: hidden; isolation: isolate; }
.impact-banner-bg {
  position: absolute; inset: 0;
  background:
    linear-gradient(rgba(15,42,29,.88), rgba(15,42,29,.92)),
    url('https://images.pexels.com/photos/6647483/pexels-photo-6647483.jpeg?auto=compress&cs=tinysrgb&w=1600') center/cover no-repeat;
  z-index: -1;
}
.impact-banner-inner { max-width: 1100px; margin: 0 auto; padding: 5rem 1.75rem; text-align: center; }
.impact-banner-heading { font-family: var(--font-display); font-weight: 800; color: var(--c-white); font-size: clamp(1.8rem, 3vw, 2.4rem); margin-bottom: 3rem; }

.impact-stats-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.5rem; }
.impact-stat { display: flex; flex-direction: column; align-items: center; gap: .6rem; color: var(--c-white); }
.impact-icon { width: 34px; height: 34px; color: var(--c-orange); }
.impact-number { font-family: var(--font-display); font-weight: 800; font-size: 1.75rem; }
.impact-label { font-size: .8rem; color: rgba(251,246,236,.75); text-align: center; }

/* ==========================================================================
   Events
   ========================================================================== */

.events-section { padding: var(--section-pad-y) 1.75rem; max-width: 1320px; margin: 0 auto; }

.events-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.75rem; }

.event-card {
  display: flex; gap: 1.5rem; background: var(--c-white); border-radius: var(--radius-card);
  padding: 1.75rem; box-shadow: var(--shadow-soft); border: 1px solid var(--c-border);
  transition: transform .2s ease, box-shadow .2s ease;
}
.event-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card); }

.event-date {
  flex-shrink: 0; width: 78px; height: 78px; border-radius: 1rem; background: var(--c-green);
  color: var(--c-white); display: flex; flex-direction: column; align-items: center; justify-content: center;
}
.event-day { font-family: var(--font-display); font-weight: 800; font-size: 1.6rem; line-height: 1; }
.event-month { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: var(--c-orange); margin-top: .2rem; }

.event-title { font-family: var(--font-display); font-weight: 700; color: var(--c-green); font-size: 1.1rem; margin: .3rem 0 .75rem; line-height: 1.3; }

.event-meta { list-style: none; margin: 0 0 1.1rem; padding: 0; display: flex; flex-direction: column; gap: .4rem; }
.event-meta li { display: flex; align-items: center; gap: .5rem; font-size: .82rem; color: var(--c-gray); }
.event-meta svg { width: 16px; height: 16px; color: var(--c-orange); flex-shrink: 0; }

/* ==========================================================================
   Gallery
   ========================================================================== */

.gallery-section { padding: var(--section-pad-y) 1.75rem; max-width: 1320px; margin: 0 auto; }

.gallery-filters { display: flex; flex-wrap: wrap; justify-content: center; gap: .65rem; margin-bottom: 2.75rem; }
.gallery-filter-btn {
  font-family: var(--font-body); font-size: .82rem; font-weight: 600; color: var(--c-gray);
  background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--radius-pill);
  padding: .55rem 1.2rem; cursor: pointer; transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.gallery-filter-btn:hover { border-color: var(--c-green); color: var(--c-green); }
.gallery-filter-btn.is-active { background: var(--c-green); color: var(--c-white); border-color: var(--c-green); }

.gallery-grid { display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: 130px; gap: .9rem; margin-bottom: 3rem; }
.gallery-img { width: 100%; height: 100%; object-fit: cover; border-radius: .85rem; transition: transform .35s ease, opacity .35s ease; cursor: pointer; }
.gallery-img:hover { transform: scale(1.03); }
.gallery-grid > :nth-child(1) { grid-column: span 2; grid-row: span 2; }
.gallery-grid > :nth-child(6) { grid-column: span 2; grid-row: span 2; }
.gallery-img.is-hidden { display: none; }

/* Testimonials */
.testimonials-block { text-align: center; margin-top: 5.5rem; }
.testimonials-block .section-heading { margin: 0 auto 3rem; }

.testimonials-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem; text-align: left; }
.testimonial-card {
  background: var(--c-white); border-radius: var(--radius-card); padding: 2rem;
  box-shadow: var(--shadow-soft); border: 1px solid var(--c-border); margin: 0;
}
.quote-mark { width: 32px; height: 32px; color: var(--c-orange); opacity: .5; margin-bottom: .75rem; }
.testimonial-quote { color: var(--c-gray); font-size: .92rem; line-height: 1.7; font-style: normal; margin: 0 0 1.5rem; }
.testimonial-author { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.testimonial-avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; }
.testimonial-name { display: block; font-weight: 700; color: var(--c-charcoal); font-size: .88rem; }
.testimonial-role { display: block; font-size: .76rem; color: var(--c-gray); }
.star-rating { margin-left: auto; color: var(--c-orange); letter-spacing: 2px; font-size: .85rem; }

.testimonial-dots { display: flex; justify-content: center; gap: .5rem; margin-top: 2.5rem; }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--c-border); border: none; padding: 0; cursor: pointer; }
.dot.is-active { background: var(--c-orange); width: 24px; border-radius: var(--radius-pill); transition: width .2s ease; }

/* ==========================================================================
   Contact
   ========================================================================== */

.contact-section { padding: var(--section-pad-y) 1.75rem; max-width: 1320px; margin: 0 auto; }

.contact-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 3rem; align-items: stretch; }

.contact-info-list { list-style: none; margin: 0 0 1.75rem; padding: 0; display: flex; flex-direction: column; gap: 1.25rem; }
.contact-info-list li { display: flex; align-items: flex-start; gap: 1rem; }
.contact-info-icon {
  width: 46px; height: 46px; flex-shrink: 0; border-radius: 50%; background: var(--c-green);
  color: var(--c-orange); display: flex; align-items: center; justify-content: center;
}
.contact-info-icon svg { width: 21px; height: 21px; }
.contact-info-list span span { display: flex; flex-direction: column; font-size: .92rem; color: var(--c-gray); line-height: 1.5; }
.contact-info-list strong { color: var(--c-charcoal); font-size: .95rem; font-weight: 700; margin-bottom: 1px; }

.contact-map { border-radius: var(--radius-card); overflow: hidden; box-shadow: var(--shadow-soft); border: 1px solid var(--c-border); height: 260px; }
.contact-map iframe { width: 100%; height: 100%; border: 0; }

.contact-form-card {
  background: var(--c-white); border-radius: var(--radius-card); padding: 2.25rem;
  box-shadow: var(--shadow-card); border: 1px solid var(--c-border); height: 100%;
}
.form-card-heading { font-family: var(--font-display); font-weight: 700; color: var(--c-green); font-size: 1.3rem; margin-bottom: 1.5rem; }

.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-bottom: 1.25rem; }
.form-field { display: flex; flex-direction: column; gap: .4rem; margin-bottom: 1.25rem; }
.form-row .form-field { margin-bottom: 0; }
.form-field label { font-size: .82rem; font-weight: 600; color: var(--c-charcoal); }
.form-field input, .form-field textarea {
  font-family: var(--font-body); font-size: .92rem; padding: .75rem .95rem;
  border: 1px solid var(--c-border); border-radius: .7rem; background: var(--c-cream);
  color: var(--c-charcoal); resize: vertical;
}
.form-field input::placeholder, .form-field textarea::placeholder { color: #9AA39C; }
.form-field input:focus, .form-field textarea:focus { outline: none; border-color: var(--c-orange); background: var(--c-white); }

.form-submit-btn { width: 100%; justify-content: center; margin-top: .25rem; }
.form-note { font-size: .76rem; color: var(--c-gray); text-align: center; margin-top: .9rem; }

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer { background: var(--c-green-deep); color: var(--c-cream); position: relative; }

.newsletter-bar { background: var(--c-green); padding: 2.5rem 1.75rem; }
.newsletter-inner {
  max-width: 1200px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between;
  gap: 2rem; flex-wrap: wrap;
}
.newsletter-copy { display: flex; align-items: center; gap: 1rem; max-width: 480px; }
.newsletter-icon {
  width: 52px; height: 52px; border-radius: 50%; background: rgba(251,246,236,.12);
  color: var(--c-orange); display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.newsletter-icon svg { width: 24px; height: 24px; }
.newsletter-eyebrow { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--c-orange); margin-bottom: .3rem; }
.newsletter-lead { font-size: .88rem; color: rgba(251,246,236,.8); line-height: 1.5; margin: 0; }

.newsletter-form { display: flex; gap: .75rem; flex-wrap: wrap; }
.newsletter-form input {
  min-width: 260px; padding: .85rem 1.1rem; border-radius: var(--radius-pill); border: 1px solid rgba(251,246,236,.25);
  background: rgba(251,246,236,.08); color: var(--c-cream); font-family: var(--font-body); font-size: .9rem;
}
.newsletter-form input::placeholder { color: rgba(251,246,236,.55); }
.newsletter-form input:focus { outline: none; border-color: var(--c-orange); background: rgba(251,246,236,.14); }

.footer-cta { position: relative; isolation: isolate; overflow: hidden; }
.footer-cta-bg {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(120deg, rgba(15,42,29,.55), rgba(15,42,29,.85)),
    url('https://images.pexels.com/photos/1072824/pexels-photo-1072824.jpeg?auto=compress&cs=tinysrgb&w=1600') center/cover no-repeat;
}
.footer-cta-inner { max-width: 780px; margin: 0 auto; text-align: center; padding: 5rem 1.75rem; }
.footer-cta-heading { font-family: var(--font-display); font-weight: 800; color: var(--c-white); font-size: clamp(1.9rem, 3.2vw, 2.6rem); margin: .5rem 0 .85rem; }
.footer-cta-copy { color: rgba(251,246,236,.8); margin-bottom: 2rem; }
.footer-cta-btns { justify-content: center; margin-bottom: 0; }

.footer-columns {
  max-width: 1320px; margin: 0 auto; padding: 4rem 1.75rem 3rem;
  display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 2.5rem;
}
.footer-col-heading { font-family: var(--font-display); font-weight: 700; color: var(--c-white); font-size: 1.05rem; margin-bottom: 1.25rem; }
.footer-link-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .75rem; }
.footer-link-list a { color: rgba(251,246,236,.72); text-decoration: none; font-size: .9rem; transition: color .18s ease; }
.footer-link-list a:hover { color: var(--c-orange); }

.logo-block-footer { margin-bottom: 1.1rem; }
.logo-text-main-footer { color: var(--c-white); }
.logo-text-sub-footer { color: var(--c-orange); }
.footer-brand-copy { color: rgba(251,246,236,.7); font-size: .88rem; line-height: 1.65; margin-bottom: 1.5rem; max-width: 32ch; }

.footer-social-list { list-style: none; display: flex; gap: .75rem; margin: 0; padding: 0; }
.footer-social-link {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(251,246,236,.25);
  color: var(--c-cream); display: flex; align-items: center; justify-content: center; text-decoration: none;
  transition: background .18s ease, border-color .18s ease;
}
.footer-social-link svg { width: 17px; height: 17px; }
.footer-social-link:hover { background: var(--c-orange); border-color: var(--c-orange); }

.footer-bottom {
  border-top: 1px solid rgba(251,246,236,.12); padding: 1.5rem 1.75rem;
  max-width: 1320px; margin: 0 auto; display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem;
  font-size: .8rem; color: rgba(251,246,236,.6);
}

/* ==========================================================================
   Back to top
   ========================================================================== */

.back-to-top {
  position: fixed; right: 1.75rem; bottom: 1.75rem; z-index: 90;
  width: 46px; height: 46px; border-radius: 50%; background: var(--c-green); color: var(--c-white);
  border: none; display: flex; align-items: center; justify-content: center; cursor: pointer;
  box-shadow: var(--shadow-soft); opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .25s ease, transform .25s ease, visibility .25s ease, background .18s ease;
}
.back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }
.back-to-top:hover { background: var(--c-orange); }
.back-to-top svg { width: 20px; height: 20px; }

/* ==========================================================================
   Responsive
   ========================================================================== */

@media (max-width: 1100px) {
  .causes-grid { grid-template-columns: repeat(2, 1fr); }
  .projects-row { grid-template-columns: repeat(2, 1fr); }
  .impact-stats-grid { grid-template-columns: repeat(3, 1fr); row-gap: 2rem; }
  .events-grid { grid-template-columns: 1fr; }
  .testimonials-grid { grid-template-columns: 1fr; }
  .footer-columns { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
  .main-nav { position: fixed; inset: 72px 0 0 0; background: var(--c-cream); padding: 2rem 1.75rem; transform: translateX(100%); transition: transform .3s ease; overflow-y: auto; }
  .main-nav.is-open { transform: translateX(0); }
  .main-nav .nav-list { flex-direction: column; align-items: flex-start; gap: 1.5rem; }
  .nav-link { font-size: 1.1rem; }
  .mobile-menu-toggle { display: flex; }

  .hero-grid { grid-template-columns: 1fr; }
  .hero-image { height: 380px; margin-top: 2rem; }
  .hero-image-shape { display: none; }
  .stats-bar { flex-direction: column; align-items: stretch; }
  .stat-divider { display: none; }

  .about-grid { grid-template-columns: 1fr; }
  .about-image-col { min-height: 380px; margin-bottom: 2rem; }

  .gallery-grid { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 110px; }
  .gallery-grid > :nth-child(1), .gallery-grid > :nth-child(6) { grid-column: span 2; grid-row: span 2; }

  .contact-grid { grid-template-columns: 1fr; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
}

@media (max-width: 640px) {
  :root { --section-pad-y: 3.75rem; }
  .header-inner { padding: .75rem 1.25rem; }
  .header-cta-group .btn-orange span { display: none; }
  .causes-grid { grid-template-columns: 1fr; }
  .projects-row { grid-template-columns: 1fr; }
  .projects-intro { flex-direction: column; align-items: flex-start; }
  .impact-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-columns { grid-template-columns: 1fr; }
  .newsletter-inner { flex-direction: column; align-items: flex-start; }
  .newsletter-form { width: 100%; }
  .newsletter-form input { flex: 1; min-width: 0; }
  .footer-bottom { flex-direction: column; }
  .about-badge { width: 110px; height: 110px; padding: .6rem; }
  .about-badge span { font-size: .78rem; }
}


body.ppwf-theme{margin:0;background:var(--c-cream);color:var(--c-charcoal)}
.ppwf-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.ppwf-form-success{color:#176b42!important}.ppwf-form-error{color:#b42318!important}
.ppwf-page-content,.ppwf-elementor-content{width:100%}
.admin-bar .site-header{top:32px}@media(max-width:782px){.admin-bar .site-header{top:46px}}


/* ========================================================================
   PPWF Scroll Animation System v1.2
   ======================================================================== */
@media (prefers-reduced-motion: no-preference){
  .ppwf-js-ready .ppwf-reveal{opacity:0;transform:translateY(28px);transition:opacity .72s cubic-bezier(.22,1,.36,1),transform .72s cubic-bezier(.22,1,.36,1);transition-delay:var(--ppwf-delay,0ms)}
  .ppwf-js-ready .ppwf-reveal.ppwf-visible{opacity:1;transform:none}
  .ppwf-js-ready .ppwf-reveal[data-anim="left"]{transform:translateX(-32px)}
  .ppwf-js-ready .ppwf-reveal[data-anim="right"]{transform:translateX(32px)}
  .ppwf-js-ready .ppwf-reveal[data-anim="zoom"]{transform:scale(.94)}
  .ppwf-js-ready .ppwf-reveal.ppwf-visible[data-anim="left"],
  .ppwf-js-ready .ppwf-reveal.ppwf-visible[data-anim="right"],
  .ppwf-js-ready .ppwf-reveal.ppwf-visible[data-anim="zoom"]{transform:none}
}
/* Elevated hover interactions across the whole site */
.btn{will-change:transform}.btn:hover{transform:translateY(-3px) scale(1.01)}
.cause-card,.project-card,.event-card,.testimonial-card{will-change:transform,box-shadow}
.project-card .project-img,.gallery-img,.about-img,.hero-image,.testimonial-avatar{transition:transform .45s cubic-bezier(.22,1,.36,1),filter .35s ease}
.project-card:hover .project-img,.gallery-img:hover,.about-image-col:hover .about-img-main,.testimonial-card:hover .testimonial-avatar{transform:scale(1.045)}
.gallery-img:hover{filter:saturate(1.08)}
.cause-card:hover .cause-icon,.event-card:hover .event-date{transform:translateY(-3px) rotate(-2deg)}
.cause-icon,.event-date{transition:transform .3s ease}
.carousel-arrow{transition:transform .22s ease,background-color .22s ease,color .22s ease}
.carousel-arrow:hover{transform:translateY(-2px)}
.stat-item,.impact-stat{transition:transform .3s ease}.stat-item:hover,.impact-stat:hover{transform:translateY(-4px)}
.form-submit-btn{position:relative;overflow:hidden}.form-submit-btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.25) 45%,transparent 70%);transform:translateX(-120%);transition:transform .7s ease}.form-submit-btn:hover::after{transform:translateX(120%)}
@media(max-width:767px){.ppwf-js-ready .ppwf-reveal{transform:translateY(20px)}.ppwf-js-ready .ppwf-reveal[data-anim="left"],.ppwf-js-ready .ppwf-reveal[data-anim="right"]{transform:translateY(20px)}}


/* ========================================================================
 * PPWF v1.3 Advanced Motion System
 * Separate motion languages for text, images, buttons, navigation, gallery
 * and footer. No external animation library required.
 * ======================================================================== */
:root{
  --ppwf-ease-out:cubic-bezier(.16,1,.3,1);
  --ppwf-ease-spring:cubic-bezier(.22,1.22,.36,1);
  --ppwf-ease-soft:cubic-bezier(.2,.8,.2,1);
}

/* TEXT: upward reveal + soft blur */
.ppwf-anim-text,.ppwf-reveal.ppwf-anim-text{
  opacity:0; transform:translate3d(0,28px,0); filter: none;
  transition:opacity .8s var(--ppwf-ease-out),transform .9s var(--ppwf-ease-out),filter .75s ease;
  transition-delay:var(--ppwf-delay,0ms);
}
.ppwf-anim-text.ppwf-visible,.ppwf-visible.ppwf-anim-text{opacity:1;transform:translate3d(0,0,0);filter: none}
.section-heading.ppwf-anim-text,.hero-heading.ppwf-anim-text{transition-duration:1s}

/* IMAGE: clip-path reveal + scale */
.ppwf-anim-image,.hero-image.ppwf-anim-image{
  opacity:0; transform:scale(1.075) translate3d(0,26px,0); clip-path:inset(10% 8% 10% 8% round 18px);
  transition:opacity 1s ease,transform 1.2s var(--ppwf-ease-out),clip-path 1.15s var(--ppwf-ease-out);
}
.ppwf-anim-image.ppwf-visible,.ppwf-visible.ppwf-anim-image{opacity:1;transform:scale(1) translate3d(0,0,0);clip-path:inset(0 0 0 0 round 18px)}
.gallery-img.ppwf-anim-gallery{
  opacity:0; transform:translate3d(0,34px,0) scale(.94) rotateZ(var(--gallery-rot,0deg));
  clip-path:inset(14% 8% 14% 8% round 14px);
  transition:opacity .7s var(--ppwf-ease-out),transform .9s var(--ppwf-ease-out),clip-path .8s var(--ppwf-ease-out),box-shadow .35s ease;
  transition-delay:var(--ppwf-delay,0ms);
}
.gallery-img.ppwf-anim-gallery.ppwf-visible{opacity:1;transform:translate3d(0,0,0) scale(1) rotateZ(0);clip-path:inset(0 0 0 0 round 14px)}
.gallery-img.ppwf-anim-gallery:hover{transform:translateY(-8px) scale(1.035)!important;box-shadow:0 25px 45px -25px rgba(15,42,29,.45);z-index:2}

/* BUTTON: spring entry + sweep highlight + lift */
.ppwf-anim-button{
  position:relative;overflow:hidden;isolation:isolate;
  opacity:0;transform:translate3d(0,18px,0) scale(.96);
  transition:opacity .65s var(--ppwf-ease-out),transform .75s var(--ppwf-ease-spring),box-shadow .3s ease,filter .3s ease;
  transition-delay:var(--ppwf-delay,0ms);
}
.ppwf-anim-button.ppwf-visible{opacity:1;transform:translate3d(0,0,0) scale(1)}
.ppwf-anim-button::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 0%,rgba(255,255,255,.28) 48%,transparent 56%);transform:translateX(-120%);transition:transform .8s ease;z-index:-1}
.ppwf-anim-button:hover::after{transform:translateX(120%)}
.ppwf-anim-button:hover{transform:translateY(-4px) scale(1.015);filter:saturate(1.08);box-shadow:0 16px 32px -18px rgba(22,60,44,.55)}
.ppwf-anim-button:active{transform:translateY(-1px) scale(.985)}

/* NAVIGATION: load stagger, animated underline and glassy scroll state */
.main-nav .nav-link,.header-cta-group .btn{opacity:0;transform:translateY(-14px);transition:opacity .55s var(--ppwf-ease-out),transform .7s var(--ppwf-ease-spring),color .25s ease}
body.ppwf-nav-ready .main-nav .nav-link,body.ppwf-nav-ready .header-cta-group .btn{opacity:1;transform:none}
.main-nav .nav-list li:nth-child(1) .nav-link{transition-delay:.08s}.main-nav .nav-list li:nth-child(2) .nav-link{transition-delay:.14s}.main-nav .nav-list li:nth-child(3) .nav-link{transition-delay:.20s}.main-nav .nav-list li:nth-child(4) .nav-link{transition-delay:.26s}.main-nav .nav-list li:nth-child(5) .nav-link{transition-delay:.32s}.main-nav .nav-list li:nth-child(6) .nav-link{transition-delay:.38s}
.main-nav .nav-link::after{height:2px;transform-origin:left center;transition:width .35s var(--ppwf-ease-out),transform .35s var(--ppwf-ease-out)}
.site-header.is-scrolled{background:rgba(251,246,236,.82);backdrop-filter: none;box-shadow:0 12px 34px -22px rgba(15,42,29,.45);transform:translateY(0)}
.site-header{transition:box-shadow .35s ease,background-color .35s ease,backdrop-filter .35s ease}

/* CARDS: different hover language */
.cause-card,.project-card,.event-card,.testimonial-card,.impact-stat{transition:transform .45s var(--ppwf-ease-spring),box-shadow .4s ease,border-color .35s ease;will-change:transform}
.cause-card:hover,.project-card:hover,.event-card:hover,.testimonial-card:hover{transform:translateY(-10px) rotateX(.7deg)}
.project-card .project-img{transition:transform .8s var(--ppwf-ease-out),filter .45s ease}.project-card:hover .project-img{transform:scale(1.06);filter:saturate(1.08)}
.event-date{transition:transform .45s var(--ppwf-ease-spring),box-shadow .4s ease}.event-card:hover .event-date{transform:rotate(-4deg) scale(1.05);box-shadow:0 14px 28px -18px rgba(15,42,29,.65)}
.testimonial-card:hover .quote-mark{transform:translateY(-4px) rotate(-6deg)}
.quote-mark{transition:transform .35s var(--ppwf-ease-spring)}

/* FOOTER: rising columns, parallax CTA, social buttons */
.ppwf-anim-footer{position:relative;overflow:hidden}
.ppwf-anim-footer::before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,transparent,var(--c-orange),transparent);transform:scaleX(.15);transform-origin:center;transition:transform 1.2s var(--ppwf-ease-out)}
.ppwf-anim-footer.ppwf-footer-visible::before{transform:scaleX(1)}
.ppwf-footer-column,.ppwf-footer-link,.ppwf-footer-social,.ppwf-footer-reveal{opacity:0;transform:translate3d(0,34px,0);transition:opacity .8s var(--ppwf-ease-out),transform .9s var(--ppwf-ease-out);transition-delay:var(--ppwf-delay,0ms)}
.ppwf-anim-footer.ppwf-footer-visible .ppwf-footer-column,.ppwf-anim-footer.ppwf-footer-visible .ppwf-footer-link,.ppwf-anim-footer.ppwf-footer-visible .ppwf-footer-social,.ppwf-anim-footer.ppwf-footer-visible .ppwf-footer-reveal{opacity:1;transform:none}
.footer-cta-bg{transition:transform 1.4s var(--ppwf-ease-out),filter 1s ease}.site-footer:hover .footer-cta-bg{transform:scale(1.045)}
.ppwf-footer-social{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;border:1px solid rgba(251,246,236,.22);border-radius:50%;text-transform:none;font-size:0;position:relative;overflow:hidden}
.ppwf-footer-social::after{content:"";position:absolute;inset:0;background:var(--c-orange);transform:scale(0);border-radius:50%;transition:transform .35s var(--ppwf-ease-spring);z-index:0}
.ppwf-footer-social::before{position:relative;z-index:1;font-size:.72rem;font-weight:700;content:attr(aria-label)}
.ppwf-footer-social:hover::after{transform:scale(1)}
.ppwf-footer-social:hover{transform:translateY(-5px) rotate(6deg);color:var(--c-green);border-color:var(--c-orange)}
.footer-link-list a{position:relative;display:inline-flex;transform:translateX(0);transition:transform .28s var(--ppwf-ease-spring),color .25s ease}
.footer-link-list a::before{content:"→";position:absolute;left:-18px;opacity:0;transform:translateX(-6px);transition:opacity .25s ease,transform .25s ease;color:var(--c-orange)}
.footer-link-list a:hover{transform:translateX(6px);color:var(--c-orange)}
.footer-link-list a:hover::before{opacity:1;transform:none}
.newsletter-form input{transition:box-shadow .3s ease,transform .3s var(--ppwf-ease-spring),border-color .3s ease}.newsletter-form input:focus{transform:translateY(-2px);box-shadow:0 14px 30px -20px rgba(240,128,30,.65);border-color:var(--c-orange)!important}

/* Section entry accent */
section.ppwf-animated-section{position:relative}
section.ppwf-animated-section::before{content:"";position:absolute;left:50%;top:0;width:86px;height:3px;background:var(--c-orange);border-radius:99px;transform:translate(-50%,-2px) scaleX(.15);opacity:.0;transition:transform .8s var(--ppwf-ease-out),opacity .6s ease}
section.ppwf-animated-section.ppwf-section-visible::before{transform:translate(-50%,-2px) scaleX(1);opacity:1}

@media (max-width:900px){
  .ppwf-anim-button:hover{transform:translateY(-2px)}
  .gallery-img.ppwf-anim-gallery:hover{transform:translateY(-4px) scale(1.02)!important}
}
@media (prefers-reduced-motion:reduce){
  .ppwf-anim-text,.ppwf-anim-image,.ppwf-anim-button,.gallery-img.ppwf-anim-gallery,.ppwf-footer-column,.ppwf-footer-link,.ppwf-footer-social,.ppwf-footer-reveal,.main-nav .nav-link,.header-cta-group .btn{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important;transition:none!important}
}


/* ========================================================================
   PPWF v1.4 — PREMIUM MOTION SYSTEM
   Word-by-word text reveal + direction-aware scroll choreography +
   magnetic buttons + tactile ripple + gallery depth + footer choreography.
   No external animation library.
   ======================================================================== */
:root{
  --ppwf-motion-ease:cubic-bezier(.16,1,.3,1);
  --ppwf-motion-spring:cubic-bezier(.2,.9,.2,1.2);
  --ppwf-motion-soft:cubic-bezier(.22,1,.36,1);
}

/* Global scroll progress */
.ppwf-scroll-progress{
  position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:left center;transform:scaleX(0);
  background:linear-gradient(90deg,var(--c-orange),#ffb15f,var(--c-green));z-index:99999;pointer-events:none;
  box-shadow:0 0 18px rgba(240,128,30,.35);
}

/* Cursor spotlight — desktop only */
  position:fixed;left:0;top:0;width:280px;height:280px;border-radius:50%;
  pointer-events:none;z-index:0;opacity:0;transform:translate3d(-50%,-50%,0);
  background:radial-gradient(circle,rgba(240,128,30,.10) 0%,rgba(240,128,30,.035) 32%,transparent 68%);
  transition:opacity .35s ease;mix-blend-mode:multiply;
}

/* Word-by-word text choreography — intentionally NO blur */
.ppwf-word-animate{perspective:900px}
.ppwf-word{
  display:inline-block;white-space:pre;
  opacity:0;transform:translate3d(0,1.05em,0) rotateX(-72deg) rotateZ(-2deg);
  transform-origin:50% 100%;
  transition:opacity .65s var(--ppwf-motion-soft),transform .82s var(--ppwf-motion-soft),color .25s ease;
  transition-delay:var(--ppwf-word-delay,0ms);
  will-change:opacity,transform;
}
.ppwf-word-space{display:inline-block;white-space:pre}
.ppwf-word-animate.ppwf-word-visible .ppwf-word{opacity:1;transform:none}

/* Eyebrows get a sharper tracking reveal */
.ppwf-word-animate.ppwf-eyebrow .ppwf-word{transform:translate3d(0,.8em,0);letter-spacing:.02em}
.ppwf-word-animate.ppwf-eyebrow.ppwf-word-visible .ppwf-word{letter-spacing:inherit}

/* Scroll-direction choreography for non-text media */
.ppwf-motion-target{
  opacity:0;transform:translate3d(0,56px,0) scale(.985) rotateX(0deg);
  transform-origin:center bottom;
  transition:opacity .9s var(--ppwf-motion-soft),transform 1s var(--ppwf-motion-soft),filter .8s ease;
  will-change:opacity,transform;
}
.ppwf-motion-target.ppwf-motion-visible{opacity:1;transform:none}
.ppwf-motion-target[data-motion-side="left"]{transform:translate3d(-58px,18px,0) scale(.985)}
.ppwf-motion-target[data-motion-side="right"]{transform:translate3d(58px,18px,0) scale(.985)}
.ppwf-motion-target[data-motion-side="left"].ppwf-motion-visible,
.ppwf-motion-target[data-motion-side="right"].ppwf-motion-visible{transform:none}

/* Images: elegant masked reveal instead of blur */
.ppwf-image-motion{overflow:hidden}
.ppwf-image-motion img,.ppwf-image-motion > .project-img,.ppwf-image-motion > .gallery-img{
  clip-path:inset(13% 9% 13% 9% round 18px);transform:scale(1.10);opacity:.001;
  transition:clip-path 1.05s var(--ppwf-motion-soft),transform 1.35s var(--ppwf-motion-soft),opacity .45s ease;
}
.ppwf-image-motion.ppwf-motion-visible img,.ppwf-image-motion.ppwf-motion-visible > .project-img,.ppwf-image-motion.ppwf-motion-visible > .gallery-img{
  clip-path:inset(0 round 0px);transform:scale(1);opacity:1;
}

/* Card language: soft lift + directional shadow + shine */
.cause-card,.project-card,.event-card,.testimonial-card{
  transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,box-shadow;
}
.ppwf-premium-card{
  position:relative;overflow:hidden;isolation:isolate;
  transition:transform .55s var(--ppwf-motion-spring),box-shadow .55s var(--ppwf-motion-soft),border-color .35s ease;
}
.ppwf-premium-card::before{
  content:"";position:absolute;inset:-1px;pointer-events:none;z-index:0;opacity:0;
  background:linear-gradient(115deg,transparent 25%,rgba(255,255,255,.34) 47%,transparent 66%);
  transform:translateX(-120%);transition:opacity .3s ease,transform 1s var(--ppwf-motion-soft);
}
.ppwf-premium-card:hover{transform:translate3d(0,-10px,0) scale(1.008);box-shadow:0 28px 55px -28px rgba(15,42,29,.38)}
.ppwf-premium-card:hover::before{opacity:1;transform:translateX(120%)}
.ppwf-premium-card > *{position:relative;z-index:1}

/* Project cards: image follows pointer/hover subtly */
.project-card .project-img{transition:transform .9s var(--ppwf-motion-soft),filter .45s ease}
.project-card:hover .project-img{transform:scale(1.075);filter:saturate(1.12)}

/* Gallery: cinematic reveal + hover depth + caption veil */
.gallery-img{transform-origin:center center;will-change:transform,filter;}
.gallery-img-wrap{position:relative;overflow:hidden;border-radius:.85rem;isolation:isolate}
.gallery-img-wrap::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  background:linear-gradient(140deg,transparent 40%,rgba(240,128,30,.20) 100%);
  opacity:0;transition:opacity .45s ease;mix-blend-mode:screen;
}
.gallery-img-wrap:hover::after{opacity:1}
.gallery-img-wrap:hover .gallery-img{transform:scale(1.07);filter:saturate(1.1) contrast(1.02)}

/* Buttons: magnetic + sheen + click depression */
.ppwf-magnetic{position:relative;overflow:hidden;transform:translate3d(0,0,0);transition:transform .32s var(--ppwf-motion-spring),box-shadow .35s ease,filter .35s ease}
.ppwf-magnetic::after{
  content:"";position:absolute;inset:-35%;pointer-events:none;
  background:linear-gradient(110deg,transparent 36%,rgba(255,255,255,.34) 49%,transparent 61%);
  transform:translateX(-115%) rotate(8deg);transition:transform .85s var(--ppwf-motion-soft);
}
.ppwf-magnetic:hover{filter:saturate(1.07);box-shadow:0 18px 34px -21px rgba(22,60,44,.68)}
.ppwf-magnetic:hover::after{transform:translateX(115%) rotate(8deg)}
.ppwf-ripple{position:absolute;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.5);pointer-events:none;transform:translate(-50%,-50%) scale(0);animation:ppwf-ripple .7s ease-out forwards;z-index:3}
@keyframes ppwf-ripple{to{transform:translate(-50%,-50%) scale(15);opacity:0}}

/* Nav: each item glides in, underline grows from center, active dot */
.ppwf-nav-item{position:relative}
.ppwf-nav-item .nav-link::before{
  content:"";position:absolute;left:50%;bottom:-7px;width:5px;height:5px;border-radius:50%;
  background:var(--c-orange);transform:translateX(-50%) scale(0);transition:transform .35s var(--ppwf-motion-spring);
}
.ppwf-nav-item .nav-link:hover::before,.ppwf-nav-item .nav-link.is-active::before{transform:translateX(-50%) scale(1)}
.ppwf-nav-item .nav-link::after{transform:scaleX(.2);transform-origin:center;transition:transform .45s var(--ppwf-motion-soft),width .45s var(--ppwf-motion-soft)}
.ppwf-nav-item .nav-link:hover::after,.ppwf-nav-item .nav-link.is-active::after{width:100%;transform:scaleX(1)}

/* Header gets a premium depth state */
.site-header{transition:background-color .5s ease,box-shadow .5s ease,backdrop-filter .5s ease,transform .35s ease}
.site-header.is-scrolled{background:rgba(251,246,236,.76);backdrop-filter: none;box-shadow:0 16px 36px -30px rgba(15,42,29,.55)}
.site-header.ppwf-nav-hidden{transform:translateY(-110%)}

/* Section divider motion */
.ppwf-section-motion{position:relative}
.ppwf-section-motion::before{
  content:"";position:absolute;left:50%;top:0;width:84px;height:2px;border-radius:99px;background:var(--c-orange);
  transform:translate(-50%,-1px) scaleX(.2);opacity:0;transition:transform 1.1s var(--ppwf-motion-soft),opacity .55s ease;
}
.ppwf-section-motion.ppwf-section-visible::before{transform:translate(-50%,-1px) scaleX(1);opacity:.7}

/* Contact inputs: tactile focus */
.contact-form-card input,.contact-form-card textarea,.newsletter-form input{
  transition:border-color .3s ease,box-shadow .4s ease,transform .35s var(--ppwf-motion-spring),background-color .3s ease;
}
.contact-form-card input:focus,.contact-form-card textarea:focus,.newsletter-form input:focus{
  transform:translateY(-2px);box-shadow:0 16px 30px -22px rgba(240,128,30,.85);border-color:var(--c-orange)!important;background:#fffdf8;
}

/* Footer gets its own dramatic but restrained choreography */
.site-footer{position:relative;overflow:hidden}
.site-footer::after{
  content:"";position:absolute;left:-15%;right:-15%;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--c-orange),transparent);
  transform:translateX(-28%);opacity:0;transition:transform 1.2s var(--ppwf-motion-soft),opacity .6s ease;
}
.site-footer.ppwf-footer-visible::after{transform:none;opacity:1}
.footer-cta-bg{transform:scale(1.04);will-change:transform}
.ppwf-footer-column,.ppwf-footer-link,.ppwf-footer-social,.ppwf-footer-reveal{will-change:opacity,transform}
.ppwf-footer-link:hover{transform:translateX(7px)!important}
.ppwf-footer-social{transition:transform .5s var(--ppwf-motion-spring),background-color .35s ease,border-color .35s ease,box-shadow .35s ease}
.ppwf-footer-social:hover{transform:translateY(-7px) rotate(7deg) scale(1.08);box-shadow:0 16px 28px -20px rgba(240,128,30,.9)}

/* Scroll up / down hint on sections */
.ppwf-scroll-pulse{animation:ppwf-pulse 1.15s var(--ppwf-motion-soft)}
@keyframes ppwf-pulse{0%{transform:translateY(8px);opacity:.3}100%{transform:none;opacity:1}}

/* Back to top becomes a floating control */
#back-to-top{transition:opacity .4s ease,visibility .4s ease,transform .45s var(--ppwf-motion-spring),background-color .3s ease,box-shadow .3s ease}
#back-to-top:hover{transform:translateY(-7px) scale(1.06);box-shadow:0 18px 32px -22px rgba(240,128,30,.9)}

@media (max-width:900px){
  .ppwf-word{transition-duration:.52s;transform:translateY(.8em) rotateX(-35deg)}
  .ppwf-premium-card:hover{transform:translateY(-5px) scale(1.002)}
}
@media (prefers-reduced-motion:reduce){
  .ppwf-word,.ppwf-motion-target{opacity:1!important;transform:none!important;transition:none!important}
  .ppwf-word-animate{perspective:none}
}


/* v1.4 nav choreography */
@media (prefers-reduced-motion:no-preference){
  body.ppwf-v14-ready .main-nav .nav-list li .nav-link,
  body.ppwf-v14-ready .header-cta-group .btn{
    animation:ppwf-nav-in .9s var(--ppwf-motion-spring) both;
    animation-delay:var(--ppwf-nav-delay,80ms);
  }
  @keyframes ppwf-nav-in{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
}


/* ========================================================================
   PPWF v1.5 — EDITORIAL PREMIUM MOTION
   Text is NEVER blurred. Words animate individually using a masked,
   editorial rise/rotate reveal. Separate motion for media, buttons,
   cards, navigation and footer.
   ======================================================================== */
:root{
  --ppwf-v15-ease:cubic-bezier(.16,1,.3,1);
  --ppwf-v15-spring:cubic-bezier(.2,1.35,.25,1);
}

/* Kill the old parent text-blur animation from earlier versions. */
.ppwf-anim-text,.ppwf-reveal.ppwf-anim-text{
  filter:none !important;
  opacity:1 !important;
  transform:none !important;
  transition:none !important;
}

/* Editorial word reveal: mask + lift + slight 3D rotation, no blur. */
.ppwf-word-animate{
  perspective:1100px;
  transform-style:preserve-3d;
}
.ppwf-word{
  display:inline-block;
  white-space:pre;
  opacity:0;
  transform:translate3d(var(--ppwf-word-x,0px),1.05em,0) rotateX(-58deg) rotateZ(var(--ppwf-word-r,0deg)) scale(.94);
  transform-origin:50% 100%;
  clip-path:inset(0 0 100% 0);
  will-change:opacity,transform,clip-path;
  transition:
    opacity .46s var(--ppwf-v15-ease),
    transform .82s var(--ppwf-v15-spring),
    clip-path .72s var(--ppwf-v15-ease);
  transition-delay:var(--ppwf-word-delay,0ms);
}
.ppwf-word-animate.ppwf-word-visible .ppwf-word{
  opacity:1;
  transform:translate3d(0,0,0) rotateX(0deg) rotateZ(0deg) scale(1);
  clip-path:inset(0 0 0 0);
}

/* Headings feel more deliberate than body copy. */
.section-heading .ppwf-word,
.hero-heading .ppwf-word,
.footer-cta-heading .ppwf-word{
  transition-duration:.95s;
}
.section-heading .ppwf-word{transition-delay:calc(var(--ppwf-word-delay,0ms) * .78)}
.hero-heading .ppwf-word{transition-delay:calc(var(--ppwf-word-delay,0ms) * .62)}

/* Eyebrow = tracking + rise, no blur. */
.ppwf-word-animate.ppwf-eyebrow .ppwf-word{
  transform:translate3d(var(--ppwf-word-x,0px),.75em,0) rotateZ(-1.5deg) scale(.96);
  clip-path:inset(0 0 80% 0);
}
.ppwf-word-animate.ppwf-eyebrow.ppwf-word-visible .ppwf-word{
  transform:translate3d(0,0,0) rotateZ(0) scale(1);
  clip-path:inset(0 0 0 0);
}

/* Direction-aware motion: entering from above feels different on scroll-up. */
.ppwf-word-animate[data-scroll-direction="up"] .ppwf-word{
  transform:translate3d(var(--ppwf-word-x,0px),-1.0em,0) rotateX(52deg) rotateZ(calc(var(--ppwf-word-r,0deg) * -1)) scale(.94);
}
.ppwf-word-animate.ppwf-word-visible[data-scroll-direction="up"] .ppwf-word{
  transform:translate3d(0,0,0) rotateX(0) rotateZ(0) scale(1);
}

/* Section intro marker — understated premium cue. */
section.ppwf-section-motion::after{
  content:"";
  position:absolute;
  left:50%; bottom:auto; top:0;
  width:64px; height:2px;
  background:linear-gradient(90deg,transparent,var(--c-orange),transparent);
  transform:translate(-50%,-1px) scaleX(.25);
  opacity:0;
  transition:transform .9s var(--ppwf-v15-ease),opacity .45s ease;
}
section.ppwf-section-motion.ppwf-section-visible::after{
  transform:translate(-50%,-1px) scaleX(1);
  opacity:.85;
}

/* Cards get a layered lift instead of a generic hover. */
.ppwf-premium-card{
  transition:transform .65s var(--ppwf-v15-spring),box-shadow .55s var(--ppwf-v15-ease),border-color .35s ease;
}
.ppwf-premium-card:hover{
  transform:translate3d(0,-12px,0) scale(1.012);
  box-shadow:0 30px 60px -34px rgba(15,42,29,.42),0 8px 18px -14px rgba(240,128,30,.22);
}
.ppwf-premium-card::before{
  transition:opacity .28s ease,transform 1.15s var(--ppwf-v15-ease);
}

/* Buttons: entry, magnetic hover, sheen and click compression. */
.ppwf-magnetic{
  transition:transform .35s var(--ppwf-v15-spring),box-shadow .35s ease,filter .3s ease;
}
.ppwf-magnetic:hover{
  filter:saturate(1.07);
  box-shadow:0 18px 32px -21px rgba(15,42,29,.58);
}
.ppwf-magnetic:active{transform:scale(.965) !important}

/* Navigation: each item behaves like a separate object. */
.main-nav .nav-link{
  transition:color .25s ease,transform .5s var(--ppwf-v15-spring);
}
.main-nav .nav-link::after{
  transform-origin:center;
  transition:width .45s var(--ppwf-v15-ease),transform .45s var(--ppwf-v15-ease);
}
.main-nav .nav-link:hover{transform:translateY(-2px)}
.site-header.is-scrolled{box-shadow:0 18px 40px -30px rgba(15,42,29,.5)}

/* Images: mask opening + restrained scale. */
.ppwf-image-motion img,
.ppwf-image-motion > .project-img,
.ppwf-image-motion > .gallery-img{
  clip-path:inset(10% 12% 10% 12% round 22px);
  transform:scale(1.075);
  transition:clip-path 1.05s var(--ppwf-v15-ease),transform 1.18s var(--ppwf-v15-ease),opacity .45s ease;
}
.ppwf-image-motion.ppwf-motion-visible img,
.ppwf-image-motion.ppwf-motion-visible > .project-img,
.ppwf-image-motion.ppwf-motion-visible > .gallery-img{
  clip-path:inset(0 round 0);
  transform:scale(1);
}

/* Gallery uploaded by the user automatically gets the same motion. */
.gallery-img-wrap{overflow:hidden;perspective:900px}
.gallery-img-wrap .gallery-img{
  transition:transform 1.0s var(--ppwf-v15-ease),filter .4s ease,clip-path .85s var(--ppwf-v15-ease);
}
.gallery-img-wrap:hover .gallery-img{
  transform:scale(1.085) translateY(-2px);
  filter:saturate(1.08) contrast(1.025);
}

/* Footer: large CTA arrives first, columns follow in a cascade. */
.site-footer.ppwf-anim-footer .footer-cta-inner{
  transform:translateY(28px);
  opacity:0;
  transition:opacity .8s var(--ppwf-v15-ease),transform 1s var(--ppwf-v15-ease);
}
.site-footer.ppwf-anim-footer.ppwf-footer-visible .footer-cta-inner{
  transform:none;opacity:1;
}
.site-footer.ppwf-anim-footer .ppwf-footer-column:nth-child(1){--ppwf-delay:80ms}
.site-footer.ppwf-anim-footer .ppwf-footer-column:nth-child(2){--ppwf-delay:150ms}
.site-footer.ppwf-anim-footer .ppwf-footer-column:nth-child(3){--ppwf-delay:220ms}
.site-footer.ppwf-anim-footer .ppwf-footer-column:nth-child(4){--ppwf-delay:290ms}

@media(max-width:900px){
  .ppwf-word{transform:translate3d(0,.8em,0) rotateX(-35deg) scale(.97)}
  .ppwf-word-animate[data-scroll-direction="up"] .ppwf-word{transform:translate3d(0,-.8em,0) rotateX(35deg) scale(.97)}
  .ppwf-premium-card:hover{transform:translateY(-6px)}
}
@media(prefers-reduced-motion:reduce){
  .ppwf-word,.ppwf-anim-text{opacity:1!important;transform:none!important;clip-path:none!important;transition:none!important;filter:none!important}
}

/* ========================================================================
   PPWF FINAL 2.0 — premium motion layer
   No blur effects. No text filter. No backdrop blur.
   ======================================================================== */
:root{
  --ppwf-motion:cubic-bezier(.16,1,.3,1);
  --ppwf-spring:cubic-bezier(.2,1.15,.25,1);
}
body.ppwf-theme{overflow-x:hidden}
.site-header{backdrop-filter:none!important;transition:transform .42s var(--ppwf-motion),box-shadow .35s ease,background-color .35s ease!important}
.site-header.ppwf-header-up{transform:translateY(-100%)}
.site-header.ppwf-header-down{transform:translateY(0)}
.ppwf-scroll-progress{position:fixed;left:0;top:0;width:100%;height:3px;background:var(--c-orange);transform-origin:left center;transform:scaleX(0);z-index:99999;pointer-events:none;box-shadow:0 0 18px rgba(240,128,30,.32)}

/* word-by-word editorial motion — crisp, not blurred */
.ppwf-word-animate{perspective:1200px;transform-style:preserve-3d}
.ppwf-word{display:inline-block;opacity:0;white-space:pre;transform:translate3d(var(--ppwf-word-x,0),1.08em,0) rotateX(-58deg) rotateZ(var(--ppwf-word-r,0deg)) scale(.96);transform-origin:50% 100%;clip-path:inset(0 0 100% 0);will-change:transform,opacity,clip-path;transition:opacity .45s var(--ppwf-motion),transform .86s var(--ppwf-spring),clip-path .78s var(--ppwf-motion);transition-delay:var(--ppwf-word-delay,0ms)}
.ppwf-word-animate.ppwf-word-visible .ppwf-word{opacity:1;transform:translate3d(0,0,0) rotateX(0) rotateZ(0) scale(1);clip-path:inset(0 0 0 0)}
.ppwf-word-animate[data-scroll-direction=up] .ppwf-word{transform:translate3d(var(--ppwf-word-x,0),-1.08em,0) rotateX(52deg) rotateZ(calc(var(--ppwf-word-r,0deg)*-1)) scale(.96)}
.ppwf-word-animate[data-scroll-direction=up].ppwf-word-visible .ppwf-word{transform:translate3d(0,0,0) rotateX(0) rotateZ(0) scale(1)}
.ppwf-word-space{white-space:pre}

/* Generic motion targets */
.ppwf-motion-target{opacity:0;transform:translate3d(0,44px,0) scale(.985);will-change:opacity,transform;transition:opacity .8s var(--ppwf-motion),transform .95s var(--ppwf-spring)}
.ppwf-motion-target.ppwf-motion-visible{opacity:1;transform:translate3d(0,var(--ppwf-parallax-y,0),0) scale(1)}

/* media reveal + hover */
.ppwf-image-motion,.gallery-img-wrap{overflow:hidden}
.ppwf-image-motion img,.gallery-img-wrap .gallery-img{transition:transform 1.15s var(--ppwf-motion),clip-path 1.05s var(--ppwf-motion),opacity .55s ease;clip-path:inset(8% 10% 8% 10% round 24px);transform:scale(1.08)}
.ppwf-image-motion.ppwf-motion-visible img,.gallery-img-wrap .gallery-img.ppwf-motion-visible,.gallery-img-wrap .ppwf-gallery-visible{clip-path:inset(0 round 0);transform:scale(1)}
.gallery-img-wrap:hover .gallery-img{transform:scale(1.065) translateY(-3px);transition-duration:.55s}
.gallery-img.ppwf-gallery-visible{animation:ppwf-gallery-enter .82s var(--ppwf-motion) both;animation-delay:var(--ppwf-gallery-delay,0ms)}
@keyframes ppwf-gallery-enter{from{opacity:0;transform:scale(1.08) translateY(22px) rotate(.5deg);clip-path:inset(10% 12% 10% 12% round 22px)}to{opacity:1;transform:scale(1) translateY(0) rotate(0);clip-path:inset(0 round 0)}}
.ppwf-image-failed{opacity:.18}

/* premium cards */
.ppwf-premium-card{transform-style:preserve-3d;transition:transform .58s var(--ppwf-spring),box-shadow .48s var(--ppwf-motion),border-color .28s ease;will-change:transform}
.ppwf-premium-card.ppwf-motion-visible{transform:translate3d(0,0,0) rotateX(var(--ppwf-tilt-x,0)) rotateY(var(--ppwf-tilt-y,0))}
.ppwf-premium-card:hover{box-shadow:0 28px 60px -34px rgba(15,42,29,.46),0 10px 22px -16px rgba(240,128,30,.18);border-color:transparent}
.cause-card::after,.project-card::after,.event-card::after,.testimonial-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.32) 44%,transparent 58%);transform:translateX(-120%);transition:transform .9s var(--ppwf-motion)}
.cause-card:hover::after,.project-card:hover::after,.event-card:hover::after,.testimonial-card:hover::after{transform:translateX(120%)}

/* buttons — hover, magnetic drift and click ripple */
.btn,.carousel-arrow,.gallery-filter-btn,.footer-social-link{position:relative;overflow:hidden;isolation:isolate;transition:transform .38s var(--ppwf-spring),box-shadow .35s ease,background-color .28s ease,color .28s ease,border-color .28s ease}
.btn{transform:translate3d(var(--ppwf-btn-x,0),var(--ppwf-btn-y,0),0)}
.btn::after{content:"";position:absolute;top:-20%;left:-130%;width:48%;height:140%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);transition:left .8s var(--ppwf-motion);pointer-events:none}
.btn:hover::after{left:135%}
.btn:active{transform:translate3d(0,1px,0) scale(.97)!important}
.ppwf-ripple{position:absolute;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.42);transform:translate(-50%,-50%) scale(0);animation:ppwf-ripple .62s var(--ppwf-motion) forwards;pointer-events:none;z-index:2}
@keyframes ppwf-ripple{to{transform:translate(-50%,-50%) scale(28);opacity:0}}

/* navigation */
.main-nav .nav-list li{opacity:0;transform:translateY(-12px)}
body.ppwf-nav-ready .main-nav .nav-list li{animation:ppwf-nav-enter .72s var(--ppwf-spring) forwards;animation-delay:var(--ppwf-nav-delay)}
@keyframes ppwf-nav-enter{to{opacity:1;transform:none}}
.main-nav .nav-link::after{height:3px;transform:scaleX(.45);transform-origin:center;transition:transform .42s var(--ppwf-motion),width .42s var(--ppwf-motion)}
.main-nav .nav-link:hover::after,.main-nav .nav-link.is-active::after{transform:scaleX(1)}

/* footer — always visible and independently animated */
.site-footer{display:block!important;position:relative;overflow:hidden}
.site-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--c-orange),transparent);transform:scaleX(.15);transform-origin:center;transition:transform 1.1s var(--ppwf-motion)}
.site-footer.ppwf-footer-visible::before{transform:scaleX(1)}
.site-footer .footer-cta-inner,.site-footer .footer-columns,.site-footer .footer-bottom,.site-footer .newsletter-inner{opacity:0;transform:translateY(34px);transition:opacity .85s var(--ppwf-motion),transform .95s var(--ppwf-spring)}
.site-footer.ppwf-footer-visible .footer-cta-inner,.site-footer.ppwf-footer-visible .footer-columns,.site-footer.ppwf-footer-visible .footer-bottom,.site-footer.ppwf-footer-visible .newsletter-inner{opacity:1;transform:none}
.site-footer .footer-columns{transition-delay:.16s}.site-footer .footer-bottom{transition-delay:.28s}.site-footer .newsletter-inner{transition-delay:.06s}
.ppwf-footer-link{opacity:0;transform:translateX(-14px);transition:opacity .55s var(--ppwf-motion),transform .65s var(--ppwf-spring);transition-delay:var(--ppwf-delay,0ms)}
.site-footer.ppwf-footer-visible .ppwf-footer-link{opacity:1;transform:none}
.ppwf-footer-social:hover{transform:translateY(-6px) rotate(6deg) scale(1.06);box-shadow:0 16px 28px -20px rgba(240,128,30,.9)}
.footer-cta-bg{transform:translate3d(0,var(--ppwf-parallax-y,0),0) scale(1.05);transition:transform .2s linear}

/* cursor spotlight on desktop */

/* no blur anywhere in final motion layer */
.ppwf-anim-text,.ppwf-word-animate,.ppwf-word{filter:none!important;text-shadow:none}

@media(max-width:900px){
  .ppwf-motion-target{transform:translateY(30px)}
  .site-header.ppwf-header-up{transform:none}
  .main-nav .nav-list li{opacity:1;transform:none}
}
@media(prefers-reduced-motion:reduce){
  .ppwf-word,.ppwf-motion-target,.ppwf-premium-card,.site-footer .footer-cta-inner,.site-footer .footer-columns,.site-footer .footer-bottom,.site-footer .newsletter-inner,.ppwf-footer-link{opacity:1!important;transform:none!important;transition:none!important;animation:none!important;clip-path:none!important}
}

/* ========================================================================
   PPWF 2.1 — premium precision cursor
   ======================================================================== */

/* ========================================================================
   PPWF 2.2 FINAL STABILITY + PRECISION MOTION OVERRIDES
   These rules intentionally make content visible by default. Animation
   only engages after JS confirms the motion engine is ready.
   ======================================================================== */

/* Layout stability */
html{scroll-behavior:smooth;scroll-padding-top:88px}
body.ppwf-theme{overflow-x:hidden}
.hero-text-col,.about-text-col,.contact-form-col,.contact-info-col{min-width:0}
.hero-heading{overflow:visible;line-height:1.07}
.hero-heading .ppwf-word,.section-heading .ppwf-word,.footer-cta-heading .ppwf-word{line-height:inherit;vertical-align:baseline}
.ppwf-word-animate br{display:block}

/* Never hide critical media before motion JS is ready. */
.ppwf-motion-target,.ppwf-premium-card,.ppwf-footer-link,.ppwf-footer-column,.ppwf-footer-social,
.site-footer .footer-cta-inner,.site-footer .footer-columns,.site-footer .footer-bottom,.site-footer .newsletter-inner{
  opacity:1;
  transform:none;
}
.ppwf-word{opacity:1;transform:none;clip-path:none}
.ppwf-hero-media{opacity:1!important;transform:none!important;clip-path:none!important;display:block}

/* Opt-in animation only after JS is initialized. */
.ppwf-motion-ready .ppwf-word{opacity:0;transform:translate3d(var(--ppwf-word-x,0),1.02em,0) rotateX(-46deg) rotateZ(var(--ppwf-word-r,0deg)) scale(.985);clip-path:none}
.ppwf-motion-ready .ppwf-word-animate.ppwf-word-visible .ppwf-word{opacity:1;transform:none}
.ppwf-motion-ready .ppwf-motion-target{opacity:0;transform:translate3d(0,34px,0) scale(.99)}
.ppwf-motion-ready .ppwf-motion-target.ppwf-motion-visible{opacity:1;transform:none}
.ppwf-motion-ready .ppwf-premium-card{opacity:0;transform:translate3d(0,22px,0) scale(.995)}
.ppwf-motion-ready .ppwf-premium-card.ppwf-motion-visible{opacity:1;transform:translate3d(0,0,0) rotateX(var(--ppwf-tilt-x,0)) rotateY(var(--ppwf-tilt-y,0)) scale(1)}
.ppwf-motion-ready .site-footer .footer-cta-inner,
.ppwf-motion-ready .site-footer .footer-columns,
.ppwf-motion-ready .site-footer .footer-bottom,
.ppwf-motion-ready .site-footer .newsletter-inner{opacity:0;transform:translateY(24px)}
.ppwf-motion-ready .site-footer.ppwf-footer-visible .footer-cta-inner,
.ppwf-motion-ready .site-footer.ppwf-footer-visible .footer-columns,
.ppwf-motion-ready .site-footer.ppwf-footer-visible .footer-bottom,
.ppwf-motion-ready .site-footer.ppwf-footer-visible .newsletter-inner{opacity:1;transform:none}
.ppwf-motion-ready .ppwf-footer-link{opacity:0;transform:translateX(-10px)}
.ppwf-motion-ready .site-footer.ppwf-footer-visible .ppwf-footer-link{opacity:1;transform:none}

/* Hero image: no disappearing, clean cinematic movement only. */
.hero-image{height:var(--ppwf-hero-height,560px);object-position:var(--ppwf-hero-position,center center);border-radius:var(--ppwf-hero-radius,220px) var(--ppwf-hero-radius,220px) 24px 24px;will-change:transform}
.ppwf-motion-ready .hero-image{animation:ppwf-hero-settle .95s cubic-bezier(.16,1,.3,1) both}
@keyframes ppwf-hero-settle{from{opacity:0;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}

/* Gallery: short, crisp reveal and no opacity-lock. */
.gallery-img{opacity:1!important;clip-path:none!important;transform:none!important}
.ppwf-motion-ready .gallery-img{animation:ppwf-gallery-clean .7s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--ppwf-gallery-delay,0ms)}
@keyframes ppwf-gallery-clean{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
.gallery-img-wrap{overflow:hidden;contain:paint}

/* Cursor: clean pin, hover labels only, and a tiny fading tail. */

/* Footer icons are ALWAYS present; only motion changes. */
.footer-social-link,.footer-social-link svg{opacity:1!important;visibility:visible!important;display:flex}
.footer-social-link{align-items:center;justify-content:center}
.site-footer .footer-social-list{opacity:1!important;visibility:visible!important}

/* Mobile: reduce expensive effects, fix spacing/stacking and remove cursor. */
@media (max-width:900px){
  html{scroll-padding-top:72px}
  .hero-section{padding-top:2.25rem}
  .hero-grid{gap:1.25rem}
  .hero-heading{font-size:clamp(2.2rem,10vw,3.25rem);max-width:14ch}
  .hero-description{max-width:none}
  .hero-image{height:min(72vw,420px);margin-top:1rem;object-position:var(--ppwf-hero-position,center center);border-radius:160px 160px 22px 22px}
  .hero-btn-group{gap:.75rem}
  .stats-bar{gap:1.25rem}
  .about-image-col{min-height:350px}
  .about-text-col .section-heading{max-width:100%}
  .values-list{grid-template-columns:1fr}
  .projects-row{gap:1rem}
  .gallery-grid{gap:.65rem}
  .gallery-img{min-height:100%;}
  .site-footer .footer-columns{gap:2rem}
  .ppwf-motion-ready .ppwf-word{opacity:0;transform:translateY(.55em) rotateX(-20deg)}
  .ppwf-motion-ready .ppwf-word-animate.ppwf-word-visible .ppwf-word{opacity:1;transform:none}
}
@media (max-width:640px){
  .header-inner{gap:.65rem}
  .header-cta-group .btn-orange{width:44px;height:44px;padding:0;justify-content:center;font-size:0;gap:0}
  .header-cta-group .btn-orange .btn-icon{width:18px;height:18px}
  .hero-image{height:76vw;max-height:380px}
  .about-image-col{min-height:315px}
  .about-img-main{width:68%;height:240px}
  .about-img-top{width:48%;height:155px;top:-.75rem}
  .about-img-bottom{width:46%;height:145px;bottom:-.75rem;right:4%}
  .about-badge{left:48%;top:46%}
  .footer-bottom{align-items:flex-start}
  .gallery-grid{grid-auto-rows:92px}
}
@media (prefers-reduced-motion:reduce){
  .ppwf-motion-ready .ppwf-word,.ppwf-motion-ready .ppwf-motion-target,.ppwf-motion-ready .ppwf-premium-card,
  .ppwf-motion-ready .site-footer .footer-cta-inner,.ppwf-motion-ready .site-footer .footer-columns,
  .ppwf-motion-ready .site-footer .footer-bottom,.ppwf-motion-ready .site-footer .newsletter-inner,
  .ppwf-motion-ready .ppwf-footer-link{opacity:1!important;transform:none!important;animation:none!important}
}

/* ========================================================================== 
   PPWF INNER PAGES — premium editorial page system
   ========================================================================== */
.inner-page{overflow:hidden;background:var(--c-cream)}
.inner-hero{max-width:1320px;margin:0 auto;padding:5.5rem 1.75rem 4rem;display:grid;gap:4rem;align-items:center;position:relative}
.inner-hero-split{grid-template-columns:1fr .9fr}
.inner-hero-centered{grid-template-columns:minmax(0,760px);justify-content:center;text-align:center;padding-bottom:2.5rem}
.inner-hero-copy{max-width:680px;position:relative;z-index:2}
.inner-hero-centered .inner-hero-copy{margin:auto}
.inner-hero-heading{font-family:var(--font-display);font-weight:800;color:var(--c-green);font-size:clamp(2.8rem,6vw,5rem);line-height:1.04;letter-spacing:-.03em;margin:.4rem 0 1.2rem;max-width:15ch}
.inner-hero-centered .inner-hero-heading{margin-left:auto;margin-right:auto}
.inner-hero-lead{color:var(--c-gray);font-size:1.08rem;line-height:1.8;max-width:58ch}
.inner-hero-media{position:relative;min-height:500px}
.inner-hero-media::before{content:"";position:absolute;inset:14% -4% 8% 8%;border:1px solid rgba(240,128,30,.45);border-radius:46% 46% 22px 22px;transform:rotate(4deg);z-index:0}
.inner-hero-media img{position:relative;z-index:1;width:100%;height:540px;object-fit:cover;border-radius:46% 46% 24px 24px;box-shadow:var(--shadow-card);transform:translateZ(0)}
.inner-hero-orbit{position:relative;width:min(520px,90vw);height:520px;margin:0 auto}
.inner-hero-orbit::before,.inner-hero-orbit::after{content:"";position:absolute;inset:7%;border:1px solid rgba(22,60,44,.12);border-radius:50%;animation:ppwfSpin 26s linear infinite}
.inner-hero-orbit::after{inset:16%;border-color:rgba(240,128,30,.22);animation-duration:18s;animation-direction:reverse}
.inner-hero-orbit span{position:absolute;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,rgba(240,128,30,.2),transparent 70%);top:4%;right:10%}
.inner-hero-orbit img{position:absolute;inset:8% 8%;width:84%;height:84%;object-fit:cover;border-radius:50%;border:10px solid var(--c-cream);box-shadow:0 30px 70px -26px rgba(22,60,44,.32)}
@keyframes ppwfSpin{to{transform:rotate(360deg)}}
.inner-section{max-width:1320px;margin:0 auto;padding:var(--section-pad-y) 1.75rem}
.three-col{grid-template-columns:repeat(3,1fr)}
.feature-grid{display:grid;gap:1.5rem}
.feature-card{background:var(--c-white);border:1px solid var(--c-border);border-radius:var(--radius-card);padding:2.2rem;box-shadow:var(--shadow-soft);position:relative;overflow:hidden;transition:transform .35s ease,box-shadow .35s ease}
.feature-card::after{content:"";position:absolute;inset:auto -10% -55% auto;width:180px;height:180px;border-radius:50%;background:rgba(240,128,30,.08);transition:transform .45s ease}
.feature-card:hover{transform:translateY(-10px);box-shadow:0 28px 60px -28px rgba(22,60,44,.3)}
.feature-card:hover::after{transform:scale(1.35)}
.feature-icon{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--c-cream-alt);color:var(--c-orange);font-weight:800;font-size:.8rem;margin-bottom:1.2rem}
.feature-card h3{font-family:var(--font-display);font-size:1.45rem;color:var(--c-green);margin:.2rem 0 .55rem}
.feature-card p{color:var(--c-gray);line-height:1.7;margin:0}
.cream-band{max-width:none;background:var(--c-cream-alt);padding-left:max(1.75rem,calc((100vw - 1320px)/2 + 1.75rem));padding-right:max(1.75rem,calc((100vw - 1320px)/2 + 1.75rem))}
.split-feature{max-width:1320px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center}
.check-list{display:grid;gap:.85rem;margin:1.75rem 0 0;padding:0;list-style:none}
.check-list li{position:relative;padding-left:1.7rem;color:var(--c-charcoal);line-height:1.5}
.check-list li::before{content:"✓";position:absolute;left:0;top:0;color:var(--c-orange);font-weight:800}
.quote-panel{background:var(--c-green);color:var(--c-white);padding:3rem;border-radius:32px;box-shadow:var(--shadow-card);position:relative;overflow:hidden}
.quote-panel::before{content:"";position:absolute;inset:-25% auto auto -10%;width:260px;height:260px;border-radius:50%;background:rgba(240,128,30,.12)}
.quote-mark-big{font-family:Georgia,serif;color:var(--c-orange);font-size:5rem;line-height:.7}
.quote-panel p{font-family:var(--font-display);font-size:clamp(1.7rem,3vw,2.4rem);line-height:1.15;max-width:16ch;margin:1.3rem 0}
.quote-panel span{color:rgba(251,246,236,.75);font-size:.88rem}
.impact-strip-section{max-width:none;padding-left:max(1.75rem,calc((100vw - 1320px)/2 + 1.75rem));padding-right:max(1.75rem,calc((100vw - 1320px)/2 + 1.75rem));background:var(--c-green-deep)}
.impact-strip{max-width:1320px;margin:auto;display:grid;grid-template-columns:.85fr 1.15fr;gap:4rem;align-items:center}
.impact-strip-heading{font-family:var(--font-display);font-size:clamp(2rem,3.8vw,3.2rem);line-height:1.1;color:var(--c-white);max-width:14ch;margin:.45rem 0 0}
.impact-strip-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.impact-mini{border:1px solid rgba(251,246,236,.14);border-radius:22px;padding:1.4rem;background:rgba(255,255,255,.03)}
.impact-mini strong{display:block;color:var(--c-white);font-family:var(--font-display);font-size:2.1rem}
.impact-mini span{display:block;color:rgba(251,246,236,.68);font-size:.82rem;margin-top:.2rem}
.cta-band{max-width:none;background:var(--c-white);text-align:center}
.cta-band-inner{max-width:760px;margin:auto}

.causes-page-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.cause-page-card{background:var(--c-white);border:1px solid var(--c-border);border-radius:26px;padding:2.15rem;box-shadow:var(--shadow-soft);position:relative;overflow:hidden;transition:transform .35s ease,box-shadow .35s ease}
.cause-page-card:hover{transform:translateY(-10px);box-shadow:var(--shadow-card)}
.cause-page-num{font-size:.74rem;letter-spacing:.1em;color:var(--c-orange);font-weight:800}
.cause-icon-large{width:70px;height:70px;border-radius:20px;background:var(--c-cream-alt);color:var(--c-green);display:grid;place-items:center;margin:1.3rem 0}
.cause-icon-large svg{width:34px;height:34px}
.cause-page-card h2{font-family:var(--font-display);color:var(--c-green);font-size:1.45rem;margin:0 0 .55rem}
.cause-page-card p{color:var(--c-gray);line-height:1.7;min-height:4.6em}
.text-link{display:inline-flex;gap:.4rem;align-items:center;color:var(--c-orange);font-weight:700;text-decoration:none;margin-top:.7rem;transition:gap .25s ease}
.text-link:hover{gap:.75rem}
.process-grid{max-width:1320px;margin:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.process-step{background:var(--c-white);border:1px solid var(--c-border);border-radius:22px;padding:1.8rem;transition:transform .3s ease}
.process-step:hover{transform:translateY(-8px)}
.process-step span{font-size:.76rem;color:var(--c-orange);font-weight:800}
.process-step h3{font-family:var(--font-display);color:var(--c-green);font-size:1.3rem;margin:.55rem 0}
.process-step p{margin:0;color:var(--c-gray);line-height:1.6}
.dark-callout{max-width:none;background:var(--c-green-deep);color:var(--c-white)}
.dark-callout>div{max-width:1320px;margin:auto}
.dark-callout-heading{font-family:var(--font-display);font-size:clamp(2.2rem,4.5vw,3.9rem);line-height:1.05;max-width:14ch;margin:.4rem 0 1.8rem}

.featured-event{display:grid;grid-template-columns:180px 1fr;gap:3rem;background:var(--c-white);border:1px solid var(--c-border);border-radius:32px;padding:2rem;box-shadow:var(--shadow-card);align-items:center}
.featured-event-date{width:150px;height:150px;border-radius:32px;background:var(--c-green);color:var(--c-white);display:grid;place-items:center;align-content:center;gap:.2rem;margin:auto}
.featured-event-date strong{font-family:var(--font-display);font-size:3.5rem;line-height:1}.featured-event-date span{color:var(--c-orange);font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.events-page-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.4rem}
.event-page-card{background:var(--c-white);border:1px solid var(--c-border);border-radius:24px;padding:1.6rem;display:grid;grid-template-columns:auto 1fr;column-gap:1rem;align-items:center;box-shadow:var(--shadow-soft);transition:transform .35s ease,box-shadow .35s ease}
.event-page-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-card)}
.event-page-card .event-date{grid-row:1/span 4}
.event-page-card .project-tag,.event-page-card .event-title,.event-page-card>p,.event-page-card .text-link{grid-column:2}
.event-page-card>p{color:var(--c-gray);font-size:.88rem;margin:.1rem 0}

.gallery-page-toolbar{display:flex;justify-content:center;margin-bottom:2rem}
.gallery-page-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:90px;gap:12px}
.gallery-page-item{grid-column:span 3;grid-row:span 3;position:relative;overflow:hidden;border-radius:18px;background:var(--c-white);box-shadow:var(--shadow-soft)}
.gallery-page-item:nth-child(5n+1){grid-column:span 6;grid-row:span 4}.gallery-page-item:nth-child(7n+2){grid-row:span 4}
.gallery-page-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s var(--ppwf-motion-ease),filter .4s ease}
.gallery-page-item figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.2rem 1rem .9rem;color:#fff;background:linear-gradient(transparent,rgba(15,42,29,.85));opacity:0;transform:translateY(12px);transition:opacity .3s ease,transform .3s ease;font-size:.8rem}
.gallery-page-item:hover img{transform:scale(1.06)}.gallery-page-item:hover figcaption{opacity:1;transform:none}
.empty-gallery{grid-column:1/-1;padding:5rem 2rem;border:1px dashed var(--c-border);border-radius:26px;text-align:center;background:var(--c-white)}

.contact-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem;align-items:start}
.contact-info-list{list-style:none;padding:0;margin:2rem 0;display:grid;gap:1rem}
.contact-info-list li{display:grid;gap:.25rem;padding:1.15rem 1.2rem;border:1px solid var(--c-border);border-radius:18px;background:var(--c-white)}
.contact-info-list strong{color:var(--c-green);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}.contact-info-list span{color:var(--c-gray);line-height:1.5}
.contact-mini-card{padding:1.3rem;border-radius:18px;background:var(--c-green);color:var(--c-white);display:grid;gap:.25rem}.contact-mini-card span{font-size:.75rem;color:rgba(251,246,236,.7);text-transform:uppercase;letter-spacing:.08em}.contact-mini-card strong{font-size:1.15rem}
.contact-form-card{background:var(--c-white);border:1px solid var(--c-border);border-radius:28px;padding:2.3rem;box-shadow:var(--shadow-card)}
.form-card-heading{font-family:var(--font-display);color:var(--c-green);font-size:2rem;margin:.4rem 0 1.3rem}.ppwf-contact-form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.ppwf-contact-form label{display:grid;gap:.45rem;color:var(--c-charcoal);font-weight:600;font-size:.86rem}.ppwf-contact-form label.full{grid-column:1/-1}.ppwf-contact-form input,.ppwf-contact-form textarea{width:100%;border:1px solid var(--c-border);background:var(--c-cream);border-radius:14px;padding:.9rem 1rem;font:inherit;color:var(--c-charcoal);outline:none;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;box-sizing:border-box}.ppwf-contact-form input:focus,.ppwf-contact-form textarea:focus{border-color:var(--c-orange);box-shadow:0 0 0 4px rgba(240,128,30,.12);transform:translateY(-1px)}.ppwf-contact-form textarea{resize:vertical}.ppwf-contact-form .btn{margin-top:1.2rem}.honeypot{position:absolute!important;left:-9999px!important;height:1px!important;width:1px!important;opacity:0!important}
.form-status{padding:.85rem 1rem;border-radius:12px;margin-bottom:1rem;font-size:.88rem}.form-status.success{background:#eaf7ee;color:#24623a}.form-status.error{background:#fff0ef;color:#8a2e28}
.map-panel{max-width:1320px;margin:auto;display:grid;grid-template-columns:1fr .9fr;gap:3rem;align-items:center}.map-orbit{height:340px;border-radius:28px;background:radial-gradient(circle at 50% 50%,rgba(240,128,30,.13),transparent 58%),linear-gradient(135deg,#e9e0cf,#f8f2e5);position:relative;overflow:hidden}.map-orbit::before,.map-orbit::after{content:"";position:absolute;border:1px solid rgba(22,60,44,.12);border-radius:50%}.map-orbit::before{inset:12%;}.map-orbit::after{inset:26%;}.map-orbit span{position:absolute;width:120px;height:120px;border-radius:50%;border:1px dashed rgba(240,128,30,.4);left:50%;top:50%;transform:translate(-50%,-50%)}.map-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:var(--c-green);color:var(--c-orange);box-shadow:0 18px 30px -12px rgba(22,60,44,.45)}

@media(max-width:1024px){.inner-hero-split,.split-feature,.impact-strip,.contact-layout,.map-panel{grid-template-columns:1fr}.inner-hero-media{min-height:420px}.inner-hero-media img{height:460px}.causes-page-grid{grid-template-columns:repeat(2,1fr)}.process-grid{grid-template-columns:repeat(2,1fr)}.three-col{grid-template-columns:1fr 1fr}.events-page-grid{grid-template-columns:1fr}}
@media(max-width:760px){.inner-hero{padding:3.8rem 1.1rem 2.5rem;gap:2rem}.inner-hero-heading{font-size:clamp(2.35rem,12vw,3.7rem);max-width:none}.inner-hero-lead{font-size:1rem}.inner-section{padding:4.2rem 1.1rem}.cream-band,.impact-strip-section{padding-left:1.1rem;padding-right:1.1rem}.three-col,.causes-page-grid,.process-grid,.impact-strip-grid{grid-template-columns:1fr}.inner-hero-media{min-height:320px}.inner-hero-media img{height:360px}.inner-hero-orbit{width:min(400px,88vw);height:400px}.featured-event{grid-template-columns:1fr;gap:1.5rem;text-align:center}.featured-event-date{width:120px;height:120px}.event-page-card{grid-template-columns:1fr}.event-page-card .event-date{grid-row:auto;grid-column:1;width:78px;height:78px;margin-bottom:.5rem}.event-page-card .project-tag,.event-page-card .event-title,.event-page-card>p,.event-page-card .text-link{grid-column:1}.gallery-page-grid{grid-template-columns:1fr 1fr;grid-auto-rows:150px}.gallery-page-item,.gallery-page-item:nth-child(5n+1),.gallery-page-item:nth-child(7n+2){grid-column:span 1;grid-row:span 1}.gallery-page-item:nth-child(3n+1){grid-row:span 2}.ppwf-contact-form .form-grid{grid-template-columns:1fr}.ppwf-contact-form label.full{grid-column:auto}.map-orbit{height:280px}}
@media(max-width:520px){.inner-hero-centered{padding-top:3rem}.hero-btn-group{gap:.7rem}.hero-btn-group .btn{width:100%;justify-content:center}.contact-form-card{padding:1.4rem}.gallery-filters{gap:.45rem}.gallery-filter-btn{padding:.5rem .9rem;font-size:.76rem}}

/* Inner-page animation helpers piggyback on the main motion engine. */
.inner-page .ppwf-motion-target,.inner-page .ppwf-premium-card{will-change:transform,opacity}
.inner-page .ppwf-word-animate{position:relative}


/* ========================================================================
   PPWF 2.3 — LOCKED NAV + GALLERY GUARANTEE
   ======================================================================== */
.site-header{
  position:fixed!important;
  top:0!important; left:0!important; right:0!important;
  width:100%!important;
  z-index:10000!important;
  transform:none!important;
}
body.ppwf-theme{padding-top:86px!important}
.site-header.ppwf-header-up,.site-header.ppwf-header-down{transform:none!important}
.site-header.is-scrolled{transform:none!important}
.admin-bar .site-header{top:32px!important}
@media(max-width:782px){
  .admin-bar .site-header{top:46px!important}
  body.ppwf-theme{padding-top:78px!important}
}
@media(max-width:900px){
  .header-inner{padding:.72rem 1rem;gap:.8rem}
  .main-nav{position:absolute;left:1rem;right:1rem;top:calc(100% + .5rem);background:var(--c-cream);border:1px solid var(--c-border);border-radius:18px;box-shadow:0 20px 40px -25px rgba(15,42,29,.55);padding:.7rem;display:none}
  .main-nav.is-open{display:block}
  .main-nav .nav-list{flex-direction:column;align-items:stretch;gap:.25rem}
  .main-nav .nav-link{display:block;padding:.8rem 1rem}
  .header-cta-group .btn{display:none}
  .mobile-menu-toggle{display:flex}
}

/* Gallery should always have a visible stage, even before the user uploads images. */
.gallery-page-grid,.gallery-grid{min-height:220px}
.gallery-placeholder-card{position:relative;overflow:hidden;border-radius:1rem;min-height:180px;background:linear-gradient(135deg,#163c2c 0%,#2b5a45 58%,#f0801e 100%);display:flex;align-items:flex-end;padding:1rem;box-shadow:var(--shadow-soft)}
.gallery-placeholder-card::before{content:"";position:absolute;inset:12% 18% 20% 18%;border:2px solid rgba(255,255,255,.32);border-radius:1rem;transform:rotate(-7deg);}
.gallery-placeholder-card::after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:rgba(255,255,255,.16);top:18%;right:15%;box-shadow:-90px 48px 0 -18px rgba(255,255,255,.12)}
.gallery-placeholder-card span{position:relative;z-index:2;color:#fff;font:700 .78rem/1 Poppins,sans-serif;letter-spacing:.1em;text-transform:uppercase}
.gallery-page-item{overflow:hidden;border-radius:1rem;background:var(--c-white);border:1px solid var(--c-border);box-shadow:var(--shadow-soft)}
.gallery-page-item img{display:block;width:100%;height:230px;object-fit:cover}
.gallery-page-item figcaption{padding:.8rem 1rem;color:var(--c-gray);font-size:.78rem;min-height:44px}

/* Keep the homepage gallery present and visually strong before uploads. */

.gallery-placeholder-card.ppwf-anim-gallery{opacity:0;transform:translate3d(0,34px,0) scale(.96);clip-path:inset(14% 8% 14% 8% round 14px);transition:opacity .7s var(--ppwf-ease-out),transform .9s var(--ppwf-ease-out),clip-path .8s var(--ppwf-ease-out),box-shadow .35s ease;transition-delay:var(--ppwf-delay,0ms)}
.gallery-placeholder-card.ppwf-anim-gallery.ppwf-visible{opacity:1;transform:none;clip-path:inset(0 round 14px)}
.gallery-placeholder-card.ppwf-anim-gallery:hover{transform:translateY(-8px) scale(1.02)!important;box-shadow:0 25px 45px -25px rgba(15,42,29,.45);z-index:2}
.gallery-upload-note{grid-column:1/-1;margin:1rem 0 0;text-align:center;color:var(--c-gray);font-size:.85rem}


/* ========================================================================
   PPWF v2.4 FINAL UX + VOLUNTEERS + SMOOTH CURSOR TAIL + HERO REFINEMENT
   ======================================================================== */
:root{
  --ppwf-motion-ease:cubic-bezier(.22,1,.36,1);
  --ppwf-spring:cubic-bezier(.16,1,.3,1);
}

/* HERO: stable, editorial typography and no overlap. */
.hero-grid{align-items:center;gap:4.5rem;}
.hero-text-col{max-width:650px;position:relative;z-index:2;padding:1.5rem 0 2.75rem;}
.hero-heading.ppwf-hero-title{max-width:620px;margin:.6rem 0 1.15rem;font-family:var(--font-display);font-size:clamp(3.05rem,5.8vw,5.45rem);line-height:.94;letter-spacing:-.038em;text-wrap:balance;}
.hero-heading-line{display:block;white-space:nowrap;}
.hero-heading-line-2{margin-top:.07em;}
.hero-tagline{font-size:clamp(1.02rem,1.5vw,1.18rem);line-height:1.55;max-width:58ch;margin-bottom:1rem;}
.hero-description{font-size:1.02rem;line-height:1.82;max-width:58ch;margin-bottom:1.9rem;}
.hero-btn-group{position:relative;z-index:4;}
.hero-image-col{z-index:1;min-width:0;}
.hero-image{display:block;visibility:visible;opacity:1!important;object-position:var(--ppwf-hero-position,center center)!important;}
.stats-bar-wrap{margin-top:-3rem;}

/* Navigation is fixed and visually calm; no scroll transforms. */
.site-header{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;will-change:box-shadow;}
.site-header.is-scrolled{box-shadow:0 12px 32px -20px rgba(22,60,44,.42);}
.main-nav .nav-link{transition:color .22s var(--ppwf-motion-ease),transform .22s var(--ppwf-motion-ease);}
.main-nav .nav-link:hover{transform:translateY(-1px);}

/* Volunteers */
.volunteers-block{margin-top:5.5rem;}
.volunteers-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin-top:2.2rem;}
.volunteer-card{position:relative;background:var(--c-white);border:1px solid var(--c-border);border-radius:24px;overflow:hidden;box-shadow:var(--shadow-soft);display:flex;flex-direction:column;min-width:0;transform-style:preserve-3d;transition:transform .35s var(--ppwf-motion-ease),box-shadow .35s ease,border-color .25s ease;}
.volunteer-card:hover{transform:translateY(-10px) rotateX(var(--ppwf-tilt-x,0deg)) rotateY(var(--ppwf-tilt-y,0deg));box-shadow:0 28px 60px -30px rgba(15,42,29,.38);border-color:rgba(240,128,30,.32);}
.volunteer-photo-wrap{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--c-cream-alt);}
.volunteer-photo{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ppwf-motion-ease),filter .4s ease;}
.volunteer-card:hover .volunteer-photo{transform:scale(1.055);filter:saturate(1.04) contrast(1.01);}
.volunteer-body{padding:1.35rem 1.4rem 1.55rem;}
.volunteer-name{font-family:var(--font-display);font-size:1.35rem;color:var(--c-green);margin:.15rem 0 .25rem;line-height:1.2;}
.volunteer-role{font-weight:700;color:var(--c-orange);font-size:.78rem;text-transform:uppercase;letter-spacing:.11em;margin:0 0 .65rem;}
.volunteer-bio{font-size:.88rem;color:var(--c-gray);line-height:1.65;margin:0;}

/* Testimonial relationship to volunteer section. */
.testimonials-block{margin-top:6.5rem;}

/* Smooth premium mouse tail: one continuous fading path, not dot breadcrumbs. */

/* Reduce motion engine work: do not repeatedly hide/reveal every frame. */
.ppwf-motion-target,.ppwf-premium-card{backface-visibility:hidden;}
.ppwf-premium-card{transition:transform .36s var(--ppwf-motion-ease),box-shadow .36s ease,border-color .25s ease;}
.gallery-img-wrap{contain:layout paint;}

/* Responsive hero + volunteer cards. */
@media(max-width:1100px){
  .hero-grid{gap:3rem;grid-template-columns:1fr .9fr;}
  .hero-heading.ppwf-hero-title{font-size:clamp(2.85rem,5.6vw,4.7rem);}
  .volunteers-grid{gap:1rem;}
}
@media(max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:1.4rem;}
  .hero-text-col{max-width:720px;padding:1.2rem 0 1.3rem;}
  .hero-heading.ppwf-hero-title{font-size:clamp(2.7rem,11vw,4.2rem);max-width:13ch;line-height:.96;}
  .hero-image-col{order:2;}
  .hero-image{height:min(82vw,480px)!important;border-radius:170px 170px 26px 26px!important;}
  .stats-bar-wrap{margin-top:-1.8rem;}
  .volunteers-grid{grid-template-columns:1fr;max-width:520px;margin-left:auto;margin-right:auto;}
}
@media(max-width:640px){
  .hero-heading.ppwf-hero-title{font-size:clamp(2.45rem,12.5vw,3.55rem);letter-spacing:-.03em;}
  .hero-heading-line{white-space:normal;}
  .hero-description{font-size:.98rem;line-height:1.72;}
  .stats-bar-wrap{margin-top:-1rem;}
  .volunteers-block{margin-top:4.25rem;}
  .volunteer-card{border-radius:20px;}
}

/* Social icons: explicit sizing so SVGs cannot collapse/disappear. */
.footer-social-list{display:flex;align-items:center;gap:.55rem!important;list-style:none!important;padding:0!important;margin:1.1rem 0 0!important;}
.footer-social-link{width:40px!important;height:40px!important;display:grid!important;place-items:center!important;border:1px solid rgba(251,246,236,.18);border-radius:50%;color:var(--c-cream);background:rgba(255,255,255,.035);text-decoration:none;}
.footer-social-icon{width:18px!important;height:18px!important;display:block!important;opacity:1!important;visibility:visible!important;}
.footer-social-link:hover{background:var(--c-orange);color:var(--c-green);border-color:var(--c-orange);transform:translateY(-3px) rotate(-4deg);}

/* Footer logo fallback sizing */
.logo-block-footer .logo-mark{width:48px;height:48px;object-fit:cover;}

/* Avoid accidental text/box collisions caused by over-aggressive word wrappers. */
.ppwf-word{vertical-align:baseline;}
.hero-heading .ppwf-word{line-height:1;}
.value-copy,.event-meta li,.project-desc,.cause-desc,.testimonial-quote,.footer-brand-copy{overflow-wrap:anywhere;}

/* PPWF 2.5 dynamic cursor: smooth pointer + elastic ring + fading tail, no labels. */


/* ========================================================================
   PPWF 2.6 — FOOTER ICON FIX + TRUE BIDIRECTIONAL SCROLL REPLAY
   ======================================================================== */
.site-footer .ppwf-footer-social{
  position:relative!important;
  width:42px!important;
  min-width:42px!important;
  height:42px!important;
  min-height:42px!important;
  padding:0!important;
  margin:0!important;
  font-size:0!important;
  line-height:0!important;
  text-indent:0!important;
  overflow:hidden!important;
  display:grid!important;
  place-items:center!important;
  box-sizing:border-box!important;
}
.site-footer .ppwf-footer-social::before{
  content:none!important;
  display:none!important;
}
.site-footer .ppwf-footer-social::after{z-index:0!important;}
.site-footer .ppwf-footer-social .footer-social-icon{
  position:relative!important;
  z-index:2!important;
  display:block!important;
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  min-height:18px!important;
  max-width:none!important;
  max-height:none!important;
  opacity:1!important;
  visibility:visible!important;
  color:currentColor!important;
  flex:0 0 18px!important;
}
.site-footer .ppwf-footer-social:hover .footer-social-icon{color:var(--c-green)!important;}

.ppwf-motion-ready .ppwf-word-animate[data-scroll-direction="up"] .ppwf-word{
  transform:translate3d(var(--ppwf-word-x,0),-1.02em,0) rotateX(46deg) rotateZ(calc(var(--ppwf-word-r,0deg) * -1)) scale(.97);
}
.ppwf-motion-ready .ppwf-word-animate[data-scroll-direction="up"].ppwf-word-visible .ppwf-word{transform:none;}
.ppwf-motion-ready .ppwf-motion-target[data-scroll-direction="up"],
.ppwf-motion-ready .ppwf-premium-card[data-scroll-direction="up"],
.ppwf-motion-ready .ppwf-anim-text[data-scroll-direction="up"],
.ppwf-motion-ready .ppwf-anim-image[data-scroll-direction="up"],
.ppwf-motion-ready .ppwf-anim-button[data-scroll-direction="up"]{
  transform:translate3d(0,-34px,0) scale(.988);
}
.ppwf-motion-ready .ppwf-motion-target[data-scroll-direction="up"].ppwf-motion-visible,
.ppwf-motion-ready .ppwf-premium-card[data-scroll-direction="up"].ppwf-motion-visible,
.ppwf-motion-ready .ppwf-anim-text[data-scroll-direction="up"].ppwf-visible,
.ppwf-motion-ready .ppwf-anim-image[data-scroll-direction="up"].ppwf-visible,
.ppwf-motion-ready .ppwf-anim-button[data-scroll-direction="up"].ppwf-visible{transform:none;}

.site-footer .ppwf-footer-social:hover{
  transform:translateY(-6px) rotate(5deg) scale(1.06)!important;
  box-shadow:0 16px 28px -20px rgba(240,128,30,.9)!important;
}
.site-footer .ppwf-footer-social:hover::after{transform:scale(1)!important;}


/* ================= FINAL CURSOR + GALLERY RELIABILITY OVERRIDES ================= */

/* Gallery starter items must remain visible even if JS does not run. */
.gallery-placeholder-card.ppwf-anim-gallery{opacity:1;transform:none;clip-path:none;}
.ppwf-motion-ready .gallery-placeholder-card.ppwf-anim-gallery{opacity:0;transform:translate3d(0,28px,0) scale(.97);clip-path:inset(8% 5% 8% 5% round 16px);}
.ppwf-motion-ready .gallery-placeholder-card.ppwf-anim-gallery.ppwf-motion-visible,
.ppwf-motion-ready .gallery-placeholder-card.ppwf-anim-gallery.ppwf-visible{opacity:1;transform:none;clip-path:inset(0 round 16px);}
.gallery-placeholder-card img{width:100%;height:100%;min-height:220px;object-fit:cover;display:block;}
.gallery-placeholder-card figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.2rem 1rem .9rem;color:#fff;background:linear-gradient(transparent,rgba(15,42,29,.88));font:700 .82rem/1.2 Poppins,sans-serif;letter-spacing:.04em;}
.gallery-placeholder-card figcaption span{display:block;opacity:.72;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;margin-top:.22rem;}
.gallery-upload-note{display:none!important;}


/* ========================================================================
   PPWF 2.8 — FINAL SINGLE-CURSOR + PUBLIC GALLERY SAFETY OVERRIDES
   ======================================================================== */
/* Never expose admin guidance on the public gallery. */
.gallery-upload-note{display:none!important}

/* Fallback gallery photos must ALWAYS remain visible on the public site.
   They are real bundled volunteer portraits, not admin placeholders. */
.gallery-placeholder-card,
.gallery-placeholder-card.ppwf-anim-gallery,
.ppwf-motion-ready .gallery-placeholder-card.ppwf-anim-gallery,
.gallery-page-item.gallery-placeholder-card,
.ppwf-motion-ready .gallery-page-item.gallery-placeholder-card{
  opacity:1!important;
  visibility:visible!important;
  transform:none!important;
  clip-path:none!important;
}
.gallery-placeholder-card{position:relative;overflow:hidden;border-radius:1rem;background:var(--c-white);box-shadow:var(--shadow-soft)}
.gallery-placeholder-card img{width:100%;height:100%;min-height:220px;object-fit:cover;display:block}
.gallery-placeholder-card figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.25rem 1rem .95rem;color:#fff;background:linear-gradient(transparent,rgba(15,42,29,.92));font:700 .82rem/1.2 Poppins,sans-serif;letter-spacing:.04em}
.gallery-placeholder-card figcaption span{display:block;opacity:.72;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;margin-top:.22rem}

/* One custom cursor: one animated ball, no labels, no second dot. */
body.ppwf-custom-cursor,body.ppwf-custom-cursor *{cursor:none!important}

/* Hero/gallery content should never depend on the motion engine for visibility. */
.gallery-grid img,.gallery-page-grid img,.hero-image{visibility:visible!important}


/* ========================================================================
   PPWF v3.0 — cursor, gallery and bidirectional motion cleanup
   ======================================================================== */
/* Single orange ball cursor — always keeps its orange colour. */
  position:fixed!important;left:0!important;top:0!important;width:18px!important;height:18px!important;
  z-index:1000000!important;pointer-events:none!important;opacity:0!important;
  transform:translate3d(-50%,-50%,0) scale(1)!important;
  transition:opacity .16s ease, transform .18s cubic-bezier(.2,.85,.25,1.2)!important;
  will-change:transform,opacity;
}
  display:block!important;position:absolute!important;left:0!important;top:0!important;
  width:10px!important;height:10px!important;border-radius:50%!important;
  background:var(--c-orange)!important;color:var(--c-orange)!important;
  box-shadow:0 2px 12px rgba(240,128,30,.28),0 0 0 1px rgba(255,255,255,.45)!important;
  transform:translate(-50%,-50%) scale(1)!important;transition:transform .28s cubic-bezier(.22,.9,.25,1.18), box-shadow .24s ease!important;
}
  position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;
  pointer-events:none!important;z-index:999999!important;overflow:visible!important;
}
/* Preserve native pointer on coarse/touch devices. */

/* Gallery fallback: genuine public imagery, never volunteer portraits, never admin text. */
.gallery-fallback-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--c-border);border-radius:var(--radius-card);box-shadow:var(--shadow-soft);min-height:220px}
.gallery-fallback-card img{display:block!important;width:100%!important;height:100%!important;min-height:220px!important;object-fit:cover!important}
.gallery-fallback-card .gallery-caption{position:absolute;left:0;right:0;bottom:0;padding:1.4rem 1rem .95rem;background:linear-gradient(transparent,rgba(15,42,29,.9));color:#fff;opacity:0;transform:translateY(8px);transition:opacity .35s ease,transform .35s ease}
.gallery-fallback-card:hover .gallery-caption{opacity:1;transform:none}
.gallery-grid .gallery-fallback-card{height:100%}
.gallery-upload-note,.gallery-placeholder-card{display:none!important}

/* Dedicated real Google map on Contact page. */
.map-section-card{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(420px,1.25fr);gap:2rem;align-items:stretch;padding:1.25rem;border:1px solid var(--c-border);border-radius:1.5rem;background:var(--c-white);box-shadow:var(--shadow-soft)}
.map-copy{display:flex;flex-direction:column;justify-content:center;padding:2.2rem}
.map-embed-wrap{min-height:360px;overflow:hidden;border-radius:1.1rem;background:var(--c-cream-alt);border:1px solid var(--c-border)}
.map-embed-wrap iframe{display:block;width:100%;height:100%;min-height:360px;border:0}
@media (max-width:900px){.map-section-card{grid-template-columns:1fr}.map-copy{padding:1.25rem}.map-embed-wrap,.map-embed-wrap iframe{min-height:300px}}

/* Universal motion targets: every visual block gets enter + exit choreography. */
.ppwf-motion-ready .ppwf-universal-motion{opacity:0;transform:translate3d(0,44px,0) scale(.985);will-change:opacity,transform;transition:opacity .7s var(--ppwf-v15-ease),transform .82s var(--ppwf-v15-spring)}
.ppwf-motion-ready .ppwf-universal-motion[data-scroll-direction="up"]{transform:translate3d(0,-44px,0) scale(.985)}
.ppwf-motion-ready .ppwf-universal-motion.ppwf-motion-visible{opacity:1;transform:none}
.ppwf-motion-ready .ppwf-universal-motion[data-scroll-direction="up"].ppwf-motion-visible{transform:none}

/* Don't let old direction overrides neutralise fresh universal motion. */
.ppwf-motion-ready .ppwf-anim-button[data-scroll-direction="up"]{transform:translate3d(0,-28px,0) scale(.96)!important}
.ppwf-motion-ready .ppwf-anim-button[data-scroll-direction="up"].ppwf-visible{transform:none!important}

/* Performance: keep paints contained on large image/card regions. */
.gallery-grid,.gallery-page-grid,.projects-row,.events-grid,.testimonials-grid,.causes-grid{contain:layout paint style}
.gallery-img,.project-img,.hero-image,.about-img,.testimonial-avatar,.volunteer-photo{backface-visibility:hidden;transform:translateZ(0)}

/* v3.0: all-page out/re-enter animation is explicit and direction-aware. */
.ppwf-motion-ready .ppwf-universal-motion[data-scroll-direction="down"]{transform:translate3d(0,44px,0) scale(.985)}
.ppwf-motion-ready .ppwf-universal-motion[data-scroll-direction="up"]{transform:translate3d(0,-44px,0) scale(.985)}
.ppwf-motion-ready .ppwf-universal-motion.ppwf-motion-visible{opacity:1;transform:none}
.ppwf-motion-ready .ppwf-word-animate[data-scroll-direction="down"] .ppwf-word{transform:translate3d(var(--ppwf-word-x,0),1.0em,0) rotateX(-44deg) rotateZ(var(--ppwf-word-r,0deg)) scale(.95);clip-path:inset(0 0 100% 0)}
.ppwf-motion-ready .ppwf-word-animate[data-scroll-direction="up"] .ppwf-word{transform:translate3d(var(--ppwf-word-x,0),-1.0em,0) rotateX(44deg) rotateZ(calc(var(--ppwf-word-r,0deg) * -1)) scale(.95);clip-path:inset(100% 0 0 0)}
.ppwf-motion-ready .ppwf-word-animate.ppwf-word-visible .ppwf-word{opacity:1;transform:none;clip-path:inset(0 0 0 0)}


/* v3.0 cursor positioning fix: the parent follows the pointer; the single ball handles scale. */

/* ========================================================================
   PPWF 3.1 — Cursor correction: one visible orange ball, short tapered tail
   ======================================================================== */
/* Remove every previous cursor variant/label visually. */

/* The custom pointer itself: one orange ball only. */
  display:block!important;
  position:fixed!important;
  left:0!important;
  top:0!important;
  width:16px!important;
  height:16px!important;
  padding:0!important;
  margin:0!important;
  z-index:1000001!important;
  pointer-events:none!important;
  opacity:0!important;
  transform:translate3d(0,0,0)!important;
}
  display:block!important;
  position:absolute!important;
  left:0!important;
  top:0!important;
  width:10px!important;
  height:10px!important;
  border-radius:50%!important;
  background:#F0801E!important;
  border:0!important;
  box-shadow:0 2px 10px rgba(240,128,30,.28),0 0 0 1px rgba(255,255,255,.35)!important;
  transform:translate(-50%,-50%) scale(1)!important;
  transition:transform .24s cubic-bezier(.22,.9,.25,1.12), box-shadow .2s ease!important;
}

/* Short, continuous tapered ribbon — no dotted trail. */
  display:block!important;
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  pointer-events:none!important;
  z-index:1000000!important;
}

/* Keep the real browser pointer until the custom cursor has actually appeared. */
body.ppwf-custom-cursor{cursor:auto}
body.ppwf-custom-cursor.ppwf-custom-cursor-active,
body.ppwf-custom-cursor.ppwf-custom-cursor-active *{cursor:none!important}
@media (pointer:coarse){
  body.ppwf-custom-cursor,body.ppwf-custom-cursor *{cursor:auto!important}
}

/* ========================================================================
   PPWF V3.2 — CLEAN INTERACTION CURSOR / STABLE MOTION OVERRIDES
   One orange cursor ball + one short tapered tail. No cursor labels.
   Gallery content remains visible even if JS is delayed or fails.
   ======================================================================== */
:root{
  --ppwf-orange:#F0801E;
  --ppwf-motion-ease:cubic-bezier(.2,.8,.2,1);
  --ppwf-motion-spring:cubic-bezier(.18,.92,.22,1.08);
}

/* Never hide public gallery media while JS is loading. */
.gallery-grid,
.gallery-page-grid{min-height:10px}
.gallery-grid .gallery-img,
.gallery-page-grid .gallery-img,
.gallery-fallback-card img{
  opacity:1!important;
  visibility:visible!important;
}
.gallery-grid .ppwf-anim-gallery,
.gallery-page-grid .ppwf-anim-gallery{
  opacity:1!important;
  visibility:visible!important;
}
.gallery-upload-note,
.gallery-placeholder-card,
.gallery-grid:empty::before{display:none!important;content:none!important}

/* Stable bidirectional motion: the element is only hidden when the JS motion state is active. */
body.ppwf-motion-ready .ppwf-universal-motion{
  opacity:0;
  transform:translate3d(0,44px,0) scale(.988);
  transition:opacity .72s var(--ppwf-motion-ease), transform .86s var(--ppwf-motion-ease);
  will-change:opacity,transform;
}
body.ppwf-motion-ready .ppwf-universal-motion[data-scroll-direction="up"]{
  transform:translate3d(0,-44px,0) scale(.988);
}
body.ppwf-motion-ready .ppwf-universal-motion.ppwf-motion-visible{
  opacity:1;
  transform:none;
}

/* Never make gallery images depend on opacity for their reveal. */
body.ppwf-motion-ready .gallery-grid .ppwf-universal-motion,
body.ppwf-motion-ready .gallery-page-grid .ppwf-universal-motion{
  opacity:1;
  transform:translate3d(0,28px,0) scale(.985);
}
body.ppwf-motion-ready .gallery-grid .ppwf-universal-motion.ppwf-motion-visible,
body.ppwf-motion-ready .gallery-page-grid .ppwf-universal-motion.ppwf-motion-visible{
  transform:none;
}

/* Crisp word animation — no blur. */
.ppwf-word-animate{perspective:900px}
.ppwf-word{filter:none!important}

/* ------------------------- SINGLE ORANGE CURSOR ------------------------ */
body.ppwf-clean-cursor,
body.ppwf-clean-cursor *{cursor:auto!important}
body.ppwf-clean-cursor.ppwf-clean-cursor-active,
body.ppwf-clean-cursor.ppwf-clean-cursor-active *{cursor:none!important}

.ppwf-cursor{
  position:fixed!important;
  left:0!important;top:0!important;
  width:1px!important;height:1px!important;
  margin:0!important;padding:0!important;
  z-index:1000002!important;
  pointer-events:none!important;
  opacity:0!important;
  display:block!important;
  transform:none!important;
  will-change:left,top!important;
}
.ppwf-cursor.is-visible{opacity:1!important}

.ppwf-cursor-ball{
  position:absolute!important;
  left:0!important;top:0!important;
  width:10px!important;height:10px!important;
  border-radius:50%!important;
  background:#F0801E!important;
  border:none!important;
  box-shadow:0 2px 12px rgba(240,128,30,.30),0 0 0 1px rgba(255,255,255,.38)!important;
  transform:translate(-50%,-50%) scale(1)!important;
  transition:transform .26s var(--ppwf-motion-spring),box-shadow .22s ease!important;
}
/* One ball, one colour. Only its size changes. */
.ppwf-cursor[data-state="text"] .ppwf-cursor-ball{
  transform:translate(-50%,-50%) scale(1.10)!important;
  background:#F0801E!important;
}
.ppwf-cursor[data-state="clickable"] .ppwf-cursor-ball,
.ppwf-cursor[data-state="image"] .ppwf-cursor-ball{
  transform:translate(-50%,-50%) scale(1.68)!important;
  background:#F0801E!important;
  box-shadow:0 3px 14px rgba(240,128,30,.34),0 0 0 1px rgba(255,255,255,.30)!important;
}
.ppwf-cursor.is-clicking .ppwf-cursor-ball{
  transform:translate(-50%,-50%) scale(1.22)!important;
}

/* Short continuous tapered ribbon: thick at ball, razor-narrow at tail end. */
.ppwf-cursor-tail{
  position:fixed!important;
  left:0;top:0;
  width:0;height:12px;
  pointer-events:none!important;
  z-index:1000001!important;
  transform-origin:0 50%;
  opacity:0;
  will-change:width,transform,opacity;
  background:linear-gradient(90deg,rgba(240,128,30,.34) 0%,rgba(240,128,30,.22) 58%,rgba(240,128,30,0) 100%);
  clip-path:polygon(0 0,100% 50%,0 100%);
  transition:opacity .16s ease;
}
.ppwf-cursor-tail.is-visible{opacity:1}

@media (pointer:coarse), (max-width:900px){
  .ppwf-cursor,.ppwf-cursor-tail{display:none!important}
  body.ppwf-clean-cursor,body.ppwf-clean-cursor *{cursor:auto!important}
}

/* Make the same animation system apply to all major page blocks, both directions. */
body.ppwf-motion-ready .ppwf-anim-button,
body.ppwf-motion-ready .ppwf-anim-image,
body.ppwf-motion-ready .ppwf-anim-gallery,
body.ppwf-motion-ready .ppwf-anim-text,
body.ppwf-motion-ready .ppwf-reveal,
body.ppwf-motion-ready .ppwf-footer-column,
body.ppwf-motion-ready .ppwf-footer-link,
body.ppwf-motion-ready .ppwf-footer-social{
  will-change:opacity,transform;
}

/* Hover language: premium but restrained. */
.btn,.carousel-arrow,.gallery-filter-btn,.footer-social-link{transition:transform .3s var(--ppwf-motion-spring),box-shadow .3s ease,background-color .3s ease,color .3s ease}
.btn:hover,.carousel-arrow:hover,.gallery-filter-btn:hover{transform:translateY(-3px)}
.project-card:hover,.cause-card:hover,.event-card:hover,.testimonial-card:hover{transform:translateY(-7px)}
.gallery-img{transition:transform .65s var(--ppwf-motion-ease),filter .45s ease}
.gallery-img:hover{transform:scale(1.045)}

/* Sticky header always visible. */
.site-header{position:sticky!important;top:0!important;transform:none!important}

/* Gallery safety: fallback imagery/cards never become invisible when JS is late. */
.gallery-fallback-card{min-height:220px;background:linear-gradient(135deg,#f3ecdc 0%,#fff 52%,#f7d4b2 100%);}
.gallery-fallback-card img{opacity:1!important;visibility:visible!important;}
.gallery-fallback-card.ppwf-anim-gallery{opacity:1;visibility:visible;}

/* ================================================================
   V3.3 — ROBUST CANVAS CURSOR
   One orange ball + short tapered tail. Native pointer remains visible.
   ================================================================ */
#ppwf-cursor-canvas{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  pointer-events:none!important;
  z-index:2147483000!important;
  display:block!important;
}
body.ppwf-clean-cursor,
body.ppwf-clean-cursor *{cursor:auto!important}
body.ppwf-clean-cursor.ppwf-clean-cursor-active,
body.ppwf-clean-cursor.ppwf-clean-cursor-active *{cursor:auto!important}
.ppwf-cursor,.ppwf-cursor-tail{display:none!important}
/* V3.3 gallery safety: local starter artwork is always visible; motion may animate transform only. */
body.ppwf-motion-ready .gallery-grid > *,
body.ppwf-motion-ready .gallery-page-grid > *{opacity:1!important;visibility:visible!important;}
.gallery-grid .gallery-fallback-card,
.gallery-page-grid .gallery-fallback-card{opacity:1!important;visibility:visible!important;}


/* PPWF V3.4 — larger single orange cursor on interactive elements */
@media (pointer:fine){
  #ppwf-cursor-canvas{pointer-events:none!important;z-index:2147483647!important;}
}

/* ======================================================================
 * PPWF v4.0 — Cause pages, navigation dropdown, editorial About blocks,
 * aligned gallery, logo-only wordmark, distinct hero silhouettes.
 * ====================================================================== */
.logo-text-only{gap:0}.logo-text-only .logo-text-main{font-size:1rem;line-height:1.1;white-space:nowrap}.logo-text-only .logo-text-sub{display:block}

.nav-item-has-dropdown{position:relative;padding-bottom:.9rem;margin-bottom:-.9rem}.nav-item-has-dropdown:after{content:"";position:absolute;left:0;right:0;top:100%;height:.9rem}.nav-dropdown-toggle{display:inline-flex;align-items:center;gap:.35rem}.nav-chevron{font-size:.78rem;line-height:1;transform:translateY(-1px);transition:transform .2s ease}.nav-item-has-dropdown:hover .nav-chevron,.nav-item-has-dropdown:focus-within .nav-chevron{transform:rotate(180deg)}
.nav-dropdown{position:absolute;top:calc(100% + .2rem);left:50%;transform:translate(-50%,8px);width:250px;background:rgba(251,246,236,.98);border:1px solid var(--c-border);border-radius:18px;padding:.55rem;box-shadow:0 22px 50px -18px rgba(15,42,29,.28);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease,transform .2s ease,visibility .2s ease;z-index:220;backdrop-filter:saturate(1.1)}
.nav-item-has-dropdown:hover .nav-dropdown,.nav-item-has-dropdown:focus-within .nav-dropdown,.nav-item-has-dropdown.is-open .nav-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,0)}
.nav-dropdown li{list-style:none}.nav-dropdown-link{display:flex;align-items:center;padding:.8rem .9rem;border-radius:12px;color:var(--c-charcoal);text-decoration:none;font-size:.88rem;font-weight:600;transition:background .2s ease,color .2s ease,transform .2s ease}.nav-dropdown-link:hover{background:var(--c-cream-alt);color:var(--c-green);transform:translateX(3px)}
@media(max-width:900px){.nav-item-has-dropdown{width:100%}.nav-dropdown{position:static;transform:none;width:auto;margin:.35rem 0 .5rem;padding:.3rem;box-shadow:none;border-radius:14px;display:none;opacity:1;visibility:visible;pointer-events:auto}.nav-item-has-dropdown.is-open .nav-dropdown{display:block}.nav-dropdown-link{padding:.7rem .85rem}.logo-text-only .logo-text-main{font-size:.88rem;white-space:normal;max-width:240px}.logo-text-only .logo-text-sub{font-size:.55rem}}

/* Aligned gallery: one consistent 4:3 image ratio */
.gallery-grid,.gallery-page-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;grid-auto-rows:auto;align-items:stretch}.gallery-grid>* ,.gallery-page-grid>*{grid-column:auto!important;grid-row:auto!important}.gallery-img-wrap,.gallery-page-item{aspect-ratio:4/3;min-height:0;height:auto;overflow:hidden;border-radius:18px}.gallery-img,.gallery-page-item .gallery-img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}.gallery-page-item{margin:0}.gallery-category-covers{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.7rem;margin:0 0 1.7rem}.gallery-category-cover{border:1px solid var(--c-border);background:var(--c-white);border-radius:16px;padding:0;overflow:hidden;text-align:left;cursor:pointer;box-shadow:0 8px 26px -18px rgba(15,42,29,.3);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;position:relative}.gallery-category-cover:hover{transform:translateY(-4px);box-shadow:0 18px 34px -20px rgba(15,42,29,.32);border-color:rgba(240,128,30,.45)}.gallery-category-cover img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.gallery-category-cover span{display:block;padding:.7rem .75rem .8rem;color:var(--c-green);font-size:.75rem;font-weight:700;line-height:1.2}.homepage-gallery-covers{margin-top:2rem}.homepage-gallery-covers .gallery-category-cover{display:block;text-decoration:none}
@media(max-width:1100px){.gallery-category-covers{grid-template-columns:repeat(4,minmax(0,1fr))}.gallery-grid,.gallery-page-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.gallery-category-covers{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-grid,.gallery-page-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}}
@media(max-width:460px){.gallery-category-covers{grid-template-columns:1fr 1fr}.gallery-grid,.gallery-page-grid{grid-template-columns:1fr}.logo-text-only .logo-text-main{font-size:.82rem;max-width:200px}}

/* About: President + Volunteers */
.president-section{padding-top:2.5rem}.president-layout{max-width:1120px;margin:0 auto;display:grid;grid-template-columns:.8fr 1.2fr;gap:4rem;align-items:center}.president-frame{position:relative;min-height:430px;border-radius:34px;background:var(--c-cream-alt);border:1px solid var(--c-border);overflow:hidden;box-shadow:var(--shadow-card)}.president-frame:before{content:"";position:absolute;inset:14px;border:1px dashed rgba(240,128,30,.55);border-radius:28px;z-index:1;pointer-events:none}.president-frame img{width:100%;height:100%;min-height:430px;object-fit:cover;display:block}.president-image-placeholder{height:430px;display:flex;align-items:center;justify-content:center;color:var(--c-gray);font-weight:600}.president-copy{max-width:680px}.president-quote{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,2.15rem);line-height:1.45;color:var(--c-charcoal);margin:1.25rem 0 1rem}.president-name{display:block;color:var(--c-green);font-size:1.05rem}.president-role{display:block;margin-top:.35rem;color:var(--c-gray);font-size:.85rem}.about-volunteers-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;max-width:1180px;margin:0 auto}.about-volunteer-card{padding:0;overflow:hidden}.about-volunteer-image{aspect-ratio:4/4.6;background:var(--c-cream-alt);overflow:hidden}.about-volunteer-image img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}.about-volunteer-card:hover .about-volunteer-image img{transform:scale(1.05)}.about-volunteer-copy{padding:1.35rem 1.4rem 1.45rem}.about-volunteer-copy h3{font-family:var(--font-display);font-size:1.3rem;color:var(--c-green);margin:.35rem 0}.about-volunteer-copy p{color:var(--c-orange);font-weight:700;margin:0 0 .6rem}.about-volunteer-copy span:last-child{color:var(--c-gray);font-size:.9rem;line-height:1.7}
@media(max-width:900px){.president-layout{grid-template-columns:1fr;gap:2rem}.about-volunteers-grid{grid-template-columns:1fr 1fr}.president-frame{min-height:360px}.president-frame img,.president-image-placeholder{min-height:360px;height:360px}}
@media(max-width:560px){.about-volunteers-grid{grid-template-columns:1fr}}

/* Cause pages */
.cause-hero{max-width:1320px;margin:0 auto;padding:5rem 1.75rem 4rem;display:grid;grid-template-columns:1.05fr .95fr;gap:3.5rem;align-items:center;position:relative}.cause-hero-copy{max-width:680px}.cause-hero-visual{position:relative;min-height:540px;display:grid;place-items:center}.cause-hero-frame{position:relative;width:min(520px,92%);height:520px;overflow:hidden;box-shadow:var(--shadow-card);z-index:2}.cause-hero-frame img{width:100%;height:100%;object-fit:cover;display:block}.cause-hero-orb{position:absolute;border-radius:50%;pointer-events:none}.cause-hero-orb.orb-a{width:88px;height:88px;top:4%;right:4%;background:rgba(240,128,30,.18)}.cause-hero-orb.orb-b{width:120px;height:120px;bottom:2%;left:7%;background:rgba(22,60,44,.09)}
.cause-frame-education{border-radius:46% 46% 24px 24px;transform:rotate(-1deg)}.cause-frame-healthcare{border-radius:26px 46% 26px 46%;transform:rotate(1deg)}.cause-frame-women{border-radius:50% 24px 50% 24px}.cause-frame-child{border-radius:44px 44px 110px 44px}.cause-frame-environment{border-radius:24px 110px 24px 110px;transform:rotate(-2deg)}.cause-frame-community{border-radius:80px 24px 80px 24px;transform:rotate(2deg)}
.cause-story-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:3rem;align-items:start;max-width:1160px;margin:0 auto}.cause-focus-panel{padding:1.25rem 1.4rem}.cause-focus-row{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-top:1px solid var(--c-border)}.cause-focus-row span{font-family:var(--font-display);font-weight:800;color:var(--c-orange)}.cause-focus-row strong{color:var(--c-green)}.cause-gallery-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}.cause-gallery-card{margin:0;background:var(--c-white);border:1px solid var(--c-border);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-soft)}.cause-gallery-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.cause-gallery-card figcaption{padding:.75rem .85rem;color:var(--c-charcoal);font-size:.82rem;font-weight:600}.cause-cta-band{background:var(--c-green);color:var(--c-white);border-radius:28px;max-width:1180px;margin:0 auto 5rem;padding:4.3rem 3rem}.cause-cta-band .dark-callout-heading{color:var(--c-white);max-width:20ch}.cause-cta-band .dark-callout-copy{color:rgba(251,246,236,.82);max-width:58ch}
@media(max-width:1024px){.cause-hero{grid-template-columns:1fr}.cause-hero-copy{max-width:760px}.cause-hero-visual{min-height:440px}.cause-hero-frame{height:440px}.cause-story-layout{grid-template-columns:1fr}.cause-gallery-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.cause-hero{padding:3.4rem 1.1rem 2.4rem}.cause-hero-visual{min-height:340px}.cause-hero-frame{width:88vw;height:340px}.cause-gallery-grid{grid-template-columns:1fr 1fr}.cause-cta-band{padding:2.7rem 1.4rem;margin-bottom:3rem}}

/* Distinct inner-page hero silhouettes */
.ppwf-about-page .inner-hero-media img{border-radius:56% 28px 56% 28px;transform:rotate(-1deg)}
.ppwf-about-page .inner-hero-media::before{border-radius:52% 24px 52% 24px;transform:rotate(3deg)}
.ppwf-events-page .inner-hero-media img{border-radius:28px 64px 28px 64px;transform:rotate(1.2deg)}
.ppwf-events-page .inner-hero-media::before{border-radius:24px 58px 24px 58px;transform:rotate(-3deg)}
.ppwf-contact-page .inner-hero-media img{border-radius:80px 28px 28px 80px;transform:rotate(-1.2deg)}
.ppwf-contact-page .inner-hero-media::before{border-radius:68px 22px 22px 68px;transform:rotate(3deg)}
.ppwf-gallery-page .inner-hero{padding-bottom:3rem}.ppwf-gallery-page .inner-hero-copy{max-width:820px}.ppwf-causes-page .inner-hero-orbit img{border-radius:42% 58% 50% 50% / 50% 44% 56% 50%;transform:rotate(-2deg)}

/* PPWF v4.1 — clickable contact details */
.ppwf-contact-link,.ppwf-footer-contact-link{color:inherit;text-decoration:none}.ppwf-contact-link:hover,.ppwf-footer-contact-link:hover{color:var(--c-orange);text-decoration:underline;text-underline-offset:3px}.footer-bottom .ppwf-footer-contact-link{color:rgba(251,246,236,.82)}.footer-bottom .ppwf-footer-contact-link:hover{color:var(--c-orange)}
@media(max-width:900px){.nav-item-has-dropdown{padding-bottom:0;margin-bottom:0}.nav-item-has-dropdown:after{display:none}}

/* ========================================================================
 * PPWF V4.4 — MOBILE-ONLY REFINEMENT
 * Desktop styles are intentionally untouched. Everything below is scoped
 * strictly to touch/smaller viewports so desktop remains pixel-stable.
 * ======================================================================== */
@media (max-width: 900px){
  html,body{max-width:100%;overflow-x:hidden}
  body.ppwf-mobile-menu-open{overflow:hidden}

  /* Header / navigation */
  .site-header{position:fixed!important;top:0!important;left:0!important;right:0!important;width:100%!important;z-index:10000!important}
  body.ppwf-theme{padding-top:78px!important}
  .header-inner{min-height:68px;padding:.65rem .9rem!important;gap:.65rem!important}
  .logo-text-only{min-width:0;max-width:calc(100vw - 96px)}
  .logo-text-only .logo-text-main{font-size:.92rem!important;white-space:normal!important;line-height:1.05!important}
  .logo-text-only .logo-text-sub{font-size:.5rem!important;letter-spacing:.09em!important}
  .header-cta-group{margin-left:auto;gap:.45rem!important}
  .mobile-menu-toggle{display:flex!important;flex:0 0 42px;width:42px;height:42px;border-radius:12px;background:var(--c-white);border:1px solid var(--c-border);align-items:center;justify-content:center;touch-action:manipulation}
  .main-nav{position:fixed!important;left:10px!important;right:10px!important;top:72px!important;width:auto!important;max-height:calc(100svh - 84px)!important;overflow:auto!important;overscroll-behavior:contain!important;background:rgba(251,246,236,.985)!important;border:1px solid var(--c-border)!important;border-radius:18px!important;box-shadow:0 24px 60px -28px rgba(15,42,29,.5)!important;padding:.55rem!important;display:none!important;z-index:10002!important}
  .main-nav.is-open{display:block!important}
  .main-nav .nav-list{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:2px!important}
  .main-nav .nav-link{display:flex!important;align-items:center!important;justify-content:space-between!important;width:100%!important;min-height:46px!important;padding:.78rem .85rem!important;border-radius:12px!important;font-size:.95rem!important;touch-action:manipulation}
  .main-nav .nav-link:active{background:var(--c-cream-alt)}
  .nav-item-has-dropdown{padding-bottom:0!important;margin-bottom:0!important;width:100%!important}
  .nav-dropdown-toggle{gap:.5rem!important}
  .nav-chevron{margin-left:auto!important;font-size:.78rem!important}
  .nav-dropdown{position:static!important;left:auto!important;top:auto!important;transform:none!important;width:auto!important;margin:.15rem 0 .4rem!important;padding:.28rem!important;display:none!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;border:1px solid rgba(22,60,44,.1)!important;box-shadow:none!important;border-radius:14px!important;background:rgba(243,236,220,.72)!important}
  .nav-item-has-dropdown.is-open .nav-dropdown{display:block!important}
  .nav-dropdown-link{min-height:42px!important;padding:.64rem .78rem!important;font-size:.86rem!important;border-radius:10px!important;touch-action:manipulation}
  .nav-dropdown-link:active{background:rgba(240,128,30,.12)!important}

  /* Global content width + touch spacing */
  .hero-section,.about-section,.causes-section,.events-section,.gallery-section{padding-left:1rem!important;padding-right:1rem!important}
  .hero-section{padding-top:2.3rem!important}
  .hero-grid{gap:1.1rem!important}
  .hero-text-col{padding:1rem 0 .4rem!important;max-width:none!important}
  .hero-heading.ppwf-hero-title{font-size:clamp(2.25rem,11.7vw,3.55rem)!important;line-height:.98!important;letter-spacing:-.028em!important;max-width:100%!important}
  .hero-heading-line{white-space:normal!important;display:block!important}
  .hero-tagline{font-size:1rem!important;line-height:1.55!important;max-width:34ch!important}
  .hero-description{font-size:.94rem!important;line-height:1.72!important;max-width:42ch!important}
  .hero-btn-group{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;gap:.7rem!important}
  .hero-btn-group .btn{width:100%!important;justify-content:center!important;min-height:48px!important}
  .hero-image-col{width:100%!important;min-width:0!important}
  .hero-image{height:min(86vw,420px)!important;width:100%!important;object-fit:cover!important;border-radius:130px 130px 24px 24px!important}
  .hero-image-shape{display:none!important}
  .stats-bar-wrap{margin-top:-1.1rem!important;padding-bottom:2.1rem!important}
  .stats-bar{display:grid!important;grid-template-columns:1fr 1fr!important;padding:1.2rem!important;gap:.9rem!important;border-radius:18px!important}
  .stat-divider{display:none!important}
  .stat-item{min-width:0!important;gap:.6rem!important}
  .stat-number{font-size:1.18rem!important}
  .stat-label{font-size:.68rem!important}

  .section-heading{font-size:clamp(1.75rem,8vw,2.3rem)!important;line-height:1.12!important}
  .section-body{font-size:.94rem!important;line-height:1.72!important}
  .section-intro{padding:0!important;margin-bottom:2.2rem!important}
  .section-cta-center{margin-top:2rem!important}

  /* Cards / grids */
  .causes-grid,.projects-row,.events-grid,.testimonials-grid{grid-template-columns:1fr!important;gap:1rem!important}
  .cause-card,.project-card,.event-card,.testimonial-card{border-radius:18px!important}
  .cause-card,.project-card,.testimonial-card{padding:1.25rem!important}
  .event-card{padding:1.15rem!important;gap:1rem!important;display:grid!important;grid-template-columns:78px 1fr!important}
  .event-date{width:74px!important;height:74px!important}
  .project-img{height:190px!important}
  .values-list{grid-template-columns:1fr!important;gap:1rem!important}
  .about-grid{grid-template-columns:1fr!important;gap:2.4rem!important}
  .about-image-col{min-height:360px!important}
  .about-img-main{width:78%!important;height:280px!important}
  .about-img-top{width:42%!important;height:150px!important}
  .about-img-bottom{width:40%!important;height:150px!important}
  .about-badge{width:118px!important;height:118px!important;font-size:.72rem!important}
  .volunteers-block{margin-top:3.2rem!important}
  .volunteers-grid{grid-template-columns:1fr 1fr!important;gap:.75rem!important;max-width:none!important}
  .volunteer-card{border-radius:17px!important}
  .volunteer-body{padding:1rem!important}
  .volunteer-name{font-size:1.05rem!important}
  .volunteer-role{font-size:.68rem!important;letter-spacing:.08em!important}
  .volunteer-bio{font-size:.78rem!important;line-height:1.55!important}

  /* Inner page hero / blocks */
  .inner-hero{padding:2.5rem 1rem 1.8rem!important;gap:1.25rem!important;grid-template-columns:1fr!important}
  .inner-hero-copy{max-width:none!important}
  .inner-hero-heading{font-size:clamp(2.25rem,11vw,3.4rem)!important;line-height:1.02!important}
  .inner-hero-lead{font-size:.95rem!important;line-height:1.7!important}
  .inner-hero-media{min-height:310px!important;width:100%!important;order:2!important}
  .inner-hero-media img{height:330px!important;width:100%!important;object-fit:cover!important}
  .inner-section{padding:3.4rem 1rem!important}
  .cream-band,.impact-strip-section{padding-left:1rem!important;padding-right:1rem!important}
  .split-feature,.impact-strip,.contact-layout,.map-panel,.map-section-card{grid-template-columns:1fr!important}
  .three-col,.causes-page-grid,.process-grid,.impact-strip-grid{grid-template-columns:1fr!important;gap:1rem!important}
  .cause-hero{grid-template-columns:1fr!important;padding:2.6rem 1rem 2rem!important;gap:1.25rem!important}
  .cause-hero-copy{max-width:none!important}
  .cause-hero-visual{min-height:320px!important}
  .cause-hero-frame{width:100%!important;height:320px!important}
  .cause-story-layout{grid-template-columns:1fr!important}
  .cause-gallery-grid{grid-template-columns:1fr 1fr!important;gap:.7rem!important}
  .cause-cta-band{padding:2.2rem 1rem!important;margin-bottom:2.2rem!important}

  /* Gallery: consistent 4:3 ratio on every tile */
  .gallery-grid,.gallery-page-grid{display:grid!important;grid-template-columns:1fr 1fr!important;grid-auto-rows:auto!important;gap:.7rem!important}
  .gallery-grid > *, .gallery-page-grid > *{grid-column:span 1!important;grid-row:span 1!important;aspect-ratio:4/3!important;min-height:0!important;height:auto!important}
  .gallery-img-wrap,.gallery-page-item,.gallery-fallback-card{height:100%!important;aspect-ratio:4/3!important}
  .gallery-img,.gallery-page-item img,.gallery-fallback-card img{width:100%!important;height:100%!important;object-fit:cover!important;aspect-ratio:4/3!important}
  .gallery-page-item figcaption{font-size:.72rem!important;min-height:auto!important;padding:.6rem .7rem!important}
  .gallery-filters{overflow-x:auto!important;justify-content:flex-start!important;flex-wrap:nowrap!important;padding-bottom:.25rem!important;-webkit-overflow-scrolling:touch!important;scrollbar-width:none!important}
  .gallery-filters::-webkit-scrollbar{display:none!important}
  .gallery-filter-btn{flex:0 0 auto!important;min-height:40px!important}

  /* Forms + map */
  .ppwf-contact-form .form-grid{grid-template-columns:1fr!important;gap:.9rem!important}
  .ppwf-contact-form label.full{grid-column:auto!important}
  .contact-form-card{padding:1.25rem!important;border-radius:18px!important}
  .contact-info-list{gap:.65rem!important}
  .map-orbit{height:260px!important}
  .map-embed-wrap,.map-embed-wrap iframe{min-height:280px!important;height:280px!important}
  .map-section-card{gap:1rem!important}

  /* Footer */
  .newsletter-inner{grid-template-columns:1fr!important;gap:1rem!important;padding:1rem!important}
  .newsletter-form{display:flex!important;flex-direction:column!important;gap:.65rem!important}
  .newsletter-form input,.newsletter-form .btn{width:100%!important;min-height:48px!important}
  .footer-columns{grid-template-columns:1fr 1fr!important;gap:1.3rem!important}
  .footer-col:first-child{grid-column:1/-1!important}
  .footer-bottom{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:.4rem!important;text-align:left!important;padding:1rem!important}
  .footer-social-list{flex-wrap:wrap!important}
  .footer-social-link{width:42px!important;height:42px!important}

  /* Keep all visual content visible if motion JS is delayed on touch devices. */
  .ppwf-universal-motion,.ppwf-motion-target,.ppwf-premium-card,.ppwf-word-animate,.ppwf-word{transition-duration:.45s!important}
  body.ppwf-motion-ready .ppwf-universal-motion{opacity:1!important;transform:none!important}
  body.ppwf-motion-ready .gallery-grid .ppwf-universal-motion,
  body.ppwf-motion-ready .gallery-page-grid .ppwf-universal-motion{opacity:1!important;transform:none!important}
  .ppwf-cursor,#ppwf-cursor-canvas,.ppwf-cursor-tail{display:none!important}
  body.ppwf-clean-cursor,body.ppwf-clean-cursor *{cursor:auto!important}
}

@media (max-width: 560px){
  body.ppwf-theme{padding-top:74px!important}
  .header-inner{min-height:64px!important;padding:.6rem .75rem!important}
  .mobile-menu-toggle{width:40px!important;height:40px!important}
  .main-nav{top:68px!important;left:8px!important;right:8px!important;max-height:calc(100svh - 78px)!important}
  .logo-text-only .logo-text-main{font-size:.78rem!important;max-width:190px!important}
  .logo-text-only .logo-text-sub{font-size:.43rem!important}
  .hero-section{padding-top:1.9rem!important}
  .hero-heading.ppwf-hero-title{font-size:clamp(2.2rem,13.2vw,3.15rem)!important}
  .hero-image{height:315px!important;border-radius:100px 100px 20px 20px!important}
  .stats-bar{grid-template-columns:1fr!important;padding:1rem!important}
  .stat-item{padding:.25rem 0}
  .gallery-grid,.gallery-page-grid{grid-template-columns:1fr!important}
  .gallery-grid > *, .gallery-page-grid > *{aspect-ratio:4/3!important}
  .volunteers-grid{grid-template-columns:1fr!important;max-width:390px!important;margin-left:auto!important;margin-right:auto!important}
  .volunteer-photo-wrap{aspect-ratio:4/3!important}
  .footer-columns{grid-template-columns:1fr!important}
  .footer-col:first-child{grid-column:auto!important}
  .footer-bottom{font-size:.76rem!important}
  .cause-gallery-grid{grid-template-columns:1fr!important}
}

/* Touch devices: remove hover-only transforms that feel sticky on phones. */
@media (pointer: coarse){
  .btn:hover,.carousel-arrow:hover,.gallery-filter-btn:hover,
  .project-card:hover,.cause-card:hover,.event-card:hover,.testimonial-card:hover,
  .volunteer-card:hover,.gallery-img:hover{transform:none!important;box-shadow:inherit!important}
  .gallery-img{transform:none!important}
}

/* v4.5 mobile volunteer image hardening */
.volunteer-photo,.about-volunteer-image img,.testimonial-avatar{display:block!important;visibility:visible!important;max-width:100%;object-fit:cover;}
.volunteer-photo-wrap,.about-volunteer-image{background:var(--c-cream-alt);overflow:hidden;}
@media (max-width:900px){.volunteer-photo,.about-volunteer-image img{opacity:1!important;visibility:visible!important;}}

/* V4.6 MOBILE-ONLY BUTTON REFINEMENT
   Desktop is intentionally untouched. This block only applies below 768px. */
@media (max-width: 767px){
  /* Hero CTA groups across Home, About, Causes, Events and Cause detail pages */
  .hero-btn-group,
  .hero-btn-group.ppwf-anim-buttons,
  .footer-cta-btns{
    width:100% !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    gap:.75rem !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  .hero-btn-group .btn,
  .footer-cta-btns .btn,
  .cta-band-inner > .btn,
  .cause-cta-band .hero-btn-group .btn,
  .dark-callout .hero-btn-group .btn{
    width:auto !important;
    max-width:min(88vw, 300px) !important;
    min-width:0 !important;
    min-height:46px !important;
    height:auto !important;
    box-sizing:border-box !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding:.78rem 1.25rem !important;
    justify-content:center !important;
    align-items:center !important;
    text-align:center !important;
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    flex:0 0 auto !important;
  }

  /* Center standalone CTA buttons on mobile */
  .section-cta-center,
  .cta-band-inner,
  .cause-cta-band > div:last-child{
    text-align:center !important;
  }

  .section-cta-center .btn,
  .cta-band-inner > .btn{
    display:inline-flex !important;
    width:auto !important;
    max-width:min(88vw, 300px) !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* Keep functional full-width controls intentionally full-width */
  .ppwf-contact-form .form-submit-btn,
  .newsletter-form .btn{
    width:100% !important;
    max-width:none !important;
  }
}
