@charset "utf-8";

/* ▼ FV ▼------------------------------------------ */
.fv {
    position: relative;
}
.fv__kv-wrap {
    display: flex;
    justify-content: center;
    max-width: 1100px;
    margin: 0 auto;
    gap: 2%;
    padding: 0 7%;
}
.fv__catch {
    margin-top: 102px;
    font-size: clamp(18px, 2.5vw, 32px);
    line-height: 2.19;
    font-weight: 500;
    flex-shrink: 0;
}
.fv__kv {
    position: relative;
}
.fv__footprints {
    position: absolute;
    top: 71%;
    left: -78%;
    max-width: 85%;
    width: fit-content;
}
.fv__footprints img {
    width: 100%;
    height: auto;
}
.fv__btn-wrap {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    margin: 26px auto 37px;
    max-width: 69%;
    width: 90%;
    gap: 4%;
    row-gap: 15px;
}
.fv__btn {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 130px;
    box-sizing: border-box;
    border: solid 1px #345268;
    border-radius: 50%;
    font-size: 20px;
    text-align: center;
}
.fv__btn:before {
    display: block;
    content: "";
    padding-top: 100%;
}
.fv__btn:hover {
    background-color: #345268;
    color: #fff;
    transition: 0.8s;
}
/* スクロール */
.fv__scroll {
    position: absolute;
    bottom: 0;
    right: 3.5%;
    writing-mode: vertical-rl;
}
.fv__scroll::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 150px;
    background: #345268;
    animation: scroll 4.5s infinite;
}
@keyframes scroll {
    0% {
        transform: scale(1, 0);
        transform-origin: 0 0;
    }
    50% {
        transform: scale(1, 1);
        transform-origin: 0 0;
    }
    51% {
        transform: scale(1, 1);
        transform-origin: 0 100%;
    }
    100% {
        transform: scale(1, 0);
        transform-origin: 0 100%;
    }
}
/* あしあとアニメーション */
.fv__footprints {
    opacity: 0;
    clip-path: inset(0 100% 0 0);
    animation: walkFootprints 4.5s ease-in-out forwards;
    animation-delay: 0.5s;
}
@keyframes walkFootprints {
    0% {
        opacity: 0;
    }
    1%,
    9% {
        clip-path: inset(0 100% 0 0);
    }
    10%,
    20% {
        clip-path: inset(0 85% 0 0);
    }
    21%,
    40% {
        clip-path: inset(0 60% 0 0);
    }
    41%,
    60% {
        clip-path: inset(0 40% 0 0);
    }
    61%,
    80% {
        clip-path: inset(0 20% 0 0);
    }
    81%,
    100% {
        opacity: 0.5;
        clip-path: inset(0 0 0 0);
    }
    100% {
        opacity: 1;
    }
}

@media screen and (max-width: 767px) {
    .fv {
        overflow-x: hidden;
    }
    .fv__kv-wrap {
        flex-direction: column-reverse;
        padding: 0 7%;
    }
    .fv__footprints {
        top: 95%;
        left: 75%;
        width: 117px;
    }
    .fv__catch {
        margin-top: 30px;
        font-size: clamp(18px, 3.5vw, 26px);
    }
    .fv__btn-wrap {
        margin: 65px auto 55px;
        max-width: 84%;
    }
    .fv__btn {
        width: 90px;
        font-size: 14px;
    }
    .fv__scroll {
        display: none;
    }
    /* あしあとアニメーション */
    .fv__footprints {
        animation-name: walkFootprintsMobile;
    }
    @keyframes walkFootprintsMobile {
        0% {
            opacity: 0;
        }
        1%,
        9% {
            clip-path: inset(100% 0 0 0);
        }
        10%,
        20% {
            clip-path: inset(85% 0 0 0);
        }
        21%,
        40% {
            clip-path: inset(60% 0 0 0);
        }
        41%,
        60% {
            clip-path: inset(40% 0 0 0);
        }
        61%,
        80% {
            clip-path: inset(20% 0 0 0);
        }
        81%,
        100% {
            opacity: 0.5;
            clip-path: inset(0 0 0 0);
        }
        100% {
            opacity: 1;
        }
    }
}

