/* ===========================
   グローバルスタイル
   =========================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    /* パステルカラー - より洗練された色合い */
    --spring-pink: #ffd6e8;
    --spring-green: #d4f1d4;
    --summer-blue: #cce7ff;
    --summer-purple: #e6d5ff;
    --autumn-orange: #ffd4a3;
    --autumn-red: #ffb3b3;
    --keika-white: #fefefe;
    --indigo-blue: #8ba4d9;
    
    /* 背景色 */
    --bg-cream: #fffbf0;
    --bg-light: #ffffff;
    --bg-gradient-start: #fff9e6;
    --bg-gradient-end: #ffe8cc;
    
    /* テキスト */
    --text-primary: #2d3748;
    --text-secondary: #718096;
    --text-accent: #2d5016;
    
    /* アクセントカラー */
    --accent-green: #7cb342;
    --accent-pink: #f06292;
    --accent-gold: #ffd700;
    
    /* シャドウ */
    --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
    --shadow-md: 0 8px 25px rgba(0, 0, 0, 0.12);
    --shadow-lg: 0 15px 50px rgba(0, 0, 0, 0.15);
    --shadow-xl: 0 25px 70px rgba(0, 0, 0, 0.2);
}

body {
    font-family: 'Zen Maru Gothic', 'Kosugi Maru', sans-serif;
    color: var(--text-primary);
    background: linear-gradient(to bottom, var(--bg-gradient-start), var(--bg-gradient-end));
    line-height: 1.8;
    overflow-x: hidden;
}

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* ===========================
   浮遊する装飾
   =========================== */
.floating-decorations {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 1;
    overflow: hidden;
}

.decoration {
    position: absolute;
    font-size: 2rem;
    opacity: 0.25;
    animation: float 20s infinite ease-in-out;
}

.decoration.leaf { top: 10%; left: 5%; animation-delay: 0s; }
.decoration.flower1 { top: 20%; right: 10%; animation-delay: 2s; }
.decoration.flower2 { top: 60%; left: 15%; animation-delay: 4s; }
.decoration.leaf2 { top: 80%; right: 20%; animation-delay: 6s; }
.decoration.flower3 { top: 40%; right: 5%; animation-delay: 8s; }

@keyframes float {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    25% { transform: translateY(-30px) rotate(5deg); }
    50% { transform: translateY(-60px) rotate(-5deg); }
    75% { transform: translateY(-30px) rotate(3deg); }
}

/* ===========================
   ヒーローセクション
   =========================== */
.hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #ffd6e8 0%, #d4f1d4 50%, #cce7ff 100%);
    padding: 80px 20px 60px;
    overflow: hidden;
}

.hero-decorations {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    pointer-events: none;
}

.deco-plant, .deco-flower {
    position: absolute;
    font-size: 4rem;
    opacity: 0.3;
    animation: gentle-sway 4s infinite ease-in-out;
}

.deco-plant.left-top { top: 5%; left: 5%; animation-delay: 0s; }
.deco-plant.right-top { top: 5%; right: 5%; animation-delay: 1s; }
.deco-flower.left { top: 30%; left: 3%; font-size: 3rem; animation-delay: 2s; }
.deco-flower.right { top: 30%; right: 3%; font-size: 3rem; animation-delay: 3s; }

@keyframes gentle-sway {
    0%, 100% { transform: rotate(0deg) translateY(0); }
    50% { transform: rotate(5deg) translateY(-10px); }
}

/* ヒーロー画像 */
.hero-image-container {
    width: 100%;
    max-width: 900px;
    margin-bottom: 40px;
    border-radius: 30px;
    overflow: hidden;
    box-shadow: var(--shadow-lg);
    animation: fade-in-up 1s ease-out 0.5s both;
}

.hero-image {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.4s ease;
}

.hero-image:hover {
    transform: scale(1.02);
}

.hero-content {
    position: relative;
    z-index: 2;
    text-align: center;
    max-width: 900px;
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: rgba(255, 255, 255, 0.95);
    padding: 12px 30px;
    border-radius: 50px;
    box-shadow: var(--shadow-md);
    margin-bottom: 30px;
    animation: bounce-in 1s ease-out;
}

