@charset "UTF-8";
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@200..900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap');
/* reset */

*:where(:not(html, iframe, canvas, img, svg, video, audio):not(svg *, symbol *)) {
    all: unset;
    display: revert;
}

/* Preferred box-sizing value */
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Fix mobile Safari increase font-size on landscape mode */
html {
    -moz-text-size-adjust: none;
    -webkit-text-size-adjust: none;
    text-size-adjust: none;
}

/* Reapply the pointer cursor for anchor tags */
a, button {
    cursor: revert;
}

/* Remove list styles (bullets/numbers) */
ol, ul, menu, summary {
    list-style: none;
}

/* For images to not be able to exceed their container */
img {
    max-inline-size: 100%;
    max-block-size: 100%;
}

/* removes spacing between cells in tables */
table {
    border-collapse: collapse;
}

/* Safari - solving issue when using user-select:none on the <body> text input doesn't working */
input, textarea {
    -webkit-user-select: auto;
}

/* revert the 'white-space' property for textarea elements on Safari */
textarea {
    white-space: revert;
}

/* minimum style to allow to style meter element */
meter {
    -webkit-appearance: revert;
    appearance: revert;
}

/* preformatted text - use only for this feature */
:where(pre) {
    all: revert;
    box-sizing: border-box;
}

/* reset default text opacity of input placeholder */
::placeholder {
    color: unset;
}

/* fix the feature of 'hidden' attribute.
   display:revert; revert to element instead of attribute */
:where([hidden]) {
    display: none;
}

/* revert for bug in Chromium browsers
   - fix for the content editable attribute will work properly.
   - webkit-user-select: auto; added for Safari in case of using user-select:none on wrapper element*/
:where([contenteditable]:not([contenteditable="false"])) {
    -moz-user-modify: read-write;
    -webkit-user-modify: read-write;
    overflow-wrap: break-word;
    -webkit-line-break: after-white-space;
    -webkit-user-select: auto;
}

/* apply back the draggable feature - exist only in Chromium and Safari */
:where([draggable="true"]) {
    -webkit-user-drag: element;
}

/* Revert Modal native behavior */
:where(dialog:modal) {
    all: revert;
    box-sizing: border-box;
}

/* Remove details summary webkit styles */
::-webkit-details-marker {
    display: none;
}

/* common */
:root {
    --padding: 80px;
    --base-color: #D9D1D8;
    --button:#B40C72;
    --primary-color: #D24091;
    --pink_strong:#D5328C;
    --pink_dark:#F74EA6;
    --pink_hero:#FA85C6;
    --pink_medium:#FF81BB;
    --pink_light:#FFAFCF;
    --pink_pale:#FFD8E5;
    --navy:#002A7C;
    --navy_dark:#00184E;
    --blue_dark:#214298;
    --blue_medium:#3D5BB2;
    --blue_medium02:#5774CC;
    --blue_light: #8FA9FF;
    --blue_light02: #B6C6FF;
    --blue_pale:#DEE3FF;
    --gray_strong:#282429;
    --gray_dark:#3E393E;
    --gray_medium:#878187;
    --gray_light:#A29BA1;
    --gray_pale:#F6EDF4;
}

html{
  scroll-behavior: smooth;
  scroll-padding-top: 80px;
}
  
body {
  font-family: "Noto Sans JP", sans-serif;
  font-weight: 400;
  font-style: normal;
  line-height: 1.6;
  letter-spacing: 1px;
  background:var(--base-color);
  color: var(--gray_dark);
  font-size:16px;
  overflow-x: hidden;
  position:relative;
}
  
a {
  color: var(--primary-color);
  text-decoration: none;
}

a:hover{
  text-decoration: underline;
}

img {
  object-fit: cover;
}

@media screen and (max-width: 768px) {
body{
  font-size:14px;
}
}

/* loading */

#loading {
  width: 100vw;
  height: 100vh;
  transition: all 1s;
  background-color: white;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
}

.anime {
  width: 260px;
  height: 90px;
  margin: 200px auto;
  border-radius: 100%;
  animation: sk-scaleout 1s infinite ease-in-out;
  display:flex;
  justify-content: center;
}

.anime img{
  width:100%;
}

.loaded {
  opacity: 0;
  visibility: hidden;
}


/* main */ 


@media screen and (max-width: 440px) {
  .button-box{
    width: 100%;
  }
}

main{
  width:100%;
  margin:0 auto;
  overflow-x: hidden;
}

@media screen and (max-width: 460px) {
  main{
  margin:0 auto;
}
}

@media screen and (max-width: 440px) {
  .main{
    width:100%;
  }
}

section{
  width:100%;
  position:relative;
  background:white;
}

.inner{
  width:1200px;
  margin:0 auto;
  padding:80px 0 20px 0;
}


@media screen and (max-width: 1280px) {
.inner{
  width:calc(100vw - 80px);
}
}

@media screen and (max-width: 768px) {
.inner{
  width:calc(100% - 40px);
}
}

/*  button */

.login_btn{
  display:block;
  width:92px;
  height:28px;
  border-radius:8px;
  background:var(--primary-color);
  color:white;
  font-size:0.75em;
  font-weight:700;
  line-height:28px;
  text-align:center;
  display:flex;
  align-items: center;
  justify-content: center;
  gap:4px;
  z-index:6;
}

.login_btn:hover{
  text-decoration: none;
  background:var(--pink_dark);
}

.signup_btn{
  width:100%;
  border-radius:32px;
  background:var(--button);
  color:white;
  font-weight:900;
  text-align:center;
  overflow: hidden;
  text-transform: none;
  margin: 0 auto;
  padding: 12px 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  position: relative;
  background:linear-gradient(to bottom, var(--blue_light) 0%, var(--button) 90%);
}
.hero .signup_btn:after,
.signup .signup_btn:after{
  position: absolute;
  content: "";
  top: 20px;
  right: 26px;
  width: 10px;
  height: 10px;
  border-top: 2px solid white;
  border-right: 2px solid white;
  transform: rotate(45deg);
  transition: .3s;
}
.cta-left .signup_btn:after{
  border-top: 2px solid var(--primary-color);
  border-right: 2px solid var(--primary-color);
}
.hero .signup_btn:hover:after,
.signup .signup_btn:hover:after{
  right:20px;
}

.hero .signup_btn{
  transform-origin: center;
  will-change: transform;
}

.hero .signup_btn.is-pulse{
  animation: ctaPulse 1.9s ease-in-out infinite;
}

@keyframes ctaPulse{
  0%   { transform: scale(1); }
  12%  { transform: scale(1.06); }
  24%  { transform: scale(1); }
  100% { transform: scale(1); } /* ここが「間」 */
}

.hero .signup_btn:hover{
  animation-play-state: paused;
  transform: scale(1.02);
}

@media (prefers-reduced-motion: reduce){
  .hero .signup_btn.is-pulse{ animation: none; }
}

@keyframes shine{
  0%{
    left:-100%;
  }
  80%{
    left:150%;
  }
  100%{
    left:150%;
  }
}

.signup_btn:hover{
  text-decoration: none;
  box-shadow:0 1px 10px white;
}


@media (max-width: 768px){
.hero .signup_btn:after,
.signup .signup_btn:after{
  right:22px;
  width:8px;
  height:8px;
}
.hero .signup_btn:hover:after,
.signup .signup_btn:hover:after{
  right:18px;
}

}




.line_btn{
  display:block;
  width:fit-content;
  max-width:100%;
  height:46px;
  border-radius:32px;
  background:white;
  font-size:0.8em;
  font-weight:700;
  letter-spacing: 1px;
  line-height:64px;
  padding:0 32px;
  display:flex;
  justify-content: center;
  align-items: center;
  gap:8px;
  margin: 20px auto;
}

nav .line_btn{
  border:1px solid var(--button);
}

.line_btn:hover{
  text-decoration: none;
  box-shadow:0 1px 10px white;
}

@media screen and (max-width: 460px) {
  .line_btn:hover{
    border:2px solid var(--primary-color);
  }
}

