:root {
    --font-base: 'Times New Roman', serif;
    --font-serif: 'Times New Roman', serif;
    --font-display: 'Times New Roman', serif;
    --color-gold: #c0a062;
    --color-dark: #1a1a1a;
    --color-light: #f5f5f5;
    --color-black: #000;
    --color-white: #fff;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: var(--font-base);
    background-color: var(--color-black);
    color: var(--color-light);
    line-height: 1.8;
    white-space: normal;
}

section h2 {
    font-family: var(--font-serif);
    font-size: 2.5rem; /* User Request: Decrease font size */
    font-weight: 700;
    color: var(--color-gold);
    margin-bottom: 10px;
    text-transform: uppercase;
}

.japanese-title {
    color: var(--color-gold);
}

a {
    color: var(--color-gold);
    text-decoration: none;
    transition: color 0.3s ease;
}

a:hover {
    color: var(--color-white);
}

.container {
    margin: 0 auto;
    padding: 0 20px;
}

header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    padding: 20px 0; /* 上下の余白を増やす */
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(10px);
    z-index: 1000;
    border-bottom: 1px solid var(--color-dark);
}

header .container {
    position: relative; /* absolute配置の子要素の基準点にする */
    display: flex;
    align-items: center;
    padding: 0 30px; /* ヘッダーの左右に余白を追加 */
}

.header-logo {
    max-height: 35px; /* ヘッダーの高さに合わせて調整 */
}

header nav {
    margin: 0 auto; /* 中央に配置 */
    display: flex;
    align-items: center;
}

.logo-placeholder {
    font-family: var(--font-serif);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-gold);
}

header nav ul {
    display: flex;
    flex-direction: row;
    list-style: none;
    gap: 25px; /* Use gap for even spacing */
    justify-content: center; /* Center the items */
}

header nav ul li {
    /* margin-left removed */
}

header nav ul li a {
    font-family: var(--font-serif);
    font-size: 0.9rem; /* 0.7remから0.9remに調整 */
    font-weight: 700;
    text-transform: uppercase;
    text-align: left;
    white-space: nowrap;
}

.hamburger-menu {
    display: none !important; /* PC表示では非表示 (強制) */
}

main {
    padding-top: 75px; /* Adjust for fixed header */
}

section {
    padding: 100px 0;
    text-align: center;
}

#concept h2 {
    font-family: var(--font-serif);
    font-size: 2.5rem; /* User Request: Decrease font size */
    font-weight: 700;
    color: var(--color-gold);
    margin-bottom: 10px; /* 20pxから10pxに調整 */
    text-transform: uppercase;
    letter-spacing: -1px;
}

#concept .japanese-title {
    margin-bottom: 5px;
}

section p {
    font-size: 1.0rem; /* User Request: Decrease font size */
    max-width: 800px;
    margin: 0 auto 40px;
}

.slideshow {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0; /* hero::before の背後、hero の背景の上 */
    overflow: hidden; /* はみ出した画像を隠す */
}

.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    transition: opacity 1.5s ease-in-out; /* フェード効果のみ */
}

.slide.active {
    opacity: 1;
}

#hero {
    text-align: center;
    position: relative;
    height: 0;
    padding-bottom: 56.25%; /* 16:9 Aspect Ratio */
    margin-top: 0;
    background-color: #000; /* 背景色を黒に */
}

.mobile-only {
    display: none;
}

#hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to top, rgba(0,0,0,0.5), rgba(0,0,0,0)); /* グラデーションを調整 */
    z-index: 1; /* スライドショーより手前 */
}

.hero-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -55%);
    z-index: 1;
    width: 100%;
}

.hero-content h1 {
    font-family: var(--font-display);
    font-size: 4.0rem; /* User Request: Decrease font size */
    color: var(--color-white);
    margin-bottom: 10px;
    margin-top: -20px;
    line-height: 1.2;
}

.hero-content .event-date {
    font-family: var(--font-serif);
    font-size: 2.5rem;
    color: var(--color-gold);
    margin-bottom: 20px;
    font-weight: 700;
}

.hero-content .tagline {
    font-size: 1.2rem;
    color: var(--color-light);
    letter-spacing: 2px;
}

    #age-limit {
        background-color: var(--color-dark);
        border-top: 1px solid var(--color-gold);
        border-bottom: 1px solid var(--color-gold);
        margin-top: 10px !important; /* 余白をさらに狭める */
    }

#age-limit h2 {
    color: var(--color-gold);
}

#age-limit p {
    color: var(--color-light);
    max-width: 900px;
    margin: 0 auto;
    font-weight: 300;
}

.details {
    display: flex;
    justify-content: space-around;
    margin-top: 60px;
}

.detail-item h3 {
    font-family: var(--font-serif);
    color: var(--color-gold);
    font-size: 1.5rem;
    margin-bottom: 10px;
}

.event-details-table {
    width: 100%;
    max-width: 700px; /* Adjust as needed */
    margin: 60px auto 0 auto; /* Center the table and add top margin */
    border-collapse: collapse;
    text-align: left;
}

.event-details-table th,
.event-details-table td {
    padding: 15px;
    border-bottom: 1px solid rgba(192, 160, 98, 0.3); /* Goldish border */
}

.event-details-table th {
    color: var(--color-gold);
    font-family: var(--font-serif);
    font-weight: 700;
    width: 35%; /* Adjust column width */
    vertical-align: top;
}

.event-details-table td {
    color: var(--color-light);
    font-size: 1.1rem;
}

