body {
   font-family: "Noto Serif JP", serif;
   font-size: 17px;
   line-height: 2;
}

@media screen and (max-width: 767px) {
   body {
      font-size: 14px;
   }
}

/* -- -- */
.cl-green {
   color: #005b26;
}

.cl-brown {
   color: #7d5310;
}

@media screen and (min-width: 1441px) {
   .wrap {
      max-width: 1200px;
   }
}

/*=============================================
 * <header>
 *=============================================*/
header {
   position: relative !important;
}

header {
   background: #1F397C;
   color: #fff;
   padding: 0;
}

header.fixed {
   background: #1F397C;
   color: #fff;
   padding: 0;
}

header .logo {
   width: 264px;
   position: absolute;
   top: 0;
   left: 50%;
   transform: translateX(-50%);
}

#navbar {
   display: flex;
   justify-content: center;
   align-items: center;
   gap: 400px;
   width: 100%;
   height: 170px;
   font-weight: 700;
   font-size: 18px;
   line-height: 32px;
   letter-spacing: 0.1em;
}

#navbar ul {
   display: flex;
   justify-content: space-between;
   width: 32%;
}

@media screen and (max-width: 1600px) {
   #navbar {
      gap: 320px;
   }

   #navbar ul {
      width: 38%;
   }
}

@media screen and (max-width: 1400px) {
   header .logo {
      width: 200px;
   }

   #navbar {
      gap: 240px;
      font-size: 16px;
   }
}

@media screen and (max-width: 1200px) {
   #navbar {
      gap: 210px;
      font-size: 14px;
   }

   #navbar ul {
      width: 39%;
   }
}

@media screen and (max-width: 1023px) {
   header {
      height: 100px;
   }

   header .logo {
      left: 0;
      transform: translateX(0);
      z-index: 1;
   }

   .hamburger {
      display: block;
      width: 100px;
      height: 100px;
      background: #1F397C;
      position: fixed;
      top: 0;
      right: 0px;
   }

   .hamburger span {
      width: 30px;
   }

   .hamburger span,
   .hamburger span:before,
   .hamburger span:after {
      background-color: #fff;
   }

   #navbar {
      flex-direction: column;
      justify-content: center;
      align-items: center;
      gap: 30px;
      background: #1F397C;
      width: 100%;
      height: 100vh;
      overflow: auto;
      font-size: 20px;
      position: fixed;
      top: 0;
      left: 0;
      opacity: 0;
      visibility: hidden;
      transform: translateY(10px);
      transition: all 0.3s linear;
      box-sizing: border-box;
      padding: 0;
   }

   #navbar ul {
      flex-direction: column;
      justify-content: center;
      align-items: center;
      gap: 30px;
      width: auto;
   }

   .navOpen #navbar {
      opacity: 1;
      visibility: visible;
      transform: translateY(0);
   }
}

@media screen and (max-width: 767px) {
   header {
      height: 70px;
   }

   header:before {
      display: none;
   }

   header .logo {
      width: 120px;
   }

   .hamburger {
      width: 70px;
      height: 70px;
   }

   #navbar {
      justify-content: flex-start;
      padding: 150px 0;
      font-size: 18px;
   }
}

/*=============================================
 * <footer>
 *=============================================*/
footer {
   background-color: #fff;
   padding: 160px 0 90px 0;
}

footer .logo a {
   width: 264px;
   margin: 0 auto;
}

footer .url {
   font-weight: 700;
   font-size: 20px;
   padding-top: 0;
}

footer .url a {
   display: inline-block;
   border-bottom: 1px solid #000;
}

footer .url a:hover {
   border-bottom-color: transparent;
}

footer address {
   font-weight: 300;
   font-size: 16px;
   line-height: 24px;
   padding-top: 50px;
}

@media screen and (max-width: 767px) {
   footer {
      padding: 50px 0;
   }

   footer .logo {
      width: auto;
      margin: 0 auto;
   }

   footer .url {
      font-size: 18px;
      padding-top: 10px;
   }

   footer address {
      font-size: 14px;
      padding-top: 40px;
   }
}

