/* ========================================
   CSS Variables & Design Tokens
   ======================================== */

:root {
  /* Colors */
  --color-main: #071D49;
  --color-white: #FFFFFF;
  --color-sub: #D9D9D9;
  --color-bg: #033524;
  --color-bg-main: #B2442F;
  --color-link: #1979B9;

  --base: 16;
  --fs-body: calc(16 / var(--base) * 1rem);
  --fs-body-sp: calc(14 / var(--base) * 1rem);
  --fs-h2: calc(22 / var(--base) * 1rem);
  --fs-date: calc(14 / var(--base) * 1rem);
  --fs-large: calc(18 / var(--base) * 1rem);
  --fs-small: calc(13 / var(--base) * 1rem);

  --max-width: 1000px;
  --font-noto-cjk-jp: 'Noto Sans CJK JP', 'Noto Sans JP', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif;
    
  /* Transitions */
  --transition-fast: 0.2s;
  --transition-normal: 0.3s;
}

/* ========================================
   Base Styles & Reset
   ======================================== */
/* Eric Meyer's Reset CSS v2.0 - http://cssreset.com */html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}/*HTML5display-roleresetforolderbrowsers*/article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}table{border-collapse:collapse;border-spacing:0;}

html {
  /* WCAG 2.4.12: フォーカスが固定ヘッダーに隠れないように */
  scroll-behavior: smooth;
  scrollbar-gutter: stable;
}

.font-noto-cjk-jp {
  font-family: var(--font-noto-cjk-jp);
}

body {
  color: #00226b;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-spacing-trim: trim-start;
  opacity: 0;
  background: none;
  /* transition: all 0.2s ease; */
}

body.is-page-ready {
  opacity: 1;
}

body.is-page-bg-ready {
  background-size: auto auto;
  background-color: rgba(255, 255, 0, 1);
  background-image: repeating-linear-gradient(-45deg, transparent, transparent 46px, rgba(255, 213, 0, 1) 46px, rgba(255, 213, 0, 1) 92px );
}

/* レスポンシブ画像 */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* リンクのデフォルトスタイル */
a {
  color: var(--color-link);
  text-decoration: none;
  /* WCAG 2.5.8: 最小タッチターゲットサイズ 24x24px */
  min-width: 24px;
  min-height: 24px;
  display: inline-block;
  transition: opacity var(--transition-fast);
  will-change: opacity;
}

a:hover {
  opacity: 0.5;
}

/* WCAG 2.4.11: フォーカスインジケーター（キーボード操作時のみ） */
a:focus-visible {
  outline: 3px solid var(--color-main);
  outline-offset: 2px;
  /* コントラスト比3:1以上を確保 */
}
@media (max-width: 640px) {
  br:not(.sp-br) {
    display: none;
  }
  body {
    font-size: var(--fs-body-sp);
  }
  body.is-page-bg-ready {
    background-image: repeating-linear-gradient(-45deg, transparent, transparent 20px, rgba(255, 213, 0, 1) 20px, rgba(255, 213, 0, 1) 40px );
  }
}
/* ========================================
  mv Area
======================================== */
#mv {
  position: relative;
  background-color: #bef2ff;
}
#mv .inner {
  max-width: 1370px;
  margin: 0 auto;
  position: relative;
}
#mv .inner > div {
  position: absolute;
}
#mv .osaru {
  top: 72px;
  left: 580px;
}
#mv .comment1 {
  top: 23px;
  left: 70px;
}
#mv .comment2 {
  top: 65px;
  right: 50px;
}
#mv .comment3 {
  top: 287px;
  left: 34px;
}
#mv .comment4 {
  top: 662px;
  left: 94px;
}
#mv .comment5 {
  top: 625px;
  right: 100px;
}

/* MV pop-in animation */
#mv .inner > .osaru,
#mv .comment1,
#mv .comment2,
#mv .comment3,
#mv .comment4,
#mv .comment5 {
  opacity: 0;
  transform-origin: center bottom;
  will-change: transform, opacity;
}