/* ▼ ABOUT ▼----------------------------------------- */
.about {
    position: relative;
    width: 100%;
}
.about::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    width: 76%;
    height: 100%;
    background-image: url(../images/co_bg_beige.jpg);
    background-size: cover;
    border-top-left-radius: 80px;
    border-bottom-left-radius: 80px;
    z-index: -1;
}
.about__detail-wrap {
    display: flex;
    justify-content: flex-start;
    max-width: 1270px;
    width: 94%;
    gap: 6%;
    padding-right: 6%;
}
.about__img {
    margin: 336px 0 0;
}
.about__detail--right {
    width: 52%;
    padding-top: 110px;
}
.about__ttl {
    margin-bottom: 45px;
    font-size: 28px;
    font-weight: 500;
    line-height: 2.14;
}
.about__detail_txt {
    text-align: justify;
}
.about__detail_txt p {
    margin: 1rem 0;
    font-size: 20px;
    line-height: 2;
}
.about__btn a {
    padding: 1.1em 2.2em;
}
.about__btn-wrap {
    margin: 60px auto 155px;
    text-align: end;
}
@media screen and (max-width: 767px) {
    .about {
        margin-top: 20px;
    }
    .about::before {
        width: 100%;
    }
    .about__detail-wrap {
        width: 100%;
        flex-direction: column;
        padding: 0;
    }
    .about__img {
        margin-top: -20px;
        padding-right: 20%;
    }
    .about__detail--right {
        width: 84%;
        margin: 0 auto;
        padding: 40px 6% 0;
    }
    .about__ttl {
        font-size: 17px;
        margin-bottom: 30px;
    }
    .about__detail_txt p {
        font-size: 16px;
        line-height: 1.875;
    }
    .about__detail_txt p br {
        display: none;
    }
    .about__btn-wrap {
        text-align: center;
    }
    .about__btn a {
        padding: 0.9em 1em;
    }
}

/* ▼ POINT ▼----------------------------------------- */
.points {
    margin-top: 155px;
    margin-bottom: 130px;
}
.points__inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 20px;
}
.points__list {
    display: flex;
    flex-wrap: wrap;
    margin-top: 65px;
}
.points__item {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 30px;
    width: 50%;
    padding: 30px 0 30px 30px;
    box-sizing: border-box;
}

/* 縦線と横線 */
.points__item::before,
.points__item::after {
    content: "";
    position: absolute;
    background-color: rgba(52, 82, 104, 0.5);
    z-index: 1;
}
/* 縦線 */
.points__item:nth-child(odd)::after {
    right: 0;
    width: 1px;
}
.points__item:nth-child(1)::after {
    top: 0;
    height: calc(100% - 30px);
}
.points__item:nth-child(3)::after {
    bottom: 0;
    height: calc(100% - 30px);
}
/* 横線 */
.points__item:nth-child(1)::before,
.points__item:nth-child(2)::before {
    bottom: 0;
    left: 0;
    width: 100%;
    height: 1px;
}

.points__lead {
    flex-shrink: 0;
    width: 180px;
}
.points__head {
    text-align: center;
    margin-bottom: 20px;
}
.points__label {
    font-size: 24px;
}
.points__item-ttl {
    font-size: 26px;
    font-weight: 500;
    margin-top: 5px;
}
.points__icon {
    flex-shrink: 0;
}
.points__txt {
    padding: 40px 30px 0 0;
    text-align: justify;
}

@media screen and (max-width: 900px) {
    .points__item {
        flex-direction: column;
        align-items: center;
    }
}

@media screen and (max-width: 767px) {
    .points {
        margin-top: 80px;
        margin-bottom: 70px;
    }
    .points__list {
        flex-direction: column;
        align-items: center;
        margin-top: 20px;
    }
    .points__item {
        width: 94%;
        padding: 30px 0;
    }
    .points__item::before,
    .points__item::after {
        display: none;
    }
    .points__item:not(:last-child) {
        border-bottom: 1px solid rgba(52, 82, 104, 0.5);
    }
    .points__head {
        margin-bottom: 10px;
    }
    .points__label {
        font-size: 14px;
        line-height: normal;
    }
    .points__item-ttl {
        font-size: 20px;
        margin-top: 0;
    }
    .points__txt {
        padding: 10px 0 0;
    }
}

