@charset "UTF-8";

/*!
Theme Name: Cocoon Child
Description: Cocoon専用の子テーマ
Theme URI: https://wp-cocoon.com/
Author: わいひら
Template: cocoon-master
Version: 1.1.3
*/


/* =========================================
   基本フォント設定
   ========================================= */
body {
    font-family: "Noto Sans JP", sans-serif;
    font-weight: 400;
}

h1, h2, h3, .entry-title {
    font-family: "Montserrat", "Noto Sans JP", sans-serif;
    font-weight: 700;
    letter-spacing: 0.05em;
}



/* =========================================
   Cocoonヘッダー表示設定
   ========================================= */

/* ヘッダー本体 */
#header {
    display: block !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* ヘッダー内部（ロゴ周りの余白） */
.header-in {
    display: flex !important;
    justify-content: center;
    align-items: center;
    padding: 10px 0;
}

/* Cocoonロゴ */
.logo-header {
    display: block !important;
}

.logo-header img {
    display: block !important;
    width: 100%;
    max-width: 400px;
    height: auto;
}

/* キャッチコピー非表示 */
.tagline {
    display: none !important;
}

/* Cocoon標準ナビ非表示 */
#navi,
.mobile-header-menu-buttons,
.footer-menu-buttons,
.mobile-menu-buttons,
.menu-button {
    display: none !important;
}


/* =========================================
   固定メニュー（ナビゲーションバー）
   ========================================= */
.special-menu-container {
    position: fixed !important;
    z-index: 9999999 !important;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* PC表示 */
@media screen and (min-width: 1024px) {
    .special-menu-container {
        top: 30px;
        right: 30px;
    }
}

/* スマホ表示 */
@media screen and (max-width: 1023px) {
    .special-menu-container {
        bottom: 25px;
        left: 50%;
        right: auto;
        transform: translateX(-50%);
        width: 90%;
        max-width: 400px;
        justify-content: center;
    }
}

.special-menu-bar {
    display: flex !important;
    align-items: center;
    justify-content: center;
    background: #fff;
    padding: 10px 15px;
    border-radius: 50px;
    box-shadow: 0 4px 25px rgba(0, 0, 0, 0.2);
    gap: 12px;
    margin: 0;
}

.special-menu-bar li {
    list-style: none;
    display: flex;
    align-items: center;
    justify-content: center;
}

.special-menu-bar a {
    text-decoration: none !important;
    color: #333 !important;
    font-size: 11px;
    font-weight: bold;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.special-menu-bar a::before,
.special-menu-bar a::after {
    display: none !important;
    content: none !important;
}


/* =========================================
   サイトマップパネル（PC：横5個並び / スマホ：横3個並び）
   ========================================= */
.special-sitemap-content {
    position: absolute;
    bottom: calc(100% + 12px);
    background: #ffffff;
    padding: 14px;
    border-radius: 20px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
    display: none;
    box-sizing: border-box;
    z-index: 1000;
}

/* PC表示：横5列・大型アイコンパネル幅 */
@media screen and (min-width: 1024px) {
    .special-sitemap-content {
        right: 0;
        width: 450px; /* 大サイズ化に合わせてパネル幅を調整 */
    }
    
    .special-sitemap-content ul {
        grid-template-columns: repeat(5, 1fr) !important;
    }
}

/* スマホ表示：横3列 */
@media screen and (max-width: 1023px) {
    .special-sitemap-content {
        left: 50%;
        right: auto;
        transform: translateX(-50%);
        width: 320px;
        padding: 12px;
    }
    
    .special-sitemap-content ul {
        grid-template-columns: repeat(3, 1fr) !important;
    }
}

.special-sitemap-content.is-active {
    display: block;
    animation: fadeInUp 0.25s ease forwards;
}

/* グリッド構成 */
.special-sitemap-content ul {
    display: grid;
    gap: 8px;
    list-style: none;
    padding: 0;
    margin: 0;
}

.special-sitemap-content li {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    position: relative;
}

.special-sitemap-content li::before,
.special-sitemap-content li::after {
    display: none !important;
    content: none !important;
}

/* 正方形カード（中央配置の強化） */
.special-sitemap-content a {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100%;
    aspect-ratio: 1 / 1;
    padding: 4px !important;
    background: #f8f9fa;
    border-radius: 14px;
    text-decoration: none !important;
    color: #333 !important;
    box-sizing: border-box;
    transition: all 0.2s ease;
    border: 1px solid #eaeaea;
    overflow: hidden; /* はみ出し防止 */
}

.special-sitemap-content a:hover,
.special-sitemap-content a:active {
    background: #fff0f5;
    border-color: #ffb6c1;
    transform: translateY(-2px);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08);
}


/* -----------------------------------------
   アイコン（Font Awesome & 画像）と文字の拡大＋中央揃え
   ----------------------------------------- */

/* Font Awesome アイコン共通指定（極大化） */
.special-sitemap-content a i,
.special-sitemap-content a [class*="fa-"] {
    font-size: 40px !important; /* 枠いっぱいの大サイズ */
    line-height: 1 !important;
    margin: 0 auto 1px auto !important;
    color: #ff69b4 !important;
    display: block !important;
    text-align: center !important;
}

/* 画像アイコン指定（極大化 ＆ 中央寄せ） */
.special-sitemap-content a img {
    width: 45px !important;  /* 枠いっぱいの大サイズ */
    height: 45px !important;
    object-fit: contain !important;
    margin: 0 auto 1px auto !important;
    display: block !important;
}

/* テキスト指定 */
.special-sitemap-content a span,
.special-sitemap-content .sitemap-item-title {
    display: block !important;
    font-size: 13px !important; /* しっかり読みやすい大きさ */
    font-weight: bold;
    line-height: 1.1;
    text-align: center !important;
    word-break: break-word;
    width: 100%;
    margin: 0 !important;
}


/* =========================================
   演出用（キュン演出ハート）
   ========================================= */
#kyun-effect-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
}