.fixed-bnr {
   position: fixed;
   bottom: 2.5%;
   right: 2.5%;
   z-index: 9;
   opacity: 0;
   visibility: hidden;
   transition: opacity 0.3s;
}

.fixed-bnr a {
   display: flex;
   justify-content: center;
   align-items: center;
   width: 201px;
   height: 200px;
   text-align: center;
   font-weight: 700;
   font-size: 28px;
   line-height: 42px;
   letter-spacing: 0.1em;
   color: #fff;
}

.fixed-bnr a:before {
   content: '';
   width: 100%;
   height: 100%;
   background: url("../img/bokudashi-fc/fixed-bnr-bg.png") no-repeat center top/cover;
   position: absolute;
   top: 0;
   left: 0;
   z-index: -1;
   -webkit-animation: rotate-btn 20s linear infinite;
   animation: rotate-btn 20s linear infinite;
}

.fixed-bnr.visible {
   opacity: 1;
   visibility: visible;
}

@media screen and (max-width: 767px) {
   .fixed-bnr a {
      width: 120px;
      height: 116px;
      font-size: 18px;
      line-height: 26px;
   }
}

@-webkit-keyframes rotate-btn {
   0% {
      -webkit-transform: rotate(0deg);
      transform: rotate(deg);
   }

   100% {
      -webkit-transform: rotate(360deg);
      transform: rotate(360deg);
   }
}

@keyframes rotate-btn {
   0% {
      -webkit-transform: rotate(0deg);
      transform: rotate(0deg);
   }

   100% {
      -webkit-transform: rotate(360deg);
      transform: rotate(360deg);
   }
}

/*=============================================
 * <section>
 *=============================================*/
section h2 {
   font-weight: 700;
   font-size: 42px;
   letter-spacing: 0.08em;
   line-height: 66px;
   text-align: center;
}

section h2 .sub {
   display: block;
   font-family: "Outfit", sans-serif;
   font-weight: 700;
   font-size: 18px;
   letter-spacing: 0.1em;
   line-height: 26px;
   color: #B0BCDB;
   padding-bottom: 24px;
   text-transform: uppercase;
}

section h2 .ja {
   display: block;
   max-width: 488px;
   background-color: #1F397C;
   color: #fff;
   margin: 0 auto;
   padding: 10px;
}

.h-28 {
   font-weight: 700;
   font-size: 28px;
   line-height: 48px;
   letter-spacing: 0.025em;
}

@media screen and (max-width: 767px) {
   section h2 {
      font-size: 24px;
      line-height: 36px;
   }

   section h2 .sub {
      padding-bottom: 15px;
   }

   section h2 .ja {
      display: inline-block;
      padding: 12px 20px;
   }

   .h-28 {
      font-size: 20px;
      line-height: 32px;
   }
}

/* -- -- */
#key {
   background: url("../img/bokudashi-fc/key-img.webp") no-repeat center/cover;
   width: 100%;
   height: calc(100vh - 170px);
   min-height: 600px;
   position: relative;
   color: #fff;
   text-shadow: 0px 0px 35px black;
}

#key .wrap {
   display: flex;
   align-items: center;
   width: 94%;
   max-width: 1400px;
   height: 100%;
}

#key .wrap .in {
   display: flex;
   justify-content: space-between;
   width: 100%;
}

#key h2 {
   font-weight: 700;
   font-size: 73px;
   line-height: 120px;
   letter-spacing: 0.35em;
}

#key h2 span {
   display: inline-block;
   border-right: 2px solid #fff;
}

#key h3 {
   font-weight: 700;
   font-size: 46px;
   line-height: 90px;
   letter-spacing: 0.25em;
}

#key h3 span {
   display: inline-block;
   border-right: 2px solid #fff;
}

@media screen and (max-width: 1023px) {
   #key {
      height: calc(100vh - 100px);
   }
}

@media screen and (max-width: 767px) {
   #key {
      height: calc(100vh - 70px);
      background: url("https://komugino.jp/wp-content/uploads/2026/01/key-img-sp.jpg") no-repeat center/cover;
   }

   #key .wrap {
      width: 100%;
      padding: 0 20px;
   }

   #key h2 {
      font-size: 40px;
      line-height: 60px;
      margin-left: -10px;
   }

   #key h3 {
      font-size: 24px;
      line-height: 50px;
   }
}

