/* Four seconds: a gold signature, travelling light, then an opening glass iris. */
@property --opening-aperture{syntax:'<length>';inherits:false;initial-value:0px}
.opening-story{display:none}
html[data-entrance] .opening-story{position:fixed;inset:0;z-index:70;display:grid;place-items:center;pointer-events:none;overflow:hidden;isolation:isolate}
.opening-veil{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 49%,#f1e8d75c,transparent 48%),#fdfcfb;z-index:-3}
.opening-light{position:absolute;inset:-70%;z-index:-2;background:linear-gradient(108deg,transparent 39%,#e6d3ac20 47%,#fff9 50%,transparent 60%);animation:opening-light-pass 2.1s .2s ease-in-out both}
.opening-signature{position:relative;display:flex;flex-direction:column;align-items:center;gap:26px;animation:signature-arrive .95s cubic-bezier(.16,1,.3,1) both}
.opening-signature img{width:86px;height:56px;object-fit:contain}
.opening-signature::after{content:'';position:absolute;top:0;width:86px;height:56px;background:linear-gradient(105deg,transparent 34%,#f0d597b3 46%,#fff9 50%,transparent 66%);background-size:250% 100%;-webkit-mask:url('/assets/brand-icon.svg') center/contain no-repeat;mask:url('/assets/brand-icon.svg') center/contain no-repeat;animation:opening-gold-sheen 1.3s .45s ease-in-out both}
.opening-signature span{font-family:var(--sans);font-size:9px;letter-spacing:.27em;color:var(--gold);text-align:center;line-height:1.8;animation:signature-caption 1s .45s ease-out both}
.opening-halo{position:absolute;width:245px;aspect-ratio:1;border-radius:50%;border:1px solid #b79b6424;box-shadow:0 0 0 14px #fff8,0 0 0 15px #ccb99114,inset 0 0 38px #fff9;z-index:-1;animation:halo-arrive 1.3s ease-out both}
.opening-orbits{position:absolute;width:320px;aspect-ratio:1;overflow:visible;z-index:-1}
.opening-trace{fill:none;stroke:#ab8a51;stroke-width:.65;stroke-dasharray:1;stroke-dashoffset:1;transform-origin:160px 160px}
.opening-trace-one{opacity:.45;animation:opening-trace-one 1.65s .12s cubic-bezier(.55,0,.25,1) both}
.opening-trace-two{opacity:.22;animation:opening-trace-two 1.55s .25s cubic-bezier(.55,0,.25,1) both}
.opening-glint{fill:#b19868;transform-origin:160px 160px;animation:opening-glint-orbit 1.9s ease-in-out both}

/* Only the entrance controller opts in. Without JavaScript everything is visible. */
html[data-entrance="waiting"] :is(.site-header,.hero-heading>*,.orbit-wrap,.art-intro,.hero-bottom,main>.section,main>.community-section,#brand-showcase,body>footer){opacity:0}
html[data-entrance] .butterfly-layer{opacity:0}
html[data-entrance="revealing"] .opening-veil{-webkit-mask-image:radial-gradient(circle at 50% 50%,transparent max(0px,calc(var(--opening-aperture) - 70px)),#000 var(--opening-aperture));mask-image:radial-gradient(circle at 50% 50%,transparent max(0px,calc(var(--opening-aperture) - 70px)),#000 var(--opening-aperture));animation:veil-open 1.65s cubic-bezier(.72,0,.18,1) both}
html[data-entrance="revealing"] .opening-light{animation:opening-light-depart .6s both}
html[data-entrance="revealing"] .opening-signature{animation:signature-depart .7s cubic-bezier(.4,0,.2,1) both}
html[data-entrance="revealing"] .opening-halo{animation:halo-bloom 1.8s cubic-bezier(.6,0,.18,1) both}
html[data-entrance="revealing"] .opening-orbits{animation:opening-orbits-bloom 1.8s .06s cubic-bezier(.6,0,.18,1) both}
html[data-entrance="revealing"] .site-header{animation:header-arrive 1.4s .35s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .hero-heading>.eyebrow{animation:atelier-arrive 1.25s .35s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .hero-heading h1{animation:title-arrive 1.55s .42s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .hero-heading>p:last-child{animation:atelier-arrive 1.25s .62s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .orbit-wrap{animation:gallery-arrive 1.65s .28s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .henna-intro{animation:henna-arrive 1.4s .7s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .makeup-intro{animation:makeup-arrive 1.4s .82s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] .hero-bottom{animation:atelier-arrive 1s 1s cubic-bezier(.16,1,.3,1) both}
html[data-entrance="revealing"] :is(main>.section,main>.community-section,#brand-showcase,body>footer){animation:quiet-arrive .9s 1s both}
html[data-entrance="revealing"] .butterfly-layer.is-ready{animation:quiet-arrive .8s 1.4s both}

@keyframes signature-arrive{from{opacity:0;transform:translateY(10px) scale(.92);filter:blur(3px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes signature-caption{from{opacity:0;letter-spacing:.34em}to{opacity:1;letter-spacing:.27em}}
@keyframes signature-depart{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-14px) scale(1.06)}}
@keyframes halo-arrive{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:scale(1)}}
@keyframes halo-bloom{from{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(5.2)}}
@keyframes opening-light-pass{0%{opacity:0;transform:translateX(-32%) rotate(-12deg)}35%,65%{opacity:1}100%{opacity:0;transform:translateX(32%) rotate(-12deg)}}
@keyframes opening-light-depart{from{opacity:.35}to{opacity:0}}
@keyframes opening-gold-sheen{0%{background-position:140% 0;opacity:0}30%,65%{opacity:1}100%{background-position:-40% 0;opacity:0}}
@keyframes opening-trace-one{from{stroke-dashoffset:1;transform:rotate(-120deg)}to{stroke-dashoffset:0;transform:rotate(0)}}
@keyframes opening-trace-two{from{stroke-dashoffset:-1;transform:rotate(60deg)}to{stroke-dashoffset:0;transform:rotate(-20deg)}}
@keyframes opening-glint-orbit{0%{opacity:0;transform:rotate(-140deg)}25%{opacity:.8}100%{opacity:.65;transform:rotate(200deg)}}
@keyframes opening-orbits-bloom{from{opacity:1;transform:scale(1) rotate(0)}to{opacity:0;transform:scale(5.5) rotate(35deg)}}
/* Opacity also provides a graceful fallback for browsers without animated masks. */
@keyframes veil-open{from{--opening-aperture:0px;opacity:1}70%{opacity:1}to{--opening-aperture:150vmax;opacity:0}}
@keyframes header-arrive{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}
@keyframes atelier-arrive{from{opacity:0;translate:0 22px}to{opacity:1;translate:0 0}}
@keyframes henna-arrive{from{opacity:0;translate:18px 16px}to{opacity:1;translate:0 0}}
@keyframes makeup-arrive{from{opacity:0;translate:-18px 16px}to{opacity:1;translate:0 0}}
@keyframes title-arrive{from{opacity:0;translate:0 22px;filter:blur(5px)}to{opacity:1;translate:0 0;filter:blur(0)}}
@keyframes gallery-arrive{from{opacity:0;translate:0 24px;scale:.86}to{opacity:1;translate:0 0;scale:1}}
@keyframes quiet-arrive{from{opacity:0}to{opacity:1}}
@media(max-width:700px){.opening-halo{width:205px}.opening-orbits{width:270px}.opening-signature img,.opening-signature::after{width:74px;height:48px}.opening-signature span{font-size:8px}}
@media(prefers-reduced-motion:reduce){
 html[data-entrance] .opening-story{display:none}
 html[data-entrance] :is(.site-header,.hero-heading>*,.orbit-wrap,.art-intro,.hero-bottom,main>.section,main>.community-section,#brand-showcase,body>footer,.butterfly-layer.is-ready){animation:none;opacity:1;translate:none;scale:none;filter:none}
}
