body {
  font-family: Arial, sans-serif;
  min-width: 1200px;
  max-width: 1560px;
  margin: auto;
  padding: 20px;
  line-height: 1.6;
  background: #fcfcfc;
  color: #222;
  box-sizing: border-box;
}

h1, h2, h3, h4 {
  margin-top: 0;
}

.pickup-section {
  margin-bottom: 28px;
}

.pickup-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.pickup-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}

.pickup-card {
  position: relative;
  border: 1px solid #ddd;
  background: #fff;
  overflow: hidden;
  cursor: pointer;
  aspect-ratio: 1 / 1;
  transition: transform 0.25s ease, opacity 0.25s ease, box-shadow 0.25s ease;
  box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}

.pickup-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(0,0,0,0.12);
}

.pickup-card.flash {
  opacity: 0.55;
}

.pickup-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.month-nav {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 28px;
  margin-bottom: 4px;
}

.month-nav button {
  padding: 8px 14px;
  cursor: pointer;
  border: 1px solid #ccc;
  background: white;
  font-size: 18px;
}

.month-nav button:hover {
  background: #f5f5f5;
}

.main-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 24px;
  align-items: start;
  margin-bottom: 0;
}

.main-left {
  min-width: 0;
}

.main-right {
  min-width: 0;
}

.side-title {
  margin-bottom: 10px;
}

#calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 8px;
}

.day {
  border: 1px solid #ccc;
  padding: 8px;
  height: 200px;
  cursor: pointer;
  background: #fff;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-sizing: border-box;
  min-width: 0;
}

.day:hover {
  background: #fafafa;
}

.day.has-live {
  background: #eef6ff;
  border-color: #8eb8ea;
}

.day.has-live:hover {
  background: #e3f0ff;
}

.day.today {
  border: 2px solid #ff9800;
  background: #fff8e1;
}

.day.today.has-live {
  background: #e8f4ff;
  border: 2px solid #ff9800;
}

.date {
  font-weight: bold;
  font-size: 17px;
  margin-bottom: 4px;
  flex: 0 0 auto;
}

.live-count {
  color: #d32f2f;
  font-size: 13px;
  margin-bottom: 4px;
  flex: 0 0 auto;
}

.day-events {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding-right: 2px;
}

.day-events::-webkit-scrollbar {
  width: 6px;
}

.day-events::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 999px;
}

.live-item {
  font-size: 13px;
  margin-bottom: 6px;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  line-height: 1.35;
}

.live-item a,
td a,
.detail-link,
.performer-chip-button,
.venue-name-button {
  color: #1565c0;
  text-decoration: none;
}

.live-item a:hover,
td a:hover,
.detail-link:hover,
.performer-chip-button:hover,
.venue-name-button:hover {
  text-decoration: underline;
}

#poster-scroll-wrap {
  overflow: hidden;
  border: 1px solid #ccc;
  background: #fff;
  box-sizing: border-box;
  min-height: 420px;
}

#poster-scroll {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 10px;
  animation: poster-scroll-up 200s linear infinite;
}

#poster-scroll:hover {
  animation-play-state: paused;
}

.poster-card {
  border: 1px solid #ddd;
  padding: 8px;
  background: #fff;
  cursor: pointer;
  box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}

.poster-card:hover {
  background: #fafafa;
}

.poster-card img {
  display: block;
  width: 100%;
  height: auto;
}

.poster-date {
  font-size: 12px;
  color: #666;
  margin-top: 6px;
}

