/* ─── MAGNETIC & RIPPLE FX ─── */
.magnetic { transition: transform 0.15s cubic-bezier(0.25, 1, 0.5, 1); }
.ripple { position: relative; overflow: hidden; }
.ripple .ripple-span { position: absolute; border-radius: 50%; transform: scale(0); animation: ripple-anim 0.4s cubic-bezier(0.16, 1, 0.3, 1); background: rgba(212,175,55,0.25); pointer-events: none; width: 120px; height: 120px; margin-top: -60px; margin-left: -60px; }
@keyframes ripple-anim { to { transform: scale(4); opacity: 0; } }

/* ─── FILM GRAIN & VIGNETTE ─── */
body::after {
    content: ''; position: fixed; inset: 0; z-index: 9995; pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.04'/%3E%3C/svg%3E");
    background-repeat: repeat; animation: grain 8s steps(10) infinite; opacity: 0.8;
}
@keyframes grain { 0%, 100% { transform: translate(0, 0); } 10% { transform: translate(-5%, -10%); } 30% { transform: translate(5%, -15%); } 50% { transform: translate(-10%, 5%); } 70% { transform: translate(15%, 10%); } 90% { transform: translate(-5%, 15%); } }
body::before {
    content: ''; position: fixed; inset: 0; z-index: 9994; pointer-events: none;
    background: radial-gradient(circle at center, transparent 40%, rgba(9, 29, 21, 0.15) 100%);
}

/* ─── SCROLL REVEAL & STAGGER TEXT ─── */
.reveal-item { opacity: 0; transform: translateY(30px); transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); will-change: opacity, transform; }
.reveal-item.is-visible { opacity: 1; transform: translateY(0); }
.split-word { display: inline-block; overflow: hidden; vertical-align: bottom; line-height: 1.2; padding-bottom: 5px; margin-bottom: -5px; }
.split-word span { display: inline-block; transform: translateY(110%); opacity: 0; transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.4s ease; will-change: transform, opacity; }
.split-word.is-visible span { transform: translateY(0); opacity: 1; }

/* ─── ENHANCED CURSOR ─── */
@media (pointer: fine) { body, a, button, .btn { cursor: none !important; } }
.new-cursor-dot { width: 5px; height: 5px; background: var(--gold); border-radius: 50%; position: fixed; top: 0; left: 0; transform: translate(-50%, -50%); z-index: 9999; pointer-events: none; box-shadow: 0 0 15px var(--gold); }
.new-cursor-outline { width: 44px; height: 44px; border: 1px solid rgba(212,175,55,0.4); border-radius: 50%; position: fixed; top: 0; left: 0; transform: translate(-50%, -50%); z-index: 9998; pointer-events: none; transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1), height 0.4s cubic-bezier(0.16, 1, 0.3, 1), background 0.4s, border-color 0.4s; }
.new-cursor-outline.hover-target { width: 80px; height: 80px; background: rgba(212,175,55,0.05); border-color: var(--gold); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.new-cursor-outline.hover-image { width: 100px; height: 100px; background: rgba(255,255,255,0.05); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-color: rgba(255,255,255,0.2); }
.new-cursor-outline.hover-image::after { content: 'EXPLORE'; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: #fff; font-size: 10px; letter-spacing: 3px; font-weight: 600; text-shadow: 0 2px 10px rgba(0,0,0,0.5); }

/* ─── HOVER GLOW FOR CARDS ─── */
.glow-card { position: relative; overflow: hidden; }
.glow-card::before { content: ''; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(800px circle at var(--mouse-x) var(--mouse-y), rgba(212,175,55,0.08), transparent 40%); opacity: 0; transition: opacity 0.8s; z-index: 1; pointer-events: none; }
.glow-card:hover::before { opacity: 1; }

/* ─── IMAGE PARALLAX HOVER & MASK REVEAL ─── */
.img-parallax-container { overflow: hidden; border-radius: 20px; position: relative; }
.img-parallax-container::after { content:''; position:absolute; inset:0; box-shadow: inset 0 0 40px rgba(9, 29, 21, 0.3); pointer-events:none; border-radius:inherit; z-index:2; }
.img-parallax-container img { transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1), filter 1.2s; transform-origin: center; will-change: transform; }
.img-parallax-container:hover img { transform: scale(1.06); filter: brightness(1.1) contrast(1.05); }

/* Cinematic Mask Reveal */
.reveal-mask { clip-path: polygon(0 100%, 100% 100%, 100% 100%, 0 100%); transition: clip-path 1.2s cubic-bezier(0.85, 0, 0.15, 1) !important; }
.reveal-mask.is-visible { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); }

