:root {
  --nyc-intro-bg: #030405;
  --nyc-intro-text: rgba(255,255,255,.58);
}

html.nyc-intro-lock,
body.nyc-intro-lock {
  overflow: hidden !important;
}

.nyc-intro {
  position: fixed;
  inset: 0;
  z-index: 999999;
  overflow: hidden;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 50% 46%, rgba(27,31,35,.22) 0%, rgba(3,4,5,.85) 48%, #000 100%),
    var(--nyc-intro-bg);
  opacity: 1;
  visibility: visible;
  transition: opacity .9s cubic-bezier(.22,.61,.36,1), visibility .9s;
}

.nyc-intro.is-leaving {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.nyc-intro-canvas,
.nyc-intro-vignette {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.nyc-intro-canvas {
  z-index: 1;
  display: block;
  filter: contrast(1.06) saturate(.76);
}

.nyc-intro-vignette {
  z-index: 2;
  pointer-events: none;
  background:
    radial-gradient(circle at 50% 50%, transparent 0 30%, rgba(0,0,0,.08) 52%, rgba(0,0,0,.58) 100%),
    linear-gradient(to bottom, rgba(0,0,0,.34), transparent 23%, transparent 76%, rgba(0,0,0,.34));
}

.nyc-intro-logo-button {
  position: relative;
  z-index: 4;
  width: clamp(190px, 23vw, 330px);
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  display: grid;
  place-items: center;
  cursor: pointer;
  transform: translate3d(0,0,0) scale(1);
  transition: transform .22s ease, filter .22s ease;
  outline: none;
}

.nyc-intro-logo-button::before {
  content: "";
  position: absolute;
  inset: 9%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.10), rgba(255,255,255,.025) 52%, transparent 72%);
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: inset 0 0 45px rgba(255,255,255,.03), 0 0 45px rgba(0,160,220,.05);
  backdrop-filter: blur(3px);
}

.nyc-intro-logo-halo {
  position: absolute;
  inset: -7%;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.07);
  box-shadow: 0 0 50px rgba(0,176,240,.11), 0 0 100px rgba(255,80,0,.04);
  opacity: .8;
  transform: scale(.96);
  transition: opacity .25s ease, transform .25s ease;
}

.nyc-intro-logo {
  position: relative;
  z-index: 2;
  width: 76%;
  height: 76%;
  object-fit: contain;
  user-select: none;
  -webkit-user-drag: none;
  filter: drop-shadow(0 12px 24px rgba(0,0,0,.52));
  transition: transform .25s ease, filter .25s ease;
}

@media (hover:hover) and (pointer:fine) {
  .nyc-intro-logo-button:hover {
    transform: scale(1.045);
    filter: brightness(1.05);
  }
  .nyc-intro-logo-button:hover .nyc-intro-logo {
    transform: scale(1.025);
    filter: drop-shadow(0 16px 32px rgba(0,0,0,.62));
  }
  .nyc-intro-logo-button:hover .nyc-intro-logo-halo {
    opacity: 1;
    transform: scale(1.035);
  }
}

.nyc-intro-logo-button:focus-visible {
  box-shadow: 0 0 0 3px rgba(255,255,255,.85), 0 0 0 7px rgba(0,160,220,.26);
}

.nyc-intro.is-activating .nyc-intro-logo-button {
  animation: nycIntroEnter 1.05s cubic-bezier(.2,.75,.15,1) forwards;
}

.nyc-intro.is-activating .nyc-intro-vignette {
  animation: nycIntroFlash 1.05s ease forwards;
}

.nyc-intro-hint {
  position: absolute;
  z-index: 5;
  left: 50%;
  bottom: 7.2%;
  transform: translateX(-50%);
  color: var(--nyc-intro-text);
  font-family: Arial, Helvetica, sans-serif;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .12em;
  text-align: center;
  white-space: nowrap;
  opacity: .76;
  transition: opacity .3s ease;
}

.nyc-intro-hint span { font-size: 12px; letter-spacing: .06em; }
@media (hover: none) { .nyc-intro-hint span { display: none; } }

.nyc-intro.is-activating .nyc-intro-hint {
  opacity: 0;
}

@keyframes nycIntroEnter {
  0% { transform: scale(1); opacity: 1; }
  28% { transform: scale(.92); opacity: 1; }
  72% { transform: scale(2.8); opacity: .98; }
  100% { transform: scale(5.6); opacity: 0; }
}

@keyframes nycIntroFlash {
  0% { background-color: transparent; }
  62% { background-color: rgba(255,255,255,.02); }
  100% { background-color: rgba(255,255,255,.08); }
}

@media (max-width: 767px) {
  .nyc-intro-logo-button { width: clamp(180px, 58vw, 270px); }
  .nyc-intro-hint {
    width: calc(100% - 32px);
    white-space: normal;
    line-height: 1.65;
    letter-spacing: .18em;
    bottom: 8%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nyc-intro,
  .nyc-intro-logo-button,
  .nyc-intro-logo,
  .nyc-intro-logo-halo,
  .nyc-intro-hint {
    animation: none !important;
    transition-duration: .15s !important;
  }
}