.poster-title {
  font-size: 13px;
  font-weight: bold;
  margin-top: 4px;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.poster-meta {
  font-size: 12px;
  color: #444;
  margin-top: 2px;
}

@keyframes poster-scroll-up {
  0% { transform: translateY(0); }
  100% { transform: translateY(-50%); }
}

@media (max-width: 1200px) {
  .pickup-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .pickup-detail-upper,
  .venue-detail-grid {
    grid-template-columns: 1fr;
  }
  .venue-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pickup-detail-gallery {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

@media (max-width: 1000px) {
  .main-layout,
  .detail-top {
    grid-template-columns: 1fr;
  }
  #poster-scroll-wrap {
    min-height: 420px;
    height: auto !important;
  }
  .day {
    height: 180px;
  }
  .pickup-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .live-table-head {
    flex-direction: column;
    align-items: flex-start;
  }
  .venue-list {
    grid-template-columns: 1fr;
  }
  .pickup-detail-gallery {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .event-idol-image-grid {
    grid-template-columns: 1fr 1fr;
  }
}
/* 出演者折りたたみ */
.td-idol {
  max-width: 200px;
  word-break: break-word;
}

.idol-toggle-btn {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 6px;
  font-size: 11px;
  background: #f0f0f0;
  border: 1px solid #ccc;
  border-radius: 4px;
  cursor: pointer;
  vertical-align: middle;
  white-space: nowrap;
}

.idol-toggle-btn:hover {
  background: #e0e0e0;
}

.idol-rest {
  word-break: break-word;
}

/* ライブハウスDB サイドバー */
.venue-side-filter {
  display: flex;
  gap: 6px;
  margin-bottom: 8px;
}

.venue-side-filter select {
  flex: 1;
  padding: 6px 8px;
  border: 1px solid #ccc;
  border-radius: 6px;
  font-size: 13px;
  background: #fff;
}

.venue-side-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 8px;
  background: #fff;
}

.venue-side-card {
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 8px 10px;
  background: #fff;
  cursor: pointer;
  transition: background 0.15s;
}

.venue-side-card:hover {
  background: #f5f5f5;
}

.venue-side-card-name {
  font-size: 14px;
  font-weight: 700;
  color: #222;
}

.venue-side-card-meta {
  font-size: 12px;
  color: #666;
  margin-top: 2px;
}

.venue-side-detail {
  margin-top: 10px;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 8px;
  background: #fafafa;
  display: none;
  font-size: 13px;
}

.venue-side-detail.open {
  display: block;
}

/* ══════════════════════════════
   Pickup詳細 インラインBOX
══════════════════════════════ */
.pickup-detail-section {
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 16px;
  padding: 24px;
  margin: 16px 0;
  box-shadow: 0 2px 16px rgba(0,0,0,0.08);
}

/* BOX内2カラム：左＝テキスト情報 / 右＝写真・スケジュール */
.pickup-inner-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
  gap: 24px;
  align-items: start;
}

/* 左カラム */
.pickup-left-col {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* グループ名 */
.pickup-profile-group {
  font-size: 32px !important;
  font-weight: 900 !important;
  line-height: 1.2 !important;
  margin-bottom: 4px !important;
  color: #111;
}

/* メンバー名 */
.pickup-profile-member {
  font-size: 22px !important;
  font-weight: 800 !important;
  color: #222 !important;
  margin-bottom: 6px !important;
}

/* 紹介文 */
.pickup-profile-note {
  font-size: 14px;
  line-height: 1.7;
  color: #444;
  white-space: pre-wrap;
}

/* グループ写真エリア */
.pickup-group-images {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 4px 0;
  width: 100%;
}

.pickup-group-image {
  width: 100%;
  height: auto;
  max-height: 320px;
  object-fit: contain;
  border-radius: 10px;
  border: 1px solid #ddd;
  box-shadow: 0 1px 6px rgba(0,0,0,0.08);
  background: #f8f8f8;
  display: block;
}

/* リンクボタン */
.pickup-links-renew {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}

/* 右カラム */
.pickup-right-col {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* メイン写真 */
.pickup-detail-image-main {
  width: 100%;
  max-height: 440px;
  object-fit: contain;
  border-radius: 12px;
  background: #f0f0f0;
  display: block;
}

/* サムネギャラリー */
.pickup-detail-gallery {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}

.pickup-thumb-image {
  width: 88px;
  height: 88px;
  object-fit: cover;
  border-radius: 8px;
  border: 3px solid transparent;
  cursor: pointer;
  transition: border-color 0.15s, transform 0.1s;
}

.pickup-thumb-image:hover {
  transform: scale(1.05);
}

.pickup-thumb-image.active {
  border-color: #1976d2;
}

@media (max-width: 760px) {
  .pickup-inner-grid {
    grid-template-columns: 1fr;
  }
  .pickup-group-image {
    width: 100%;
    height: auto;
    max-height: 200px;
  }
}

/* ライブ情報 カード表示 */
.live-table-section {
  margin-top: 2px;
  margin-bottom: 12px;
}

.live-table-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 4px;
}

.live-table-subtitle {
  color: #555;
  font-size: 14px;
}

.live-table {
  display: none;
}

/* ライブカード一覧 */
.live-card-list {
  display: flex;
  flex-wrap: nowrap;
  gap: 12px;
  overflow-x: auto;
  padding-bottom: 6px;
  scroll-snap-type: x mandatory;
}

.live-card-list::-webkit-scrollbar { height: 8px; }
.live-card-list::-webkit-scrollbar-track { background: #e0e0e0; border-radius: 4px; }
.live-card-list::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; }
.live-card-list::-webkit-scrollbar-thumb:hover { background: #666; }

.live-card {
  background: #fff;
  border: 1px solid #e3e7ee;
  min-width: 260px;
  max-width: 300px;
  flex-shrink: 0;
  scroll-snap-align: start;
  border-radius: 12px;
  padding: 14px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
  cursor: pointer;
  transition: box-shadow 0.15s, transform 0.1s;
}

.live-card:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
  transform: translateY(-2px);
}

.live-card-date {
  font-size: 12px;
  color: #777;
  margin-bottom: 4px;
}

.live-card-name {
  font-size: 15px;
  font-weight: 700;
  color: #1a1a2e;
  margin-bottom: 6px;
  line-height: 1.4;
}

.live-card-name a {
  color: inherit;
  text-decoration: none;
}

.live-card-name a:hover {
  text-decoration: underline;
}

.live-card-meta {
  font-size: 12px;
  color: #555;
  margin-top: 3px;
}

.live-card-place {
  font-size: 13px;
  font-weight: 600;
  color: #1565c0;
  margin-top: 6px;
  cursor: pointer;
}

.live-card-place:hover {
  text-decoration: underline;
}

.live-card-ticket {
  display: inline-block;
  margin-top: 6px;
  font-size: 12px;
  background: #f0f4ff;
  border: 1px solid #c5d5f0;
  border-radius: 6px;
  padding: 2px 8px;
  color: #1565c0;
}

.live-card-idol {
  font-size: 12px;
  color: #444;
  margin-top: 4px;
  line-height: 1.5;
}

.idol-toggle-btn {
  font-size: 11px;
  background: #f0f0f0;
  border: 1px solid #ccc;
  border-radius: 4px;
  padding: 1px 6px;
  cursor: pointer;
  margin-left: 4px;
}



/* 2段目レイアウト：ライブ情報 ＋ ライブハウスDB */
.sub-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 24px;
  align-items: start;
  margin-top: 2px;
  margin-bottom: 16px;
}

.sub-left {
  min-width: 0;
}

.sub-right {
  min-width: 0;
}

/* ライブハウスDB サイドバー：スクロールBOX */
.sub-right .venue-side-list {
  min-height: 200px;
  max-height: 360px;
  overflow-y: auto;
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 8px;
  background: #fff;
  scroll-snap-type: y mandatory;
}

.venue-side-detail {
  min-height: 0;
  transition: none;
}

.sub-right .venue-side-list::-webkit-scrollbar {
  width: 6px;
}

.sub-right .venue-side-list::-webkit-scrollbar-track {
  background: #f0f0f0;
  border-radius: 3px;
}

.sub-right .venue-side-list::-webkit-scrollbar-thumb {
  background: #bbb;
  border-radius: 3px;
}

@media (max-width: 1100px) {
  .sub-layout {
    grid-template-columns: 1fr;
  }
}

/* タイトル下注意書き */
.site-notice {
  color: #d32f2f;
  font-size: 12px;
  line-height: 1.6;
  margin: -8px 0 14px;
  padding: 6px 10px;
  border-left: 3px solid #d32f2f;
  background: #fff8f8;
}

/* ライブハウス詳細カード */
.venue-detail-card {
  padding: 10px;
}

.venue-detail-img {
  width: 100%;
  max-height: 160px;
  object-fit: cover;
  border-radius: 8px;
  margin-bottom: 8px;
  display: block;
}

.venue-detail-name {
  font-size: 16px;
  font-weight: 800;
  color: #1a1a2e;
  margin-bottom: 6px;
}

.venue-detail-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 6px;
}