/* -- -- */
#lead {
   padding: 120px 0 160px;
}

#lead .swiper-slide {
   width: 518px;
   margin-right: 67px;
}

#lead h2 {
   text-align: left;
   margin-top: -180px;
   position: relative;
   z-index: 1;
}

#lead h2 .ja {
   display: inline-block;
   width: auto;
   padding: 10px 24px;
}

#lead h2 .ja:not(:last-child) {
   margin-bottom: 30px;
}

#lead .desc {
   font-size: 22px;
   line-height: 2.54;
   letter-spacing: 0.03em;
   padding-top: 70px;
}

#lead .box {
   display: grid;
   grid-template-columns: 1fr 450px;
   gap: 70px;
   background: url("../img/bokudashi-fc/lead-box-bg.webp") no-repeat center top/cover;
   margin-top: 30px;
   padding: 70px 60px;
}

#lead .box h3 {
   display: inline-block;
   background-color: #1F397C;
   color: #fff;
   padding: 8px 27px;
}

#lead .box .txt {
   padding-top: 35px;
}

@media screen and (max-width: 1023px) {
   #lead .box {
      grid-template-columns: 1fr;
   }

   #lead .box figure {
      text-align: center;
   }
}

@media screen and (max-width: 767px) {
   #lead {
      padding: 50px 0;
   }

   #lead .swiper-slide {
      width: 260px;
      margin-right: 30px;
   }

   #lead h2 {
      margin-top: -90px;
   }

   #lead h2 .ja:not(:last-child) {
      margin-bottom: 15px;
   }

   #lead .desc {
      font-size: 16px;
      line-height: 32px;
      padding-top: 20px;
   }

   #lead .box {
      gap: 20px;
      padding: 20px;
   }

   #lead .box .txt {
      padding-top: 15px;
   }
}

/* -- -- */
#features {
   background: #1F397C url("../img/bokudashi-fc/feature-bg.png") no-repeat top center;
   color: #fff;
   padding: 100px 0;
}

#features h2 .ja {
   width: 315px;
   background-color: #fff;
   color: #000;
}

#features h2 .ja img {
   max-width: 68px;
}

#features .box {
   display: grid;
   grid-template-columns: repeat(2, 1fr);
   gap: 60px 70px;
   padding-top: 60px;
}

#features .box figure img {
   border-radius: 12px;
}

#features .box h3,
#features .box .txt {
   padding-top: 20px;
}

@media screen and (max-width: 1023px) {
   #features .box {
      gap: 60px 30px;
   }
}

@media screen and (max-width: 767px) {
   #features {
      background-size: 120% auto;
      padding: 50px 0;
   }

   #features h2 .ja {
      width: auto;
      padding: 4px 20px;
   }

   #features .box {
      grid-template-columns: 100%;
      gap: 50px;
      padding-top: 40px;
   }
}

/* -- -- */
#system-support {
   background: url("../img/bokudashi-fc/bg-img-1.jpg") repeat center top;
   padding: 100px 0;
}

#system-support .bg {
   background: url("../img/bokudashi-fc/support-box-bg.webp") no-repeat center top/cover;
   margin-top: 90px;
   padding: 75px 50px;
}

#system-support .bg+.bg {
   margin-top: 75px;
}

#system-support .bg h3 {
   position: relative;
   padding-left: 50px;
}

#system-support .bg h3 span {
   display: block;
   background-color: #1F397C;
   color: #fff;
   width: 82px;
   text-align: center;
   font-weight: 600;
   font-size: 18px;
   line-height: 33px;
   position: absolute;
   top: 7px;
   left: -50px;
}

#system-support .box {
   display: flex;
   flex-direction: row-reverse;
   gap: 73px;
   padding-top: 40px;
}

#system-support .box+.box {
   padding-top: 75px;
}

#system-support .box .txt {
   width: 590px;
   line-height: 2.36;
}