.fixed_btn{
  display:block;
  width:100%;
  height:64px;
  border-radius:32px;
  background-image: linear-gradient(to bottom, #90E77E, #06c755 40%, #28901D 80%);
  color:white;
  font-size:1.25em;
  font-weight:700;
  letter-spacing: 5px;
  line-height:64px;
  border:2px solid white;
  text-align:center;
  box-shadow:1px 2px 16px #373737;
}

.fixed_btn:hover{
  text-decoration: none;
  background-image: linear-gradient(to bottom, #90E77E 20%, #06c755 60%, #28901D);
}

@media screen and (max-width: 450px) {
  .fixed_btn{
  border:none;
  font-size:1.1em;
  letter-spacing: 3px;
  }
}

/* header */

header{
  width:100%;
  margin:0 auto;
  padding:16px 20px 24px 20px;
  position:relative; 
  display:flex;
  justify-content: space-between;
  position:fixed;
  z-index:999;
  background: linear-gradient(to bottom, rgb(251 129 197) 30%, rgba(255, 182, 193, 0) 100%);
}

header h1{
  padding:8px 0 0 0;
}

@media screen and (max-width: 768px) {
header h1{
  padding:0;
}
/*
header{
  background:none;
}*/
}

h1 img{
  width:153px;
}

.pc-layout{
  position:fixed;
  top:0;
  left:0;
  width:100vw;
  height:100vh;
  background-image: linear-gradient(to bottom, #ff70C0, var(--pink_light));
  z-index:-2;
}

.pc-layout:after{
  position:absolute;
  content:"";
  top:0;
  left:0;
  width:100vw;
  height:100vh;
  background-image: url("../images/bg.svg");
  background-repeat: repeat;
  background-size: 400px;
  opacity: .2;
}



.sp{
  display:none;
}



/* title */

h2{
  font-size:2.2em;
  font-weight: 700;
  line-height:1.4;
  letter-spacing:0.1em;
  color:white;
  text-align:center;
  margin:0 auto;
  padding-bottom: 28px;
}

@media screen and (max-width: 420px) {
  h2{
    font-size:1.8em;
  }
}

h2 p{
  font-size:0.6em;
  letter-spacing: 5px;
  width:100%;
}

h2 img{
  margin:0 auto 12px auto;
}

h2 span{
  font-size:0.7em;
}

/* top */
.nav_content ul{
  display:flex;
  gap:20px;
  align-items: center;
}

@media screen and (max-width: 900px) {
.nav_content ul{
  gap:16px;
}
}

/* ふわっと上にあがるテキストリンク */
.lift-link{
  display: inline-block;              /* transform を効かせるため */
  position: relative;
  color: white;
  text-decoration: none;              /* 下線は疑似要素で作る */
  transform: translateY(0);
  transition:
    transform 220ms ease,
    filter 220ms ease,
    color 220ms ease;
  will-change: transform;
}

/* 下線をアニメさせる（左→右に伸びる） */
.lift-link::after{
  content: "";
  position: absolute;
  left: 0;
  bottom: -0.15em;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 220ms ease;
  opacity: 0.9;
}

.lift-link:hover,
.lift-link:focus-visible{
  text-decoration: none;
  transform: translateY(-2px);        /* “ふわっ”の主役 */
  filter: drop-shadow(0 6px 10px rgba(0,0,0,0.12));
}

.lift-link:hover::after,
.lift-link:focus-visible::after{
  transform: scaleX(1);
}



@media screen and (max-width: 768px) {

/* ここから下がハンバーガーメニューに関するCSS */

header .nav{
  display:block;
  position: absolute;
  top: 0px;
  right: 4px;
}

@media screen and (max-width: 440px) {
  header .nav{
    top: -8px;
    right: 0px;
  }
}


/* チェックボックスを非表示にする */
.drawer_hidden {
  display: none;
}

/* ハンバーガーアイコンの設置スペース */
.drawer_open {
  display: flex;
  height: 60px;
  width: 60px;
  justify-content: center;
  align-items: center;
  position: relative;
  z-index: 100;/* 重なり順を一番上にする */
  cursor: pointer;
}

.drawer_open:after{
  content:"MENU";
  position:absolute;
  bottom:4px;
  font-size: 0.45em;
}

/* ハンバーガーメニューのアイコン */
.drawer_open span,
.drawer_open span:before,
.drawer_open span:after {
  content: '';
  display: block;
  height: 3px;
  width: 25px;
  border-radius: 3px;
  background: #333;
  transition: 0.5s;
  position: absolute;
}

/* 三本線の一番上の棒の位置調整 */
.drawer_open span:before {
  bottom: 8px;
}

/* 三本線の一番下の棒の位置調整 */
.drawer_open span:after {
  top: 8px;
}

#drawer_input:checked ~ .drawer_open:after{
  content:"CLOSE";
}

/* アイコンがクリックされたら真ん中の線を透明にする */
#drawer_input:checked ~ .drawer_open span {
  background: rgba(255, 255, 255, 0);
}

/* アイコンがクリックされたらアイコンが×印になように上下の線を回転 */
#drawer_input:checked ~ .drawer_open span::before {
  bottom: 0;
  transform: rotate(45deg);
}

#drawer_input:checked ~ .drawer_open span::after {
  top: 0;
  transform: rotate(-45deg);
}
  
/* メニューのデザイン*/
.nav_content {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 100%; /* メニューを画面の外に飛ばす */
  z-index: 99;
  background: #fff;
  transition: .5s;
}

/* メニュー黒ポチを消す */
.nav_list {
  list-style: none;
  padding-top:80px;
  text-align:center;
}
.nav_content ul{
  flex-direction: column;
}
.lift-link{
  color:var(--button);
}

.nav_list li .signup_btn{
  width:360px;
  max-width:80%;
  margin:20px auto 0 auto;
  font-size:1.2em;
  letter-spacing: 2px;
}

/* アイコンがクリックされたらメニューを表示 */
#drawer_input:checked ~ .nav_content {
  left: 0;/* メニューを画面に入れる */
}
}


/* hero */

.hero{
  background:var(--pink_hero);
  text-align: center;
  /*background: radial-gradient(
    circle,
    #ff2fa0 0%,
    #ff7bc4 30%,
    #FA85C6 100%
  );
  background:linear-gradient(to bottom, #FA85C6 30%, var(--button) 90%); */
  padding: 80px 0 0 0;
  position:relative;
}

@media (max-width: 768px){
.hero{
  padding:65px 0 0 0;
}
}

.hero .hero_copy{
  position:absolute;
  top:64px;
  left:0;
  right:0;
  max-width:100%;
  margin:0 auto;
  display:none;
}
.hero .text{
  position:relative;
}
.hero .inner{
  position:relative;
  margin-top:-530px;
  padding:0;
}
.hero .hero-img{
  position:relative;
  padding-top:40px;
  z-index:2;
  height:300px;
}

@media (max-width: 1500px){

.hero .inner{
  margin-top:-530px;
}
}

@media (max-width: 1400px){

.hero .inner{
  margin-top:-500px;
}
.hero .hero-img{
  height:250px;
}
}
@media (max-width: 1300px){

.hero .inner{
  margin-top:-450px;
}
}
@media (max-width: 1100px){

.hero .inner{
  margin-top:-450px;
}
}
@media (max-width: 900px){

.hero .hero-img{
  filter: drop-shadow(2px 4px 6px var(--primary-color));
}
}