.venue-detail-meta span {
  font-size: 12px;
  background: #f0f4ff;
  border: 1px solid #c5d5f0;
  border-radius: 6px;
  padding: 2px 8px;
  color: #333;
}

.venue-detail-access {
  margin: 6px 0;
}

.venue-access-item {
  font-size: 13px;
  color: #333;
  padding: 3px 0;
  border-bottom: 1px solid #f0f0f0;
}

.venue-detail-address {
  font-size: 12px;
  color: #666;
  margin: 4px 0;
}

.venue-detail-note {
  font-size: 12px;
  color: #555;
  margin: 4px 0;
  white-space: pre-wrap;
}

.venue-detail-links {
  margin-top: 8px;
}

.venue-map-btn {
  display: inline-block;
  font-size: 12px;
  background: #1976d2;
  color: #fff;
  border-radius: 6px;
  padding: 4px 12px;
  text-decoration: none;
}

.venue-map-btn:hover {
  background: #1565c0;
}

/* ライブハウスDB デフォルト画像 */
.venue-default-img-wrap {
  width: 100%;
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 6px;
}

.venue-default-img-wrap img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  display: block;
}

.venue-default-img-caption {
  font-size: 11px;
  color: #888;
  text-align: center;
  margin-top: 2px;
}

/* ライブハウスDB 固定2エリア構造 */
.venue-side-img-area {
  width: 100%;
  height: 160px;
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 8px;
  background: #f0f0f0;
}

.venue-default-fixed-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.venue-side-list-cards {
  height: 220px;
  overflow-y: auto;
  border: 1px solid #ccc;
  border-radius: 8px;
  padding: 6px;
  background: #fff;
  margin-bottom: 8px;
}

