@charset "euc-jp";

body {
  font-family: 'Hiragino Kaku Gothic ProN', 'Lucida Grande', Meiryo, sans-serif;
  background-color: #fff;
}

.globalFooter .outer {
    padding-top: 20px;
}

/***** 共通 *****/
.content {
  max-width: 1920px;
  margin: 97px auto 0;
}

.content * {
  box-sizing: border-box;
}

.content img {
  display: block;
  max-width: 100%;
}

.content a:hover {
  text-decoration: none;
}

.text.is_emphasis {
  font-size: inherit;
  color: #f6ff00;
}



/*** スクロールしたときヘッダーに被らない処理 ***/
.top-sentinel {
  position: absolute;
  top: -96px;
  left: 50%;
  width: 1px;
  height: 1px;
}
.globalHeader.is-scrolled {
  z-index: 210;
}



/***** メインビジュアル *****/
.hero {
    position: relative;
    width: 100%;
    height: 970px;
}

/* 背景だけを拡大するための領域 */
.hero-bg {
  position: absolute;
  z-index: 0;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
}

/* 背景画像本体 */
.hero-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url(https://assets-legacy.livede55.com/event/img/fireworks/hero_bg.png) center top no-repeat;
  background-size: 1920px;
  transform: scale(1);
  transform-origin: center top;
  transition: transform 800ms ease;
  will-change: transform;
}

.hero-logo-wrap {
  transition: all 0.1s ease; /* メディアクエリ用 */
}

.hero-logo {
  position: absolute;
  top: 37px;
  left: 50%;
  transform: translateX(-50%);
  width: 929px;
  z-index: 202;
    transition:
    opacity 800ms ease,
    transform 800ms ease;
  will-change: opacity, transform;
}
.hero-logo__image {
    width: 100%;
    max-width: initial;
}

.hero__character {
  position: absolute;
  top: -18px;
  left: 50%;
  transform: translateX(334px);
  pointer-events: none;
  z-index: 201;
  transform-origin: left top;
  transition: transform 800ms ease;
  filter: none;
  will-change: transform, filter;
}



/*** ページ遷移後の動き ***/