#mv .inner > .osaru {
  transform: translateY(60px) scale(0.55);
}

#mv .comment1,
#mv .comment2,
#mv .comment3,
#mv .comment4,
#mv .comment5 {
  transform: scale(0.35);
}

#mv .inner > .osaru.is-pop-visible {
  animation: mv-osaru-pop 0.88s cubic-bezier(0.2, 1.2, 0.3, 1) forwards;
}

#mv .comment1.is-pop-visible,
#mv .comment2.is-pop-visible,
#mv .comment3.is-pop-visible,
#mv .comment4.is-pop-visible,
#mv .comment5.is-pop-visible {
  animation: mv-comment-pop 0.4s cubic-bezier(0.18, 1.12, 0.34, 1) forwards;
}

@keyframes mv-osaru-pop {
  0% {
    opacity: 0;
    transform: translateY(60px) scale(0.55);
  }
  55% {
    opacity: 1;
    transform: translateY(-14px) scale(1.16) rotate(-2deg);
  }
  66% {
    opacity: 1;
    transform: translateY(2px) scale(0.97) rotate(1.4deg);
  }
  74% {
    opacity: 1;
    transform: translateY(-1px) scale(1.03) rotate(-1.5deg);
  }
  81% {
    opacity: 1;
    transform: translateY(0) scale(0.99) rotate(1.2deg);
  }
  87% {
    opacity: 1;
    transform: translateY(0) scale(1.01) rotate(-1deg);
  }
  92% {
    opacity: 1;
    transform: translateY(0) scale(0.995) rotate(0.75deg);
  }
  96% {
    opacity: 1;
    transform: translateY(0) scale(1.005) rotate(-0.45deg);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1) rotate(0deg);
  }
}

@keyframes mv-comment-pop {
  0% {
    opacity: 0;
    transform: scale(0.35);
  }
  70% {
    opacity: 1;
    transform: scale(1.08);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@media (max-width: 1370px) {
  #mv .osaru {
    width: 15.91vw;
    top: 5.25vw;
    left: 42.33vw;
  }
  #mv .comment1 {
    width: 17.95vw;
    top: 1.67vw;
    left: 5.11vw;
  }
  #mv .comment2 {
    width: 24.59vw;
    top: 4.73vw;
    right: 3.65vw;
  }
  #mv .comment3 {
    width: 14.45vw;
    top: 20.93vw;
    left: 2.53vw;
  }
  #mv .comment4 {
    width: 16.78vw;
    top: 48.29vw;
    left: 6.81vw;
  }
  #mv .comment5 {
    width: 14.08vw;
    top: 45.83vw;
    right: 7.81vw;
  }
}
@media (max-width: 640px) {
  #mv .osaru {
    width: 21vw;
    top: 29.25vw;
    left: 40.5vw;
  }
  #mv .comment1 {
    width: 26.25vw;
    top: 3.75vw;
    left: 17.75vw;
  }
  #mv .comment2 {
    width: 45vw;
    top: 2vw;
    right: 6.5vw;
  }
  #mv .comment3 {
    width: 21vw;
    top: 42.25vw;
    left: .75vw;
  }
  #mv .comment4 {
    width: 21.75vw;
    top: 119.5vw;
    left: 2vw;
  }
  #mv .comment5 {
    width: 21vw;
    top: 116.75vw;
    right: .81vw;
  }
}
/* ========================================
  Main Content
======================================== */
main {
  font-family: 'UD Shin Maru Go H JIS2004 AP', sans-serif;
  font-size: var(--fs-body);
  letter-spacing: .04em;
  line-height: 2;  
  overflow-x: hidden;
}
.yodogawa {
  font-size: var(--fs-large);
  text-align: center;
  padding: 70px 0 180px;
  position: relative;
}
.yodogawa.final {
  font-size: var(--fs-body);
}
.yodogawa .date {
  font-size: var(--fs-date);
  margin-top: 60px;
}
.banner {
  max-width: 670px;
  margin: 70px auto 0;
  display: flex;
  gap: 30px;
  line-height: 0;

}
.banner img {
  max-width: 320px;
  border-radius: 6px;
}
.point {
  max-width: 700px;
  margin: 0 auto;
  position: relative;
}
.point::before {
  content: '';
  position: absolute;
  background: url(../images/num1.svg) no-repeat center center;
  background-size: contain;
  top: -62px;
  left: 45px;
  width: 93px;
  height: 110px;
  z-index: 2;
}
#point2.point::before {
  background: url(../images/num2.svg) no-repeat center center;
  background-size: contain;
}
#point3.point::before {
  background: url(../images/num3.svg) no-repeat center center;
  background-size: contain;
}
#point4.point::before {
  background: url(../images/num4.svg) no-repeat center center;
  background-size: contain;
}
#point5.point::before {
  background: url(../images/num5.svg) no-repeat center center;
  background-size: contain;
}
#point6.point::before {
  background: url(../images/num6.svg) no-repeat center center;
  background-size: contain;
}
.point .osaru {
  position: absolute;
  top: -105px;
  left: 0;
  right: 0;
  transform: translateY(60px);
  transition: transform 0.4s ease;
}

