/*---------------------------------------------
カラー変数
---------------------------------------------*/
:root {
  --aqua: #58bbb4;
}

/*---------------------------------------------
body・ページ共通
---------------------------------------------*/
html,
body {
  width: 100%;
  overflow-x: clip;
}

body {
  color: var(--aqua);
  background: #fff;
  font-family: "Hiragino Kaku Gothic ProN", "Yu Gothic", YuGothic, Meiryo, sans-serif;
  font-feature-settings: "palt";
}

/*---------------------------------------------
ファーストビュー
---------------------------------------------*/
.hero {
  position: relative;
  z-index: 2;
  height: 805px;
  overflow: visible;
  background: #fff;
}

.hero__visual {
  position: absolute;
  z-index: 1;
  top: -540px;
  left: 50%;
  width: 1808.85px;
  height: 1808.85px;
  transform: translateX(-50%);
}

.hero__rings,
.hero__blur,
.hero__logo,
.hero__ring {
  position: absolute;
  top: 50%;
  left: 50%;
}

.hero__rings {
  /* PC用の拡大率は下部の min-width: 901px 内で変更 */
  --rings-start-scale: .43;
  --rings-final-scale: 1;
  width: 100%;
  height: 100%;
  opacity: 0;
  transform: translate(-50%, -50%) scale(var(--rings-start-scale));
  transform-origin: center;
  z-index: 1;
}

.hero__ring {
  width: var(--ring-size);
  height: var(--ring-size);
  max-width: none;
  transform: translate(-50%, -50%);
  transform-origin: center;
  will-change: transform;
}

/* 円素材：e1が最内側、e8が最外側 */
.hero__ring--e1 {
  --ring-size: 893.38px;
  animation: rotate-ccw 50s linear infinite;
}

.hero__ring--e2 {
  --ring-size: 1024.59px;
  animation: rotate-ccw 66s linear infinite;
}

.hero__ring--e3 {
  --ring-size: 1135.95px;
  animation: rotate-ccw 58s linear infinite;
}

.hero__ring--e4 {
  --ring-size: 1272.86px;
  animation: rotate-ccw 76s linear infinite;
}

.hero__ring--e5 {
  --ring-size: 1392px;
  animation: rotate-cw 72s linear infinite;
}

.hero__ring--e6 {
  --ring-size: 1479.57px;
  animation: rotate-cw 84s linear infinite;
}

.hero__ring--e7 {
  --ring-size: 1613.18px;
  animation: rotate-cw 92s linear infinite;
}

.hero__ring--e8 {
  --ring-size: 1808.85px;
  animation: rotate-ccw 104s linear infinite;
}

/* 中央の30周年ロゴ */
.hero__logo {
  z-index: 3;
  width: 296px;
  max-width: none;
  opacity: 0;
  transform: translate(-50%, -50%);
}

