/* A quiet first-visit introduction, with no decorative artwork. */
html.has-opening body .site-opening {
  display: flex;
  position: fixed;
  inset: 0;
  min-height: 100dvh;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #130304;
  color: #f1e6d9;
  animation: loading-failsafe 0s linear 6.5s forwards;
}
html.has-opening body .site-opening::before,
html.has-opening body .site-opening::after { display: none; content: none; }
html.has-opening body .loading-content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: min(720px, 86vw);
  padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
  text-align: center;
}
html.has-opening body .loading-brand {
  margin: 0;
  color: #f1e6d9;
  font: 400 clamp(42px, 7vw, 100px)/1.08 'Times New Roman', serif;
  letter-spacing: -.035em;
  white-space: nowrap;
  animation: none;
}
html.has-opening body .loading-word-wrap {
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
  padding: .08em 0 .12em;
  margin: -.08em 0 -.12em;
}
html.has-opening body .loading-word {
  display: inline-block;
  animation: v61-word-enter 1s cubic-bezier(.22,1,.36,1) both;
}
html.has-opening body .loading-word-wrap:last-child .loading-word { animation-delay: .14s; }
@keyframes v61-word-enter {
  from { opacity: 0; transform: translateY(65%); filter: blur(5px); }
  to { opacity: 1; transform: translateY(0); filter: blur(0); }
}
html.has-opening body .loading-track {
  width: min(280px, 56vw);
  height: 2px;
  overflow: hidden;
  margin-top: clamp(28px, 4vh, 42px);
  background: rgba(241, 230, 217, .22);
  animation: v61-track-enter .8s .3s ease both;
}
@keyframes v61-track-enter { from { opacity: 0; transform: scaleX(.72); } to { opacity: 1; transform: scaleX(1); } }
html.has-opening body .loading-fill {
  display: block;
  width: 100%;
  height: 100%;
  background: #f1e6d9;
  transform: scaleX(var(--opening-progress, 0));
  transform-origin: left;
  transition: transform .12s linear;
  animation: none;
  position: relative;
}
html.has-opening body .loading-fill::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, transparent 25%, rgba(255,255,255,.8) 50%, transparent 75%);
  animation: v61-track-light 1.8s ease-in-out infinite;
}
@keyframes v61-track-light { from { transform: translateX(-100%); } to { transform: translateX(100%); } }
html.has-opening body .loading-status {
  display: flex;
  justify-content: center;
  gap: .8em;
  margin: 14px 0 0;
  color: rgba(241, 230, 217, .78);
  font: 400 11px/1.4 'Century Gothic', Arial, sans-serif;
  text-transform: uppercase;
  letter-spacing: .14em;
  animation: v61-status-enter .8s .45s ease both;
}
@keyframes v61-status-enter { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
html.has-opening body .loading-value {
  min-height: 17px;
  margin: 0;
  color: rgba(241, 230, 217, .78);
  font: 400 11px/1.4 'Century Gothic', Arial, sans-serif;
  letter-spacing: .14em;
}
html.has-opening body .site-opening.is-ready .loading-fill {
  width: 100%;
  transform: scaleX(1);
  transition: transform .15s ease;
  animation: none;
}
html.has-opening body .site-opening.is-done { animation: loading-curtain 1s cubic-bezier(.76,0,.24,1) forwards; }
@media (max-width: 767px) {
  html.has-opening body .loading-brand { font-size: clamp(39px, 10vw, 68px); }
  html.has-opening body .loading-track { width: min(240px, 62vw); }
}
@media (max-height: 450px) {
  html.has-opening body .loading-brand { font-size: clamp(34px, 8vh, 64px); }
  html.has-opening body .loading-track { margin-top: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  html.has-opening body .site-opening { display: flex !important; animation: loading-failsafe 0s linear 6.5s forwards !important; }
  html.has-opening body .site-opening.is-done { animation: v61-reduced-exit .15s ease forwards !important; }
  html.has-opening body :is(.loading-word, .loading-track, .loading-status),
  html.has-opening body .loading-fill::after { animation: none !important; }
  html.has-opening body .loading-fill { transition: none; }
}
@keyframes v61-reduced-exit { to { opacity: 0; visibility: hidden; } }