@keyframes point-osaru-pre-wiggle {
  0% {
    transform: translateX(-4px) rotate(-1deg) scale(var(--osaru-img-scale, 1));
  }
  50% {
    transform: translateX(4px) rotate(1deg) scale(var(--osaru-img-scale, 1));
  }
  100% {
    transform: translateX(-4px) rotate(-1deg) scale(var(--osaru-img-scale, 1));
  }
}

#point5.point .osaru {
  top: -108px;
}
#point6.point .osaru {
  top: -138px;
}
.point .osaru img {
  margin: 0 auto;
  --osaru-img-scale: 1;
  transform-origin: center center;
}

.point .osaru:not(.is-visible) img {
  animation: point-osaru-pre-wiggle 0.9s ease-in-out infinite;
}

.point .osaru.is-visible img {
  animation: none;
  transform: scale(var(--osaru-img-scale, 1));
}

.point .osaru.is-visible {
  animation: none;
  transform: translateY(0) translateX(0) rotate(0deg);
}
.point .osaru.is-raised {
  z-index: 2;
}
.point::after {
  content: '';
  position: absolute;
  background: url(../images/osaru-hand.svg) no-repeat center center;
  width: 54px;
  height: 12px;
  top: -4px;
  left: 322px;
  z-index: 3;
}
#point1.point::after {
  top: -1px;
}
#point2.point::after {
  left: 325px;
}
#point3.point::after {
  left: 318px;
}
#point4.point::after {
  left: 315px;
}
#point5.point::after {
  left: 320px;
}
#point6.point::after {
  left: 325px;  
}
.point .inner {
  background-color: #f5ffe9;
  position: relative;
  filter: drop-shadow(0px 0px 6px rgba(0, 0, 0, 0.4));
}
.point h2 {
  background-color: #00226b;
  color: #fff;
  padding: 30px 0 20px 150px;
  font-size: var(--fs-h2);
  line-height: 1.54;
  letter-spacing: .8px;
  filter: drop-shadow(0px 3px 3px rgba(0, 0, 0, 0.3));
  position: relative;
  z-index: 1;
}
.point .tag {
  position: absolute;
  top: 108px;
  right: 0;
  display: flex;
  gap: 4px;  
}
.point .detail {
  padding: 80px 0 70px;
}
.point .detail div + div {
  margin-top: 2em;
}
.point .detail .image {
  display: flex;
  justify-content: center;
  text-align: center;
}
.point .icon {
  width: 45px;
  display: inline-block;
  vertical-align: middle;
}
.point .note {
  display: block;
  margin-top: -8px;
  font-size: var(--fs-small);
  color: #666666;
}
.point + .point {
  margin-top: 120px;
}
@media (min-width : 641px){ 
  .point .inner {
    border-radius: 20px;
  }
  .point .detail .text {
    padding-left: 150px;  
  }
  .point h2 {
    border-radius: 20px 20px 0 0;
  }  
  .point + .point {
    margin-top: 190px;
  }
}
@media (max-width : 640px){ 
  .yodogawa {
    font-size: var(--fs-body);
    text-align: left;
    padding: 20px 0 120px;
  }
  .yodogawa p {
    width: 90vw;
    margin: 0 auto;
  }
  .banner {
    flex-wrap: wrap;
    flex-direction: column;
    align-content: center;
    gap: min(8.75vw, 34px);
    margin-top: 24px;
  }
  .point::before {
    width: 54px;
    height: 65px;
    top: -50px;
    left: 5vw;
  }
  .point .osaru {
    transform: translateY(50px);
  }
  .point .osaru img {
    --osaru-img-scale: 0.736;
  }
  .point::after {
    transform: scale(0.736);
    top: -1px;
    left: 42.8vw;
  }
  .point h2 {
    font-size: min(4.5vw, 18px);
    letter-spacing: .4px;
    padding: 24px 0 16px 6vw;
  }
  .point .tag {
    top: 85px;
    right: -1px;
  }
  .point .tag img {
    width: 104px;
  }
  .point .detail {
    padding: 50px 0 30px;
  }
  .point .detail .text {
    width: 90vw;
    margin-left: auto;
    margin-right: auto;
  }
  .point .detail .image {
    max-width: 90vw;
    margin-left: auto;
    margin-right: auto;
  }
  #point2.point .osaru {
    top: -98px;
  }
  #point2.point::after {
    top: -3px;
    left: 43.5vw;    
  }
  #point3.point .osaru {
    top: -98px;
  }
  #point3.point::after {
    top: -3px;
    left: 42.2vw;    
  }
  #point4.point .osaru {
    top: -98px;
  }
  #point4.point::after {
    top: -3px;
    left: 41.4vw;
  }
  #point5.point .osaru {
    top: -102px;
  }
  #point5.point::after {
    top: -3px;
    left: 42.4vw;
  }
  #point6.point .osaru {
    top: -120px;
  }
  #point6.point::after {
    top: -4px;
    left: 43.5vw;
  }
  .yodogawa.final {
    font-size: var(--fs-body-sp);
    padding-bottom: 80px;
  }
  .yodogawa .date {
    font-size: var(--fs-small);
    margin-top: 40px;
    text-align: center;
  }
}