.badge-emoji {
    font-size: 1.5rem;
    animation: sparkle 2s infinite;
}

.badge-text {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--accent-green);
}

@keyframes sparkle {
    0%, 100% { transform: scale(1) rotate(0deg); }
    50% { transform: scale(1.2) rotate(10deg); }
}

@keyframes bounce-in {
    0% { transform: scale(0); opacity: 0; }
    50% { transform: scale(1.1); }
    100% { transform: scale(1); opacity: 1; }
}

.hero-title {
    margin-bottom: 30px;
    animation: fade-in-up 1s ease-out 0.3s both;
}

.title-line1, .title-line2 {
    display: block;
    font-size: 3.5rem;
    font-weight: 900;
    line-height: 1.3;
    background: linear-gradient(135deg, #7cb342, #2d5016);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    text-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

.title-line2 {
    font-size: 4.5rem;
}

@keyframes fade-in-up {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.hero-subtitle {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
    font-size: 1.8rem;
    color: var(--text-accent);
    font-weight: 600;
    animation: fade-in-up 1s ease-out 0.6s both;
}

.subtitle-icon {
    font-size: 2rem;
}

.hero-description {
    font-size: 1.2rem;
    line-height: 2;
    color: var(--text-primary);
    margin-bottom: 30px;
    animation: fade-in-up 1s ease-out 0.8s both;
}

.event-notice {
    font-size: 0.95rem;
    color: var(--text-secondary);
    text-align: center;
    padding: 15px 20px;
    background: rgba(255, 215, 0, 0.15);
    border-radius: 15px;
    border: 1px solid rgba(255, 215, 0, 0.3);
    margin-bottom: 50px;
    animation: fade-in-up 1s ease-out 1s both;
}

/* スタンプカード */
.hero-stamp-card {
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    border-radius: 30px;
    padding: 40px;
    box-shadow: var(--shadow-lg);
    margin-bottom: 50px;
    animation: fade-in-up 1s ease-out 0.9s both;
}

.stamp-card-title {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--accent-pink);
    margin-bottom: 25px;
}

.stamp-card-content {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}

.stamp-box {
    text-align: center;
    animation: pop-in 0.5s ease-out both;
}

.stamp-box:nth-child(1) { animation-delay: 1.2s; }
.stamp-box:nth-child(2) { animation-delay: 1.4s; }
.stamp-box:nth-child(3) { animation-delay: 1.6s; }
.stamp-box:nth-child(4) { animation-delay: 1.8s; }

@keyframes pop-in {
    0% { transform: scale(0) rotate(-180deg); opacity: 0; }
    50% { transform: scale(1.2) rotate(10deg); }
    100% { transform: scale(1) rotate(0deg); opacity: 1; }
}

.stamp {
    width: 80px;
    height: 80px;
    background: linear-gradient(135deg, var(--spring-green), var(--spring-pink));
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 2.5rem;
    margin-bottom: 10px;
    box-shadow: var(--shadow-md);
    transition: transform 0.3s;
    cursor: pointer;
}

.stamp:hover {
    transform: scale(1.1) rotate(5deg);
}

.stamp-label {
    font-size: 0.9rem;
    color: var(--text-secondary);
}

.stamp-arrow {
    font-size: 2rem;
    color: var(--accent-green);
    animation: bounce-horizontal 1s infinite;
}

@keyframes bounce-horizontal {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(10px); }
}

.stamp-reward {
    text-align: center;
}

.reward-icon {
    font-size: 4rem;
    margin-bottom: 10px;
    animation: gift-shake 2s infinite;
}

@keyframes gift-shake {
    0%, 100% { transform: rotate(0deg); }
    10%, 30%, 50%, 70%, 90% { transform: rotate(-5deg); }
    20%, 40%, 60%, 80% { transform: rotate(5deg); }
}

.reward-text {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--accent-pink);
    line-height: 1.5;
}

.stamp-note {
    font-size: 0.95rem;
    color: var(--text-secondary);
    text-align: center;
    padding: 15px;
    background: rgba(124, 179, 66, 0.1);
    border-radius: 15px;
    margin-top: 15px;
}