.floating-heart,
.burst-heart {
    position: absolute;
    pointer-events: none;
    will-change: transform, opacity;
}


/* =========================================
   画面全幅表示用クラス
   ========================================= */
.full-width-section {
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
}

/* アニメーション */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media screen and (max-width: 1023px) {
    @keyframes fadeInUp {
        from {
            opacity: 0;
            transform: translate(-50%, 10px);
        }
        to {
            opacity: 1;
            transform: translate(-50%, 0);
        }
    }
}



/* =========================================
   【重要】全ページのヘッダー直下余白を完全除去
   ========================================= */
/* コンテンツ枠全体の最上部余白リセット */
#content,
.content,
.content-in,
#content-in {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* メインカラムおよび記事（固定ページ含む）の余白リセット */
#main,
.main,
article,
.article,
.entry-content {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* ページタイトルエリアの上下余白リセット */
.entry-header {
    margin-top: 0 !important;
    padding-top: 0 !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}

/* パンくずリストが配置されている場合の余白リセット */
.breadcrumb-after-header,
.breadcrumb {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* ==========================
   FESTIVAL NEWS
========================== */

.festival-news{
    width:100%;
    max-width:1100px;
    margin:100px auto;
    padding:0 20px;
    box-sizing:border-box;
}

.news-heading{
    margin-bottom:35px;
}

.news-heading img{
    width:260px;
    max-width:100%;
    height:auto;
    display:block;
}

@keyframes heartBeat{

    0%,100%{
        transform:scale(1);
    }

    50%{
        transform:scale(1.2);
    }

}

/* ==========================
   TAB
========================== */

.news-tabs{

    display:flex;
    gap:12px;

    margin-bottom:35px;

    flex-wrap:wrap;

}

.news-tab{

    border:none;

    background:#fff;

    border:2px solid #ffd4e8;

    border-radius:999px;

    padding:12px 26px;

    cursor:pointer;

    font-size:15px;

    font-weight:700;

    transition:.3s;

}

.news-tab:hover{

    background:#ffe5f2;

    transform:translateY(-2px);

}

.news-tab.active{

    background:#ff4fa3;

    color:#fff;

    border-color:#ff4fa3;

}

/* ==========================
   LIST
========================== */

.news-list{

    display:flex;

    flex-direction:column;

}

.news-item{

    display:flex;

    align-items:center;

    gap:20px;

    padding:22px 10px;

    text-decoration:none;

    color:#333;

    border-bottom:1px solid #efefef;

    transition:.3s;

}

.news-item:hover{

    background:#fff7fb;

    padding-left:20px;

}

.news-new{

    min-width:46px;

    text-align:center;

    background:#ff4fa3;

    color:#fff;

    border-radius:30px;

    padding:5px 0;

    font-size:11px;

    font-weight:bold;

}

.news-date{

    width:110px;

    color:#999;

    font-size:14px;

}

.news-title{

    flex:1;

    font-size:17px;

    font-weight:700;

}

.news-more{

    text-align:right;

    margin-top:28px;

}

.news-more a{

    text-decoration:none;

    color:#ff4fa3;

    font-weight:bold;

    transition:.3s;

}

.news-more a:hover{

    letter-spacing:.08em;

}

/* ==========================
   FILTER
========================== */

.news-item.hide{

    display:none;

}

/* ==========================
   SP
========================== */

@media (max-width:768px){

.festival-news{
    margin:50px auto;
    padding:0 16px;
}

/* NEWSロゴ */
.news-heading img{
    width:170px;
}

/* タブ */
.news-tabs{
    gap:8px;
    margin-bottom:18px;
    overflow-x:auto;
    flex-wrap:nowrap;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
}

.news-tabs::-webkit-scrollbar{
    display:none;
}

.news-tab{
    flex:none;
    white-space:nowrap;
    padding:8px 14px;
    font-size:13px;
}

/* 投稿 */
.news-item{
    display:flex;
    align-items:center;
    gap:10px;

    padding:12px 6px;
}

.news-new{
    min-width:40px;
    font-size:10px;
    padding:3px 0;
}

.news-date{
    width:72px;
    font-size:12px;
    flex-shrink:0;
}

.news-title{
    flex:1;
    font-size:14px;
    line-height:1.3;

    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

/* VIEW MORE */
.news-more{
    margin-top:18px;
}

.news-more a{
    font-size:14px;
}

}




.club-results-container {
  max-width: 1080px;
  margin: 20px auto;
  padding: 20px;
  background-image: radial-gradient(#ffd6f0 1.5px, transparent 1.5px);
  background-size: 18px 18px;
  border-radius: 24px;
}

.results-count {
  font-size: 15px;
  font-weight: 800;
  color: #ff2d95;
  margin-bottom: 18px;
  letter-spacing: 0.5px;
}

.club-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
}
@media (max-width: 768px) {
  .club-card-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
  }
}

/* カード本体: ステッカー風のポップなデザイン、押せない見た目 */
.club-card {
  cursor: default;
  position: relative;
  background: #fffdfb;
  border: 3px solid #1a1a1a;
  border-radius: 22px 8px 22px 8px;
  overflow: hidden;
  box-shadow: 6px 6px 0 #ff2d95;
  transition: none;
}

.club-card:nth-child(3n+1) {
  box-shadow: 6px 6px 0 #ff2d95;
}
.club-card:nth-child(3n+2) {
  box-shadow: 6px 6px 0 #00c2ff;
}
.club-card:nth-child(3n+3) {
  box-shadow: 6px 6px 0 #ffd400;
}

.club-card-thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-bottom: 3px solid #1a1a1a;
  position: relative;
}
.club-card-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.club-card-body {
  padding: 14px 16px 18px;
}

.club-card-title {
  font-size: 15px;
  font-weight: 900;
  color: #1a1a1a;
  margin: 0 0 10px;
  line-height: 1.4;
  display: inline-block;
  background: linear-gradient(180deg, transparent 60%, #fff44f 60%);
}

.club-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}

.meta-chip {
  font-size: 11px;
  font-weight: 800;
  padding: 4px 12px;
  border-radius: 999px;
  border: 2px solid #1a1a1a;
}
.meta-date {
  background-color: #ff8fd4;
  color: #1a1a1a;
}
.meta-building {
  background-color: #7fe8ff;
  color: #1a1a1a;
}

.club-card-genres {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}
.genre-chip {
  font-size: 11px;
  font-weight: 700;
  padding: 4px 12px;
  border-radius: 999px;
  background-color: #fff44f;
  color: #1a1a1a;
  border: 2px solid #1a1a1a;
}

.club-card-excerpt {
  font-size: 12px;
  color: #4a4a4a;
  line-height: 1.7;
  margin: 0;
}

.no-results {
  text-align: center;
  padding: 50px 0;
  color: #ff2d95;
  font-size: 15px;
  font-weight: 800;
}

.club-pagination {
  margin-top: 36px;
  display: flex;
  justify-content: center;
  gap: 12px;
}
.club-pagination .page-numbers {
  padding: 8px 16px;
  border-radius: 999px;
  background-color: #fff;
  border: 2px solid #1a1a1a;
  color: #1a1a1a;
  font-weight: 700;
  text-decoration: none;
  box-shadow: 3px 3px 0 #1a1a1a;
}
.club-pagination .page-numbers.current {
  background-color: #ff2d95;
  color: #fff;
}