@charset "UTF-8";

:root {
    --primary-color: #0056b3; 
    --accent-color: #ff5e5e;  
    --text-color: #333;
}

/* ==================
   ベース・リセット
================== */
* { box-sizing: border-box; }
body { font-family: 'Hiragino Kaku Gothic ProN', Meiryo, sans-serif; margin: 0; color: var(--text-color); }
a { color: var(--text-color); text-decoration: none; }
ul, ol { list-style: none !important; padding: 0 !important; margin: 0 !important; }
img { max-width: 100%; height: auto; vertical-align: bottom; }
.container { max-width: 1100px; margin: 0 auto; padding: 0 20px; }
.text-center { text-align: center; }

/* ==================
   ボタン共通
================== */
.btn {
    display: inline-block; padding: 12px 25px; border-radius: 30px; 
    text-decoration: none; font-weight: bold; transition: 0.3s;
}
.btn-primary { background: var(--primary-color); color: #fff; }
.btn-primary:hover { opacity: 0.8; }
.btn-accent { background: var(--accent-color); color: #fff; box-shadow: 0 4px 15px rgba(255,94,94,0.4); }
.btn-large { padding: 15px 40px; font-size: 1.1em; }

@keyframes pulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}
.btn-pulse { animation: pulse 2s infinite; }

/* ==================
   ヘッダーとロゴ
================== */
.site-header { position: fixed; width: 100%; top: 0; left: 0; background: rgba(255,255,255,0.95); z-index: 1001; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
.header-inner { display: flex; justify-content: space-between; align-items: center; padding: 10px 20px; height: 80px; }

.site-logo { display: flex; align-items: center; }
.site-title { margin: 0; font-size: 1.5rem; line-height: 1; }
.site-title a { color: var(--primary-color); text-decoration: none; }
.custom-logo { max-height: 50px; width: auto; } 

/* ==================
   グローバルナビ（PC用）
================== */
.global-nav { display: block; }
.global-nav ul, .global-nav div > ul { display: flex !important; flex-direction: row; gap: 30px; align-items: center; }
.global-nav li { list-style: none !important; }
.global-nav a { font-weight: bold; transition: 0.3s; color: var(--text-color); text-decoration: none; }
.global-nav a:hover { color: var(--primary-color); }
.header-cta { margin-left: 20px; display: block; }

/* ★ ハンバーガーと黒背景は「基本状態」で完全に消滅させる（もどき撃退！） */
.hamburger { display: none !important; }
.nav-overlay { display: none !important; }

/* ==================
   スマホ・タブレット向けメニュー（992px以下）
================== */
@media (max-width: 1180px) {
    .header-cta { display: none !important; }

    /* メニュー本体（背景を純白にして明るく！） */
    .global-nav {
        display: block !important;
        position: fixed;
        top: 0;
        right: -100%; 
        width: 80%; 
        max-width: 300px;
        height: 100vh;
        background: #ffffff; /* 純白 */
        z-index: 1001; 
        transition: right 0.3s ease; 
        padding-top: 80px;
        box-shadow: -5px 0 15px rgba(0,0,0,0.05); /* 影を優しくして明るい印象に */
    }

    .global-nav.is-active { right: 0; }

    .global-nav ul, .global-nav div > ul {
        flex-direction: column !important;
        gap: 0 !important;
        padding: 0 20px !important;
    }
    .global-nav li { width: 100%; border-bottom: 1px solid #f0f0f0; } /* 区切り線も明るいグレーに */
    .global-nav a { display: block; padding: 15px 0; font-size: 1.1rem; color: #333; }

    /* ハンバーガーボタン本体（スマホの時だけ出現） */
    .hamburger { display: block !important; border: none; outline: none; background: transparent; width: 30px; height: 24px; position: relative; cursor: pointer; z-index: 1002; padding: 0; margin-left: auto; }
    .hamburger span { position: absolute; width: 100%; height: 2px; background: var(--text-color); transition: 0.3s; left: 0; display: block; }
    .hamburger span:nth-child(1) { top: 0; }
    .hamburger span:nth-child(2) { top: 11px; }
    .hamburger span:nth-child(3) { bottom: 0; }

    .hamburger.is-active span:nth-child(1) { transform: translateY(11px) rotate(-45deg); }
    .hamburger.is-active span:nth-child(2) { opacity: 0; }
    .hamburger.is-active span:nth-child(3) { transform: translateY(-11px) rotate(45deg); }

    /* メニューが開いた時の背景を明るくする！（黒の透明度を 0.5 から 0.2 に変更） */
    .nav-overlay {
        display: block !important;
        position: fixed; top: 0; left: 0; width: 100%; height: 100vh;
        background: rgba(0,0,0,0.2); /* ★ここが明るさの秘密です */
        z-index: 999;
        opacity: 0; visibility: hidden;
        transition: 0.3s;
    }
    .nav-overlay.is-active { opacity: 1; visibility: visible; }
}

/* ==================
   メインビジュアル（スライダー）
================== */
main { padding-top: 80px; } 
.hero-slider-wrap {
    margin-top: -80px; 
    position: relative;
    width: 100%;
    height: 100vh;
    min-height: 600px;
    overflow: hidden;
    background-color: var(--primary-color); /* 画像がない時は青色背景にする */
}

.swiper { width: 100%; height: 100%; }
.slide-media { width: 100%; height: 100%; background-size: cover; background-position: center; object-fit: cover; }
.swiper-slide::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.4); }

.hero-overlay-content { 
    position: absolute; 
    top: 0;
    left: 0;
    width: 100%; 
    height: 100%; /* 画面の高さとピッタリ合わせる */
    display: flex;
    flex-direction: column;
    justify-content: center; /* 縦のド真ん中に配置！ */
    align-items: center; /* 横のド真ん中に配置！ */
    padding: 0 20px;
    text-align: center; 
    z-index: 10; 
    color: #fff; 
    pointer-events: none; /* スワイプの邪魔をしない */
}

/* 中のボタンだけはクリックできるようにする */
.hero-overlay-content * {
    pointer-events: auto;
}

.hero-title { font-size: 2.5rem; text-shadow: 0 2px 10px rgba(0,0,0,0.5); margin-bottom: 10px; line-height: 1.4; color: #fff; }
.hero-subtitle { font-size: 1.2rem; margin-bottom: 30px; }
.swiper-button-next, .swiper-button-prev { color: rgba(255,255,255,0.7); }
.swiper-pagination-bullet-active { background: var(--accent-color); }

@media (max-width: 768px) {
    .hero-title { font-size: 1.8rem; }
    .hero-slider-wrap { height: 80vh; }
}

/* ==================
   各セクションレイアウト
================== */
.section-title { text-align: center; margin-bottom: 40px; }
.section-title h2 { font-size: 2rem; color: var(--primary-color); margin: 0 0 5px 0; }
.section-title p { margin: 0; font-size: 0.9rem; color: #666; letter-spacing: 2px; text-transform: uppercase; }

section { padding: 80px 0; }

.join-us { background: var(--primary-color); }
.join-us .section-title h2, .join-us .section-title p { color: #fff; }
.join-box { background: #fff; padding: 40px; border-radius: 12px; margin: 0 auto; max-width: 800px; }
.join-box h3 { margin-top: 0; color: var(--primary-color); }
.join-conditions { background: #f8f9fa; padding: 20px; border-left: 5px solid var(--accent-color); list-style: none; margin: 20px 0 30px; }
.join-conditions li { margin-bottom: 10px; }
.join-conditions li:last-child { margin-bottom: 0; }

/* ==================
   追加コンテンツのレイアウト
================== */
.bg-light { background-color: #f8f9fa; }

/* News & SNS */
.news-sns-inner { display: flex; flex-direction: column; gap: 60px; align-items: center; }
.news-area, .sns-area { width: 100%; max-width: 900px; } /* 最大幅を設定して綺麗に中央に収める */

/* お知らせリスト */
.news-list { border-top: 2px solid var(--primary-color); }
.news-list li { border-bottom: 1px solid #eee; padding: 15px 0; display: flex; gap: 15px; align-items: baseline; }
.news-date { font-size: 0.9em; color: #888; white-space: nowrap; }
.news-list a { font-weight: bold; transition: 0.3s; }
.news-list a:hover { color: var(--primary-color); }

/* Instagramウィジェット */
.instagram-widget { 
    background: #fff; 
    padding: 20px; 
    border-radius: 12px; 
    box-shadow: 0 4px 15px rgba(0,0,0,0.05); 
    width: 100%;
}

/* ==================
   About Us (楽団紹介) の透かし背景
================== */
.about {
    position: relative;
    background-color: #f8f9fa;
    
    /* ↓ ★後でここに画像のURLを入れます */
    background-image: url('https://miyanjo.ks-d-k.com/wp-content/uploads/2026/05/rensyu01.jpg'); 
    
    background-size: cover;
    background-position: center;
    background-attachment: fixed; /* スクロール時に背景がゆっくり動くオシャレな効果（パララックス） */
}

/* 画像の上に「白い半透明の膜」を被せて、透かし風にする */
.about::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(255, 255, 255, 0.85); /* 0.85 は白の濃さです（1に近づくほど白くなります） */
    z-index: 1;
}

/* 文字やボタンが透かしの上にちゃんと乗るようにする */
.about .container {
    position: relative;
    z-index: 2;
}

.about-text { 
    text-align: center; 
    max-width: 800px; 
    margin: 0 auto; 
    line-height: 1.8; 
    font-size: 1.1rem; 
    font-weight: bold; /* 透かし背景の上でも読みやすいように少し太字に */
}


/* ==================
   活動記録 (カード型レイアウト)
================== */
.activity-grid { display: flex; gap: 30px; flex-wrap: wrap; justify-content: center; }
.activity-box { 
    background: #fff; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); 
    flex: 1 1 40%; min-width: 300px; 
    overflow: hidden; /* 画像が角丸からはみ出ないようにする */
    display: flex; flex-direction: column; 
    transition: transform 0.3s ease; 
}

/* マウスを乗せたときに全体が少し浮き上がる効果 */
.activity-box:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); }

/* 画像エリアの設定 */
.activity-img { width: 100%; height: 220px; overflow: hidden; }
.activity-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }

/* マウスを乗せたときに写真がゆっくりズームする効果 */
.activity-box:hover .activity-img img { transform: scale(1.05); }

/* テキストとボタンのエリア */
.activity-content { padding: 30px; display: flex; flex-direction: column; flex-grow: 1; }
.activity-content h3 { color: var(--primary-color); margin-top: 0; border-bottom: 2px solid var(--accent-color); padding-bottom: 10px; display: inline-block; align-self: flex-start; }
.activity-content p { flex-grow: 1; line-height: 1.6; color: #555; }

/* ==================
   フッター
================== */
.site-footer { background: #222; color: #ccc; padding: 60px 0 0; margin-top: 80px; }
.footer-inner { display: flex; flex-wrap: wrap; gap: 40px; justify-content: space-between; margin-bottom: 40px; }
.footer-col { flex: 1 1 250px; }
.footer-title { color: #fff; font-size: 1.5rem; margin-top: 0; }
.footer-col h4 { color: #fff; border-bottom: 2px solid var(--accent-color); padding-bottom: 10px; display: inline-block; margin-top: 0; }
.footer-col ul li { border-bottom: 1px solid #444; padding: 10px 0; }
.footer-col ul li:last-child { border-bottom: none; }
.footer-col a { color: #ccc; transition: 0.3s; }
.footer-col a:hover { color: #fff; }
.footer-sns { display: flex; gap: 10px; margin-top: 20px; flex-wrap: wrap; }
.footer-sns a { display: inline-block; padding: 8px 15px; background: #444; border-radius: 4px; font-size: 0.85rem; }
.footer-sns a:hover { background: var(--primary-color); }
.footer-bottom { background: #111; padding: 20px 0; text-align: center; font-size: 0.9rem; }
.privacy-link { display: inline-block; margin-bottom: 10px; color: #999; }

/* ==================
   下層ページ（詳細・一覧用）
================== */
.page-header { background: var(--primary-color); padding: 150px 0 60px; text-align: center; color: #fff; margin-bottom: 50px; }
.page-header h1 { margin: 0; font-size: 2rem; }
.page-container { margin-bottom: 100px; }
.page-content { max-width: 800px; margin: 0 auto; line-height: 1.8; font-size: 1.05rem; }
.post-meta { text-align: center; color: #666; margin-bottom: 30px; font-size: 0.9rem; padding-bottom: 20px; border-bottom: 1px solid #eee; }
.post-body img { border-radius: 8px; margin: 20px 0; }

/* ==================
   楽団紹介ページ (page-about.php)
================== */
.about-section { margin-bottom: 80px; }
.profile-content { background: #f8f9fa; padding: 40px; border-radius: 12px; border-left: 5px solid var(--primary-color); }
.profile-text p { margin-bottom: 1.5em; line-height: 1.8; font-size: 1.05rem; }
.profile-text p:last-child { margin-bottom: 0; }

/* ==================
   役員・指揮者紹介テーブル
================== */
.staff-table-wrapper { max-width: 600px; margin: 0 auto; border-radius: 8px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
.staff-table { width: 100%; border-collapse: collapse; background: #fff; }
.staff-table th, .staff-table td { padding: 15px 25px; border-bottom: 1px solid #eee; text-align: left; }
.staff-table tr:last-child th, .staff-table tr:last-child td { border-bottom: none; }
.staff-table th { width: 35%; background: var(--primary-color); color: #fff; font-weight: normal; letter-spacing: 1px; }
.staff-table td { width: 65%; font-size: 1.1rem; color: #333; font-weight: bold; }

@media (max-width: 768px) {
    .staff-table th, .staff-table td { padding: 12px 15px; font-size: 1rem; }
    .staff-table th { width: 40%; }
}

/* ==================
   パート紹介グリッド（シンプル版）
================== */
.part-grid { display: flex; gap: 30px; justify-content: center; flex-wrap: wrap; }
.part-card { background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.05); flex: 1 1 300px; max-width: 350px; transition: transform 0.3s ease; }
.part-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); }
.part-img { width: 100%; height: 220px; overflow: hidden; }
.part-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.part-card:hover .part-img img { transform: scale(1.05); } /* 写真がフワッと拡大 */
.part-info { padding: 20px; text-align: center; }
.part-info h3 { margin: 0; color: var(--primary-color); font-size: 1.2rem; }

/* ==================
   お問い合わせフォーム (Contact Form 7)
================== */
.contact-form-wrap {
    max-width: 700px;
    margin: 0 auto;
    background: #f8f9fa;
    padding: 40px;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}
.form-row { margin-bottom: 25px; }
.form-row label { display: block; font-weight: bold; margin-bottom: 8px; color: var(--primary-color); }
.required { background: var(--accent-color); color: #fff; font-size: 0.75rem; padding: 3px 8px; border-radius: 4px; margin-left: 10px; vertical-align: text-top; }

/* 入力欄のデザイン */
.wpcf7-form-control-wrap input[type="text"],
.wpcf7-form-control-wrap input[type="email"],
.wpcf7-form-control-wrap input[type="tel"],
.wpcf7-form-control-wrap select,
.wpcf7-form-control-wrap textarea {
    width: 100%;
    padding: 12px 15px;
    border: 1px solid #ccc;
    border-radius: 6px;
    font-size: 1rem;
    font-family: inherit;
    background: #fff;
    box-sizing: border-box;
}
.wpcf7-form-control-wrap textarea { height: 180px; resize: vertical; }
.form-submit { margin-top: 40px; }

/* エラーや送信完了メッセージのデザイン */
.wpcf7 form.sent .wpcf7-response-output { border-color: #46b450; color: #46b450; background: #eaf7ea; border-radius: 6px; padding: 15px; text-align: center; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output { border-color: var(--accent-color); color: var(--accent-color); background: #ffeeee; border-radius: 6px; padding: 15px; text-align: center; }

/* ==================
   団員専用ページ・楽器管理システム
================== */
.members-login-box { max-width: 600px; margin: 50px auto; background: #f8f9fa; padding: 50px 20px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
.members-section { margin-bottom: 80px; }
.members-content-box { background: #fff; padding: 40px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); line-height: 1.8; }
.members-content-box a { color: var(--primary-color); font-weight: bold; text-decoration: underline; }

/* 楽器カードグリッド */
.instrument-grid { display: flex; flex-wrap: wrap; gap: 30px; justify-content: center; }
.instrument-card { width: 280px; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.05); border: 2px solid transparent; }
.instrument-card.borrowed { border-color: #ffeaea; background: #fffafb; } /* 貸出中は少し赤みがかる */
.instrument-img { width: 100%; height: 200px; position: relative; background: #eee; }
.instrument-img img { width: 100%; height: 100%; object-fit: cover; }
.no-img { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; color: #aaa; }

/* ステータスバッジ（画像の上に浮く） */
.status-badge { position: absolute; top: 10px; left: 10px; padding: 5px 12px; border-radius: 30px; font-size: 0.85rem; font-weight: bold; color: #fff; box-shadow: 0 2px 5px rgba(0,0,0,0.2); }
.status-badge.available { background: #46b450; } /* 緑 */
.status-badge.borrowed { background: #ff5e5e; } /* 赤 */

.instrument-info { padding: 20px; text-align: center; }
.instrument-info h3 { margin: 0 0 15px 0; color: #333; font-size: 1.2rem; }
.tracking-info { background: #fff; border: 1px solid #ffcece; padding: 10px; border-radius: 6px; text-align: left; font-size: 0.9rem; }
.tracking-info p { margin: 0 0 5px 0; color: #d63333; }
.tracking-info p:last-child { margin: 0; }

/* ==================
   団員専用ポータルメニューのボタン
================== */
.members-portal-nav { display: flex; gap: 30px; justify-content: center; flex-wrap: wrap; margin-top: 40px; }
.portal-btn { 
    background: #fff; padding: 40px 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); 
    flex: 1 1 300px; max-width: 450px; text-align: center; text-decoration: none; 
    border: 3px solid transparent; transition: all 0.3s ease; 
}
.portal-btn:hover { 
    transform: translateY(-5px); 
    border-color: var(--primary-color); 
    box-shadow: 0 15px 25px rgba(0,0,0,0.1); 
}
.portal-icon { font-size: 4rem; display: block; margin-bottom: 20px; line-height: 1; }
.portal-btn h3 { color: var(--primary-color); margin: 0 0 15px 0; font-size: 1.4rem; }
.portal-btn p { color: #666; font-size: 1rem; margin: 0; line-height: 1.6; }

/* ==================
   書類ダウンロードページ
================== */
.docs-body { font-size: 1.1rem; }

/* WordPress標準の「ファイル」ブロックを綺麗にする */
.docs-body .wp-block-file { 
    display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; 
    background: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #ddd; margin-bottom: 15px; 
}
.docs-body .wp-block-file a:not(.wp-block-file__button) { font-weight: bold; color: #333; text-decoration: none; }
.docs-body .wp-block-file__button { 
    background: var(--primary-color); color: #fff !important; padding: 8px 20px; border-radius: 4px; text-decoration: none; font-size: 0.9rem; transition: 0.3s; 
}
.docs-body .wp-block-file__button:hover { opacity: 0.8; }

/* ==================
   備品台帳の詳細リスト・追加バッジ
================== */
.category-badge { position: absolute; bottom: 10px; right: 10px; background: rgba(0,0,0,0.6); color: #fff; font-size: 0.8rem; padding: 3px 8px; border-radius: 4px; }

.inventory-details { list-style: none; padding: 0; margin: 15px 0 0 0; border-top: 1px dashed #ccc; padding-top: 15px; font-size: 0.85rem; text-align: left; }
.inventory-details li { margin-bottom: 8px; display: flex; justify-content: space-between; border-bottom: 1px solid #f0f0f0; padding-bottom: 5px; }
.inventory-details li span { color: #888; font-weight: bold; margin-right: 10px; min-width: 100px; }
.inventory-details li.note { display: block; }
.inventory-details li.note span { display: block; margin-bottom: 3px; }

/* 貸出中のカードを少し大きく目立たせる（重要度高のため） */
.instrument-card { width: 320px; }

/* ==================
   備品詳細ページ (single-instrument.php)
================== */
.instrument-single-wrap { display: flex; flex-wrap: wrap; gap: 40px; background: #fff; padding: 40px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
.instrument-single-left { flex: 1 1 350px; }
.instrument-single-right { flex: 1 1 450px; }

/* 左側：画像とステータス */
.instrument-single-img { width: 100%; border-radius: 8px; overflow: hidden; margin-bottom: 20px; background: #eee; border: 1px solid #ddd; }
.instrument-single-img img { width: 100%; display: block; height: auto; }
.instrument-status-box { padding: 25px; border-radius: 8px; border: 2px solid transparent; text-align: center; }
.instrument-status-box.available { border-color: #46b450; background: #f0fdf0; }
.instrument-status-box.borrowed { border-color: var(--accent-color); background: #fffafb; }

.borrow-info-list { list-style: none; padding: 0; margin: 15px 0 0 0; text-align: left; }
.borrow-info-list li { padding: 10px 0; border-bottom: 1px dashed #ccc; font-weight: bold; color: #333; }
.borrow-info-list li:last-child { border-bottom: none; }
.borrow-info-list li span { color: #888; margin-right: 15px; font-weight: normal; }

/* 右側：台帳データ */
.instrument-single-title { margin: 0 0 20px 0; font-size: 2rem; color: var(--primary-color); border-bottom: 3px solid var(--accent-color); padding-bottom: 10px; display: inline-block; }
.inventory-table { width: 100%; border-collapse: collapse; margin-bottom: 30px; }
.inventory-table th, .inventory-table td { padding: 15px; border-bottom: 1px solid #eee; text-align: left; font-size: 1.05rem; }
.inventory-table th { width: 35%; color: #666; font-weight: normal; }
.inventory-table td { font-weight: bold; color: #333; }

.instrument-single-note { background: #f8f9fa; padding: 20px; border-left: 5px solid #ccc; border-radius: 4px; }
.instrument-single-note h4 { margin: 0 0 10px 0; color: #555; }
.instrument-single-note p { margin: 0; line-height: 1.6; color: #333; }

/* 貸出・返却履歴 */
.instrument-history-box { background: #fff; padding: 25px; border-radius: 8px; border: 1px solid #ddd; box-shadow: inset 0 2px 5px rgba(0,0,0,0.02); }
.instrument-history-box h4 { display: flex; align-items: center; gap: 8px; font-size: 1.1rem; }
.history-content { font-size: 0.95rem; line-height: 1.8; color: #444; }
.history-content ul { padding-left: 20px; list-style-type: disc !important; margin: 0; }
.history-content li { margin-bottom: 5px; }

/* ==================
   備品・楽器の検索＆絞り込みバー
================== */
.instrument-search-box { background: #f8f9fa; padding: 20px; border-radius: 12px; margin-bottom: 40px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); }
.instrument-search-form { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.search-select, .search-input { 
    padding: 12px 15px; border: 1px solid #ccc; border-radius: 6px; font-size: 1rem; background: #fff; flex: 1 1 200px; 
}
.search-btn { padding: 12px 30px; border: none; cursor: pointer; flex: 0 1 auto; }

@media (max-width: 768px) {
    .search-select, .search-input { flex: 1 1 100%; }
    .search-btn { width: 100%; }
}

/* ==================
   団員募集ページ (page-join.php)
================== */
.recruit-message { text-align: center; max-width: 800px; margin: 0 auto 60px; line-height: 1.8; font-size: 1.1rem; }
.recruit-message h2 { color: var(--primary-color); margin-bottom: 20px; font-size: 1.8rem; }
.recruit-section { margin-bottom: 80px; }

/* 募集パートテーブル */
.recruit-table-wrap { 
    max-width: 800px; 
    margin: 0 auto; 
    box-shadow: 0 4px 15px rgba(0,0,0,0.05); 
    border-radius: 8px; 
    overflow-x: auto; /* ★横スクロールを許可する */
    -webkit-overflow-scrolling: touch; /* ★スマホでのスクロールを滑らかにする魔法のコード */
}
.recruit-table { 
    width: 100%; 
    min-width: 600px; /* ★これ以上は縮ませない（スクロールさせる）ための最小幅 */
    border-collapse: collapse; 
    background: #fff; 
}
.recruit-table th, .recruit-table td { padding: 15px 20px; border-bottom: 1px solid #eee; text-align: left; }
.recruit-table th { background: var(--primary-color); color: #fff; font-weight: normal; white-space: nowrap; /* 見出しを折り返さない */ }
.recruit-table tr:last-child td { border-bottom: none; }
/* 募集状況の自動色分け機能 */
.status-circle { color: var(--accent-color); font-weight: bold; font-size: 1.1rem; white-space: nowrap; }
.status-great { color: #ff5e5e; } /* 赤色（◎ 大募集） */
.status-good { color: #46b450; }  /* 緑色（〇 募集） */
.status-warn { color: #FF9800; }  /* オレンジ（▲ 要相談） */
.status-closed { color: #A9A9A9; font-weight: normal; } /* グレー（✕ 募集終了） */

/* 募集要項 */
.req-box { max-width: 800px; margin: 0 auto; background: #fff; padding: 40px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
.req-list { list-style: none; padding: 0; margin: 0; }
.req-list li { display: flex; flex-wrap: wrap; border-bottom: 1px solid #f0f0f0; padding: 15px 0; }
.req-list li:first-child { padding-top: 0; }
.req-label { flex: 0 0 150px; font-weight: bold; color: var(--primary-color); }
.req-detail { flex: 1; line-height: 1.7; color: #333; }
.req-alert { margin-top: 30px; background: #fffafb; border: 2px dashed #ff5e5e; padding: 20px; border-radius: 8px; color: #d63333; line-height: 1.6; }

@media (max-width: 600px) {
    .req-list li { flex-direction: column; gap: 5px; }
    .req-label { flex: auto; border-bottom: 2px solid var(--accent-color); display: inline-block; padding-bottom: 5px; margin-bottom: 5px; }
}

/* 入団までの流れ (ステップ) */
.step-flow { max-width: 800px; margin: 0 auto; }
.step-box { display: flex; gap: 20px; background: #fff; padding: 25px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); margin-bottom: 20px; align-items: flex-start; }
.step-num { background: var(--primary-color); color: #fff; font-weight: bold; padding: 10px 15px; border-radius: 8px; font-size: 0.9rem; white-space: nowrap; }
.step-content h4 { margin: 0 0 10px 0; color: #333; font-size: 1.2rem; }
.step-content p { margin: 0; line-height: 1.6; color: #555; }

@media (max-width: 600px) {
    .step-box { flex-direction: column; gap: 15px; }
    .step-num { display: inline-block; }
}

/* CTA */
.recruit-cta { text-align: center; margin: 60px 0 20px; padding: 50px 20px; background: #f8f9fa; border-radius: 12px; }

/* ==================
   活動実績（コンクール・イベント）専用カード
================== */
.concours-list-wrap { 
    display: flex; 
    flex-direction: column; 
    border-top: 2px solid var(--primary-color); /* 上の線を少し太くして引き締める */
    font-size: 13px; 
    max-width: 850px; /* ★ 全体の横幅を制限する */
    margin: 0 auto;   /* ★ 画面のド真ん中に配置する！ */
}

.concours-row { 
    display: flex; 
    padding: 25px 10px; /* 上下の余白もゆったりと取る */
    border-bottom: 1px solid #ddd; 
    gap: 40px; /* ★ 年、部門、曲の間の隙間を広くしてバランスを取る */
    align-items: flex-start; 
}

.concours-year { flex: 0 0 110px; font-weight: bold; font-size: 14px; color: #333; }
.concours-year small { font-weight: normal; color: #666; font-size: 12px; }
.concours-division { flex: 0 0 100px; color: var(--primary-color); font-weight: bold; font-size: 13px; }

/* 曲と結果を縦に並べるグループ */
.concours-detail-group { flex: 1; display: flex; flex-direction: column; gap: 15px; }

.concours-music { font-size: 13px; }
.music-line { margin-bottom: 6px; line-height: 1.6; color: #333; }
.music-line strong { margin-right: 5px; }
.music-line small { color: #888; font-size: 12px; }

/* 結果が横並びになるように */
.concours-results { display: flex; gap: 20px; flex-wrap: wrap; }
.result-block { display: flex; flex-direction: column; align-items: flex-start; width: 110px; font-size: 12px; }
.result-badge { color: #fff; padding: 4px 8px; border-radius: 4px; font-weight: bold; margin-bottom: 5px; text-align: center; width: 100%; box-sizing: border-box; font-size: 12px; }
.badge-pref { background: #4CAF50; } /* 緑 */
.badge-kyushu { background: #FF9800; } /* オレンジ */
.badge-national { background: #F44336; } /* 赤 */
.result-hall { color: #555; margin-bottom: 3px; font-size: 11px; line-height: 1.3; }
.result-director { color: #2196F3; margin-bottom: 3px; font-size: 12px; }
.result-prize { font-weight: bold; color: #333; font-size: 12px; }
.prize-mark { margin-right: 3px; }
.prize-gold { color: #FFD700; } /* 金 */
.prize-silver { color: #A9A9A9; } /* 銀 */
.prize-bronze { color: #CD7F32; } /* 銅 */

/* スマホ対応 */
@media (max-width: 992px) {
    .concours-row { flex-direction: column; gap: 10px; padding: 20px 10px; }
    .concours-year { flex: auto; margin-bottom: -5px; font-size: 13px; }
    .concours-year br { display: none; }
    .concours-year small { margin-left: 10px; }
    .concours-division { flex: auto; }
    .concours-detail-group { width: 100%; gap: 12px; }
    .concours-results { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 10px; }
}

/* イベント専用デザイン */
.event-grid { display: flex; flex-direction: row; flex-wrap: wrap; gap: 30px; }
.event-card { flex: 1 1 350px; display: flex; flex-direction: column; }
.event-card .history-img { height: 200px; }
.event-details { padding: 25px; display: flex; flex-direction: column; flex-grow: 1; }
.event-date { color: var(--primary-color); font-weight: bold; font-size: 0.95rem; margin-bottom: 5px; }
.event-details h3 { margin: 0 0 15px 0; font-size: 1.3rem; color: #333; }
.event-location { margin: 0 0 15px 0; color: #666; font-weight: bold; }
.event-note { color: #555; line-height: 1.6; }

@media (max-width: 768px) {
    .concours-body .history-img { flex: 1 1 100%; height: 200px; min-height: auto; }
}

/* ==================
   出欠カレンダー＆フォーム
================== */
.calendar-wrap { background: #fff; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); padding: 20px; overflow-x: auto; }
.calendar-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
.calendar-header h2 { margin: 0; font-size: 1.5rem; color: var(--primary-color); }
.calendar-table { width: 100%; border-collapse: collapse; min-width: 600px; }
.calendar-table th { background: #f8f9fa; padding: 10px; border: 1px solid #ddd; text-align: center; }
.calendar-table th.sun { color: #d63333; }
.calendar-table th.sat { color: #2196F3; }
.calendar-table td { border: 1px solid #ddd; height: 120px; vertical-align: top; padding: 5px; width: 14.28%; }
.calendar-table td.today { background: #fffafb; }
.cal-day { font-weight: bold; display: inline-block; margin-bottom: 5px; color: #555; }
.cal-event-badge { display: block; padding: 5px; border-radius: 4px; font-size: 0.8rem; text-decoration: none; margin-bottom: 5px; transition: 0.3s; line-height: 1.4; border: 1px solid transparent; }
.cal-event-badge:hover { opacity: 0.8; transform: translateY(-2px); box-shadow: 0 2px 5px rgba(0,0,0,0.1); }

/* ★追加：種類ごとの色設定 */
.badge-normal { background: var(--primary-color); color: #fff; }
.badge-important { background: #f44336; color: #fff; } /* 赤：コンクール等 */
.badge-event { background: #fbc02d; color: #333; } /* 黄色：地域イベント（白文字だと見えないので文字は濃いグレー） */

.schedule-detail-wrap { display: flex; flex-wrap: wrap; gap: 30px; }
.schedule-info-box { flex: 1 1 400px; background: #fff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
.attendance-form-box { flex: 1 1 300px; background: #f8f9fa; padding: 30px; border-radius: 12px; border: 2px solid #eee; }
.schedule-title { margin: 0 0 20px 0; font-size: 1.8rem; color: var(--primary-color); }
.schedule-note { background: #fdfdfd; padding: 15px; border-left: 4px solid #ccc; margin-top: 20px; }

/* ==================
   出欠状況一覧表（専用デザイン）
================== */
.attendance-table-wrap { 
    overflow-x: auto; 
    -webkit-overflow-scrolling: touch; /* スマホで滑らかに横スクロールさせる */
    border-radius: 8px; 
    border: 1px solid #ddd; 
}
.attendance-table { 
    width: 100%; 
    min-width: 500px; /* はみ出した分は横スクロールにする */
    border-collapse: collapse; 
    background: #fff; 
    text-align: left; 
}
.attendance-table th, .attendance-table td { 
    padding: 12px 15px; 
    border-bottom: 1px solid #ddd; 
    border-right: 1px solid #ddd; 
}
.attendance-table th:last-child, .attendance-table td:last-child { 
    border-right: none; 
}
.attendance-table th { 
    background: #f8f9fa; 
    color: #333; 
    font-weight: bold; 
    white-space: nowrap; 
}
.attendance-table tr:last-child td { border-bottom: none; }
.attendance-table tr:nth-child(even) td { background: #fafafa; } /* 1行ごとに背景色を変えて見やすくする */
.attendance-note-cell { color: #666; font-size: 0.9rem; min-width: 150px; line-height: 1.5; }
