.invitation-loader { display: none; }
.loading-active, .loading-exit { overflow: hidden; }
.loading-active .capsule-scrollbar, .loading-exit .capsule-scrollbar { visibility: hidden !important; }
.loading-active body > :not(.invitation-loader),
.loading-active body > :not(.invitation-loader) * { visibility: hidden !important; }
.loading-active .invitation-loader, .loading-exit .invitation-loader {
  position: fixed; inset: 0; z-index: 10000; display: grid; place-items: center;
  overflow: hidden; color: #713a42; background: #eee6d8;
  background-image: radial-gradient(ellipse at 50% 40%, #fffaf0, transparent 75%), url('/img/stationery/ivory-paper-reference.webp');
  background-size: auto, 700px;
  transition: opacity 650ms ease, visibility 650ms;
}
.loading-exit .invitation-loader { opacity: 0; visibility: hidden; pointer-events: none; }
.loader-brand { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; }
.loader-monogram { font: italic 96px/.9 'Cormorant Garamond', Georgia, serif; letter-spacing: -13px; padding-right: 13px; }
.loader-monogram i { font-size: .78em; }
.loader-rule { width: 32px; height: 1px; background: #aa8a58; margin: 27px 0 20px; }
.loader-name { font: 36px/1.2 'Cormorant Garamond', Georgia, serif; letter-spacing: -.7px; color: #493b31; }
.loader-caption { margin-top: 19px; font: 9px/1.5 Arial, sans-serif; letter-spacing: 2.6px; color: #8c7660; }
.loader-progress { width: 66px; height: 1px; background: #ac8b5b40; overflow: hidden; margin-top: 38px; }
.loader-progress::after { content: ''; display: block; width: 50%; height: 100%; background: #947146; animation: loader-line 2.4s ease-in-out infinite; }
.loader-status { margin-top: 13px; font: italic 16px/1.5 'Cormorant Garamond', Georgia, serif; color: #89715e; }
.loader-edition { position: absolute; bottom: max(32px, env(safe-area-inset-bottom)); font: 8px/1.5 Arial, sans-serif; letter-spacing: 3px; color: #947e67; }
@keyframes loader-line { 0%, 100% { transform: translateX(-110%); } 65% { transform: translateX(210%); } }
@media (max-width: 600px) { .loader-name { font-size: 31px; } .loader-caption { font-size: 8px; letter-spacing: 2px; } }
@media (prefers-reduced-motion: reduce) { .loader-progress::after { animation: none; } .invitation-loader { transition: none !important; } }