/* ▼ VOICE ▼----------------------------------------- */
.voice {
    position: relative;
    width: 100%;
    padding: 60px 0 0;
}
.voice::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background-image: url(../images/co_bg_blue.png);
    background-size: cover;
    z-index: -1;
}
.voice__slider {
    max-width: 90%;
    width: 1260px;
    margin: 0 auto;
}
.voice__slider-item {
    position: relative;
    margin: 115px auto;
    padding: 0 20px;
    box-sizing: border-box;
}
.voice__icon {
    position: absolute;
    top: -60px;
    left: 50%;
    transform: translateX(-50%);
    border-radius: 50%;
    background-color: #fff;
    padding: 12px;
}
.voice__slider-txt {
    border-radius: 30px;
    margin: 0 auto;
    max-width: 450px;
    width: 100%;
    min-height: 450px;
    padding: 120px 30px 20px;
    box-sizing: border-box;
    background-color: #fff;
}
.slick-next {
    right: -3%;
}
.slick-prev {
    left: -3%;
    z-index: 99;
}
.slick-prev:before {
    content: "";
    display: block;
    width: 23px;
    height: 23px;
    border-top: solid 2px #345268;
    border-left: solid 2px #345268;
    transform: rotate(-45deg);
    border-top-left-radius: 3px;
}
.slick-next:before {
    content: "";
    display: block;
    width: 23px;
    height: 23px;
    border-top: solid 2px #345268;
    border-right: solid 2px #345268;
    transform: rotate(45deg);
    border-top-right-radius: 3px;
}
@media screen and (max-width: 767px) {
    .voice__slider {
        max-width: 93%;
    }
    .voice__slider-item {
        padding: 0 5px;
    }
    .voice__icon {
        width: 120px;
        padding: 10px;
    }
    .voice__slider-txt {
        padding: 97px 20px 20px;
    }
    .voice__slider-txt p {
        font-size: 15px;
    }
    .slick-next {
        right: 0%;
    }
    .slick-prev {
        left: -1%;
    }
}

/* ▼ FLOW ▼------------------------------------------ */
.flow__inner {
    max-width: 1100px;
    padding: 70px 12px 295px;
    margin: 0 auto;
}
.flow__list {
    position: relative;
    display: flex;
    flex-direction: column;
    margin: 65px 0 60px;
    gap: 75px;
}
.flow__list::before {
    content: "";
    position: absolute;
    left: 78px;
    top: 40px;
    bottom: 10%;
    width: 0;
    border-left: 1px dashed #ddd4cc;
    z-index: 1;
}
.flow__item {
    display: flex;
    align-items: flex-start;
    gap: 40px;
    position: relative;
    z-index: 2;
}
.flow__marker {
    flex-shrink: 0;
    width: 80px;
    padding-left: 38px;
    text-align: center;
    position: relative;
    z-index: 2;
    background-color: #fffef9;
}
.flow__step-label {
    font-size: 12px;
}
.flow__content {
    flex-grow: 1;
    background-color: #e2ecf0;
    padding: 30px;
    border-radius: 10px;
}
.flow__content-ttl {
    font-family: "Inter", "Zen Kaku Gothic New";
    font-size: 30px;
    font-weight: 500;
    margin-bottom: 7px;
}
.flow__btn-wrap {
    text-align: end;
}
.flow__btn a {
    padding: 1.85em 2em;
}
.flow__footprints-wrap {
    position: relative;
}
.flow__footprints {
    position: absolute;
    right: 30%;
    top: 0;
    width: 81%;
}
.flow__footprints img {
    width: 100%;
    height: auto;
}

