*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:#08080a}
#ov-root ::selection{background:var(--gold);color:#08080a}

/* ---- intro fly-in ---- */
@keyframes ovO{
  0%{opacity:0;transform:translate3d(0,-56vh,60px) rotateX(72deg) scale(1.22)}
  60%{opacity:1}
  100%{opacity:1;transform:translate3d(0,0,0) rotateX(0) scale(1)}
}
@keyframes ovV{
  0%{opacity:0;transform:translate3d(-42vw,44vh,-40px) rotate(-22deg) scale(.7)}
  60%{opacity:1}
  100%{opacity:1;transform:translate3d(0,0,0) rotate(0) scale(1)}
}
@keyframes ovA{
  0%{opacity:0;transform:translate3d(46vw,-8vh,150px) rotateX(180deg) rotateZ(22deg) scale(.6)}
  55%{opacity:1}
  86%{transform:translate3d(0,0,0) rotateX(-10deg) rotateZ(0deg) scale(1.04)}
  100%{opacity:1;transform:translate3d(0,0,0) rotateX(0deg) rotateZ(0deg) scale(1)}
}
@keyframes ovFlash{
  0%,58%{opacity:0;transform:translate(-50%,-50%) scale(.35)}
  74%{opacity:.85;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.9)}
}
@keyframes ovRing{
  0%,62%{opacity:0;transform:translate(-50%,-50%) scale(.5)}
  76%{opacity:.7}
  100%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}
}
@keyframes ovRise{
  0%{opacity:0;transform:translateY(26px)}
  100%{opacity:1;transform:none}
}
@keyframes ovNav{
  0%{opacity:0;transform:translateY(-14px)}
  100%{opacity:1;transform:none}
}
@keyframes ovFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
@keyframes ovShimmer{
  0%,100%{filter:drop-shadow(0 0 5px rgba(198,166,103,.30))}
  50%{filter:drop-shadow(0 0 16px rgba(198,166,103,.72))}
}
@keyframes ovScroll{0%,100%{transform:translateX(-50%) translateY(0);opacity:.4}50%{transform:translateX(-50%) translateY(7px);opacity:1}}

.ov-piece{position:absolute;transform-origin:center center;will-change:transform,opacity}
.ov-o{animation:ovO 1s .15s cubic-bezier(.16,1,.3,1) both}
.ov-v{animation:ovV 1.05s .25s cubic-bezier(.16,1,.3,1) both}
.ov-a{animation:ovA 1.2s .3s cubic-bezier(.16,1,.3,1) both}
.ov-gold-glow{animation:ovShimmer 4.5s 1.6s ease-in-out infinite}
.ov-float{animation:ovFloat 7.5s 1.7s ease-in-out infinite}
.ov-flash{animation:ovFlash 1.9s .1s ease-out forwards}
.ov-ring{animation:ovRing 2s .1s ease-out forwards}
.ov-rise-1{animation:ovRise 1s 1.5s cubic-bezier(.16,1,.3,1) both}
.ov-rise-2{animation:ovRise 1s 1.75s cubic-bezier(.16,1,.3,1) both}
.ov-rise-3{animation:ovRise 1s 2s cubic-bezier(.16,1,.3,1) both}
.ov-nav{animation:ovNav .9s 2.1s cubic-bezier(.16,1,.3,1) both}
.ov-scrollcue{animation:ovScroll 1.8s 2.4s ease-in-out infinite both;opacity:0}

@media (max-height:820px){
  .ov-scrollcue{display:none!important}
}

/* ---- scroll reveals ---- */
@keyframes ovReveal{from{opacity:0;transform:translateY(46px)}to{opacity:1;transform:none}}
@supports (animation-timeline: view()){
  .ov-reveal{opacity:0;animation:ovReveal linear both;animation-timeline:view();animation-range:entry 2% cover 26%}
  .ov-stagger>*{opacity:0;animation:ovReveal linear both;animation-timeline:view();animation-range:entry 0% cover 30%}
  .ov-stagger>*:nth-child(2){animation-range:entry 6% cover 34%}
  .ov-stagger>*:nth-child(3){animation-range:entry 12% cover 38%}
  .ov-stagger>*:nth-child(4){animation-range:entry 18% cover 42%}
}

/* ---- calm motion ---- */
#ov-root[data-motion="calm"] .ov-float{animation:none}
#ov-root[data-motion="calm"] .ov-gold-glow{animation:none;filter:drop-shadow(0 0 8px rgba(198,166,103,.4))}
#ov-root[data-motion="calm"] .ov-o,#ov-root[data-motion="calm"] .ov-v,#ov-root[data-motion="calm"] .ov-a{animation-duration:.7s}

@media (prefers-reduced-motion: reduce){
  #ov-root *{animation-duration:.001s!important;animation-delay:0s!important}
  .ov-piece{opacity:1!important}
}

/* ---- mobile nav ---- */
.ov-menu-bar{display:block;width:24px;height:1px;background:var(--paper);margin:6px 0;transition:transform .25s ease,opacity .25s ease}
.ov-menu-panel{position:fixed;top:0;left:0;right:0;bottom:0;z-index:39;background:#08080a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;opacity:0;pointer-events:none;transition:opacity .3s ease}
.ov-menu-panel.ov-open{opacity:1;pointer-events:auto}
.ov-menu-panel a{font-family:'Cormorant Garamond',serif;font-size:26px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-bright);text-decoration:none;text-align:center;padding:0 28px;line-height:1.3}
#ov-menu-btn.ov-open .ov-menu-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
#ov-menu-btn.ov-open .ov-menu-bar:nth-child(2){opacity:0}
#ov-menu-btn.ov-open .ov-menu-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

@media (max-width: 1300px){
  .ov-nav-links{display:none!important}
  .ov-menu-btn{display:block!important}
}
@media (min-width: 1301px){
  .ov-menu-panel{display:none!important}
}
