/* Luxury layer: film grain, vignette, slow title reveal, scroll reveal, champagne hairlines */
:root{--color-gold:oklch(82% .07 82);--color-gold-soft:oklch(82% .07 82 / .55);--color-gold-faint:oklch(82% .07 82 / .22);--color-accent:var(--color-gold);--color-vignette:oklch(4% 0 0 / .62);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--dur-reveal:1400ms;--ease-lux:cubic-bezier(.16,1,.3,1)}

/* 1 · Cinema feel: vignette under the shade, grain above it, both under the text */
.hero:before{content:'';position:absolute;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(ellipse 75% 70% at 50% 45%,var(--color-clear) 40%,var(--color-vignette) 100%)}
.hero:after{content:'';position:absolute;inset:-60px;z-index:-1;pointer-events:none;background-image:var(--grain);background-size:220px;opacity:.075;mix-blend-mode:overlay;animation:grain 900ms steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-18px,12px)}40%{transform:translate(14px,-20px)}60%{transform:translate(-10px,-8px)}80%{transform:translate(20px,16px)}100%{transform:translate(0,0)}}

/* 2 · Slow opening reveal */
.masthead,.hero .eyebrow,.hero h1,.hero-sub,.hero-link,.hero-bottom,.hero-pause{animation:rise var(--dur-reveal) var(--ease-lux) both}
.hero h1{animation-name:unveil;animation-duration:2200ms;animation-delay:250ms}
.hero .eyebrow{animation-delay:900ms}.hero-sub{animation-delay:1200ms}.hero-link{animation-delay:1450ms}.masthead,.hero-bottom,.hero-pause{animation-delay:1700ms;animation-name:fade}
@keyframes unveil{from{opacity:0;filter:blur(14px);transform:translateY(18px);letter-spacing:-.02em}to{opacity:1;filter:blur(0);transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}


/* 3 · Films ease in while scrolling (class added by lux.js) */
.lux-reveal .film-row{opacity:0;transform:translateY(36px);transition:opacity 1000ms var(--ease-lux),transform 1100ms var(--ease-lux)}
.lux-reveal .film-row.is-in{opacity:1;transform:none}
.lux-reveal .work-heading{opacity:0;transform:translateY(24px);transition:opacity 1200ms var(--ease-lux),transform 1200ms var(--ease-lux)}
.lux-reveal .work-heading.is-in{opacity:1;transform:none}

/* 5 · Champagne hairlines */
.name span,#count,.work-heading .eyebrow{color:var(--color-gold)}
.hero-link{border-bottom-color:var(--color-gold-soft);transition:border-color var(--dur-cinema) var(--ease-out),gap var(--dur-cinema) var(--ease-lux)}.hero-link span{color:var(--color-gold)}.hero-link:hover{gap:24px;border-bottom-color:var(--color-gold)}
.film-row{margin-bottom:70px}.film-row:not(:last-child):after{content:'';display:block;width:min(260px,40%);height:1px;margin:70px auto 0;background:linear-gradient(90deg,var(--color-clear),var(--color-gold-soft),var(--color-clear))}
footer{border-top-color:var(--color-gold-faint)}
.hero-pause:hover{border-color:var(--color-gold-soft)}
.inline-controls input{accent-color:var(--color-gold)}

@media(max-width:767px){.film-row{margin-bottom:40px}.film-row:not(:last-child):after{margin-top:40px}.hero:after{opacity:.06}}
@media(prefers-reduced-motion:reduce){.hero:after{animation:none}.masthead,.hero .eyebrow,.hero h1,.hero-sub,.hero-link,.hero-bottom,.hero-pause{animation:none}}

/* 6 · Closing contact section */
.contact{position:relative;text-align:center;padding:120px 24px 140px;margin-top:40px;isolation:isolate}
.contact:before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:min(320px,50%);height:1px;background:linear-gradient(90deg,var(--color-clear),var(--color-gold),var(--color-clear))}
.contact:after{content:'';position:absolute;inset:10% 15% 0;z-index:-1;background:radial-gradient(ellipse at 50% 40%,var(--color-gold-faint),var(--color-clear) 65%);filter:blur(40px);opacity:.6;pointer-events:none}
.contact .eyebrow{color:var(--color-gold)}
.contact h2{font-family:var(--font-display);font-size:clamp(44px,6vw,92px);font-weight:500;letter-spacing:-.05em;line-height:1.12;margin:0;background:linear-gradient(180deg,var(--color-text) 30%,var(--color-silver));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.contact-sub{font-size:clamp(15px,1.5vw,20px);font-weight:300;color:var(--color-muted);margin:22px 0 48px}
.contact-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:16px}
.contact-btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 34px;border:1px solid var(--color-gold-soft);border-radius:100px;font-size:15px;transition:background var(--dur-cinema) var(--ease-lux),color var(--dur-cinema) var(--ease-lux),border-color var(--dur-cinema) var(--ease-lux)}
.contact-btn:hover{border-color:var(--color-gold);color:var(--color-gold)}
.contact-btn.primary{background:var(--color-gold);border-color:var(--color-gold);color:var(--color-paper);font-weight:500}
.contact-btn.primary:hover{background:var(--color-clear);color:var(--color-gold)}
.contact-details{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin:36px 0 0;font-size:13px;letter-spacing:.5px;color:var(--color-muted)}
.contact-details a:hover{color:var(--color-gold)}
.drawer-contact{display:inline-block;margin-top:var(--space-lg);font-size:15px;color:var(--color-gold);border-bottom:1px solid var(--color-gold-soft);padding-bottom:6px}
footer{gap:24px}
@media(max-width:767px){.contact{padding:80px 24px 96px}.contact-actions{flex-direction:column;align-items:stretch;max-width:320px;margin:auto}.contact-sub{margin-bottom:36px}}

