 :root {
   --bg: #f1f2ed;
   --bg-calendar: #ffffff;
   --warm-black: #141412;
   --sage: #7e807c;
   --cedar: #7d7668;
   --cedar-light: #a9a197;
   --steam: #eceae6;
   --linen: #f9f8f6;
   --herb: #5a6b52;
   --text: #161a14;
   --text-cream: #d9d9d9;
   --text-sub: #4a4842;
   --text-quiet: #161a14;
   --border: rgba(20, 20, 18, 0.07);
   --border-mid: rgba(20, 20, 18, 0.14);
	 --border-cream: #d9d9d9;
   --dot-player: #6aabc2;
   --dot-ld: #a68cc4;
   --gender-mixed: #8a8e8b;
   --gender-male: #6a8caa;
   --gender-female: #c47a6e;
 }
 * {
   margin: 0;
   padding: 0;
   box-sizing: border-box;
 }
 body {
   font-family: Yu Gothic Medium,"\6E38\30B4\30B7\30C3\30AF   Medium",YuGothic,"\6E38\30B4\30B7\30C3\30AF\4F53","\30D2\30E9\30AE\30CE\89D2\30B4   Pro W3","\30E1\30A4\30EA\30AA",sans-serif;
   background: var(--bg);
   color: var(--text);
   -webkit-font-smoothing: antialiased;
   min-height: 100dvh;
   font-weight: 300;
 }
 /* ===== ヘッダー ===== */
 .site-header {
   text-align: center;
   padding: 44px 32px 0;
   max-width: 720px;
   margin: 0 auto;
   position: relative;
 }
 .site-header::after {
   content: '';
   display: block;
   width: 1px;
   height: 25px;
   background: var(--border-mid);
   margin: 10px auto 0;
 }
 .site-title {
   font-size: 18px;
   font-weight: 600;
   letter-spacing: 0.22em;
   margin-bottom: 16px;
   line-height: 1.5;
   color: var(--text);
 }
 .site-title span {
   display: block;
   font-family: 'DM Sans', sans-serif;
   font-size: 10px;
   font-weight: 300;
   color: var(--cedar);
   margin-top: 10px;
   letter-spacing: 0.35em;
   text-transform: uppercase;
 }
 .site-title-by {
   display: block;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 10px;
   font-weight: 300;
   color: var(--cedar-light);
   margin-top: 6px;
   letter-spacing: 0.15em;
   text-transform: none;
 }
 .site-lead {
   font-size: 13px;
    line-height: 1.8;
   font-weight: 300;
   color: var(--text-quiet);
   margin-bottom: 0;
   letter-spacing: 0.08em;
 }
 /* ===== 検索ボタン ===== */
 .search-buttons {
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 10px;
   margin-bottom: 20px;
   padding: 20px 32px 0;
   max-width: 720px;
   margin-left: auto;
   margin-right: auto;
 }
 .search-btn {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 10px;
   width: 260px;
   padding: 14px 24px;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 11.5px;
   font-weight: 400;
   letter-spacing: 0.15em;
   border: 1px solid var(--border-mid);
   border-radius: 0;
   background: rgba(255,255,255,0.45);
   color: var(--text);
   cursor: pointer;
   transition: all 0.35s ease;
   text-decoration: none;
   min-height: 48px;
   position: relative;
   overflow: hidden;
 }
 .search-btn::before {
   content: '';
   position: absolute;
   inset: 0;
   background: var(--sage);
   transform: translateY(101%);
   transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
   z-index: 0;
 }
 .search-btn:hover::before {
   transform: translateY(0);
 }
 .search-btn:hover {
   color: #fff !important;
   border-color: var(--sage);
	 z-index: 1;
 }
 .search-btn:hover .btn-icon {
   stroke: #fff;
 }
 .search-btn {
   z-index: 0;
 }
 .search-btn span, .search-btn svg {
   position: relative;
   z-index: 1;
 }
 .search-btn.player-btn .btn-icon {
   stroke: var(--dot-player);
 }
 .search-btn.ld-btn .btn-icon {
   stroke: var(--dot-ld);
 }
 .btn-icon {
   width: 16px;
   height: 16px;
   stroke-width: 1.5;
   fill: none;
   transition: stroke 0.35s ease;
   flex-shrink: 0;
 }
 /* ===== 凡例 ===== */
 .legend {
   display: flex;
   justify-content: center;
   gap: 28px;
   margin-bottom: 24px;
   padding: 0 32px;
 }
 .legend-item {
   display: flex;
   align-items: center;
   gap: 8px;
   font-size: 10px;
   color: var(--text-quiet);
   letter-spacing: 0.12em;
   font-weight: 300;
 }
 .legend-dot {
   width: 5px;
   height: 5px;
   border-radius: 50%;
   flex-shrink: 0;
 }
 .legend-dot.player {
   background: var(--dot-player);
 }
 .legend-dot.ld {
   background: var(--dot-ld);
 }
 /* ===== カレンダー ===== */
 .calendar-wrap {
   max-width: 720px;
   margin: 0 auto;
   padding: 0 20px;
 }
 .calendar {
   background: var(--bg-calendar);
   border: 1px solid var(--border);
   overflow: hidden;
 }
 .cal-context {
   text-align: center;
   padding: 12px 20px 0;
   display: none;
 }
 .cal-context.active {
   display: block;
 }
 .cal-context-label {
   display: inline-flex;
   align-items: center;
   gap: 8px;
   border: 1px solid var(--border-mid);
   padding: 5px 14px;
   font-size: 10px;
   letter-spacing: 0.15em;
   color: var(--text-sub);
   font-weight: 300;
 }
 .cal-context-close {
   background: none;
   border: none;
   cursor: pointer;
   font-size: 14px;
   color: var(--text-quiet);
   padding: 0 0 0 4px;
   line-height: 1;
 }
 .cal-context-close:hover {
   color: var(--text);
 }
 .cal-header {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 20px 24px;
   border-bottom: 1px solid var(--border);
 }
 .cal-nav {
   background: none;
   border: 1px solid var(--border-mid);
   width: 36px;
   height: 36px;
   border-radius: 0;
   cursor: pointer;
   font-size: 12px;
   color: var(--text-sub);
   display: flex;
   align-items: center;
   justify-content: center;
   transition: all 0.25s ease;
   min-height: 44px;
   min-width: 44px;
 }
 .cal-nav:hover {
   background: var(--warm-black);
   color: #fff;
   border-color: var(--warm-black);
 }
 .cal-month {
   font-size: 12px;
   font-weight: 400;
   letter-spacing: 0.2em;
   text-align: center;
   color: var(--text);
 }
 .cal-month span {
   font-family: 'DM Sans', sans-serif;
   font-weight: 300;
   font-size: 10px;
   color: var(--cedar);
   margin-left: 10px;
   letter-spacing: 0.25em;
   text-transform: uppercase;
 }
 .cal-grid {
   display: grid;
   grid-template-columns: repeat(7, 1fr);
 }
 .cal-dow {
   text-align: center;
   font-size: 9px;
   font-weight: 400;
   color: var(--text-quiet);
   padding: 14px 0 8px;
   letter-spacing: 0.15em;
 }
 .cal-day {
   text-align: center;
   padding: 8px 2px 6px;
   font-size: 11.5px;
   color: var(--text-sub);
   min-height: 54px;
   border-top: 1px solid var(--border);
   transition: background 0.2s ease;
   cursor: default;
   display: flex;
   flex-direction: column;
   align-items: center;
   font-weight: 300;
 }
 .cal-day.has-event {
   cursor: pointer;
 }
 .cal-day:hover:not(.empty):not(.other-month) {
   background: var(--steam);
 }
 .cal-day.sun {
   color: #b06060;
 }
 .cal-day.sat {
   color: #607080;
 }
 .cal-day.holiday {
   color: #b06060;
 }
 .cal-day.other-month {
   color: var(--border-mid);
 }
 .cal-day.today .day-num {
   background: var(--warm-black);
   color: #fff;
   border-radius: 0;
   width: 26px;
   height: 26px;
   display: inline-flex;
   align-items: center;
   justify-content: center;
   font-size: 11px;
   font-weight: 400;
 }
 .event-dots {
   display: flex;
   gap: 4px;
   margin-top: 5px;
   justify-content: center;
   align-items: center;
   min-height: 6px;
 }
 .event-dot {
   width: 5px;
   height: 5px;
   border-radius: 50%;
   flex-shrink: 0;
 }
 .event-dot.player {
   background: var(--dot-player);
 }
 .event-dot.ld {
   background: var(--dot-ld);
 }
 .event-dots .dot-more {
   font-size: 8px;
   color: var(--text-quiet);
   line-height: 1;
   letter-spacing: 0;
 }
 /* PCゾーンセルはモバイルでは非表示（モバイルは無限スクロールリスト） */
 .cell-zones {
   display: none;
 }
 /* ===== スマホ用リスト（無限スクロール） ===== */
 /* モバイル既定＝カレンダーグリッドは隠し、リストを表示 */
 .calendar-wrap {
   display: none;
 }
 .sp-view {
   display: block;
   max-width: 560px;
   margin: 0 auto;
   padding: 0 16px 8px;
 }
 .sp-tabs {
   display: flex;
   gap: 6px;
   margin: 0 0 14px;
 }
 .sp-tab {
   flex: 1;
   padding: 10px 4px;
   font-size: 12px;
   font-weight: 300;
   color: var(--text-sub);
   background: var(--steam);
   border: none;
   border-radius: 18px;
   cursor: pointer;
   letter-spacing: 0.02em;
 }
 .sp-tab.active {
   background: var(--warm-black);
   color: #fff;
 }
 .sp-date {
   font-size: 12px;
   color: var(--sage);
   margin: 16px 2px 6px;
   letter-spacing: 0.06em;
 }
 .sp-row {
   background: #fff;
   border: 1px solid var(--border);
   border-left: 3px solid var(--border-mid);
   padding: 9px 12px;
   margin-bottom: 6px;
   cursor: pointer;
 }
 .sp-row-player {
   border-left-color: var(--dot-player);
 }
 .sp-row-ld {
   border-left-color: var(--dot-ld);
 }
 .sp-row-head {
   display: flex;
   align-items: center;
   gap: 6px;
 }
 .sp-name {
   flex: 1 1 auto;
   min-width: 0;
   font-size: 14px;
   color: var(--text);
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 .sp-time {
   flex-shrink: 0;
   font-size: 12px;
   color: var(--text-sub);
 }
 .sp-region {
   flex-shrink: 0;
   font-size: 11px;
   color: var(--cedar-light);
 }
 .sp-fac {
   font-size: 11px;
   color: var(--cedar-light);
   margin-top: 3px;
   padding-left: 19px;
 }
 .sp-empty {
   padding: 32px 10px;
   text-align: center;
   color: var(--text-quiet);
   font-size: 13px;
 }
 /* ===== ローディング ===== */
 .cal-loading {
   text-align: center;
   padding: 48px 20px;
   color: var(--text-quiet);
   font-size: 11px;
   letter-spacing: 0.15em;
 }
 .cal-loading-dot {
   display: inline-block;
   width: 4px;
   height: 4px;
   border-radius: 50%;
   background: var(--cedar-light);
   margin: 0 3px;
   animation: loadingPulse 1.2s ease-in-out infinite;
 }
 .cal-loading-dot:nth-child(2) {
   animation-delay: 0.2s;
 }
 .cal-loading-dot:nth-child(3) {
   animation-delay: 0.4s;
 }
 @keyframes loadingPulse {
   0%, 100% {
     opacity: 0.3;
     transform: scale(0.8);
   }
   50% {
     opacity: 1;
     transform: scale(1.1);
   }
 }
 /* ===== モーダル共通 ===== */
 .modal-overlay {
   position: fixed;
   inset: 0;
   background: rgba(20, 20, 18, 0.45);
   z-index: 100;
   display: none;
   align-items: flex-end;
   justify-content: center;
   backdrop-filter: blur(2px);
 }
 .modal-overlay.open {
   display: flex;
 }
 .modal-panel {
   background: #fff;
   width: 100%;
   max-width: 480px;
   max-height: 85dvh;
   border-radius: 0;
   overflow: hidden;
   display: flex;
   flex-direction: column;
   animation: slideUp 0.35s cubic-bezier(0.4, 0, 0.2, 1);
 }
 @keyframes slideUp {
   from {
     transform: translateY(100%);
     opacity: 0;
   }
   to {
     transform: translateY(0);
     opacity: 1;
   }
 }
 .modal-header {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 24px 28px 20px;
   border-bottom: 1px solid var(--border);
   flex-shrink: 0;
 }
 .modal-title {
   font-size: 11px;
   font-weight: 400;
   letter-spacing: 0.2em;
   color: var(--text);
 }
 .modal-close {
   background: none;
   border: none;
   font-size: 18px;
   color: var(--text-quiet);
   cursor: pointer;
   padding: 4px 8px;
   min-height: 44px;
   min-width: 44px;
   display: flex;
   align-items: center;
   justify-content: center;
   transition: color 0.2s;
 }
 .modal-close:hover {
   color: var(--text);
 }
 .modal-body {
   overflow-y: auto;
   padding: 8px 0;
   flex: 1;
   -webkit-overflow-scrolling: touch;
 }
 .modal-list-item {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 16px 28px;
   cursor: pointer;
   transition: background 0.18s;
   border: none;
   background: none;
   width: 100%;
   font-family: inherit;
   font-size: 12.5px;
   color: var(--text);
   text-align: left;
   min-height: 48px;
   font-weight: 300;
   letter-spacing: 0.05em;
 }
 .modal-list-item:hover {
   background: var(--steam);
 }
 .modal-list-item:active {
   background: #e4e2de;
 }
 .item-label {
   font-weight: 400;
 }
 .item-count {
   font-size: 10px;
   color: var(--text-quiet);
   font-family: 'DM Sans', sans-serif;
   font-weight: 300;
   letter-spacing: 0.08em;
   border: 1px solid var(--border);
   padding: 2px 10px;
   min-width: 32px;
   text-align: center;
 }
 .modal-divider {
   height: 1px;
   background: var(--border);
   margin: 6px 28px;
 }
 .name-group-title {
   font-size: 9px;
   font-weight: 400;
   color: var(--cedar);
   padding: 16px 28px 6px;
   letter-spacing: 0.25em;
   font-family: 'DM Sans', sans-serif;
 }
 .name-item {
   display: flex;
   align-items: center;
   gap: 12px;
   padding: 10px 28px;
   cursor: pointer;
   transition: background 0.18s;
   border: none;
   background: none;
   width: 100%;
   font-family: inherit;
   font-size: 12.5px;
   color: var(--text);
   text-align: left;
   min-height: 44px;
   font-weight: 300;
 }
 .name-item:hover {
   background: var(--steam);
 }
 .name-avatar {
   width: 28px;
   height: 28px;
   border-radius: 0;
   background: var(--steam);
   border: 1px solid var(--border);
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 10px;
   color: var(--cedar);
   flex-shrink: 0;
   letter-spacing: 0;
 }
 .modal-back {
   display: inline-flex;
   align-items: center;
   gap: 6px;
   background: none;
   border: none;
   cursor: pointer;
   font-size: 10px;
   color: var(--cedar);
   padding: 4px 0;
   min-height: 44px;
   letter-spacing: 0.15em;
   font-family: 'DM Sans', sans-serif;
 }
 .modal-back:hover {
   color: var(--text);
 }
 /* ===== 共通モーダル：プレイヤーカードグリッド／LD地域チップ ===== */
 .psub {
   font-size: 11px;
   color: var(--cedar-light);
   padding: 2px 24px 12px;
 }
 .pgrid {
   display: grid;
   grid-template-columns: minmax(0, 1fr);
   gap: 8px;
   padding: 0 20px 16px;
 }
 .pcard {
   display: flex;
   align-items: center;
   gap: 10px;
   text-align: left;
   background: #fff;
   border: 1px solid var(--border);
   border-radius: 12px;
   padding: 10px 12px;
   cursor: pointer;
   width: 100%;
   font-family: inherit;
 }
 .pcard:hover {
   border-color: var(--border-mid);
 }
 .pcard.zero {
   opacity: 0.5;
   cursor: default;
 }
 .pcard-av {
   width: 38px;
   height: 38px;
   border-radius: 50%;
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 15px;
   flex-shrink: 0;
   overflow: hidden;
 }
 .pcard-av img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
 }
 .pcard-main {
   flex: 1;
   min-width: 0;
   display: flex;
   flex-direction: column;
   gap: 1px;
 }
 .pcard-name {
   font-size: 14px;
   color: var(--text);
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 .pcard-genre {
   font-size: 11px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 .pcard-next {
   font-size: 11px;
   color: var(--cedar-light);
   margin-top: 2px;
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
 }
 .pcard-count {
   flex-shrink: 0;
   font-size: 11px;
   border-radius: 12px;
   padding: 2px 9px;
   align-self: flex-start;
 }
 .pgrid-empty {
   padding: 20px;
   color: var(--text-quiet);
   font-size: 13px;
   text-align: center;
 }
 .ldchips {
   display: grid;
   grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
   gap: 8px;
   padding: 0 20px 16px;
 }
 .ldchip {
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 2px;
   background: #fff;
   border: 1px solid var(--border);
   border-radius: 10px;
   padding: 10px 6px;
   cursor: pointer;
   font-family: inherit;
 }
 .ldchip.all {
   grid-column: 1 / -1;
   flex-direction: row;
   justify-content: center;
   gap: 8px;
   background: var(--steam);
 }
 .ldchip:hover {
   border-color: var(--border-mid);
 }
 .ldchip-name {
   font-size: 12.5px;
   color: var(--text);
 }
 .ldchip-count {
   font-size: 10px;
   color: var(--cedar-light);
 }
 /* ===== 画像 共有オーバーレイ（SP・2ステップ） ===== */
 .savepv-overlay {
   position: fixed;
   inset: 0;
   background: rgba(20, 20, 18, 0.6);
   z-index: 300;
   display: none;
   align-items: center;
   justify-content: center;
   padding: 20px;
   backdrop-filter: blur(2px);
 }
 .savepv-overlay.open {
   display: flex;
 }
 .savepv-panel {
   background: #fff;
   border-radius: 12px;
   padding: 16px;
   max-width: 340px;
   width: 100%;
   display: flex;
   flex-direction: column;
   align-items: center;
   gap: 12px;
   position: relative;
   max-height: 88dvh;
 }
 .savepv-x {
   position: absolute;
   top: 2px;
   right: 2px;
 }
 .savepv-img {
   max-width: 100%;
   max-height: 60dvh;
   object-fit: contain;
   border: 1px solid var(--border);
 }
 .savepv-do {
   width: 100%;
   padding: 14px;
   background: var(--warm-black);
   color: #fff;
   border: none;
   border-radius: 8px;
   font-size: 14px;
   cursor: pointer;
 }
 .savepv-hint {
   font-size: 11px;
   color: var(--cedar-light);
 }
 /* ===== 日付詳細 ===== */
 .detail-overlay {
   position: fixed;
   inset: 0;
   background: rgba(20, 20, 18, 0.45);
   z-index: 200;
   display: none;
   align-items: flex-end;
   justify-content: center;
   backdrop-filter: blur(2px);
 }
 .detail-overlay.open {
   display: flex;
 }
 .detail-panel {
   background: #fff;
   width: 100%;
   max-width: 480px;
   max-height: 85dvh;
   border-radius: 0;
   overflow: hidden;
   display: flex;
   flex-direction: column;
   animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1);
 }
 .detail-header {
   display: flex;
   flex-direction: column;
   align-items: stretch;
   gap: 14px;
   padding: 22px 28px 18px;
   border-bottom: 1px solid var(--border);
   flex-shrink: 0;
 }
 .detail-header-top {
   display: flex;
   align-items: center;
   justify-content: space-between;
 }
 /* A: その日の全イベントを画像保存（モーダル上部・全幅） */
 .detail-save-all-btn {
   display: block;
   width: 100%;
   padding: 11px 16px;
   background: var(--warm-black);
   color: #fff;
   border: 1px solid var(--warm-black);
   border-radius: 0;
   font-family: inherit;
   font-size: 11px;
   font-weight: 500;
   letter-spacing: 0.1em;
   cursor: pointer;
   transition: background 0.22s ease;
 }
 .detail-save-all-btn:hover {
   background: var(--sage);
   border-color: var(--sage);
 }
 /* B: 1イベントだけ画像保存（各イベントのヘッダー右） */
 .detail-save-btn {
   position: absolute;
   top: 18px;
   right: 0;
   padding: 6px 10px;
   background: transparent;
   color: var(--text-sub);
   border: 1px solid var(--border-mid);
   border-radius: 0;
   font-family: inherit;
   font-size: 9px;
   font-weight: 400;
   letter-spacing: 0.06em;
   cursor: pointer;
   transition: all 0.22s ease;
   white-space: nowrap;
 }
 .detail-save-btn:hover {
   background: var(--warm-black);
   border-color: var(--warm-black);
   color: #fff;
 }
 .detail-date {
   font-size: 11px;
   font-weight: 400;
   letter-spacing: 0.2em;
   color: var(--text);
 }
 .detail-body {
   overflow-y: auto;
   padding: 16px 28px 28px;
   flex: 1;
   -webkit-overflow-scrolling: touch;
 }
 .detail-event {
   position: relative;
   padding: 20px 0 24px;
   border-bottom: 1px solid var(--border);
 }
 .detail-event:last-child {
   border-bottom: none;
 }
 .detail-type-badge {
   display: inline-block;
   font-size: 9px;
   font-weight: 400;
   padding: 3px 10px;
   border-radius: 0;
   margin-bottom: 12px;
   letter-spacing: 0.18em;
   font-family: 'DM Sans', sans-serif;
   text-transform: uppercase;
   border: 1px solid;
 }
 .detail-type-badge.player {
   border-color: var(--dot-player);
   color: var(--dot-player);
 }
 .detail-type-badge.ld {
   border-color: var(--dot-ld);
   color: var(--dot-ld);
 }
 .detail-event-date {
   font-size: 10px;
   color: var(--text-quiet);
   margin-bottom: 14px;
   letter-spacing: 0.12em;
   font-weight: 300;
 }
 .detail-event-name {
   font-size: 13.5px;
   font-weight: 400;
   margin-bottom: 8px;
   display: flex;
   align-items: baseline;
   gap: 8px;
   flex-wrap: wrap;
   letter-spacing: 0.05em;
 }
 .detail-region {
   font-size: 9px;
   font-weight: 400;
   color: var(--cedar);
   border: 1px solid var(--border-mid);
   padding: 2px 8px;
   white-space: nowrap;
   flex-shrink: 0;
   letter-spacing: 0.12em;
   font-family: 'DM Sans', sans-serif;
 }
 .detail-style {
   display: flex;
   align-items: center;
   gap: 6px;
   font-size: 11px;
   color: var(--dot-player);
   font-weight: 400;
   margin-bottom: 12px;
   letter-spacing: 0.08em;
 }
 .detail-style svg {
   flex-shrink: 0;
 }
 .detail-programs-table {
   width: 100%;
   font-size: 11px;
   border-collapse: collapse;
   margin-bottom: 14px;
 }
 .detail-programs-table thead {
   background: var(--steam);
 }
 .detail-programs-table th {
   font-weight: 400;
   padding: 9px 8px;
   text-align: left;
   border: 1px solid var(--border);
   color: var(--text);
   letter-spacing: 0.08em;
   font-size: 10px;
 }
 .detail-programs-table td {
   padding: 9px 8px;
   border: 1px solid var(--border);
   color: var(--text-sub);
   font-weight: 300;
 }
 .detail-programs-table td:first-child {
   text-align: left;
 }
 .detail-programs-table .gender-col {
   text-align: left;
 }
 .detail-programs-table .extra-fee {
   font-size: 10px;
   font-weight: 400;
 }
 .detail-programs-table .extra-fee.yes {
   color: #b85c5c;
 }
 .detail-programs-table .extra-fee.no {
   color: var(--text-quiet);
 }
 .gender-icon {
   display: inline-flex;
   align-items: center;
   gap: 3px;
 }
 .gender-label {
   font-size: 10px;
   font-weight: 300;
 }
 .detail-co-performers {
   font-size: 11px;
   color: var(--text-sub);
   margin-bottom: 14px;
   letter-spacing: 0.05em;
   font-weight: 300;
 }
 .detail-co-performers-label {
   color: var(--text-quiet);
 }
 .detail-notes-box {
   border: 1px solid var(--border);
   padding: 12px 14px;
   margin-bottom: 14px;
   background: var(--linen);
 }
 .detail-notes-title {
   font-size: 9px;
   font-weight: 400;
   color: var(--cedar);
   margin-bottom: 8px;
   letter-spacing: 0.2em;
   font-family: 'DM Sans', sans-serif;
   text-transform: uppercase;
 }
 .detail-notes-content {
   font-size: 11.5px;
   color: var(--text-sub);
   line-height: 1.8;
   font-weight: 300;
 }
 .detail-notes-content.empty {
   color: var(--text-quiet);
 }
 .detail-facility-links {
   display: flex;
   gap: 8px;
   margin-top: 14px;
   flex-wrap: wrap;
 }
 .facility-link {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 5px;
   padding: 8px 14px;
   border: 1px solid var(--border-mid);
   background: transparent;
   text-decoration: none;
   color: var(--text-sub);
   font-size: 10px;
   font-weight: 400;
   transition: all 0.22s ease;
   min-height: 36px;
   letter-spacing: 0.1em;
   border-radius: 0;
 }
 .facility-link:hover {
   background: var(--warm-black);
   border-color: var(--warm-black);
   color: #fff;
 }
 .facility-link svg {
   width: 11px;
   height: 11px;
   flex-shrink: 0;
 }
 .detail-ld-table td.ld-label {
   font-weight: 400;
   color: var(--text);
   white-space: nowrap;
   width: 80px;
   letter-spacing: 0.05em;
 }
 /* ===== シェア ===== */
 /* ===== 統一スコープバー（3タブ＋絞り込み）＋ 上部DL ===== */
 .scope-bar {
   max-width: 560px;
   margin: 18px auto 10px;
   padding: 0 16px;
 }
 .scope-tabs {
   display: flex;
   gap: 6px;
 }
 .scope-tab {
   flex: 1;
   padding: 10px 4px;
   font-size: 12px;
   font-weight: 300;
   color: var(--text-sub);
   background: var(--steam);
   border: none;
   border-radius: 18px;
   cursor: pointer;
   letter-spacing: 0.02em;
 }
 .scope-tab.active {
   background: var(--warm-black);
   color: #fff;
 }
 .scope-drill {
   display: flex;
   align-items: center;
   gap: 8px;
   margin-top: 10px;
 }
 .scope-drill-lbl {
   font-size: 11px;
   color: var(--cedar-light);
 }
 .scope-chip {
   font-size: 12px;
   color: var(--text-sub);
   background: #f3f8fa;
   border: 1px solid var(--dot-player);
   border-radius: 16px;
   padding: 6px 14px;
   cursor: pointer;
 }
 .scope-clear {
   background: none;
   border: none;
   font-size: 14px;
   color: var(--sage);
   cursor: pointer;
   padding: 0 4px;
 }
 .dl-bar {
   max-width: 560px;
   margin: 0 auto 16px;
   padding: 12px 16px;
   background: var(--linen);
   border: 1px solid var(--border);
   border-radius: 10px;
 }
 .dl-title {
   font-size: 11px;
   color: var(--sage);
   letter-spacing: 0.08em;
   margin-bottom: 8px;
 }
 .dl-scope {
   display: flex;
   align-items: center;
   gap: 8px;
   margin-bottom: 10px;
   padding-bottom: 10px;
   border-bottom: 1px solid var(--border);
 }
 .dl-scope-lbl {
   font-size: 11px;
   color: var(--cedar-light);
 }
 .dl-row {
   display: grid;
   grid-template-columns: 68px 1fr 1fr;
   gap: 8px;
   align-items: center;
   margin-bottom: 8px;
 }
 .dl-row:last-child {
   margin-bottom: 0;
 }
 .dl-rowlbl {
   font-size: 12px;
   color: var(--text-sub);
 }
 .dl-chip {
   background: #fff;
   border: 1px solid var(--border-mid);
   border-radius: 8px;
   padding: 9px 6px;
   font-size: 13px;
   color: var(--warm-black);
   cursor: pointer;
 }
 .dl-chip:hover {
   border-color: var(--dot-player);
 }
 /* プレイヤー選択モーダル：フラット4チップ */
 .pchips {
   display: flex;
   flex-wrap: wrap;
   gap: 6px;
   padding: 2px 2px 12px;
 }
 .pchip {
   display: inline-flex;
   align-items: center;
   gap: 4px;
   font-size: 11.5px;
   color: var(--text-sub);
   background: var(--steam);
   border: 1px solid transparent;
   border-radius: 16px;
   padding: 6px 12px;
   cursor: pointer;
 }
 .pchip.active {
   background: #fff;
   border-color: var(--warm-black);
   color: var(--warm-black);
 }
 .pchip svg {
   flex-shrink: 0;
 }
 .name-count {
   color: var(--cedar-light);
   font-size: 11px;
 }
 .save-section {
   max-width: 720px;
   margin: 0 auto;
   padding: 48px 32px 0;
   text-align: center;
 }
 /* ===== 画像保存 2×2期間セレクタ ===== */
 .period-selector {
   max-width: 420px;
   margin: 0 auto;
 }
 .ps-title {
   font-size: 12px;
   color: var(--sage);
   letter-spacing: 0.08em;
   margin-bottom: 12px;
 }
 .ps-grid {
   display: grid;
   grid-template-columns: 40px 1fr 1fr;
   gap: 8px;
   align-items: stretch;
 }
 .ps-colhead {
   font-size: 11px;
   color: var(--cedar-light);
   text-align: center;
 }
 .ps-rowlabel {
   display: flex;
   align-items: center;
   justify-content: center;
   font-size: 12px;
   color: var(--text-sub);
 }
 .ps-cell {
   background: #fff;
   border: 1px solid var(--border-mid);
   border-radius: 8px;
   padding: 11px 6px;
   cursor: pointer;
   text-align: center;
   transition: border-color 0.15s ease, background 0.15s ease;
 }
 .ps-cell.active {
   border: 2px solid var(--dot-player);
   background: #f3f8fa;
 }
 .ps-label {
   display: block;
   font-size: 14px;
   color: var(--warm-black);
 }
 .ps-now {
   display: block;
   font-size: 10px;
   color: #c4736d;
   margin-top: 3px;
   min-height: 12px;
 }
 .ps-save {
   width: 100%;
   max-width: 420px;
   margin: 14px auto 0;
   padding: 13px;
   background: var(--warm-black);
   color: #fff;
   border: none;
   border-radius: 8px;
   font-size: 13px;
   letter-spacing: 0.08em;
   cursor: pointer;
 }
 .ps-save:hover {
   opacity: 0.9;
 }
 .save-buttons-row {
   display: flex;
   justify-content: center;
   gap: 6px;
   flex-wrap: wrap;
 }
 .save-btn {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 7px;
   padding: 10px 10px;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 10.5px;
   font-weight: 400;
   border: 1px solid var(--border-mid);
   border-radius: 0;
   background: transparent;
   color: var(--text-sub);
   cursor: pointer;
   transition: all 0.25s ease;
   text-decoration: none;
   min-height: 40px;
   letter-spacing: 0.1em;
   position: relative;
   overflow: hidden;
 }
 .save-btn::before {
   content: '';
   position: absolute;
   inset: 0;
   background: var(--sage);
   transform: translateY(101%);
   transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
   z-index: 0;
 }
 .save-btn:hover::before {
   transform: translateY(0);
 }
 .save-btn:hover {
   color: #fff;
   border-color: var(--sage);
 }
 .save-btn span, .save-btn svg {
   position: relative;
   z-index: 1;
 }
 .save-btn svg {
   width: 13px;
   height: 13px;
   flex-shrink: 0;
 }
 .save-btn-image {
   background: var(--warm-black);
   color: #fff;
   border-color: var(--warm-black);
   padding: 14px 28px;
   font-size: 12px;
   font-weight: 500;
   letter-spacing: 0.12em;
   min-height: 48px;
 }
 .save-btn-image::before {
   background: var(--sage);
 }
 /* アクションシート */
 .action-sheet-overlay {
   position: fixed;
   inset: 0;
   background: rgba(20, 20, 18, 0.45);
   z-index: 300;
   display: none;
   align-items: flex-end;
   justify-content: center;
 }
 .action-sheet-overlay.open {
   display: flex;
 }
 .action-sheet-panel {
   background: #fff;
   width: 100%;
   max-width: 480px;
   padding: 20px 16px calc(env(safe-area-inset-bottom, 16px) + 16px);
   border-radius: 16px 16px 0 0;
 }
 .action-sheet-title {
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 11px;
   color: var(--text-sub);
   text-align: center;
   letter-spacing: 0.08em;
   margin-bottom: 16px;
 }
 .action-sheet-item {
   display: flex;
   align-items: center;
   gap: 12px;
   width: 100%;
   padding: 14px 16px;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 13px;
   font-weight: 500;
   color: var(--warm-black);
   background: var(--linen);
   border: 1px solid var(--border);
   border-radius: 8px;
   cursor: pointer;
   margin-bottom: 8px;
   letter-spacing: 0.06em;
   transition: background 0.2s;
 }
 .action-sheet-item:active {
   background: var(--steam);
 }
 .action-sheet-item svg {
   flex-shrink: 0;
   color: var(--sage);
 }
 .action-sheet-cancel {
   display: block;
   width: 100%;
   padding: 12px;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 12px;
   color: var(--text-sub);
   background: transparent;
   border: none;
   cursor: pointer;
   margin-top: 4px;
   letter-spacing: 0.1em;
 }
 @keyframes fadeInOut {
   0% {
     opacity: 0;
   }
   15% {
     opacity: 1;
   }
   70% {
     opacity: 1;
   }
   100% {
     opacity: 0;
     display: none;
   }
 }
 /* ===== お願い ===== */
 .onegai-section {
   max-width: 720px;
   margin: 0 auto;
   padding: 64px 32px 0;
 }
 .onegai-line {
   height: 1px;
   background: var(--border);
   margin-bottom: 48px;
 }
 .onegai-text {
   max-width: 540px;
   margin: 0 auto;
   text-align: left;
   font-size: 13px;
    line-height: 1.8;
   color: var(--text-sub);
   font-weight: 300;
   letter-spacing: 0.06em;
 }
 /* ===== ショップ ===== */
 .shop-section {
   max-width: 720px;
   margin: 0 auto;
   padding: 40px 32px 72px;
 }
 .shop-grid {
   display: grid;
   grid-template-columns: 1fr;
   gap: 24px;
 }
 .shop-card {
   background: var(--linen);
   border-radius: 0;
   border: 1px solid var(--border);
   overflow: hidden;
   text-decoration: none;
   color: var(--text);
   transition: all 0.4s ease;
   display: block;
 }
 .shop-card:hover {
   transform: translateY(-3px);
   box-shadow: 0 16px 48px rgba(20, 20, 18, 0.07);
   border-color: var(--border-mid);
 }
 .card-image {
   width: 100%;
   height: 320px;
   overflow: hidden;
   background: var(--steam);
 }
 .card-image img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   transition: transform 0.5s ease;
   filter: brightness(0.97);
 }
 .shop-card:hover .card-image img {
   transform: scale(1.04);
   filter: brightness(1);
 }
 .card-image-fallback {
   width: 100%;
   height: 100%;
   display: flex;
   align-items: center;
   justify-content: center;
   font-family: 'DM Sans', sans-serif;
   font-size: 18px;
   font-weight: 300;
   color: var(--cedar-light);
   letter-spacing: 0.3em;
   background: linear-gradient(145deg, var(--steam) 0%, #e4e0d8 100%);
   text-transform: uppercase;
 }
 .card-body {
   padding: 24px;
 }
 .shop-tag {
   font-size: 9px;
   letter-spacing: 0.2em;
   font-weight: 400;
   display: inline-block;
   padding: 3px 10px;
   margin-bottom: 12px;
   font-family: 'DM Sans', sans-serif;
   text-transform: uppercase;
   border: 1px solid;
 }
 .shop-tag.for-sauner {
   border-color: var(--cedar);
   color: var(--cedar);
 }
 .shop-tag.for-player {
   border-color: var(--herb);
   color: var(--herb);
 }
 .card-title {
   font-size: 14px;
   font-weight: 400;
   margin-bottom: 4px;
   color: var(--warm-black);
   letter-spacing: 0.08em;
 }
 .card-sub {
   font-family: 'DM Sans', sans-serif;
   font-size: 10px;
   font-weight: 300;
   color: var(--cedar-light);
   letter-spacing: 0.2em;
   margin-bottom: 14px;
   text-transform: uppercase;
 }
 .card-desc {
   font-size: 13px;
    line-height: 1.8;
   color: var(--text-sub);
   margin-bottom: 20px;
   font-weight: 300;
   letter-spacing: 0.04em;
 }
 .card-cta {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 8px;
   padding: 10px 24px;
   font-size: 10.5px;
   font-weight: 400;
   color: #fff;
   background: var(--sage);
   border-radius: 0;
   min-height: 40px;
   transition: all 0.3s ease;
   letter-spacing: 0.15em;
   border: 1px solid var(--sage);
 }
 .card-cta .arr {
   font-size: 12px;
   transition: transform 0.25s;
 }
 .shop-card:hover .card-cta {
   background: var(--cedar);
   border-color: var(--cedar);
 }
 .shop-card:hover .card-cta .arr {
   transform: translateX(4px);
 }
 /* ===== FAQ ===== */
 .faq-section {
   max-width: 720px;
   margin: 0 auto;
   padding: 64px 32px 0;
 }
 .faq-title {
   font-size: 18px;
   font-weight: 400;
   letter-spacing: 0.35em;
   text-align: center;
   color: var(--cedar);
   margin-bottom: 32px;
   font-family: 'DM Sans', sans-serif;
   text-transform: uppercase;
 }
 .faq-item {
   border-top: 1px solid var(--border);
 }
 .faq-item:last-child {
   border-bottom: 1px solid var(--border);
 }
 .faq-question {
   font-size: 13px;
   font-weight: 400;
   color: var(--text);
   padding: 18px 0;
   cursor: pointer;
   letter-spacing: 0.06em;
   list-style: none;
   display: flex;
   align-items: center;
   justify-content: space-between;
 }
 .faq-question::-webkit-details-marker {
   display: none;
 }
 .faq-question::after {
   content: '';
   flex-shrink: 0;
   margin-left: 16px;
   width: 20px;
   height: 20px;
   display: inline-block;
   transition: transform 0.3s ease;
   background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234a4842' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat center center;
   background-size: 18px 18px;
 }
 details.faq-item[open] > .faq-question::after {
   transform: rotate(180deg);
 }
 .faq-answer {
   padding: 0 0 20px;
   font-size: 12.5px;
   line-height: 1.9;
   color: var(--text-sub);
   font-weight: 300;
   letter-spacing: 0.04em;
 }
 .faq-answer p {
   margin-bottom: 10px;
 }
 .faq-answer p:last-child {
   margin-bottom: 0;
 }
 .faq-answer ul {
   list-style: none;
   padding: 0;
   margin: 8px 0;
 }
 .faq-answer ul li {
   padding: 4px 0 4px 16px;
   position: relative;
 }
 .faq-answer ul li::before {
   content: '·';
   position: absolute;
   left: 4px;
   color: var(--cedar-light);
 }
 .faq-answer a {
   color: var(--text);
   text-decoration: underline;
   text-underline-offset: 3px;
   text-decoration-color: var(--border-mid);
   transition: text-decoration-color 0.2s;
 }
 .faq-answer a:hover {
   text-decoration-color: var(--text);
 }
 .faq-answer strong {
   font-weight: 500;
 }
 /* ===== プレイヤー一覧導線 ===== */
 .player-list-section {
   max-width: 720px;
   margin: 0 auto;
   padding: 48px 32px 64px;
   text-align: center;
 }
 .player-list-btn {
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 10px;
   padding: 16px 36px;
   font-family: 'Zen Kaku Gothic New', sans-serif;
   font-size: 12px;
   font-weight: 400;
   letter-spacing: 0.12em;
   border: 1px solid var(--border-mid);
   background: transparent;
   color: var(--text);
   text-decoration: none;
   cursor: pointer;
   transition: all 0.35s ease;
   min-height: 52px;
   position: relative;
   overflow: hidden;
 }
 .player-list-btn::before {
   content: '';
   position: absolute;
   inset: 0;
   background: var(--sage);
   transform: translateY(101%);
   transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
   z-index: 0;
 }
 .player-list-btn:hover::before {
   transform: translateY(0);
 }
 .player-list-btn:hover {
   color: #fff;
   border-color: var(--sage);
 }
 .player-list-btn svg, .player-list-btn span, .player-list-btn .arr {
   position: relative;
   z-index: 1;
 }
 .player-list-btn:hover svg {
   stroke: #fff;
 }
 .player-list-btn .arr {
   font-size: 14px;
   transition: transform 0.25s;
 }
 .player-list-btn:hover .arr {
   transform: translateX(4px);
 }
 /* ===== フッター ===== */
 .site-footer {
   text-align: center;
   padding: 28px 32px;
   font-size: 11.5px;
   color: var(--text-quiet);
   letter-spacing: 0.18em;
   border-top: 1px solid var(--border);
   margin: 0 auto;
   font-family: 'DM Sans', sans-serif;
   font-weight: 300;
	 background: var(--sage);
 }
 .footer-links {
   display: flex;
   justify-content: center;
   gap: 28px;
 }
 .footer-links a {
   color: var(--text-cream);
   text-decoration: none;
   transition: color 0.2s;
   padding: 4px 0;
   letter-spacing: 0.12em;
 }
 .footer-links a:hover {
   color: var(--text-cream);
 }
 .footer-sep {
   color: var(--border-cream);
	 font-size: 18px;
 }
 /* ===== PC ===== */
 @media (min-width: 601px) {
   .site-header {
     padding-top: 80px;
   }
   .site-title {
     font-size: 20px;
   }
   .site-title span {
     font-size: 11px;
   }
   .site-lead {
     font-size: 12.5px;
     margin-bottom: 0;
   }
   .search-buttons {
     flex-direction: row;
     justify-content: center;
     gap: 14px;
     padding-top: 48px;
     margin-bottom: 48px;
   }
   .search-btn {
     width: auto;
     padding: 14px 36px;
   }
   .cal-header {
     padding: 22px 28px;
   }
   .cal-month {
     font-size: 13px;
   }
   /* PC: リストは隠し、月間グリッドを表示 */
   .sp-view {
     display: none;
   }
   /* PC: 1日を1枠として分離（薄い外枠＋隙間）。上=プレイヤー／下=LD */
   .calendar-wrap {
     display: block;
     max-width: 1080px;
   }
   .cal-grid {
     gap: 5px;
     padding: 6px;
   }
   .cal-day {
     min-height: 118px;
     padding: 6px 6px 6px;
     font-size: 12px;
     align-items: stretch;
     text-align: left;
     min-width: 0;
     border: 1px solid var(--border-mid);
     border-radius: 6px;
   }
   .cal-day.other-month {
     border-color: transparent;
   }
   .cal-day.today .day-num {
     width: 28px;
     height: 28px;
     font-size: 12px;
   }
   .cal-day .day-num {
     padding-left: 2px;
   }
   .cal-day .event-dots {
     display: none;
   }
   .cell-zones {
     display: flex;
     flex-direction: column;
     width: 100%;
     margin-top: 3px;
   }
   .cell-zone {
     overflow: hidden;
     min-width: 0;
   }
   .cell-zone-player {
     min-height: 52px;
   }
   .cell-zone-ld {
     min-height: 38px;
     margin-top: 2px;
   }
   .cell-row {
     display: flex;
     align-items: center;
     gap: 3px;
     font-size: 11px;
     line-height: 1.5;
     color: var(--text-sub);
     padding-left: 5px;
     border-radius: 0;
     margin-bottom: 1px;
     min-width: 0;
   }
   .cell-row-player {
     border-left: 3px solid var(--dot-player);
   }
   .cell-row-ld {
     border-left: 3px solid var(--dot-ld);
   }
   .cell-ico {
     flex-shrink: 0;
   }
   .cell-name {
     flex: 1 1 auto;
     min-width: 0;
     white-space: nowrap;
     overflow: hidden;
     text-overflow: ellipsis;
   }
   .cell-time {
     margin-left: auto;
     flex-shrink: 0;
     font-size: 10px;
     color: var(--cedar-light);
     padding-left: 2px;
     white-space: nowrap;
   }
   .cell-more {
     font-size: 10px;
     color: var(--sage);
     text-align: right;
     padding-right: 2px;
     margin-top: 1px;
   }
   .onegai-section {
     padding-top: 80px;
   }
   .onegai-text {
     text-align: center;
     font-size: 12.5px;
   }
   .shop-grid {
     grid-template-columns: 1fr 1fr;
     gap: 24px;
   }
   .card-image {
     height: 230px;
   }
   .card-body {
     padding: 26px;
   }
   .modal-overlay {
     align-items: center;
   }
   .modal-panel {
     border-top: 1px solid var(--border);
     max-width: 760px;
     max-height: 80vh;
     border-radius: 12px;
   }
   .pgrid {
     grid-template-columns: repeat(3, minmax(0, 1fr));
   }
   .detail-overlay {
     align-items: center;
   }
   .detail-panel {
     border-top: 1px solid var(--border);
     max-height: 62vh;
   }
 }


/* ===== プレイヤーリストページ固有 ===== */
.page-title {
  text-align: center;
  padding: 28px 20px 8px;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.25em;
  color: var(--cedar);
  font-family: 'DM Sans', sans-serif;
  text-transform: uppercase;
}

/* ===== カテゴリフィルター ===== */
.category-filter {
  max-width: 720px;
  margin: 16px auto 0;
  padding: 0 20px;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
}
.category-btn {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 5px 8px;
  border: 1px solid var(--border-mid);
  background: transparent;
  color: var(--text-sub);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: all 0.22s ease;
  font-family: inherit;
  white-space: nowrap;
}
.category-btn svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}
.category-btn.active {
  background: var(--warm-black);
  border-color: var(--warm-black);
  color: #fff;
}
.category-btn.active svg path,
.category-btn.active svg circle {
  stroke: #fff;
  fill: #fff;
}
.category-btn:hover:not(.active) {
  background: var(--steam);
}
.category-count {
  font-size: 9px;
  color: var(--cedar-light);
  margin-left: 2px;
}
.category-btn.active .category-count {
  color: rgba(255,255,255,0.6);
}

