@charset "UTF-8";

/* =========================================
   1. 変数定義・基本設定（洗練されたトワイライトブルー）
========================================= */
:root {
    --theme-bg: #0d1b3e;          
    --theme-card-bg: #152954;     
    --theme-border: #234282;      
    
    --theme-gold: #f1c40f;        
    --theme-red: #e60012;         
    --theme-orange: #e67e22;      
    --theme-blue: #60a5fa;        
    
    --text-main: #ffffff;         
    --text-muted: #bfdbfe;        
    
    --plan-hotel: var(--theme-blue);
    --plan-night: var(--theme-blue); 
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
    font-size: 16px;
    font-family: 'Noto Sans JP', 'Helvetica Neue', Arial, sans-serif;
    line-height: 1.8;
    color: var(--text-main);
    background-color: var(--theme-bg);
    margin: 0; padding: 0;
    padding-bottom: 90px;
    overflow-x: hidden;
}

img { max-width: 100%; height: auto; display: block; border: 0; }
.mincho { font-family: 'Shippori Mincho', serif; font-weight: 700; }

.mt-10 { margin-top: 10px !important; }
.mt-20 { margin-top: 20px !important; }
.mt-40 { margin-top: 40px !important; }
.no-mt { margin-top: 0 !important; }
.text-center { text-align: center; }

/* =========================================
   2. ヘッダー・パンくず (堅牢なレイアウト)
========================================= */
.global-header { 
    background: #ffffff; 
    border-bottom: 3px solid var(--theme-bg); 
    position: sticky; 
    top: 0; 
    z-index: 1000; 
    box-shadow: 0 4px 15px rgba(0,0,0,0.15); 
    width: 100%; 
}
.header-inner { 
    max-width: 1200px; 
    margin: 0 auto; 
    display: flex; 
    justify-content: space-between; 
    align-items: center; 
    padding: 10px 15px; 
}

.header-logo { 
    display: block; 
}
.header-logo img { 
    height: 35px; 
    width: auto; 
    display: block;
}

.header-nav { 
    display: flex; 
    gap: 25px; 
    list-style: none; 
    margin: 0; 
    padding: 0; 
    align-items: center; 
}
.header-nav a { 
    color: #111111; 
    text-decoration: none; 
    font-weight: 700; 
    font-size: 14px; 
    transition: color 0.3s; 
    white-space: nowrap; 
}
.header-nav a:hover { 
    color: var(--theme-red); 
}

.hamburger-btn { 
    display: none; 
    background: none; 
    border: none; 
    cursor: pointer; 
    padding: 5px; 
    color: #111111; 
    font-size: 1.6rem; 
}