/* ========================================
   Footer
   ======================================== */
.ico_home svg {
  aspect-ratio: 80 / 36;
  width: 80px;
}
#home_menu h3 .home_menu_title_bg {
  fill: #00226b;
  background-color: #00226b;  
}
footer {
  font-family: 'UD Shin Maru Go B JIS2004 AP', sans-serif;
}
footer .share li, footer .hobo li,
footer .share li a, footer .hobo li a {
  color: #00226b;
  border-color: #00226b;
}
footer .share li.share_x {
  padding-left: 4px;
}
footer .share li a svg {
  width: 30px;
  height: 100%;
}
footer .share li a svg path {
  fill: #003f44;
}
@media (min-width : 641px){ 
  img.sp, svg.sp {
    display: none;
  }
  footer{
      position: relative;
      z-index: 2;
  }

  footer .inner{
      max-width: 820px;
      padding: 0 50px;
      box-sizing: border-box;
      margin: 0 auto;
      position: relative;
  }

  footer li span{
      display: block;
      vertical-align: middle;
  }

  footer li a{
      transform: opacity .1s ease;
  }

  footer li a:hover{
      opacity: .7;
      transform: opacity .15s ease;
  }

  footer .share{
      display: flex;
      padding-top: 6px;
  }

  footer .share li{
      margin: 0 35px 0 0;
      line-height: 0;
  }

  footer .hobo{
      display: flex;
      position: absolute;
      align-items: center;
      top: 6px;
      right: 50px;
  }

  footer .hobo li{
      margin: 0 0 0 35px;
  }

  footer .hobo img{
      width: auto;
      height: 24px;
  }

  footer .copyright{
      padding: 60px 0 40px 0;
      text-align: center;
      font-size: 12px;
      color: #00226b;
      letter-spacing: .1em;
  }

  footer .share_title{
      border-top: 1px solid #0a1464;
      border-bottom: 1px solid #0a1464;
      font-size: 12px;
      font-weight: bold;
      color: #0a1464;
  }

  footer .share_title span{
      display: block;
      line-height: 1em;
      position: relative;
      top: 50%;
      transform: translateY(-50%);
  }

  footer .share li a{
      font-size: 38px;
  }

  footer .email span{
      display: inline-block;
      margin: -4px 5px 0 0;
      font-size: 30px;
  }

  footer .email{
      margin: 3px 0 0 0;
      font-size: 13px;
      font-weight: bold;
      color: #0a1464;
  }

  footer .ico_home span{
      margin: -8px 0 0 0;
      display: block;
      font-size: 38px;
  }  
}
@media (max-width: 800px) and (min-width: 641px){
  footer{
      text-align: center;
  }

  footer .share{
      max-width: 300px;
      justify-content: space-between;
      margin: 0 auto 40px auto;
  }

  footer .share li{ margin: 0;}

  footer .hobo{
      max-width: 300px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      position: relative;
      margin: 0 auto;
      top: 0;
      right: 0;
  }

  footer .hobo li{ margin: 0;}  
}
@media (max-width: 640px) {
  img.pc, svg.pc {
    display: none;
  }
  footer{
      text-align: center;
      position: relative;
      z-index: 2;
  }

  footer .inner{
      max-width: 100%;
      box-sizing: border-box;
      margin: 0 auto;
      position: relative;
  }

  footer .share{
      max-width: 260px;
      display: flex;
      justify-content: space-between;
      margin: 0 auto 40px auto;
  }

  footer .share li{
      margin: 0;
  }

  footer .hobo{
      max-width: 300px;
      position: relative;
      margin: 0 auto;
  }

  footer .hobo li{
      margin: 0 0 24px 0;
      display: block;
  }

  footer .share_title{
      border-top: 1px solid #0a1464;
      border-bottom: 1px solid #0a1464;
      font-size: 12px;
      font-weight: bold;
      color: #0a1464;
  }

  footer .share_title span{
      display: block;
      line-height: 1em;
      position: relative;
      top: 50%;
      transform: translateY(-50%);
  }

  footer li span{
      display: block;
      vertical-align: middle;
  }

  footer .share li a{
      font-size: 38px;
  }

  footer li a{
      transform: opacity .1s ease;
  }

  footer li a:hover{
      opacity: .7;
      transform: opacity .15s ease;
  }

  footer .email span{
      display: inline-block;
      margin: 0 5px 0 0;
      font-size: 30px;
      position: relative;
      top: -2px;
  }

  footer .email{
      font-size: 13px;
      font-weight: bold;
      color: #0a1464;
  }

  footer .ico_home span{
      margin: 0 0 0 0;
      display: block;
      font-size: 38px;
  }

  footer .copyright{
      padding: 20px 0 40px 0;
      text-align: center;
      font-size: 12px;
      color: #00226b;
      letter-spacing: .1em;
  }  
}
@media (prefers-reduced-motion: reduce) {
}

/* ========================================
   Fade-in on scroll
   ======================================== */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

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

@media (prefers-reduced-motion: reduce) {
  #mv .inner > .osaru,
  #mv .comment1,
  #mv .comment2,
  #mv .comment3,
  #mv .comment4,
  #mv .comment5 {
    opacity: 1;
    transform: none;
    animation: none;
  }

  .fade-in {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .point .osaru {
    opacity: 1;
    transform: none;
    transition: none;
    animation: none;
  }

  .point .osaru img {
    animation: none;
    transform: scale(var(--osaru-img-scale, 1));
  }
}