/* ===== プレイヤーリスト ===== */
.player-list {
  max-width: 720px;
  margin: 24px auto 0;
  padding: 0 32px 40px;
}
.player-card {
  border-top: 1px solid var(--border);
  padding: 24px 0;
}
.player-card:last-child {
  border-bottom: 1px solid var(--border);
}

/* --- アー写 + 基本情報 --- */
.player-card-header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 14px;
}
.player-avatar {
  width: 160px;
  height: 160px;
  border-radius: 0;
  background: var(--steam);
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  overflow: hidden;
}
.player-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.player-avatar .no-photo {
  font-size: 9px;
  color: var(--cedar-light);
  letter-spacing: 0.05em;
  text-align: center;
  line-height: 1.3;
}
.player-info {
  flex: 1;
  min-width: 0;
}
.player-entity-type {
  display: inline-block;
  font-size: 9px;
  color: var(--cedar-light);
  letter-spacing: 0.1em;
  margin-bottom: 2px;
}
.player-name {
  font-size: 15px;
  font-weight: 400;
  color: var(--warm-black);
  letter-spacing: 0.05em;
  margin-bottom: 2px;
  line-height: 1.4;
}
.player-kana {
  font-size: 10px;
  color: var(--cedar-light);
  letter-spacing: 0.08em;
  font-weight: 300;
  margin-bottom: 6px;
}
.player-style-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 9px;
  font-weight: 400;
  padding: 0;
  letter-spacing: 0.1em;
  border: none;
  color: var(--dot-player);
}
.player-style-badge svg {
  width: 12px;
  height: 12px;
}