/* ドロワーメニュー */
.menu-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100vh; background: rgba(0,0,0,0.8); z-index: 9998; opacity: 0; visibility: hidden; transition: 0.3s; }
.menu-overlay.open { opacity: 1; visibility: visible; }
.drawer-menu { position: fixed; top: 0; right: -100%; width: 280px; height: 100vh; background: #ffffff; z-index: 9999; transition: right 0.3s ease; display: flex; flex-direction: column; box-shadow: -5px 0 20px rgba(0,0,0,0.3); }
.drawer-menu.open { right: 0; }
.drawer-header { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; border-bottom: 1px solid #eee; }
.drawer-logo { height: 28px; }
.close-btn { background: none; border: none; font-size: 1.5rem; color: #333; cursor: pointer; }
.drawer-content a { padding: 15px 20px; color: #333; text-decoration: none; font-weight: bold; border-bottom: 1px solid #eee; }

.breadcrumbs { background-color: rgba(13, 27, 62, 0.7); border-bottom: 1px solid var(--theme-border); padding: 10px 0; font-size: 12px; color: var(--text-muted); }
.breadcrumbs-inner { max-width: 1000px; margin: 0 auto; padding: 0 15px; }
.breadcrumbs a { color: var(--text-muted); text-decoration: none; }
.breadcrumbs a:hover { color: #fff; text-decoration: underline; }

/* =========================================
   3. アニメーションフラッグ ＆ ヒーロー
========================================= */
@keyframes swayFlag {
    0%, 100% { transform: rotate(0deg) translateY(0); }
    25% { transform: rotate(-1.5deg) translateY(-1px); }
    75% { transform: rotate(1.5deg) translateY(1px); }
}

@keyframes flagShine {
    0% { left: -100%; }
    25% { left: 100%; }
    100% { left: 100%; }
}

.animated-flag {
    background: linear-gradient(135deg, #b22222, var(--theme-red));
    color: #fff; font-size: clamp(1rem, 3.5vw, 1.3rem); font-weight: 900; 
    padding: 12px 30px;
    display: inline-flex; align-items: center; justify-content: center; gap: 10px 15px; flex-wrap: wrap;
    border: 2px solid var(--theme-gold); 
    box-shadow: 0 0 25px rgba(230, 0, 18, 0.6), inset 0 0 10px rgba(0,0,0,0.3); 
    margin-bottom: 20px; position: relative; overflow: hidden;
    animation: swayFlag 3.5s ease-in-out infinite;
    border-radius: 8px;
}
.animated-flag .shine-effect {
    position: absolute; top: 0; left: -100%; width: 50%; height: 100%;
    background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.5) 50%, rgba(255,255,255,0) 100%);
    transform: skewX(-20deg);
    animation: flagShine 4s infinite;
}
.flag-status {
    background: rgba(255,255,255,0.2);
    padding: 3px 12px;
    border-radius: 20px;
    font-size: 0.85em;
    border: 1px solid rgba(255,255,255,0.5);
    white-space: nowrap;
}

.hero { 
    background-position: center; background-size: cover;
    height: 60vh; min-height: 480px; display: flex; align-items: center; justify-content: center; text-align: center; color: #fff; padding: 20px;
    position: relative;
}
.katagai-hero { background-image: url('https://www.orion-tour.co.jp/bustour/katagai-hanabi/img/katagai1200x900-001.jpg'); }
.katagai-hero::before {
    content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    background: linear-gradient(rgba(13, 27, 62, 0.2), rgba(13, 27, 62, 0.95));
}
.hero-content { position: relative; z-index: 2; }
.hero-catch { background: rgba(13, 27, 62, 0.7); border: 1px solid var(--theme-gold); color: var(--theme-gold); padding: 5px 25px; border-radius: 30px; font-size: 14px; font-weight: bold; margin-bottom: 15px; display: inline-block; letter-spacing: 1px; }

.hero-title { 
    font-size: clamp(1.6rem, 4.5vw, 2.8rem); margin: 0 0 15px; line-height: 1.4; 
    color: #fff; 
    text-shadow: 0 0 15px rgba(255,255,255,0.4), 0 0 25px var(--theme-gold);
}
.hero-title .sub-title { display: block; font-size: 65%; margin-top: 10px; color: #f0f8ff; text-shadow: 0 2px 10px rgba(0,0,0,0.5); }
.hero-desc { font-size: clamp(0.95rem, 2.5vw, 1.1rem); font-weight: bold; margin: 0; color: #ffffff; text-shadow: 0 2px 8px rgba(0,0,0,0.6); }

/* =========================================
   4. メインコンテンツ・カード構造
========================================= */
.main-content { padding-top: 40px; }
.container { max-width: 1000px; margin: 0 auto; padding: 0 15px; }

.card-section { background: var(--theme-card-bg); border-radius: 15px; padding: 40px; box-shadow: 0 10px 35px rgba(0,0,0,0.3); margin-bottom: 40px; border: 1px solid var(--theme-border); position: relative; overflow: hidden; }
.info-card::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 4px; background: linear-gradient(to right, transparent, var(--theme-gold), var(--theme-red), var(--theme-blue), transparent); }

.section-divider { border: none; height: 1px; background: linear-gradient(to right, transparent, var(--theme-border), transparent); margin: 60px 0; }

.section-title { text-align: center; margin-top: 0; margin-bottom: 30px; color: #fff; font-size: clamp(1.4rem, 4vw, 1.8rem); position: relative; }
.section-title.title-mt { margin-top: 15px; }
.section-title::after { content: ''; display: block; width: 60px; height: 3px; background: var(--theme-gold); margin: 15px auto 0; box-shadow: 0 0 8px var(--theme-gold); }

/* プランナビゲーション */
.plan-nav { display: flex; justify-content: center; gap: 15px; margin-bottom: 40px; flex-wrap: wrap; }
.plan-nav-btn { background: rgba(21, 41, 84, 0.8); border: 1px solid; padding: 12px 25px; border-radius: 50px; font-weight: bold; font-size: 0.95rem; text-decoration: none; transition: all 0.3s ease; }
.plan-a-btn, .plan-b-btn { border-color: var(--plan-hotel); color: var(--plan-hotel); }
.plan-a-btn:hover, .plan-b-btn:hover { background: var(--plan-hotel); color: #fff; transform: translateY(-2px); box-shadow: 0 0 15px rgba(96, 165, 250, 0.5); }

/* プラン別バッジ */
.plan-box { border-top-width: 6px; }
.hotel-box, .night-box { border-top-color: var(--plan-hotel); }

.plan-badge { position: absolute; top: 0; left: 0; color: #fff; font-weight: bold; padding: 8px 25px; border-radius: 0 0 15px 0; font-size: 1.1rem; }
.hotel-badge, .night-badge { background: var(--plan-hotel); }

/* =========================================
   5. スライダー・リスト・レイアウト
========================================= */
.slider-outer { position: relative; margin-bottom: 25px; width: 100%; }
.visual-slider { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 15px; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding-bottom: 5px; }
.visual-slider::-webkit-scrollbar { display: none; }
.slide-item { flex: 0 0 88%; scroll-snap-align: center; border-radius: 10px; overflow: hidden; background: #000; aspect-ratio: 4/3; border: 1px solid var(--theme-border); }
.slide-item img { width: 100%; height: 100%; object-fit: cover; opacity: 0.95; transition: 0.3s; }
.slide-item:hover img { transform: scale(1.02); }

.slide-arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%; background: rgba(13,27,62,0.7); border: 2px solid var(--theme-red); color: var(--theme-gold); font-size: 1.2rem; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 10; transition: 0.2s; backdrop-filter: blur(5px); }
.slide-arrow:hover { background: var(--theme-red); color: #fff; box-shadow: 0 0 15px rgba(230, 0, 18, 0.6); }
.prev-arrow { left: -15px; } .next-arrow { right: -15px; }
.slide-dots { display: flex; justify-content: center; gap: 8px; margin-top: 15px; }
.dot { width: 10px; height: 10px; background: #23375e; border-radius: 50%; transition: 0.3s; cursor: pointer; border: 1px solid var(--theme-border); }
.dot.active { background: var(--theme-gold); width: 25px; border-radius: 5px; box-shadow: 0 0 8px var(--theme-gold); }

.spot-desc { font-size: 0.95rem; color: var(--text-muted); line-height: 1.8; margin-bottom: 30px; }
.spot-desc-light { color: #c4d3eb; }
.small-text { font-size: 0.9rem; color: #c4d3eb; line-height: 1.7; }

/* 箇条書きデザイン最適化 */
.point-list { padding-left: 20px; margin: 0; color: #d0def2; }
.point-list li { margin-bottom: 6px; }
.point-list li strong { color: #fff; }

.highlight-box { background: rgba(14, 27, 54, 0.7); border: 1px solid var(--theme-border); border-radius: 8px; padding: 25px; margin-bottom: 25px; box-shadow: inset 0 0 20px rgba(0,0,0,0.2); }
.highlight-box h3 { color: #fff; margin-top: 0; font-size: 1.15rem; border-bottom: 1px dashed var(--theme-border); padding-bottom: 10px; margin-bottom: 15px; }

.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; margin-top: 25px; }
.detail-item { background: rgba(13, 27, 62, 0.4); border: 1px solid var(--theme-border); padding: 20px; border-radius: 8px; }
.detail-item h4 { color: var(--theme-gold); margin-top: 0; margin-bottom: 10px; font-size: 1.1rem; border-left: 3px solid var(--theme-gold); padding-left: 10px; }

.video-section-wrap { margin-top: 10px; margin-bottom: 40px; padding-bottom: 30px; border-bottom: 1px dashed var(--theme-border); }
.video-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.video-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 8px; border: 1px solid var(--theme-border); background: #000; }
.video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }

.spot-detail-box { background: rgba(13, 27, 62, 0.5); border: 1px solid var(--theme-border); border-radius: 8px; padding: 25px; margin-bottom: 30px; }
.spot-detail-box h4 { color: #fff; margin-top: 0; border-bottom: 1px solid var(--theme-border); padding-bottom: 8px; margin-bottom: 15px;}

/* =========================================
   6. ツアースケジュール（タイムライン）
========================================= */
.schedule-title { color: #fff; margin-top: 30px; border-bottom: 1px solid var(--theme-border); padding-bottom: 10px; font-size: 1.2rem; }
.schedule-title-hotel, .schedule-title-night { border-bottom-color: var(--plan-hotel); }

.timeline { border-left: 2px solid var(--theme-border); margin: 20px 0 40px 15px; padding-left: 30px; }
.tl-item { position: relative; margin-bottom: 30px; color: #c4d3eb; }
.tl-item::before { content: ''; position: absolute; left: -37px; top: 4px; width: 14px; height: 14px; background: var(--theme-bg); border: 3px solid var(--theme-gold); border-radius: 50%; box-shadow: 0 0 10px var(--theme-gold); }
.tl-day { font-weight: bold; color: var(--theme-gold); font-size: 1.2rem; margin-bottom: 10px; display: block; letter-spacing: 1px; }

.transit-badge { display: inline-block; background: rgba(21, 41, 84, 0.9); color: #bfdbfe; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 4px; border: 1px solid var(--theme-border); margin: 5px 0; }
.meal-area { margin-top: 10px; }
.meal-label { display: inline-block; background: rgba(21, 41, 84, 0.9); border: 1px solid var(--theme-border); padding: 2px 10px; border-radius: 4px; font-size: 12px; margin-right: 5px; color: #bfdbfe; }

.timeline-hotel, .timeline-night { border-left-color: var(--plan-hotel); }
.tl-item-hotel::before, .tl-item-night::before { border-color: var(--plan-hotel); box-shadow: 0 0 10px var(--plan-hotel); }
.tl-day-hotel, .tl-day-night { color: var(--plan-hotel); }
.transit-badge-hotel, .transit-badge-night { border-color: rgba(96, 165, 250, 0.4); }
.highlight-text-hotel, .highlight-text-night { color: #60a5fa; font-weight: bold; font-size: 1.05rem; margin: 10px 0; text-shadow: 0 0 8px rgba(96, 165, 250, 0.3); }

/* =========================================
   7. 料金・重要事項ブロック
========================================= */
.price-tag-box { text-align: center; padding: 40px 20px; border: 1px solid var(--theme-border); border-radius: 15px; background: rgba(14, 27, 54, 0.8); margin-bottom: 20px; box-shadow: inset 0 0 20px rgba(0,0,0,0.3); }
.price-title { font-size: 1.1rem; color: #bfdbfe; font-weight: bold; margin-bottom: 10px; }
.price-main { font-size: clamp(2.2rem, 6vw, 3.5rem); font-weight: 900; line-height: 1; margin-bottom: 15px; color: #fff; text-shadow: 0 0 15px rgba(255,255,255,0.2); }
.price-main span { font-size: 1rem; color: #bfdbfe; font-weight: normal; }
.price-info-labels { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; margin-bottom: 30px;}
.p-label { background: #152954; color: #fff; padding: 5px 15px; border-radius: 4px; font-size: 12px; font-weight: bold; border: 1px solid var(--theme-border); }

.price-box-hotel, .price-box-night { border-color: rgba(96, 165, 250, 0.4); }
.price-main-hotel, .price-main-night { color: var(--plan-hotel); text-shadow: 0 0 12px rgba(96, 165, 250, 0.4); }
.label-hotel, .label-night { border-color: rgba(96, 165, 250, 0.3); }

.btn-wrap { text-align: center; }
.action-btn { display: inline-block; color: #fff; padding: 15px 40px; border-radius: 50px; font-weight: bold; font-size: 1.1rem; text-decoration: none; transition: transform 0.3s, box-shadow 0.3s; }
.action-btn-hotel, .action-btn-night { background: linear-gradient(135deg, #1e40af 0%, var(--plan-hotel) 100%); box-shadow: 0 5px 15px rgba(96, 165, 250, 0.3); }
.action-btn:hover { transform: translateY(-3px); box-shadow: 0 0 25px rgba(255,255,255,0.3); }

/* ▼ 追加：集合場所マップのデザイン ▼ */
.meeting-media { padding: 25px; background: rgba(13, 27, 62, 0.5); border-radius: 8px; border: 1px solid var(--theme-border); }
.meeting-title { color: var(--theme-gold); margin-top: 0; border-bottom: 1px dashed var(--theme-border); padding-bottom: 10px; margin-bottom: 15px; font-size: 1.1rem; }
.meeting-desc { color: #bfdbfe; font-size: 0.95rem; line-height: 1.6; margin-bottom: 20px; }
.meeting-desc-highlight { color: #60a5fa; font-weight: bold; }
.map-iframe-container { width: 100%; padding-bottom: 56.25%; position: relative; border-radius: 8px; overflow: hidden; border: 1px solid var(--theme-border); background: #000; }
.map-iframe-container iframe { position: absolute; top: 0; left: 0; width: 100% !important; height: 100% !important; border: 0; }

/* 注意事項カード */
.advice-card { border-top-color: var(--theme-gold) !important; }
.advice-title { color: #fff !important; }
.info-sub-block { background: rgba(14, 27, 54, 0.4); border: 1px solid var(--theme-border); border-radius: 8px; padding: 20px; margin-bottom: 20px; }
.info-sub-block h4 { color: var(--theme-gold); margin-top: 0; border-bottom: 1px dashed var(--theme-border); padding-bottom: 8px; }

.advice-box { padding: 20px; border-radius: 0 8px 8px 0; border-left: 5px solid var(--theme-gold); background: rgba(14, 27, 54, 0.6); border: 1px solid var(--theme-border); border-left: 5px solid var(--theme-gold); }
.advice-box h4 { margin-top: 0; font-size: 1.1rem; margin-bottom: 15px; color: #fff;}
.advice-list { list-style: none; padding: 0; margin: 0; color: #c4d3eb; }
.advice-list li { margin-bottom: 12px; font-size: 0.95rem; position: relative; padding-left: 15px; }
.advice-list li::before { content: '・'; position: absolute; left: 0; color: var(--theme-gold); }

.notice-wrap.always-open { background: var(--theme-bg); border: 1px solid var(--theme-border); border-radius: 6px; overflow: hidden; }
.notice-title { background: #152954; padding: 15px 20px; font-weight: bold; margin: 0; color: #fff; font-size: 1rem; border-bottom: 1px solid var(--theme-border); }
.notice-content { padding: 20px; font-size: 0.9rem; color: #bfdbfe; line-height: 1.7; }
.notice-content ul { padding-left: 20px; margin: 0; }
.notice-content li { margin-bottom: 8px; }

/* =========================================
   8. フッター ＆ 固定CVRバー
========================================= */
.global-footer { background: #070f24; border-top: 1px solid var(--theme-border); color: var(--text-muted); padding: 40px 15px 30px; text-align: center; font-size: 13px;}
.footer-links { list-style: none; padding: 0; margin-bottom: 20px; display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 20px; }
.footer-links a { color: var(--text-muted); text-decoration: none; transition: 0.3s; }
.footer-links a:hover { color: #fff; text-decoration: underline; }
.copyright { margin: 0; }

.fixed-bar { position: fixed; bottom: 0; left: 0; width: 100%; background: rgba(13, 27, 62, 0.95); padding: 10px; display: flex; justify-content: center; gap: 10px; z-index: 9999; backdrop-filter: blur(8px); border-top: 1px solid var(--theme-border); }
.fixed-btn { flex: 1; max-width: 300px; color: #fff; text-decoration: none; text-align: center; padding: 12px 5px; border-radius: 5px; font-weight: bold; font-size: clamp(0.85rem, 2.5vw, 1.1rem); transition: 0.3s; white-space: nowrap; border: 1px solid rgba(255,255,255,0.1); }
.fixed-btn.hotel-btn, .fixed-btn.night-btn { background: var(--plan-hotel); box-shadow: 0 0 10px rgba(96,165,250,0.3); }
.fixed-btn:hover { filter: brightness(1.2); transform: translateY(-2px); }

/* =========================================
   9. レスポンシブ設計 (スマホ表示最適化)
========================================= */
@media (min-width: 851px) {
    .hamburger-btn { display: none; }
    .header-nav { display: flex; }
}

@media (max-width: 850px) {
    .header-nav { gap: 12px; }
    .header-nav a { font-size: 12px; }
}

@media (max-width: 768px) {
    .header-inner { padding: 10px 15px; height: 55px; }
    .header-logo { max-width: calc(100% - 50px); }
    .header-logo img { max-height: 28px; }
    .header-nav { display: none; }
    .hamburger-btn { display: block; padding: 5px; margin-right: 5px; }
    
    .card-section { padding: 25px 15px; }
    .prev-arrow { left: 5px; }
    .next-arrow { right: 5px; }
    .detail-grid { grid-template-columns: 1fr; gap: 15px; }
    .video-grid { grid-template-columns: 1fr; gap: 15px; }
    .plan-nav-btn { flex: 1 1 100%; text-align: center; }
    .fixed-btn { font-size: 0.8rem; padding: 10px 5px;}
    
    .animated-flag {
        flex-direction: column; 
        padding: 12px 20px;
        gap: 6px;
        font-size: 1.1rem;
    }
    .flag-date {
        font-size: 1.1em; 
    }
}