.video-placeholder {
    width: 100%;
    max-width: 800px;
    height: auto;
    margin: 40px auto;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-dark);
}
.map-placeholder {
    width: 100%;
    max-width: 800px;
    height: 450px;
    background-color: var(--color-dark);
    margin: 40px auto;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-dark);
}

.map-placeholder iframe {
    width: 100%;
    height: 100%;
    border: 0;
}

.ticket-button {
    display: inline-block;
    background-color: var(--color-gold);
    color: var(--color-black);
    padding: 15px 40px;
    font-size: 1.2rem;
    font-weight: 700;
    text-transform: uppercase;
    border-radius: 5px;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.ticket-button:hover {
    background-color: var(--color-light);
    color: var(--color-black);
}

.ticket-info {
    text-align: left;
    max-width: 750px;
    margin: 40px auto;
    padding: 30px;
    background-color: var(--color-dark);
    border-left: 3px solid var(--color-gold);
}

.ticket-info h3 {
    color: var(--color-gold);
    margin-bottom: 10px;
}

#sponsors {
    background-color: var(--color-dark);
}

#sponsors h2, #supporters h2, #game h2, #prize h2, #supporter-event h2, #after-party h2 {
    margin-bottom: 0;
}

#sponsors p.subtitle, #supporters p.subtitle, #game p.subtitle, #prize p.subtitle, #supporter-event p.subtitle, #after-party p.subtitle, #partner p.subtitle, #special-thanks p.subtitle, #hair-make p.subtitle, #costume-provider p.subtitle {
    font-size: 1.1rem;
    color: var(--color-gold);
    margin-bottom: 40px;
}

#game p, #prize p {
    color: #888; /* グレーに変更 */
    font-size: 1.5rem; /* もうひとこえ大きくする */
}

.sponsor-tier {
    margin-bottom: 60px;
}

.sponsor-tier h3 {
    font-family: var(--font-serif);
    font-size: 2rem;
    color: var(--color-gold);
    margin-bottom: 30px;
    border-bottom: 1px solid var(--color-dark);
    display: inline-block;
    padding-bottom: 10px;
}

.logo-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 40px;
    align-items: center;
}

#special-thanks .logo-grid {
    grid-template-columns: repeat(auto-fit, minmax(200px, max-content));
    justify-content: center;
}

#special-thanks .logo-item {
    position: relative; /* 子要素のabsoluteの基準 */
    padding-bottom: 30px; /* キャプション分のスペースを確保 */
}

#special-thanks .logo-item .logo-caption {
    position: absolute;
    bottom: -30px; /* logo-itemの下端からさらに下げる */
    left: 0;
    right: 0;
    margin-top: 0 !important;  /* グローバル/インラインを無効化 */
    line-height: 28px;          /* 下段の高さと合わせてベースライン統一 */
    text-align: center; /* 中央揃え */
}

#special-thanks .logo-item:first-child .logo-caption {
    position: absolute;
    bottom: 50px;
    left: 0;
    right: 0;
    margin-top: 0 !important;
    line-height: 28px;
    text-align: center;
}

.logo-placeholder {
    height: 100px;
    background-color: #2a2a2a;
    color: #666;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    border: 1px solid #333;
}

.logo-item {
    display: flex;
    flex-direction: column; /* ロゴと名前を縦に並べる */
    align-items: center;
    justify-content: center;
    gap: 0; /* 画像とテキストの間隔をゼロに */
}

.logo-item img {
    max-width: 100%;
    max-height: 200px; /* ロゴを大きく表示 */
    object-fit: contain;
}

.logo-caption {
    font-family: var(--font-serif);
    font-size: 0.9rem;
    color: #aaa;
    padding: 0;
    margin-top: 20px;
}

#relation {
    padding: 40px 0;
    background-color: #111;
}

#relation p {
    font-size: 0.9rem;
    color: #888;
    margin-bottom: 0;
}

footer {
    padding: 60px 0;
    text-align: center;
    background-color: var(--color-dark);
}

footer .footer-logo {
    max-width: 200px; /* ロゴの最大幅を指定 */
    margin-bottom: 20px;
}

footer .footer-logo-placeholder {
    font-size: 1.8rem;
    color: var(--color-gold);
    margin-bottom: 20px;
}

footer p {
    margin-bottom: 10px;
    font-size: 0.9rem;
    color: #aaa;
}

footer .copyright {
    margin-top: 30px;
    font-size: 0.8rem;
    color: #666;
}

#venue-gallery {
    background-color: var(--color-black);
    padding-bottom: 0; /* 下の余白をなくす */
}

.gallery-scroller {
    max-width: 100%;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to right, transparent, #000 5%, #000 95%, transparent);
    mask-image: linear-gradient(to right, transparent, #000 5%, #000 95%, transparent);
    margin-top: 40px;
}

.gallery-track {
    display: flex;
    width: max-content;
    animation: scroll 40s linear infinite;
    will-change: transform;
}

@keyframes scroll {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

.gallery-track img {
    height: 400px; /* 画像の高さを統一 */
    width: auto;
    object-fit: cover; /* 比率を保ったままコンテナを埋める */
    padding: 0 10px; /* 画像間のスペース */
}

/* ロゴ画像用の特別スタイル */
.gallery-track .gallery-logo {
    object-fit: contain; /* 画像全体が収まるように調整 */
    padding: 60px; /* 余白を増やして、さらに小さく見せる */
}

#highlight-gallery {
    padding: 100px 0;
    background-color: var(--color-dark);
}

#highlight-gallery h2 {
    color: var(--color-white);
}

