.gallery-page,
.event-detail,
.event-not-found {
    --gallery-ink: #1a2520;
    --gallery-muted: #69736d;
    --gallery-green: #075b31;
    --gallery-orange: #ed8a35;
    --gallery-paper: #f7f8f4;
    color: var(--gallery-ink);
}

.gallery-page {
    padding-bottom: 5rem;
    background: #fff;
}

.gallery-intro {
    padding: 9.75rem 0 2.4rem;
    background:
        radial-gradient(ellipse at 92% 20%, rgba(237, 138, 53, .12), transparent 34%),
        linear-gradient(180deg, #f8f8f4 0%, #fff 100%);
}

.gallery-intro .container,
.gallery-feature-section,
.gallery-events-section,
.event-detail-heading .container,
.event-story,
.event-photos-section,
.event-detail-footer {
    max-width: 1190px;
}

.gallery-intro h1,
.event-detail-heading h1,
.event-not-found h1 {
    margin: .4rem 0 .65rem;
    color: var(--gallery-ink);
    font: 800 clamp(2.4rem, 5vw, 4.25rem)/1.08 'Playfair Display', Georgia, serif;
    letter-spacing: -.035em;
}

.gallery-intro > .container > p:last-child {
    max-width: 610px;
    margin: 0;
    color: var(--gallery-muted);
    font-size: 1.06rem;
    line-height: 1.75;
}

.gallery-eyebrow {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin: 0;
    color: var(--gallery-green);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .13em;
    line-height: 1.5;
    text-transform: uppercase;
}

.gallery-eyebrow span {
    display: inline-block;
    width: 26px;
    height: 2px;
    border-radius: 2px;
    background: var(--gallery-orange);
}

.gallery-feature-section {
    margin-top: 1.2rem;
}

.gallery-feature {
    position: relative;
    height: clamp(360px, 51vw, 625px);
    overflow: hidden;
    border-radius: 20px;
    background: #1e2923;
    box-shadow: 0 24px 55px rgba(26, 37, 32, .14);
}

.gallery-slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    visibility: hidden;
    transition: opacity 2s ease-in-out, visibility 0s linear 2s;
}

.gallery-slide.is-active {
    z-index: 1;
    opacity: 1;
    visibility: visible;
    transition-delay: 0s;
}

.gallery-slide-link {
    position: absolute;
    inset: 0;
    display: block;
    overflow: hidden;
    color: #fff;
    text-decoration: none;
}

.gallery-slide-link:focus-visible {
    outline: 3px solid #fff;
    outline-offset: -7px;
}

.gallery-slide-link > img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 5s ease;
}

.gallery-slide.is-active .gallery-slide-link > img {
    transform: scale(1.035);
}

.gallery-slide-shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(11, 22, 16, .74), rgba(11, 22, 16, .24) 63%, rgba(11, 22, 16, .02)),
                linear-gradient(0deg, rgba(11, 22, 16, .48), transparent 65%);
}

.gallery-slide-content {
    position: absolute;
    right: 6.5rem;
    bottom: 3.2rem;
    left: 3.25rem;
    display: flex;
    max-width: 760px;
    flex-direction: column;
    align-items: flex-start;
}

.gallery-slide-kicker {
    margin-bottom: .85rem;
    color: rgba(255, 255, 255, .8);
    font-size: .82rem;
    font-weight: 700;
    letter-spacing: .075em;
    text-transform: uppercase;
}

.gallery-slide-title {
    max-width: 790px;
    color: #fff;
    font: 800 clamp(2rem, 4.3vw, 3.6rem)/1.1 'Playfair Display', Georgia, serif;
    letter-spacing: -.025em;
    text-shadow: 0 2px 14px rgba(0, 0, 0, .18);
}

.gallery-slide-summary {
    max-width: 670px;
    margin-top: .9rem;
    color: rgba(255, 255, 255, .88);
    font-size: 1rem;
    line-height: 1.65;
}

.gallery-slide-cta {
    display: inline-flex;
    align-items: center;
    gap: .65rem;
    margin-top: 1.45rem;
    padding-bottom: .3rem;
    border-bottom: 1px solid rgba(255, 255, 255, .62);
    color: #fff;
    font-size: .88rem;
    font-weight: 700;
}

.gallery-slide-cta i,
.gallery-card-link i {
    transition: transform .2s ease;
}

.gallery-slide-link:hover .gallery-slide-cta i,
.gallery-event-card:hover .gallery-card-link i {
    transform: translateX(4px);
}

.gallery-arrow {
    position: absolute;
    z-index: 2;
    top: 50%;
    display: grid;
    width: 48px;
    height: 48px;
    padding: 0;
    transform: translateY(-50%);
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .55);
    border-radius: 50%;
    background: rgba(18, 30, 22, .23);
    color: #fff;
    font-size: .9rem;
    backdrop-filter: blur(6px);
    cursor: pointer;
    transition: background .2s ease, transform .2s ease;
}

