@charset "utf-8";

:root {
    --title-font: "zen-maru-gothic", sans-serif;
    --main-font: 'Noto Sans JP', sans-serif;
    --black: #3d3732;
    --gray: #605d5b;
    --light-gray: #d6d3ce;
    --white: #fff;
    --pink: #ed828b;
    --pink-hover: #f1747e;
    --blue: #4eadce;
    --darkblue: #3091b2;
    --green: #73c989;
    --yellow: #ffeeb4;
    --orange: #f0aa4f;
}

::selection {
    background-color: #549ee4;
    color: var(--white);
}

html {
    visibility: hidden;
    transition: opacity 0.2s ease-out;
    opacity: 0;
    overflow-x: clip;
}

html.wf-active,
html.loading-delay {
    visibility: visible;
    opacity: 1;
}

body {
    font-family: var(--main-font);
    color: var(--black);
    letter-spacing: .04rem;
}

h1,
h2 {
    font-family: var(--title-font);
    font-weight: 700;
    font-style: normal;
}

p {
    font-family: var(--main-font);
    font-size: 1rem;
    line-height: 2.5rem;
}

.hovered-style {
    transition: all 0.3s ease-in-out;
}

.sp-only {
    display: none;
}

.middle-only {
    display: none;
}

a {
    color: var(--darkblue);
}

@media (max-width: 1200px) {
    .middle-only {
        display: block;
    }
}

@media (max-width: 450px) {
    .sp-only {
        display: block;
    }

    .middle-only {
        display: block;
    }

    header .header__link__box.strikethrough::after {
        transform: translate(-50%, -50%) rotate(15deg);
    }
}

/* header section footer */

.header__item {
    position: relative;
}

.header__item img {
    width: 250px;
    transition: all 0.3s ease-out;
    margin: 0 1vw;
}

.header__list__menu {
    display: flex;
    align-items: center;
    list-style: none;
    padding: 0;
}

.header__link {
    text-decoration: none;
    color: var(--black);
    font-family: var(--title-font);
    font-size: clamp(1rem, 1.7vw, 1.5rem);
    font-weight: bold;
    margin: 0 1vw;
    padding: 14px 15px 14px;
    position: relative;
}

.header__link::after {
    content: "";
    position: absolute;
    bottom: -2px;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 2px;
    background-color: var(--black);
    transition: width 0.3s ease-out;
    border-radius: 10px;
    opacity: .9;
}

.header__link:hover::after {
    width: 100%;
}

.__button {
    text-decoration: none;
    font-family: var(--title-font);
    font-size: clamp(1rem, 1.7vw, 1.6rem);
    font-weight: normal;
    color: var(--white);
    border-radius: 9rem;
    padding: 15px 36px 16px;
    transition: all 0.3s ease-out;
    transform: scale(1);
    display: inline-block;
}

.header__item img:hover,
.header__link__box.hovered-style:hover {
    transform: scale(1.1);
}

.header__link__box.__contact {
    background-color: var(--pink);
}

.header__link__box.__contact.hovered-style:hover {
    background-color: var(--pink-hover);
}

.header__link__box.__application {
    background-color: var(--blue);
    margin-left: 15px;
}

.header__link__box.__application.hovered-style:hover {
    background-color: #29a3cc;
    margin-left: 25px;
}

.header__link__box.__stop {
    pointer-events: none;
    /* マウスオーバーでクリックできなくする */
}

.header__link__box-container {
    height: 100%;
}

.popup {
    display: block;
    opacity: 0;
    /* 初期状態で透明 */
    visibility: hidden;
    /* 非表示に設定 */
    position: absolute;
    top: 100%;
    /* ボタンの真下 */
    left: 50%;
    transform: translateX(-50%) translateY(10px);
    /* 初期位置を下に少しずらす */
    background-color: #d7eafa;
    color: var(--black);
    padding: 20px 40px;
    border-radius: 20px;
    font-size: 16px;
    white-space: nowrap;
    z-index: 1000;
    transition: opacity 0.3s ease, transform 0.3s ease;
    /* アニメーション効果 */
    word-wrap: break-word;
    /* 文字がはみ出さないようにする */
}