.hero .text .copy01{
    position: absolute;
    top: -100px;
    right:calc(50% + 265px);
    width: 140px;
    height: 140px;
    border-radius: 50%;
    background: white;
    color: var(--primary-color);
    font-weight: 700;
    font-size: 1.5em;
    line-height: 1.2;
    align-content: center;
    z-index: 3;
}
.hero .text .copy02{
    position: absolute;
    top: -70px;
    left: calc(50% + 250px);
    width: 140px;
    height: 140px;
    border-radius: 50%;
    background: white;
    color: var(--primary-color);
    font-weight: 700;
    font-size: 1.5em;
    line-height: 1.2;
    align-content: center;
    z-index: 3;
}
.hero .text .subcopy{
  font-size:2.5em;
  color:white;
  margin-bottom:24px;
  z-index: 3;
  line-height:1.3;
}
.hero h1 img{
  width:440px;
  margin-bottom:28px;
  z-index: 3;
}
.hero .signup_btn{
  width:320px;
}
.hero .detail{
  color:white;
}
.hero h1,
.hero .text .subcopy,
.hero .signup_btn,
.hero .detail{
  position:relative;
  z-index:3;
  filter: drop-shadow(0 0 0.75rem #FA85C6);
}
.item01{
  position:absolute;
  top:0;
  left:15%;
}
.item02{
  position:absolute;
  top:70%;
  left:10%;
}
.item03{
  position:absolute;
  top:85%;
  left:3%;
}
.item04{
  position:absolute;
  top:55%;
  left:3%;
}
.item05{
  position:absolute;
  top:80%;
  left:20%;
}
.item06{
  position:absolute;
  top:85%;
  right:10%;
}
.item07{
  position:absolute;
  top:15%;
  right:0%;
}
.item08{
  position:absolute;
  top:70%;
  right:13%;
}
.item09{
  position:absolute;
  top:55%;
  right:5%;
}
.item10{
  position:absolute;
  top:75%;
  right:0;
}

@media screen and (max-width: 1300px) {
.item02{
  position:absolute;
  top:60%;
  left:5%;
}
.item03{
  position:absolute;
  top:78%;
  left:-2%;
}
.item05{
  position:absolute;
  top:72%;
  left:13%;
}
.item06{
  position:absolute;
  top:78%;
  right:5%;
}
.item08{
  position:absolute;
  top:71%;
  right:9%;
}
.item10{
  position:absolute;
  top:62%;
  right:-5%;
}

}


@media screen and (max-width: 850px) {
.hero .text .copy01{
  top:-165px;
  right: calc(50% + 190px);
}
.hero .text .copy02{
  top:-135px;
  left: calc(50% + 190px);
}
}

@media screen and (max-width: 768px) {
.item01,
.item02,
.item03,
.item04,
.item05,
.item06,
.item07,
.item08,
.item09,
.item10{
  opacity:.4;
  /* mix-blend-mode: luminosity; */
}
.item02{
  position:absolute;
  top:65%;
  left:0%;
}
.item03{
  position:absolute;
  top:83%;
  left:-2%;
}
.item05{
  position:absolute;
  top:73%;
  left:13%;
}
.item06{
  position:absolute;
  top:83%;
  right:0%;
}
.item08{
  position:absolute;
  top:78%;
  right:5%;
}
.item10{
  position:absolute;
  top:67%;
  right:-8%;
}

.hero .text .copy01{
  right: calc(50% + 115px);
  width: 120px;
  height: 120px;
}
.hero .text .copy02{
  left: calc(50% + 103px);
  width: 120px;
  height: 120px;
}
}

@media screen and (max-width: 600px) {
.item02{
  position:absolute;
  top:65%;
  left:-6%;
}
.item03{
  position:absolute;
  top:82%;
  left:6%;
}
.item05{
  position:absolute;
  top:71%;
  left:25%;
}
.item06{
  position:absolute;
  top:83%;
  right:5%;
}
.item08{
  position:absolute;
  top:78%;
  right:15%;
}
.item10{
  position:absolute;
  top:67%;
  right:-8%;
}
.hero .text .subcopy{
  font-size:2em;
}
.hero .text .copy01{
  font-size:3vw;
  width: 18vw;
  height: 18vw;
  top:-45%;
}
.hero .text .copy02{
  font-size:3vw;
  width: 18vw;
  height: 18vw;
  top:-35%;
}
}


@media screen and (max-width: 495px) {
.hero .text .subcopy{
  font-size:5.35vw;
}
}

@media screen and (max-width: 470px) {
.hero .hero-img{
  padding:0;
  height: auto;
}

.item02{
  position:absolute;
  top:62%;
  left:-12%;
}
.item03{
  position:absolute;
  top:83%;
  left:0;
}
.item05{
  position:absolute;
  top:61%;
  left:17%;
}
.item06{
  position:absolute;
  top:79%;
  right:11%;
}
.item08{
  position:absolute;
  top:73%;
  right:15%;
}
.item10{
  position:absolute;
  top:65%;
  right:-14%;
}
.item01,
.item02,
.item03,
.item04,
.item05,
.item06,
.item07,
.item08,
.item09,
.item10{
  opacity:.6;
}
.hero h1,
.hero .text .subcopy,
.hero .signup_btn,
.hero .detail{
  filter: drop-shadow(0 0 0.75rem #ff2fa0);
}
.hero .inner{
  padding:20px 0 20px 0;
}
.hero .detail{
  text-shadow: 0 0 2px var(--primary-color);
}
}


@media screen and (max-width: 460px) {
.hero .text .copy01{
  top:-35%;
  right:auto;
}
.hero .text .copy02{
  top:-30%;
  left:auto;
  right:0;
}
.hero .text .subcopy{
  font-size:5.3vw;
}
.hero .signup_btn{
  width:auto;
}
}


/* ぷかぷか浮く */
/* 浮遊対象 */
.floating {
  position: absolute;
  will-change: transform;
  transform: translate3d(0,0,0);
  animation: floatY var(--dur, 2.2s) ease-in-out var(--delay, 0s) infinite;
  z-index:1;
}

/* 上下のみ */
@keyframes floatY {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, var(--y, -8px), 0); }
}

.item01 { --dur: 1.7s; --delay: -0.3s; --y: -7px; }
.item02 { --dur: 2.1s; --delay: -1.4s; --y: -9px; }
.item03 { --dur: 1.9s; --delay: -0.8s; --y: -6px; }
.item04 { --dur: 2.4s; --delay: -2.0s; --y: -8px; }
.item05 { --dur: 2.0s; --delay: -1.1s; --y: -10px; }
.item06 { --dur: 2.6s; --delay: -2.3s; --y: -7px; }
.item07 { --dur: 1.8s; --delay: -1.7s; --y: -11px; }
.item08 { --dur: 2.8s; --delay: -0.6s; --y: -6px; }
.item09 { --dur: 2.2s; --delay: -1.9s; --y: -9px; }
.item10 { --dur: 2.5s; --delay: -1.2s; --y: -8px; }


/* intro */

/* =========================
   intro（白ゾーン）
========================= */
.intro{
  --curve-h: clamp(140px, 22vw, 260px);
  position: relative;
  background: var(--pink_hero);
  overflow: visible;
  padding: 80px 0 0 0;
  margin-top:-80px;
}

.intro .start-curve{
  display:none;
}

.intro .last-curve{
  width:100%;
}
.intro .inner{
  position: relative;
  z-index: 1;

  max-width: 1100px;
  margin: 0 auto;
  padding: 40px clamp(14px, 4vw, 32px) 40px;

  display: grid;
  grid-template-columns: 1fr 1fr 1.2fr;  /* 画像 / 画像 / テキスト */
  align-items: center;
  column-gap: clamp(20px, 4vw, 64px);
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
      "left right"
      "text text";
    row-gap: 18px;
}

.intro-left,
.intro-right{
  width: clamp(130px, 18vw, 240px);
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
  border-radius: 24px;
  border:4px solid white;
  margin-inline: auto;
}
  .intro-left{ grid-area: left; }
  .intro-right{ grid-area: right; }


.intro .inner p{
  margin: -80px 0 0 0;
  text-align: center;
  line-height: 1.9;
  font-weight: 700;
  color: white;
  font-size: clamp(14px, 1.7vw, 20px);
  grid-area: text;
}

@media screen and (max-width: 1700px) {
.intro{
  background:white;
}
.intro .start-curve{
  display:block;
  position:absolute;
  content:"";
  top:0;
  left:0;
  right:0;
  margin:0 auto;
  width:100%;
}

.intro .inner p{
  color: var(--primary-color);
}

}


@media screen and (max-width: 1100px) {
.intro .inner{
  padding: 20px clamp(14px, 4vw, 32px) 40px;
  gap:4px;
}
}

@media (max-width: 768px){
  .intro{
    --curve-h: clamp(120px, 34vw, 180px);
  }
  .intro .inner{
      padding: 80px clamp(14px, 4vw, 32px) 40px;
  }
  .intro-left,
  .intro-right{
    width: clamp(120px, 52vw, 190px);
  }
  .intro .inner p {
    margin: 20px 0 0 0;
  }
}
@media (max-width: 600px){
  .intro .inner{
      padding: 52px clamp(14px, 4vw, 32px) 40px;
  }
  .intro .inner p {
    padding-bottom:60px;
  }

}

/* comparison */
.comparison{
  background:var(--primary-color);
  margin-top: -2px;
}

.comparison .inner{
  padding: 0;
  text-align: center;
}

.comparison h2{
  position:relative;
}
.comparison h2 .kakomi{
  width:280px;
}
@media (max-width: 768px){
.comparison h2 .kakomi{
  width:240px;
}
}
.deco01{
  position:absolute;
  top:30%;
  left:0%;
}
.deco02{
  position:absolute;
  top:-5%;
  left:10%;
}
.deco03{
  position:absolute;
  top:25%;
  right:10%;
}
.deco04{
  position:absolute;
  top:0%;
  right:-5%;
}


@media (max-width: 950px){

.deco01{
  top:80%;
  left:-5%;
}
.deco02{
  top:50%;
  left:5%;
}
.deco03{
  top:75%;
  right:8%;
}
.deco04{
  top:50%;
  right:-5%;
}

}




.feature-box{
  position:relative;
}
.comparison .compare_back01,
.comparison .compare_back02{
  mix-blend-mode: screen;
  top:300px;
}

@media (max-width: 1200px){

.comparison .compare_back01,
.comparison .compare_back02{
  top:0;
}

}


.title-box{
  margin-top:100px;
  padding-top: 60px;
  text-align:center;
  display:flex;
  position:relative;
  width:100%;
  overflow: visible;
}
.common-title{
  width:50%;
  height: fit-content;
  background:#282429;
  color:white;
  font-weight:700;
  padding:4px 80px 4px 4px;
  border-top-left-radius:16px;
  border-top-right-radius:16px;
}
.castfile-title{
  width:50%;
  height: fit-content;
  background:#8E0E55;
  color:white;
  font-weight:700;
  padding:4px 4px 4px 80px;
  border-top-left-radius:16px;
  border-top-right-radius:16px;
  display: flex;
  justify-content: center;
}
.castfile-title span{
  display:block;
}
.castfile-title img{
  width:20px;
  height:20px;
}
.title-box > img{
  position:absolute;
  left:50%;
  top:15px;
  transform: translate(-50%, -60%);
  width: clamp(120px, 30vw, 200px);
  height: auto;
  max-height: none;
  max-width: none;
  display:block;
}