.hero__blur {
  /* ぼかしは円・ロゴより後ろの最背面 */
  z-index: 0;
  width: 1849px;
  max-width: none;
  opacity: 0;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.is-ready .hero__rings {
  animation: rings-entrance 2.2s cubic-bezier(.22, .78, .32, 1) .35s forwards;
}

.is-ready .hero__logo {
  animation: fade-in 1.25s ease-in 2.2s forwards;
}

.is-ready .hero__blur {
  /* 1.55秒 ÷ 1.8：約0.86秒で表示 */
  animation: fade-in .86s ease-in 3.2s forwards;
}

/*---------------------------------------------
MESSAGE
---------------------------------------------*/
.message {
  position: relative;
  z-index: 1;
  min-height: 1243px;
  padding: 110px 24px 310px;
  overflow: hidden;
  opacity: 0;
  background: #fff;
}

/* ぼかしの表示完了（約4.06秒）と同時に、画面位置に関係なくMESSAGEを表示 */
.is-ready .message {
  animation: fade-in 1.5s ease-in 4.06s forwards;
}

.message__inner {
  position: relative;
  z-index: 2;
  width: min(100%, 810px);
  margin: 0 auto;
  text-align: center;
}

.message__heading {
  width: 384px;
  margin: 0 auto 70px;
}

.message__body {
  font-size: 15px;
  /* 本文の太さはPC・タブレット・スマホ共通で500 */
  font-weight: 500;
  line-height: 2.05;
  letter-spacing: .08em;
}

.message__body p + p {
  margin-top: 18px;
}

.message__signature {
  margin-top: 54px !important;
  /* 支配人表記は全画面幅で明朝体を使用 */
  font-family: "Noto Serif JP", "Yu Mincho", YuMincho, serif;
  font-weight: 500;
  letter-spacing: .18em;
}

.message__photos {
  position: absolute;
  z-index: 1;
  inset: 0;
  pointer-events: none;
}

.message__photo {
  position: absolute;
  max-width: none;
  pointer-events: none;
}

/* 右側の女性（PCの詳細位置は min-width: 901px 内） */
.message__photo--right {
  right: -76px;
  bottom: -32px;
  width: 760px;
}

/* 左側の女性（PCの詳細位置は min-width: 901px 内） */
.message__photo--left {
  left: -185px;
  bottom: -62px;
  width: 484px;
}

/*---------------------------------------------
CAMPAIGN & EVENT
---------------------------------------------*/
/* 見出しはMESSAGEの下端に固定し、人物写真より前面に表示 */
.campaign__heading {
  position: absolute;
  z-index: 3;
  right: 24px;
  bottom: 34px;
  left: 24px;
  width: min(867px, calc(100% - 48px));
  margin: auto;
}

.campaign {
  position: relative;
  z-index: 5;
  padding: 68px 24px 90px;
  background: #fff4f3;
}

.campaign__content {
  width: min(100%, 1040px);
  margin: 0 auto;
  text-align: center;
}

.campaign__lead {
  margin-bottom: 28px;
  color: #c99c58;
  font-family: "Noto Serif JP", "Yu Mincho", YuMincho, serif;
  font-size: 34px;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: .12em;
}

.campaign__banner {
  display: block;
  transition: transform .4s ease, filter .4s ease, box-shadow .4s ease;
}

.campaign__banner img {
  width: 100%;
}

/* キーボード操作時にもリンク位置が分かるようにする */
.campaign__banner:focus-visible {
  outline: 3px solid #f094a4;
  outline-offset: 6px;
}

/* 見出しとバナーエリアを、表示領域に入った時にふわっと表示 */
.js-scroll-fade {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 1.2s ease-in, transform 1.2s ease;
}

.js-scroll-fade.is-scroll-visible {
  opacity: 1;
  transform: translateY(0);
}

/* hoverが使える端末だけ、バナーを少し浮かせて明るくする */
@media (hover: hover) and (pointer: fine) {
  .campaign__banner:hover {
    transform: translateY(-6px) scale(1.01);
    filter: brightness(1.04);
    box-shadow: 0 18px 38px rgba(195, 133, 145, .4);
  }
}

/*---------------------------------------------
NEXT UPDATE / COMING SOON
---------------------------------------------*/
.coming-soon {
  position: relative;
  z-index: 5;
  min-height: 520px;
  padding: 140px 24px 120px;
  background: #fff;
  text-align: center;
}

.coming-soon__image {
  width: min(474.83px, 100%);
  margin: 0 auto;
}

/*---------------------------------------------
初回表示アニメーション
---------------------------------------------*/
@keyframes rings-entrance {
  0% {
    opacity: 0;
    transform: translate(-50%, -50%) scale(var(--rings-start-scale));
  }

  18% {
    opacity: 1;
  }

  100% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(var(--rings-final-scale));
  }
}

@keyframes fade-in {
  to {
    opacity: 1;
  }
}

/*---------------------------------------------
PC・横長タブレット共通（901px以上）
---------------------------------------------*/
@media (min-width: 901px) {
  /* PC：この高さを増減するとMESSAGE全体の開始位置が上下する */
  .hero {
    height: 1005px;
  }

  .hero__rings {
    --rings-start-scale: .344;
    --rings-final-scale: .8;
  }

  .hero__logo {
    width: 444px;
  }

  /* PCのみ、ぼかし画像を直前サイズの80％に縮小 */
  .hero__blur {
    width: 1479px;
  }

  .message {
    z-index: 4;
    background: transparent;
  }

  /*
   * PCの人物配置：1433px幅をデザイン基準にする。
   * 1433pxより画面が広い場合は、その余白分だけ隠れていた人物が見える。
   * bottomを左右共通にして、2枚の画像の下端を揃える。
   */
  .message__photo--right {
    right: calc(max(0px, 50vw - 716.5px) - 320px);
    bottom: -16px;
    width: 780px;
  }

  .message__photo--left {
    left: calc(max(0px, 50vw - 716.5px) - 155px);
    bottom: -16px;
    /* 左余白削除後のbg02.pngに合わせ、人物の見た目サイズを維持 */
    width: 490px;
  }
}