/* 三角形の吹き出し */
.popup::before {
    content: '';
    position: absolute;
    top: -25px;
    /* ポップアップの上部に位置 */
    left: 50%;
    transform: translateX(-50%);
    border-width: 15px;
    border-style: solid;
    border-color: transparent transparent #d7eafa transparent;
    /* 上部の三角形 */
}

.popup p {
    line-height: 2rem;
}

/* PC：hover時に表示 */
.header__link__box-container:hover .popup {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(15px);
    pointer-events: auto;
}

/* スマホ: hoverを使わず、is-visibleを基に表示 */
@media (hover: none) {
    #popup-message.popup {
        opacity: 0;
        visibility: hidden;
    }

    #popup-message.popup.is-visible {
        opacity: 1;
        visibility: visible;
    }
}

.header__link__box.strikethrough::after {
    content: "";
    display: block;
    position: absolute;
    width: 90%;
    height: 2px;
    background-color: #ffffff9d;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

header {
    width: 100%;
    z-index: 10;
    padding: 20px 0;
    position: relative;
}

header::before {
    content: '';
    background: #ffffffe1;
    display: block;
    width: 100%;
    height: 50px;
    position: absolute;
    transition: height 0.3s ease-out;
    top: 58px;
}

header.m_fixed::before {
    height: 100px;
    top: 0;
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
}

header.m_fixed {
    position: fixed;
    margin: 0;
    left: 0;
    top: -8px;
    z-index: 30;
}

.header__list {
    display: flex;
    justify-content: center;
    list-style: none;
    align-items: center;
    padding: 0;
}

.header__list {
    transition: transform 0.3s ease-out;
    transform: scale(1);
}

header.m_fixed .header__list {
    border-radius: 90px;
    margin: 0;
}

header .inner {
    padding-bottom: 0;
    padding-top: 0;
    margin: 0 auto;
    max-width: 100%;
    padding: 80px 0;
    width: 768px;
}

.header__link__box.__contact {
    margin-left: 25px;
}

header.m_fixed .header__list {
    transform: scale(.9);
    border-radius: 90px;
    margin: 0;
}

@media (max-width: 1200px) {

    /* ham */
    .ham {
        height: 100%;
        cursor: pointer;
        width: 18.72vw;
        background-color: var(--pink);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        transition: all 0.25s;
    }

    .ham:hover {
        background-color: var(--pink-hover);
    }

    .ham span {
        display: block;
        background: #fff;
        width: 35px;
        height: 2px;
        border-radius: 3px;
        transition: margin 0.25s 0.25s, 0.25s transform;
    }

    .ham .bar1 {
        margin-bottom: 8px;
    }

    .ham .bar3 {
        margin-top: 8px;
    }

    .ham.active span {
        transition: 0.25s margin, 0.25s transform 0.25s;
    }

    .ham.active .bar1 {
        margin-top: 4px;
        margin-bottom: 1px;
        transform: rotate(45deg);
    }

    .ham.active .bar2 {
        transform: rotate(45deg);
        margin: -3px 0 0 0;
    }

    .ham.active .bar3 {
        margin-top: -2px;
        transform: rotate(135deg);
    }

    header {
        padding: 0;
    }

    header::before {
        display: none;
    }

    header.m_fixed .header__list {
        transform: scale(1);
        border-top: solid 1px var(--white);
        border-radius: 0;
    }

    .header__item {
        height: 100%;
    }

    .header__list {
        margin: 0;
        align-items: flex-end;
        height: calc(60rem / 16);
        border-top: solid 1px var(--white);
    }

    .header__link,
    .header__link__box {
        font-size: clamp(1rem, 2.6vw, 1.5rem);
    }

    .header__item.ham-menu {
        opacity: 0;
        transition: opacity 200ms ease-out;
        position: fixed;
        width: 100vw;
        height: 100vh;
        display: flex;
        justify-content: center;
        align-items: center;
        pointer-events: none;
    }

    .header__item.ham-menu .header__item {
        display: none;
    }

    .header__item.ham-menu.active {
        pointer-events: all;
        background-color: #fcf6e8f5;
        -webkit-backdrop-filter: blur(5px);
        backdrop-filter: blur(5px);
        justify-content: center;
        opacity: 1;
    }

    .header__item.ham-menu.active .header__item {
        display: block;
    }

    .header__list__menu {
        flex-direction: column;
        align-items: center;
        height: 50vh;
    }

    .header__link__box.__application {
        margin: 0;
        width: 46.77vw;
    }

    .header__nav {
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
    }

    .header__link__box.__contact {
        margin: 0;
        width: 34.51vw;
        background-color: var(--green);
    }

    .header__link__box.hovered-style:hover {
        transform: scale(1);
    }

    .header__item .__button {
        border-radius: 0;
        height: 100%;
        padding: 15px 0 16px;
        display: flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        line-height: 1.4rem;
    }

    .header__link__box.__application.hovered-style:hover {
        margin: 0;
    }

    .header__link__box.__contact.hovered-style:hover {
        background-color: #4bcd6c;
    }

    .popup {
        width: 90vw;
        top: auto;
        bottom: 0;
        /* 必要な位置に調整 */
        left: 5vw;
        /* 親要素の50%の位置に配置 */
        transform: translateX(0%);
        /* 要素の幅の半分を引いて中央に配置 */
        white-space: normal;
        /* テキストを折り返す */
    }

    /* 三角形の吹き出し */
    .popup::before {
        top: 100%;
        left: 25%;
        border-color: #d7eafa transparent transparent transparent;
        /* 下部の三角形 */
    }

    .header__link__box-container:hover .popup {
        transform: translateX(0%) translateY(-100px);
        /* 元の位置に戻す */
    }

}

@media (max-width: 400px) {
    .header__link__box.__application {
        width: 42.77vw;
    }

    .header__link__box.__contact {
        width: 38.51vw;
    }
}

.section__title {
    font-size: 2.5rem;
    text-align: center;
    margin: 30px 0 70px;
}

.section__subtitle {
    font-size: 1.5rem;
    color: var(--light-gray);
    display: block;
    padding: 25px 0;
    text-align: center;
    margin: 0;
    padding: 0;
}

@media (max-width: 400px) {
    .section__title {
        font-size: 1.5rem;
        line-height: 2.5rem;
    }
}

#footer {
    position: relative;
    width: 1000px;
    margin: auto;
}

