/* variables
----------------------- */

:root {
    --color-main: #2d87d6;
    --color-sub: #f3f3f3;
    --color-accent: #fd7d21;
    --color-accent-hover: #e06f1a;
    --color-light-blue: #EEF6FE;
    --color-nav-bg: #f0f0f0;
    --color-white: #FFFFFF;
    --color-black: #1d1d1d;
    --tag-yellow: #FFF6AD;
    --tag-pink: #FFC8CC;
    --tag-green: #B9FFC4;
    --tag-blue: #c0dfff;
    --tag-purple: #C4C5FF;
    --font-jp: 'BIZ UDGothic', sans-serif;
    --font-en: 'Roboto', sans-serif;
}


/* base settings
----------------------- */
/* 
    rem設定
    PC / 1440px以上 / 10px固定
    small PC Tablet / 1440〜768px / vw連動
    SP / 767〜375px / 10px固定
    SP / 375px以下 / vw連動
*/
html {
    /* エラーメッセージが出ないためスムーススクロールはJSで */
    /* scroll-behavior: smooth; */
    color: var(--color-black);
    font-size: 10px;
}

@media screen and (max-width: 1440px) {
    html {
        font-size: calc(10 / 1440 * 100vw);
    }
}

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

@media screen and (max-width: 375px) {
    html {
        font-size: calc(10 / 375 * 100vw);
    }
}


body {
    overflow-x: clip;
    background: var(--color-white);
    /* letter-spacing: .05em; */
    /* 15px */
    font-weight: 400;
    font-size: 1.6rem;
    font-family: var(--font-jp);
    line-height: 1.8;
}

img {
    vertical-align: middle;
}

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

@media screen and (min-width: 768px) {
    a[href^='tel:'] {
        pointer-events: none;
    }
}

::placeholder {
    color: #b5b5b5;
}

/* buttonに関するスタイル共通 */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 2rem;
    padding: 2.6rem 2.9rem 2.5rem 3rem;
    min-height: 8.1rem;
    border: 2px solid #f39800;
    border-radius: 4.05rem;
    background-color: var(--color-accent);
    color: var(--color-white);
    text-decoration: none;
    font-weight: 700;
    font-size: 3rem;
    line-height: 1;
    z-index: 1000;
}

.button-arrow {
    position: relative;
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--color-white);
    overflow: hidden;
}

.cta-button--center {
    text-align: center;
}

.button-arrow::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1.1rem;
    height: 1.257rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 12'%3E%3Cpath fill='%23FD7D21' d='M0 0l10 6-10 6z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
    transform: translate(-50%, -50%);
}



@media (hover: hover) and (pointer: fine) {

    /* PCのみホバー */
    .hoverable {
        transition: transform .3s ease-out;
    }

    .hoverable:hover {
        transform: scale(0.9, 0.9);
    }
}

@media (hover: hover) and (pointer: fine) {

    .disabled {
        opacity: .5;
        pointer-events: none;
    }
}

/* SPのみ */
@media screen and (max-width: 767px) {

    .button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: .5rem;
        padding: 1.7rem 2.2rem;
        min-height: auto;
        border: 2px solid #f39800;
        border-radius: 4.05rem;
        background-color: var(--color-accent);
        color: var(--color-white);
        text-decoration: none;
        font-weight: 700;
        line-height: 1;
        z-index: 1000;
        font-size: 1.6rem;
    }

    .button-arrow {
        position: relative;
        flex-shrink: 0;
        width: 1.8rem;
        height: 1.8rem;
        border-radius: 50%;
        background: var(--color-white);
    }

    .button-arrow::before {
        content: '';
        position: absolute;
        top: 50%;
        left: 53%;
        width: .6rem;
        height: .8rem;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 12'%3E%3Cpath fill='%23FD7D21' d='M0 0l10 6-10 6z'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
        background-size: contain;
        transform: translate(-50%, -50%);
    }
}


/* color
----------------------- */

.bg-white {
    background-color: var(--color-white);
}

.bg-main {
    background-color: var(--color-main);
}

.bg-sub {
    background-color: var(--color-sub);
}

.bg-light-blue {
    background-color: var(--color-light-blue);
}