.feature-box{
  display:flex;
  flex-direction: column;
  gap:24px;
}

.feature{
  background:white;
  padding:16px;
  border-radius:16px;
  position:relative;
  display:flex;
  gap:120px;
  min-height: 120px;
}
.feature:first-child{
  border-top-left-radius:0;
  border-top-right-radius:0;
}

.feature h3{
  position:absolute;
  top: 12px;
  left:0;
  right:0;
  margin:0 auto;
  background:white;
  width: fit-content;
  padding: 4px 8px;
  text-align: center;
  color:var(--primary-color);
  line-height: 1.2;
}
.feature h3 span:first-child{
  font-family:"roboto", sans-serif;
  line-height: 1;
}

.common{
  background:#d9d1d8;
  border-radius:8px;
  width:100%;
  text-align: center;
}

.feature ul{
  color:var(--gray_strong);
  padding:12px 4px;
  display:flex;
  flex-direction: column;
  gap:8px;
}

.feature ul li{
  width:100%;
  line-height:1.2;
  list-style: none;
}

.castfile{
  background:#FFD7ED;
  border-radius:8px;
  width:100%;
  text-align: center;
}

.castfile li span{
  color:var(--pink_strong);
  font-weight:700;
}

@media (max-width: 1100px){

.common-title,
.castfile-title{
  z-index:2;
}

.common-title,
.castfile-title{
  padding:4px;
}

.feature ul li{
  letter-spacing: 0;
}
.feature{
  gap:88px;
}
}


@media (max-width: 768px){
.title-box > img{
  top:36px;
}
}

@media (max-width: 630px){
  .feature{
    padding-top:40px;
    gap:8px;
  }
.feature h3{
  width:100%;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 4px;
  padding:0;
}
.feature h3 span{
  display:block;
}
.feature h3 br{
  display:none;
}

}

@media (max-width: 620px){

.deco01{
  top:-90%;
  left:0;
}
.deco02{
  top:60%;
  left:-10%;
}
.deco03{
  top:50%;
  right:-10%;
}
.deco04{
  top:-70%;
  right:-3%;
}
.title-box{
  margin-top:40px;
}

}

@media (max-width: 725px){
  .feature h3{
    top:7px;
    background:none;
  }
.feature h3 img{
  width:28px;
}
.feature ul li{
  text-align: left;
  list-style: disc;
  margin-left: 12px;
  padding-right: 4px;
}
.feature ul{
  padding:12px;
}
.feature-box{
  gap:12px;
}
}

@media (max-width: 380px){

.castfile-title img{
  display:none;
}
.deco03{
  right:-15%;
}
}

.compare_copy{
  padding-top:40px;
  width: 100%;
}

@media (max-width: 600px){
.compare_copy{
  padding-top:20px;
}

}
/* paper */
.paper{
  background:#BEB7C0;
}

.paper:after{
  background:#BEB7C0;
  position: absolute;
  content: "";
  bottom: -172px;
  right: 0;
  left: 0;
  margin: 0 auto;
  width: 100%;
  height: calc(tan(60deg) * 200px / 2);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  z-index: 1;
}
@media screen and (max-width: 1200px) {
.paper:after{
    bottom: -86px;
    height: calc(tan(60deg) * 100px / 2);
}
}
.paper .sp{
  display:none;
}


@media (max-width: 768px){

.paper .sp{
  display:block;
}
.paper .pc{
  display:none;
}
}
.paper-img{
  width:100%;
}

.paper h2{
  letter-spacing: 0;
  position:relative;
  padding: 70px 0 18px 0;
  line-height: 1.3;
  margin:0;
}

#paper h2 span.big{
  color:white;
  font-size:1.2em;
}

.paper .bg{
  position:absolute;
  top:0;
  left:0;
  width:100%;
  margin:0;
}
.paper h2 span.blue{
  color:#3d5bb2;
  font-size:1em;
}
.paper h2 img{
  position:absolute;
  top:-65%;
  left:0;
  right:0;
  margin:0 auto;
}

.paper h2 span.serif{
  font-size:1em;
}

.paper .inner{
  display:flex;
  gap:40px;
  justify-content: center;
  align-items: center;
  padding:40px 0 0 0;
}

@media (max-width: 950px){

.paper .inner{
  gap:20px;
}
}
.paper ul{
  display:flex;
  align-items: flex-end;
  flex-direction: column;
  gap:12px;
}

.paper ul li{
  background:var(--gray_pale);
  padding:4px 8px;
  display:block;
  font-weight:700;
  display:flex;
  align-items: center;
  width:fit-content;
}

.paper ul li img{
  margin-right:8px;
}

@media (max-width: 885px){
.paper .inner{
  flex-direction: column;
  gap:0;
  padding:20px 0 0 0;
}
.paper ul{
  order:2;
  align-items: center;
}
}

@media (max-width: 450px){
.paper ul li{
    letter-spacing: 0;
    padding: 4px 6px;
    font-size: .9em;
}
.paper ul li img{
  margin-right:4px;
  width:20px;
}
}
@media (max-width: 385px){
.paper ul li{
    font-size: .8em;
}
}


/* merit01 */

.merit01 .inner{
  display:flex;
  gap:40px;
  padding-top: 240px;
  padding-bottom:80px;
}


@media (max-width: 1200px){

.merit01 .inner{
  padding-top: 160px;
}
}

.merit01 .inner > img{
  border-radius:16px;
  width: calc(50% - 20px);
}
.merit01 .inner > div{
  width: calc(50% - 20px);
  text-align: center;
}

.merit01 h2{
  margin:0;
}

@media (max-width: 950px){

.merit01 .inner{
  padding-bottom:40px;
}

}


@media (max-width: 600px){

.merit01 .inner{
  flex-direction: column;
  padding-top: 120px;
}
.merit01 .inner > img,
.merit01 .inner > div{
  width:100%;
}
.merit01 h2{
  padding-bottom:20px;
}
}

/* merit02 */
.merit02 .inner{
  position:relative;
  padding-bottom: 200px;
}
.merit02 .inner:before{
  position:absolute;
  content:"";
  left:0;
  right:0;
  top:0;
  width:80%;
  aspect-ratio: 1 / 1;
  border-radius:50%;
  background:#FFD7ED;
  margin:0 auto;
}

.merit-staff{
  position:absolute;
  left:5%;
  bottom:10%;
}
.merit-customer{
  position:absolute;
  right:5%;
  bottom:10%;
}
.heaer_left{
  position:absolute;
  left:-3%;
  top:0;
  width:15%;
}
.heart_right{
  position:absolute;
  right:-3%;
  top:0;
  width:15%;
}

.merit02 .inner div{
  text-align: center;
  position:relative;
}
.merit02 .inner div p{
  color:var(--primary-color);
  font-size:1.2em;
  font-weight:700;
  letter-spacing: 1px;
}
  .merit02 .inner div span{
  font-size:1.5em;
}

@media (max-width: 950px){

.merit-staff{
  left:-5%;
  bottom:0;
}
.merit-customer{
  right:-5%;
  bottom:0;
}
.heart_right{
  right:0;
}
.heaer_left{
  left:0;
}
}