/* スクロールインジケーター */
.scroll-indicator {
    margin-top: 50px;
    animation: fade-in 1s ease-out 2s both;
}

.scroll-text {
    font-size: 1rem;
    color: var(--text-secondary);
    margin-bottom: 10px;
}

.scroll-arrow {
    font-size: 2rem;
    color: var(--accent-green);
    animation: bounce-vertical 2s infinite;
}

@keyframes bounce-vertical {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(15px); }
}

@keyframes fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* ===========================
   イベントセクション
   =========================== */
.events-section {
    padding: 100px 0;
    background: var(--bg-cream);
}

.event-card {
    position: relative;
    background: white;
    border-radius: 40px;
    padding: 60px 50px;
    margin-bottom: 80px;
    box-shadow: var(--shadow-lg);
    overflow: hidden;
    transition: transform 0.4s, box-shadow 0.4s;
    opacity: 0;
    transform: translateY(50px);
    animation: slide-in-view 0.8s ease-out forwards;
}

.event-card:hover {
    transform: translateY(-10px);
    box-shadow: var(--shadow-xl);
}

@keyframes slide-in-view {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* 各イベントの遅延 */
.event-card:nth-child(1) { animation-delay: 0.2s; }
.event-card:nth-child(2) { animation-delay: 0.3s; }
.event-card:nth-child(3) { animation-delay: 0.4s; }
.event-card:nth-child(4) { animation-delay: 0.5s; }
.event-card:nth-child(5) { animation-delay: 0.6s; }
.event-card:nth-child(6) { animation-delay: 0.7s; }
.event-card:nth-child(7) { animation-delay: 0.8s; }

/* イベント装飾 */
.event-decorations {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    pointer-events: none;
    opacity: 0.15;
}

.event-deco {
    position: absolute;
    font-size: 2.5rem;
    animation: float 15s infinite ease-in-out;
}

/* 春のイベント装飾 */
.spring .event-deco.seed1 { top: 10%; left: 5%; }
.spring .event-deco.seed2 { bottom: 15%; right: 10%; animation-delay: 1s; }
.spring .event-deco.cherry1 { top: 20%; right: 15%; animation-delay: 2s; }
.spring .event-deco.cherry2 { bottom: 25%; left: 10%; animation-delay: 3s; }
.spring .event-deco.leaf { top: 50%; right: 5%; animation-delay: 4s; }

/* ケイカ祭り装飾 */
.keika .event-deco.flower1 { top: 15%; left: 10%; }
.keika .event-deco.flower2 { top: 10%; right: 10%; animation-delay: 1s; }
.keika .event-deco.flower3 { bottom: 20%; left: 15%; animation-delay: 2s; }
.keika .event-deco.tea { bottom: 15%; right: 10%; animation-delay: 3s; }

/* ガーデニング装飾 */
.gardening .event-deco.leaf1 { top: 10%; left: 8%; }
.gardening .event-deco.leaf2 { top: 20%; right: 12%; animation-delay: 1s; }
.gardening .event-deco.flower { bottom: 20%; left: 10%; animation-delay: 2s; }
.gardening .event-deco.tool { bottom: 15%; right: 8%; animation-delay: 3s; }

/* アマチャ装飾 */
.amacha .event-deco.hydrangea1 { top: 15%; left: 10%; }
.amacha .event-deco.hydrangea2 { top: 20%; right: 10%; animation-delay: 1s; }
.amacha .event-deco.tea { bottom: 20%; left: 15%; animation-delay: 2s; }
.amacha .event-deco.leaf { bottom: 15%; right: 10%; animation-delay: 3s; }

/* 夕暮れ装飾 */
.evening .event-deco.star1 { top: 10%; left: 10%; animation: twinkle 2s infinite; }
.evening .event-deco.star2 { top: 15%; right: 10%; animation: twinkle 2s infinite 0.5s; }
.evening .event-deco.moon { top: 20%; right: 15%; animation-delay: 1s; }
.evening .event-deco.flower { bottom: 20%; left: 10%; animation-delay: 2s; }
.evening .event-deco.music { bottom: 15%; right: 10%; animation: music-note 3s infinite; }

@keyframes twinkle {
    0%, 100% { opacity: 0.15; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(1.3); }
}

@keyframes music-note {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(10deg); }
}

