/* Progressive, one-time motion enhancements. Content remains visible without JS. */
.js-animations .home-introduction + .gallery-preview {
    border-top-color: transparent
}
.js-animations .home-introduction + .gallery-preview:before {
    content: '';
    position: absolute;
    top: -1px;
    left: 50%;
    width: 0;
    height: 1px;
    background: #c6a565;
    transform: translateX(-50%);
    transition: width 900ms cubic-bezier(.22,1,.36,1)
}
.js-animations .home-introduction + .gallery-preview.is-visible:before {
    width: 100%
}
.js-animations .reveal {
    opacity: 0;
    transition: opacity 800ms cubic-bezier(.22,1,.36,1),transform 800ms cubic-bezier(.22,1,.36,1)
}
.js-animations .reveal-up {
    transform: translateY(24px)
}
.js-animations .reveal-image {
    transform: scale(.98)
}
.js-animations .reveal.is-visible {
    opacity: 1;
    transform: none
}
.js-animations .stagger-item:nth-child(2) {
    transition-delay: 120ms
}
.js-animations .stagger-item:nth-child(3) {
    transition-delay: 240ms
}
.js-animations .stagger-item:nth-child(4) {
    transition-delay: 360ms
}
.js-animations .home-topbar {
    animation: nav-enter 800ms cubic-bezier(.22,1,.36,1) both
}
.js-animations .hero-frame {
    transform-origin: center;
    animation: frame-draw 1000ms cubic-bezier(.22,1,.36,1) both
}
.js-animations .hero-content .hero-kicker {
    animation: hero-rise 700ms 180ms cubic-bezier(.22,1,.36,1) both
}
.js-animations .hero-content h1 {
    animation: hero-rise 850ms 300ms cubic-bezier(.22,1,.36,1) both
}
.js-animations .hero-content h1 em {
    display: inline-block;
    animation: hero-rise 850ms 430ms cubic-bezier(.22,1,.36,1) both
}
.js-animations .hero-description,.js-animations .hero-actions {
    animation: hero-rise 800ms 560ms cubic-bezier(.22,1,.36,1) both
}
.home-page .btn:hover,.home-page .hero-btn:hover,.gallery-preview-link:hover {
    transform: translateY(-2px)
}
.membership-tier-card {
    transition: transform 700ms cubic-bezier(.22,1,.36,1),box-shadow 700ms cubic-bezier(.22,1,.36,1)
}
.membership-tier-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 36px rgba(8,41,33,.16)
}
.gold-tier:hover:before,.platinum-tier:hover:before {
    animation: tier-sweep 900ms cubic-bezier(.22,1,.36,1) both
}
.digital-card {
    transition: transform 800ms cubic-bezier(.22,1,.36,1),box-shadow 800ms cubic-bezier(.22,1,.36,1)
}
.digital-card:hover {
    transform: translateY(-3px)
}
.digital-card:hover:before {
    animation: card-reflection 900ms cubic-bezier(.22,1,.36,1) both
}
.section-divider {
    position: relative
}
.js-animations .section-divider {
    border-top-color: transparent
}
.js-animations .section-divider:before {
    content: '';
    position: absolute;
    top: -1px;
    left: 50%;
    width: 0;
    height: 1px;
    background: #c6a565;
    transform: translateX(-50%);
    transition: width 900ms cubic-bezier(.22,1,.36,1)
}
.js-animations .section-divider.is-visible:before {
    width: 100%
}
.carousel-slide {
    transition: opacity 700ms cubic-bezier(.22,1,.36,1)
}
.carousel-slide:hover .carousel-media img {
    transform: scale(1.025)
}
.carousel-arrow {
    transition: background-color 500ms ease,color 500ms ease,border-color 500ms ease
}
.carousel-arrow:hover {
    background: #082b23;
    color: #c6a565;
    border-color: #c6a565
}
.carousel-dots button {
    transition: transform 500ms ease,background-color 500ms ease
}
/* Defines the keyframes and reduced-motion fallback for optional page effects. */
@keyframes nav-enter {
    from {
        opacity: 0;
        transform: translateY(-12px)
    }
    to {
        opacity: 1;
        transform: none
    }
}
@keyframes frame-draw {
    from {
        opacity: 0;
        transform: scale(.96)
    }
    to {
        opacity: 1;
        transform: scale(1)
    }
}
@keyframes hero-rise {
    from {
        opacity: 0;
        transform: translateY(18px)
    }
    to {
        opacity: 1;
        transform: none
    }
}
@keyframes tier-sweep {
    from {
        transform: translateX(-20%)
    }
    to {
        transform: translateX(20%)
    }
}
@keyframes card-reflection {
    from {
        opacity: .15;
        transform: translateX(-8%)
    }
    to {
        opacity: .35;
        transform: translateX(8%)
    }
}
@media(prefers-reduced-motion:reduce) {
    *,*::before,*::after {
        animation-duration: .01ms!important;
        animation-iteration-count: 1!important;
        transition-duration: .01ms!important;
        scroll-behavior: auto!important
    }
    .js-animations .reveal {
        opacity: 1;
        transform: none
    }
}
