/* ====== ローダー ====== */
body {
  overflow: hidden
}
.p-loader {
  display:grid;
  place-items:center;
  height: 100vh;
}
.p-loader-circle {
  border-bottom: 0.1em solid;
  color: #ff3386;
  cursor: wait;
  line-height: 0.5;
  margin-left: -5em;
  position: relative;
  width: 5em;
  height: 1em;
  text-align: center;
  -webkit-user-select: none;
          user-select: none;
  transform: translateX(50%);
  animation: loadingText 1s infinite cubic-bezier(1, -2.3, 1, 2.5) alternate,
              loadingBar 8s infinite cubic-bezier(0.445, 0.050, 0.550, 0.950) alternate;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  white-space: nowrap;
}
.p-loader-circle:before, .p-loader-circle:after {
  border-radius: 50%;
  content: "";
  position: absolute;
  top: -3em;
  left: -0.5em;
  width: 7em;
  height: 7em;
}
.p-loader-circle:before {
  box-shadow: inset 0 0 0 0.2em rgba(255,212,234,0.86);
  animation: loadingInner 1s infinite cubic-bezier(1, -2.3, 1, 2.5) alternate;
}
.p-loader-circle:after {
  border-radius: 50%;
  border: 0.2em dashed;
  border-top: 0.2em solid #ff3386;
  color: #ff70b0;
  transform-origin: center center;
  animation: loading 1s infinite cubic-bezier(0.6, 0, 0.4, 1);
}
@keyframes loading {
  to {
    transform: rotate(360deg);
  }
}
@keyframes loadingInner {
  to {
    transform: scale(0);
  }
}
@keyframes loadingText {
  0% {
    color: #ff3386;
    width: 0em;
  }
  100% {
    color: #ff70b0;
    width: 4em;
  }
}
@keyframes loadingBar {
  0% {
    width: 0em;
  }
  100% {
    width: 6em;
  }
}
.c-text_input:placeholder-shown {
  background-color: #fff !important;
}