/* 収穫祭装飾 */
.harvest .event-deco.leaf1 { top: 10%; left: 8%; }
.harvest .event-deco.leaf2 { top: 15%; right: 10%; animation-delay: 1s; }
.harvest .event-deco.pumpkin { bottom: 20%; left: 10%; animation-delay: 2s; }
.harvest .event-deco.acorn { bottom: 15%; right: 8%; animation-delay: 3s; }

/* 藍染め装飾 */
.indigo .event-deco.wave1 { top: 15%; left: 10%; animation: wave-motion 4s infinite; }
.indigo .event-deco.wave2 { top: 25%; right: 10%; animation: wave-motion 4s infinite 2s; }
.indigo .event-deco.leaf { bottom: 20%; left: 15%; animation-delay: 1s; }
.indigo .event-deco.art { bottom: 15%; right: 10%; animation-delay: 2s; }

@keyframes wave-motion {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(20px); }
}

/* イベントヘッダー */
.event-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 30px;
}

.event-number {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--accent-green);
    background: var(--spring-green);
    padding: 8px 20px;
    border-radius: 20px;
}

.event-date {
    font-size: 2.8rem;
    font-weight: 700;
    color: var(--text-primary);
}

.day-of-week {
    font-size: 1.5rem;
    color: var(--text-secondary);
}

/* イベント画像 */
.event-image-container {
    width: 100%;
    margin-bottom: 40px;
    border-radius: 25px;
    overflow: hidden;
    box-shadow: var(--shadow-md);
    transition: transform 0.3s, box-shadow 0.3s;
}

.event-image {
    width: 100%;
    height: auto;
    display: block;
    transition: transform 0.4s ease;
}

.event-card:hover .event-image-container {
    transform: scale(1.02);
    box-shadow: var(--shadow-lg);
}

.event-card:hover .event-image {
    transform: scale(1.05);
}

/* イベントコンテンツ */
.event-content {
    text-align: center;
}

.event-title {
    font-size: 3rem;
    font-weight: 900;
    margin-bottom: 15px;
    color: var(--text-primary);
}

.event-subtitle {
    font-size: 1.4rem;
    color: var(--accent-green);
    margin-bottom: 25px;
    font-weight: 600;
}

.event-badge {
    display: inline-block;
    padding: 12px 30px;
    border-radius: 30px;
    font-size: 1.2rem;
    font-weight: 700;
    margin-bottom: 25px;
    animation: badge-pulse 2s infinite;
}

@keyframes badge-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

.event-badge.gw {
    background: linear-gradient(135deg, var(--spring-pink), var(--spring-green));
    color: var(--text-accent);
}

.event-badge.authentic {
    background: linear-gradient(135deg, var(--summer-blue), var(--summer-purple));
    color: white;
}

.event-badge.magical {
    background: linear-gradient(135deg, #ffd4a3, #4a5568);
    color: white;
}

.event-badge.reward {
    background: linear-gradient(135deg, var(--autumn-orange), var(--accent-gold));
    color: var(--text-accent);
    font-size: 1.4rem;
}

.event-badge.final {
    background: linear-gradient(135deg, var(--indigo-blue), #2d3748);
    color: white;
}

/* イベント情報 */
.event-info {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin: 30px 0;
    padding: 30px;
    background: linear-gradient(135deg, rgba(212, 241, 212, 0.3), rgba(204, 231, 255, 0.2));
    backdrop-filter: blur(10px);
    border-radius: 25px;
    border: 1px solid rgba(124, 179, 66, 0.2);
}

.info-item {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    font-size: 1.15rem;
}

.info-item i {
    color: var(--accent-green);
    font-size: 1.3rem;
}

.info-item.highlight {
    font-weight: 700;
    color: var(--accent-pink);
}

/* イベント詳細説明 */
.event-description-full {
    text-align: left;
    margin-top: 40px;
}

.description-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--accent-green);
    margin: 30px 0 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.description-item {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    padding: 20px;
    background: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(5px);
    border-radius: 20px;
    margin-bottom: 15px;
    transition: transform 0.3s, box-shadow 0.3s;
    border: 1px solid rgba(124, 179, 66, 0.1);
}

.description-item:hover {
    transform: translateX(10px);
    box-shadow: var(--shadow-md);
}

.item-icon {
    font-size: 2rem;
    flex-shrink: 0;
}

.item-content {
    flex: 1;
}

.item-content strong {
    display: block;
    font-size: 1.2rem;
    color: var(--text-primary);
    margin-bottom: 8px;
}

.item-content p {
    font-size: 1.05rem;
    color: var(--text-secondary);
    line-height: 1.8;
}

.description-item.highlight {
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.15), rgba(240, 98, 146, 0.15));
    border: 2px solid rgba(255, 215, 0, 0.3);
}

