/* ============================================================
   Load screen + page transitions
   Concept: the same "Current" particle system used in the hero,
   repurposed as a connective thread between pages. First-visit
   load screen resolves the current into the wordmark; page
   transitions use a fast current-sweep wipe.
   ============================================================ */

/* ---------- Load screen (first visit per session) ---------- */
#loadScreen{
  position:fixed; inset:0; z-index:9999;
  background:var(--ink);
  display:flex; align-items:center; justify-content:center;
  flex-direction:column;
  opacity:1; transition:opacity .6s var(--ease-out);
}
#loadScreen.is-hidden{
  opacity:0; pointer-events:none;
}
#loadCanvas{
  position:absolute; inset:0; width:100%; height:100%;
}
.load-wordmark{
  position:relative; z-index:2;
  text-align:center;
  opacity:0;
  transform:translateY(10px);
  transition:opacity 1s var(--ease-out), transform 1s var(--ease-out);
}
.load-wordmark.is-visible{ opacity:1; transform:none; }
.load-wordmark__discover{
  display:block;
  font-family:var(--ui); font-size:.85rem; font-weight:700;
  letter-spacing:0.12em; text-transform:uppercase;
  color:var(--moss-lt); margin-bottom:.4rem;
}
.load-wordmark__city{
  display:block;
  font-family:var(--display); font-weight:700;
  font-size:clamp(2.2rem, 6vw, 3.5rem);
  letter-spacing:-0.03em; color:var(--on-dark); line-height:1;
}
.load-wordmark__sub{
  display:block; margin-top:.9rem;
  font-family:var(--body); font-style:italic; font-size:.85rem;
  color:var(--on-dark-mute);
}

.load-sponsors{
  position:relative; z-index:2;
  margin-top:2rem;
  opacity:0; transform:translateY(8px);
  transition:opacity .8s var(--ease-out) .3s, transform .8s var(--ease-out) .3s;
  text-align:center;
}
.load-sponsors.is-visible{ opacity:1; transform:none; }
.load-sponsors__label{
  font-family:var(--ui); font-size:.68rem; font-weight:600;
  letter-spacing:0.05em; color:var(--fog); margin-bottom:.75rem;
}
.load-sponsors__logos{
  display:flex; align-items:center; justify-content:center; gap:2rem;
}
.load-sponsors__logos img{
  height:32px; width:auto; filter:brightness(0) invert(1); opacity:.85;
}

/* ---------- Page transition sweep ---------- */
#pageSweep{
  position:fixed; inset:0; z-index:9998;
  pointer-events:none;
  display:flex;
}
#pageSweep canvas{
  position:absolute; inset:0; width:100%; height:100%;
}
.sweep-panel{
  position:absolute; inset:0;
  background:var(--ink);
  transform:translateX(-100%);
}
.sweep-panel.is-sweeping-in{
  animation:sweepIn .42s cubic-bezier(0.6,0,0.4,1) forwards;
}
.sweep-panel.is-sweeping-out{
  animation:sweepOut .42s cubic-bezier(0.6,0,0.4,1) forwards;
}
@keyframes sweepIn{
  from{ transform:translateX(-100%); }
  to{ transform:translateX(0%); }
}
@keyframes sweepOut{
  from{ transform:translateX(0%); }
  to{ transform:translateX(100%); }
}

@media (prefers-reduced-motion: reduce){
  #loadScreen{ transition:opacity .2s linear; }
  .load-wordmark, .load-sponsors{ transition:none; opacity:1; transform:none; }
  .sweep-panel{ display:none; }
}