.gallery-arrow:hover {
    transform: translateY(-50%) scale(1.06);
    background: rgba(7, 91, 49, .88);
}

.gallery-arrow:focus-visible,
.gallery-dot:focus-visible,
.gallery-play:focus-visible {
    outline: 3px solid var(--gallery-orange);
    outline-offset: 3px;
}

.gallery-arrow-prev { left: 1.25rem; }
.gallery-arrow-next { right: 1.25rem; }

.gallery-feature-progress {
    position: absolute;
    z-index: 3;
    right: 0;
    bottom: 0;
    left: 0;
    height: 5px;
    overflow: hidden;
    background: rgba(255, 255, 255, .24);
    pointer-events: none;
}

.gallery-feature-progress-fill {
    display: block;
    width: 0;
    height: 100%;
    background: linear-gradient(90deg, var(--gallery-orange), #ffd08a);
    box-shadow: 0 0 14px rgba(237, 138, 53, .65);
    animation: gallery-feature-progress 5s linear forwards;
}

@keyframes gallery-feature-progress {
    to { width: 100%; }
}

.gallery-carousel-footer {
    display: flex;
    min-height: 50px;
    align-items: center;
    justify-content: center;
    gap: .9rem;
    padding-top: .9rem;
}

.gallery-dots {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
}

.gallery-dot {
    width: 8px;
    height: 8px;
    padding: 0;
    border: 0;
    border-radius: 20px;
    background: #d8ddd8;
    cursor: pointer;
    transition: width .25s ease, background .25s ease;
}

.gallery-dot.is-active {
    width: 25px;
    background: var(--gallery-green);
}

.gallery-play {
    display: grid;
    width: 30px;
    height: 30px;
    padding: 0;
    place-items: center;
    border: 1px solid #dce1dc;
    border-radius: 50%;
    background: #fff;
    color: var(--gallery-green);
    font-size: .68rem;
    cursor: pointer;
}

.gallery-events-section {
    padding-top: 4rem;
}

.gallery-section-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 1.55rem;
}

.gallery-section-heading h2 {
    margin: .45rem 0 0;
    color: var(--gallery-ink);
    font: 800 clamp(1.7rem, 3vw, 2.55rem)/1.16 'Playfair Display', Georgia, serif;
    letter-spacing: -.025em;
}

.gallery-section-heading > p {
    max-width: 340px;
    margin: 0 0 .2rem;
    color: var(--gallery-muted);
    font-size: .93rem;
    line-height: 1.65;
}

.gallery-event-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.25rem;
}

.gallery-event-card {
    overflow: hidden;
    border: 1px solid #e8ece7;
    border-radius: 15px;
    background: #fff;
    color: inherit;
    text-decoration: none;
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}

.gallery-event-card:hover {
    transform: translateY(-5px);
    border-color: #d9e4da;
    box-shadow: 0 18px 38px rgba(25, 49, 33, .1);
    color: inherit;
}

.gallery-card-image {
    position: relative;
    display: block;
    height: 220px;
    overflow: hidden;
    background: #e7ebe5;
}

.gallery-card-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s ease;
}

.gallery-event-card:hover .gallery-card-image img {
    transform: scale(1.04);
}

.gallery-card-arrow {
    position: absolute;
    right: .85rem;
    bottom: .85rem;
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 50%;
    background: #fff;
    color: var(--gallery-green);
    box-shadow: 0 5px 15px rgba(0, 0, 0, .12);
}

.gallery-card-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 1.2rem 1.3rem 1.35rem;
}

.gallery-card-meta {
    color: #737e75;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .045em;
    text-transform: uppercase;
}

.gallery-card-title {
    margin-top: .55rem;
    color: var(--gallery-ink);
    font: 700 1.25rem/1.32 'Playfair Display', Georgia, serif;
}

.gallery-card-summary {
    display: -webkit-box;
    overflow: hidden;
    margin-top: .55rem;
    color: var(--gallery-muted);
    font-size: .9rem;
    line-height: 1.6;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

.gallery-card-link {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-top: 1rem;
    color: var(--gallery-green);
    font-size: .84rem;
    font-weight: 800;
}

.gallery-empty {
    display: grid;
    min-height: 290px;
    padding: 2rem;
    place-items: center;
    align-content: center;
    border: 1px dashed #d8e0d8;
    border-radius: 16px;
    background: var(--gallery-paper);
    text-align: center;
}

.gallery-empty-icon {
    display: grid;
    width: 56px;
    height: 56px;
    margin-bottom: .9rem;
    place-items: center;
    border-radius: 50%;
    background: #e5efe7;
    color: var(--gallery-green);
    font-size: 1.35rem;
}

.gallery-empty h3 {
    margin: 0;
    font: 700 1.45rem 'Playfair Display', Georgia, serif;
}

.gallery-empty p {
    margin: .45rem 0 0;
    color: var(--gallery-muted);
}

.event-detail-heading {
    padding: 9.4rem 0 2.6rem;
    background:
        radial-gradient(ellipse at 91% 5%, rgba(237, 138, 53, .14), transparent 34%),
        #f7f8f4;
}

.event-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    margin-bottom: 2.2rem;
    color: #79837c;
    font-size: .8rem;
}