/*---------------------------------------------
PC専用（1033px以上）
ロゴ・円・ぼかしは、各素材の基準px値を120％に変更
1032px以下のタブレット・スマホには適用しない
---------------------------------------------*/
@media (min-width: 1033px) {
  /* MESSAGEセクション全体を直前の位置から140px下へ移動 */
  .hero {
    height: 1145px;
  }

  .hero__ring--e1 {
    --ring-size: 1072.056px;
  }

  .hero__ring--e2 {
    --ring-size: 1229.508px;
  }

  .hero__ring--e3 {
    --ring-size: 1363.14px;
  }

  .hero__ring--e4 {
    --ring-size: 1527.432px;
  }

  .hero__ring--e5 {
    --ring-size: 1670.4px;
  }

  .hero__ring--e6 {
    --ring-size: 1775.484px;
  }

  .hero__ring--e7 {
    --ring-size: 1935.816px;
  }

  .hero__ring--e8 {
    --ring-size: 2170.62px;
  }

  .hero__logo {
    width: 532.8px;
  }

  .hero__blur {
    width: 1774.8px;
  }

  /* PCのMESSAGE見出し・本文・署名をまとめて40px下へ移動 */
  .message__inner {
    top: 40px;
  }

  /* PCのMESSAGE本文：15pxから2px拡大し、文字の太さを500に統一 */
  .message__body {
    font-size: 17px;
    font-weight: 500;
  }

  /* PCの署名：従来の15pxから3px拡大（明朝体・太さは共通指定を継承） */
  .message__signature {
    font-size: 18px;
  }

  /*
   * PCの人物画像を基準px値から120％に拡大する。
   * 画像サイズは維持し、左右ともセクション下端に揃えて下余白を作らない。
   */
  .message__photo--right {
    bottom: 0;
    width: 936px;
  }

  .message__photo--left {
    bottom: 0;
    width: 588px;
  }

  /*
   * PCではMESSAGE全体の一括フェードを解除し、
   * 見出しと文章をJavaScriptでそれぞれ表示する。
   */
  .is-ready .message {
    opacity: 1;
    animation: none;
  }

  .message__heading,
  .message__body,
  .message__photos {
    opacity: 0;
    transition: opacity 1.5s ease-in;
  }

  .message__heading.is-message-visible,
  .message__body.is-message-visible,
  .message__photos.is-message-visible {
    opacity: 1;
  }
}

/*---------------------------------------------
円の常時回転アニメーション
---------------------------------------------*/
@keyframes rotate-ccw {
  from {
    transform: translate(-50%, -50%) rotate(0deg);
  }

  to {
    transform: translate(-50%, -50%) rotate(-360deg);
  }
}