@media (max-width: 720px){
  .merit02 .inner{
    padding-top:0;
  }
.merit02 .inner:before{
  width:140%;
  left:-20%;
  background: radial-gradient(circle, #ffd8e4 0%, #ffffff 50% 30%, #ffffff 100%);
}
.merit-staff{
  width:30%;
  left:0;
  bottom:10%;
}
.merit-customer{
  width:30%;
  right:0;
  bottom:10%;
}

}
@media (max-width: 590px){
    .heaer_left {
        left: 0;
        top: 35%;
    }
.heart_right {
    top: 30%;
}
}
@media (max-width: 500px){
.merit02 .inner{
  padding-bottom:360px;
}
.merit-staff{
  left:auto;
  right:48%;
  bottom:15%;
  width:170px;
}
.merit-customer{
  right:auto;
  left:48%;
  bottom:15%;
  width:170px;
}


}



/* signup */

.signup{
  background: var(--navy);
  position: relative;
  left: -40%;
  top: calc(var(--curve-h) * -0.55);
  width: 180%;
  height: var(--curve-h);
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  margin-top: -160px;
  overflow:hidden;
  padding-bottom:120px;
}
.signup:before{
  position:absolute;
  content:"";
  top:0;
  left:0;
  right:0;
  margin:0 auto;
  width:100%;
  height:100%;
  background-image: url(../images/grid_parts.png);
  background-repeat: repeat;
  mix-blend-mode: multiply;
}
.signup.last{
  padding-bottom:60px;
}

@media (max-width: 768px){
.signup.last{
  padding-bottom:40px;
}

}

.signup .inner{
  padding:60px 0 40px 0;
  text-align:center;
  position:relative;
}
.cta-box{
  display:flex;
  gap:40px;
  justify-content: center;
}
.cta-left{
  background:#b6c6ff;
  border:4px solid white;
  border-radius:16px;
  text-align: center;
  padding:28px 40px;
  width:calc(50% - 20px);
}
.cta-right{
  background:#FFD7ED;
  border:4px solid white;
  border-radius:16px;
  text-align: center;
  padding:28px 40px;
  width:calc(50% - 20px);
}
.cta-left img,
.cta-right img{
  height:200px;
}

.cta-left .signup_btn{
  background:white;
  color:var(--primary-color);
}
.cta-left .signup_btn:hover{
box-shadow: 0 1px 10px #9db2f4;
}

.signup .copy{
  color:var(--blue_light02);
  font-size:1.4em;
  font-weight:700;
  letter-spacing: 2px;;
  margin-bottom:16px;
}

.microcopy{
  color:white;
  font-size:0.8em;
  letter-spacing: 2px;
  margin-bottom:10px;
}

.signup .detail{
  font-weight:600;
  text-align: center;
  margin-top: 10px;
  font-size:.9em;
}
.signup .detail .sp{
  display:none;
}


@media (max-width: 1060px){
.signup .detail .sp{
  display:block;
}
}

@media (max-width: 1080px){
.signup .inner{
  width:calc(100vw - 80px);
}
.cta-box{
  gap:28px;
}
}

@media (max-width: 850px){
.cta-right,
.cta-left{
  padding:24px 20px;
}
.signup .detail{
  letter-spacing: 0;
}
.cta-left img, .cta-right img{
  height:160px;
}

}

@media (max-width: 720px){
  .signup{
    left:-70%;
    width:240%;
  }
}


@media (max-width: 650px){
.cta-box{
  flex-direction: column;
}
.cta-right,
.cta-left{
  width:100%;
}
}


@media (max-width: 500px){

  .signup{
    left:-100%;
    width:300%;
    padding-bottom:100px;
  }

}

/* CASTFILE logo loop */
.marquee{
  width: 100%;
  overflow: hidden;
}

.marquee__track{
  display: flex;
  width: max-content;
  will-change: transform;
  animation: marquee var(--dur, 18s) linear infinite;
}

.marquee__img{
  display: block;
  flex: 0 0 auto;
  height: 40px; 
  width: auto;
}

/* JSで --dist(px) を入れる。1枚ぶん移動してループ */
@keyframes marquee{
  from{ transform: translateX(0); }
  to  { transform: translateX(calc(-1 * var(--dist, 0px))); }
}

@media (prefers-reduced-motion: reduce){
  .marquee__track{ animation: none; }
}


@media (max-width: 768px){
.marquee__img{
  height:28px;
}
}

@media (max-width: 500px){
.marquee__img{
  height:20px;
}
}


/*  target  */

.fukidasi{
  top:-24px;
  left:0;
  right:0;
  background: white;
  color: white;
  padding: 8px 4px;
  margin: 0 auto 20px auto;
  position: relative;
  width: 100%;
  text-align: center;
  border-radius: 4px;
  color: #222;
  font-weight: 600;
}
@media screen and (max-width: 670px) {
.fukidasi{
  font-size: 0.9em;
}
}

.fukidasi:after{
  position: absolute;
  bottom: -16px;
  left: 0;
  right: 0;
  margin: 0 auto;
  content: "";
  background: white;
  height: calc(tan(60deg) * 20px / 2);
  width: 24px;
  clip-path: polygon(0 0, 100% 0, 50% 100%);
}

.detail{
  text-align:center;
  margin-top:10px;
}
.detail .sp{
  display:none;
}

.target {
  background:#5774cc;
  position:relative;
  text-align: center;
  padding:0 0 20px 0;
}

.target:before{
  position:absolute;
  content:"";
  top:-80px;
  right:0;
  left:0;
  margin:0 auto;
  width:500px;
  height:400px;
  border-radius:50%;
  background:#5774cc;
}
.target:after{
  position:absolute;
  content:"";
  bottom:-172px;
  right:0;
  left:0;
  margin:0 auto;
  width:100%;
  height: calc(tan(60deg) * 200px / 2);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  background:#5774cc;
  z-index:1;
}
.target .inner{
  padding:0;
  position:relative;
}
.target h2 img{
  width:320px;
}


@media screen and (max-width: 768px) {

.target h2 img{
  width:280px;
}
}

.target .inner > p {
  color:white;
  text-align: center;
}

.target-case{
  background:#8fa9ff;
  padding:0 20px 20px 20px;
  display:flex;
  gap:20px;
  border-radius:28px;
  margin-top:60px;
  justify-content: space-around;
}
.target-item{
  position:relative;
}
.target-item img{
  margin-top:-20px;
}
.target .staff{
  margin-top:40px;
}
.target .inner > p.white-case{
  background: white;
  padding: 8px 16px;
  font-size: 1.5em;
  font-weight: 700;
  color: var(--primary-color);
  width: fit-content;
  margin: 0 auto ;
  line-height: 1.2;
}
.target .inner > p.white-case br{
  display:none;
}

@media screen and (max-width: 1200px) {

.target:after{
  bottom:-86px;
  height: calc(tan(60deg) * 100px / 2);
}

}

@media screen and (max-width: 600px) {
.target-case{
  flex-wrap: wrap;
}
.target-item{
  width:calc(50% - 10px);
}

.target-item:first-child{
  margin-bottom:40px;
}
}

@media screen and (max-width: 520px) {
.target:before {
    top: -60px;
    width: 300px;
    height: 200px;
}
.detail .sp{
  display:block;
}
}


@media screen and (max-width: 420px) {

.target .inner > p.white-case br{
  display:block;
}
.target:after{
  bottom:-60px;
  height: calc(tan(60deg) * 70px / 2);
}
.target .inner > p br{
  display:none;
}


}




/* merit */

#merit:before{
  position:absolute;
  top:-50px;
  left:0;
  content:"";
  width:51%;
  height:51px;
  clip-path: polygon(0 100%, 100% 100%, 0 0);
  background:white;
}

#merit:after{
  position:absolute;
  top:-50px;
  right:0;
  content:"";
  width:51%;
  height:51px;
  clip-path: polygon(100% 100%, 0 100%, 100% 0);
  background:white;
}

#merit .inner{
  width:100%;
  padding:50px 0 0 0;
  text-align:center;
}

#merit h2{
  padding-bottom:16px;
}

#merit img{
  max-width:85%;
}

.arrow{
  width:48px;
  margin:-25px 0 12px 0;
}

.plus{
  position:relative;
  padding-bottom:80px;
  margin-top:28px;
  background-image: linear-gradient(to bottom, white 30%, var(--pink_dark) 80%);
}

#merit img.bubble{
  position:absolute;
  bottom:0;
  left:0;
  width:100%;
  mix-blend-mode: screen;
  max-width:100%;
}

.plus > div{
  position:relative;
}

.plus p{
  color:white;
  font-size:1.75em;
  font-weight:700;
  letter-spacing: 2px;
  text-shadow:0px 1px 10px var(--pink_strong);
}

@media screen and (max-width: 420px) {
  .plus p{
    font-size:1.5em;
  }
}

.plus p span{
  font-size:1.3em;
}

#merit img.bottom-wave{
  max-width:100%;
}

.bottom-wave{
  position:absolute;
  bottom:0;
  left:0;
  width:100%;
}


/* category */

#category{
  background:var(--blue_light02);
}

#category .inner{
  padding:20px 0 80px 0;
  color:var(--navy);
  font-weight:700;
  text-align:center;
  width:100%;
}

#category h2{
  color:var(--blue_dark);
  padding-bottom:0;
}

#category .intro-text{
  margin:0 auto 40px auto;
  line-height: 1.8;
  max-width:calc(100% - 34px);
}

.left,
.right{
  display:flex;
  width:100%;
  margin-top:12px;
}

.left div,
.right div{
  width:50%;
  display:flex;
  align-items: center;
  justify-content: center;
}

.left div p,
.right div p{
  background:white;
  padding:12px 16px;
  border-radius:8px;
  position:relative;
  width: 90%;
  text-align: left;
}

.left div p:after,
.right div p:after{
  position:absolute;
  content:"";
  bottom:-19px;
  left:0;
  right:0;
  margin:0 auto;
  width: 20px;
  height: 20px;
  background-color: white;
  clip-path: polygon(0 0, 100% 0, 0 100%);
}

.left div p:after{
  clip-path: polygon(0 0, 100% 0, 100% 100%);
}
.left div p span,
.right div p span{
  background:var(--pink_pale);
  padding:1px 2px;
}