.highlight-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 40px;
    margin-top: 40px;
}

.highlight-grid img {
    width: 100%;
    height: 450px; /* 高さを固定 */
    object-fit: contain;
    /* border: 2px solid var(--color-gold); */
    box-shadow: 0 0 20px rgba(192, 160, 98, 0.5);
    display: block;
    margin: 0 auto;
}

@media (min-width: 768px) {
    .highlight-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

#promotion-strategy {
    background-color: var(--color-black);
    padding: 100px 0;
}

#promotion-strategy h2 {
    color: var(--color-gold);
    margin-bottom: 40px;
}

#promotion-strategy p {
    margin-bottom: 60px;
}

.strategy-item {
    background-color: var(--color-dark);
    padding: 30px;
    margin-bottom: 30px;
    border-left: 3px solid var(--color-gold);
    text-align: left;
}

.strategy-item h3 {
    color: var(--color-gold);
    font-family: var(--font-serif);
    font-size: 1.8rem;
    margin-bottom: 15px;
}

.strategy-item p {
    font-size: 1rem;
    line-height: 1.6;
    margin-bottom: 0;
}



#msc-bellissima-experience {
    padding: 100px 0;
    background-color: var(--color-dark);
}

#msc-bellissima-experience h2 {
    color: var(--color-gold);
    margin-bottom: 20px;
}

#msc-bellissima-experience p {
    margin-bottom: 40px;
}

.board-images {
    display: flex;
    flex-direction: column; /* 縦に並べる */
    gap: 60px; /* 画像間の余白を増やす */
    align-items: center; /* 中央揃え */
}

.board-images img {
    max-width: 900px; /* さらに最大幅を大きく */
    width: 100%;
    height: auto;
    object-fit: contain;
    /* box-shadow: 0 0 20px rgba(192, 160, 98, 0.5); */ /* ゴールドの影を削除 */
}

.board-images-carousel {
    position: relative;
    max-width: 900px;
    margin: 40px auto;
    height: 400px; /* 固定の高さ */
    background-color: var(--color-black);
    overflow: hidden; /* マスク */
}

.carousel-inner {
    display: flex;
    height: 100%;
    transition: transform 0.5s ease-in-out; /* スライドアニメーション */
}

.carousel-inner img {
    flex: 0 0 100%; /* 各画像をコンテナの幅に合わせる */
    width: 100%;
    height: 100%;
    object-fit: cover; object-position: 50% 70%; /* 全体的に写真を少し下に表示 */
    background-color: var(--color-black); /* 余白を黒で埋める */
}

.carousel-slide { /* 新しいスタイル */
    flex: 0 0 100%; /* スライドが親の幅にピッタリ収まるように */
    scroll-snap-align: center; /* 中央にスナップするように */
}

.carousel-button {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.5);
    color: var(--color-white);
    border: none;
    padding: 10px 15px;
    cursor: pointer;
    font-size: 1.5rem;
    z-index: 10;
}

.carousel-button.prev {
    left: 10px;
}

.carousel-button.next {
    right: 10px;
}

#past-achievements {
    background-color: var(--color-black);
    padding: 100px 0;
}

#past-achievements h2 {
    color: var(--color-gold);
    margin-bottom: 40px;
}

#past-achievements p {
    margin-bottom: 60px;
}

.achievements-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
    margin-top: 40px;
}

.achievements-grid img {
    width: 100%;
    height: 250px; /* 高さを固定 */
    object-fit: contain; /* 画像全体を表示 */
    display: block;
    margin: 0 auto;
}

.past-achievements-sub-section {
    margin-top: 80px; /* 元の位置に戻す */
    padding-top: 80px; /* コンテンツをさらに下に下げる */
    border-top: 1px solid rgba(192, 160, 98, 0.3);
}

.past-achievements-sub-section h3 {
    color: var(--color-gold);
    font-family: var(--font-serif);
    font-size: 2rem; /* フォントサイズを元に戻す */
    margin-bottom: 0px; /* 距離を詰める */
}

.past-achievements-sub-section p.subtitle {
    font-size: 1.1rem; /* サブタイトルのフォントサイズを少し大きく */
    color: var(--color-gold); /* 色をゴールドに */
    margin-bottom: 15px; /* 距離を詰める */
}

.achievements-carousel {
    position: relative;
    max-width: 900px;
    margin: 0 auto;
    height: auto; /* 高さを自動に */
    background-color: var(--color-black); /* 背景色を追加 */
    display: flex; /* Flexコンテナとして */
    overflow-x: auto; /* 横スクロール可能に */
    scroll-snap-type: x mandatory; /* スナップを強制 */
    -ms-overflow-style: none;  /* IE/Edgeのスクロールバー非表示 */
    scrollbar-width: none;  /* Firefoxのスクロールバー非表示 */
}

.achievements-carousel::-webkit-scrollbar {
    display: none; /* Chrome/Safariのスクロールバー非表示 */
}

.achievements-carousel .carousel-inner {
    display: flex;
    height: 100%; /* 親の高さに合わせる */
    gap: 20px; /* スライド間の隙間 */
}

.achievements-carousel .carousel-inner img {
    width: 100%; /* 幅を100%に */
    height: auto; /* 高さを自動に */
    object-fit: contain; /* 画像全体を表示 */
    background-color: #000; /* 余白を黒で埋める */
    flex: 0 0 100%; /* Flexアイテムの幅を厳密に制御 */
    scroll-snap-align: center; /* 中央にスナップ */
}