@keyframes rotate-cw {
  from {
    transform: translate(-50%, -50%) rotate(0deg);
  }

  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

/*---------------------------------------------
ワイドPC（1434px以上）
---------------------------------------------*/
@media (min-width: 1434px) {
  .hero__visual {
    width: min(1808.85px, 126.23vw);
    height: min(1808.85px, 126.23vw);
  }
}

/*---------------------------------------------
タブレット共通（900px以下）
---------------------------------------------*/
@media (max-width: 900px) {
  .hero {
    height: 650px;
  }

  .hero__visual {
    top: -420px;
    width: 1420px;
    height: 1420px;
  }

  .hero__ring {
    width: calc(var(--ring-size) * .785);
    height: calc(var(--ring-size) * .785);
  }

  .hero__logo {
    width: 240px;
  }

  .hero__blur {
    width: 1450px;
  }

  .message {
    min-height: 1180px;
    padding-top: 52px;
  }

  .message__photo--right {
    right: -210px;
    width: 650px;
  }

  .message__photo--left {
    left: -205px;
    width: 396px;
  }
}

/*---------------------------------------------
横長タブレット（901〜1032px）
スマートフォンには適用しない
---------------------------------------------*/
@media (min-width: 901px) and (max-width: 1032px) {
  /* MESSAGE開始前の余白を直前の765pxから90px追加 */
  .hero {
    height: 855px;
  }

  /* 円の表示倍率は維持し、各素材の基準px値を従来から20％拡大 */
  .hero__rings {
    --rings-start-scale: .2064;
    --rings-final-scale: .48;
  }

  .hero__ring--e1 {
    --ring-size: 1072.056px;
  }

  .hero__ring--e2 {
    --ring-size: 1229.508px;
  }

  .hero__ring--e3 {
    --ring-size: 1363.14px;
  }

  .hero__ring--e4 {
    --ring-size: 1527.432px;
  }

  .hero__ring--e5 {
    --ring-size: 1670.4px;
  }

  .hero__ring--e6 {
    --ring-size: 1775.484px;
  }

  .hero__ring--e7 {
    --ring-size: 1935.816px;
  }

  .hero__ring--e8 {
    --ring-size: 2170.62px;
  }

  /* ぼかしの基準幅を887.4pxから20％拡大 */
  .hero__blur {
    width: 1064.88px;
  }

  /* 人物は768〜900pxと同じサイズ・配置に統一 */
  .message__photo--right {
    right: calc(-210px + 10vw);
    width: 455px;
  }

  .message__photo--left {
    left: calc(-205px + 10vw);
    width: 435.6px;
  }

  /* 横長タブレット：PCの比率を保ちながら少し縮小 */
  .coming-soon__image {
    width: 430px;
  }
}

/*---------------------------------------------
タブレット（768〜900px）
---------------------------------------------*/
@media (min-width: 768px) and (max-width: 900px) {
  /* MESSAGE開始前の余白を直前の650pxから90px追加 */
  .hero {
    height: 740px;
  }

  /* 円・ぼかしは既存タブレット表示の60％ */
  .hero__ring {
    width: calc(var(--ring-size) * .471);
    height: calc(var(--ring-size) * .471);
  }

  /* ロゴの基準幅を240pxから20％拡大 */
  .hero__logo {
    width: 288px;
  }

  .hero__blur {
    width: 870px;
  }

  /* 右女性455px・左女性435.6pxで、901〜1032pxと同じ配置 */
  .message__photo--right {
    right: calc(-210px + 10vw);
    width: 455px;
  }

  .message__photo--left {
    left: calc(-205px + 10vw);
    width: 435.6px;
  }

  .coming-soon {
    min-height: 440px;
    padding-top: 115px;
  }

  .coming-soon__image {
    width: 380px;
  }
}

/*---------------------------------------------
小型タブレット（601〜767px）
スマートフォン（600px以下）には適用しない
---------------------------------------------*/
@media (min-width: 601px) and (max-width: 767px) {
  /* MESSAGE開始前の余白を直前の650pxから135px追加 */
  .hero {
    height: 785px;
  }

  /* 円の表示計算は維持し、各素材の基準px値を直前サイズの65％に変更 */
  .hero__ring--e1 {
    --ring-size: 580.697px;
  }

  .hero__ring--e2 {
    --ring-size: 665.9835px;
  }

  .hero__ring--e3 {
    --ring-size: 738.3675px;
  }

  .hero__ring--e4 {
    --ring-size: 827.359px;
  }

  .hero__ring--e5 {
    --ring-size: 904.8px;
  }

  .hero__ring--e6 {
    --ring-size: 961.7205px;
  }

  .hero__ring--e7 {
    --ring-size: 1048.567px;
  }

  .hero__ring--e8 {
    --ring-size: 1175.7525px;
  }

  /* ぼかしの基準幅を1450pxから65％に縮小 */
  .hero__blur {
    width: 942.5px;
  }

  /* 左右の女性は768〜900pxと同じ位置・大きさに統一 */
  .message__photo--right {
    right: calc(-210px + 10vw);
    width: 455px;
  }

  .message__photo--left {
    left: calc(-205px + 10vw);
    width: 435.6px;
  }

  /*
   * 2つのSVGの縦横比に合わせ、文字の表示高さを揃える。
   * CAMPAIGN & EVENTは画面左右24px内に収め、MESSAGEも同じ高さになる幅で表示。
   */
  .campaign__heading {
    width: calc(100vw - 48px);
  }

  .message__heading {
    width: calc((100vw - 48px) * .4566);
  }

  .coming-soon {
    min-height: 400px;
    padding-top: 100px;
  }

  .coming-soon__image {
    width: 330px;
  }
}

/*---------------------------------------------
スマートフォン（600px以下・390px幅基準）
---------------------------------------------*/
@media (max-width: 600px) {
  .pc-only {
    display: none;
  }

  /* スマホのみ、円全体を従来サイズの60％に縮小 */
  .hero__rings {
    --rings-start-scale: .258;
    --rings-final-scale: .6;
  }

  .hero {
    height: 520px;
  }

  .hero__visual {
    top: -310px;
    width: 1020px;
    height: 1020px;
  }

  .hero__ring {
    width: calc(var(--ring-size) * .564);
    height: calc(var(--ring-size) * .564);
  }

  .hero__logo {
    width: 176px;
  }

  /* スマホのみ、ぼかし画像を従来サイズの60％に縮小 */
  .hero__blur {
    width: 626px;
  }

  .message {
    /* 人物エリアを本文後の通常フローに置くため、固定高さと下余白を解除 */
    min-height: 0;
    padding: 40px 24px 0;
  }

  .message__heading {
    width: 244px;
    margin-bottom: 44px;
  }

  .message__body {
    /* 従来の13pxから約95％に縮小 */
    font-size: 2.7vw;
    line-height: 1.95;
    letter-spacing: .045em;
  }

  .message__body p + p {
    margin-top: 17px;
  }

  .message__signature {
    margin-top: 42px !important;
  }

  /*
   * スマホは本文直後に人物専用エリアを確保する。
   * 左右の画像はこの同じエリアを基準に配置し、下端を揃える。
   */
  .message__photos {
    position: relative;
    inset: auto;
    /* 人物を15vw上へ移動した分だけエリアも短くし、下の空白を残さない */
    height: calc(359px - 15vw);
    margin: 30px -24px 0;
  }

  .message__photo--right {
    /* 添付指示：右側の水平位置を調整 */
    right: -146px;
    /* 短くした人物エリアの下端に固定し、見えている位置を維持 */
    bottom: 0;
    width: 342px;
  }

  .message__photo--left {
    /* 添付指示：左側の水平位置を調整 */
    left: -94px;
    /* 右女性と同じ下端基準で揃える */
    bottom: 0;
    /* 左余白削除後のbg02.pngに合わせ、人物の見た目サイズを維持 */
    width: 294px;
  }

  /* スマホは写真の見え方を保ったまま、見出しを横幅内に収める */
  .campaign__heading {
    right: 16px;
    bottom: 20px;
    left: 16px;
    width: calc(100% - 32px);
  }

  .campaign {
    padding: 42px 16px 58px;
  }

  .campaign__lead {
    margin-bottom: 22px;
    font-size: 22px;
    letter-spacing: .08em;
  }

  /* スマホ：MESSAGE見出しとの見た目の大きさを揃える */
  .coming-soon {
    min-height: 330px;
    padding: 80px 24px 70px;
  }

  .coming-soon__image {
    width: min(260px, 100%);
  }
}

/*---------------------------------------------
動きを減らす設定
---------------------------------------------*/
@media (prefers-reduced-motion: reduce) {
  /* OS側で動きを減らす設定が有効な場合 */
  .hero__rings,
  .hero__logo,
  .hero__blur {
    opacity: 1;
    animation-delay: 0s !important;
    animation-duration: .01ms !important;
  }

  .hero__rings {
    transform: translate(-50%, -50%) scale(var(--rings-final-scale));
  }

  .hero__ring {
    animation: none;
  }

  .message {
    opacity: 1;
    animation: none !important;
  }

  .message__heading,
  .message__body,
  .message__photos,
  .js-scroll-fade {
    opacity: 1;
    transform: none;
    transition: none !important;
  }
}
