/* IGOABROAD page loader: a low-poly graduate assembles from geometric fragments while the page loads.
   Everything is hidden unless JavaScript is running (html.js), so visitors without JS never see it. */

#igo-loader { display: none; }

.js #igo-loader {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  position: fixed; inset: 0; z-index: 2147483000; overflow: hidden;
  background: rgba(247, 249, 253, .96);   /* fallback where backdrop-filter is unavailable */
  opacity: 1;
  /* Safety net: if the script ever fails, the overlay still clears itself. */
  animation: igo-ld-failsafe .01s linear 10s forwards;
}
@keyframes igo-ld-failsafe { to { opacity: 0; visibility: hidden; pointer-events: none; } }

/* Frosted glass: no solid colour, the page behind shows through blurred */
@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .js #igo-loader {
    background:
      radial-gradient(90% 70% at 12% 0%, rgba(31, 111, 235, .10), transparent 62%),
      radial-gradient(80% 70% at 100% 100%, rgba(242, 183, 5, .13), transparent 62%),
      rgba(255, 255, 255, .34);
    -webkit-backdrop-filter: blur(24px) saturate(1.6);
            backdrop-filter: blur(24px) saturate(1.6);
  }
}

/* Soft light moving slowly inside the glass */
.js #igo-loader::before, .js #igo-loader::after {
  content: ""; position: absolute; border-radius: 50%; pointer-events: none; filter: blur(70px);
}
.js #igo-loader::before {
  width: 50vmax; height: 50vmax; left: -14vmax; top: -18vmax;
  background: radial-gradient(circle, rgba(18, 62, 104, .22), transparent 68%);
  animation: igo-ld-drift-a 9s ease-in-out infinite alternate;
}
.js #igo-loader::after {
  width: 44vmax; height: 44vmax; right: -12vmax; bottom: -16vmax;
  background: radial-gradient(circle, rgba(212, 168, 67, .30), transparent 68%);
  animation: igo-ld-drift-b 11s ease-in-out infinite alternate;
}
@keyframes igo-ld-drift-a { to { transform: translate(9vmax, 6vmax) scale(1.12); } }
@keyframes igo-ld-drift-b { to { transform: translate(-8vmax, -7vmax) scale(1.1); } }
@media (prefers-reduced-motion: reduce) {
  .js #igo-loader::before, .js #igo-loader::after { animation: none; }
}

#igo-loader svg {
  position: relative; z-index: 1;
  filter: drop-shadow(0 22px 30px rgba(11, 31, 58, .28));
  display: block; overflow: visible;
  aspect-ratio: 614 / 1340;
  width: min(calc(66vh * .4582), 78vw, 300px);
  height: auto;
}
@supports (height: 1dvh) {
  #igo-loader svg { width: min(calc(66dvh * .4582), 78vw, 300px); }
}

#igo-loader polygon {
  stroke: #F5F5F0; stroke-width: 4; stroke-linejoin: round;
  transform-box: fill-box; transform-origin: 50% 50%;
  opacity: 0;                      /* pieces are revealed by the script */
}
#igo-loader.is-static polygon { opacity: 1; }

/* Brand logo: appears as the graduate is completed */
#igo-loader .igo-ld-logo {
  position: relative; z-index: 1; display: block; width: min(250px, 64vw); height: auto;
  margin-top: clamp(20px, 4vh, 38px);
  opacity: 0;
}
#igo-loader.is-static .igo-ld-logo { opacity: 1; }

#igo-loader .k-N { fill: #0B1F3A; }   /* deep institutional navy */
#igo-loader .k-B { fill: #123E68; }   /* professional blue */
#igo-loader .k-T { fill: #087E8B; }   /* refined teal */
#igo-loader .k-G { fill: #D4A843; }   /* muted achievement gold */
#igo-loader .k-C { fill: #20252D; }   /* subtle charcoal */

.igo-ld-sr {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

@media print { #igo-loader { display: none !important; } }
