@charset "utf-8";
/* ============================================================
   responsive.css ─ JSVES サイト レスポンシブ対応
   Phase 3 で追加。既存 CSS には触れず、メディアクエリで上書きする方式。
   ブレークポイント: 940px (タブレット境界) / 768px (タブレット) / 480px (モバイル)
   ============================================================ */

/* ====== 共通: 画像のフルード化 ====== */
img {
    max-width: 100%;
    height: auto;
}

iframe {
    max-width: 100%;
}

/* ====== グローバルナビ: 全幅で flex レイアウト ─────────────────
   元設計: 5 ボタン × 180px = 900px が #contents-area (900px) にギリ収まる
   問題: サブピクセル/scrollbar/margin で 1px でも超えると最後のボタンが折り返す
   解決: flex で 5 等分割 → 各ボタンが (親幅 / 5) になり必ず収まる
        画像は max-width: 100% で li の幅に合わせて縮小 */
#global-nav-area ul {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}
#global-nav-area ul li {
    float: none !important;  /* layout.css の float:left を打ち消す */
    flex: 1 1 0;             /* 5 個で均等分割 → 各ボタンが親の 1/5 */
    min-width: 0;            /* flex item の min-content 制約を解除 */
    text-align: center;
    margin: 0;
    padding: 0;
}
#global-nav-area ul li a {
    display: block;
    line-height: 0;          /* img の下に余分な空白を作らない */
}
#global-nav-area ul li img {
    display: block;
    width: 100%;             /* 親 li の幅に追従 */
    max-width: 180px;        /* 元のボタンサイズを超えない */
    height: auto;
    margin: 0 auto;
}

/* ====== 共通: 背景のフォールバック ─ 引き伸ばしを防ぎ白で安定 ────
   body_bg2.gif は元々デスクトップ用の縦 424px グラデーション装飾。
   レスポンシブで header 画像が縮小すると下に gray 帯が露出するため、
   responsive 幅では body bg を完全に無効化し白背景に。 */
html, body {
    background-color: #fff;
}
html {
    min-height: 100%;
}
body {
    min-height: 100vh;
}

/* ====== Tablet ボーダー以下 (max-width: 940px) ====== */
@media (max-width: 940px) {
    /* body の装飾 gif を無効化（デスクトップでは健在のまま） */
    body {
        background-image: none;
        background-color: #fff;
    }

    /* #global-nav-area の背景も明示的にクリア
       (元 gnav_bg.gif は 404 なので影響なし、念のため) */
    #global-nav-area {
        background: transparent none;
    }

    #wrapper {
        width: 100%;
        max-width: 940px;
        box-sizing: border-box;
    }

    #header-area {
        width: 100%;
        max-width: 940px;
        height: auto;
    }

    #fade {
        width: 100%;
    }
    #fade ul {
        width: 100%;
    }
    #fade ul li {
        width: 100%;
    }
    #fade ul li img {
        width: 100%;
        max-width: 939px;
        height: auto;
        display: block;
    }

    #center-image {
        width: 100%;
        max-width: 1800px;
    }

    #contents-area {
        width: 100%;
        max-width: 900px;
        padding: 0 10px;
        box-sizing: border-box;
    }

    .footer_block {
        width: 100%;
        max-width: 900px;
        padding: 0 10px;
        box-sizing: border-box;
    }

    /* グローバルナビをラップ */
    #global-nav-area {
        height: auto;
        background-image: none;
        margin-bottom: 15px;
    }
    #global-nav-area ul {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 4px;
    }
    #global-nav-area ul li {
        float: none;
        display: block;
    }
    #global-nav-area ul li a img {
        display: block;
    }
}

/* ====== タブレット (max-width: 768px) ====== */
@media (max-width: 768px) {
    #main-area,
    #right-area {
        width: 100%;
        float: none;
    }

    #main-area {
        margin-bottom: 30px;
    }

    #right-area {
        margin-top: 20px;
    }

    #right-area #banner-area {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 10px;
        margin-bottom: 15px;
    }
    #right-area #banner-area br {
        display: none;
    }
    #right-area #banner-area li {
        margin: 0;
        line-height: 1;
    }
    #right-area #banner-area li img {
        max-width: 210px;
        height: auto;
    }

    /* 右サイド内の font-size 切替は維持 */
    #right-area #font-size {
        text-align: center;
        margin-bottom: 15px;
    }

    #topic_pass {
        width: 100%;
        box-sizing: border-box;
    }

    #textalignright {
        width: 100%;
    }

    /* iframe (news_RAW.html を読み込んでいる場合) */
    iframe {
        width: 100% !important;
        height: 500px;
    }

    /* footer block boxL/boxR を縦並びに */
    .footer_block {
        display: block;
    }
    .footer_block .boxL,
    .footer_block .boxR {
        width: 100%;
        text-align: center;
        float: none;
        margin-bottom: 10px;
    }
    .footer_block .boxL ul,
    .footer_block .boxR ul {
        padding-left: 0;
        float: none;
        text-align: center;
    }

    #footer-nav ul {
        text-align: center;
    }
    #footer-nav ul li {
        display: block;
        padding: 4px 0;
    }
}

/* ====== モバイル (max-width: 480px) ====== */
@media (max-width: 480px) {
    body {
        font-size: 14px;
    }

    /* グローバルナビを 2 列にして見やすく */
    #global-nav-area ul li {
        flex: 0 1 calc(50% - 4px);
        max-width: 200px;
    }
    #global-nav-area ul li a img {
        width: 100%;
        height: auto;
    }

    #right-area #banner-area li {
        flex: 1 1 100%;
        max-width: 240px;
        text-align: center;
    }

    .footer_block .boxR li {
        display: inline-block;
        padding: 4px 8px;
    }

    /* font-size 切替の小・中・大ボタンを大きく */
    #font-size dl {
        display: flex;
        justify-content: center;
        gap: 4px;
    }
    #font-size dd {
        margin: 0;
    }
    #font-size dd a {
        display: inline-block;
        padding: 6px 12px;
        background: #eee;
        text-decoration: none;
        border-radius: 4px;
    }

    /* main-area 内の本文 inline-style width を強制 100% */
    #main-area div[style*="max-width"] {
        max-width: 100% !important;
    }
    #main-area table {
        width: 100% !important;
    }

    /* iframe: モバイルでは少し低めに */
    iframe {
        height: 400px;
    }
}

/* ====== タッチデバイス向け: 文字サイズ切替・リンクの押しやすさ ====== */
@media (hover: none) and (pointer: coarse) {
    a {
        min-height: 44px;
    }
    #global-nav-area ul li a {
        display: inline-block;
        padding: 2px;
    }
}
