:root {
    --dynamo: #16A34A;
    --dynamo-light: #86EFAC;
    --dynamo-pale: #F0FDF4;
    --blaze: #DC2626;
    --blaze-light: #FCA5A5;
    --blaze-pale: #FFF1F2;
    --tempo: #D97706;
    --tempo-light: #FCD34D;
    --tempo-pale: #FFFBEB;
    --steel: #1E3A8A;
    --steel-light: #93C5FD;
    --steel-pale: #EFF6FF;
    --ink: #1E293B;
    --bg: #FFFDF9;
}
* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:'Noto Sans JP',sans-serif; color:var(--ink); background:var(--bg); overflow-x:hidden; }
.mincho { font-family:'Shippori Mincho',serif; }
.bebas { font-family:'Bebas Neue',sans-serif; }

/* STICKY BAR */
#sticky-bar {
    position:fixed; top:0; left:0; right:0; z-index:1000;
    background:rgba(255,253,249,0.96); backdrop-filter:blur(12px);
    border-bottom:3px solid var(--dynamo);
    box-shadow:0 2px 20px rgba(0,0,0,0.08);
    transform:translateY(-100%);
    transition:transform 0.4s cubic-bezier(0.4,0,0.2,1);
}
#sticky-bar.visible { transform:translateY(0); }
#sticky-bar-inner { max-width:1200px; margin:0 auto; padding:10px 24px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
#sticky-bar .event-info { font-size:12px; line-height:1.6; flex-shrink:0; color:var(--ink); }
#sticky-bar .event-info strong { color:var(--dynamo); font-size:13px; }
#sticky-countdown { display:flex; gap:8px; align-items:center; flex-shrink:0; }
#sticky-countdown .unit { text-align:center; }
#sticky-countdown .num { font-family:'Bebas Neue',sans-serif; font-size:22px; color:var(--ink); line-height:1; }
#sticky-countdown .lbl { font-size:9px; color:var(--dynamo); letter-spacing:0.1em; }
#sticky-countdown .sep { font-size:20px; color:var(--dynamo); font-weight:900; padding-bottom:4px; }
.sticky-cta-btn { background:linear-gradient(135deg,var(--dynamo),#22C55E); color:white; font-weight:900; font-size:13px; padding:10px 20px; border-radius:50px; border:none; cursor:pointer; white-space:nowrap; text-decoration:none; box-shadow:0 4px 15px rgba(22,163,74,0.35); transition:all 0.2s; }
.sticky-cta-btn:hover { transform:scale(1.05); }

/* HERO */
.hero-section {
    background-image:linear-gradient(135deg, rgba(255,253,249,0.80) 0%, rgba(240,253,244,0.76) 50%, rgba(255,251,235,0.80) 100%), url('fuyugai_illustration.jpg');
    background-size:cover; background-position:center top; background-attachment:scroll;
    min-height:100vh; min-height:100dvh;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    text-align:center; padding:60px 20px 80px; position:relative; overflow:hidden;
}
.hero-section::before { content:''; position:absolute; top:-80px; right:-80px; width:400px; height:400px; background:radial-gradient(circle, rgba(22,163,74,0.12) 0%, transparent 70%); border-radius:50%; pointer-events:none; }
.hero-deco-1 { position:absolute; top:15%; left:5%; width:22px; height:22px; border-radius:50%; background:var(--dynamo); opacity:0.2; }
.hero-deco-2 { position:absolute; top:30%; right:8%; width:15px; height:15px; border-radius:50%; background:var(--blaze); opacity:0.18; }
.hero-deco-3 { position:absolute; bottom:25%; left:10%; width:18px; height:18px; border-radius:50%; background:var(--tempo); opacity:0.22; }

.freq-bar { display:flex; justify-content:center; gap:6px; margin-bottom:20px; }
.freq-bar span { display:inline-block; width:36px; height:5px; border-radius:3px; }

.hero-main-title { font-family:'Shippori Mincho',serif; font-size:clamp(2rem,6vw,4.5rem); font-weight:700; color:var(--ink); line-height:1.3; margin-bottom:14px; }
.hero-main-title .hl { background:linear-gradient(135deg,var(--dynamo),#22C55E); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
.hero-sub1 { font-size:clamp(0.85rem,2.5vw,1.1rem); font-weight:700; color:var(--dynamo); letter-spacing:0.15em; margin-bottom:10px; }
.hero-sub2 { font-family:'Shippori Mincho',serif; font-size:clamp(0.95rem,2.5vw,1.3rem); color:#475569; line-height:1.7; margin-bottom:28px; }

.hero-date-block { background:white; border:2px solid var(--dynamo); border-radius:16px; padding:14px 28px; display:inline-block; margin-bottom:28px; box-shadow:0 4px 20px rgba(22,163,74,0.12); }
.hero-date-main { font-family:'Bebas Neue',sans-serif; font-size:clamp(1.5rem,5vw,3rem); color:var(--ink); letter-spacing:0.05em; line-height:1; }
.hero-date-sub { font-size:26px; color:var(--dynamo); font-weight:700; letter-spacing:0.15em; margin-top:10px; }

.hero-countdown.hidden { display: none; }
.hero-countdown { display:flex; gap:clamp(4px,2vw,12px); justify-content:center; margin-bottom:32px; width:100%; box-sizing:border-box; }
.hero-countdown .unit { text-align:center; background:white; border:2px solid rgba(22,163,74,0.3); border-radius:12px; padding:clamp(8px,2vw,12px) clamp(6px,2vw,14px); min-width:0; flex:1; box-shadow:0 2px 10px rgba(0,0,0,0.05); }
.hero-countdown .num { font-family:'Bebas Neue',sans-serif; font-size:clamp(1.8rem,7vw,2.4rem); color:var(--dynamo); line-height:1; display:block; }
.hero-countdown .lbl { font-size:clamp(8px,2vw,10px); color:#64748B; letter-spacing:0.08em; margin-top:2px; display:block; }
.hero-countdown .sep { font-size:clamp(1.2rem,4vw,2rem); color:var(--dynamo); font-weight:900; align-self:center; padding-bottom:12px; flex-shrink:0; }

/* Buttons */
.btn-main { display:inline-block; background:linear-gradient(135deg,var(--dynamo),#22C55E); color:white; font-weight:900; padding:clamp(16px,3vw,20px) clamp(24px,6vw,48px); border-radius:60px; font-size:clamp(1rem,2.5vw,1.3rem); letter-spacing:0.05em; text-decoration:none; border:none; cursor:pointer; box-shadow:0 8px 30px rgba(22,163,74,0.35); transition:all 0.35s; animation:pulse-green 2.5s ease-in-out infinite; max-width:100%; box-sizing:border-box; }
.btn-main:hover { transform:translateY(-4px) scale(1.03); box-shadow:0 16px 40px rgba(22,163,74,0.5); animation:none; }
@keyframes pulse-green { 0%,100% { box-shadow:0 8px 30px rgba(22,163,74,0.35), 0 0 0 0 rgba(22,163,74,0); } 50% { box-shadow:0 8px 30px rgba(22,163,74,0.35), 0 0 0 10px rgba(22,163,74,0.07); } }
.btn-ticket { display:inline-block; background:linear-gradient(135deg,var(--blaze),#F97316); color:white; font-weight:900; padding:clamp(16px,3vw,20px) clamp(24px,6vw,48px); border-radius:60px; font-size:clamp(1rem,2.5vw,1.3rem); letter-spacing:0.05em; text-decoration:none; border:none; cursor:pointer; box-shadow:0 8px 30px rgba(220,38,38,0.35); transition:all 0.35s; animation:pulse-red 2.5s ease-in-out infinite; max-width:100%; box-sizing:border-box; }
.btn-ticket:hover { transform:translateY(-4px); animation:none; }
@keyframes pulse-red { 0%,100% { box-shadow:0 8px 30px rgba(220,38,38,0.35), 0 0 0 0 rgba(220,38,38,0); } 50% { box-shadow:0 8px 30px rgba(220,38,38,0.35), 0 0 0 10px rgba(220,38,38,0.07); } }

.urgency-badge { display:inline-flex; align-items:center; gap:8px; background:rgba(220,38,38,0.08); border:1px solid rgba(220,38,38,0.3); color:var(--blaze); font-size:24px; font-weight:700; letter-spacing:0.08em; padding:12px 24px; border-radius:50px; }
.urgency-badge .dot { width:7px; height:7px; background:var(--blaze); border-radius:50%; animation:blink 1.2s ease-in-out infinite; }
@keyframes blink { 0%,100%{opacity:1;} 50%{opacity:0.2;} }

/* Sections */
.section-padding { padding:90px 20px; }
.section-label { display:inline-flex; align-items:center; gap:10px; font-size:11px; font-weight:700; letter-spacing:0.4em; text-transform:uppercase; color:var(--dynamo); margin-bottom:20px; }
.section-label::before,.section-label::after { content:''; width:24px; height:2px; background:var(--dynamo); }
.accent-line { width:60px; height:4px; background:linear-gradient(90deg,var(--dynamo),var(--tempo)); border-radius:2px; margin:16px auto; }

/* Problem */
.problem-section { background:linear-gradient(160deg,#FFFDF9 0%,#F0FDF4 100%); }
.problem-card { background:white; border-left:5px solid var(--blaze); border-radius:0 16px 16px 0; padding:22px 24px; box-shadow:0 2px 15px rgba(0,0,0,0.05); transition:transform 0.3s,box-shadow 0.3s; }
.problem-card:hover { transform:translateX(6px); box-shadow:0 4px 20px rgba(220,38,38,0.1); }

/* Paradigm */
.paradigm-section { background:linear-gradient(135deg,#EFF6FF 0%,#F0FDF4 100%); }

/* Exp section */
.exp-section { background:linear-gradient(135deg,#2D3A4F 0%,#374151 100%); position:relative; overflow:hidden; }
.exp-section::before { content:''; position:absolute; inset:0; background-image:url('https://images.unsplash.com/photo-1517048676732-d65bc937f952?auto=format&fit=crop&q=80&w=1920'); background-size:cover; background-position:center; opacity:0.12; filter:grayscale(0); pointer-events:none; }
.exp-section::after { content:''; position:absolute; inset:0; background:radial-gradient(ellipse at 10% 80%,rgba(22,163,74,0.15) 0%,transparent 40%),radial-gradient(ellipse at 90% 20%,rgba(217,119,6,0.12) 0%,transparent 40%); pointer-events:none; }
.exp-card { background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.15); border-radius:20px; padding:32px; backdrop-filter: blur(4px); }

/* Role cards */
.role-card { background:white; border-radius:20px; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.07); transition:transform 0.3s,box-shadow 0.3s; }
.role-card:hover { transform:translateY(-8px); box-shadow:0 16px 40px rgba(0,0,0,0.13); }
.role-card img.fish { width:80px; height:80px; object-fit:contain; margin:0 auto 8px; }

/* Speakers */
.speaker-card { background:white; border-radius:20px; padding:40px 24px; box-shadow:0 4px 24px rgba(0,0,0,0.06); transition:transform 0.3s,box-shadow 0.3s; text-align:center; }
.speaker-card:hover { transform:translateY(-6px); box-shadow:0 16px 40px rgba(0,0,0,0.1); }
.profile-avatar { width:144px; height:144px; border-radius:50%; margin:0 auto 24px; overflow:hidden; border:4px solid var(--dynamo-pale); background:#F1F5F9; box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.profile-avatar img { width:100%; height:100%; object-fit:cover; }
.speaker-role-badge { display:inline-block; background:var(--dynamo-pale); color:var(--dynamo); font-size:11px; font-weight:700; letter-spacing:0.12em; padding:4px 14px; border-radius:50px; margin-bottom:12px; border:1px solid rgba(22,163,74,0.2); }

/* Schedule Timeline */
.timeline-item { position:relative; padding-left:40px; padding-bottom:48px; border-left:2px solid var(--dynamo-light); }
.timeline-item::before { content:''; position:absolute; left:-9px; top:0; width:16px; height:16px; border-radius:50%; background:var(--dynamo); border:4px solid var(--dynamo-pale); box-shadow:0 0 0 4px rgba(22,163,74,0.1); }
.timeline-item:last-child { border-left-color:transparent; padding-bottom:0; }
.timeline-time { font-family:'Bebas Neue',sans-serif; font-size:24px; color:var(--dynamo); line-height:1; margin-bottom:6px; }
.timeline-content { background:white; border-radius:16px; padding:20px 24px; box-shadow:0 4px 15px rgba(0,0,0,0.04); border:1px solid rgba(226,232,240,0.8); }

/* Experience Cards */
.exp-detail-card { background:white; border-radius:24px; padding:32px; box-shadow:0 10px 30px rgba(0,0,0,0.05); transition:all 0.3s; border-top:8px solid var(--dynamo); height: 100%; }
.exp-detail-card:hover { transform:translateY(-10px); box-shadow:0 20px 40px rgba(22,163,74,0.1); }
.exp-num { font-family:'Bebas Neue',sans-serif; font-size:48px; color:var(--dynamo-light); line-height:1; margin-bottom:12px; }

/* Event overview */
.event-overview-section { background:linear-gradient(160deg,#F0FDF4 0%,#FFFBEB 100%); }
.overview-card { background:white; border-radius:24px; padding:40px; box-shadow:0 8px 40px rgba(0,0,0,0.07); border-top:6px solid var(--dynamo); }
.overview-label { font-size:24px; font-weight:700; letter-spacing:0.3em; text-transform:uppercase; color:var(--dynamo); margin-bottom:12px; }
.overview-date-block { background:linear-gradient(135deg,var(--dynamo),#22C55E); color:white; border-radius:16px; padding:32px 32px; }
.overview-date-num { font-family:'Bebas Neue',sans-serif; font-size:clamp(2.5rem, 8vw, 4.5rem); line-height:1.1; letter-spacing:0.03em; }
.overview-date-num span { font-family:'Noto Sans JP', sans-serif; font-weight:900; font-size: 0.6em; margin: 0 4px; vertical-align: middle; }
.overview-date-detail { font-size:32px; font-weight:700; opacity:0.9; margin-top:10px; }
.overview-note { font-size:18px; opacity:0.85; margin-top:12px; font-weight:400; }
.overview-venue-block { background:var(--steel-pale); border-radius:12px; padding:20px 24px; }
.map-container { border-radius:16px; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.1); margin-top:20px; }
.map-container iframe { display:block; width:100%; height:320px; border:0; }

/* --- パートナー紹介セクション --- */
#partners .partner-card {
    background: #fff;
    border-radius: 24px;
    padding: 48px 24px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.05);
    text-align: center;
    border: 1px solid #f1f5f9;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    
    /* カードの高さを揃えるための設定 */
    display: flex;
    flex-direction: column;
    height: 100%; 
}

#partners .partner-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 50px rgba(0,0,0,0.08);
}

#partners .partner-logo-container {
    width: 100%;
    max-width: 240px;
    height: 120px;
    margin: 0 auto 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0; /* ロゴ部分が潰れないように固定 */
}

#partners .partner-logo-container img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

#partners .partner-name {
    font-size: 22px !important;
    font-weight: 900;
    color: var(--ink);
    margin-bottom: 24px;
    font-family: 'Noto Sans JP', sans-serif;
    line-height: 1.4;
    flex-shrink: 0;
}

#partners .partner-text {
    font-size: 15px !important;
    color: #475569;
    line-height: 1.8;
    text-align: left;
    margin-bottom: 0;
    /* 文章が短くてもカードを下に伸ばす設定 */
    flex-grow: 1; 
}

@media (max-width: 1024px) {
    #partners .partner-name {
        font-size: 20px !important;
    }
}

/* Tickets */
.ticket-section { background:linear-gradient(160deg,#24344d 0%,#2d3a4f 100%); position:relative; overflow:visible; }
.ticket-section::before { content:''; position:absolute; inset:0; background-image:url('https://images.unsplash.com/photo-1511632765486-a01980e01a18?auto=format&fit=crop&q=80&w=1920'); background-size:cover; background-position:center; opacity:0.1; filter:none; pointer-events:none; }
.ticket-card { background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.15); border-radius:24px; padding:36px 28px; display:flex; flex-direction:column; justify-content:space-between; transition:transform 0.3s,box-shadow 0.3s; position:relative; overflow:visible; backdrop-filter: blur(4px); }
.ticket-card::before { content:''; position:absolute; top:0; left:0; right:0; height:3px; background:rgba(255,255,255,0.15); border-radius: 24px 24px 0 0; }
.ticket-card:hover { transform:translateY(-6px); box-shadow:0 20px 50px rgba(0,0,0,0.4); }
.ticket-card.featured { background:rgba(255,255,255,0.12); border-color:var(--tempo); border-width:2px; transform:scale(1.04); margin-top: 10px; }
.ticket-card.featured::before { background:linear-gradient(90deg,var(--dynamo),var(--tempo),var(--blaze)); }
.ticket-card.featured:hover { transform:scale(1.04) translateY(-6px); }
.ticket-name { color:rgba(255,255,255,0.7); font-size:13px; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; margin-bottom:12px; text-align:center; }
.ticket-price { font-family:'Bebas Neue',sans-serif; font-size:3.2rem; color:#fff; text-align:center; line-height:1; }
.ticket-price-unit { font-family:'Noto Sans JP',sans-serif; font-size:1rem; color:rgba(255,255,255,0.6); font-weight:400; }
.ticket-badge { display:inline-block; background:var(--blaze); color:white; font-size:11px; font-weight:700; padding:4px 12px; border-radius:4px; letter-spacing:0.1em; margin:8px auto; }
.ticket-note { font-size:12px; color:rgba(255,255,255,0.55); text-align:center; line-height:1.6; margin:10px 0 20px; }
.ticket-recommend-note { font-size:12px; color:var(--tempo-light); text-align:center; line-height:1.7; margin:10px 0 20px; font-weight:700; }
.ticket-btn { display:block; text-align:center; padding:16px; border-radius:12px; font-weight:900; font-size:15px; cursor:pointer; text-decoration:none; transition:all 0.3s; border:none; letter-spacing:0.05em; width:100%; }
.ticket-btn-normal { background:rgba(255,255,255,0.15); color:rgba(255,255,255,0.9); }
.ticket-btn-normal:hover { background:rgba(255,255,255,0.25); color:#fff; }
.ticket-btn-featured { background:linear-gradient(135deg,var(--dynamo),#22C55E); color:white; box-shadow:0 8px 25px rgba(22,163,74,0.4); animation:pulse-green 2.5s infinite; }
.ticket-btn-featured:hover { transform:scale(1.03); animation:none; }
.ticket-btn-member { background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.5); }
.ticket-recommend-badge { position:absolute; top:-16px; left:50%; transform:translateX(-50%); background:linear-gradient(135deg,var(--tempo),var(--tempo-light)); color:#1E293B; font-size:11px; font-weight:900; padding:6px 20px; border-radius:50px; letter-spacing:0.2em; white-space:nowrap; z-index: 20; }
.seat-indicator { display:flex; align-items:center; justify-content:center; gap:8px; font-size:13px; color:var(--tempo-light); font-weight:700; margin-top:10px; }

/* Wave */
.wave-divider { width:100%; overflow:hidden; line-height:0; margin-bottom:-2px; }
.wave-divider svg { display:block; }

/* Reveal */
.reveal { opacity:0; transform:translateY(28px); transition:opacity 0.7s ease,transform 0.7s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }
.reveal-delay-1 { transition-delay:0.1s; }
.reveal-delay-2 { transition-delay:0.2s; }
.reveal-delay-3 { transition-delay:0.3s; }

/* --- 【追加】横スクロールスライダー --- */
.article-slider-section {
    padding: 60px 0;
    background: #fff;
    overflow: hidden;
}
.article-slider-section .section-label {
    margin-left: 20px;
}
.article-slider-container {
    display: flex;
    width: 100%;
}
.article-track {
    display: flex;
    /* (カード幅300px + 隙間20px) * カード枚数(仮に4枚×2セット=8) */
    width: calc((300px + 20px) * 8); 
    animation: scroll-left 30s linear infinite; /* ここが重要！ */
    }
.article-card {
    width: 300px;
    margin: 0 10px;
    flex-shrink: 0;
    border-radius: 16px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 10px 20px rgba(0,0,0,0.05);
    border: 1px solid #eee;
}
.article-card img {
    width: 100%;
    height: 350px; /* 180pxから350px程度に高くする */
    object-fit: cover; /* これで枠いっぱいに綺麗に収まります */
}
.article-card p {
    padding: 15px;
    font-size: 14px;
    font-weight: bold;
    color: var(--ink);
}
@keyframes scroll-left {
    0% { transform: translateX(0); }
    100% { transform: translateX(calc(-(300px + 20px) * 4)); } /* 4枚分でリセット */
}
.article-slider-container:hover .article-track {
    animation-play-state: paused;
}

@media (max-width:768px) {
    .ticket-card.featured { transform:scale(1); }
    .ticket-card.featured:hover { transform:translateY(-6px); }
    #sticky-countdown { display:none; }
    #sticky-bar-inner { flex-direction: column; padding: 8px 12px; gap: 6px; }
    #sticky-bar .event-info { text-align: center; font-size: 11px; }
    .sticky-cta-btn { width: 100%; text-align: center; padding: 8px 12px; font-size: 12px; }
}
@media (max-width:480px) {
    .hc-sec-hide { display:none; }
    .btn-main,.btn-ticket { display:block; width:100%; text-align:center; padding:18px 20px; }
}

/* 早割吹き出しバッジのスタイル */
.early-bird-badge {
    position: fixed; /* ページをスクロールしてもついてくるように設定 */
    top: 15%;        /* 上から15%の位置（ヒーローセクション内） */
    right: 20px;     /* 右端から20pxの位置 */
    z-index: 2000;   /* 他の要素よりも手前に表示 */
    width: 150px;    /* 吹き出しのサイズ（適宜調整） */
    pointer-events: none; /* クリックを邪魔しない（リンクにするなら削除） */
    
    /* 初期状態：画面の右側に隠しておく */
    transform: translateX(200%); 
    opacity: 0;
    
    /* アニメーション実行：0.8秒遅れて開始 */
    animation: bounceInRight 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
    animation-delay: 0.8s; 
}

.early-bird-badge img {
    width: 100%;
    height: auto;
    filter: drop-shadow(0 10px 20px rgba(0,0,0,0.15)); /* 影をつけて目立たせる */
}

/* 右からバウンドして登場するアニメーション */
@keyframes bounceInRight {
    0% {
        transform: translateX(200%);
        opacity: 0;
    }
    100% {
        transform: translateX(0);
        opacity: 1;
    }
}

/* 【追加演出】ぷかぷか浮く動き（登場後にループ） */
.early-bird-badge {
    animation: 
        bounceInRight 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.8s forwards,
        floating 3s ease-in-out 2s infinite; /* 2秒後から浮遊開始 */
}

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

/* スマホ表示でのサイズ調整 */
@media (max-width: 768px) {
    .early-bird-badge {
        width: 200px;
        top: 20%;
        right: 10px;
    }
}

/* 記事カードをリンクとして扱うための設定 */
a.article-card {
    text-decoration: none; /* 下線を消す */
    display: block;        /* カード全体をクリック可能に */
    color: inherit;        /* 文字色を維持 */
    transition: all 0.3s ease; /* 動きを滑らかに */
    cursor: pointer;
}

/* マウスを乗せた時の演出 */
a.article-card:hover {
    transform: translateY(-8px); /* 少し上に浮く */
    box-shadow: 0 20px 40px rgba(0,0,0,0.1); /* 影を強くする */
}

/* 画像がPNGなので、背景が透過している場合に備えて白背景を保証 */
.article-card img {
    background-color: #fff;
    width: 100%;
    height: 350px; /* 前回の回答通り、縦長画像に合わせて調整 */
    object-fit: cover;
}

/* モジュールワークショップ用追加スタイル */
.module-workshop-info {
    position: relative;
    z-index: 5;
    margin-top: -40px; /* チケットセクションとの隙間を少し詰める（お好みで） */
}

.module-workshop-info .reveal.visible {
    animation: fadeInUp 0.8s ease forwards;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* --- 全体的な文字サイズの底上げ --- */

/* 1. 標準の本文サイズを16pxから18px相当にアップ */
body {
    font-size: 18px; /* 標準を少し大きく設定 */
    line-height: 1.8; /* 行間を広げて読みやすく */
}

/* 2. 各セクションの本文（pタグ） */
p {
    font-size: 1.1rem; /* 約19.8px */
    margin-bottom: 1.5rem;
}

/* 3. 各種カード内の説明テキスト（14px → 16px） */
.problem-card p,
.timeline-content p,
.article-card p,
.speaker-card p,
.organizer p {
    font-size: 16px !important; 
    line-height: 1.7;
}

/* 4. 特典セクションや主催者情報の詳細テキスト（13px → 15px） */
.text-sm, 
.text-slate-500,
.text-slate-600 {
    font-size: 15px !important;
}

/* 5. 非常に小さい注釈テキスト（10px → 12px） */
.text-xs,
.text-\[10px\],
footer .text-xs {
    font-size: 13px !important;
}

/* 6. スライダー内の文字を少し強調 */
.article-card p {
    font-size: 17px !important;
}

/* 7. WDP限定などの重要枠内のテキスト */
#module-workshop p {
    font-size: 16px;
}

/* スマホ表示での微調整（大きすぎると崩れるため） */
@media (max-width: 768px) {
    body {
        font-size: 16px;
    }
    p {
        font-size: 1rem;
    }
}

/* --- スチールの文字強調用クラス --- */
.text-steel-custom {
    color: var(--steel) !important; /* ネイビーを強制適用 */
    font-size: 1.05em !important;   /* 視覚的にダイナモなどと同じサイズに見えるよう微調整 */
    font-weight: bold !important;
}