@media screen and (max-width: 440px) {

  .left{
    position:relative;
    justify-content: flex-end;
  }

  .right{
    position:relative;
  }

  .right div{
    position:absolute;
    right:20px;
    bottom:75px;
  }

  .left div{
    position:absolute;
    left:20px;
    bottom:75px;
  }

  .left div p,
  .right div p{
    z-index:2;
    font-size:.8em;
    padding:12px;
    filter: drop-shadow(1px 2px 5px var(--blue_medium));
  }

  .left img{
    max-width:220px;
  }

  .right img{
    max-width:220px;
  }
}

@media screen and (max-width: 400px) {

  .sp_c{
    display:none;
  }

}

/* function */

.function02{
  background:#FC8BC9;
  padding:40px 0 0 0;
  border-top-left-radius:40px;
  border-top-right-radius:40px;
  margin-top:-40px;
}


@media screen and (max-width: 768px) {

.function02{
  border-top-left-radius:20px;
  border-top-right-radius:20px;
  margin-top:-20px;
}
}

.start-wave{
  content:"";
  bottom:0;
  width:100%;
}

.function02 .inner{
  padding:0 0 65px 0;
}

.function-case{
  background:white;
  border-radius:16px;
  padding:36px 40px;
}

.function02 h2{
  background:var(--primary-color);
  color:white;
  font-size:1.5em;
  font-weight:700;
  padding:4px;
  margin-bottom:20px;
}

.function02 .intro-text{
  text-align:center;
  font-weight:700;
  margin-bottom:20px;
}

.function-list li{
  background:white;
  padding:8px 16px;
  display:flex;
  justify-items: center;
  margin-bottom:20px;
  color:var(--gray_strong);
  font-weight:600;
  gap:8px;
}

#function h3{
  background-image: linear-gradient(to right, var(--pink_strong), var(--pink_medium));
  color:white;
  font-weight:700;
  letter-spacing: 2px;
  border-radius:4px;
  margin:0 0 20px 0;
  padding:8px 12px;
}

.function-box {
  display:flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap:8px;
}

.function-box li{
  width:calc(50% - 4px);
  background:#FFEEF7;
  padding:16px 20px;
  color:var(--gray_strong);
  display:flex;
  align-self: center;
  gap:8px;
  border-radius:4px;
  font-weight:700;
}

.function-box li p{
  line-height:24px;
}


@media screen and (max-width: 650px) {
  .function-case{
    padding:20px 24px;
  }
  
.function-box li{
  width:100%;
  padding:8px 12px;
}

}


@media screen and (max-width: 440px) {
  .function-box li{
    width:100%;
    font-size:1em;
    gap:8px;
  }
}

.function-plus-case{
    display: flex;
    flex-wrap: wrap;
    gap: 40px;
    margin-top:40px;
}

.function-plus{
  background:white;
  border-radius: 16px;
  width: calc(50% - 20px);
}
.function-plus img{
  width:100%;
  border-top-left-radius:16px;
  border-top-right-radius:16px;
}

.function-plus h3{
  background-image: none;
  font-size:1.5em;
  line-height:1.2;
  color:var(--pink_strong);
  margin:18px 4px 12px 4px;
  text-align: center;
  font-weight:700;
}

.function-plus p{
  padding:0 20px 16px 20px;
}

@media screen and (max-width: 768px) {

.function-plus-case{
    gap: 20px;
    margin-top:20px;
}
.function-plus{
  width: calc(50% - 10px);
}

}
@media screen and (max-width: 550px) {
.function-plus-case{
  flex-direction: column;
  flex-wrap: nowrap;
}
.function-plus{
  width:100%;
}

}

/* start */

.start{
  background:var(--pink_light);
  padding:0 0 40px 0;
}

.compare_back01{
  position:absolute;
  top:40px;
  left:-30%;
  width:70%;
  mix-blend-mode: overlay;
  opacity: .5;
}

.compare_back02{
  position:absolute;
  top:40px;
  right:-30%;
  width:70%;
  mix-blend-mode: overlay;
  opacity: .5;
}

.start .inner{
  padding:0 0 40px 0;
  position:relative;
  text-align: center;
}
.start .inner .white-case{
  background: white;
  padding: 8px 16px;
  font-size: 1.5em;
  font-weight: 700;
  color: var(--primary-color);
  width: fit-content;
  margin: 0 auto 40px auto;
  line-height:1.2;
}

.start h2 img{
  margin-top:-8px;
}

.start .inner > div{
  display:flex;
  justify-content: center;
  gap: 40px;
}

@media screen and (max-width: 700px) {

.start .inner > div{
  gap: 20px;
  flex-wrap: wrap;
}
}



.circle{
  width:180px;
  height:180px;
  border-radius:90px;
  text-align:center;
  padding:15px 5px;
  background:white;
  position:relative;
}

.circle:after{
  position:absolute;
  top:5px;
  left:0;
  right:0;
  margin:0 auto;
  content:"";
  width:170px;
  height:170px;
  border-radius:85px;
  border:1px dashed var(--pink_light);
}

.circle p{
  font-size:1.25em;
  font-weight: 700;
  line-height:1.8;
  width:fit-content;
  margin:0 auto;
}

.circle .num-title{
  color:var(--pink_light);
  font-family:"Roboto", sans-serif;
  font-size:1.25em;
  font-weight:400;
  padding:0;
  border-bottom:1px solid var(--pink_light);
  margin-bottom:20px;
}

.start .inner .white-case br{
  display:none;
}

@media screen and (max-width: 480px) {
.circle{
  width:140px;
  height:140px;
}
.circle:after{
  width:130px;
  height:130px;
}

.circle p{
  line-height:1.5;
}

.circle .num-title{
  margin-bottom:8px;
}
.circle:last-child{
  margin-top:-16px;
}

}

@media screen and (max-width: 374px) {
.start .inner > div{
  gap:12px;
}
.start .inner .white-case br{
  display:block;
}

}
@media screen and (max-width: 347px) {
.circle:last-child{
  margin-top:0;
}
}

/* voice */

#voice {
  background:var(--blue_dark);
  border-radius:40px;
  margin-top: -40px;
}

#voice .inner {
  padding: 50px 0 90px 0;
}

#voice .voice-top{
  width:100%;
  margin-bottom:40px;
}

#voice .intro-text{
  font-size:1.5em;
  color:white;
  text-align: center;
}
#voice .intro-text .sp{
  display:none;
}

#voice ul{
  display:flex;
  justify-content: center;
  gap:12px;
  margin:40px auto 0 auto;
  width:450px;
  flex-wrap: wrap;
}

#voice .category_etc{
  color:white;
  text-align: center;
  margin-top:20px;
}

#voice ul li{
  text-align:center;
  color:white;
  padding:4px 16px;
  border:1px solid white;
  border-radius:4px;
}

@media screen and (max-width: 450px) {
  #voice ul li{
    padding:4px 8px;
  }
  #voice .intro-text .sp{
    display:block;
  }
  }

.case{
  background:white;
  padding:24px 20px;
  margin-top:40px;
  border-radius:12px;
  border:4px solid var(--blue_light02);
  display:flex;
  flex-direction: column;
  gap:40px;
}

.case .title{
  width:100%;
  display:flex;
  gap:40px;
}

.case .title img{
  border-radius:4px;
}

.case .title .text{
  display:flex;
  flex-direction: column;
  gap:8px;
}

.case .title .num{
  background:var(--blue_dark);
  color:white;
  font-size:1.5em;
  font-weight:700;
  padding:0 8px;
  width: fit-content;
}
.case .title .customer{
  font-weight:700;
}
.case .title h3{
  font-size:2em;
  font-weight:700;
}

.case .voice-case{
  display:flex;
  gap:40px;
}

.issue,
.solution,
.effect{
  display:flex;
  flex-direction: column;
  gap:16px;
  width:calc(100% / 3);
  position:relative;
}

.issue:after,
.solution:after{
  position: absolute;
  content: "";
  height: calc(tan(60deg) * 24px / 2);
  width: 16px;
  clip-path: polygon(0 0, 100% 50%, 0 100%);
  top: 7px;
  right: -30px;
  background: var(--gray_light);
}

.voice-case h4{
  width:100%;
  text-align: center;
  color:white;
  font-weight:700;
  padding:4px;
  border-radius: 4px;
}

.issue h4{
  background:var(--blue_dark);
}

.solution h4{
  background:var(--blue_medium02);
}

.effect h4{
  background:var(--primary-color);
}

.solution > p:after{
  background:var(--blue_medium02);
}

.effect > p:after{
  background:var(--primary-color);
}

@media screen and (max-width: 768px) {
  
  #voice {
    border-radius:20px;
  }
  .case{
    gap:20px;
    margin-top:40px;
  }
  .case .title{
    flex-direction: column;
    gap:20px;
  }
  .case .title .text{
    align-items: center;
  }
  .case .title img{
    width:100%;
  }
  .case .voice-case{
    flex-direction: column;
    gap:48px;
  }
  .issue, .solution, .effect{
    width:100%;
  }
  .issue:after, .solution:after{
    clip-path: polygon(0 0, 100% 0, 50% 100%);
    top: auto;
    bottom: -32px;
    right: 0;
    left: 0;
    margin: 0 auto;
    width: 24px;
  }
  .issue, .solution, .effect{
    gap:8px;
  }
  .case .title h3{
    text-align: center;
    line-height:1.3;
    font-size:1.8em;
  }

}