.achievements-carousel .carousel-button {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background-color: rgba(0, 0, 0, 0.5);
    color: var(--color-white);
    border: none;
    padding: 10px 15px;
    cursor: pointer;
    font-size: 1.5rem;
    z-index: 10;
}

.achievements-carousel .carousel-button.prev {
    left: 10px;
}

.achievements-carousel .carousel-button.next {
    right: 10px;
}

/* Modal Form Styles */
.modal {
    display: none; /* Hidden by default */
    position: fixed; 
    z-index: 2000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.8);
    padding-top: 60px;
}

.modal-content {
    background-color: var(--color-dark);
    margin: 5% auto;
    padding: 40px;
    border: 1px solid var(--color-gold);
    width: 80%;
    max-width: 600px;
    position: relative;
    animation: fadeIn 0.5s;
}

@keyframes fadeIn {
    from {opacity: 0; transform: translateY(-20px);}
    to {opacity: 1; transform: translateY(0);}
}

.close-button {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
}

.close-button:hover,
.close-button:focus {
    color: var(--color-white);
    text-decoration: none;
    cursor: pointer;
}

.modal-content h2 { 
    text-align: center; 
    color: var(--color-gold); 
    margin-bottom: 20px;
}

.modal-content p {
    text-align: center;
    margin-bottom: 30px;
    font-size: 1rem;
}

#entry-form input, 
#entry-form textarea, 
#entry-form select {
    width: 100%;
    padding: 15px;
    margin-bottom: 20px;
    background-color: #2a2a2a;
    border: 1px solid #444;
    color: var(--color-light);
    font-size: 1rem;
    position: relative; /* 追加 */
    z-index: 10; /* 追加 */
}

#entry-form input::placeholder, 
#entry-form textarea::placeholder {
    color: #888;
}

.submit-button {
    width: 100%;
    padding: 15px;
    background-color: var(--color-gold);
    color: var(--color-black);
    border: none;
    font-size: 1.2rem;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.submit-button:hover {
    background-color: var(--color-light);
}

.form-note {
    font-size: 0.8rem !important;
    color: #888;
    margin-top: 20px;
}

/* Age Verification Modal Specific Styles */
.age-verification-content {
    text-align: center;
}

.age-verification-content p {
    font-size: 0.9rem; /* User Request: Decrease font size */
}

.age-buttons {
    margin-top: 30px;
    display: flex;
    justify-content: center;
    gap: 20px;
}

.age-buttons .button {
    background-color: var(--color-gold);
    color: var(--color-black);
    padding: 15px 40px;
    font-size: 1.2rem;
    font-weight: 700;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.age-buttons .button:hover {
    background-color: var(--color-light);
}

.age-buttons .button:last-child {
    background-color: #555;
    color: var(--color-light);
}

.age-buttons .button:last-child:hover {
    background-color: #777;
}

.hero-content .hero-button {
    margin-top: 40px;
}

.header-button {
    margin-left: 30px;
    padding: 10px 22px;
    font-size: 1rem;
    white-space: nowrap; /* 追加 */
    display: inline-block; /* 追加 */
}

/* Responsive Design */

#concept-card-section .concept-content {
    margin-top: 60px; /* スライドショーからのマージンを調整 */
}

.concept-card {
    background-color: transparent; /* 背景色を透明に */
    border: none; /* 枠線をなくす */
    border-radius: 0; /* 角丸をなくす */
    overflow: visible; /* overflowを元に戻す */
    margin: 60px 0; /* 上下のマージンは維持 */
    padding: 0; /* カード全体のパディングをなくす */
    border-top: none; /* 上部の線を削除 */
    border-bottom: none; /* 下の線を削除 */
    padding-top: 60px; /* 線とコンテンツの間に余白 */
    padding-bottom: 60px; /* 線とコンテンツの間に余白 */
}

.concept-header {
    padding: 40px; /* パディングを元に戻す */
    background-color: transparent; /* 背景色を透明に */
    border-bottom: none; /* 下線をなくす */
    margin-bottom: 20px; /* 本文との間隔 */
}

#concept-card-section .quote {
    font-family: var(--font-display);
    font-size: 2.2rem;
    color: var(--color-gold);
    margin-bottom: 0;
    text-align: center;
}

#concept-card-section .quote-translation {
    font-family: var(--font-serif);
    font-size: 1.1rem;
    color: var(--color-light);
    margin-bottom: 25px;
    text-align: center;
}

#concept-card-section .source-quote {
    font-size: 0.9rem;
    color: #888;
    margin-bottom: 0; /* 詰める */
    text-align: center;
}

#concept-card-section .prose-text {
    padding: 0 40px; /* 左右のパディングを元に戻す */
    max-width: 600px; /* テキストの最大幅を制限 */
    margin: 0 auto 40px; /* 中央揃え */
    text-align: center;
    font-family: var(--font-serif);
    font-size: 1.0rem;
    line-height: 1.5;
}

#concept-card-section .prose-text p {
    margin-bottom: 0;
}

#concept-card-section .event-signature {
    position: relative;
    text-align: center;
    font-family: var(--font-display);
    font-size: 1.6rem;
    color: var(--color-gold);
    margin-top: 40px; /* 本文からのマージン */
}

/* --- シネマティックエフェクトここから --- */

#concept-card-section {
    position: relative;
    overflow: hidden; /* パーティクルがはみ出さないように */
    background-color: #080808; /* 少し明るい黒で奥行きを出す */
    /* -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 15%, black 85%, transparent 100%); */
    /* mask-image: linear-gradient(to bottom, transparent 0%, black 15%, black 85%, transparent 100%); */
}