/* あしあとアニメーション */
.flow__footprints {
    opacity: 0;
    clip-path: inset(0 100% 0 0);
    animation: walkFootprintsFlow 4.5s ease-in-out forwards;
    animation-delay: 0.5s;
}
@keyframes walkFootprintsFlow {
    0% {
        opacity: 0;
    }
    1%,
    13% {
        clip-path: inset(0 80% 0 0);
    }
    14%,
    27% {
        clip-path: inset(0 65% 0 0);
    }
    28%,
    41% {
        clip-path: inset(0 45% 0 0);
    }
    42%,
    55% {
        clip-path: inset(0 30% 0 0);
    }
    56%,
    69% {
        clip-path: inset(0 15% 0 0);
    }
    70%,
    83% {
        clip-path: inset(0 10% 0 0);
    }
    84%,
    100% {
        opacity: 0.5;
        clip-path: inset(0 0 0 0);
    }
    100% {
        opacity: 1;
    }
}
@media screen and (max-width: 768px) {
    .flow__inner {
        position: relative;
        padding: 60px 10px 150px;
        margin: 0 auto;
    }
    .flow__list {
        gap: 45px;
    }
    .flow__list::before {
        left: 35px;
    }
    .flow__item {
        gap: 11px;
    }
    .flow__marker {
        padding-left: 0;
    }
    .flow__icon {
        width: 70px;
    }

    .flow__content-ttl {
        font-size: clamp(16px, 3.5vw, 25px);
    }
    .flow__content-txt {
        font-size: 13px;
    }

    .flow__btn-wrap {
        text-align: center;
    }
    .flow__footprints {
        right: 10%;
        width: 130%;
    }
}

/* ▼ FAQ ▼------------------------------------------ */
.faq {
    position: relative;
    width: 100%;
    overflow-x: hidden;
}
.faq::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background-image: url(../images/co_bg_beige.jpg);
    background-size: cover;
    border-top-right-radius: 80px;
    border-bottom-right-radius: 80px;
    z-index: -1;
}
.faq__inner {
    max-width: 1220px;
    margin: 0 auto;
    padding: 75px 20px 190px;
}
.faq__container {
    position: relative;
    margin-top: 40px;
    padding: 60px;
}
.faq__container::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    z-index: -1;
    width: 120%;
    height: 100%;
    background-color: #fff;
    border-top-left-radius: 50px;
    border-bottom-left-radius: 50px;
}
.faq__item {
    border-bottom: 1px dashed #345268;
    max-width: 1100px;
}
.faq__item:last-child {
    border-bottom: none;
}
.faq__question {
    display: flex;
    align-items: flex-start;
    padding: 30px 40px 30px 25px;
    cursor: pointer;
    list-style: none;
    position: relative;
    font-family: "Inter", "Zen Kaku Gothic New";
    font-weight: 500;
}
.faq__q-icon {
    font-size: 32px;
    line-height: normal;
    font-family: "Zen Kaku Gothic New";
    font-weight: 500;
    line-height: 0.9;
}
.faq__q-txt {
    font-size: 20px;
    margin-left: 25px;
}
/* Safari用：デフォルトの矢印を消す */
.faq__question::-webkit-details-marker {
    display: none;
}
/* 矢印 */
.faq__question::after {
    content: "";
    position: absolute;
    right: 2.3%;
    top: 50%;
    margin-top: -7px;
    width: 14px;
    height: 14px;
    border-top: 2px solid #345268;
    border-right: 2px solid #345268;
    border-top-right-radius: 3px;
    transform: rotate(135deg);
    transition: transform 0.3s ease;
}
.faq__question:hover::after {
    opacity: 0.5;
}
.faq__item[open] .faq__question::after {
    transform: rotate(-45deg);
}
.faq__answer {
    padding: 0 0 45px 75px;
}
.faq__a-txt {
    font-size: 16px;
}
@media screen and (max-width: 768px) {
    .faq::before {
        border-radius: 0;
    }
    .faq__container {
        padding: 30px 10px 30px 20px;
        border-radius: 20px;
    }
    .faq__question {
        padding: 20px 30px 20px 0;
    }
    .faq__q-icon {
        font-size: 20px;
        line-height: 1.15;
    }
    .faq__q-txt {
        font-size: 16px;
        margin-left: 10px;
    }
    .faq__answer {
        padding: 0 0 22px 0;
    }
    .faq__a-txt {
        font-size: 13px;
    }
    .faq__inner {
        padding: 70px 10px 60px;
    }
}

/* ▼ JOURNAL ▼------------------------------------------ */
.journal__inner {
    max-width: 1100px;
    margin: 0 auto;
    padding: 150px 20px;
}
.journal-ttl {
    margin-bottom: 65px;
}
.journal__list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 55px;
    margin: 0 auto 45px;
}

