/*
@media only screen and (max-width: 768px){}
↑スマホ画面の場合のみ適用（横幅が768px以下の場合にCSSを適用）
*/
@charset "UTF-8";
/*Noto Sans JPと源ノ角ゴシック／Source Han Sansは同一フォントです*/
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100..900&display=swap');

* {
    box-sizing: border-box;
}

/*なんかスクロールが滑らかになるやつ*/
html {
    scroll-behavior: smooth;
}

:root {
    --blue: #00479d;
    --green: #c7db5e;
    --gray: #dedee3;
}

body {
    font-family: "Noto Sans JP", sans-serif;
    font-optical-sizing: auto;
    font-weight: normal;
    font-style: normal;
    color: var(--blue);
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: bold;
}

.nor {
    font-family: normalidad-extended, sans-serif;
    font-weight: 900;
    font-style: normal;
}

.center__txt {
    text-align: center;
}

.bold {
    font-weight: bold;
}

@media only screen and (min-width: 769px) {
    .LS-l {
        letter-spacing: 0.9375vw;
    }

    .LS-m {
        letter-spacing: 0.585vw;
    }
}

@media only screen and (max-width: 768px) {
    .LS-l {
        letter-spacing: 1.25vw;
    }

    .LS-m {
        letter-spacing: 1vw;
    }
}


@media only screen and (min-width: 769px) {
    h1 {
        font-size: 8vw;
    }

    h2 {
        font-size: 3.75vw;
    }

    h3 {
        font-size: 2.34vw;
    }

    p {
        font-size: 1.29vw;
    }
}

@media only screen and (max-width: 768px) {
    h1 {
        font-size: 10vw;
    }

    h2 {
        font-size: 5vw;
    }

    h3 {
        font-size: 4vw;
    }

    p {
        font-size: 3vw;
    }
}


/*ヘッダ*/
@media only screen and (min-width: 769px) {
    .header {
        position: fixed;
        left: 0;
        right: 0;
        margin: auto;
        top: 4vw;

        /* 最小幅（マップと合わせる） */
        width: 80%;
        /* min-width: 952px; */

        height: 5vw;
        border-radius: 9999px;
        display: flex;
        align-items: center;
        justify-content: center;
        background: var(--blue);
        box-shadow: 0px 0.5vw 6px #00000040;
        z-index: 4;
        transition: transform 0.3s 0.3s;
    }

    header.hidden {
        transform: translateY(calc(-6vw - 5vw));
    }

    #menu-toggle,
    .menu-icon,
    .overlay {
        display: none;
    }

    .menu {
        width: 100%;
        height: 100%;
    }

    .menu__container {
        position: relative;
        height: 100%;
        width: 100%;
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .menu-logo__wrapper {
        width: 100%;
        height: 100%;
        display: flex;
    }

    .menu-logo {
        width: auto;
        height: 100%;
        aspect-ratio: 2004/567;
        margin-left: 2vw;
        background-size: contain;
        background-image: url(../img/header/header-common/header-logo.png);
        background-repeat: no-repeat;
        background-position: left;
    }

    .menu-list__box {
        margin-right: 2vw;
        list-style: none;
        display: flex;
    }
}

@media only screen and (max-width: 768px) {
    body:has(#menu-toggle:checked) {
        overflow: hidden;
    }

    .header {
        position: relative;
    }

    .menu-icon {
        display: block;
        width: 15vw;
        aspect-ratio: 1;
        background-color: var(--blue);
        border-radius: 100%;
        position: fixed;
        top: 4vw;
        right: 4vw;
        cursor: pointer;
        z-index: 6;
        display: inline-block;
    }

    .menu-icon span {
        display: block;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        height: 0.6vw;
        width: 8vw;
        background: #fff;
        /* トランジションを明示（中央線の変化を滑らかに） */
        transition: background 0.25s ease, transform 0.25s ease;
        transform-origin: center;
        will-change: transform, background;
        backface-visibility: hidden;
    }

    .menu-icon span::before,
    .menu-icon span::after {
        content: "";
        display: block;
        position: absolute;
        left: 0;
        width: 8vw;
        height: 0.6vw;
        background: #fff;
        /* 疑似要素に個別のトランジション（transform を使う） */
        transition: transform 0.35s cubic-bezier(0.22, 0.61, 0.36, 1), background 0.25s ease;
        transform-origin: center;
        will-change: transform, background;
        backface-visibility: hidden;
    }

    .menu-icon span::before {
        top: -2vw;
    }

    .menu-icon span::after {
        bottom: -2vw;
    }

    #menu-toggle:checked+.menu-icon {
        background: transparent;
    }

    /* チェック時の状態：中央線は透明に、上下は回転してクロスさせる */
    #menu-toggle:checked+.menu-icon span {
        background: transparent;
        transform: translate(-50%, -50%) scaleX(0.95);
        /* 微妙に縮めて視覚のバランスを取る */
    }

    #menu-toggle:checked+.menu-icon span::before {
        transform: translateY(2vw) rotate(45deg) translateZ(0);
    }

    #menu-toggle:checked+.menu-icon span::after {
        transform: translateY(-2vw) rotate(-45deg) translateZ(0);
    }

    .overlay {
        position: fixed;
        inset: 0;
        background: rgba(0, 0, 0, 0.5);
        opacity: 0;
        pointer-events: none;
        transition: 0.4s;
        z-index: 1;
    }

    #menu-toggle:checked~.overlay {
        opacity: 1;
        pointer-events: auto;
    }

    .menu {
        position: fixed;
        right: -100%;
        width: 100%;
        height: 100%;
        background-image: url(../img/header/header-sp/hamburger-bg.png);
        background-size: cover;
        background-repeat: no-repeat;
        background-position: right bottom;
        box-shadow: 2px 0 8px rgba(0, 0, 0, 0.2);
        transition: right 0.4s ease;
        z-index: 4;
    }

    .menu__container {
        height: 100%;
        width: 100%;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: start;
    }

    .menu-logo__wrapper {
        position: absolute;
        margin-top: 4vw;
        width: 100%;
        height: 15vw;
        display: flex;
    }

    .menu-logo {
        margin-left: 4vw;
        width: 50vw;
        height: auto;
        aspect-ratio: 1809/282;
        background-image: url(../img/header/header-common/header-logo.png);
        background-size: contain;
        background-repeat: no-repeat;
        background-position: left;
    }

    #menu-toggle:checked~.menu {
        right: 0;
    }

    .menu-list__container {
        margin-top: 25vw;
        width: 100%;
        height: calc(100% - 25vw);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        list-style: none;
    }

    .menu-list__box {
        width: 100%;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        margin: auto;
        align-items: center;
        list-style: none;
        overflow-y: auto;
    }

    .menu-list__item:not(:first-child) {
        margin-top: 8vw;
    }

    .menu__link {
        text-decoration: none;
        font-size: 7.5333333333vw;
        transition: color 0.3s;
    }

    .menu__link:hover {
        opacity: 0.8;
    }

    .menu-container {
        position: relative;
        height: 100%;
        width: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
    }
}