/* Hero showreel: one native video (reel-wide / reel-tall) instead of two Vimeo players */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72;transform:scale(1.04);pointer-events:none}
@media(prefers-reduced-motion:reduce){.hero-video{transform:none}}
@media(max-width:767px){.hero-bottom{display:none}}

/* 7 · Floating header: transparent over the opening, slim frosted glass once scrolled */
.masthead{position:fixed;transition:min-height var(--dur-cinema) var(--ease-lux),padding var(--dur-cinema) var(--ease-lux),background var(--dur-cinema) var(--ease-lux),border-color var(--dur-cinema) var(--ease-lux);border-bottom:1px solid var(--color-clear)}
.masthead.is-scrolled{min-height:64px;padding-block:10px;background:oklch(10% .006 260 / .62);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-bottom-color:var(--color-gold-faint)}
.masthead .name{transition:font-size var(--dur-cinema) var(--ease-lux)}
.masthead.is-scrolled .name{font-size:18px}.masthead .name span{transition:opacity var(--dur-cinema),max-height var(--dur-cinema);max-height:20px;overflow:hidden}
.masthead.is-scrolled .name span{opacity:0;max-height:0;margin-top:0}
.nav-work{margin-right:32px}.nav-contact{font-size:13px;margin-right:48px;color:var(--color-gold)}
@media(max-width:767px){.nav-contact{display:none}.masthead.is-scrolled{min-height:56px;padding:8px 20px}.masthead.is-scrolled .name{font-size:16px}}

/* 8 · Desktop: consecutive vertical films sit side by side (classes set by lux.js) */
@media(min-width:900px){
.gallery{display:grid;grid-template-columns:1fr 1fr;column-gap:56px;max-width:1120px}
.film-row{grid-column:1/-1}
.film-row.pair-a,.film-row.pair-b{grid-column:auto}
.film-row.pair-a .film,.film-row.pair-b .film{width:min(100%,calc(78svh * var(--ratio)),440px)}
.film-row.pair-a:after,.film-row.pair-b:after{display:none}
.film-row.pair-b{grid-row-end:span 1}
.film-row.after-pair:before{content:'';display:block;width:min(260px,40%);height:1px;margin:0 auto 70px;background:linear-gradient(90deg,var(--color-clear),var(--color-gold-soft),var(--color-clear))}
}