/* 光のパーティクル */
.particle {
    position: absolute;
    bottom: -20px; /* 下からスタート */
    background-color: var(--color-gold);
    border-radius: 50%;
    opacity: 0;
    animation: rise 10s infinite ease-in;
    box-shadow: 0 0 8px 2px rgba(192, 160, 98, 0.7); /* 光のグロー効果を追加 */
}

@keyframes rise {
    0% {
        transform: translateY(0) scale(0.5);
        opacity: 0;
    }
    10% {
        opacity: 0.7; /* ふわっと表示 */
    }
    90% {
        opacity: 0.7;
    }
    100% {
        transform: translateY(-100vh) scale(1.2); /* 画面上部まで移動して少し大きくなる */
        opacity: 0;
    }
}

/* テキストアニメーションの準備 */
#concept-card-section .concept-header > *,
#concept-card-section .prose-text p,
#concept-card-section .event-signature {
    transition: opacity 1.8s ease-in-out, transform 1.8s ease-in-out; /* もっとふんわりさせる */
}

/* アニメーション初期状態 */
.animate-initial {
    opacity: 0;
    transform: translateY(30px);
}

/* アニメーション最終状態 */
.animate-final {
    opacity: 1;
    transform: translateY(0);
}

/* 強調する引用句のスタイル */
#concept-card-section .quote {
    font-size: 3rem; /* さらに大きく */
    text-shadow: 0 0 15px rgba(192, 160, 98, 0.5); /* ゴールドの輝きを追加 */
}

@media (max-width: 1024px) {
    #concept-card-section .quote {
        font-size: 2.5rem; /* スマホでは少し調整 */
    }
}

/* --- シネマティックエフェクトここまで --- */


/* --- シネマティックエフェクトここまで --- */


/* =================================== */
/*  レスポンシブデザイン (スマホ & タブレット)  */
/* =================================== */
@media (max-width: 1024px) {

    /* --- 1. 基本設定 & 左右余白 --- */
    body {
        font-size: 90%;
        line-height: 1.8; /* 行間を1.8に統一 */
        -webkit-text-size-adjust: 100%; /* iOSでの自動フォントサイズ調整を無効化 */
    }

    .container {
        padding: 0 20px; /* 本文コンテンツの左右パディングを20pxに */
    }

    /* --- 2. セクション間の上下余白 --- */
    section {
        padding: 56px 0; /* セクション間余白を56pxに */
        overflow: hidden; /* はみ出し防止 */
    }

    /* ヒーロー直後のセクションの余白調整 */
    #hero + section {
        padding-top: 72px; /* 56px + 16px */
    }

    /* --- 3. 見出しまわりの余白 --- */
    section h2, section h3 {
        margin-top: 32px;
        margin-bottom: 16px;
        padding: 0; /* section p のpaddingと重複しないようにリセット */
    }
    
    .ticket-info h3 {
        margin-top: 24px;
    }

    section h2 + p, section h3 + p {
        margin-top: 12px; /* 見出し直下の説明文との余백 */
    }

    /* --- 4. 段落と行間 --- */
    section p {
        font-size: 1rem;
        padding: 0; /* .containerのpaddingで管理するためリセット */
        max-width: 32em; /* 読みやすい最大行幅を設定 */
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 12px; /* 段落間の余白 */
    }

    .ticket-intro-text {
        font-size: 0.8rem; /* 「本イベントへのご参加は...」のフォントサイズを小さく */
        max-width: 90%; /* 横幅を狭める */
        margin-left: auto;
        margin-right: auto;
    }

    section p:last-child {
        margin-bottom: 0;
    }

    .ticket-info ul {
        line-height: 1.8; /* 箇条書きの行間を本文と合わせる */
        padding-left: 20px;
    }
    .ticket-info li {
        margin-bottom: 8px;
    }

    /* --- 5. ボタン・リンクのタップ領域 --- */
    .ticket-button {
        display: inline-block; /* marginを有効にするため */
        min-height: 48px; /* 最低高さを確保 */
        padding: 12px 24px; /* 上下12pxのパディング */
        margin: 24px auto; /* 上下に24pxの余白 */
    }

    /* --- 6. 画像・カード系の呼吸 --- */
    .logo-grid {
        gap: 12px; /* グリッド間隔を12pxに */
    }
    .logo-item, .logo-placeholder {
        padding: 12px; /* カード内の余白 */
    }

    /* --- 7. ヘッダーとヒーロー --- */
    main {
        padding-top: 75px; /* 固定ヘッダー高さ分のオフセット (既存) */
    }

    #hero {
        height: 85vh; /* 画面高の85%に設定 */
        padding-bottom: 0;
    }
    
    /* --- 8. ナビ（ハンバーガー展開時） --- */
    header nav {
        padding: 20px; /* 内側余白を確保 */
        justify-content: center;
    }

    header nav ul li {
        margin: 10px 0; /* 項目間マージンを詰める */
    }
    header nav ul li a {
        font-size: 1.0rem; /* 文字を縮小 */
    }
    #supporters .logo-grid, #partner .logo-grid {
        display: flex; /* flexboxに変更 */
        flex-wrap: wrap; /* 折り返しを許可 */
        justify-content: center; /* 中央揃え */
        align-items: center; /* 垂直方向の中央揃え (必要であれば) */
        gap: 20px; /* アイテム間の隙間を調整 */
        margin: 0 auto; /* グリッド全体を中央揃え */
        max-width: 100%; /* 親要素の幅を超えないように */
    }
    #supporters .logo-grid .logo-item img, #partner .logo-grid .logo-item img {
        max-height: 100px !important; /* 画像を小さく (強制) */
    }
    #supporters .logo-grid .logo-item, #partner .logo-grid .logo-item {
        width: 120px; /* アイテムの幅を固定 */
        height: 120px; /* アイテムの高さを固定 */
        padding: 5px; /* パディングを調整 */
    }


    /* =================================== */
    /*  既存スタイルの上書き & 微調整      */
    /* =================================== */

    /* --- ヘッダー & ナビゲーション (既存ベース) --- */
    .header-button { display: none; }
    .hamburger-menu { display: flex !important; flex-direction: column; justify-content: space-around; width: 30px; height: 25px; cursor: pointer; z-index: 100000; }
    .hamburger-menu .line { width: 100%; height: 3px; background-color: var(--color-white); transition: all 0.3s ease; }
    .hamburger-menu.active .line:nth-child(1) { transform: translateY(9px) rotate(45deg); }
    .hamburger-menu.active .line:nth-child(2) { opacity: 0; }
    .hamburger-menu.active .line:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }
    header nav { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.8); flex-direction: column; align-items: center; z-index: 99999; backdrop-filter: blur(5px); }
    header nav.active { display: flex; }
    header nav ul { flex-direction: column; text-align: center; }

    /* --- ヒーローセクション (既存ベース) --- */
    .hero-content h1 { font-size: 2.5rem; }
    .hero-content .event-date { font-size: 1.8rem; }
    .hero-content .tagline { font-size: 1rem; padding: 0 15px; }

    /* --- ボトル画像 (非表示) --- */
    #hero-wines-mobile { display: none; }

    /* --- コンセプトカード (既存ベース) --- */
    .concept-card { margin: 0; padding: 0; } /* sectionのpaddingで管理するためリセット */
    #concept-card-section .quote { font-size: 2rem; }
    #concept-card-section .prose-text { padding: 0; line-height: 1.8; }
    #concept-card-section .prose-text p { font-size: 0.75rem; }

    /* --- イベント概要テーブル (既存ベース) --- */
    .event-details-table { margin-top: 24px; }
    .event-details-table th, .event-details-table td { display: block; width: 100%; text-align: center; padding: 8px 5px; }
    .event-details-table th { padding-top: 20px; border-bottom: none; font-size: 1.2rem; }
    .event-details-table tr { border-bottom: 1px solid rgba(192, 160, 98, 0.2); }
    .event-details-table tr:last-child { border-bottom: none; }

    /* --- チケット情報 (既存ベース) --- */
    .ticket-info { padding: 25px; margin-top: 24px; }

    /* --- その他 (既存ベース) --- */
    .video-placeholder, .map-placeholder { height: 280px; }
    .board-images-carousel { height: 250px; }
    .gallery-track img { height: 250px; }
    .modal-content {
        width: 85%; /* 画面いっぱいいっぱいを解消 */
        padding: 25px;
        margin: 5% auto; /* 上下の余白を調整 */
    }
    .age-verification-content p { font-size: 0.8rem; }
    .age-buttons { flex-direction: column; gap: 15px; }
    .japanese-title { font-size: 1.0rem !important; /* 小さくする */ margin-bottom: 0; }
        #about p, #ticket p { text-align: center; }
    .logo-caption { margin-top: 20px; } /* スマホ表示でのロゴと名前の距離を調整 */
            }