/* ====== フォント ====== */
html,
body {
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", "Meiryo", system-ui, sans-serif !important;
  font-feature-settings: "palt" 1;
  font-weight: 400;
  letter-spacing: .02em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* ====== ヘッダー ====== */
.l-header__wrapper {
  padding: 8px 16px !important;
  min-height: 90px !important;
  align-items: center !important;
}
.l-header__logo {
  display: flex !important;
  align-items: center !important;
  grid-template-columns: none !important;
  width: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}
.l-header__logo img {
  display: block !important;
  width: clamp(200px, 28vw, 300px) !important;
  max-width: 100% !important;
  height: auto !important;
  margin: 0 !important;
}
@media (max-width: 768px) {
  .l-header__wrapper {
    position: relative !important;
    justify-content: center !important;
    min-height: 50px !important;
    padding: 6px 16px !important;
  }
  .l-header h1,
  .l-header__logo {
    margin: 0 auto !important;
  }
  .l-header__logo img {
    width: 190px !important;
  }
  .l-header__wrapper-right {
    position: absolute !important;
    right: 8px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    margin: 0 !important;
  }
}
.l-header { border-bottom: 2px solid transparent; border-image: linear-gradient(90deg, #f86f64, #fd5392) 1; }
.p-login-button {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  color: #fff !important;
  border: none !important;
}
.p-login-button svg { fill: #fff !important; }
.p-login-button .p-login-button_txt { color: #fff !important; }
.p-nav__hamburger-icon,
.p-nav__hamburger-icon::before,
.p-nav__hamburger-icon::after {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
}
.is-open .p-nav__hamburger-icon {
  background: transparent !important;
}
.p-nav { background: #fff; }
.p-nav__menu a { color: #ff5275; }

/* ====== フローティングボタン ====== */
.l-floatingnav {
  overflow: visible !important;
}
.l-floatingnav_inner {
  max-width: 960px !important;
  margin: 0 auto !important;
  padding: 0 16px !important;
  overflow: visible !important;
}
.l-floatingnav .p-entry {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
}
.l-floatingnav .p-entry_pcfloating {
  position: absolute !important;
  right: calc(50% - 332px) !important;
  bottom: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  z-index: 1;
  pointer-events: none;
}
.l-floatingnav .p-entry_pcfloating__img {
  position: static !important;
  width: 100px !important;
  height: auto !important;
  display: block !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
}
.l-floatingnav .p-entry_floating {
  flex: 1 1 auto;
  order: 1;
  max-width: 520px;
  text-align: center;
}
.l-floatingnav .c-button_columns--floating {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  gap: 0 !important;
  border: none;
}
.l-floatingnav .c-button_columns__icon {
  display: none !important;
}
.l-floatingnav .c-button_columns__subhead {
  display: block !important;
  color: #fff !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  padding: 8px 12px !important;
  border-radius: 10px 10px 0 0 !important;
  margin: 0 !important;
  letter-spacing: .02em;
  text-shadow: none !important;
  white-space: nowrap;
}
.l-floatingnav .c-button_columns__headline {
  display: block !important;
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  color: #fff !important;
  font-size: 22px !important;
  font-weight: 700 !important;
  padding: 16px 20px !important;
  border-radius: 50px !important;
  box-shadow: 0 4px 14px rgba(0,0,0,.3) !important;
  margin-top: 0 !important;
  letter-spacing: .03em;
  text-decoration: none !important;
  overflow: hidden;
  position: relative;
  z-index: 2;
  transition: filter .2s;
}
.l-floatingnav .c-button_columns__headline::before {
  content: "";
  animation: shine 4s cubic-bezier(0.25, 0, 0.25, 1) infinite;
  background-color: #fff;
  width: 140%;
  height: 100%;
  transform: skewX(-45deg);
  top: 0;
  left: -160%;
  opacity: .5;
  position: absolute;
}
.l-floatingnav .c-button_columns__headline:hover {
  filter: brightness(1.12);
}
@media (max-width: 1023px) {
  .l-floatingnav .p-entry { gap: 0; }
  .l-floatingnav .p-entry_floating {
    max-width: 100%;
    position: relative;
    z-index: 2;
  }
  .l-floatingnav .p-entry_pcfloating {
    display: block !important;
    right: -17px !important;
  }
  .l-floatingnav .p-entry_pcfloating__img {
    width: 110px !important;
  }
  .l-floatingnav .c-button_columns__subhead { font-size: 12px !important; padding: 7px 10px !important; }
  .l-floatingnav .c-button_columns__headline { font-size: 19px !important; padding: 13px 16px !important; width: 88%; margin: auto; }
}

/* ====== フッター ====== */
.l-footer {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  padding-bottom: 10rem !important;
}
@media (max-width: 768px) {
  .l-footer {
    padding-bottom: 13rem !important;
  }
}
.l-footer_inner {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  padding: 40px 20px 16px !important;
  max-width: none !important;
  margin: 0 !important;
}
.l-footer_container {
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
  max-width: 900px !important;
  margin: 0 auto 20px !important;
  padding: 0 10px !important;
}
.l-footer_nav {
  list-style: none !important;
  padding: 0 !important;
  margin: 0 !important;
  display: grid !important;
  grid-template-columns: repeat(5, 1fr) !important;
  gap: 8px !important;
  flex-direction: unset !important;
}
.l-footer_nav li {
  list-style: none !important;
  text-align: center !important;
}
.l-footer_nav a {
  color: #fff !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  text-decoration: none !important;
  transition: opacity .15s;
  white-space: nowrap;
}
.l-footer_nav a:hover { opacity: .75 !important; }
@media (max-width: 768px) {
  .l-footer_nav { gap: 4px !important; }
  .l-footer_nav a { font-size: 11px !important; }
  .l-footer_inner { padding: 12px 5px 12px !important; }
  .l-footer_container { gap: 5px !important; margin-bottom: 18px !important; }
}
.l-footer__logo {
  display: block !important;
  grid-template-columns: none !important;
  width: auto !important;
  text-align: center !important;
  margin: 0 auto !important;
  padding: 0 !important;
  background: transparent !important;
}
.l-footer__logo img {
  width: 70px !important;
  height: auto !important;
  display: block !important;
  margin: 0 auto !important;
}
@media (max-width: 768px) {
  .l-footer__logo img {
    width: 56px !important;
  }
}
.l-footer_copyright {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  color: #fff !important;
  text-align: center !important;
  padding: 8px !important;
  font-size: 11px !important;
  margin: 0 !important;
}

/* ====== グローバルカラー ====== */
.u-color__primary { color: #a12852 !important; }
.u-color__darkpink { color: #a12852 !important; }
.u-color__hotpink { color: #a12852 !important; }
.u-bg__babypink { background-color: rgba(161,40,82,.08) !important; }
.p-svg_fill--babypink { fill: rgba(161,40,82,.2) !important; }
.p-svg_fill--darkpink { fill: #a12852 !important; }
.p-svg_stroke--darkpink { stroke: #ff5275 !important; }
.p-heading_eighth { color: #a12852 !important; }
.p-heading_border { border-bottom-color: #c6a862 !important; color: #4d4d4d !important; }
.c-button {
  background: linear-gradient(90deg, #f86f64, #fd5392) !important;
  border: none !important;
  box-shadow: none !important;
  padding: 1.2rem !important;
  text-shadow: none !important;
}
.c-button:hover { box-shadow: 0 8px 10px -2px rgba(0,0,0,.2) !important; }

/* ====== page title ====== */
.p-pages_title {
  color: #353535 !important;
  font-size: clamp(2.2rem, 4vw, 3.6rem) !important;
  letter-spacing: .06em;
  line-height: 1.3;
  border: none !important;
  border-bottom: 2px solid #606060 !important;
  border-radius: 0 !important;
}
.p-pages_title::before { content: none !important; }
.p-pages_title::after { content: none !important; }
@media (max-width: 768px) {
  .p-pages_title {
    margin-top: 8rem !important;
    margin-bottom: 2rem !important;
  }
}