/* 持ち物リスト */
.info-list {
    list-style: none;
    padding-left: 0;
}

.info-list li {
    padding: 12px 20px;
    background: rgba(255, 255, 255, 0.7);
    border-radius: 15px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 1.05rem;
}

.info-list li:before {
    content: "✓";
    color: var(--accent-green);
    font-weight: 700;
    font-size: 1.3rem;
}

/* イベント注釈 */
.event-note {
    margin-top: 25px;
    padding: 20px;
    background: linear-gradient(135deg, rgba(124, 179, 66, 0.1), rgba(204, 231, 255, 0.1));
    border-radius: 20px;
    border-left: 4px solid var(--accent-green);
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.event-note i {
    color: var(--accent-green);
    font-size: 1.5rem;
    flex-shrink: 0;
}

.event-note p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-primary);
}

/* イベント販売情報 */
.event-sales-info {
    margin-top: 25px;
    padding: 20px 25px;
    background: linear-gradient(135deg, rgba(124, 179, 66, 0.15), rgba(240, 98, 146, 0.1));
    border-radius: 20px;
    border: 2px solid rgba(124, 179, 66, 0.3);
}

.event-sales-info p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0;
}

.event-sales-info i {
    color: var(--accent-pink);
    font-size: 1.3rem;
}

/* ===========================
   スタンプラリーセクション
   =========================== */
.stamp-rally-section {
    padding: 100px 0;
    background: linear-gradient(135deg, var(--spring-pink) 0%, var(--spring-green) 50%, var(--summer-blue) 100%);
}

.section-header {
    text-align: center;
    margin-bottom: 60px;
}

.section-title {
    font-size: 3.5rem;
    font-weight: 900;
    color: var(--text-primary);
    margin-bottom: 20px;
}

.section-subtitle {
    font-size: 1.6rem;
    color: var(--text-secondary);
}

.stamp-rally-visual {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    align-items: start;
}

.stamp-card-large {
    background: white;
    border-radius: 30px;
    padding: 50px;
    box-shadow: var(--shadow-xl);
}

.stamp-card-header h3 {
    font-size: 1.6rem;
    text-align: center;
    color: var(--accent-green);
    margin-bottom: 35px;
    font-weight: 700;
}

.stamp-slots {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 25px;
    margin-bottom: 35px;
}

.stamp-slot {
    text-align: center;
    padding: 25px;
    background: var(--spring-green);
    border-radius: 20px;
    transition: transform 0.3s;
}

.stamp-slot:hover {
    transform: scale(1.05) rotate(2deg);
}

.slot-stamp {
    font-size: 3.5rem;
    margin-bottom: 12px;
}

.slot-label {
    font-size: 1rem;
    color: var(--text-secondary);
    font-weight: 600;
}

.completion-message {
    text-align: center;
    padding: 30px;
    background: linear-gradient(135deg, var(--accent-gold), var(--accent-pink));
    border-radius: 25px;
}

.completion-icon {
    font-size: 3.5rem;
    margin-bottom: 12px;
}

.completion-text {
    font-size: 1.4rem;
    font-weight: 700;
    color: white;
}