.event-breadcrumb a {
    color: var(--gallery-green);
    text-decoration: none;
}

.event-breadcrumb a:hover { text-decoration: underline; }

.event-detail-heading h1 {
    max-width: 900px;
    margin-top: .55rem;
}

.event-detail-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1.15rem;
    margin-top: 1.05rem;
    color: #58665d;
    font-size: .9rem;
}

.event-detail-meta span {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.event-detail-meta i { color: var(--gallery-green); }

.event-detail-summary {
    max-width: 720px;
    margin: 1.15rem 0 0;
    color: #657168;
    font-size: 1.04rem;
    line-height: 1.75;
}

.event-cover-wrap {
    max-width: 1190px;
    margin-top: -1.05rem;
}

.event-cover {
    display: block;
    width: 100%;
    max-height: 680px;
    border-radius: 18px;
    background: #e8ece7;
    object-fit: cover;
    box-shadow: 0 18px 45px rgba(28, 41, 32, .13);
}

.event-story {
    padding-top: 3.25rem;
}

.event-story-copy {
    max-width: 780px;
    margin: 0 auto;
}

.event-story-copy > p:not(.gallery-eyebrow) {
    color: #4e5b52;
    font-size: 1.04rem;
    line-height: 1.9;
}

.event-story-copy > .gallery-eyebrow { margin-bottom: 1rem; }

.event-photos-section {
    padding-top: 1.8rem;
}

.event-photo-count {
    padding: .45rem .8rem;
    border-radius: 30px;
    background: #edf3ee;
    color: var(--gallery-green);
    font-size: .78rem;
    font-weight: 700;
}

.event-photo-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.event-photo {
    position: relative;
    height: 250px;
    overflow: hidden;
    border-radius: 13px;
    background: #e7ebe5;
}

.event-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .35s ease;
}

.event-photo:hover img { transform: scale(1.04); }

.event-photo > span {
    position: absolute;
    right: .75rem;
    bottom: .75rem;
    display: grid;
    width: 35px;
    height: 35px;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, .94);
    color: var(--gallery-green);
}

.event-detail-footer {
    padding-top: 2.5rem;
    padding-bottom: 4rem;
}

.event-back-link {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    color: var(--gallery-green);
    font-size: .9rem;
    font-weight: 800;
    text-decoration: none;
}

.event-back-link:hover { color: #034220; text-decoration: underline; }

.event-not-found {
    max-width: 900px;
    min-height: 55vh;
    padding-top: 11rem;
    padding-bottom: 5rem;
}

.event-not-found > p:not(.gallery-eyebrow) {
    margin-bottom: 1.5rem;
    color: var(--gallery-muted);
}

@media (max-width: 767px) {
    .gallery-intro { padding: 8.6rem 0 1.6rem; }
    .gallery-feature { height: 500px; border-radius: 14px; }
    .gallery-slide-shade {
        background: linear-gradient(0deg, rgba(11, 22, 16, .78), rgba(11, 22, 16, .1) 77%);
    }
    .gallery-slide-content {
        right: 1.15rem;
        bottom: 1.55rem;
        left: 1.25rem;
    }
    .gallery-slide-title { font-size: clamp(1.8rem, 9vw, 2.75rem); }
    .gallery-slide-summary { font-size: .9rem; }
    .gallery-arrow { width: 40px; height: 40px; }
    .gallery-arrow-prev { left: .65rem; }
    .gallery-arrow-next { right: .65rem; }
    .gallery-events-section { padding-top: 2.7rem; }
    .gallery-section-heading { align-items: flex-start; flex-direction: column; gap: .7rem; }
    .gallery-event-grid,
    .event-photo-grid { grid-template-columns: 1fr; }
    .gallery-card-image { height: 225px; }
    .event-detail-heading { padding: 8.5rem 0 2rem; }
    .event-breadcrumb { margin-bottom: 1.5rem; }
    .event-cover-wrap { margin-top: -.4rem; }
    .event-cover { border-radius: 12px; }
    .event-photo { height: 240px; }
}

@media (prefers-reduced-motion: reduce) {
    .gallery-slide,
    .gallery-slide-link > img,
    .gallery-feature-progress-fill,
    .gallery-card-image img,
    .gallery-event-card,
    .event-photo img {
        transition-duration: .01ms !important;
    }
    .gallery-slide {
        transition-delay: 0ms !important;
    }
    .gallery-feature-progress-fill {
        width: 100%;
        animation: none !important;
    }
}