.journal__card {
    display: block;
}
.journal__img {
    margin: 0 0 15px;
    overflow: hidden;
    border-radius: 8px;
    width: 100%;
    height: auto;
    aspect-ratio: 4 / 3;
}
.journal__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}
.journal__meta {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 16px;
}
.journal__date {
    font-size: 14px;
}
.journal__category {
    background-color: #a3c9d9;
    color: #fff;
    font-size: 14px;
    padding: 5px 24px;
    border-radius: 18px;
}
.journal__card-ttl {
    font-size: 16px;
    font-weight: 400;
}
.journal__btn-wrap {
    text-align: right;
}
@media screen and (max-width: 900px) {
    .journal__inner {
        padding-bottom: 100px;
    }
    .journal__list {
        grid-template-columns: 1fr 1fr;
        padding: 0 10px;
    }
    .journal__btn-wrap {
        text-align: center;
    }
}
@media screen and (max-width: 767px) {
    .journal__list {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    .journal__ttl-en {
        font-size: 40px;
    }
    .journal__footer {
        text-align: center;
    }
}

/* ▼ NEWS ▼------------------------------------------ */
.news__inner {
    display: grid;
    grid-template-columns: 25% 1fr;
    grid-template-areas:
        "header list"
        "button list";
    max-width: 1220px;
    margin: 0 auto;
    padding: 65px 110px 65px 107px;
    box-sizing: border-box;
    gap: 0 55px;
    align-items: flex-start;
    background-color: #e2ecf0;
    border-radius: 10px;
}
.news__header {
    grid-area: header;
}
.news__btn-wrap {
    grid-area: button;
    margin-top: 35px;
    text-align: center;
}
.news__btn a {
    background-color: #fffef9;
}
.news__list {
    grid-area: list;
    list-style: none;
    padding: 0;
    margin: 0;
}
.news__item {
    border-bottom: 1px solid #345268;
}
.news__item:nth-child(n + 3):last-child {
    border-bottom: none;
}
.news__link {
    display: flex;
    padding: 25px 0;
    text-decoration: none;
    color: #345268;
    transition: opacity 0.3s;
}
.news__link:hover {
    opacity: 0.7;
}
.news__date {
    font-size: 18px;
    font-weight: 500;
    margin-right: 30px;
    flex-shrink: 0;
}
.news__ttl {
    font-size: 18px;
    line-height: 1.6;
}
@media screen and (max-width: 1024px) {
    .news__inner {
        grid-template-columns: 1fr;
        grid-template-areas:
            "header"
            "list"
            "button";
        padding: 40px 20px 70px;
    }
    .news__header {
        margin-bottom: 30px;
    }
    .news__link {
        flex-direction: column;
        gap: 10px;
        padding: 20px 0;
    }
    .news__date {
        font-size: 14px;
    }
    .news__ttl {
        font-size: 15px;
    }
}

/* ▼ CONTACT ▼------------------------------------------ */
.contact__inner {
    margin: 0 auto;
    padding: 100px 0 110px;
}
.contact__top {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 20px;
}
.contact__lead {
    max-width: 820px;
    margin: 65px auto 50px;
}
.contact__promise-wrap {
    max-width: 100%;
    padding: 0 80px;
}
.contact__promise {
    border: 1px solid #345268;
    border-radius: 3px;
    padding: 40px;
    position: relative;
    max-width: 820px;
    margin: 0 auto 80px;
    box-sizing: border-box;
}
.contact__promise-ttl {
    margin-bottom: 20px;
    padding: 0 35px;
    text-align: center;
    color: #345268;
    font-size: 26px;
    font-weight: 500;
}
.contact__promise-ttl span {
    display: inline-block;
    text-decoration: underline 1px;
    text-decoration-color: rgba(52, 82, 104, 0.5);
    text-underline-offset: 10px;
}
.contact__promise-list {
    list-style: none;
    padding: 0;
    max-width: 630px;
    margin: 0 auto;
}
.contact__promise-list li {
    position: relative;
    padding-left: 20px;
    font-size: 20px;
    line-height: 2;
    color: #345268;
}
.contact__promise-list li::before {
    content: "・";
    position: absolute;
    left: 0;
}
.contact__promise-icon {
    position: absolute;
    right: -90px;
    top: 10%;
}

/* メインコンテナ */
.contact__main {
    position: relative;
}
.contact__main::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 92%;
    height: 100%;
    background-color: #345268;
    border-top-right-radius: 30px;
    border-bottom-right-radius: 30px;
    z-index: -1;
    padding-bottom: 110px;
}
.contact__methods {
    display: flex;
    justify-content: space-between;
    margin: 0 auto;
    max-width: 940px;
    gap: 10%;
    padding-top: 50px;
    padding-left: 18%;
    padding-right: 12%;
    margin-bottom: 50px;
    text-align: center;
}