@media screen and (max-width: 500px) {

#voice ul{
  width:100%;
}

}


@media screen and (max-width: 400px) {
.case .title .num{
  font-size:1.2em;
}
.case .title h3{
  font-size:1.5em;
}

}


/* price */
#price{
  background:var(--blue_pale);
  text-align: center;
  padding:80px 0 140px 0;
  margin-top:-40px;
  z-index:-1;
}

#price .inner{
  padding:20px 0 80px 0;
}

#price h2{
  color:var(--navy);
}

#price h2 span{
  font-size:0.8em;
  letter-spacing: 0;
}

#price h2 img{
  margin-top:-10px;
}

.price-case{
  display:flex;
  gap:20px;
}


.price-box{
  width:100%;
  background:white;
  border-top-left-radius:16px;
  border-top-right-radius:16px;
}

.price-box h3{
  width:100%;
  background:var(--primary-color);
  color:white;
  font-size:1.4em;
  font-weight:700;
  line-height:2;
  text-align:center;
  padding:8px 10px 5px 10px;
  border-top-left-radius:16px;
  border-top-right-radius:16px;
}

.business > h3{
  background:var(--blue_medium);
}

.option > h3{
  background:var(--blue_light);
}

.price-box p{
  width:100%;
  text-align:center;
  padding:24px 0 0 0;
  line-height:0.8;
}

span.num{
  font-size:4.5em;
  font-weight:700;
  font-family:"Roboto", sans-serf;
}

.free > p{
  color:var(--primary-color);
}

.business > p{
  color:var(--blue_medium);
}

.option > p{
  color:#718EE8;
}

.price-box ul{
  width:100%;
  padding:16px;
}
  
.price-box ul li{
  display:flex;
  align-items: center;
  gap:4px;
  padding:8px 0;
}

.price-box ul li p{
  text-align:left;
  padding:0;
  line-height:1.2;
  font-size:.9em;
}

.price-box ul li img{
  width:32px;
  height:32px;
}

span.small{
  font-size:.8em;
  margin-left:-4px;
}

@media screen and (max-width: 1200px) {
span.num{
  font-size:3em;
  letter-spacing: -.02em;
  padding-right: 2px;
}
span.small{
  margin-left:-8px;
}
}

@media screen and (max-width: 1100px) {
.price-box p.detail{
  font-size:.7em;
}
}
@media screen and (max-width: 768px) {
    .price-box p.detail {
        font-size: 1em;
    }
}
@media screen and (max-width: 830px) {
.price-box h3{
  font-size:1.2em;
}

}

@media screen and (max-width: 768px) {
.price-case{
  flex-direction: column;
}
.price-box ul li{
  justify-content: center;
}
.price-box p{
  width:auto;
}
.price-box ul li p{
  font-size:1em;
}
.price-box ul li{
  padding:4px 0;
}
}
@media screen and (max-width: 420px) {
  .price-box ul{
    padding:16px 8px 16px 8px;
  }

  .price-box ul li img{
    width:24px;
    height:24px;
  }
  .price-box p{
    width:100%;
  }
}

.more{
  font-weight:700;
  padding:20px 0;
}

#price .arrow{
  width:24px;
  margin:-16px auto 20px auto;
}

/*  固定ボタン  */

.cv-sp{
  display:none;
}

@media screen and (max-width: 900px) {
  .cv-sp{
    display:block;
    position:fixed;
    bottom:20px;
    right:0;
    left:0;
    margin:0 auto;
    width:380px;
    z-index:7;
  }
}


@media screen and (max-width: 450px) {
  .cv-sp{
    width:calc(100% - 48px);
    bottom:16px;
  }
}

/* scrollしたら出てくる */
/* 初期は非表示（クリックもできない） */
.cv-sp {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(12px); /* 少し下から出る演出（不要なら消してOK） */
  transition: opacity .25s ease, transform .25s ease, visibility .25s ease;
  will-change: opacity, transform;
}

/* 表示状態 */
.cv-sp.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

/* 動きが苦手な人向け */
@media (prefers-reduced-motion: reduce) {
  .cv-sp { transition: none; transform: none; }
}






.chat{
  position:fixed;
  bottom:20px;
  right:20px;
  width:80px;
  height:80px;
  border-radius:40px;
  background:#06c755;
  color:white;
  font-size:1.25em;
  font-weight:700;
  letter-spacing: 5px;
  line-height:64px;
  text-align:center;
  box-shadow:1px 2px 8px rgb(55 55 55 / 30%);
  display: flex;
  align-items: center;
  justify-content: center;
}

.chat img{
  width: 78px;
  padding-top: 4px;
}

@media screen and (max-width: 700px) {
  .chat{
    bottom:11px;
    right:12px;
  }
}





/* function01 */
.function01{
  background:#FFD7ED;
  position:relative;
}
.function01:before{
  position: absolute;
  content: "";
  top: 0;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 100%;
  height: 100%;
  background-image: url(../images/bg.svg);
  background-repeat: repeat;
  background-size: 400px;
  opacity:.5;
}
.function01 .inner {
    padding: 240px 0 120px 0;
}

@media screen and (max-width: 1200px) {
.function01 .inner {
    padding: 160px 0 80px 0;
}
}

