/* Motion stays decorative: content is visible without JavaScript. */
.hero-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:0;transition:opacity 1.2s ease;pointer-events:none}
.hero-slide.is-active{opacity:1}
.invitation{touch-action:pan-y pinch-zoom}
.hero-controls:not([hidden]){display:flex;flex-direction:column;align-items:center;margin:0 auto 16px;color:var(--cream)}
.slide-caption{font:10px/1.6 'PT Serif',Georgia,serif;letter-spacing:2px;text-transform:uppercase;text-shadow:0 1px 8px #000}
.slide-navigation{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:3px}
.slide-navigation button{width:44px;height:44px;display:grid;place-items:center;background:transparent;border:0;padding:0;color:var(--cream);cursor:pointer;border-radius:50%;transition:background .25s,color .25s}
.slide-navigation button:hover{background:#101f1980;color:var(--gold)}
.slide-arrow{font-size:23px}.slide-pause{font-size:14px}
.slide-navigation .video-toggle{font-size:14px;border:1px solid #c5aa7660;width:34px;height:34px;margin-left:5px}
.slide-navigation .video-toggle[hidden]{display:none}
.slide-dots{display:flex;align-items:center}
.slide-dot:after{content:'';width:6px;height:6px;border:1px solid var(--cream);border-radius:50%;transition:background .3s,box-shadow .3s}
.slide-dot[aria-pressed="true"]:after{background:var(--gold);border-color:var(--gold);box-shadow:0 0 0 4px #c5aa7628}
@media(max-width:900px){.hero-slide{object-position:center 55%}.hero-controls:not([hidden]){margin-bottom:12px}.slide-caption{font-size:9px}}
.reading-progress{position:fixed;inset:0 0 auto;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;pointer-events:none;z-index:100}
.btn{position:relative;overflow:hidden;transition:background .35s,color .35s,box-shadow .35s,transform .35s}
.btn span{transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.plus{transition:transform .35s ease}
.nav a:not(.mark){position:relative}
.nav a:not(.mark):after{content:'';position:absolute;left:0;right:0;bottom:-6px;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .35s}
input,select{transition:border-color .25s,background .25s,box-shadow .25s}
input:focus,select:focus{border-color:var(--gold);background:#1b2e22;box-shadow:0 0 0 3px #c5aa7612}
@media(prefers-reduced-motion:no-preference){
  .motion-enabled .scene{will-change:transform}
  .invitation>.logo,.invitation>.eyebrow,.invitation>.rule,.invitation>h1,.invitation>.date,.invitation>.month,.invitation>.location,.hero-bottom{animation:invitation-enter 1.1s cubic-bezier(.2,.7,.2,1) both}
  .invitation>.eyebrow{animation-delay:.1s}.invitation>.rule{animation-delay:.18s}.invitation>h1{animation-delay:.26s}.invitation>.date{animation-delay:.36s}.invitation>.month{animation-delay:.44s}.invitation>.location{animation-delay:.5s}.hero-bottom{animation-delay:.65s}
  .scroll{animation:scroll-hint 2.5s ease-in-out 1.8s 3}
  .program details[open] .schedule{animation:schedule-enter .45s ease-out both}
  .btn:before{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 20%,#fff2 48%,transparent 76%);transform:translateX(-140%);transition:transform .7s ease}
  .btn:active{transform:scale(.985)}
  .swatch{transition:transform .35s}
  @media(hover:hover) and (pointer:fine){
    .btn:hover{transform:translateY(-2px);box-shadow:0 8px 28px #0002}
    .btn:hover:before{transform:translateX(140%)}
    .btn:hover span{transform:translateX(5px)}
    .swatch:hover{transform:translateY(-4px)}
    .nav a:hover:after{transform:scaleX(1)}
  }
}
@keyframes invitation-enter{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@keyframes schedule-enter{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@keyframes scroll-hint{0%,100%{transform:translateY(0);opacity:.65}50%{transform:translateY(6px);opacity:1}}
@media(prefers-reduced-motion:reduce){
  .slide-pause{display:none!important}
  *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .scene{transform:none!important;will-change:auto!important}
}