.venue-side-list-cards::-webkit-scrollbar {
  width: 6px;
}
.venue-side-list-cards::-webkit-scrollbar-track {
  background: #f0f0f0;
  border-radius: 3px;
}
.venue-side-list-cards::-webkit-scrollbar-thumb {
  background: #bbb;
  border-radius: 3px;
}

/* ライブハウスDB 上下BOX共通 */
.venue-side-box {
  height: 300px;
  overflow-y: auto;
  border: 1px solid #ddd;
  border-radius: 10px;
  padding: 0;
  background: #fff;
  margin-bottom: 8px;
  box-sizing: border-box;
  overflow: hidden;
}

/* リスト表示時はpadding復活・overflow-y有効 */
.venue-side-box.list-mode {
  padding: 8px;
  overflow-y: auto;
  overflow-x: hidden;
}

.venue-side-box::-webkit-scrollbar { width: 5px; }
.venue-side-box::-webkit-scrollbar-track { background: #f0f0f0; border-radius: 3px; }
.venue-side-box::-webkit-scrollbar-thumb { background: #bbb; border-radius: 3px; }

/* 上BOX・下BOX：デフォルト画像はBOXいっぱいに表示 */
.venue-side-box .venue-default-fixed-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 6px;
  display: block;
}

/* 上BOX：エリアボタン */
.venue-area-btn {
  padding: 8px 12px;
  margin: 4px 0;
  border: 1px solid #e0e0e0;
  border-radius: 6px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  background: #f8f8f8;
  transition: background 0.15s;
}
.venue-area-btn:hover { background: #e8f0fe; color: #1565c0; }

/* アクティブなライブハウスカード */
.venue-side-card.active {
  border-color: #1976d2;
  background: #e8f0fe;
}

/* 案内テキスト */
.venue-box-hint {
  font-size: 13px;
  color: #888;
  padding: 8px;
  text-align: center;
}

/* 上BOXは大きく、下BOXは中程度 */
#venue-side-top    { height: 300px; }
#venue-side-bottom { height: 490px; overflow-y: auto; }

/* ライブハウス詳細 直近ライブ */
.venue-lives {
  margin: 6px 0;
  font-size: 12px;
}
.venue-lives-title {
  font-weight: 700;
  color: #555;
  margin-bottom: 3px;
}
.venue-live-item {
  display: flex;
  gap: 6px;
  padding: 2px 0;
  border-bottom: 1px solid #f0f0f0;
}
.venue-live-date {
  color: #888;
  white-space: nowrap;
  min-width: 80px;
}
.venue-live-name {
  color: #333;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ライブハウス上段カード 直近ライブ */
.venue-card-live {
  font-size: 11px;
  color: #1565c0;
  margin-top: 3px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ライブハウス下段 アクセステーブル */
.venue-access-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  margin: 6px 0;
}

.venue-access-table th {
  background: #f5f5f5;
  color: #555;
  font-weight: 700;
  padding: 4px 6px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}

.venue-access-table td {
  padding: 4px 6px;
  border-bottom: 1px solid #f0f0f0;
  vertical-align: middle;
}

.va-line    { color: #333; min-width: 80px; }
.va-station { color: #1565c0; font-weight: 600; }
.va-exit    { color: #555; }
.va-minutes { color: #888; white-space: nowrap; }

/* チケット購入リンク */
.live-card-ticket-link {
  display: inline-block;
  margin-top: 4px;
  padding: 3px 10px;
  background: #e53935;
  color: #fff;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 700;
  text-decoration: none;
}
.live-card-ticket-link:hover {
  background: #c62828;
}

/* ライブハウス詳細 サムネイルギャラリー */
.venue-thumb-list {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 6px 0;
}
.venue-thumb {
  width: 72px;
  height: 54px;
  object-fit: cover;
  border-radius: 4px;
  cursor: pointer;
  border: 2px solid transparent;
  transition: border-color 0.15s;
}
.venue-thumb:hover {
  border-color: #1976d2;
}

/* フェス・バースデイ・ワンマンバッジ */
.badge-festival       { background: #e53935; color: #fff; }
.badge-festival-multi { background: #c62828; color: #fff; }
.badge-birthday       { background: #e91e63; color: #fff; }
.badge-oneman         { background: #7b1fa2; color: #fff; }
.badge-instore        { background: #0277bd; color: #fff; }
.badge-onecoin        { background: #f9a825; color: #333; }
.badge-graduation     { background: #5e35b1; color: #fff; }
.badge-food-fes       { background: #ff7043; color: #fff; }
.badge-food-fes-free  { background: linear-gradient(135deg, #ff7043 50%, #2e7d32 50%); color: #fff; }
.badge-free           { background: #2e7d32; color: #fff; }
.badge-instore   { background: #0288d1; color: #fff; }
.badge-free      { background: #388e3c; color: #fff; }
.badge-tour      { background: #f57c00; color: #fff; }

/* 同シリーズ他日程 */
.series-days {
  background: #f0f7ff;
  border-left: 3px solid #1976d2;
  padding: 8px 12px;
  border-radius: 4px;
}
.series-day-link {
  display: block;
  color: #1565c0;
  font-size: 13px;
  padding: 3px 0;
  text-decoration: none;
}
.series-day-link:hover { text-decoration: underline; }

/* 曜日ヘッダー */
.weekday-header {
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  color: #555;
  padding: 4px 0;
  background: #f5f5f5;
  border-radius: 4px;
}
.weekday-header.sun { color: #d32f2f; }
.weekday-header.sat { color: #1565c0; }

/* 日曜・土曜セル */
.day.sun { background: #fff5f5; }
.day.sat { background: #f5f8ff; }
.day.sun.has-live { background: #ffe8e8; }
.day.sat.has-live { background: #e8eeff; }

/* ライブ件数間の点線 */
.live-item + .live-item {
  border-top: 1px dashed #ddd;
  padding-top: 4px;
}

/* 横スクロール禁止・折り返し */
.day-events {
  overflow-x: hidden;
}
.live-item {
  white-space: normal;
  word-break: break-all;
  overflow-wrap: anywhere;
}

/* カレンダー 種別スタイル */
.live-item.type-free a {
  font-weight: 700;
  color: #43a047;
}
.live-item.type-festival a,
.live-item.type-festival_multi a {
  font-weight: 700;
  color: #e57373;
}

/* アイドル出演日ハイライト */
.day.idol-highlight {
  background: #fff8e1 !important;
  border-color: #ff9800 !important;
  box-shadow: 0 0 0 2px #ff9800;
}
.day.idol-highlight .date {
  color: #e65100;
  font-weight: 900;
}

/* ─── アイドル検索・DB表示 ────────────────────────── */

/* 検索バー */
.idol-search-section {
  margin: 16px 0;
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 10px;
  padding: 16px;
  box-sizing: border-box;
}
.idol-search-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 12px;
}
.idol-search-input-wrap {
  position: relative;
  flex: 1;
}
.idol-search-input-wrap input {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid #ccc;
  border-radius: 6px;
  font-size: 15px;
  box-sizing: border-box;
}
.idol-name-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 6px;
  max-height: 240px;
  overflow-y: auto;
  z-index: 100;
  box-shadow: 0 4px 12px rgba(0,0,0,0.12);
}
.idol-dropdown-item {
  padding: 8px 12px;
  cursor: pointer;
  font-size: 14px;
}
.idol-dropdown-item:hover { background: #f0f4ff; }
.idol-symbol-btn {
  padding: 8px 14px;
  background: #f0f0f0;
  border: 1px solid #ccc;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
  white-space: nowrap;
}
.idol-symbol-btn:hover { background: #e0e0e0; }

/* DBカード全体 */
.idol-db-card { display: flex; flex-direction: column; gap: 12px; }

/* ヘッダー */
.idol-db-header { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.idol-db-name   { font-size: 20px; font-weight: 800; color: #222; }
.idol-db-link {
  padding: 4px 10px;
  background: #f5f5f5;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 12px;
  color: #333;
  text-decoration: none;
}
.idol-db-link:hover { background: #e8e8e8; }
.idol-db-links { display: flex; gap: 6px; flex-wrap: wrap; }

/* 左右レイアウト */
.idol-db-body {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  overflow: hidden;
}

/* 左：グループ写真＋個人説明＋グループ紹介文 */
.idol-db-left {
  flex-shrink: 0;
  width: 495px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* グループ写真（左エリア・メンバークリックで切替） */
.idol-db-group-img {
  width: 495px;
  height: 364px;
  object-fit: contain;
  background: #f5f5f5;
  border-radius: 10px;
  border: 2px solid #eee;
  display: block;
  flex-shrink: 0;
}
.idol-db-group-img-empty {
  width: 495px;
  height: 364px;
  background: #f0f0f0;
  border-radius: 10px;
  border: 2px solid #eee;
}

/* 説明文BOX（グループ説明とメンバー説明を切替） */
.idol-db-info-box {
  width: 495px;
  height: 140px;
  box-sizing: border-box;
  overflow: hidden;
}
.idol-db-info-text {
  font-size: 12px;
  color: #444;
  line-height: 1.7;
  white-space: pre-wrap;
  height: 140px;
  overflow-y: auto;
  padding: 8px;
  background: #fafafa;
  border-radius: 6px;
  border: 1px solid #eee;
  box-sizing: border-box;
}

/* 右：横スクロールエリア */
.idol-db-right {
  flex: 1;
  min-width: 0;
  overflow: hidden;
}

/* 横スクロール */
.idol-db-members-scroll {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding-bottom: 8px;
  align-items: flex-start;
}
.idol-db-members-scroll::-webkit-scrollbar { height: 8px; }
.idol-db-members-scroll::-webkit-scrollbar-track { background: #e0e0e0; border-radius: 4px; }
.idol-db-members-scroll::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; }
.idol-db-members-scroll::-webkit-scrollbar-thumb:hover { background: #666; }

/* メンバーカード */
.idol-db-member-card {
  flex-shrink: 0;
  width: 130px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.idol-db-member-img {
  width: 130px;
  height: 196px;
  object-fit: cover;
  border-radius: 8px;
  border: 2px solid #eee;
  cursor: pointer;
  display: block;
  transition: border-color 0.15s;
}
.idol-db-member-img:hover   { border-color: #e91e8c; }
.idol-db-member-img.selected { border-color: #e91e8c; box-shadow: 0 0 0 2px #e91e8c44; }
.idol-db-member-placeholder {
  width: 130px;
  height: 196px;
  background: #f0f0f0;
  border-radius: 8px;
  border: 2px solid #eee;
}

/* サムネイル */
.idol-db-member-thumbs {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  justify-content: center;
}
.idol-db-member-thumb {
  width: 36px;
  height: 36px;
  object-fit: cover;
  border-radius: 4px;
  border: 1px solid #ddd;
  cursor: pointer;
  opacity: 0.7;
}
.idol-db-member-thumb:hover { opacity: 1; border-color: #e91e8c; }

.idol-db-member-name {
  font-size: 12px;
  font-weight: 700;
  text-align: center;
  word-break: break-all;
}
.idol-db-member-link {
  font-size: 11px;
  color: #1565c0;
  text-decoration: none;
}
.idol-db-member-link:hover { text-decoration: underline; }

/* メンバー個人説明 */
.idol-db-member-memo {
  margin-top: 8px;
  font-size: 12px;
  color: #555;
  line-height: 1.6;
  background: #f9f9f9;
  border-left: 3px solid #e91e8c;
  padding: 8px 10px;
  border-radius: 4px;
  white-space: pre-wrap;
  max-height: 120px;
  overflow-y: auto;
}

/* 直近ライブ（固定高さ・縦スクロール） */
.idol-db-lives {
  margin-top: 10px;
  background: #f8f8f8;
  border-radius: 8px;
  padding: 10px 12px;
  height: 184px;
  overflow-y: auto;
}
.idol-db-lives-title { font-weight: 700; font-size: 13px; color: #555; margin-bottom: 6px; }
.idol-db-live-item {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 4px;
  font-size: 12px;
  padding: 4px 0;
  border-bottom: 1px solid #eee;
}
.idol-db-live-date  { color: #888; }
.idol-db-live-name  { color: #1565c0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.idol-db-live-place { color: #666; font-size: 11px; grid-column: 2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 注記 */
.idol-db-disclaimer {
  font-size: 11px;
  color: #aaa;
  border-top: 1px solid #eee;
  padding-top: 8px;
}

/* アイドル出演日ハイライト */
.day.idol-highlight {
  background: #fff8e1 !important;
  border-color: #ff9800 !important;
  box-shadow: 0 0 0 2px #ff9800;
}
.day.idol-highlight .date {
  color: #e65100;
  font-weight: 900;
}

/* ポップアップ（使う場合に備えて残す） */
.idol-img-popup {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.75);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}
.idol-img-popup-inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}
.idol-img-popup-inner img {
  max-width: 90vw;
  max-height: 420px;
  object-fit: contain;
  border-radius: 8px;
}
.idol-img-popup-name { color: #fff; font-size: 15px; font-weight: 700; }
.idol-img-popup-close {
  background: rgba(255,255,255,0.2);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.4);
  padding: 6px 16px;
  border-radius: 20px;
  cursor: pointer;
  font-size: 13px;
}

/* サイトヘッダー2分割 */
.site-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  align-items: start;
  margin-bottom: 16px;
}
.site-header-right {
  /* コンテナとしてフレックス化（左:メッセージ、右:統計）。 PC専用前提でレスポンシブなし */
  display: flex;
  align-items: stretch;
  gap: 14px;
  margin-top: 8px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  font-size: 13px;
  color: #555;
  line-height: 1.8;
}

/* 左BOX：既存メッセージ（薄黄色） */
.site-header-message {
  flex: 1 1 auto;            /* 内容に合わせて自動 */
  padding: 12px 16px;
  background: #fff8e1;
  border-left: 4px solid #ff9800;
  border-radius: 4px;
  margin-bottom: 0;
}

/* 右BOX：統計データ（薄水色・固定幅） */
.site-stats {
  flex: 0 0 360px;           /* 固定幅 */
  padding: 12px 18px;
  background: #e0f2fe;       /* 薄水色 */
  border-left: 4px solid #0891b2;
  border-radius: 4px;
  font-family: ui-monospace, "SF Mono", Consolas, monospace;
  font-size: 12px;
  color: #333;
  display: grid;
  gap: 2px;
  align-content: center;
}

.site-stats-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: baseline;
  gap: 4px;
}

.site-stats-label {
  text-align: right;
  color: #1e4d5c;
}

.site-stats-colon {
  color: #999;
  padding: 0 2px;
}

.site-stats-value {
  text-align: right;
  font-weight: 600;
  color: #333;
  padding-right: 4px;
}

/* 「本日」行は少し大きめ */
.site-stats-today .site-stats-label,
.site-stats-today .site-stats-value {
  font-size: 14px;
  font-weight: 700;
}

/* 数字を strong風に */
.site-stats-value span {
  color: #e91e8c;
  font-weight: 700;
}

/* バッジ */
.badge-festival  { background: #e53935; color: #fff; }
.badge-birthday  { background: #e91e63; color: #fff; }
.badge-oneman    { background: #7b1fa2; color: #fff; }
.badge-instore   { background: #0288d1; color: #fff; }
.badge-free      { background: #388e3c; color: #fff; }
.badge-tour      { background: #f57c00; color: #fff; }

/* 同シリーズ他日程 */
.series-days {
  background: #f0f7ff;
  border-left: 3px solid #1976d2;
  padding: 8px 12px;
  border-radius: 4px;
}
.series-day-link {
  display: block;
  color: #1565c0;
  font-size: 13px;
  padding: 3px 0;
  text-decoration: none;
}
.series-day-link:hover { text-decoration: underline; }

/* カレンダー 種別スタイル */
.live-item.type-free a { font-weight: 700; color: #43a047; }
.live-item.type-festival a,
.live-item.type-festival_multi a { font-weight: 700; color: #e57373; }

/* 曜日ヘッダー */
.weekday-header {
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  color: #555;
  padding: 4px 0;
  background: #f5f5f5;
  border-radius: 4px;
}
.weekday-header.sun { color: #d32f2f; }
.weekday-header.sat { color: #1565c0; }

/* 日曜・土曜セル */
.day.sun { background: #fff5f5; }
.day.sat { background: #f5f8ff; }
.day.sun.has-live { background: #ffe8e8; }
.day.sat.has-live { background: #e8eeff; }

/* ライブ件数間の点線 */
.live-item + .live-item {
  border-top: 1px dashed #ddd;
  padding-top: 4px;
}

/* アイドルDB直近ライブクリック後のライブ詳細 */
.idol-db-event-detail {
  margin-top: 12px;
  border-top: 2px solid #e91e8c44;
  padding-top: 12px;
}
/* ライブ詳細v2をsub-layout幅全体に */
.idol-db-event-detail .detail-card-v2 {
  width: 100%;
  box-sizing: border-box;
}
.idol-db-live-link {
  color: #1565c0;
  text-decoration: none;
  cursor: pointer;
}
.idol-db-live-link:hover { text-decoration: underline; }

/* ─── ライブ詳細 v2 ─── */
.detail-card-v2 {
  background: #fff;
  border: 1px solid #e0e0e0;
  border-radius: 10px;
  padding: 16px;
}
.detail-v2-header {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  border-bottom: 1px solid #eee;
  padding-bottom: 10px;
}
.detail-v2-title {
  font-size: 18px;
  font-weight: 800;
  color: #222;
}
.detail-v2-body {
  display: flex;
  gap: 16px;
  align-items: stretch;
  margin-bottom: 16px;
  flex-wrap: nowrap;
}
.detail-v2-left {
  flex: 0 0 300px;
  width: 300px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-self: stretch;
}
.detail-v2-left .detail-section {
  width: 100%;
}
.detail-v2-info p {
  margin: 6px 0;
  font-size: 16px;
}
.detail-v2-img {
  flex: 0 0 590px;
  width: 590px;
}
.detail-v2-img-el {
  width: 590px;
  height: auto;
  max-height: 1200px;
  object-fit: contain;
  border-radius: 8px;
  cursor: pointer;
  display: block;
}
.detail-v2-img-el:hover { opacity: 0.9; }

/* 出演アイドル横スクロール */
.detail-v2-performers {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding: 10px 0 6px;
  border-top: 1px solid #eee;
  scroll-snap-type: x mandatory;
}
.detail-v2-performers::-webkit-scrollbar { height: 6px; }
.detail-v2-performers::-webkit-scrollbar-track { background: #e0e0e0; border-radius: 4px; }
.detail-v2-performers::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; }

.detail-v2-performer-card {
  flex-shrink: 0;
  width: 220px;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  background: #fafafa;
  border: 1px solid #eee;
  border-radius: 10px;
  padding: 8px;
  cursor: pointer;
}
.detail-v2-performer-card:hover { background: #f0f4ff; border-color: #e91e8c44; }
.detail-v2-performer-img {
  width: 204px;
  height: 204px;
  object-fit: cover;
  border-radius: 8px;
  background: #f0f0f0;
  display: block;
}
.detail-v2-performer-noimg {
  background: #e8e8e8;
}
.detail-v2-performer-name {
  font-size: 13px;
  text-align: center;
  word-break: break-all;
  color: #333;
  font-weight: 600;
}

/* 出演者チップエリア（横幅1/3・縦スクロール） */
.performer-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
/* ライブ詳細v2内では幅制限なし（detail-v2-leftで管理） */
.detail-v2-left .performer-list {
  width: 100%;
  box-sizing: border-box;
  align-content: flex-start;
  overflow: visible;
}
.performer-chip-button {
  font-size: 13px;
  padding: 3px 8px;
  border: 1px solid #ccc;
  border-radius: 20px;
  background: #f5f5f5;
  cursor: pointer;
  white-space: nowrap;
  max-width: 300px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.performer-chip-button:hover { background: #e8eeff; border-color: #1565c0; }


.free-live-section {
  margin-top: 16px;
  background: #f1f8f1;
  border: 1px solid #a5d6a7;
  border-radius: 10px;
  padding: 12px 16px;
}
.free-live-head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.free-live-title {
  margin: 0;
  font-size: 18px;
  color: #2e7d32;
}
.free-highlight-btn {
  padding: 4px 12px;
  background: #e8f5e9;
  border: 1px solid #a5d6a7;
  border-radius: 20px;
  cursor: pointer;
  font-size: 12px;
  white-space: nowrap;
  transition: background 0.2s;
}
.free-highlight-btn:hover { background: #c8e6c9; }
.free-live-note {
  font-size: 11px;
  color: #555;
  line-height: 1.5;
}

/* カレンダー無銭ハイライト */
.day.free-highlight {
  background: #e8f5e9 !important;
  border-color: #43a047 !important;
  box-shadow: 0 0 0 2px #43a047;
}
.day.free-highlight .date { color: #1b5e20; font-weight: 900; }

/* 画像1枚の時は左寄せ */


/* 画像1枚の時：左エリアを固定幅にして画像を左寄せ */
.detail-v2-body.single-img .detail-v2-left {
  flex: 0 0 300px;
  width: 300px;
}
.detail-v2-body.single-img .detail-v2-img {
  flex: 0 0 590px;
  width: 590px;
}


.free-live-buttons {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}
.free-live-note {
  font-size: 11px;
  color: #555;
  margin-top: 6px;
  line-height: 1.5;
}



/* ライブ詳細 3BOX構成 */
.detail-v2-box {
  width: 100%;
  box-sizing: border-box;
  overflow-y: auto;
  overflow-x: hidden;
  border: 1px solid #eee;
  border-radius: 8px;
  padding: 8px 10px;
  background: #fafafa;
  flex-shrink: 0;
  word-break: break-all;
}
/* 基本情報BOX：最大180px */
.detail-v2-box:first-child {
  max-height: 180px;
}


.detail-v2-box p {
  margin: 3px 0;
  font-size: 13px;
}











/* ─── 無銭情報 ─── */
#free-live-list {
  display: flex;
  flex-wrap: nowrap;
  gap: 12px;
  overflow-x: auto;
  padding-bottom: 8px;
  align-items: flex-start;
}
#free-live-list::-webkit-scrollbar { height: 8px; }
#free-live-list::-webkit-scrollbar-track { background: #e0e0e0; border-radius: 4px; }
#free-live-list::-webkit-scrollbar-thumb { background: #888; border-radius: 4px; }
#free-live-list .live-card { min-width: 220px; flex-shrink: 0; }

/* ライブ詳細 3BOX - 順序制御 */
.detail-v2-box-info {
  overflow-y: auto;
}
.detail-v2-box-performers {
  flex-shrink: 0;
  overflow-y: auto;
}
.detail-v2-box-timetable {
  flex-shrink: 0;
  overflow-y: auto;
}

/* ─── フッター ─── */
.site-footer {
  margin-top: 32px;
  padding: 24px 32px;
  background: transparent;
}
.site-footer-box {
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 12px;
  padding: 20px 24px;
  color: #666;
  font-size: 12px;
  line-height: 1.8;
  max-width: 900px;
  margin: 0 auto;
}
.site-footer-text p {
  margin: 2px 0;
}
.site-footer-nav {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid #eee;
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
}
.site-footer-nav a {
  color: #888;
  text-decoration: none;
  font-size: 13px;
}
.site-footer-nav a:hover {
  color: #333;
  text-decoration: underline;
}
/* タイトル下の注意書き */
.site-notice a {
  color: #e91e8c;
}
