/* Overlay only: content underneath stays in the DOM for crawlers and no-js.
   Never hide main/body — this veil is paint, not a content swap. */
#loader{
  position:fixed; inset:0; z-index:80;
  background:transparent;
  display:flex; align-items:center; justify-content:center;
  overflow:hidden;
  pointer-events:none;
}
.loader-veil{
  position:absolute; left:0; right:0;
  background:var(--paper, #FAF8F2);
  z-index:1;
  pointer-events:auto;
}
.loader-veil-top{ top:0; height:50%; }
.loader-veil-bottom{ bottom:0; height:50%; }
.loader-stage{
  position:relative; z-index:2;
  width:100%; height:100%;
  display:grid;
  grid-template-rows:1fr 1fr;
  justify-items:center;
  pointer-events:none;
}
.loader-above{
  align-self:end;
  padding-bottom:22px;
  text-align:center;
}
.loader-below{
  align-self:start;
  padding-top:22px;
  text-align:center;
}
.loader-mask{ overflow:hidden; }
.loader-above-inner,
.loader-below-inner{ display:block; }
html.js:not(.is-loader-playing) .loader-above-inner,
html.js:not(.is-loader-playing) .loader-below-inner{ visibility:hidden; }
.loader-crest{
  width:72px; height:72px;
  margin:0 auto 16px;
  border-radius:50%;
  display:block;
  object-fit:cover;
}
.loader-word{
  display:block;
  font-family:'Playfair Display', serif;
  font-size:clamp(36px, 5.5vw, 58px); font-weight:600;
  letter-spacing:0.16em;
  color:var(--gold-deep, #8C6A22);
  line-height:1;
}
.loader-place{
  display:block;
  font-family:'Jost', sans-serif;
  font-size:13px; font-weight:500;
  letter-spacing:0.32em; text-transform:uppercase;
  color:var(--gold-deep, #8C6A22);
}
.loader-line{
  position:absolute; left:0; top:50%;
  width:100%; height:1px; margin-top:-0.5px;
  background:var(--gold, #B4892F);
  transform:scaleX(0); transform-origin:center;
  z-index:3;
  pointer-events:none;
}
html:not(.js) #loader{display:none;}
@media (prefers-reduced-motion: reduce){
  #loader{display:none !important;}
}
