/* Shared portal loading: vector leaves only; no images, font or artificial delay. */
.site-loader {
  position: fixed; inset: 0; z-index: 90; display: grid; place-items: center;
  pointer-events: none; overflow: hidden; contain: layout paint;
  background: radial-gradient(ellipse at 50% 42%, #f5fcff 0%, #e1f5fef5 48%, #b3e5fcf0 100%);
  color: #0277bd;
  /* A failed script must never leave a loading screen behind. */
  animation: site-loader-dismiss 280ms 1800ms ease-out both;
}
.site-loader[hidden] { display: none !important; }
.site-loader.is-ready { animation: site-loader-dismiss 360ms ease-out both; }
.site-loader.is-navigating { animation: site-loader-dismiss 280ms 6000ms ease-out both; }
.site-loader-scene { display: grid; justify-items: center; transform: translateY(-16px); }
.site-loader-garden { position: relative; width: 180px; height: 134px; }
.site-loader-garden::after {
  content: ''; position: absolute; width: 64px; height: 6px; left: 58px; bottom: 12px;
  background: #0288d114; border-radius: 50%; filter: blur(3px);
  animation: site-loader-shadow 1800ms ease-in-out infinite;
}
.site-loader svg { display: block; width: 100%; height: 100%; }
.site-loader-sprout {
  position: absolute; width: 64px; height: 64px; top: 34px; left: 59px; color: #29b6e8;
  filter: drop-shadow(0 7px 8px #0288d11a);
  animation: site-loader-breathe 1800ms ease-in-out infinite;
}
.site-loader-leaf {
  position: absolute; top: 52px; left: 78px; width: 28px; height: 28px;
  animation: site-loader-gather 1800ms cubic-bezier(.4, 0, .2, 1) infinite;
}
.site-loader .leaf-one { --x: -61px; --y: -27px; --r: -65deg; color: #81d4fa; }
.site-loader .leaf-two { --x: 55px; --y: -39px; --r: 35deg; color: #4fc3f7; animation-delay: -250ms; width: 21px; height: 21px; }
.site-loader .leaf-three { --x: -45px; --y: 31px; --r: -100deg; color: #4fc3f7; animation-delay: -500ms; width: 18px; height: 18px; }
.site-loader .leaf-four { --x: 52px; --y: 25px; --r: 80deg; color: #a6def5; animation-delay: -750ms; width: 24px; height: 24px; }
.site-loader-brand { font: 700 20px/1.6 "M PLUS Rounded 1c", "Hiragino Maru Gothic ProN", Meiryo, sans-serif; letter-spacing: .16em; padding-left: .16em; }
.site-loader-caption { margin-top: 7px; color: #659ab4; font: 500 11px/1.8 sans-serif; letter-spacing: .16em; }
.site-loader-dots { display: inline-block; width: 14px; animation: site-loader-dots 1400ms ease-in-out infinite; }
@keyframes site-loader-gather {
  0%, 100% { opacity: .25; transform: translate(var(--x), var(--y)) rotate(var(--r)) scale(.8); }
  50% { opacity: .9; transform: translate(calc(var(--x) * .7), calc(var(--y) * .65 - 8px)) rotate(calc(var(--r) + 18deg)) scale(1); }
}
@keyframes site-loader-breathe {
  0%, 100% { transform: translateY(2px) rotate(-8deg); }
  50% { transform: translateY(-6px) rotate(3deg); }
}
@keyframes site-loader-shadow { 50% { transform: scaleX(.75); opacity: .5; } }
@keyframes site-loader-dots { 50% { opacity: .25; } }
@keyframes site-loader-dismiss {
  from { opacity: 1; visibility: visible; }
  to { opacity: 0; visibility: hidden; }
}
@media (prefers-reduced-motion: reduce) {
  .site-loader { display: none !important; }
  .site-loader *, .site-loader *::after { animation: none !important; }
}
