/* Hidden by default so a failed or disabled script never blocks the page. */
html { scrollbar-gutter:stable; }
html.is-loading,html.is-revealing { background:#f3f4f0; }
html.is-loading { overflow:hidden; }
.site-loader { display:none; position:fixed; inset:0; z-index:1000; place-items:center; overflow:hidden; padding:32px 24px; color:#263b46; background:radial-gradient(ellipse at 50% 100%,#dce5e8 0%,transparent 66%),#f3f4f0; }
.is-loading .site-loader,.is-revealing .site-loader { display:grid; }
.site-loader-content { width:min(100%,580px); text-align:center; transform:translateY(-2vh); }
.site-loader-logo { display:block; width:clamp(260px,36vw,440px); max-width:100%; height:auto; margin:0 auto; }
.site-loader-rule { width:48px; height:1px; margin:44px auto 30px; background:#263b4629; }
.site-loader-copy { min-height:106px; }
.site-loader-title { margin:0 0 11px; font-size:clamp(20px,2vw,25px); font-weight:450; letter-spacing:-.035em; line-height:1.3; }
.site-loader-detail { display:grid; max-width:410px; margin:0 auto; font-size:14px; font-weight:400; color:#5a6b72; line-height:1.7; text-wrap:balance; }
/* Five overlapping lines reserve their tallest height. Opacity and transform
   run on the compositor while the main thread prepares the house model. */
.site-loader-message { --message-delay:-10s; grid-area:1 / 1; opacity:0; animation:loader-message 10s ease-in-out infinite both; animation-delay:var(--message-delay); will-change:opacity,transform; }
/* Keep timings in the stylesheet: the site's CSP blocks inline styles. */
.site-loader-message:nth-child(2) { --message-delay:-8s; }
.site-loader-message:nth-child(3) { --message-delay:-6s; }
.site-loader-message:nth-child(4) { --message-delay:-4s; }
.site-loader-message:nth-child(5) { --message-delay:-2s; }
.site-loader-status { position:absolute; bottom:max(38px,env(safe-area-inset-bottom)); left:24px; right:24px; display:flex; align-items:center; justify-content:center; gap:12px; font-size:10px; font-weight:500; letter-spacing:.17em; text-transform:uppercase; color:#64747c; }
.site-loader-track { width:42px; height:1px; overflow:hidden; background:#263b4624; }
.site-loader-track:after { content:''; display:block; width:50%; height:100%; background:#536c79; animation:loader-travel 1.8s ease-in-out infinite; }
.is-revealing .site-loader { pointer-events:none; animation:loader-reveal .6s ease both; }
@keyframes loader-travel { 0% { transform:translateX(-100%); } 100% { transform:translateX(300%); } }
@keyframes loader-message {
  0% { opacity:0; transform:translateY(5px); }
  3%,16% { opacity:1; transform:translateY(0); }
  19%,20% { opacity:0; transform:translateY(-5px); }
  20.01%,100% { opacity:0; transform:translateY(5px); }
}
@keyframes loader-reveal { to { opacity:0; visibility:hidden; } }
@media (max-width:600px) {
  .site-loader-rule { margin-top:36px; }
  .site-loader-copy { min-height:120px; }
  .site-loader-detail { max-width:290px; font-size:13px; }
}
@media (prefers-reduced-motion:reduce) {
  .site-loader-message { animation:loader-message-still 10s steps(1,end) infinite both!important; animation-delay:var(--message-delay)!important; will-change:opacity; }
  .site-loader-track:after { animation:none; }
  .is-revealing .site-loader { animation:none; opacity:0; visibility:hidden; }
}
@keyframes loader-message-still { 0%,19.99% { opacity:1; } 20%,100% { opacity:0; } }