/* 9 · Opening curtain with the name (first visit per session only) */
.intro{display:none}
.has-intro .intro{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:var(--color-paper);animation:intro-out 900ms var(--ease-in-out) 1600ms forwards}
.intro-name{font-family:var(--font-display);font-size:clamp(30px,4vw,52px);font-weight:400;letter-spacing:-.02em;color:var(--color-text);animation:intro-name 1400ms var(--ease-lux) both}
.intro i{display:block;height:1px;width:72px;background:var(--color-gold);transform-origin:center;animation:intro-line 1100ms var(--ease-lux) 300ms both}
.intro-sub{font-size:10px;letter-spacing:5px;color:var(--color-gold);animation:fade 900ms var(--ease-lux) 550ms both}
@keyframes intro-name{from{opacity:0;letter-spacing:.18em;filter:blur(8px)}to{opacity:1;letter-spacing:-.02em;filter:blur(0)}}
@keyframes intro-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes intro-out{to{opacity:0;visibility:hidden}}
.has-intro .hero h1{animation-delay:2000ms}.has-intro .hero .eyebrow{animation-delay:2500ms}.has-intro .hero-sub{animation-delay:2750ms}.has-intro .hero-link{animation-delay:3000ms}.has-intro .masthead,.has-intro .hero-bottom,.has-intro .hero-pause{animation-delay:3200ms}
@media(min-width:900px){.film-row.pair-a,.film-row.pair-b{align-self:end}.film-row.pair-a .film{margin-inline:auto 0}.film-row.pair-b .film{margin-inline:0 auto}}

/* 10 · About */
.about{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:72px;max-width:1120px;margin:40px auto 0;padding:120px 40px 40px;position:relative}
.about:before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:min(320px,50%);height:1px;background:linear-gradient(90deg,var(--color-clear),var(--color-gold-soft),var(--color-clear))}
.about .eyebrow{color:var(--color-gold)}
.about h2{font-family:var(--font-display);font-size:clamp(38px,4.4vw,64px);font-weight:400;letter-spacing:-.04em;line-height:1.15;margin:0;text-wrap:balance}
.about-body{padding-top:34px}
.about-body>p{font-size:16px;line-height:1.9;font-weight:300;color:var(--color-muted);margin:0 0 18px;max-width:52ch}
.about-body>p.about-lead{font-size:clamp(19px,1.7vw,23px);line-height:1.6;color:var(--color-text);font-weight:400}
.about-list{list-style:none;margin:40px 0 0;padding:0;border-top:1px solid var(--color-border)}
.about-list li{display:grid;grid-template-columns:44px 1fr;column-gap:8px;padding:20px 0;border-bottom:1px solid var(--color-border)}
.about-list span{grid-row:span 2;font-size:11px;letter-spacing:2px;color:var(--color-gold);padding-top:6px}
.about-list strong{font-family:var(--font-display);font-size:20px;font-weight:400;letter-spacing:-.01em}
.about-list em{font-style:normal;font-size:13px;color:var(--color-muted);margin-top:4px}
.nav-about{font-size:13px;margin-right:32px}
.lux-reveal .about{opacity:0;transform:translateY(28px);transition:opacity 1100ms var(--ease-lux),transform 1100ms var(--ease-lux)}.lux-reveal .about.is-in{opacity:1;transform:none}
.contact h2{text-wrap:balance}
@media(max-width:899px){.about{grid-template-columns:1fr;gap:8px;padding:88px 24px 24px}.about-body{padding-top:20px}}
@media(max-width:767px){.nav-about{display:none}.about-body>p{font-size:15px}}
.drawer-contact+.drawer-contact{margin-right:24px}
.about .eyebrow{text-align:right}.about-list span{text-align:right}

/* 11 · First-frame posters cover the player until it actually plays (no black flash while scrolling) */
.film-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;pointer-events:none;transition:opacity 450ms var(--ease-out)}
.film.has-started .film-poster{opacity:0}