/* --- プロフィール --- */
.player-profile {
  font-size: 12px;
  line-height: 1.8;
  color: var(--text-sub);
  font-weight: 300;
  margin-bottom: 12px;
}

/* --- 所属施設 --- */
.player-facilities {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.player-facility-tag {
  font-size: 10px;
  padding: 3px 10px;
  background: var(--steam);
  color: var(--text-sub);
  letter-spacing: 0.06em;
  font-weight: 300;
}

/* --- SNSリンク --- */
.player-links {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.player-links a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  border: 1px solid var(--border-mid);
  background: transparent;
  text-decoration: none;
  color: var(--text-sub);
  font-size: 10px;
  font-weight: 400;
  transition: all 0.22s ease;
  letter-spacing: 0.08em;
  border-radius: 0;
}
.player-links a:hover {
  background: var(--warm-black);
  border-color: var(--warm-black);
  color: #fff;
}
.player-links a svg {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}

/* --- スケジュールリンク --- */
.player-schedule-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  font-weight: 400;
  color: var(--dot-player);
  text-decoration: none;
  letter-spacing: 0.1em;
  transition: color 0.2s;
}
.player-schedule-link:hover {
  color: var(--warm-black);
}
.player-schedule-link .arr {
  font-size: 13px;
  transition: transform 0.25s;
}
.player-schedule-link:hover .arr {
  transform: translateX(4px);
}