.rally-benefits {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.benefit-item {
    display: flex;
    align-items: flex-start;
    gap: 25px;
    background: white;
    padding: 30px;
    border-radius: 25px;
    box-shadow: var(--shadow-md);
    transition: transform 0.3s;
}

.benefit-item:hover {
    transform: translateX(10px);
}

.benefit-emoji {
    font-size: 3rem;
    flex-shrink: 0;
}

.benefit-text h4 {
    font-size: 1.3rem;
    color: var(--text-primary);
    margin-bottom: 10px;
}

.benefit-text p {
    font-size: 1.05rem;
    line-height: 1.8;
    color: var(--text-secondary);
}

/* ===========================
   アクセスセクション
   =========================== */
.access-section {
    padding: 100px 0;
    background: var(--bg-cream);
}

.access-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    margin-top: 50px;
}

.access-info {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.info-box {
    background: white;
    padding: 35px;
    border-radius: 25px;
    box-shadow: var(--shadow-md);
    transition: transform 0.3s;
}

.info-box:hover {
    transform: translateY(-5px);
}

.info-box h3 {
    font-size: 1.6rem;
    margin-bottom: 20px;
    color: var(--accent-green);
    font-weight: 700;
}

.info-box p {
    font-size: 1.15rem;
    margin-bottom: 10px;
    line-height: 1.8;
}

.info-box .location-name {
    font-weight: 700;
    font-size: 1.3rem;
    color: var(--text-primary);
}

.info-box .address {
    color: var(--text-secondary);
    font-size: 1.05rem;
}

.info-box.contact {
    background: linear-gradient(135deg, rgba(124, 179, 66, 0.1), rgba(204, 231, 255, 0.1));
    border: 2px solid var(--accent-green);
}

.contact-text {
    font-size: 1.1rem;
    margin-bottom: 20px;
}

.contact-methods {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin: 20px 0;
}

.contact-item {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px 20px;
    background: white;
    border-radius: 15px;
    font-weight: 600;
}

.contact-item.clickable {
    text-decoration: none;
    color: inherit;
    transition: transform 0.3s, box-shadow 0.3s, background 0.3s;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
}

.contact-item.clickable:hover {
    transform: translateX(5px);
    box-shadow: var(--shadow-md);
    background: linear-gradient(135deg, rgba(124, 179, 66, 0.1), rgba(204, 231, 255, 0.1));
}

.contact-item i {
    color: var(--accent-green);
    font-size: 1.5rem;
    flex-shrink: 0;
}

.contact-info {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.contact-label {
    font-size: 1rem;
    color: var(--text-primary);
}

.contact-detail {
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--accent-green);
}

.contact-note {
    font-weight: 600;
    color: var(--text-primary);
    margin-top: 20px;
    text-align: center;
    font-size: 1.05rem;
}

.map-container h3 {
    font-size: 1.6rem;
    margin-bottom: 20px;
    color: var(--accent-green);
    font-weight: 700;
}

.meeting-point-title {
    margin-top: 50px !important;
}

.map-description {
    font-size: 1.2rem;
    color: var(--text-primary);
    margin-bottom: 15px;
    font-weight: 600;
}

.map-wrapper {
    border-radius: 20px;
    overflow: hidden;
    box-shadow: var(--shadow-lg);
    margin-bottom: 15px;
}

.map-note {
    font-size: 1rem;
    color: var(--text-secondary);
    text-align: center;
    margin-bottom: 10px;
}

.meeting-note {
    font-size: 1.1rem;
    color: var(--text-primary);
    text-align: center;
    margin-top: 20px;
    padding: 15px;
    background: linear-gradient(135deg, rgba(124, 179, 66, 0.1), rgba(204, 231, 255, 0.1));
    border-radius: 15px;
    font-weight: 600;
}

.map-link {
    color: var(--accent-green);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-bottom 0.3s;
}

.map-link:hover {
    border-bottom: 2px solid var(--accent-green);
}

/* ===========================
   シェアセクション
   =========================== */
.share-section {
    padding: 80px 0;
    background: white;
}

.share-title {
    text-align: center;
    font-size: 2rem;
    margin-bottom: 15px;
    color: var(--text-primary);
    font-weight: 700;
}

.share-description {
    text-align: center;
    font-size: 1.2rem;
    color: var(--text-secondary);
    margin-bottom: 40px;
}

.share-buttons {
    display: flex;
    justify-content: center;
    gap: 20px;
    flex-wrap: wrap;
}

.share-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 18px 35px;
    border: none;
    border-radius: 50px;
    font-size: 1.15rem;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.3s, box-shadow 0.3s;
    color: white;
    box-shadow: var(--shadow-md);
}