/* ─── PAGE TRANSITION — fast crossfade (no curtain between pages) ─── */
/* Body starts invisible; experience.js adds .loaded to fade it in */
body:not(.loaded):not(.loading-curtain) { opacity: 0; }
body.loaded {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.18s ease, transform 0.18s cubic-bezier(0.16, 1, 0.3, 1);
}
body.exiting {
    opacity: 0;
    transform: translateY(-5px);
    transition: opacity 0.07s ease, transform 0.07s ease !important;
    pointer-events: none;
}

/* ─── CINEMATIC CURTAIN — initial load only ─── */
.cinematic-curtain {
    position: fixed; inset: 0; background: #091d15; z-index: 10000;
    pointer-events: none; display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    transform: translateY(0);
    transition: transform 0.32s cubic-bezier(0.85, 0, 0.15, 1), opacity 0.2s ease;
}
/* Slide up and away on load */
body.loaded .cinematic-curtain { transform: translateY(-100%); opacity: 0; }
/* On exit: keep curtain gone — we use the body fade instead */
body.exiting .cinematic-curtain { transform: translateY(-100%); opacity: 0; transition: none; }

.curtain-logo { font-family: 'Cormorant Garamond', serif; font-size: 36px; color: #fff; letter-spacing: 0.12em; opacity: 0; transform: translateY(10px); transition: all 0.2s ease 0.04s; }
body.loading-curtain .curtain-logo { opacity: 1; transform: translateY(0); }
.curtain-logo span { color: var(--gold); }
.curtain-line { width: 1px; height: 0; background: var(--gold); margin-top: 30px; transition: height 0.25s cubic-bezier(0.85, 0, 0.15, 1); }
body.loading-curtain .curtain-line { height: 60px; }
body.loaded .curtain-logo { opacity: 0; transform: translateY(-8px); transition-delay: 0s; }

/* ─── SCROLL PROGRESS INDICATOR ─── */
.scroll-progress-container { position: fixed; top: 0; left: 0; width: 100%; height: 3px; background: rgba(0,0,0,0.1); z-index: 10001; pointer-events: none; }
.scroll-progress-bar { height: 100%; background: linear-gradient(90deg, var(--gold-light), var(--gold)); width: 0%; transition: width 0.1s ease-out; box-shadow: 0 0 10px rgba(212,175,55,0.5); }

/* ─── GLOBAL ELITE TYPOGRAPHY & GOLD SHEEN ─── */
h1, h2 { letter-spacing: -0.03em; }
h3, h4 { letter-spacing: -0.01em; }
.section-eyebrow, .b-cat, .st-portfolio-card-label { letter-spacing: 0.1em; text-transform: uppercase; }

.gold-sheen {
    position: relative;
    display: inline-block;
    background: linear-gradient(120deg, var(--green-dark) 20%, var(--gold) 50%, var(--green-dark) 80%);
    background-size: 200% auto;
    color: transparent;
    -webkit-background-clip: text;
    background-clip: text;
    animation: goldShine 5s linear infinite;
}
@keyframes goldShine { to { background-position: 200% center; } }

/* ─── GLOBAL AMBIENT SPOTLIGHT ─── */
.ambient-spotlight {
    position: fixed; inset: 0; pointer-events: none; z-index: 1; 
    background: radial-gradient(800px circle at var(--mouse-x) var(--mouse-y), rgba(212,175,55,0.03), transparent 40%);
    transition: opacity 0.5s; opacity: 0;
}
body.loaded .ambient-spotlight { opacity: 1; }

/* Anticipation Pulse on CTA */
.btn-gold { position: relative; }
.btn-gold::after { content: ''; position: absolute; inset: -4px; border-radius: inherit; border: 1px solid var(--gold); opacity: 0; transform: scale(1.05); transition: all 0.4s; pointer-events: none; }
.btn-gold:hover::after { opacity: 0.6; transform: scale(1); animation: heartbeat 2s infinite ease-in-out; }
@keyframes heartbeat { 0%, 100% { transform: scale(1); opacity: 0.4; } 50% { transform: scale(1.04); opacity: 0.8; } }

/* ─── ELITE APP-LIKE UPGRADES ─── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg-cream, #faf9f6); }
::-webkit-scrollbar-thumb { background: rgba(212,175,55,0.4); border-radius: 10px; }
::-webkit-scrollbar-thumb:hover { background: rgba(212,175,55,0.8); }

::selection { background: rgba(212,175,55,0.25); color: #091d15; }

.btn-gold, .btn-gold-st {
    background: linear-gradient(120deg, #d4af37, #f5d76e, #d4af37) !important;
    background-size: 200% auto !important;
    animation: goldShine 5s linear infinite !important;
    border: none !important;
}



.elite-frame {
    position: fixed; inset: 12px; pointer-events: none; z-index: 9991;
    border: 1px solid rgba(212,175,55,0.15); border-radius: 20px;
    transition: opacity 1s; opacity: 0;
}
body.loaded .elite-frame { opacity: 1; }