#system-support .box figure {
   width: 436px;
}

#system-support .box.img-l {
   flex-direction: row;
}

@media screen and (max-width: 1023px) {

   #system-support .box,
   #system-support .box.img-l {
      flex-direction: column;
      gap: 50px;
   }

   #system-support .box figure,
   #system-support .box.img-l figure {
      width: 100%;
      text-align: center;
   }

   #system-support .box .txt,
   #system-support .box.img-l .txt {
      width: 100%;
   }
}

@media screen and (max-width: 767px) {
   #system-support {
      padding: 50px 0;
   }

   #system-support .bg {
      margin-top: 30px;
      padding: 30px 20px;
   }

   #system-support .bg+.bg {
      margin-top: 50px;
   }

   #system-support .bg h3 span {
      width: 60px;
      font-size: 16px;
      top: 0;
      left: -20px;
   }

   #system-support .box,
   #system-support .box.img-l {
      gap: 20px;
      padding-top: 30px;
   }

   #system-support .box+.box,
   #system-support .box.img-l+.box {
      padding-top: 50px;
   }
}

/* -- -- */
#revenue-model {
   background: url("../img/bokudashi-fc/model-bg.webp") repeat center top;
   padding: 150px 0;
}

#revenue-model .photo {
   display: flex;
   text-align: center;
   padding-top: 48px;
}

#revenue-model .bnr {
   width: 245px;
   margin: 0 auto;
}

@media screen and (max-width: 767px) {
   #revenue-model {
      padding: 50px 0 0;
   }

   #revenue-model .photo {
      flex-direction: column;
      padding-top: 20px;
   }
}

/* -- -- */
#flow {
   padding: 100px 0;
}

#flow ul {
   display: flex;
   flex-direction: column;
   gap: 40px;
   padding-top: 60px;
   font-weight: 500;
   font-size: 22px;
   line-height: 62px;
   letter-spacing: 0.1em;
}

#flow ul li {
   background-color: #f5f5f5;
   padding: 9px;
   position: relative;
}

#flow ul li+li:before {
   content: '';
   width: 25px;
   height: 9px;
   background: url("../img/bokudashi-fc/flow-arrow.png") no-repeat center top/cover;
   position: absolute;
   top: -25px;
   left: 50%;
   transform: translateX(-50%);
}

@media screen and (max-width: 767px) {
   #flow {
      background-size: 70% auto;
      padding: 50px 0;
   }

   #flow ul {
      font-size: 18px;
      padding-top: 20px;
   }
}

/* -- -- */
#faq {
   background-color: #f3efe5;
   padding: 100px 0;
}

#faq .box-qa {
   line-height: 38px;
   padding-top: 40px;
}

#faq .box-qa dl {
   display: none;
   padding-top: 10px;
}

#faq .box-qa dl dt {
   background-color: #fff;
   color: #1F397C;
   font-weight: 700;
   font-size: 22px;
   padding: 26px 80px;
   position: relative;
   cursor: pointer;
}

#faq .box-qa dl dt:before {
   content: '';
   width: 40px;
   height: 40px;
   background: url("../img/bokudashi-fc/icon-q.png") no-repeat center top/cover;
   position: absolute;
   top: 25px;
   left: 20px;
}

#faq .box-qa dl dt i {
   width: 30px;
   height: 30px;
   position: absolute;
   top: 50%;
   right: 30px;
   transform: translateY(-50%);
}

#faq .box-qa dl dt i:before,
#faq .box-qa dl dt i:after {
   content: '';
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
   transition: transform 0.3s;
}

#faq .box-qa dl dt i:before {
   width: 100%;
   height: 0;
   border-top: 2px solid;
}

#faq .box-qa dl dt i:after {
   width: 0;
   height: 100%;
   border-left: 2px solid;
}

#faq .box-qa dl dd {
   display: none;
   font-family: 'Noto Sans JP', sans-serif;
   color: #333;
   padding: 35px 10px;
}

#faq .box-qa dl.active dt i:after {
   transform: translate(-50%, -50%) rotate(90deg);
}

#faq .more {
   padding-top: 50px;
}