.share-btn:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-lg);
}

.share-btn.twitter {
    background: #000000;
}

.share-btn.facebook {
    background: #1877f2;
}

.share-btn.instagram {
    background: linear-gradient(45deg, #f09433 0%,#e6683c 25%,#dc2743 50%,#cc2366 75%,#bc1888 100%);
}

.share-btn.line {
    background: #06c755;
}

.share-btn.copy {
    background: #6c757d;
}

.copy-notification {
    text-align: center;
    margin-top: 25px;
    padding: 18px;
    background: var(--accent-green);
    color: white;
    border-radius: 15px;
    font-weight: 600;
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity 0.3s, transform 0.3s;
}

.copy-notification.show {
    opacity: 1;
    transform: translateY(0);
}

/* ===========================
   フッター
   =========================== */
.footer {
    background: linear-gradient(135deg, var(--spring-green), var(--summer-blue));
    padding: 60px 20px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.footer-decorations {
    display: flex;
    justify-content: center;
    gap: 30px;
    margin-bottom: 25px;
    font-size: 2.5rem;
}

.footer-deco {
    animation: float 10s infinite ease-in-out;
}

.footer-deco:nth-child(1) { animation-delay: 0s; }
.footer-deco:nth-child(2) { animation-delay: 1s; }
.footer-deco:nth-child(3) { animation-delay: 2s; }
.footer-deco:nth-child(4) { animation-delay: 3s; }

.footer-text {
    font-size: 1.8rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 25px;
}

.footer-info {
    margin: 20px 0;
}

.footer-organizer, .footer-location {
    font-size: 1.1rem;
    color: var(--text-primary);
    margin: 8px 0;
}

.footer-location-label {
    font-size: 1rem;
    font-weight: 600;
    color: var(--accent-green);
    margin: 12px 0 5px 0;
}

.footer-copyright {
    font-size: 1rem;
    color: var(--text-secondary);
    margin-top: 20px;
}

/* ===========================
   レスポンシブデザイン
   =========================== */
@media (max-width: 1024px) {
    .stamp-rally-visual {
        grid-template-columns: 1fr;
    }
    
    .access-content {
        grid-template-columns: 1fr;
    }
    
    .qr-image {
        width: 180px;
        height: 180px;
    }
}

@media (max-width: 768px) {
    .title-line1 { font-size: 2.5rem; }
    .title-line2 { font-size: 3.5rem; }
    
    .hero-description {
        font-size: 1rem;
    }
    
    .hero-image-container {
        max-width: 100%;
        border-radius: 20px;
    }
    
    .hero-stamp-card {
        padding: 30px 20px;
    }
    
    .stamp-card-content {
        gap: 15px;
    }
    
    .stamp {
        width: 70px;
        height: 70px;
        font-size: 2rem;
    }
    
    .event-card {
        padding: 40px 30px;
        border-radius: 30px;
    }
    
    .event-title {
        font-size: 2.2rem;
    }
    
    .event-image-container {
        border-radius: 20px;
    }
    
    .section-title {
        font-size: 2.5rem;
    }
    
    .stamp-slots {
        grid-template-columns: 1fr;
    }
    
    .share-buttons {
        flex-direction: column;
        align-items: stretch;
    }
    
    .description-item {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
    
    .contact-detail {
        font-size: 1.1rem;
    }
    
    .qr-image {
        width: 160px;
        height: 160px;
    }
}

@media (max-width: 480px) {
    .hero-image-container {
        border-radius: 15px;
    }
    
    .hero-badge {
        padding: 10px 20px;
    }
    
    .badge-text {
        font-size: 1.2rem;
    }
    
    .title-line1 { font-size: 2rem; }
    .title-line2 { font-size: 2.8rem; }
    
    .hero-subtitle {
        font-size: 1.4rem;
    }
    
    .stamp-card-title {
        font-size: 1.5rem;
    }
    
    .event-date {
        font-size: 2.2rem;
    }
    
    .event-title {
        font-size: 1.9rem;
    }
    
    .event-image-container {
        border-radius: 15px;
    }
}