.feature-case_first{
  display:flex;
  justify-content: center;
  gap:20px;
  position:relative;
  padding-bottom:80px;
}
.feature-case_first li{
  width:280px;
  height:280px;
  border-radius:50%;
  background: linear-gradient(to bottom, #81ABE3 20%, #FC8BC9 100%);
  font-weight: 700;
  font-size: 1.5em;
  line-height: 1.2;
  align-content: center;
  justify-content: center;
  display:flex;
  flex-direction: column;
  gap:4px;
  text-align: center;
  color:white;
}
.feature-case_first li img{
  width:80px;
  margin:-20px auto 0 auto;
}
.feature-case_first .sparkle_left{
  position:absolute;
  top:-20%;
  left:-15%;
}
.feature-case_first .sparkle_right{
  position:absolute;
  top:-20%;
  right:-15%;
}

@media screen and (max-width: 1400px) {
.feature-case_first li {
    width: 240px;
    height: 240px;
}
.feature-case_first .sparkle_left{
  top:-45%;
  left:-5%;
}
.feature-case_first .sparkle_right{
  top:-45%;
  right:-5%;
}
}
@media screen and (max-width: 1050px) {
.feature-case_first li {
    width: 200px;
    height: 200px;
}
.feature-case_first li p{
  font-size:.8em;
}
.feature-case_first li img {
    width: 60px;
}
.feature-case_first .sparkle_left{
  left:0;
  top: -100%;
  width: 15%;
  z-index: 5;
}
.feature-case_first .sparkle_right{
  right:0;
  top: -100%;
  width: 15%;
  z-index: 5;
}
}
@media screen and (max-width: 700px) {
  .function01 .inner {
        padding: 100px 0 60px 0;
    }
.feature-case_first{
  flex-wrap: wrap;
  row-gap:0;
  padding-bottom:40px;
}

}
@media screen and (max-width: 480px) {
.feature-case_first{
  gap:12px;
  row-gap:8px;
}
  .feature-case_first li {
    width: 160px;
    height: 160px;
  }
  .feature-case_first li p {
    font-size: .7em;
  }

}

@media screen and (max-width: 388px) {

  .feature-case_first li {
    width: 140px;
    height: 140px;
  }
  .feature-case_first li p {
    font-size: .6em;
  }

}

.feature-case{
  display:flex;
  flex-direction: column;
  gap:40px;
}



/* slide */

/* ==========
  Section background (添付の雰囲気：淡いピンク＋方眼)
========== */
.function-section{
  width: min(1040px, 100%);
  margin: 0 auto;
  padding: 28px;
  border-radius: 18px;
  background:
    linear-gradient(0deg, rgba(255,255,255,.85), rgba(255,255,255,.85)),
    linear-gradient(90deg, rgba(217,75,154,.10) 1px, transparent 1px),
    linear-gradient(0deg, rgba(217,75,154,.10) 1px, transparent 1px),
    radial-gradient(900px 450px at 15% 10%, rgba(217,75,154,.18), transparent 55%),
    radial-gradient(900px 450px at 90% 90%, rgba(217,75,154,.12), transparent 55%),
    #ffeaf4;
  background-size:
    auto,
    26px 26px,
    26px 26px,
    auto,
    auto,
    auto;
  box-shadow: 0 18px 40px rgba(0,0,0,.08);
}

/* ==========
  Category layout
========== */
.function-category{
  display: flex;
  justify-content: space-between;
  gap: 40px;
  padding: 36px;
  border-radius: 14px;
  background:white;
  border-radius:16px;
  position: relative;
}
.function-category:before{
  position: absolute;
  content: "";
  top: 0;
  left: 0;
  right: 0;
  margin: 0 auto;
  width: 100%;
  height: 100%;
  background-image: url(../images/grid_parts.png);
  background-repeat: repeat;
  background-size: 20px;
  opacity: .5;
}

.function-category + .function-category{
  border-top: 1px solid rgba(0,0,0,.06);
}

/* left text */
.function-category .text{
  flex: 1 1 520px;
  min-width: 260px;
  position: relative;
}

.function-category .text .title{
  background: var(--primary-color);
  color: white;
  font-size: 1.5em;
  font-weight: 700;
  padding: 0 8px;
  width: fit-content;
  margin-bottom:20px;
}

.function-category .text h2{
  font-size: clamp(23px, 3.4vw, 40px);
  line-height: 1.05;
  margin: 0;
  letter-spacing: .01em;
  color: var(--primary-color);
  text-align: left;
}

.function-category .text p{
  margin: 0;
  line-height: 1.5;
  color: #333;
}

/* ==========
  Slide area
========== */
.function-category .slide{
  flex: 0 0 auto;
  width: min(380px, 44vw);
  position: relative;
  text-align: center;
}

/* mode toggle button */
.mode-toggle{
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0 0 10px auto;
  font-weight: 800;
  color: #d94b9a;
  cursor: pointer;
  text-underline-offset: 4px;
}

.mode-toggle::after{
  content: "▾";
  transform: translateY(-1px);
  font-weight: 900;
}

.mode-toggle:hover{
  opacity: .85;
}

/* slider box */
.lite-slider{
  position: relative;
  width: 100%;
  user-select: none;
  cursor: pointer;
}

.lite-slider__img{
  display: block;
  width: 100%;
  height: auto;
  border-radius: 14px;
}

/* dots */
.lite-slider__dots{
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 12px;
}

.lite-slider__dots button{
  width: 9px;
  height: 9px;
  border-radius: 999px;
  border: 0;
  background: rgba(0,0,0,.18);
  cursor: pointer;
  padding: 0;
}

.lite-slider__dots button.is-active{
  background: #d94b9a;
}

/* ==========
  Click 吹き出し（クリック/ドット/切替のいずれかで消える）
========== */
.click-fukidasi{
  position: absolute;
  left: -40px;
  top: 70%;
  transform: translateY(-50%);
  width: 122px;
  height: 122px;
  background: #d94b9a;
  color: #fff;
  border-radius: 999px;
  display: grid;
  place-items: center;
  text-align: center;
  padding: 10px;
  box-shadow: 0 14px 28px rgba(0,0,0,.12);
}

.click-fukidasi::after{
  content: "";
  position: absolute;
  right: -10px;
  top: 55%;
  width: 0;
  height: 0;
  border-left: 16px solid #d94b9a;
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent;
  transform: rotate(12deg);
}

.click-fukidasi .big-text{
  font-size: 22px;
  font-weight: 900;
  margin: 0 0 2px;
  letter-spacing: .02em;
  padding-top: 8px;
}
.click-fukidasi p{
  margin: -16px 0 0 0;
  line-height: 1.15;
  font-weight: 600;
  font-size: .8em;
}

.click-fukidasi.is-hidden{
  display: none;
}

/* ==========
  Responsive
========== */
@media (max-width: 930px){

.function-category .text p{
  letter-spacing: 0;
}
.function-category .text p br{
  display:none;
}
.function-category .text h2{
  padding-bottom:16px;
}

}
 
@media (max-width: 670px){ 
  .function-section{
    padding: 22px 14px;
  }
  .function-category{
    flex-direction: column;
    align-items: stretch;
    gap: 18px;
    padding: 26px 20px;
    display:block;
  }
  .function-category .slide{
    width: min(300px, 100%);
    margin: 0 auto;
  }
  .click-fukidasi{
    left: 3px;
    top: 60%;
    transform: translate(-30%, -50%);
    width: 112px;
    height: 112px;
  }
  .function-category .text .title{
    margin:0 auto 20px auto;
  }
  .function-category .text h2{
    text-align: center;
  }
  .function-category .text{
    height:auto;
  }
  .function-category .slide:empty{
    display: none;
  }
  .function-category .slide{
    height: auto !important;
    min-height: 0 !important;
    margin-top:40px;
  }
  #function h3{
    text-align: center;
    letter-spacing: 0;
  }
  #function h3 .sp{
    display:none;
  }
}


@media (max-width: 480px){ 
  #function h3 .sp{
    display:block;
  }
}


/* privacy */
#privacy{
  padding:20px 0;
  margin-top:-20px;
  font-size:0.8em;
  line-height:1.5;
}

#privacy .logo{
  display:none;
}

@media screen and (max-width: 900px) {
  #privacy .logo{
    display:block;
    position: absolute;
    left: 16px;
    top: 23px;
  }
}

#privacy h2{
  color:var(--gray_dark);
}

#privacy .intro{
  margin-bottom:40px;
}

#privacy ul.chapter > li{
  margin-bottom:40px;
}

#privacy h3{
  font-size:1.2em;
  font-weight:700;
  line-height: 1.5;
  margin-bottom: 8px;
}

#privacy ul.list,
#privacy ul.num{
  margin-top:12px;
}

#privacy ul.list li{
  margin-bottom:4px;
  list-style:circle;
  margin-left:20px;
}

#privacy ul.num li{
  margin-bottom:4px;
  list-style:decimal;
  margin-left:20px;
}

#privacy ul.underline{
  margin-top:20px;
}

#privacy ul.underline h3{
  border-bottom: 1px solid var(--button);
  padding-bottom: 8px;
}


/* footer */
footer{
  background:white;
  padding:40px 0 100px 0;
}

footer ul{
  width:100%;
  text-align:center;
  margin:0 auto 40px auto;
}

footer ul li {
  font-weight:700;
  margin-bottom:12px;
}
footer ul li a{
  color:#222;
}
footer ul li a:hover{
  color:var(--primary-color);
  text-decoration: none;
}

footer p{
  font-size:0.8em;
  text-align:center;
}



/* hero_B */
.hero-carousel{
  width:100%;
}

/* perView計算を捨てて、カード幅を固定（再現性が高い） */
.card{
  flex: 0 0 var(--cardW);
  --cardH: clamp(520px, 44vw, 600px);  /* カード高さ：FVで見栄えする範囲に */
  height: var(--cardH);
  border-radius: 28px;
  overflow:hidden;
  position:relative;
  transform: translateZ(0);
}

/* 画像カード前提：カード内に“ぴったり”収める */
.card img{
  display:block;
  object-fit: cover;
}

/* ラベルは一旦OFF（再現優先） */
.card__label{ 
  left: 16px;
    position: absolute;
    top: 8px;
    color: white;
    font-size: .8em;
 }


@media (max-width: 600px){
  .hero{
    padding:65px 0 160px 0;
  }
  .hero .hero_copy{
    top:68px;
  }
}


/* ===== FV Swiper（hero cards） ===== */
.hero-swiper{
  width: 100%;
  overflow: hidden;
  position:relative;
}

.hero-swiper .swiper{
  width: 100%;
}

.hero-swiper .swiper-wrapper{
  align-items: stretch;
  transition-timing-function: linear !important;
}

.hero-swiper .swiper-slide{
  height: auto; /* 中身(card)に任せる */
  display: flex;
}

/* いまある .card のデザインは活かす（必要なら微調整） */
.hero-swiper .card{
  width: 100%;
}

.hero-swiper:after{
  position:absolute;
  content:"";
  top:0;
  left:0;
  right:0;
  margin:0 auto;
  width:100%;
  height:100%;
  background:linear-gradient(to bottom, rgb(143 169 255 / 0%) 40%, var(--pink_hero) 70%);
  z-index:1;
}
.swiper-wrapper{
  height:auto !important;
}




/*  sub page */

.sub main{
  background:var(--pink_hero);
}

.sub #privacy{
  margin:85px auto 80px auto;
  width: 1280px;
  border-radius: 40px;
}

.sub #privacy .inner{
  padding:40px 0 0 0;
}

.sub #privacy .intro{
  margin:0;
  padding: clamp(26px, 4vw, 44px) 0 clamp(34px, 6vw, 70px);
}

@media screen and (max-width: 1360px) {

.sub #privacy{
  width: calc(100% - 80px);
}
.sub #privacy .inner{
  width:calc(100% - 80px);
}

}

@media screen and (max-width: 768px) {

.sub #privacy{
  margin:65px auto 40px auto;
  width: calc(100% - 40px);
}
.sub #privacy .inner{
  width:calc(100% - 40px);
}

}

.sub .intro::before{
  background:none;
}

#privacy h2{
  color:var(--button);
  padding:0;
}