.contact__method-label {
    color: #fff;
    font-size: 20px;
    margin-bottom: 27px;
}

.contact__btn--line a {
    display: block;
    padding: 0.9em 1.3em;
    background-color: #6ac47c;
    color: #fff;
    font-size: 24px;
}

.contact__btn--line a::after {
    border-right: 1px solid #fff;
    border-bottom: 1px solid #fff;
}
.contact__tel {
    display: block;
    color: #fff;
    font-size: 48px;
    font-family: "Lato";
}

/* FORM */
.contact__form-wrap {
    position: relative;
    padding: 65px 8% 95px 10%;
}
.contact__form-wrap::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    width: 92%;
    height: 100%;
    background-image: url(../images/co_bg_bgray.png);
    background-size: cover;
    border-top-left-radius: 30px;
    border-bottom-left-radius: 30px;
    z-index: -1;
}
.contact__form {
    max-width: 850px;
    margin: 0 auto;
}

.contact__form-ttl {
    margin-bottom: 40px;
    text-align: center;
    font-size: 22px;
    font-weight: 500;
    color: #345268;
}

.contact__form-row {
    margin-bottom: 48px;
    display: flex;
    align-items: flex-start;
}

.contact__form-label {
    display: flex;
    align-items: center;
    width: 250px;
    color: #345268;
    padding-top: 10px;
}

.contact__tag {
    margin-right: 10px;
    padding: 0 8px;
    border-radius: 2px;
    font-size: 12px;
}

.contact__tag--required {
    background-color: #f7d479;
    color: #345268;
}
.contact__tag--blue {
    background-color: #a5c8d6;
}

.wpcf7-form-control-wrap {
    flex-grow: 1;
}

.contact__form-input,
.contact__form-textarea {
    width: 100%;
    padding: 13px;
    border: 1px solid rgba(52, 82, 104, 0.5);
    border-radius: 5px;
    background-color: #fff;
    font-size: 16px;
}

.contact__form-textarea {
    height: 180px;
}

.contact__form-policy {
    text-align: center;
    margin-bottom: 60px;
}

.contact__form-btn-wrap {
    text-align: center;
}
.contact__form-btn {
    display: inline-block;
    position: relative;
}
.contact__form-btn input {
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    z-index: 10;
    margin: 0 auto;
    padding: 0.8em 1.5em;
    width: 230px;
    border: none;
    background-color: #fcdc95;
    color: #345268;
    font-size: 24px;
    font-weight: 500;
    line-height: 1.43;
    transition: 0.3s;
    border-radius: 3px;
    text-align: center;
}
.contact__form-btn::after {
    content: "";
    position: absolute;
    top: auto;
    left: auto;
    z-index: 5;
    width: 100%;
    height: 100%;
    border-right: 1px solid #345268;
    border-bottom: 1px solid #345268;
    border-bottom-right-radius: 3px;
    right: -3px;
    bottom: -3px;
}
.contact__form-btn:hover {
    transition: 0.3s;
    transform: translateY(4px);
}
span.wpcf7-spinner {
    display: none;
}

