@charset "UTF-8";

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    text-decoration: none;
    font-weight: normal;
    font-family: "Zen Kurenaido", sans-serif;
}

:root {
    --white: #FFFFFF;
    --another: #FFFFFF26;
    --green: #68CE81;
    --red: #FF6565;
}


@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

html {
    scroll-behavior: smooth;
}


body {
    background: linear-gradient(to right bottom, #71DD8C, var(--red))no-repeat;
    padding-top: 100px;
    animation: fadeIn 1.5s ease-out forwards;
}

header {
    height: 100px;
    background-color: var(--another);
    display: flex;
    justify-content: center;
    width: 100%;
    position: fixed;
    top: 0;
    z-index: 999;
}

#header_wrap {
    width: 1080px;
    display: flex;
    justify-content: space-between;
}

/* -------------------------------------------------
   トップへ戻るボタン
   -------------------------------------------------
*/
#scroll {
    position: fixed;
    right: 5%;
    bottom: 20px;
    z-index: 100;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease-in-out;
}

#scroll.is-show {
    opacity: 1;
    pointer-events: auto;
}

/* -------------------------------------------------
   フッター（PC用デフォルト設定）
   -------------------------------------------------
*/
footer {
    background-color: var(--another);
    height: 400px;
    position: relative; /* 地図の配置基準 */
}

h5 {
    margin-right: auto;
    margin: 0 0 15px 180px;
    padding-top: 150px;
}

footer a {
    color: var(--white);
    font-size: 20px;
    text-decoration: underline;
    text-decoration-color: var(--white);
    margin-left: 330px;
    display: block;
    width: fit-content;
}

footer p {
    color: var(--white);
    font-size: 16px;
    margin-top: 15px;
    margin-left: 210px;
    line-height: 1.5;
}

/* フッター内の地図（PC用） */
/* IDが #map または #map-footer のどちらでも効くように指定 */
footer #map, 
footer #map-footer {
    position: absolute;
    top: 7%;
    right: 10%;
    width: 600px;
    height: 350px;
}

footer #map iframe,
footer #map-footer iframe {
    width: 100%;
    height: 100%;
    border: 0;
}


/* -------------------------------------------------
   ロゴアニメーション
   -------------------------------------------------
*/
h1 {
    padding: 23px 0 26px;
    z-index: 100;
}

@keyframes logoSway {
    0% { transform: rotate(0deg); }
    10% { transform: rotate(5deg); }
    20% { transform: rotate(-5deg); }
    30% { transform: rotate(5deg); }
    40% { transform: rotate(0deg); }
    100% { transform: rotate(0deg); }
}

header h1 img {
    animation: logoSway 4s ease-in-out infinite;
    transform-origin: center center;
    will-change: transform;
}

/* -------------------------------------------------
   ナビゲーション
   -------------------------------------------------
*/
ul {
    display: flex;
    gap: 55px;
    line-height: 100px;
    margin-left: auto;

    li {
        color: var(--white);
        font-size: 20px;

        a {
            position: relative;
        }

        a::after {
            content: "";
            position: absolute;
            display: block;
            left: 0;
            bottom: -3px;
            width: 100%;
            height: 2px;
            background-color: #FFFFFF;
            transform: scaleX(0);
            transform-origin: center;
            transition: transform 0.4s ease-in-out;
        }

        a:hover::after {
            transform: scaleX(1);
        }
    }
}

/* その他パーツ類 */
.p_title {
    text-align: center;
    margin: 50px 0 50px;
    color: var(--white);

    &::before {
        content: url(../img/stage_kazari_01.png);
        vertical-align: middle;
        margin-right: 1em;
    }

    &::after {
        content: url(../img/stage_kazari_01.png);
        vertical-align: middle;
        margin-left: 1em;
    }
}

/* メインコンテンツエリアの装飾等 */
.frame {
    display: flex;
    justify-content: center;
    position: relative;
}

#sen1 p, #sen2 p, #sen3 p {
    color: var(--white);
    font-size: 32px;
    position: absolute;
    top: 14%;
    right: 49%;
}

#katati1, #katati2, #katati3 {
    width: 564px;
    height: 376px;
    background-color: var(--white);
    position: absolute;
    top: 22%;
    right: 31%;
}

#sen4 {
    position: fixed;
    top: 80%;
    right: 5%;
    z-index: 100;
}

#circle1 {
    width: 564px;
    height: 564px;
    background: linear-gradient(#8AFAA6, #FF6666);
    border-radius: 50%;
    filter: blur(20px);
    opacity: 0.8;
    position: absolute;
    right: 0;
    top: -350px;
}


/* =================================================
   レスポンシブ対応（MAPページ版）
   ================================================= */

img {
    max-width: 100%;
    height: auto;
}

/* -------------------------------------------------
   【iPad・タブレット】
   画面幅 1100px 以下
   ------------------------------------------------- */
@media screen and (max-width: 1100px) {
    body, html {
        overflow-x: hidden;
        width: 100%;
    }

    /* 固定幅を解除して画面幅に合わせる */
    #header_wrap,
    .centering,
    footer {
        width: 100% !important;
        padding-left: 5%;
        padding-right: 5%;
        box-sizing: border-box;
    }
    
    .centering {
        margin: 0 auto;
    }

    /* Footer調整 */
    footer {
        height: auto;
        padding-bottom: 50px;
    }
    
    footer #map, footer #map-footer {
        width: 40%;
        right: 5%;
        /* 高さは維持 */
    }
}

/* -------------------------------------------------
   【iPhone・スマホ】
   画面幅 768px 以下
   ------------------------------------------------- */
@media screen and (max-width: 768px) {

    /* --- ヘッダー --- */
    header {
        height: auto !important;
        padding-bottom: 10px;
        position: relative;
    }

    body { padding-top: 0 !important; }

    #header_wrap {
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    h1 { padding: 10px 0; }
    h1 img { max-width: 200px; }

    /* メニュー：トップページと同じスタイル */
    ul {
        width: 100%;
        flex-wrap: wrap;       
        justify-content: center;
        gap: 15px;             
        line-height: 2;
        margin: 0;
    }

    ul li {
        font-size: 14px;
    }


    /* --- フッター修正版（MAPページ用） --- */
    
    footer {
        height: auto !important;
        display: flex;
        flex-direction: column;  /* 縦積みに */
        align-items: center;     /* 中央揃え */
        justify-content: flex-start;
        padding-bottom: 50px;
    }

    /* テキスト要素の強制リセット */
    h5 {
        margin: 0 !important;
        padding: 50px 0 20px 0;
        text-align: center;
        width: 100%;
    }
    
    footer a {
        margin: 0 0 20px 0 !important;
        text-align: center;
        width: 100%;
        display: block;
    }
    
    footer p {
        margin: 0 0 30px 0 !important;
        text-align: center;
        width: 100%;
        padding: 0 10px;
    }

    /* 地図エリアの配置をリセット（サイズを縮小） */
    footer #map, 
    footer #map-footer {
        position: static !important; /* 絶対配置を解除 */
        width: 80%;      /* 幅を80%に縮小 */
        height: 200px;   /* 高さを200pxに縮小 */
        margin: 0 auto;  /* 中央配置 */
        top: auto;
        right: auto;
    }
    
    footer #map iframe,
    footer #map-footer iframe {
        width: 100% !important;
        height: 100% !important;
    }
}