/* ===== カレンダーに戻るボタン ===== */
.back-section {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
}
.back-section-top {
  padding: 20px 32px 0;
}
.back-section-bottom {
  padding: 0 32px 64px;
}
.back-to-calendar-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px 36px;
  font-family: 'Zen Kaku Gothic New', sans-serif;
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.12em;
  border: 1px solid var(--border-mid);
  background: transparent;
  color: var(--text);
  text-decoration: none;
  cursor: pointer;
  transition: all 0.35s ease;
  min-height: 52px;
  position: relative;
  overflow: hidden;
}
.back-to-calendar-btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--sage);
  transform: translateY(101%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 0;
}
.back-to-calendar-btn:hover::before {
  transform: translateY(0);
}
.back-to-calendar-btn:hover {
  color: #fff;
  border-color: var(--sage);
}
.back-to-calendar-btn svg, .back-to-calendar-btn span, .back-to-calendar-btn .arr {
  position: relative;
  z-index: 1;
}
.back-to-calendar-btn:hover svg {
  stroke: #fff;
}
.back-to-calendar-btn .arr {
  font-size: 14px;
  transition: transform 0.25s;
}
.back-to-calendar-btn:hover .arr {
  transform: translateX(-4px);
}

/* ===== ページネーション ===== */
.pagination {
  max-width: 720px;
  margin: 0 auto;
  padding: 8px 32px 24px;
  display: flex;
  justify-content: center;
  gap: 6px;
  flex-wrap: wrap;
}
.page-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid var(--border-mid);
  background: transparent;
  color: var(--text-sub);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: all 0.22s ease;
  font-family: 'DM Sans', sans-serif;
}
.page-btn:hover {
  background: var(--steam);
}
.page-btn.active {
  background: var(--warm-black);
  border-color: var(--warm-black);
  color: #fff;
}