.cover-bg {
    background-position: center center;
    background-size: cover;
    background-repeat: no-repeat;
}

.no-wrap {
    white-space: nowrap;
}

.underline {
    text-decoration: underline;
    text-underline-offset: .2em;
}


/* text
----------------------- */
.text-left {
    text-align: left !important;
}

.text-center {
    text-align: center !important;
}

.text-right {
    text-align: right !important;
}

.text-small {
    font-size: 90%;
}

@media screen and (max-width: 767px) {
    .text-sm-left {
        text-align: left !important;
    }

    .text-sm-left {
        text-align: left !important;
    }

    .text-sm-left {
        text-align: left !important;
    }
}

.text-white {
    color: var(--color-white) !important;
}

.text-black {
    color: var(--color-black) !important;
}

.text-blue {
    color: var(--color-main);
    font-weight: 700;
}

.text-indent {
    padding-left: 1em;
    text-indent: -1em;
}

.text-bold {
    font-weight: 700;
}





/* display
----------------------- */

.d-none {
    display: none !important;
}

.d-inline-block {
    display: inline-block !important;
}

.d-inline {
    display: inline !important;
}

.d-block {
    display: block !important;
}

.d-flex {
    display: flex !important;
}

@media screen and (max-width: 767px) {
    .d-sm-none {
        display: none !important;
    }

    .d-sm-inline-block {
        display: inline-block !important;
    }

    .d-sm-block {
        display: block !important;
    }

    .d-sm-flex {
        display: flex !important;
    }
}

@media screen and (min-width: 768px) {
    .d-md-none {
        display: none !important;
    }

    .d-md-inline-block {
        display: inline-block !important;
    }

    .d-md-inline {
        display: inline !important;
    }

    .d-md-block {
        display: block !important;
    }

    .d-md-flex {
        display: flex !important;
    }
}




/* container
----------------------- */

/* .container-fluid {
    overflow-x: clip;

    padding-inline: 5vw;
    margin-inline: auto;
} */

.container-sm,
.container-md,
.container-lg {
    width: 100%;
    margin-inline: auto;
}

.container-sm {
    max-width: 100rem;
}

.container-md {
    max-width: 112rem;
}

.container-lg {
    max-width: 124rem;
}

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

    .container-sm,
    .container-md,
    .container-lg {
        padding-inline: 2rem;
    }
}


/* layout
----------------------- */

.page-section {
    position: relative;
    padding-top: 8rem;
    padding-bottom: 12rem;
}

@media screen and (max-width: 767px) {
    .page-section {
        padding: 5rem 0;
    }
}


/* typography
----------------------- */
.section-title {
    padding-bottom: 6rem;
    color: var(--color-main);
    font-weight: 700;
    font-size: 3.6rem;
    font-family: var(--font-jp);
    line-height: 1.5;
}

.section-title--white {
    color: var(--color-white);
}

@media screen and (max-width: 767px) {
    .section-title {
        font-size: 3rem;
        line-height: 1.5;
        font-weight: 700;
        padding-bottom: 4rem;

    }
}




/* animation
----------------------- */

.js-animation.animation--fadein.is-show {
    opacity: 1;
    transform: translateY(0);
}

.js-animation.animation--fadein {
    opacity: 0;
    transition: opacity .8s ease-out, transform .6s ease-out;
    transform: translateY(20px);
}

.js-animation.animation--slidein.is-show>* {
    clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0 100%);
    opacity: 1;
}

.js-animation.animation--slidein>* {
    position: relative;
    clip-path: polygon(0% 0%, 1% 0%, 0% 100%, 1% 100%);
    opacity: 0;
    transition: clip-path .8s cubic-bezier(.5, 1, .89, 1);
}



/* セクションの区切りのあしらい */
.section-divider {
    height: 4rem;
    background-image: url('../images/common/section-line.svg');
    background-position: center top;
    background-size: 144rem 3.6rem;
    background-repeat: repeat-x;
}

@media screen and (max-width: 767px) {
    .section-divider {
        height: auto;
        aspect-ratio: 1440 / 36;
        background-repeat: no-repeat;
        background-size: 100% auto;
        background-position: center top;
    }
}