#footer::before {
    content: '';
    display: block;
    width: 340px;
    height: 300px;
    background-image: url('../images/common/watercolor_red.png'), url('../images/common/watercolor_yellow.png');
    background-size: 290px, 130px;
    background-position: top left, bottom right;
    background-repeat: no-repeat;
    position: absolute;
    top: -240px;
    left: -110px;
    z-index: -1;
    opacity: .8;
}

#footer::after {
    content: '';
    display: block;
    width: 400px;
    height: 580px;
    background-image: url('../images/common/watercolor_blue.png'), url('../images/common/watercolor_green.png');
    background-size: 400px, 250px;
    background-position: top right, bottom left;
    background-repeat: no-repeat;
    position: absolute;
    top: -330px;
    right: -120px;
    z-index: -1;
    opacity: .8;
}

.footer__wrap {
    display: flex;
    width: 1000px;
    justify-content: space-between;
    margin: auto;
    align-items: flex-start;
}

.footer__logo {
    display: block;
    max-width: 127px;
    width: 15vw;
    margin: 100px auto;
    transition: all 0.3s ease-out;
    transform: scale(1);
}

.footer__logo:hover {
    transform: scale(1.03);
}

#footer .contact__txt {
    margin: 0;
    padding: 0;
    display: flex;
}

.contact__txt__content__ul {
    padding: 0 20px;
}

.contact__txt__content__ul li {
    list-style-type: disc;
    line-height: 1.8rem;
}

#footer .contact__tel {
    margin: 30px 0 0;
}

#footer .contact__txt.__time {
    margin: 30px 0 0;
}

