/* Anchor is invisible; script mounts overlay on body */
.mco-opening-anchor {
  display: none;
}

.mco-opening {
  /* 従来の min(92vw, 720px) 基準の 20% */
  --mco-opening-img-max: min(18.4vw, 144px);
  /* m/co → op_part_mco モーフィング（JS morphMs と同じ秒数） */
  --mco-opening-morph-duration: 1s;
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: flex;
  align-items: stretch;
  justify-content: center;
  background: var(--mco-opening-bg, #073591);
  opacity: 1;
  transition: opacity 0.55s ease;
  pointer-events: auto;
}

.mco-opening.mco-opening--exiting {
  opacity: 0;
  pointer-events: none;
}

.mco-opening__stage {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* 合体後の回転でロゴの角が欠けないよう、回転中だけはクリップを外す */
.mco-opening--mco-spin .mco-opening__stage {
  overflow: visible;
}

.mco-opening__row {
  flex: 1 1 50%;
  min-height: 0;
  width: 100%;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.mco-opening__row--bottom {
  align-items: flex-start;
}

.mco-opening__row img {
  display: block;
  max-width: var(--mco-opening-img-max);
  height: auto;
  width: auto;
}

/* スライドはラッパー、合体後の回転は img のみ（transform を分離） */
.mco-opening__m-wrap,
.mco-opening__co-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  width: min(var(--mco-opening-img-max), 100%);
  box-sizing: border-box;
  flex-shrink: 0;
}

.mco-opening__m-wrap {
  transform: translateY(calc(-100vh - 20px));
  will-change: transform;
}

.mco-opening__co-wrap {
  transform: translateY(calc(100vh + 20px));
  will-change: transform;
}

.mco-opening--slide-in .mco-opening__m-wrap {
  transform: translateY(0);
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}

.mco-opening--slide-in .mco-opening__co-wrap {
  transform: translateY(0);
  transition: transform 0.85s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes mco-opening-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* 合体後: op_part_mco.svg のみ表示し、約 10 回転/秒（0.1s/周） */
.mco-opening__mco-layer {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--mco-opening-img-max);
  max-width: min(100%, 92vw);
  transform: translate(-50%, -50%) scale(0.94);
  opacity: 0;
  pointer-events: none;
  background: transparent;
  box-shadow: none;
  transition:
    opacity var(--mco-opening-morph-duration) ease,
    transform var(--mco-opening-morph-duration) cubic-bezier(0.22, 1, 0.36, 1);
}

.mco-opening__mco {
  display: block;
  max-width: 100%;
  height: auto;
  width: auto;
  transform-origin: center center;
  will-change: transform;
  object-fit: contain;
  vertical-align: middle;
  border: 0;
  box-shadow: none;
  /* テーマ img の白背景・装飾で「白い四角」に見えるのを防ぐ */
  background: transparent !important;
  background-color: transparent !important;
}

.mco-opening--mco-replace .mco-opening__mco-layer {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

.mco-opening__m-wrap,
.mco-opening__co-wrap {
  opacity: 1;
  transition: opacity var(--mco-opening-morph-duration) ease;
}

.mco-opening--mco-replace .mco-opening__m-wrap,
.mco-opening--mco-replace .mco-opening__co-wrap {
  opacity: 0;
}

.mco-opening--mco-spin .mco-opening__mco {
  animation: mco-opening-logo-spin 0.5s linear infinite;
}

.mco-opening__crow-wrap {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--mco-opening-img-max);
  height: var(--mco-opening-img-max);
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 2;
  transform: translate(calc(-50% + 85vw), -50%);
  will-change: transform;
  background: transparent;
  box-shadow: none;
}

.mco-opening__crow-inner {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-90deg);
  background: transparent;
}

.mco-opening__crow {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  display: block;
  object-fit: contain;
  /* SVG 実寸比率（幅1011 / 高さ423）— img の誤った初期ボックスを抑える */
  aspect-ratio: 1011 / 423;
  background: transparent;
  /* テーマの img 背景色が乗るのを防ぐ */
  background-color: transparent !important;
  box-shadow: none;
  border: 0;
  vertical-align: middle;
}

.mco-opening--crow-in .mco-opening__crow-wrap {
  transform: translate(-50%, -50%);
  transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

@media (prefers-reduced-motion: reduce) {
  .mco-opening__m-wrap,
  .mco-opening__co-wrap {
    transform: none !important;
    transition: none !important;
  }

  .mco-opening--slide-in .mco-opening__m-wrap,
  .mco-opening--slide-in .mco-opening__co-wrap {
    transform: none !important;
  }

  .mco-opening__mco-layer {
    transition: opacity 0.2s ease;
    transform: translate(-50%, -50%) scale(1) !important;
  }

  .mco-opening--mco-spin .mco-opening__mco {
    animation: none !important;
  }

  .mco-opening__crow-wrap {
    transform: translate(-50%, -50%) !important;
    transition: none !important;
  }

  .mco-opening {
    transition: opacity 0.2s ease;
  }
}
