:root {
    --brand-green: #0f7a45;
    --brand-green-dark: #075c34;
    --brand-amber: #f59e0b;
    --brand-ink: #10231b;
    --brand-muted: #5f6f67;
    --surface: #ffffff;
    --surface-soft: #f6faf7;
    --border-soft: rgba(15, 122, 69, 0.13);
    --shadow-soft: 0 18px 45px rgba(16, 35, 27, 0.10);
    --shadow-hover: 0 24px 60px rgba(16, 35, 27, 0.16);
}

html { scroll-padding-top: 110px; }
body { overflow-x: hidden; text-rendering: optimizeLegibility; }

.skip-link {
    position: fixed;
    left: 1rem;
    top: -5rem;
    z-index: 10000;
    padding: .8rem 1rem;
    border-radius: .7rem;
    background: #111827;
    color: #fff;
    font-weight: 700;
    transition: top .2s ease;
}
.skip-link:focus { top: 1rem; }

.site-section { position: relative; padding: clamp(4rem, 7vw, 7rem) 0; }
.site-section--soft { background: linear-gradient(180deg, #f8fbf9 0%, #f2f8f4 100%); }
.section-kicker {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-bottom: .8rem;
    color: var(--brand-green);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}
.section-kicker::before {
    content: '';
    width: 2rem;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--brand-green), var(--brand-amber));
}
.section-title { color: var(--brand-ink); font-weight: 800; line-height: 1.12; }
.section-copy { color: var(--brand-muted); line-height: 1.8; }

.modern-card {
    height: 100%;
    border: 1px solid var(--border-soft);
    border-radius: 1.35rem;
    background: rgba(255,255,255,.96);
    box-shadow: var(--shadow-soft);
    transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease;
}
.modern-card:hover {
    transform: translateY(-7px);
    border-color: rgba(15, 122, 69, .3);
    box-shadow: var(--shadow-hover);
}

.project-card img,
.gallery-card img,
.modern-card img { transition: transform .7s cubic-bezier(.2,.75,.25,1); }
.project-card:hover img,
.gallery-card:hover img,
.modern-card:hover img { transform: scale(1.055); }

.progress-modern {
    height: .62rem;
    overflow: hidden;
    border-radius: 999px;
    background: #e8f0eb;
}
.progress-modern > span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--brand-green), #24a665, var(--brand-amber));
    box-shadow: 0 0 16px rgba(15, 122, 69, .25);
}