/* Terms Modal Styles (Redesigned) */
#terms-modal .modal-content {
    max-width: 1100px; /* 横幅を維持 */
}

.terms-content {
    max-height: 60vh; /* 高さを少し増やす */
    overflow-y: auto;
    overflow-x: hidden; /* 横スクロールを禁止 */
    border: none; /* 枠線を削除 */
    padding: 10px; /* カードとの余白を確保 */
    margin-bottom: 20px;
    text-align: left;
    background-color: #111; /* スクロールエリアの背景色を少し設定 */
    border-radius: 8px;
}

.terms-item {
    display: flex; /* flexboxで横並びにする */
    align-items: flex-start; /* アイテムを上部に揃える */
    margin-bottom: 10px; /* 各項目間の余白 */
    padding: 20px; /* 内側余白 */
    background-color: #1a1a1a; /* 各項目の背景色 */
    border: 1px solid #333; /* 薄い枠線 */
    border-radius: 0; /* 角丸なし */
    position: relative; /* terms-label-clickableの基準 */
}
.terms-item:last-child {
    margin-bottom: 0;
}
.terms-item:hover {
    background-color: #2a2a2a; /* ホバー効果 */
}

.terms-checkbox {
    margin-right: 15px; /* チェックボックスとテキストの間の余白 */
    flex-shrink: 0; /* チェックボックスが縮まないように */
    width: 20px; /* サイズ */
    height: 20px; /* サイズ */
    vertical-align: top; /* テキストの先頭に揃える */
    margin-top: 0; /* 上部の余白をなくす */
}

.terms-label-clickable {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    z-index: 1; /* チェックボックスより手前に配置 */
}

.terms-text-content {
    flex-grow: 1; /* 残りのスペースを埋める */
    display: flex; /* h4とpを縦に並べるためにflexコンテナにする */
    flex-direction: column;
}