/* ===== ローディング ===== */
.loading-msg {
  text-align: center;
  padding: 60px 20px;
  color: var(--cedar-light);
  font-size: 11px;
  letter-spacing: 0.15em;
}


/* ===== K2 連絡導線フッター ===== */
.footer-provide { font-size: 10px; color: var(--text-cream); letter-spacing: 0.06em; margin-bottom: 6px; opacity: 0.85; }
.footer-correct { margin-bottom: 10px; }
.footer-correct a { color: var(--text-cream); text-decoration: underline; text-underline-offset: 2px; font-size: 10.5px; letter-spacing: 0.05em; opacity: 0.9; }

/* ===== K4 SP折りたたみ＋トップへ戻る ===== */
.sp-list.sp-collapsed { max-height: 200vh; overflow: hidden; position: relative; }
.sp-list.sp-collapsed::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 90px; background: linear-gradient(to bottom, rgba(241,242,237,0), var(--bg)); pointer-events: none; }
.sp-more-btn { display: block; width: calc(100% - 32px); max-width: 400px; margin: -46px auto 10px; position: relative; z-index: 1; padding: 12px; background: #fff; border: 1px solid var(--border-mid); border-radius: 8px; font-family: inherit; font-size: 13px; color: var(--warm-black); letter-spacing: 0.08em; cursor: pointer; }
.to-top-btn { position: fixed; right: 14px; bottom: 18px; width: 42px; height: 42px; border-radius: 50%; background: rgba(20,20,18,0.5); color: #fff; border: none; font-size: 18px; line-height: 1; display: none; align-items: center; justify-content: center; z-index: 250; cursor: pointer; }
.to-top-btn.show { display: flex; }
@media (min-width: 601px) { .to-top-btn { display: none !important; } .sp-list.sp-collapsed { max-height: none; overflow: visible; } .sp-list.sp-collapsed::after { display: none; } .sp-more-btn { display: none; } }

/* ===== K5 演者名タブ ===== */
.name-tabs { position: sticky; top: 0; z-index: 20; display: flex; gap: 6px; overflow-x: auto; padding: 8px 16px; background: var(--bg); -webkit-overflow-scrolling: touch; }
.name-tab { flex: 0 0 auto; padding: 6px 12px; border-radius: 16px; background: var(--steam); color: var(--text-sub); border: none; font-family: inherit; font-size: 12px; letter-spacing: 0.02em; white-space: nowrap; cursor: pointer; }
.name-tab:hover { background: #e4e2de; }
.player-card { scroll-margin-top: 60px; }