/* チェックボックス */
.contact__policy-label {
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 14px;
    color: #345268;
    position: relative;
}
.contact__policy-label input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    border: 1px solid #345268;
    border-radius: 3px;
    margin-right: 10px;
    position: relative;
    cursor: pointer;
    flex-shrink: 0;
}
.contact__policy-label .wpcf7-form-control-wrap,
.contact__policy-label .wpcf7-form-control,
.contact__policy-label .wpcf7-list-item,
.contact__policy-label .wpcf7-list-item-label,
.contact__policy-label label {
    display: contents;
}
/* チェックマーク */
.contact__policy-label input[type="checkbox"]:checked::after {
    content: "";
    position: absolute;
    left: 5px;
    top: 1px;
    width: 5px;
    height: 10px;
    border: solid #345268;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
.contact__policy-label a {
    color: #2d92dd;
    font-weight: 500;
}
.contact__policy-label--hover {
    background-image: linear-gradient(#2d92dd, #2d92dd);
    background-repeat: no-repeat;
    background-position: bottom right;
    background-size: 0 1px;
    transition: background-size 1s;
}
.contact__policy-label--hover:hover {
    background-position: bottom left;
    background-size: 100% 1px;
}

@media screen and (max-width: 990px) {
    .contact__promise-list li {
        padding-right: 45px;
    }
}

@media screen and (max-width: 768px) {
    .contact__top {
        overflow-x: hidden;
    }
    .contact__lead {
        font-size: 15px;
    }
    .contact__promise-wrap {
        padding: 0;
    }
    .contact__promise {
        padding: 30px 22px 50px;
    }
    .contact__promise-ttl {
        font-size: 24px;
    }
    .contact__promise-list li {
        padding-right: 10px;
        font-size: 16px;
    }
    .contact__promise-icon {
        top: -63px;
        right: -30px;
    }
    /* メインコンテナ */
    .contact__main::before {
        width: 100%;
    }
    .contact__methods {
        flex-direction: column;
        gap: 75px;
    }
    .contact__method-label {
        margin-bottom: 10px;
        font-size: 15px;
    }
    .contact__tel {
        font-size: 32px;
        line-height: 1;
    }

    /* FORM */
    .contact__form-wrap {
        padding-left: 8%;
    }
    .contact__form-wrap::before {
        width: 97%;
    }

    .contact__form-row {
        flex-direction: column;
        align-items: flex-start;
        margin-bottom: 25px;
    }
    .contact__form-label {
        width: 100%;
        margin-bottom: 10px;
    }
    .wpcf7-form-control-wrap {
        width: 100%;
    }
    .contact__form-input,
    .contact__form-textarea {
        box-sizing: border-box;
    }
    .contact__policy-label input[type="checkbox"] {
        width: 15px;
        height: 15px;
    }
    .contact__policy-label input[type="checkbox"]:checked::after {
        left: 4px;
        top: 0;
        width: 4px;
        height: 9px;
    }

    .contact__policy-label {
        font-size: 12px;
    }
}
/* フォーム送信メッセージ */
div.wpcf7 .wpcf7-response-output {
    display: flex;
    align-items: center;
}
/* 成功 */
div.wpcf7 form.sent .wpcf7-response-output {
    background: #ddece5;
    color: #298164;
    border: 1px solid #69b197;
    border-radius: 5px;
    padding: 10px 10px 10px 3.5%;
}
div.wpcf7 form.sent .wpcf7-response-output::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 24px;
    margin-right: 8px;
    flex-shrink: 0;
    background: url("../images/contact_form_icon_success.svg") no-repeat
        center / contain;
}
/* エラー */
div.wpcf7 form.invalid .wpcf7-response-output,
div.wpcf7 form.unaccepted .wpcf7-response-output,
div.wpcf7 form.payment-required .wpcf7-response-output {
    background: #ecddde;
    color: #b25053;
    border: 1px solid #cf8688;
    border-radius: 5px;
    padding: 10px 10px 10px 3.5%;
}
div.wpcf7 form.invalid .wpcf7-response-output::before,
div.wpcf7 form.unaccepted .wpcf7-response-output::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 24px;
    margin-right: 8px;
    flex-shrink: 0;
    background: url("../images/contact_form_icon_error.svg") no-repeat center /
        contain;
}

.contact__policy-label .wpcf7-not-valid-tip {
    position: absolute;
    top: 100%;
    left: 48px;
    margin-top: 5px;
    width: 100%;
    text-align: center;
}
@media screen and (max-width: 768px) {
    .contact__policy-label .wpcf7-not-valid-tip {
        left: 0;
    }
}
