/* Theme Custom CSS: Light Theme Velvet & Gold */

:root {
    --color-background: #fbf9f4;
    --color-surface: #f0eee9;
    --color-surface-card: #ffffff;
    --color-primary-gold: #735c00;
    --color-primary-gold-hover: #8d7100;
    --color-champagne: #e6ded9;
    --color-dark-chocolate: #eae8e3;
    --color-text-primary: #1b1c19;
    --color-text-muted: #635d5a;
    --ease-luxe: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Base Body Styles */
body {
    background-color: var(--color-background) !important;
    color: var(--color-text-primary) !important;
    font-family: 'Plus Jakarta Sans', sans-serif;
    overflow-x: hidden;
}

/* Luxurious Gold Text Gradient */
.text-gradient-gold {
    background: linear-gradient(135deg, #735c00 0%, #b3921b 45%, #d4af37 70%, #735c00 100%);
    background-size: 200% auto;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: gold-sheen 6s ease-in-out infinite;
}

@keyframes gold-sheen {
    0%, 100% { background-position: 0% center; }
    50% { background-position: 100% center; }
}

/* Glassmorphism Navigation */
.nav-glass {
    background: rgba(251, 249, 244, 0.85) !important;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(115, 92, 0, 0.12);
}

/* Nav link underline animation */
.nav-link {
    position: relative;
    padding-bottom: 2px;
}

/* Apply nav-link styles to WordPress Navigation block items in header */
.nav-glass .wp-block-navigation-item__content,
.nav-glass .wp-block-navigation-item > a,
a.nav-link {
    position: relative;
    padding: 6px 0;
    margin: 0 4px;
    color: var(--color-text-muted) !important;
    font-weight: 600;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    transition: color 0.3s var(--ease-luxe), transform 0.3s var(--ease-luxe);
    text-decoration: none !important;
    display: inline-block;
}

.nav-glass .wp-block-navigation-item__content:hover,
.nav-glass .wp-block-navigation-item > a:hover,
a.nav-link:hover {
    color: var(--color-primary-gold) !important;
    transform: translateY(-1px);
    text-decoration: none !important;
}

.nav-glass .wp-block-navigation-item__content::after,
.nav-glass .wp-block-navigation-item > a::after,
a.nav-link::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(90deg, var(--color-primary-gold), #d4af37, var(--color-primary-gold));
    border-radius: 2px;
    transform: scaleX(0);
    transform-origin: right;
    transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.nav-glass .wp-block-navigation-item__content:hover::after,
.nav-glass .wp-block-navigation-item > a:hover::after,
a.nav-link:hover::after {
    transform: scaleX(1);
    transform-origin: left;
}

/* Apply hover states to WordPress Navigation blocks in footer */
footer .wp-block-navigation-item__content {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: 14px;
    color: var(--color-text-muted) !important;
    transition: all 0.3s ease;
    text-decoration: none !important;
}

footer .wp-block-navigation-item__content:hover {
    color: var(--color-primary-gold) !important;
    padding-left: 4px;
}


/* Glowing Ambient Gold Shadow */
.shadow-gold-ambient {
    box-shadow: 0 10px 30px -10px rgba(115, 92, 0, 0.12);
    transition: all 0.4s var(--ease-luxe);
}

.shadow-gold-ambient:hover {
    box-shadow: 0 15px 40px -5px rgba(115, 92, 0, 0.25);
    transform: translateY(-5px);
}

/* Standard Premium Card */
.premium-card {
    background: linear-gradient(135deg, #ffffff 0%, #fcfbfa 100%);
    border: 1px solid rgba(115, 92, 0, 0.1);
    border-radius: 1rem;
    transition: all 0.5s var(--ease-luxe);
}

.premium-card:hover {
    border-color: rgba(115, 92, 0, 0.3);
    box-shadow: 0 18px 45px rgba(115, 92, 0, 0.12);
    transform: translateY(-6px);
}

/* Buttons */
.wp-block-button.btn-gold {
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    box-shadow: none !important;
}

.btn-gold,
.wp-block-button.btn-gold .wp-block-button__link {
    background-color: var(--color-primary-gold) !important;
    background-image: linear-gradient(135deg, #735c00 0%, #8d7100 100%) !important;
    color: #ffffff !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-weight: 600 !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.08em !important;
    text-transform: uppercase !important;
    padding: 0.65rem 1.65rem !important;
    border-radius: 9999px !important;
    transition: all 0.3s var(--ease-luxe) !important;
    box-shadow: 0 4px 15px rgba(115, 92, 0, 0.25) !important;
    position: relative !important;
    overflow: hidden !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-decoration: none !important;
    line-height: 1.25 !important;
    border: none !important;
    cursor: pointer !important;
}

/* Gold shine sweep on hover */
.btn-gold::before,
.wp-block-button.btn-gold .wp-block-button__link::before {
    content: '' !important;
    position: absolute !important;
    top: 0 !important;
    left: -80% !important;
    width: 50% !important;
    height: 100% !important;
    background: linear-gradient(105deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%) !important;
    transform: skewX(-20deg) !important;
    transition: left 0.65s var(--ease-luxe) !important;
    pointer-events: none !important;
}

.btn-gold:hover::before,
.wp-block-button.btn-gold:hover .wp-block-button__link::before,
.wp-block-button.btn-gold .wp-block-button__link:hover::before {
    left: 130% !important;
}

.btn-gold:hover,
.wp-block-button.btn-gold:hover .wp-block-button__link,
.wp-block-button.btn-gold .wp-block-button__link:hover {
    background-color: var(--color-primary-gold-hover) !important;
    color: #ffffff !important;
    transform: translateY(-2px) scale(1.03) !important;
    box-shadow: 0 8px 24px rgba(115, 92, 0, 0.4) !important;
}

.btn-gold:active,
.wp-block-button.btn-gold .wp-block-button__link:active {
    transform: translateY(0) scale(0.98) !important;
    box-shadow: 0 2px 10px rgba(115, 92, 0, 0.3) !important;
}

.btn-ghost-gold {
    background-color: transparent;
    color: var(--color-primary-gold);
    border: 1.5px solid var(--color-primary-gold);
    transition: all 0.3s ease;
}

.btn-ghost-gold:hover {
    background-color: rgba(115, 92, 0, 0.05);
    color: var(--color-primary-gold-hover);
    border-color: var(--color-primary-gold-hover);
    transform: scale(1.05);
    box-shadow: 0 6px 20px rgba(115, 92, 0, 0.15);
}

/* Font Families for custom theme compatibility */
.font-display-serif {
    font-family: 'Playfair Display', Georgia, serif;
}

.font-label-grotesk {
    font-family: 'Hanken Grotesk', sans-serif;
    letter-spacing: 0.1em;
}

/* ============================================
   Scroll Reveal System
   ============================================ */
.reveal {
    position: relative;
    opacity: 0;
    filter: blur(6px);
    transition:
        opacity 0.9s var(--ease-luxe),
        transform 0.9s var(--ease-luxe),
        filter 0.9s var(--ease-luxe);
    will-change: opacity, transform, filter;
}

.reveal.active {
    opacity: 1;
    filter: blur(0);
}

.fade-in {
    transform: translateY(40px);
}

.fade-in.active {
    transform: translateY(0);
}

.slide-left {
    transform: translateX(-60px);
}

.slide-left.active {
    transform: translateX(0);
}

.slide-right {
    transform: translateX(60px);
}

.slide-right.active {
    transform: translateX(0);
}

.scale-up {
    transform: scale(0.92);
}

.scale-up.active {
    transform: scale(1);
}

/* Staggered children: JS assigns incremental transition-delay
   to direct children of .reveal-stagger once revealed */
.reveal-stagger > * {
    opacity: 0;
    transform: translateY(24px);
    transition:
        opacity 0.8s var(--ease-luxe),
        transform 0.8s var(--ease-luxe);
}

.reveal-stagger.active > * {
    opacity: 1;
    transform: translateY(0);
}

/* ============================================
   Hero entrance animation (on page load)
   ============================================ */
@keyframes hero-rise {
    from {
        opacity: 0;
        transform: translateY(34px);
        filter: blur(5px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

.hero-stagger > * {
    opacity: 0;
    animation: hero-rise 1.1s var(--ease-luxe) forwards;
}

.hero-stagger > *:nth-child(1) { animation-delay: 0.15s; }
.hero-stagger > *:nth-child(2) { animation-delay: 0.35s; }
.hero-stagger > *:nth-child(3) { animation-delay: 0.55s; }
.hero-stagger > *:nth-child(4) { animation-delay: 0.75s; }
.hero-stagger > *:nth-child(5) { animation-delay: 0.95s; }
.hero-stagger > *:nth-child(6) { animation-delay: 1.15s; }

/* Hero right-side visual entrance */
@keyframes hero-visual-in {
    from {
        opacity: 0;
        transform: translateX(45px) scale(0.97);
        filter: blur(6px);
    }
    to {
        opacity: 1;
        transform: translateX(0) scale(1);
        filter: blur(0);
    }
}

.hero-visual {
    animation: hero-visual-in 1.2s var(--ease-luxe) 0.45s both;
}

/* Pulsing dot inside the hero badge */
.badge-dot {
    position: relative;
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 9999px;
    background: var(--color-primary-gold);
    flex-shrink: 0;
}

.badge-dot::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 9999px;
    background: inherit;
    animation: dot-ping 2.2s ease-out infinite;
}

@keyframes dot-ping {
    0% { transform: scale(1); opacity: 0.6; }
    80%, 100% { transform: scale(2.8); opacity: 0; }
}

/* Floating gold particles rising through the hero */
.hero-particles span {
    position: absolute;
    bottom: -12px;
    border-radius: 9999px;
    background: radial-gradient(circle, rgba(212, 175, 55, 0.9) 0%, rgba(212, 175, 55, 0) 70%);
    opacity: 0;
    animation: particle-rise linear infinite;
}

@keyframes particle-rise {
    0% { transform: translateY(0) scale(1); opacity: 0; }
    12% { opacity: 0.65; }
    85% { opacity: 0.15; }
    100% { transform: translateY(-92vh) scale(0.35); opacity: 0; }
}

.hero-particles span:nth-child(1) { left: 7%;  width: 6px; height: 6px; animation-duration: 15s; animation-delay: 0s; }
.hero-particles span:nth-child(2) { left: 21%; width: 4px; height: 4px; animation-duration: 19s; animation-delay: 3s; }
.hero-particles span:nth-child(3) { left: 34%; width: 7px; height: 7px; animation-duration: 13s; animation-delay: 6s; }
.hero-particles span:nth-child(4) { left: 48%; width: 5px; height: 5px; animation-duration: 17s; animation-delay: 1.5s; }
.hero-particles span:nth-child(5) { left: 61%; width: 6px; height: 6px; animation-duration: 14s; animation-delay: 8s; }
.hero-particles span:nth-child(6) { left: 74%; width: 4px; height: 4px; animation-duration: 20s; animation-delay: 4.5s; }
.hero-particles span:nth-child(7) { left: 86%; width: 7px; height: 7px; animation-duration: 16s; animation-delay: 10s; }
.hero-particles span:nth-child(8) { left: 94%; width: 5px; height: 5px; animation-duration: 18s; animation-delay: 7s; }

/* Glass info badges floating over the hero image */
.glass-badge {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(115, 92, 0, 0.22);
    border-radius: 1rem;
    padding: 0.7rem 1.2rem;
    box-shadow: 0 14px 35px rgba(115, 92, 0, 0.18);
    z-index: 10;
}

.float-badge {
    animation: badge-float 6s ease-in-out infinite;
}

@keyframes badge-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

/* Slow rotating decorative ring */
.ring-rotate {
    animation: spin-slow 40s linear infinite;
}

@keyframes spin-slow {
    to { transform: rotate(360deg); }
}

/* ============================================
   Occasions marquee strip
   ============================================ */
.marquee {
    overflow: hidden;
}

.marquee-track {
    display: flex;
    width: max-content;
    animation: marquee-scroll 36s linear infinite;
}

.marquee:hover .marquee-track {
    animation-play-state: paused;
}

@keyframes marquee-scroll {
    to { transform: translateX(-50%); }
}

.marquee-group {
    display: flex;
    align-items: center;
}

.marquee-item {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 600;
    font-size: 0.8rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    padding: 0 1.75rem;
    white-space: nowrap;
}

.marquee-sep {
    color: var(--color-primary-gold);
    opacity: 0.6;
    font-size: 0.8rem;
}

/* Slow cinematic Ken Burns pan-zoom for the hero background */
@keyframes ken-burns {
    0% { transform: scale(1.05) translateY(0); }
    50% { transform: scale(1.14) translateY(-1.5%); }
    100% { transform: scale(1.05) translateY(0); }
}

.hero-kenburns {
    animation: ken-burns 22s ease-in-out infinite;
    will-change: transform;
}

/* Floating ambient orbs (background glow accents) */
@keyframes orb-drift {
    0%, 100% { transform: translate(0, 0) scale(1); }
    33% { transform: translate(4%, -5%) scale(1.08); }
    66% { transform: translate(-4%, 4%) scale(0.95); }
}

.orb-float {
    animation: orb-drift 16s ease-in-out infinite;
}

/* Scroll-down indicator in hero */
@keyframes scroll-hint {
    0%, 100% { transform: translateY(0); opacity: 0.7; }
    50% { transform: translateY(10px); opacity: 1; }
}

.scroll-indicator {
    animation: scroll-hint 2.2s ease-in-out infinite;
}

/* ============================================
   Dividers
   ============================================ */
.gold-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--color-primary-gold) 50%, transparent 100%);
    opacity: 0.2;
    transform: scaleX(0.3);
    transition: transform 1.4s var(--ease-luxe), opacity 1.4s var(--ease-luxe);
}

.gold-divider.active {
    transform: scaleX(1);
    background: linear-gradient(90deg, 
        transparent 0%, 
        rgba(115, 92, 0, 0.25) 25%, 
        var(--color-primary-gold) 50%, 
        rgba(115, 92, 0, 0.25) 75%, 
        transparent 100%
    );
    background-size: 200% 100%;
    animation: divider-shimmer 8s linear infinite;
    opacity: 0.45;
}

/* ============================================
   Fountain toggle / selector
   ============================================ */
.fountain-toggle {
    display: flex;
    background: rgba(240, 238, 233, 0.8);
    border: 1px solid rgba(115, 92, 0, 0.15);
    border-radius: 9999px;
    padding: 4px;
    margin: 0 auto;
    width: fit-content;
    box-shadow: inset 0 2px 6px rgba(27, 28, 25, 0.05);
}

.fountain-toggle button {
    padding: 8px 24px;
    border-radius: 9999px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 600;
    transition: all 0.45s var(--ease-luxe);
    color: #635d5a;
}

.fountain-toggle button:hover:not(.active) {
    color: var(--color-primary-gold);
}

.fountain-toggle button.active {
    background: var(--color-primary-gold);
    color: #ffffff;
    box-shadow: 0 4px 14px rgba(115, 92, 0, 0.3);
}

/* Crossfade when switching fountain views */
@keyframes view-in {
    from {
        opacity: 0;
        transform: translateY(22px) scale(0.985);
        filter: blur(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

.view-switch-in {
    animation: view-in 0.7s var(--ease-luxe) both;
}

/* ============================================
   Contact form
   ============================================ */
.contact-input {
    background: #ffffff !important;
    border: 1px solid rgba(115, 92, 0, 0.15) !important;
    border-radius: 0.5rem !important;
    color: var(--color-text-primary) !important;
    transition: all 0.3s ease !important;
}

.contact-input:focus {
    border-color: var(--color-primary-gold) !important;
    box-shadow: 0 0 0 3px rgba(115, 92, 0, 0.12) !important;
    outline: none !important;
}

/* Apply contact-input styles to Contact Form 7 fields */
.wpcf7-form .wpcf7-text,
.wpcf7-form .wpcf7-textarea,
.wpcf7-form .wpcf7-select,
.wpcf7-form select,
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form input[type="date"] {
    width: 100% !important;
    background: #ffffff !important;
    border: 1px solid rgba(115, 92, 0, 0.15) !important;
    border-radius: 0.5rem !important;
    color: var(--color-text-primary) !important;
    padding: 0.75rem 1rem !important;
    transition: all 0.3s ease !important;
    font-family: 'Plus Jakarta Sans', sans-serif !important;
    font-size: 15px !important;
}

.wpcf7-form .wpcf7-text:focus,
.wpcf7-form .wpcf7-textarea:focus,
.wpcf7-form input[type="text"]:focus,
.wpcf7-form input[type="email"]:focus,
.wpcf7-form input[type="tel"]:focus,
.wpcf7-form input[type="date"]:focus {
    border-color: var(--color-primary-gold) !important;
    box-shadow: 0 0 0 3px rgba(115, 92, 0, 0.12) !important;
    outline: none !important;
}

/* Apply button styles to CF7 submit button */
.wpcf7-form input[type="submit"],
.wpcf7-form .wpcf7-submit {
    background-color: var(--color-primary-gold) !important;
    color: #ffffff !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.1em !important;
    font-family: 'Hanken Grotesk', sans-serif !important;
    font-size: 0.875rem !important;
    padding: 1rem 2rem !important;
    border-radius: 9999px !important;
    border: none !important;
    cursor: pointer !important;
    width: 100% !important;
    box-shadow: 0 4px 15px rgba(115, 92, 0, 0.15) !important;
    transition: all 0.3s ease !important;
}

.wpcf7-form input[type="submit"]:hover,
.wpcf7-form .wpcf7-submit:hover {
    background-color: var(--color-primary-gold-hover) !important;
    box-shadow: 0 6px 25px rgba(115, 92, 0, 0.35) !important;
    transform: translateY(-2px) !important;
}

/* Style CF7 checkbox list & contact service checkboxes */
.cf7-checkbox-grid .wpcf7-checkbox {
    display: grid !important;
    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;
    gap: 0.75rem !important;
}

@media (min-width: 640px) {
    .cf7-checkbox-grid .wpcf7-checkbox {
        grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }
}

.cf7-checkbox-grid .wpcf7-list-item {
    margin: 0 !important;
    display: block !important;
}

.cf7-checkbox-grid .wpcf7-list-item-label {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 0.75rem !important;
    background-color: var(--color-surface) !important;
    padding: 0.75rem 1rem !important;
    border-radius: 0.75rem !important;
    border: 1px solid rgba(115, 92, 0, 0.15) !important;
    cursor: pointer !important;
    transition: all 0.3s ease !important;
    font-family: 'Plus Jakarta Sans', sans-serif !important;
    font-size: 0.875rem !important;
    color: var(--color-text-muted) !important;
    user-select: none !important;
    width: 100% !important;
}

.cf7-checkbox-grid .wpcf7-list-item-label:hover {
    border-color: rgba(115, 92, 0, 0.4) !important;
    background-color: rgba(115, 92, 0, 0.03) !important;
}

/* Hide native checkboxes visually for both CF7 and custom contact form */
.contact-checkbox-input,
.cf7-checkbox-grid .wpcf7-list-item input[type="checkbox"] {
    position: absolute !important;
    opacity: 0 !important;
    width: 0 !important;
    height: 0 !important;
    pointer-events: none !important;
}

/* Active Selected State for Contact Service Cards (Prominent Visibility) */
.contact-service-card:has(.contact-checkbox-input:checked) {
    background: linear-gradient(135deg, rgba(115, 92, 0, 0.18) 0%, rgba(115, 92, 0, 0.08) 100%) !important;
    border: 2px solid var(--color-primary-gold) !important;
    box-shadow: 0 6px 20px rgba(115, 92, 0, 0.25), inset 0 0 0 1px rgba(115, 92, 0, 0.2) !important;
    transform: translateY(-2px) !important;
}

.contact-service-card:has(.contact-checkbox-input:checked) span.font-body-sans {
    color: var(--color-primary-gold) !important;
    font-weight: 700 !important;
}

.contact-service-card:has(.contact-checkbox-input:checked) .checkbox-custom-indicator {
    background-color: var(--color-primary-gold) !important;
    border-color: var(--color-primary-gold) !important;
    color: #ffffff !important;
    opacity: 1 !important;
    box-shadow: 0 0 0 3px rgba(115, 92, 0, 0.25) !important;
}

.contact-service-card:has(.contact-checkbox-input:checked) .check-mark {
    opacity: 1 !important;
    transform: scale(1.15) !important;
}

/* CF7 Checkbox Grid Card Selection (Prominent Visibility) */
.cf7-checkbox-grid .wpcf7-list-item-label:has(input:checked),
.cf7-checkbox-grid .wpcf7-list-item label:has(input:checked) .wpcf7-list-item-label {
    background: linear-gradient(135deg, rgba(115, 92, 0, 0.18) 0%, rgba(115, 92, 0, 0.08) 100%) !important;
    border: 2px solid var(--color-primary-gold) !important;
    color: var(--color-primary-gold) !important;
    font-weight: 700 !important;
    box-shadow: 0 6px 20px rgba(115, 92, 0, 0.25) !important;
    transform: translateY(-2px) !important;
}

.cf7-checkbox-grid .wpcf7-list-item-label::after {
    content: '✓' !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 24px !important;
    height: 24px !important;
    border-radius: 8px !important;
    border: 2px solid rgba(115, 92, 0, 0.3) !important;
    font-size: 14px !important;
    font-weight: bold !important;
    color: transparent !important;
    transition: all 0.25s ease !important;
    flex-shrink: 0 !important;
}

.cf7-checkbox-grid .wpcf7-list-item-label:has(input:checked)::after {
    background-color: var(--color-primary-gold) !important;
    border-color: var(--color-primary-gold) !important;
    color: #ffffff !important;
    box-shadow: 0 0 0 3px rgba(115, 92, 0, 0.25) !important;
}



/* Smooth zoom-in on hover for image cards */
.img-zoom-container {
    overflow: hidden;
}

.img-zoom-container img {
    transition: transform 1s var(--ease-luxe);
}

.img-zoom-container:hover img {
    transform: scale(1.07);
}

/* Icon micro-bounce inside cards */
.premium-card .material-symbols-outlined {
    transition: transform 0.4s var(--ease-luxe);
}

.premium-card:hover > .space-y-6 > .material-symbols-outlined,
.premium-card:hover .icon-pop {
    transform: scale(1.15) rotate(-4deg);
}

/* Footer icon animations */
.footer-icon {
    transition: transform 0.4s var(--ease-luxe), color 0.3s ease;
    display: inline-block;
}

.footer-icon:hover {
    color: var(--color-primary-gold-hover);
    transform: scale(1.22) rotate(-8deg);
}

/* Back-to-top hover glow */
.back-to-top {
    transition: all 0.4s var(--ease-luxe);
}

.back-to-top:hover {
    box-shadow: 0 10px 35px rgba(115, 92, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

/* ============================================
   Gallery grid & lightbox
   ============================================ */
.gallery-item {
    cursor: zoom-in;
    display: block;
    padding: 0;
    background: none;
    transition: transform 0.5s var(--ease-luxe), box-shadow 0.5s var(--ease-luxe), border-color 0.4s ease;
}

.gallery-item:hover {
    transform: translateY(-4px);
    border-color: rgba(115, 92, 0, 0.4);
    box-shadow: 0 14px 35px rgba(115, 92, 0, 0.18);
}

.gallery-item:focus-visible {
    outline: 2px solid var(--color-primary-gold);
    outline-offset: 3px;
}

.gallery-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(27, 28, 25, 0.55) 0%, rgba(27, 28, 25, 0.1) 45%, transparent 100%);
    opacity: 0;
    transition: opacity 0.4s ease;
    pointer-events: none;
}

.gallery-item:hover .gallery-overlay {
    opacity: 1;
}

.gallery-zoom-icon {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #ffffff;
    font-size: 2.2rem;
    opacity: 0;
    transform: scale(0.6);
    transition: opacity 0.4s var(--ease-luxe), transform 0.4s var(--ease-luxe);
    text-shadow: 0 2px 12px rgba(27, 28, 25, 0.6);
    pointer-events: none;
}

.gallery-item:hover .gallery-zoom-icon {
    opacity: 1;
    transform: scale(1);
}

.lightbox {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(27, 28, 25, 0.93);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s ease;
}

.lightbox.open {
    opacity: 1;
    pointer-events: auto;
}

.lightbox img {
    max-width: min(90vw, 1100px);
    max-height: 84vh;
    border-radius: 1rem;
    border: 1px solid rgba(212, 175, 55, 0.3);
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.5);
    transform: scale(0.95);
    transition: transform 0.35s var(--ease-luxe);
}

.lightbox.open img {
    transform: scale(1);
}

.lightbox-btn {
    position: absolute;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 9999px;
    background: rgba(251, 249, 244, 0.1);
    border: 1px solid rgba(212, 175, 55, 0.35);
    color: #d4af37;
    cursor: pointer;
    transition: background 0.3s ease, transform 0.3s var(--ease-luxe);
}

.lightbox-btn:hover {
    background: rgba(212, 175, 55, 0.2);
    transform: scale(1.08);
}

.lightbox-close {
    top: 20px;
    right: 20px;
}

.lightbox-nav {
    top: 50%;
    transform: translateY(-50%);
}

.lightbox-nav:hover {
    transform: translateY(-50%) scale(1.08);
}

.lightbox-prev { left: 16px; }
.lightbox-next { right: 16px; }

@media (min-width: 768px) {
    .lightbox-prev { left: 40px; }
    .lightbox-next { right: 40px; }
}

/* ============================================
   Mobile navigation
   ============================================ */
.mobile-menu {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height 0.5s var(--ease-luxe), opacity 0.4s ease;
}

.mobile-menu.open {
    max-height: 360px;
    opacity: 1;
}

.hamburger-line {
    display: block;
    width: 22px;
    height: 2px;
    background: var(--color-primary-gold);
    border-radius: 2px;
    transition: transform 0.35s var(--ease-luxe), opacity 0.25s ease;
}

.hamburger.open .hamburger-line:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}

.hamburger.open .hamburger-line:nth-child(2) {
    opacity: 0;
}

.hamburger.open .hamburger-line:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

/* ============================================
   Back to top button
   ============================================ */
.back-to-top {
    position: fixed;
    bottom: 24px;
    right: 24px;
    z-index: 60;
    width: 48px;
    height: 48px;
    border-radius: 9999px;
    background: var(--color-primary-gold);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 8px 25px rgba(115, 92, 0, 0.35);
    opacity: 0;
    transform: translateY(20px) scale(0.85);
    pointer-events: none;
    transition: opacity 0.4s var(--ease-luxe), transform 0.4s var(--ease-luxe), background 0.3s ease;
}

.back-to-top.visible {
    opacity: 1;
    transform: translateY(0) scale(1);
    pointer-events: auto;
}

.back-to-top:hover {
    background: var(--color-primary-gold-hover);
    transform: translateY(-3px) scale(1.05);
}

/* ============================================
   Accessibility: respect reduced motion
   ============================================ */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    .reveal,
    .reveal-stagger > *,
    .hero-stagger > *,
    .hero-visual {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
    }

    .hero-particles {
        display: none;
    }

    .gold-divider {
        transform: scaleX(1);
    }
}

/* ============================================
   Editor color palette classes (front-end output)
   ============================================ */
.has-gold-color { color: #735c00 !important; }
.has-gold-background-color { background-color: #735c00 !important; }
.has-gold-dark-color { color: #8d7100 !important; }
.has-gold-dark-background-color { background-color: #8d7100 !important; }
.has-champagne-color { color: #e6ded9 !important; }
.has-champagne-background-color { background-color: #e6ded9 !important; }
.has-ivory-color { color: #fbf9f4 !important; }
.has-ivory-background-color { background-color: #fbf9f4 !important; }
.has-chocolate-color { color: #1b1c19 !important; }
.has-chocolate-background-color { background-color: #1b1c19 !important; }
.has-muted-color { color: #635d5a !important; }
.has-muted-background-color { background-color: #635d5a !important; }
.has-wine-color { color: #a82c48 !important; }
.has-wine-background-color { background-color: #a82c48 !important; }

/* ============================================
   Delicate Micro-Animations & Background Enhancements
   ============================================ */

/* 1. Sparkle / Twinkle Stars */
@keyframes sparkle-twinkle {
    0%, 100% {
        opacity: 0;
        transform: scale(0.3) rotate(0deg);
    }
    50% {
        opacity: 0.85;
        transform: scale(1.1) rotate(90deg);
    }
}

.sparkle-star {
    position: absolute;
    pointer-events: none;
    fill: var(--color-primary-gold);
    opacity: 0;
    z-index: 2;
    filter: drop-shadow(0 0 4px rgba(212, 175, 55, 0.4));
}

/* 2. Premium Card Spotlight Glow */
.premium-card {
    position: relative;
    overflow: hidden;
}

.premium-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(350px circle at var(--mouse-x, 50%) var(--mouse-y, 50%), rgba(212, 175, 55, 0.08), transparent 80%);
    opacity: 0;
    transition: opacity 0.5s ease;
    pointer-events: none;
    z-index: 1;
}

.premium-card:hover::after {
    opacity: 1;
}

/* 3. Gold Divider Shimmer Sheen */
@keyframes divider-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* 4. Canvas Particle Container */
.particle-canvas-container {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 1;
}

.particle-canvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

/* 5. Lux Floating Elements */
.ambient-float-slow {
    animation: badge-float 8s ease-in-out infinite;
}

.ambient-float-faster {
    animation: badge-float 5s ease-in-out infinite;
}

