@charset "UTF-8";
/* ///////////////
共通Base ※decoより下で装飾の指定をする
/////////////// */
body {
  /* コンテンツが少ないページでもフッターを画面最下部に置く */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: 100dvh;
  /* スマホ用スライドメニュー表示中、背景をスクロールさせないためのロック（js/w_script.jsと対） */
}
body.fixed {
  position: fixed;
  left: 0;
  width: 100%;
}
header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-content: flex-start;
  align-items: flex-start;
  position: relative;
  background-color: rgba(255, 255, 255, 0.9);
}
header .head-sub {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 auto;
}
header .head-sub .head-user {
  white-space: nowrap;
  flex-shrink: 0;
}
header .head-sub .grade-race-memo {
  white-space: nowrap;
  flex-shrink: 0;
}
header .head-sub .grade-race-memo strong {
  font-family: inherit;
  font-weight: 900;
  color: var(--color-accent);
}
.fixed-nav {
  position: fixed;
}
.fixed-nav li {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #fff;
}
main {
  flex: 1 0 auto;
  background-color: #fff;
}
footer {
  /* deco */
  background-color: rgba(38, 156, 29, 0.9);
}
footer * {
  /* deco */
  color: #fff;
}
footer .gloval-nav li {
  display: inline-block;
}
footer .sub-contents-nav {
  background-color: rgba(0, 0, 0, 0.35);
}
footer .sub-contents-nav li {
  display: inline-block;
}
footer .footer-brand {
  color: #fff;
}
footer .footer-brand p.copyright {
  color: #fff;
}
/* ////////////////////////////////////////////////////////////
※ここから下はデバイス毎の値。サンプルのサイズ感で良ければ触らなくてOK
//////////////////////////////////////////////////////////// */
/* ///// PC Base ///// */
@media screen and (min-width: 751px) {
  body {
    background-image: url("../img/body-bg.png");
    background-repeat: no-repeat;
    /* 背景画像を可変（リサイズ）させず、元のサイズのまま表示する */
    background-size: auto;
    /* スクロールしても背景を固定する */
    background-attachment: fixed;
    /* 画像の配置位置（例: 左上、中央など） */
    background-position: bottom center;
    text-align: center;
  }
  main {
    margin: 0 auto;
    padding: var(--inner-gap-wide);
    width: var(--contents-width-wide);
    border-radius: 10px;
    box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
  }
  main > :not(:last-child) {
    margin-bottom: var(--block-gap-wide);
  }
  header {
    margin: 0 auto 130px;
    width: 1000px;
    height: 200px;
    border-radius: 0 0 100px 100px;
  }
  header .head-nav.narrow,
  header #navMenu {
    display: none;
  }
  header .site-logo {
    padding: var(--inner-gap-wide);
    width: 200px;
    height: fit-content;
  }
  header .head-nav.wide {
    padding: var(--inner-gap-wide);
    display: flex;
    align-items: center;
    justify-content: center;
    height: fit-content;
  }
  header .head-nav.wide li {
    margin-left: 5px;
  }
  header .head-nav.wide li a:hover img,
  header .head-nav.wide li img:hover {
    animation: swing 0.5s ease-in-out;
  }
  @keyframes swing {
    0% {
      transform: rotate(0deg);
    }
    20% {
      transform: rotate(15deg);
    }
    40% {
      transform: rotate(-10deg);
    }
    60% {
      transform: rotate(5deg);
    }
    80% {
      transform: rotate(-5deg);
    }
    100% {
      transform: rotate(0deg);
    }
  }
  header .head-nav.wide .for-badge {
    position: relative;
  }
  header .head-nav.wide .for-badge span {
    padding: 1px 3px;
    position: absolute;
    font-size: 0.7rem;
    top: -5px;
    right: -5px;
    border-radius: 3px;
    background-color: var(--color-accent);
    color: #fff;
    z-index: 10;
  }
  header .head-sub {
    padding: var(--inner-smgap-wide) 0;
    border-top: 2px solid var(--color-key);
    border-bottom: 2px solid var(--color-key);
    width: 96%;
  }
  header .head-sub .head-user {
    font-size: var(--fs-sm-wide);
  }
  header .head-sub .grade-race-memo {
    font-size: var(--fs-sm-wide);
  }
  header .head-sub .grade-race-memo strong {
    font-size: var(--fs-md-wide);
  }
  header .gloval-nav {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    /* 4列に分割 */
    gap: 10px;
    height: fit-content;
    padding: 10px;
    width: var(--contents-width-wide);
    border-radius: 10px;
    background-color: var(--color-key-dark);
    position: absolute;
    left: 50%;
    bottom: -100px;
    transform: translateX(-50%);
    box-shadow: 0px 5px 7px 0px rgba(0, 0, 0, 0.3);
  }
  header .gloval-nav li {
    background-color: rgba(0, 0, 0, 0.2);
    border-radius: 10px;
    text-align: center;
    color: #fff;
  }
  header .gloval-nav li a {
    display: block;
    padding: var(--inner-smgap-wide) 0;
    width: 100%;
    height: 100%;
  }
  header .gloval-nav li a::before {
    content: "";
    display: inline-block;
    width: 35px;
    height: 25px;
    position: relative;
    top: 4px;
  }
  header .gloval-nav li:hover {
    background-color: rgba(0, 0, 0, 0.5);
    border-radius: 10px;
  }
  header .gloval-nav .free a::before {
    background: url("../img/navicon-free.png") center / contain no-repeat;
    top: 4px;
  }
  header .gloval-nav .rank a::before {
    background: url("../img/navicon-rank.png") center / contain no-repeat;
    top: 6px;
  }
  header .gloval-nav .site-review a::before {
    background: url("../img/navicon-sitereview.png") center / contain no-repeat;
    top: 5px;
    left: 3px;
  }
  header .gloval-nav .tipster-review a::before {
    background: url("../img/navicon-tipsterreview.png") center / contain no-repeat;
    top: 6px;
    left: 7px;
  }
  header .gloval-nav .data a::before {
    background: url("../img/navicon-data.png") center / contain no-repeat;
    top: 7px;
    left: 7px;
  }
  header .gloval-nav .result a::before {
    background: url("../img/navicon-result.png") center / contain no-repeat;
    top: 4px;
    left: 5px;
  }
  header .gloval-nav .participatory a::before {
    background: url("../img/navicon-participatory.png") center / contain no-repeat;
    top: 6px;
  }
  header .gloval-nav .tool a::before {
    background: url("../img/navicon-tool.png") center / contain no-repeat;
    top: 7px;
    left: 5px;
  }
  .fixed-nav {
    top: 100px;
    right: 0;
  }
  .fixed-nav li {
    margin-bottom: var(--inner-smgap-wide);
    border-radius: 5px 0 0 5px;
    box-shadow: 0px 3px 3px 0px rgba(0, 0, 0, 0.3);
  }
  .fixed-nav li a {
    padding: 15px;
  }
  .fixed-nav li a:hover img,
  .fixed-nav li img:hover {
    animation: swing 0.5s ease-in-out;
  }
  @keyframes swing {
    0% {
      transform: rotate(0deg);
    }
    20% {
      transform: rotate(15deg);
    }
    40% {
      transform: rotate(-10deg);
    }
    60% {
      transform: rotate(5deg);
    }
    80% {
      transform: rotate(-5deg);
    }
    100% {
      transform: rotate(0deg);
    }
  }
  .fixed-nav li img {
    display: block;
    width: 25px;
    height: auto;
  }
  footer {
    margin: 50px auto 0;
    padding: var(--inner-gap-wide) 0 0;
    border-radius: 100px 100px 0 0;
    width: 1000px;
  }
  footer .gloval-nav {
    margin-bottom: 50px;
  }
  footer .gloval-nav li {
    font-size: var(--fs-sm-wide);
    line-height: 2;
  }
  footer .gloval-nav li:not(:last-of-type) {
    margin-right: 5px;
  }
  footer .sub-contents-nav {
    padding: var(--inner-smgap-wide);
  }
  footer .sub-contents-nav li {
    margin: 0 5px;
    font-size: var(--fs-xsm-wide);
  }
  footer li a:hover {
    color: #ff0;
  }
  footer .footer-brand {
    padding: var(--inner-smgap-wide) 0;
  }
  footer .footer-brand .copyright {
    font-size: var(--fs-xsm-wide);
  }
}
/* ///// SP Base ///// */
@media screen and (max-width: 750px) {
  html {
    margin: 0;
    padding: 0;
    overflow-x: hidden;
  }
  body {
    margin: 0;
    padding: 0;
    text-align: center;
    overflow-x: hidden;
    position: relative;
    /* body自身に background-color があると裏が隠れるため transparent にする */
    background: transparent;
    isolation: isolate;
    /* z-index: -1 が body の外側に逃げないように境界を作る */
  }
  body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100dvh;
    background: url("../img/body-bg-narrow.png") no-repeat center center / cover;
    z-index: -1;
    /* isolation: isolate があれば body 内の最背面にとどまる */
    pointer-events: none;
    transform: translate3d(0, 0, 0);
  }
  header {
    margin: 0 auto 3vw;
    width: 100%;
    padding: var(--inner-gap-narrow);
    border-radius: 0 0 4vw 4vw;
  }
  header.menu-open::after {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  header .site-logo {
    margin-top: 1.5vw;
    text-align: center;
    width: 30vw;
  }
  header .gloval-nav,
  header .head-nav.wide {
    display: none;
  }
  header .head-nav.narrow {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    text-align: right;
  }
  header .head-nav.narrow a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
  }
  header .head-nav.narrow #Icon,
  header .head-nav.narrow #menuIcon {
    position: relative;
    display: block;
  }
  header .head-nav.narrow #menuIcon {
    z-index: 800;
    width: 13vw;
  }
  header .head-sub {
    margin-top: var(--inner-gap-narrow);
    padding: 1vw 0;
    border-top: 0.5vw solid var(--color-key);
    border-bottom: 0.5vw solid var(--color-key);
    width: 100%;
  }
  header .head-sub .head-user {
    font-size: var(--fs-sm-narrow);
  }
  header .head-sub .grade-race-memo {
    font-size: var(--fs-xsm-narrow);
  }
  header .head-sub .grade-race-memo strong {
    font-size: var(--fs-sm-narrow);
  }
  header #navMenu {
    position: fixed;
    top: 0;
    right: 0;
    transform: translateX(100%);
    transition: transform 0.3s ease;
    z-index: 100;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    height: calc(var(--vh, 1vh) * 100);
    padding: var(--inner-gap-narrow);
    width: 55vw;
    /* deco */
    background-color: rgba(7, 93, 0, 0.9);
  }
  header #navMenu h1 {
    margin-top: 2vw;
    width: 25vw;
  }
  header #navMenu dl.slide-contents {
    margin-top: 5vw;
    display: flex;
    flex-direction: column;
  }
  header #navMenu dl.slide-contents dt.caption-menu {
    text-align: center;
    padding: var(--inner-gap-narrow) 0;
    /* deco */
    background-color: rgba(0, 0, 0, 0.6);
    color: #fff;
    border-radius: 1vw;
    font-size: 3.5vw;
  }
  header #navMenu dl.slide-contents dd.contents-nav ul {
    display: grid;
  }
  header #navMenu dl.slide-contents dd.contents-nav ul li {
    text-align: center;
    border-bottom: 2px dotted #000;
  }
  header #navMenu dl.slide-contents dd.contents-nav ul li a {
    padding: var(--inner-gap-narrow) 0;
    font-size: 3.5vw;
    display: block;
    color: #fff;
  }
  header #navMenu.open {
    transform: translateX(0);
  }
  .fixed-nav {
    bottom: 5vw;
    right: 0;
    z-index: 10;
  }
  .fixed-nav li {
    margin-bottom: var(--inner-gap-narrow);
    border-radius: 1vw 0 0 1vw;
    box-shadow: 0px 1vw 1vw 0px rgba(0, 0, 0, 0.3);
    width: 10vw;
  }
  .fixed-nav li a {
    padding: 2.5vw;
  }
  main {
    width: 100%;
    padding: var(--inner-gap-narrow);
  }
  main > :not(:last-child) {
    margin-bottom: var(--block-gap-narrow);
  }
  footer {
    margin: 3vw auto 0;
    width: 100%;
    padding: var(--inner-gap-narrow) 0 0;
  }
  footer .gloval-nav {
    margin-bottom: 5vw;
  }
  footer .gloval-nav li {
    font-size: var(--fs-sm-narrow);
    line-height: 1;
  }
  footer .gloval-nav li.pc-only {
    display: none;
  }
  footer .gloval-nav li:not(:last-of-type) {
    margin-right: 1vw;
  }
  footer .sub-contents-nav {
    padding: var(--inner-smgap-narrow);
  }
  footer .sub-contents-nav li {
    margin: 0 1vw;
  }
  footer .sub-contents-nav li a {
    font-size: var(--fs-xsm-narrow);
    display: inline-block;
  }
  footer .footer-brand {
    padding: var(--inner-smgap-narrow) 0;
  }
  footer .footer-brand .copyright {
    font-size: var(--fs-xsm-narrow);
  }
  p.page-top {
    width: 64px;
  }
  p.page-top a {
    width: 64px;
    height: 24px;
  }
  p.page-top a::before {
    border-left-width: 6px;
    border-right-width: 6px;
    border-bottom-width: 9px;
  }
  footer.login .wrap .gloval-nav li + li::before {
    margin: 0 6px;
  }
  footer.logoff {
    padding-bottom: var(--inner-gap-narrow);
  }
}
