/* Brand intro: the KGEC lockup drawn as inline vector artwork (markup in tools/intro-markup.html).
   Sharp at every screen size and pixel density; no video download. */
.kgec-intro {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: radial-gradient(120% 90% at 50% 42%, #ffffff 0%, #f6f8f6 48%, #e9eeeb 100%);
  isolation: isolate;
  transition: transform .7s cubic-bezier(.76, 0, .24, 1);
  will-change: transform;
  /* Safety net: if the script never runs, the intro still clears itself. */
  animation: kgec-intro-failsafe .5s ease 8s forwards;
}

.kgec-intro__stage {
  display: grid;
  justify-items: center;
  transition: opacity .35s ease, transform .5s cubic-bezier(.4, 0, .2, 1);
}

.kgec-intro__logo {
  display: block;
  /* Sized by the smaller of the screen width and height so it fills phones and desktops alike. */
  width: min(84vw, 78vh, 680px);
  height: auto;
  overflow: visible;
}

/* Arcs sweep in from the left, lowest first. */
.kgec-intro__sweep {
  stroke-dasharray: 1 2;
  stroke-dashoffset: 1;
  animation: kgec-intro-sweep .75s cubic-bezier(.65, 0, .25, 1) forwards;
}
.kgec-intro__sweep--4 { animation-delay: .05s; }
.kgec-intro__sweep--3 { animation-delay: .13s; }
.kgec-intro__sweep--2 { animation-delay: .21s; }
.kgec-intro__sweep--1 { animation-delay: .29s; }

/* Letters rise out of the baseline. */
.kgec-intro__letter {
  transform: translateY(290px);
  animation: kgec-intro-rise .65s cubic-bezier(.16, 1, .3, 1) forwards;
}
.kgec-intro__letter--1 { animation-delay: .42s; }
.kgec-intro__letter--2 { animation-delay: .48s; }
.kgec-intro__letter--3 { animation-delay: .54s; }
.kgec-intro__letter--4 { animation-delay: .60s; }

.kgec-intro__tagline {
  opacity: 0;
  transform: translateY(10px);
  animation: kgec-intro-fade .45s cubic-bezier(.2, .7, .2, 1) .88s forwards;
}

.kgec-intro.is-leaving { transform: translateY(-101%); pointer-events: none; }
.kgec-intro.is-leaving .kgec-intro__stage { opacity: 0; transform: translateY(-14px) scale(.985); }

/* Already welcomed on this visit (flag set by the inline script in <head>): skip the intro entirely. */
.kgec-intro-seen .kgec-intro { display: none; }

body.kgec-intro-lock { overflow: hidden; }

@keyframes kgec-intro-sweep { to { stroke-dashoffset: 0; } }
@keyframes kgec-intro-rise { to { transform: translateY(0); } }
@keyframes kgec-intro-fade { to { opacity: 1; transform: translateY(0); } }
@keyframes kgec-intro-failsafe { to { opacity: 0; visibility: hidden; pointer-events: none; } }

@media (prefers-reduced-motion: reduce) {
  .kgec-intro { display: none; }
  body.kgec-intro-lock { overflow: auto; }
}