.terms-item h4 {
    font-size: 1.0rem; /* 1行に収まるように小さくする */
    white-space: normal; /* 強制的に1行にしない */
    color: var(--color-gold);
    margin-bottom: 8px; /* マージンを調整 */
    border-bottom: none; /* 下線を削除 */
    padding-bottom: 0;
    line-height: 1.4; /* 行間 */
    margin-top: 0; /* 上部の余白をなくす */
}

.terms-item p {
    font-size: 1rem;
    line-height: 1.7;
    color: #ccc;
    margin: 0;
    text-align: left;
}



.pc-hide-br {
    display: none; /* PC表示では改行を非表示 */
}

.terms-buttons {
    text-align: center;
    margin-top: 20px;
}

.terms-buttons .button {
    background-color: var(--color-gold);
    color: #000;
    padding: 15px 25px; /* パディングを調整 */
    border: none;
    cursor: pointer;
    font-size: 1.1rem; /* フォントサイズを調整 */
    font-weight: bold;
    transition: background-color 0.3s;
    width: 100%;
}

.terms-buttons .button:disabled {
    background-color: #555;
    color: #888;
    cursor: not-allowed;
}

/* Custom scrollbar for terms modal */
.terms-content::-webkit-scrollbar {
    width: 8px;
}
.terms-content::-webkit-scrollbar-track {
    background: #111;
    border-radius: 4px;
}
.terms-content::-webkit-scrollbar-thumb {
    background-color: var(--color-gold);
    border-radius: 4px;
    border: 2px solid #111;
}
.terms-content::-webkit-scrollbar-thumb:hover {
    background-color: #d4af37;
}

/* Style for the "check all" button */
.terms-buttons {
    display: flex;
    gap: 15px; /* Add space between buttons */
}
.terms-buttons .button.secondary {
    background-color: #444;
    color: #ccc;
    flex-grow: 1; /* Allow it to take space */
}
.terms-buttons .button.secondary:hover {
    background-color: #555;
}
#terms-agree-button {
    flex-grow: 2; /* Make the main button wider */
}

.msc-focus-top {
    object-position: 50% 25% !important; /* 上の方を中央より少し下に表示 */
}

.vip-note {
    font-size: 0.9rem; /* 文字を小さくする */
    text-align: left !important; /* 左揃えにする */
}

.object-contain {
    object-fit: contain !important;
}

/* PC/SP Display Toggle Classes */
.only-sp {
    display: none;
}

@media (max-width: 1024px) {
    .only-pc {
        display: none;
    }
    .only-sp {
        display: block;
    }
}

/* =================================================================== */
/*  FINAL MOBILE MODAL OVERRIDE (max-width: 767px)                     */
/* =================================================================== */
@media (max-width: 767px) {
    /* --- GENERAL --- */
    .pc-hide-br { display: block !important; }
    .hero-content h1 { font-size: 2.0rem !important; }
    .hero-content .event-date { font-size: 1.5rem !important; }
    section h2, #concept h2 { font-size: 1.6rem !important; }
    .logo-grid { grid-template-columns: repeat(2, 1fr) !important; }

    /* --- MODAL CONTENT AREA --- */
    .terms-content {
        padding-bottom: 120px !important; /* Space for the sticky button */
    }

    /* --- BUTTONS --- */
    .terms-buttons {
        position: sticky !important;
        bottom: 0 !important;
        padding: 12px 20px !important;
        background: linear-gradient(to top, rgba(0,0,0,0.9), rgba(0,0,0,0.7)) !important;
        z-index: 10 !important;
        display: flex !important;
        flex-direction: column !important;
        gap: 10px !important;
        align-items: center !important; /* 中央揃え */
    }
    #terms-agree-button {
        font-size: 0.7rem !important; /* Smaller font to fit */
        white-space: normal !important; /* 折り返しを許可 */
        width: 100% !important;
    }

    /* --- ACCORDION ITEM LAYOUT (GRID) --- */
    .terms-item {
        display: flex !important;
        align-items: flex-start !important;
        padding: 15px 10px !important;
        cursor: pointer; /* Make the whole item clickable */
    }

    /* --- GRID ITEM PLACEMENT --- */
    .terms-checkbox {
        margin-top: 2px !important;
        margin-right: 10px !important; /* テキストとの間隔 */
    }
    .terms-text-content {
        flex-grow: 1 !important; /* 残りのスペースを埋める */
    }
    .terms-item h4 {
        white-space: normal !important; /* Allow wrapping */
        font-size: 0.8rem !important;
        position: relative;
        padding-right: 20px !important;
    }
    .terms-item p {
        padding-top: 10px !important;
        font-size: 0.8rem !important; /* 文字サイズを小さく */
    }
    

    /* --- ACCORDION FUNCTIONALITY --- */
    .terms-item:not(.active) .terms-text-content p {
        display: none !important;
    }
    .terms-item.active .terms-text-content p {
        display: block !important;
    }

    /* Arrow indicator */
    .terms-item h4::after {
        content: '\25BC';
        position: absolute;
        right: 0;
        top: 50%;
        transform: translateY(-50%);
        transition: transform 0.3s ease;
    }
    .terms-item.active h4::after {
                transform: translateY(-50%) rotate(180deg);
            }
            .dresscode-note {
                font-size: 0.3rem !important; /* ドレスコード注意書きをさらに小さく */
                margin-top: 20px !important; /* 少し下に下げる */
                line-height: 1.2 !important; /* 行間を詰める */
                max-width: 90%; /* 横幅を狭める */
                margin-left: auto !important;
                margin-right: auto !important;
            }
            #about p {
                font-size: 0.8rem !important; /* ABOUT THE EVENT の説明文を小さく */
            }
            .about-description-wrapper {
                max-width: 90% !important; /* 横幅を制限 */
                margin: 0 auto !important; /* 中央寄せ */
            }
        }