/* 0.5秒後に付与されるクラス */
.hero.is-intro-running .hero-bg::before {
  transform: scale(1.1);
  background-image: url(https://assets-legacy.livede55.com/event/img/fireworks/hero_bg_nofireworks.png);
}

.hero.is-intro-running .hero-logo {
  opacity: 0;
  transform: translateX(-50%) translateY(10px);
}

.hero.is-intro-running .hero__character {
  transform: translateX(334px) scale(1.1);
}

/*** rank3以上のキャラクターハイライト ***/
/* 動画再生開始から3秒後に発光開始 */
/* rank1・rank2では発光しない。*/
.hero.is-fireworks-playing.rank3 .hero__character,
.hero.is-fireworks-playing.rank4 .hero__character,
.hero.is-fireworks-playing.rank5 .hero__character {
  animation: character-fireworks-flicker 1.2s linear 3s infinite;
}

@keyframes character-fireworks-flicker {
  0%,
  10% {
    filter: none;
  }

  14% {
    filter:
      brightness(1.15)
      saturate(1.18)
      drop-shadow(0 0 4px rgba(235, 190, 255, 0.7))
      drop-shadow(0 0 14px rgba(160, 80, 255, 0.45));
  }

  20% {
    filter: none;
  }

  29% {
    filter:
      brightness(1.08)
      saturate(1.08)
      drop-shadow(0 0 2px rgba(255, 245, 160, 0.45))
      drop-shadow(0 0 6px rgba(255, 205, 50, 0.15));
  }

  36% {
    filter: none;
  }

  43%,
  48% {
    filter:
      brightness(1.18)
      saturate(1.14)
      drop-shadow(0 0 4px rgba(255, 250, 170, 0.75))
      drop-shadow(0 0 14px rgba(255, 205, 50, 0.45));
  }

  54% {
    filter: none;
  }

  63% {
    filter:
      brightness(1.15)
      saturate(1.18)
      drop-shadow(0 0 4px rgba(235, 190, 255, 0.7))
      drop-shadow(0 0 12px rgba(160, 80, 255, 0.45));
  }

  67% {
    filter: none;
  }

  72% {
    filter:
      brightness(1.15)
      saturate(1.18)
      drop-shadow(0 0 4px rgba(235, 190, 255, 0.7))
      drop-shadow(0 0 14px rgba(160, 80, 255, 0.45));
  }

  78% {
    filter: none;
  }

  88% {
    filter:
      brightness(1.1)
      saturate(1.1)
      drop-shadow(0 0 3px rgba(255, 245, 160, 0.5))
      drop-shadow(0 0 9px rgba(255, 205, 50, 0.2));
  }

  94%,
  100% {
    filter: none;
  }
}

/* 大きいロゴが消えた後、左下に小さく表示 */
.hero.is-intro-complete .hero-logo {
  top: 20px;
  left: 20px;
  width: 160px;
  opacity: 1;
  transform: none;
  transition: opacity 500ms ease;
}



/***** 動画エリア *****/
.fireworks-wrap {
    position: absolute;
    top: 0;
    inset-inline: 0;
    margin-inline: auto;
    width: 900px;
    height: 660px;
    z-index: 100;
    mix-blend-mode: screen;
}

.fireworks-video {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/***** 動画以下 *****/
.section.has_curtain {
    position: relative;
    margin-top: -13px; /* 透過部分 */
    padding-bottom: 30px;
    background: url(https://assets-legacy.livede55.com/event/img/fireworks/curtain_top.png) center top no-repeat;
    background-size: 1920px;
    z-index: 202;
}
.section.has_curtain::after {
  content: "";
  position: absolute;
  top: 860px;
  right: 0;
  bottom: 0;
  left: 0;
  background: url(https://assets-legacy.livede55.com/event/img/fireworks/curtain_repeat.png) center repeat-y;
  background-size: 1920px;
  pointer-events: none;
  z-index: 0;
}



/***** メーター *****/
.meter-wrap {
    position: relative;
    top: -300px;
    transition: top 500ms ease;
    z-index: 210;
}

.meter {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 724px;
    height: 68px;
    margin: -6px auto 20px;
    padding: 0 30px 0 25px; 
    border-radius: 34px;
    border: 2px solid #feff85;
    overflow: hidden;
    background: #000;
    color: #fff;
}

/* 数値に応じて伸びるピンク部分 */
.meter::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: calc(var(--progress, 0) * 1%);
  border-radius: inherit;
  background: #ff48a7;
  box-shadow: 0 6px 4px rgba(255,255,0,0.2) inset,0 -6px 4px rgba(89,0,211,0.2) inset;
  transition: width 2000ms ease;
  z-index: 0;
}

/* テキストをピンク背景より前に出す */
.meter > * {
  position: relative;
  z-index: 1;
}

.meter * {
  color: inherit;
  line-height: 1;
  text-shadow: 6px 6px 0 rgba(0,0,0,0.05);
}

.meter-title {
  position: relative;
  display: inline-block;
  margin: 0 auto;
  z-index: 2;
}

.meter-rank-wrap,
.meter-count-wrap {
    display: flex;
    align-items: center;
    white-space: nowrap;
}

/* フォント調整 */
.meter {
    font-family: "Noto Sans JP", sans-serif;
}

.meter-rank-wrap *,
.meter-count-wrap * {
    position: relative;
    top: -1px;
}
.meter-rank__label,
.meter-count__next-wrap,
.meter-count__next {
    font-weight: 400;
}
.meter-rank,
.meter-count__current {
    font-weight: bold;
}
.meter-rank__label {
    font-size: 22px;
}
.meter-rank {
    top: -3px;
    font-size: 32px;
}
.meter-count__current {
    top: -3px;
    font-size: 46px;
    letter-spacing: 0.06em;
    padding-right: 10px;
}
.meter-count__next-wrap {
    top: -6px;
    font-size: 30px;
}
.meter-count__next {
    top: 4px;
    font-size: 36px;
}

/* rank5はテキストが長いので調整 */
.meter.is_max {
    padding: 0 15px;
}
.meter.is_max .meter-rank__label {
    font-size: 12px;
}
.meter.is_max .meter-rank,
.meter.is_max .meter-count__next-wrap {
    letter-spacing: 0.02em;
}
.meter.is_max .meter-count__current {
    padding-right: 4px;
}

/*** rank5：MAX時のグラデーション＋白ハイライト ***/
.meter.is_max::before {
  background: linear-gradient(
    90deg,
    #f7d741 0%,
    #ff48a7 45%,
    #f369ff 100%
  );
}

/* 白いハイライト */
.meter.is_max::after {
  content: "";
  display: block;
  position: absolute;
  top: -35%;
  bottom: -35%;
  left: -30%;
  width: 18%;
  z-index: 0;
  pointer-events: none;
  transform: skewX(-20deg);
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.05) 25%,
    rgba(255, 255, 255, 0.35) 50%,
    rgba(255, 255, 255, 0.05) 75%,
    transparent 100%
  );

  filter: blur(2px);
  animation: meter-max-shine 2.2s ease-in-out infinite;
}

@keyframes meter-max-shine {
  0%,
  20% {
    left: -30%;
    opacity: 0;
  }

  35% {
    opacity: 1;
  }

  65% {
    left: 115%;
    opacity: 0;
  }

  100% {
    left: 115%;
    opacity: 0;
  }
}



/***** イベント詳細 .event-detail *****/
.event-detail {
    position: relative;
    width: 800px;
    margin: -300px auto 0;
    padding: 25px;
    background: #100c11;
    border: 3px solid #100c11;
    border-radius: 20px;
    z-index: 1;
}

.event-detail::before {
    content: "";
    position: absolute;
    inset: 0;
    padding: 3px;
    background: linear-gradient(to right,#fcee53, #ff5782 50%, #f569da);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    border-radius: 18px;
}

.event-detail * {
    color: #fff;
}
.event-detail b {
    font-weight: bold;
}
.event-detail dt {
    font-weight: bold;
    color: #ff48a5;
}
.event-detail dd + dt {
    margin-top: 18px;
}
.event-detail dd {
    margin-top: 5px;
}
.event-detail dd strong {
  font-weight: bold;
  background: linear-gradient(
    90deg,
    #fff728 0%,
    #ff8bac 50%,
    #ff79eb 100%
  );
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.event-detail li {
  font-size: 12px;
  color: #fff;
}
.event-detail li:not(:first-child) {
  margin-top: 5px;
}
.event-detail li strong {
  font-size: inherit;
  color: #ffff4d;
}