#faq .more p {
   display: none;
   width: max-content;
   border: 1px solid;
   margin: 0 auto;
   padding: 0 50px;
   cursor: pointer;
   transition: all 0.3s;
}

#faq .more p:hover {
   background-color: #000;
   color: #fff;
}

#faq .more p.show {
   display: block;
}

@media screen and (max-width: 767px) {
   #faq {
      padding: 50px 0;
   }

   #faq .box-qa {
      line-height: 30px;
      padding-top: 20px;
   }

   #faq .box-qa dl dt {
      font-size: 18px;
      padding: 15px 50px;
   }

   #faq .box-qa dl dt:before {
      width: 30px;
      height: 30px;
      top: 15px;
      left: 10px;
   }

   #faq .box-qa dl dt i {
      width: 20px;
      height: 20px;
      right: 15px;
   }

   #faq .box-qa dl dd {
      padding: 15px 10px;
   }
}

/* -- -- */
#mailform {
   padding: 100px 0 0;
}

#mailform .form-wrap {
   padding-top: 60px;
}

#mailform .form-row .address-gr .item {
   display: grid;
   grid-template-columns: 150px 1fr;
   align-items: flex-start;
   padding-bottom: 35px;
}

#mailform .form-row .address-gr .item:last-child {
   padding-bottom: 0;
}

#mailform .form-row .address-gr .item .cap {
   display: flex;
   align-items: center;
   line-height: 34px;
   min-height: 65px;
}

#mailform .form-row:has(.result_txt) .address-gr .item .cap {
   min-height: inherit;
}

#mailform .agreeCon {
   display: flex;
   justify-content: center;
   align-items: center;
   gap: 10px;
   padding-top: 45px;
   position: relative;
}

#mailform .agreeCon input {
   display: none;
}

#mailform .agreeCon .wpcf7-not-valid-tip {
   width: max-content;
   position: absolute;
   top: 100%;
   left: 0;
}

#mailform .agreeCon .wpcf7-list-item-label {
   display: inline-grid;
   grid-template-columns: 25px 1fr;
   align-items: center;
   cursor: pointer;
}

#mailform .agreeCon .wpcf7-list-item-label:before {
   grid-area: 1/1;
   display: block;
   content: '';
   width: 18px;
   height: 18px;
   background: #FFF;
   border-radius: 10px;
   border: 1px solid rgba(0, 0, 0, 0.5);
   box-sizing: border-box;
}

#mailform .agreeCon .wpcf7-list-item-label:after {
   grid-area: 1/1;
   display: none;
   content: '';
   width: 18px;
   height: 18px;
   background: #005b26;
   border-radius: 10px;
   box-sizing: border-box;
}

#mailform .agreeCon input:checked~.wpcf7-list-item-label:after {
   display: block;
}

#mailform .agreeCon .required {
   display: inline-block;
   color: #ee1414;
   position: relative;
   top: -2px;
   font-size: 14px;
}

#mailform .privacy {
   font-size: 16px;
   line-height: 32px;
}

#mailform .privacy h3 {
   padding-bottom: 20px;
}

#mailform .privacy .inner {
   box-sizing: border-box;
   width: 100%;
   height: 320px;
   overflow-y: scroll;
   -ms-overflow-style: none;
   scrollbar-width: none;
   padding: 10px 40px 40px 40px;
   border: 1px solid rgba(0, 0, 0, 0.2);
   text-align: justify;
}

#mailform .privacy p.cap {
   font-weight: 600;
   margin-top: 30px;
}

#mailform .privacy p.cap:first-child {
   margin-top: 0;
}

@media screen and (max-width: 767px) {
   #mailform {
      padding: 50px 0 0;
   }

   #mailform .form-wrap {
      padding-top: 30px;
   }

   #mailform .form-row .caption {
      padding-top: 0;
   }

   #mailform .form-row .address-gr .item {
      grid-template-columns: 100px 1fr;
      padding-bottom: 20px;
   }

   #mailform .privacy {
      padding-bottom: 10px;
   }

   #mailform .privacy .inner {
      padding: 20px 20px;
   }
}