#footer .footer__pdf.__button {
    position: relative;
    left: -10px;
    padding: 15px 20px 16px;
}

#footer .footer__pdf.__button:hover {
    background-color: #4bcd6c;
    transform: scale(1.05);
}

#footer .contact__txt__title {
    display: inline-block;
    width: 100px;
}

.footer__sns__list {
    display: flex;
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer__sns__list__item {
    margin: 0 20px 15px 0;
    transition: all .3s ease-out;
    width: fit-content;
}

.footer__sns__list__item:hover {
    transform: scale(1.15);
}

.footer__sns__list__item img {
    width: 50px;
    margin-right: 15px;
}

.footer__sns__list__item a {
    color: var(--black);
    text-decoration: none;
    display: flex;
    align-items: center;
}

.footer__copyright {
    text-align: center;
    margin: 40px 0 30px;
    color: #b2aba4;
}

.contact__mail {
    background-color: var(--pink);
    display: flex;
    align-items: center;
    justify-content: space-evenly;
}

.footer__pdf {
    background-color: var(--green);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 15px 0 16px;
}

.contact__mail::before {
    content: "";
    display: block;
    width: 2.1rem;
    height: 1.6rem;
    background-image: url('../images/common/icon_mail.svg');
    background-repeat: no-repeat;
    background-position: center;
    margin: 0 .6rem 0 0;
}

.footer__pdf::before {
    content: "";
    display: block;
    width: 2.1rem;
    height: 1.6rem;
    background-image: url('../images/common/icon_pdf.svg');
    background-repeat: no-repeat;
    background-position: center;
    margin: 0 .6rem 0 0;
}

.contact__tel {
    font-size: 3rem;
    font-family: var(--title-font);
    color: var(--black);
    text-decoration: none;
    letter-spacing: .3rem;
    display: flex;
    align-items: center;
    margin: 2rem 0;
}

.contact__tel::before {
    content: "";
    display: block;
    width: 3rem;
    height: 3rem;
    background-image: url('../images/common/icon_tel.svg');
    position: relative;
    top: 7px;
    margin: 0 1rem 0 0;
    background-repeat: no-repeat;
    background-position: center;
}

.contact__txt__content {
    list-style: none;
}

@media (max-width: 1200px) {
    #footer {
        width: 100%;
    }

    #footer::before {
        width: 30vw;
        height: 30vw;
        background-size: 25vw, 15vw;
        top: -25vw;
        left: -3vw;
    }

    #footer::after {
        width: 32vw;
        height: 36vw;
        background-size: 30vw, 15vw;
        top: -25vw;
        right: -10vw;
    }

    .footer__wrap {
        width: 80%;
        flex-direction: column;
    }

    .footer__sns__list {
        margin: 30px 0 0;
    }

    .footer__copyright {
        margin: 40px 0 100px;
    }

    #footer .footer__pdf.__button {
        font-size: clamp(1.1rem, 4vw, 1.5rem);
    }

    #footer .contact__tel {
        font-size: clamp(1rem, 8vw, 3rem);
    }
}

@media (max-width: 400px) {
    .footer__logo {
        width: 25vw;
    }

    .footer__sns__list {
        flex-wrap: wrap;
        margin: 30px 0 0;
    }

    .footer__sns__list__item {
        margin-bottom: 10px;
    }

    .contact__mail::before {
        margin: 0 .3rem 0 0;
        width: 1.5rem;
    }

    #footer .contact__tel {
        font-size: clamp(0.3rem, 7.8vw, 3rem);
        align-items: baseline;
    }

    .contact__tel::before {
        width: 1.5rem;
        height: 1.5rem;
        margin: 0 10px 0 0;
    }

    #footer .contact__txt {
        line-height: 1.7rem;
        margin-top: 20px;
        flex-direction: column;
    }

    #footer .contact__txt__title {
        border-bottom: solid 1px #d4d4d4;
        display: block;
        padding: 10px 0;
        width: 100%;
    }

    #footer .contact__txt__content {
        padding: 10px 0;
    }
}