.menu-list__item {
    margin: 0 2vw;
    width: fit-content;
    text-align: center;
}

.menu__link {
    position: relative;
    display: block;
    text-decoration: none;
    color: #fff;
}

@media only screen and (min-width: 769px) {
    .menu__link {
        font-size: 1.5vw;
    }
}



/*
フッタフッタフッタフッタフッタフッタフッタフッタ
フッタフッタフッタフッタフッタフッタフッタフッタ
フッタフッタフッタフッタフッタフッタフッタフッタ
*/
footer {
    /* margin-top: -60px; */
    position: relative;
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    overflow: hidden;
    border-radius: 60px 60px 0 0;
}

@media only screen and (min-width: 769px) {
    footer {
        padding: 4vw;
        background-image: url(../img/footer/footer-pc/footer-pc.png);
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center;

        /* 最小幅（マップと合わせる） */
        width: 100vw;
        margin-right: 0;
    }
}

@media only screen and (max-width: 768px) {
    footer {
        padding: 8vw;
        background-image: url(../img/footer/footer-sp/footer-sp.png);
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center;
    }
}

.footer-nav__list {
    display: flex;
    box-sizing: border-box;
    list-style: none;
}

.footer-nav__logo-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
}

.footer-nav__logo {
    display: flex;
    width: 100%;
    height: 100%;
    background-image: url(../img/footer/footer-common/footer-logo.png);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

.footer-nav__list {
    box-sizing: border-box;
}

.footer-nav__item {
    box-sizing: border-box;
}

@media only screen and (min-width: 769px) {
    .footer-nav {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-template-rows: 1fr 1fr 1fr;
    }

    .footer-nav__tl {
        display: flex;
        align-items: center;
        justify-content: start;
        width: 100%;
        grid-column: 1/2;
        grid-row: 1/3;
    }

    .footer-nav__logo-wrapper {
        width: 100%;
        height: 100%;
    }

    .footer-nav__br {
        display: flex;
        align-items: center;
        justify-content: end;
        width: 100%;
        box-sizing: border-box;
        grid-column: 2/3;
        grid-row: 2/4;
    }

    .footer-nav__list-wrapper {
        width: 100%;

    }

    .link-box {
        width: 100%;
        box-sizing: border-box;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .footer-nav__page,
    .footer-nav__related {
        width: 100%;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        justify-content: end;
    }

    .footer__line {
        display: none;
    }
}



@media only screen and (max-width: 768px) {
    .footer-nav__tl {
        width: 100%;
        height: auto;
        aspect-ratio: 1809/282;
        padding: 2vw;
        margin-bottom: 4vw;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .footer-nav__logo-wrapper {
        width: 100%;
        height: 100%;
    }

    .footer-nav__br {
        width: 100%;
        box-sizing: border-box;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .footer-nav__page {
        display: flex;
        flex-direction: column;
    }

    .footer-nav__list-wrapper {
        width: 100%;
        box-sizing: border-box;
    }

    .footer-nav__list {
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .footer-nav__list {
        flex-wrap: wrap;
    }
}

.footer-nav__link {
    text-decoration: none;
    font-size: 13px;
    color: #fff;
    margin: 1vw 2vw;
    display: flex;
    justify-content: center;
}

.footer__sns-x,
.footer__sns-ins {
    position: static;
    transform: none;
    width: 13px;
    height: auto;
    aspect-ratio: 1;
    background-repeat: no-repeat;
    background-size: contain;
}

.footer__sns-x {
    background-image: url(../img/footer/footer-common/x.webp);
}

.footer__sns-ins {
    background-image: url(../img/footer/footer-common/instagram.webp);
}