#special-thanks .logo-item:first-child img {
    transform: translateY(-10px);
}
.white-bg-logo {
    background-color: #cccccc; /* グレーに変更 */
    width: 200px;
    height: 200px;
    padding: 10px;
    margin: 0 auto;
}

#supporters .white-bg-logo {
    margin: 0; /* Override for supporter section */
}
.logo-item.white-bg-logo img {
    max-height: 100%;
}

#supporters .white-bg-logo img {
    max-height: 150px; /* ロゴを縮小 */
}


/* 強制表示用スタイル */
#costume-provider, #hair-make {
    display: block !important;
    visibility: visible !important;
}

html[lang="en"] #costume-provider .subtitle,
html[lang="en"] #hair-make .subtitle,
html[lang="en"] #special-thanks .subtitle,
html[lang="en"] #partner .subtitle,
html[lang="en"] #supporters .subtitle,
html[lang="en"] #game .subtitle,
html[lang="en"] #prize .subtitle {
    display: none;
}

/* Language Switcher Styles */
#language-switcher {
    display: flex;
    gap: 5px; /* ボタン間のスペース */
}

.lang-button {
    background-color: transparent;
    border: 1px solid var(--color-gold);
    color: var(--color-gold);
    padding: 8px 12px;
    font-size: 0.8rem;
    cursor: pointer;
    transition: all 0.3s ease;
    border-radius: 3px;
}

.lang-button:hover {
    background-color: var(--color-gold);
    color: var(--color-black);
}

.lang-button.active {
    background-color: var(--color-gold);
    color: var(--color-black);
    font-weight: bold;
}

/* レスポンシブ対応 */
@media (max-width: 1024px) {
    #language-switcher {
        margin-left: auto; /* これで右に寄せる */
        margin-right: 10px; /* ハンバーガーメニューとの間に少しスペースを追加 */
        z-index: 1001;
    }
    .header-button { /* 申し込みボタンを非表示にするか、位置を調整 */
        display: none; /* スマホでは非表示にする */
    }
    #special-thanks .logo-item:nth-child(2) .logo-caption {
        bottom: 20px; /* 文言のみをさらに上に移動 */
    }
    #special-thanks .logo-item:first-child .logo-caption {
        bottom: 70px; /* 日村 花 の文言をさらに上に移動 */
    }
    #concept .japanese-title {
        margin-top: 20px !important; /* 下に下げる (強制) */
    }
}

/* Supporter Logo Sizes */
#supporters .logo-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 20px;
}

.logo-item.logo-xlarge img {
    max-height: 250px;
}

.logo-item.logo-large img {
    max-height: 200px;
}

.logo-item.logo-medium img {
    max-height: 110px;
}

.logo-item.logo-small img {
    max-height: 60px;
}




/* パートナーロゴの中央寄せ */
.partners-logos {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: 30px; /* ロゴ間の隙間 */
    margin-top: 20px; /* 見出しとの隙間 */
}

.partners-logos img {
    max-width: 160px;
    height: auto;
    object-fit: contain;
}

/* Game Rules Section */
.game-rules-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
    margin-top: 40px;
    max-width: 1000px; /* Reduced from 1200px */
    margin-left: auto;
    margin-right: auto;
}

@media (max-width: 768px) {
    .game-rules-grid {
        grid-template-columns: 1fr;
    }
}

/* Game Rules Card Styles */
.game-card {
    display: block;
    position: relative;
    overflow: hidden;
    border-radius: 5px;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    text-decoration: none;
}

.game-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.4);
}

.game-card img {
    width: 100%;
    height: 350px; /* Increased height for more impact */
    object-fit: cover;
    display: block;
    transition: transform 0.3s ease;
}

.game-card:hover img {
    transform: scale(1.05);
}

.game-card-permanent-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.2);
    z-index: 1;
}

.game-card-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: 2;
}

.game-card:hover .game-card-overlay {
    opacity: 1;
}

.game-card-title {
    color: var(--color-gold); /* Changed to gold */
    font-family: var(--font-serif);
    font-size: 2rem;
    font-weight: 700;
    text-transform: uppercase;
    transform: translateY(10px);
    transition: transform 0.3s ease;
    text-shadow: 0 2px 10px rgba(0,0,0,0.5);
}

.game-card:hover .game-card-title {
    transform: translateY(0);
}

.logo-item.logo-wide {
    width: 400px;
    /* margin-right: -100px; */ /* Reverted */
}

.logo-item.logo-wide img {
    max-height: none; /* Allow proportional scaling */
}

.logo-pair {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    gap: 0px;
}

/*オフィシャルサポーターと動画*/
.flex_logo00{
    display: flex;
    width: 90%;
    margin-left: auto;
    margin-right: auto;
    flex-wrap: wrap;
    align-items: center;
}
.flex_logo001{
    width: 42%;
    margin: 0.5em 4%;
    text-align: center;
}
.flex_logo001 img{
    width: 100%;
}
.flex_cellato{
    width: 50% !important;
}
.video{
    width: 100%;
}
/*パソコン表示*/
@media (min-width: 800px) {
   .flex_logo00{
    width: 60%;
    max-width: 800px;
   } 
   .flex_logo001{
    width: 29%;
    margin: 0 2%;
}
}