.impact-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
@media (min-width: 768px) { .impact-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.impact-card {
    position: relative;
    overflow: hidden;
    padding: 1.5rem;
    border: 1px solid var(--border-soft);
    border-radius: 1.25rem;
    background: #fff;
    box-shadow: var(--shadow-soft);
}
.impact-card::after {
    content: '';
    position: absolute;
    width: 7rem;
    height: 7rem;
    right: -2.5rem;
    bottom: -3rem;
    border-radius: 999px;
    background: radial-gradient(circle, rgba(245,158,11,.18), transparent 68%);
}
.impact-card__value { color: var(--brand-green-dark); font-size: clamp(1.65rem, 3vw, 2.45rem); font-weight: 800; }
.impact-card__label { margin-top: .25rem; color: var(--brand-muted); font-size: .9rem; font-weight: 600; }

.btn-modern {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .55rem;
    min-height: 2.9rem;
    padding: .75rem 1.35rem;
    border-radius: 999px;
    font-weight: 800;
    transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.btn-modern:hover { transform: translateY(-2px); }
.btn-modern--primary { color: #fff; background: linear-gradient(135deg, var(--brand-green), var(--brand-green-dark)); box-shadow: 0 12px 28px rgba(15,122,69,.25); }
.btn-modern--accent { color: #fff; background: linear-gradient(135deg, #f59e0b, #d97706); box-shadow: 0 12px 28px rgba(245,158,11,.25); }

.floating-action-stack {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 70;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .72rem;
}
.floating-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 999px;
    color: #fff;
    box-shadow: 0 15px 35px rgba(0,0,0,.22);
    transition: transform .2s ease, box-shadow .2s ease;
}
.floating-action:hover { transform: translateY(-3px) scale(1.04); box-shadow: 0 18px 42px rgba(0,0,0,.28); }
.floating-action--whatsapp { background: #25D366; }
.floating-action--call { background: #2563eb; }
.floating-action--donate { width: auto; padding: 0 1.2rem; background: linear-gradient(135deg, #f59e0b, #dc6b05); font-weight: 800; }
.floating-action__label { margin-left: .55rem; }

.back-to-top {
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
}
.back-to-top.is-visible { opacity: 1; visibility: visible; transform: translateY(0); }

.reveal-on-scroll { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal-on-scroll.is-visible { opacity: 1; transform: none; }

img[loading='lazy'] { background: #eef4f0; }
:focus-visible { outline: 3px solid rgba(245,158,11,.75); outline-offset: 3px; }

@media (max-width: 640px) {
    .floating-action-stack { right: .75rem; bottom: .75rem; }
    .floating-action { width: 3rem; height: 3rem; }
    .floating-action--donate { width: 3rem; padding: 0; }
    .floating-action--donate .floating-action__label { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
    .reveal-on-scroll { opacity: 1; transform: none; }
}


/* ============================================================
   APSHINFO — ADMIN-CONTROLLED FLOATING FESTIVAL MEDIA
   ============================================================ */
.s360-festival-float{
    position:fixed;
    left:var(--s360-festival-left,10px);
    bottom:var(--s360-festival-bottom,12px);
    z-index:68;
    width:var(--s360-festival-width,155px);
    max-width:28vw;
    opacity:var(--s360-festival-opacity,1);
    pointer-events:auto;
    filter:drop-shadow(0 8px 14px rgba(61,34,17,.18));
    transition:transform .2s ease,opacity .2s ease;
}
.s360-festival-float:hover{
    transform:translateY(-2px);
}
.s360-festival-float__link{
    display:block;
    width:100%;
    text-decoration:none;
}
.s360-festival-float__media{
    display:block;
    width:100%;
    height:auto;
    max-height:42vh;
    object-fit:contain;
    background:transparent;
    border:0;
}
.s360-festival-float__close{
    position:absolute;
    top:-7px;
    right:-7px;
    z-index:2;
    width:23px;
    height:23px;
    display:flex;
    align-items:center;
    justify-content:center;
    border:1px solid rgba(113,65,31,.42);
    border-radius:50%;
    background:rgba(255,250,240,.90);
    color:#6b3219;
    font:900 16px/1 Arial,sans-serif;
    cursor:pointer;
    box-shadow:0 4px 10px rgba(0,0,0,.13);
}
.s360-festival-float__close:hover{
    background:#fff;
}
.s360-festival-float--hide-desktop{
    display:none!important;
}

/* Donate: heart symbol with very tiny Donate text underneath */
.floating-action--donate-compact{
    width:3.05rem!important;
    height:3.05rem!important;
    padding:0!important;
    display:inline-flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:1px!important;
    border-radius:50%!important;
}
.floating-action--donate-compact i{
    font-size:1.15rem;
    line-height:1;
}
.floating-action--donate-compact .floating-action__label{
    display:block!important;
    margin:0!important;
    font-size:.50rem!important;
    line-height:1!important;
    font-weight:800!important;
    letter-spacing:.01em;
}

@media(max-width:640px){
    .s360-festival-float{
        width:var(--s360-festival-mobile-width,105px);
        max-width:31vw;
        left:max(5px,var(--s360-festival-left,10px));
        bottom:max(8px,var(--s360-festival-bottom,12px));
    }
    .s360-festival-float--hide-mobile{
        display:none!important;
    }
    .s360-festival-float--hide-desktop:not(.s360-festival-float--hide-mobile){
        display:block!important;
    }
    .floating-action--donate-compact{
        width:2.75rem!important;
        height:2.75rem!important;
    }
    .floating-action--donate-compact i{
        font-size:1.03rem;
    }
    .floating-action--donate-compact .floating-action__label{
        font-size:.46rem!important;
    }
}

@media(min-width:641px){
    .s360-festival-float--hide-mobile:not(.s360-festival-float--hide-desktop){
        display:block!important;
    }
}
