/**
 * Joyn TV Live 플레이어 페이지 스타일
 * 
 * ★★★ JTS 스타일 기반 단순화 버전 ★★★
 * - aspect-ratio 사용 (padding-bottom 제거)
 * - 불필요한 !important 최소화
 * - 미디어 쿼리 최소화
 *
 * @package    Joyn_Broadcast
 * @since      1.0.0
 */

/* ============================================
   기본 변수
   ============================================ */
:root {
    --joyn-tab-height: 56px;
    --joyn-admin-bar-height: 32px;
}

@media (max-width: 782px) {
    :root {
        --joyn-admin-bar-height: 46px;
    }
}

/* ============================================
   본문 배경만 검정색 (상단 헤더/탑은 테마 색 유지)
   ============================================ */
body.page-template-page-joyn-tv-live .site-content,
body.page-template-page-joyn-tv-live .content-area,
body.page-template-page-joyn-tv-live .entry-content,
body.page-template-page-joyn-tv-live .main-content,
body.page-template-page-joyn-tv-live .site-main,
body.page-template-page-joyn-tv-live .post-content,
body.page-template-page-joyn-tv-live .site-content .container,
body.page-template-page-joyn-tv-live .site-content .wrap,
body.page-template-page-joyn-tv-live #content .site-content,
body.page-template-page-joyn-tv-live .site-content .ast-container,
body.page-template-page-joyn-tv-live .site-main .ast-container {
    background: #000 !important;
    background-color: #000 !important;
}

/* ============================================
   헤더 z-index (메뉴 펼침과 오버레이 충돌 방지 - 상단 메뉴가 재생창 오버레이 위에 표시)
   joyn-broadcast와 동일 적용
   ============================================ */
header,
.site-header,
.main-navigation,
.main-navigation ul,
.main-navigation .sub-menu {
    z-index: 1001 !important;
}

/* ============================================
   푸터2를 콘텐츠 하단으로 (테마 flex로 인한 우측 배치 방지)
   ============================================ */
body.page-template-page-joyn-tv-live .site-content,
body.page-template-page-joyn-tv-live .content-area,
body.page-template-page-joyn-tv-live .site-main,
body.page-template-page-joyn-tv-live #content,
body.page-template-page-joyn-tv-live-time .site-content,
body.page-template-page-joyn-tv-live-time .content-area,
body.page-template-page-joyn-tv-live-time .site-main,
body.page-template-page-joyn-tv-live-time #content {
    display: flex !important;
    flex-direction: column !important;
}
.joyn-tv-live-page-wrap {
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    flex: 1 1 auto;
}
.joyn-tv-live-page-wrap .joyn-tv-live-container {
    flex: 0 0 auto;
}
.joyn-tv-live-page-wrap .mpf2,
.joyn-tv-live-page-wrap .mainpage-section.mainpage-sec-dark {
    display: block !important;
    width: 100% !important;
    flex: 0 0 auto;
}

/* ============================================
   메인 컨테이너
   ============================================ */
.joyn-tv-live-container {
    max-width: 100%;
    margin: 0 auto;
    padding: 0;
    background: #000;
    min-height: 100vh;
    width: 100%;
    box-sizing: border-box;
}

/* 데스크탑·큰 모바일: 재생 영역 가로 100% (테마/컨테이너 폭만 따름, 인위적 1400px 제한 없음) */
@media (min-width: 1025px) {
    .joyn-tv-live-container {
        max-width: none;
        padding: 0;
    }
}

/* ============================================
   탭 네비게이션
   ============================================ */
.joyn-tv-live-tabs-wrapper {
    position: sticky;
    top: 0;
    z-index: 100;
    background: #1a1a1a;
    border-bottom: 2px solid #333;
    width: 100%;
}

body.admin-bar .joyn-tv-live-tabs-wrapper {
    top: var(--joyn-admin-bar-height);
}

.joyn-tv-live-tabs {
    display: flex;
    background: #1a1a1a;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    min-height: var(--joyn-tab-height);
}

.joyn-tv-live-tabs::-webkit-scrollbar {
    height: 4px;
}

.joyn-tv-live-tabs::-webkit-scrollbar-thumb {
    background: #666;
    border-radius: 2px;
}

.joyn-tv-live-tab {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 16px 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    color: #999;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.3s ease;
    white-space: nowrap;
    flex-shrink: 0;
}

.joyn-tv-live-tab:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.05);
}

.joyn-tv-live-tab--active {
    color: #fff;
    border-bottom-color: var(--category-color, #667eea);
    background: rgba(255, 255, 255, 0.05);
}

/* ============================================
   플레이어 래퍼
   ============================================ */
.joyn-tv-live-player-wrapper {
    position: relative;
    width: 100%;
    max-width: 100%;
    margin: 0 auto;
    background: #000;
}

/* 재생창 먼저 표시 후 콘텐츠 로딩: 셸 상태에서는 제목/썸네일만 숨김 → 준비 후 표시 */
.joyn-tv-live-shell .joyn-tv-live-video-title,
.joyn-tv-live-shell .joyn-tv-live-upcoming-thumbnails,
.joyn-tv-live-shell #joyn-tv-live-ads-bottom-wrap {
    opacity: 0;
    transition: opacity 0.15s ease;
}
.joyn-tv-live-ready .joyn-tv-live-video-title,
.joyn-tv-live-ready .joyn-tv-live-upcoming-thumbnails,
.joyn-tv-live-ready #joyn-tv-live-ads-bottom-wrap {
    opacity: 1;
}

/* ============================================
   ★★★ 플레이어 섹션 (JTS 스타일) ★★★
   ============================================ */
.joyn-tv-live-player-section {
    background: #000;
    width: 100%;
    display: flex;
    flex-direction: column; /* 세로 배치: 재생창 → 제목 → 썸네일 */
}

/* ============================================
   ★★★ 플레이어 박스 (JTS 스타일) ★★★
   ============================================ */
.joyn-tv-live-player-box {
    position: relative;
    width: 100%;
    background: #000;
    order: 1; /* 첫 번째로 표시 (재생창) */
}

/* ============================================
   ★★★ 플레이어 컨테이너 (JTS 핵심 스타일) ★★★
   ============================================ */
.joyn-tv-live-player-wrapper-inner {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #000;
    transition: aspect-ratio 0.3s ease;
    /* ★★★ 백그라운드 복귀 시 레이아웃 안정화 ★★★ */
    will-change: transform;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    /* 컨테이너 고정 */
    contain: layout style;
    overflow: hidden;
    /* ★★★ 위치 고정 (백그라운드 복귀 시 이동 방지) ★★★ */
    left: 0;
    margin-left: 0;
    margin-right: 0;
}

/* ★ iframe 절대 위치 (JTS 스타일) */
.joyn-tv-live-player-wrapper-inner iframe,
.joyn-tv-live-player-wrapper-inner video,
#joyn-tv-live-player,
#joyn-tv-live-player iframe {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    border: none !important;
    /* iframe에 translateZ(0) 주면 WebKit 등에서 오버플로 클리핑이 생기는 사례 있음 */
    /* ★★★ iframe z-index 낮춤 (오버레이가 위에 오도록) ★★★ */
    z-index: 1 !important;
}

/*
 * joyn-player-pro (responsive): 16:9는 .joyn-player-aspect(padding-bottom) +
 * .joyn-player-container(position:absolute; height:100%)가 담당.
 * 여기서 aspect-ratio·position을 덮어쓰면 이중 비율·overflow로 상단/측면이 잘림.
 */
.joyn-tv-live-player-section .joyn-player-wrapper {
    width: 100%;
    max-width: 100%;
    background: #000;
    will-change: transform;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    z-index: 1;
    order: 1;
}

.joyn-tv-live-player-section .joyn-player-responsive .joyn-player-aspect {
    will-change: transform;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

/* 컨테이너: player.css의 absolute 채움 유지 — contain/overflow는 플레이어 기본값에 맡김(상단 클리핑 방지) */
.joyn-tv-live-player-section .joyn-player-responsive .joyn-player-container {
    background: #000;
    z-index: 1;
}

.joyn-tv-live-player-section .joyn-player-container iframe {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    border: none !important;
    z-index: 1 !important;
}

/*
 * padding-bottom 16:9는 너비 대비 높이 계산 시 서브픽셀 오차로 영상 상단이 잘리는 경우가 있음.
 * 지원 브라우저에서는 aspect-ratio로 박스 높이를 맞춤(숏츠 제외).
 */
@supports (aspect-ratio: 16 / 9) {
    body.page-template-page-joyn-tv-live
        .joyn-tv-live-player-section
        .joyn-player-wrapper.joyn-player-responsive:not(.joyn-player-shorts-mode):not([data-shorts-mode="true"])
        .joyn-player-aspect {
        height: auto !important;
        padding-bottom: 0 !important;
        aspect-ratio: 16 / 9;
    }
}

/* 플레이어 래퍼 overflow:hidden + 자식 overflow 조합 시 상단 잘림 완화 (숏츠는 제외) */
body.page-template-page-joyn-tv-live
    .joyn-tv-live-player-section
    .joyn-player-wrapper.joyn-player-responsive:not(.joyn-player-shorts-mode):not([data-shorts-mode="true"]) {
    overflow: visible;
}

/* ============================================
   숏츠 모드 (JTS 스타일)
   ============================================ */
.joyn-tv-live-player-wrapper-inner.joyn-tv-live-shorts-mode,
.joyn-tv-live-player-wrapper-inner[data-shorts-mode="true"] {
    aspect-ratio: 9 / 16;
    max-width: 400px;
    margin: 0 auto;
}

.joyn-tv-live-player-box.shorts-mode {
    max-width: 400px;
    margin: 0 auto;
}

/* 모바일에서 숏츠 */
@media (max-width: 640px) {
    .joyn-tv-live-player-wrapper-inner.joyn-tv-live-shorts-mode,
    .joyn-tv-live-player-wrapper-inner[data-shorts-mode="true"] {
        max-width: 100%;
        aspect-ratio: 9 / 12;
    }
    
    .joyn-tv-live-player-box.shorts-mode {
        max-width: 100%;
    }
}

/* ============================================
   영상 제목
   ============================================ */
.joyn-tv-live-video-title {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 12px 16px;
    background: #000;
    color: #fff;
    font-size: 14px;
    line-height: 1.4;
    width: 100%;
    order: 2; /* 재생창 다음에 표시 */
}

.joyn-tv-live-video-title-text {
    flex: 1;
    min-width: 0;
    word-wrap: break-word;
    overflow-wrap: break-word;
    color: #fff !important;
}

.joyn-tv-live-title-toggle {
    background: transparent;
    border: none;
    color: #fff;
    cursor: pointer;
    padding: 4px;
    flex-shrink: 0;
}

.joyn-tv-live-title-toggle i {
    font-size: 18px;
}

/* joyn-ads: 제목란에 광고가 있으면 영상 제목 숨김 */
.joyn-tv-live-video-title-text-hidden {
    display: none !important;
}

.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad {
    flex: 1;
    min-width: 0;
}

.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .joyn-ad,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-position-joyn_tv_live_title {
    max-width: 100%;
}

/* joyn-ads: 재생창 밑 광고 영역 */
.joyn-tv-live-ads-bottom {
    width: 100%;
    padding: 12px 16px;
    background: #0a0a0a;
    border-top: 1px solid #333;
    order: 2;
}

.joyn-tv-live-ads-bottom .joyn-ad,
.joyn-tv-live-ads-bottom .jads-position-joyn_tv_live_bottom {
    max-width: 100%;
}

/* joyn-ads 지정 사이즈 비율로 세로 높이 유동 적용 */
.joyn-tv-live-ads-bottom .jads-ad-fluid-player .jads-ad-image img,
.joyn-tv-live-ads-bottom .jads-ad-item.jads-ad-fluid-player .jads-ad-image img,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-fluid-player .jads-ad-image img,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-item.jads-ad-fluid-player .jads-ad-image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.joyn-tv-live-ads-bottom .jads-ad-fluid-player .jads-video-wrapper,
.joyn-tv-live-ads-bottom .jads-ad-item.jads-ad-fluid-player .jads-video-wrapper,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-fluid-player .jads-video-wrapper,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-item.jads-ad-fluid-player .jads-video-wrapper {
    height: 100%;
    padding-bottom: 0;
}

.joyn-tv-live-ads-bottom .jads-ad-fluid-player .jads-video-wrapper iframe,
.joyn-tv-live-ads-bottom .jads-ad-item.jads-ad-fluid-player .jads-video-wrapper iframe,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-fluid-player .jads-video-wrapper iframe,
.joyn-tv-live-has-title-ad .joyn-tv-live-title-ad .jads-ad-item.jads-ad-fluid-player .jads-video-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

/* 모바일에서 한 줄 제한 */
@media (max-width: 767px) {
    .joyn-tv-live-video-title-text {
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    
    .joyn-tv-live-video-title.expanded .joyn-tv-live-video-title-text {
        white-space: normal;
        overflow: visible;
    }
}

/* ============================================
   다음 재생 썸네일 (가로 꽉 채움, 제목 숨김)
   ============================================ */
.joyn-tv-live-upcoming-thumbnails {
    width: 100%;
    padding: 12px 16px;
    background: #1a1a1a;
    border-top: 1px solid #333;
    display: none;
    order: 3; /* 제목 다음에 표시 */
}

.joyn-tv-live-upcoming-thumbnails-inner {
    display: flex;
    gap: 12px;
    width: 100%;
}

.joyn-tv-live-upcoming-thumbnail {
    flex: 1 1 0;
    min-width: 0;
    max-width: 280px; /* 썸네일 하나일 때 적당한 크기 유지 */
    cursor: pointer;
    transition: transform 0.2s ease;
}

.joyn-tv-live-upcoming-thumbnail:hover {
    transform: scale(1.02);
}

.joyn-tv-live-upcoming-thumbnail-img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    border-radius: 4px;
    background: #333;
    display: block;
}

/* 썸네일 아래 제목 미표시 */
.joyn-tv-live-upcoming-thumbnail-title {
    display: none;
}

.joyn-tv-live-upcoming-thumbnail-duration {
    font-size: 10px;
    color: #999;
    margin-top: 2px;
}

/* ============================================
   댓글 영역
   ============================================ */
.joyn-tv-live-comments-wrapper {
    width: 100%;
    background: #1a1a1a;
    border-top: 1px solid #333;
}

.joyn-tv-live-comments-header {
    padding: 16px;
    border-bottom: 1px solid #333;
}

.joyn-tv-live-comments-header h3 {
    margin: 0;
    color: #fff;
    font-size: 16px;
    font-weight: 600;
}

.joyn-tv-live-comments-content {
    padding: 16px;
    min-height: 200px;
    max-height: 400px;
    overflow-y: auto;
    color: #fff;
}

/* ============================================
   로딩 상태
   ============================================ */
.joyn-tv-live-player-loading {
    padding: 60px 20px;
    text-align: center;
    color: #999;
    font-size: 16px;
}

/* ============================================
   헤더 z-index (메뉴가 재생창 위에 표시)
   ============================================ */
header,
.site-header,
.main-navigation,
.main-navigation ul,
.main-navigation .sub-menu {
    z-index: 1001 !important;
}

/* ============================================
   모바일 레이아웃
   ============================================ */
@media (max-width: 767px) {
    .joyn-tv-live-container {
        margin: 0;
        padding: 0;
        width: 100%;
    }
    
    .joyn-tv-live-player-section {
        width: 100%;
    }
    
    .joyn-tv-live-video-title {
        padding: 10px 12px;
    }
    
    .joyn-tv-live-comments-content {
        max-height: 300px;
    }
    
    /* 모바일에서 푸터 숨김 */
    .site-footer,
    footer,
    .ast-footer {
        display: none !important;
    }
}

/* ============================================
   테마 스타일 오버라이드 (본문 영역만)
   ============================================ */
body.page-template-page-joyn-tv-live .site-content,
body.page-template-page-joyn-tv-live .content-area,
body.page-template-page-joyn-tv-live .main-content,
body.page-template-page-joyn-tv-live .entry-content,
body.page-template-page-joyn-tv-live .site-content .container,
body.page-template-page-joyn-tv-live .site-content .wrap,
body.page-template-page-joyn-tv-live .site-main {
    margin: 0;
    padding: 0;
    max-width: 100%;
    width: 100%;
    box-sizing: border-box;
    background: #000 !important;
    background-color: #000 !important;
}

/* box-sizing 전역 적용 */
.joyn-tv-live-container,
.joyn-tv-live-container * {
    box-sizing: border-box;
}

/* ============================================
   재생창 뒷배경 검정색 강제
   ============================================ */
.joyn-tv-live-player-wrapper,
.joyn-tv-live-player-section,
.joyn-tv-live-player-box,
.joyn-tv-live-player-wrapper-inner,
.joyn-tv-live-player,
#joyn-tv-live-player,
.joyn-player-container,
.joyn-player-wrapper {
    background: #000 !important;
    background-color: #000 !important;
}

/* ============================================
   ★★★ 전체 플레이어 오버레이 ★★★
   YouTube 컨트롤 완전 차단 (생방송 동기화)
   숏츠/일반 영상 모두 지원
   ============================================ */

/* 오버레이 기준: joyn-player-pro는 .joyn-player-aspect 안에서 .joyn-player-container가 absolute로 채움 — 여기서 relative를 주면 비율 박스가 깨져 상단이 잘림 */
.joyn-tv-live-player-wrapper,
.joyn-tv-live-player-wrapper-inner {
    position: relative;
}

/* ★★★ 하단 오버레이 (앞으로 건너뛰기 버튼만 차단, 재생 버튼은 허용) ★★★ */
.joyn-live-player-overlay {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    height: 120px !important; /* 플레이어 컨트롤 영역 전체 차단 (시크바 + 컨트롤 버튼) - 높이 증가 */
    z-index: 2147483647 !important; /* 최대 z-index 값 (YouTube iframe 위에 표시) */
    cursor: default !important;
    background: transparent !important;
    pointer-events: auto !important; /* 클릭 차단 활성화 */
    display: none !important; /* 기본적으로 숨김 (재생 전에는 클릭 허용) */
    user-select: none !important; /* 텍스트 선택 방지 */
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    /* ★★★ 오버레이가 항상 최상위에 오도록 ★★★ */
    isolation: isolate !important;
    transform: translateZ(0) !important;
    -webkit-transform: translateZ(0) !important;
    will-change: transform !important;
}

/* active 클래스: 재생 중일 때만 표시하여 컨트롤 차단 */
.joyn-live-player-overlay.active {
    display: block !important;
    pointer-events: auto !important; /* 클릭 차단 */
    z-index: 2147483647 !important; /* 최대 z-index 값 */
}

/* ★★★ 플레이어 상단 오버레이 (YouTube 상단 메뉴 차단: 유튜브 가기, 공유) ★★★ */
.joyn-live-player-top-overlay {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    height: 60px !important; /* YouTube 상단 메뉴 영역만 차단 (유튜브 가기, 공유 버튼) */
    z-index: 2147483646 !important; /* 최대 z-index 값 - 1 (YouTube iframe 위에 표시) */
    cursor: default !important;
    background: transparent !important;
    pointer-events: auto !important; /* 클릭 차단 활성화 */
    display: none !important; /* 기본적으로 숨김 */
    user-select: none !important; /* 텍스트 선택 방지 */
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    /* ★★★ 오버레이가 항상 최상위에 오도록 ★★★ */
    isolation: isolate;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

/* active 클래스: 재생 중일 때만 표시하여 상단 메뉴 차단 */
.joyn-live-player-top-overlay.active {
    display: block !important;
    pointer-events: auto !important; /* 클릭 차단 */
    z-index: 2147483646 !important; /* 최대 z-index 값 - 1 */
}

/* ★★★ 데스크탑에서 헤더 영역 제외: 플레이어 상단 오버레이도 헤더 아래로 이동 ★★★ */
@media (min-width: 769px) {
    /* 데스크탑에서는 플레이어 상단 오버레이가 헤더 아래에 위치하도록 */
    .joyn-live-player-top-overlay.active {
        /* 헤더 높이만큼 아래로 이동 (플레이어 내부이므로 상대 위치 유지) */
        /* 플레이어는 헤더 아래에 있으므로 별도 조정 불필요 */
    }
}

/* ★★★ 백업 파일에서 확인한 오버레이 방식 (상단 30% 차단) ★★★ */
.joyn-tv-live-block-overlay--top {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 30% !important; /* 상단 30% 차단 (유튜브 가기, 공유 버튼) */
    z-index: 10 !important; /* iframe 위에 표시 */
    pointer-events: auto !important; /* 클릭 차단 */
    background: transparent !important;
    cursor: default !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

/* ★★★ 하단 30% 오버레이 (상단과 동일한 방식) ★★★ */
.joyn-tv-live-block-overlay--bottom {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 30% !important; /* 하단 30% 차단 (앞으로 건너뛰기 버튼) */
    z-index: 10 !important; /* iframe 위에 표시 */
    pointer-events: auto !important; /* 클릭 차단 */
    background: transparent !important;
    cursor: default !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

/* LIVE 배지 삭제됨 */

/* 동기화 안내 메시지 */
.joyn-live-sync-notice {
    position: absolute;
    bottom: 80px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.85);
    color: #fff;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 14px;
    z-index: 101;
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
    white-space: nowrap;
}

/* 숏츠 모드에서 안내 메시지 위치 조정 */
.joyn-tv-live-player-wrapper-inner.joyn-tv-live-shorts-mode .joyn-live-sync-notice,
.joyn-tv-live-player-wrapper-inner[data-shorts-mode="true"] .joyn-live-sync-notice,
.joyn-player-container.shorts-mode .joyn-live-sync-notice {
    bottom: 120px;
    font-size: 12px;
    padding: 8px 14px;
}

/* 숏츠 모드에서도 오버레이 정상 작동 */
.joyn-player-container.shorts-mode .joyn-live-player-overlay,
.joyn-tv-live-player-wrapper-inner.joyn-tv-live-shorts-mode .joyn-live-player-overlay,
.joyn-tv-live-player-wrapper-inner[data-shorts-mode="true"] .joyn-live-player-overlay {
    height: 120px !important; /* 숏츠 모드에서도 동일한 높이 (80px → 120px) */
    z-index: 2147483647 !important; /* 최대 z-index 값 */
}

.joyn-live-sync-notice.show {
    opacity: 1;
}

/* YouTube iframe - 클릭 허용 (시크 방지는 JS로 처리) */
/* pointer-events: none 제거됨 - 모바일 재생 버튼 클릭 허용 */

/* ============================================
   ★★★ 상단 헤더 오버레이 (채널 이동 링크 차단) ★★★
   ============================================ */
.joyn-live-header-overlay {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    height: 100px !important; /* 상단 헤더 영역 전체 차단 */
    z-index: 2147483645 !important; /* 최대 z-index 값 - 2 (최상위 레이어) */
    cursor: default !important;
    background: transparent !important;
    pointer-events: auto !important; /* 클릭 차단 활성화 */
    display: none !important; /* 기본적으로 숨김 */
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    /* ★★★ 오버레이가 항상 최상위에 오도록 ★★★ */
    isolation: isolate;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

/* active 클래스: 재생 중일 때만 표시하여 상단 링크 차단 */
.joyn-live-header-overlay.active {
    display: block !important;
    pointer-events: auto !important; /* 클릭 차단 */
    z-index: 2147483645 !important; /* 최대 z-index 값 - 2 */
}

/* ★★★ 데스크탑에서 헤더 영역 제외: 오버레이를 헤더 아래로 이동 ★★★ */
@media (min-width: 769px) {
    /* 데스크탑에서는 상단 오버레이를 헤더 아래로 완전히 이동 */
    .joyn-live-header-overlay.active {
        /* 헤더 높이(약 60-100px)만큼 아래로 이동 */
        top: 100px !important;
        height: 0 !important; /* 높이를 0으로 설정하여 완전히 숨김 */
        display: none !important; /* 데스크탑에서는 완전히 숨김 */
        pointer-events: none !important;
    }
    
    /* 관리자 바가 있을 때 */
    body.admin-bar .joyn-live-header-overlay.active {
        top: calc(100px + var(--joyn-admin-bar-height)) !important;
        height: 0 !important;
        display: none !important;
        pointer-events: none !important;
    }
}

/* 관리자 바가 있을 때 높이 조정 */
body.admin-bar .joyn-live-header-overlay {
    top: var(--joyn-admin-bar-height);
    height: calc(100px + var(--joyn-admin-bar-height));
}

@media (max-width: 782px) {
    body.admin-bar .joyn-live-header-overlay {
        top: 46px;
        height: calc(100px + 46px);
    }
}

/* ============================================
   ★★★ 상단/하단 블록 오버레이 (유튜브 가기·공유·빨리가기 차단) ★★★
   joyn-broadcast 참조: 상단 30% / 하단 30%, 중간 플레이 버튼만 노출
   ============================================ */
.joyn-tv-live-block-overlay--top {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 30% !important; /* 상단 30% 차단 (유튜브 가기, 공유 버튼) */
    z-index: 10 !important;
    pointer-events: auto !important;
    background: transparent !important;
    cursor: default !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

/* 하단 30% 오버레이 (빨리가기 차단) - 데스크탑은 전체 너비 */
.joyn-tv-live-block-overlay--bottom {
    position: absolute !important;
    bottom: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 30% !important;
    z-index: 10 !important;
    pointer-events: auto !important;
    background: transparent !important;
    cursor: default !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

/* 모바일: 하단 오버레이는 PIP 버튼 영역을 막지 않음 (가로 100% 아님, 오른쪽 여백) */
@media (max-width: 768px) {
    .joyn-tv-live-block-overlay--bottom {
        left: 0 !important;
        right: 48px !important; /* PIP 버튼 클릭 가능 */
        width: auto !important;
    }
}

/* 플레이스홀더 영상일 때 중앙 재생 버튼(검은 점) 완전 숨김 */
#joyn-tv-live-player-wrapper.joyn-tv-live-placeholder-only .joyn-player-big-play,
#joyn-tv-live-player-wrapper.joyn-tv-live-placeholder-only .joyn-player-big-play-btn,
body.joyn-tv-live-placeholder-only .joyn-player-big-play,
body.joyn-tv-live-placeholder-only .joyn-player-big-play-btn {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
    left: -9999px !important;
}

/* ★★★ 중앙 오버레이: 재생 중 일시정지 버튼 클릭 차단 (재생 버튼으로 정지되지 않게) ★★★ */
.joyn-tv-live-block-overlay--center {
    position: absolute !important;
    top: 30% !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 40% !important; /* 상단 30% ~ 하단 30% 사이 중앙 영역 */
    z-index: 10 !important;
    pointer-events: none !important; /* 기본: 클릭 통과 (재생 버튼으로 시작 가능) */
    background: transparent !important;
    cursor: default !important;
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
}

.joyn-tv-live-block-overlay--center.is-active {
    pointer-events: auto !important; /* 재생 중에만 클릭 차단 → 정지되지 않음 */
}

/* ============================================
   방송일정 전용 페이지 (/hcjoyn-tv-live-time/) — 라이트 테마 + 글래스모피즘
   ============================================ */
body.page-template-page-joyn-tv-live-time .site-content,
body.page-template-page-joyn-tv-live-time .content-area,
body.page-template-page-joyn-tv-live-time .entry-content,
body.page-template-page-joyn-tv-live-time .site-main {
    background: #eef2f7;
    background-color: #eef2f7;
}

/* 방송일정 페이지: 테마 컨테이너 가로폭 최대화 (제한 제거) */
body.page-template-page-joyn-tv-live-time .site-content,
body.page-template-page-joyn-tv-live-time .content-area,
body.page-template-page-joyn-tv-live-time .entry-content,
body.page-template-page-joyn-tv-live-time .site-main,
body.page-template-page-joyn-tv-live-time .site-content .ast-container,
body.page-template-page-joyn-tv-live-time .site-content .container,
body.page-template-page-joyn-tv-live-time .site-content .wrap,
body.page-template-page-joyn-tv-live-time .ast-container,
body.page-template-page-joyn-tv-live-time #content .site-content {
    max-width: none !important;
    width: 100% !important;
    padding-left: 1rem;
    padding-right: 1rem;
    box-sizing: border-box;
}

/* 방송일정 페이지에서는 컨테이너 검정 배경 제거 + 가로폭 최대 */
.joyn-tv-live-container.joyn-tv-live-schedule-only {
    background: transparent !important;
    min-height: auto;
    max-width: none !important;
    width: 100% !important;
    padding-left: 1rem;
    padding-right: 1rem;
}

.joyn-tv-live-schedule-only {
    padding: 2.5rem 1.25rem 3rem;
    min-height: 60vh;
    width: 100%;
    max-width: none;
    margin: 0;
    box-sizing: border-box;
}

/* 글래스모피즘: 반투명 + 블러 (일반 페이지 라이트 테마) */
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-section {
    margin-top: 0;
    padding: 1.75rem 1.5rem;
    background: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-radius: 20px;
    border: 1px solid rgba(255, 255, 255, 0.95);
    box-shadow: 0 10px 40px rgba(30, 41, 59, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
    color: #2d3748;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-heading {
    margin: 0 0 1.25rem;
    font-size: 1.5rem;
    font-weight: 700;
    color: #1e293b;
    letter-spacing: -0.02em;
    text-align: center;
}

/* 탭 버튼 — 글래스모피즘 */
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-tabs {
    display: flex;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 1.25rem;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-tab {
    padding: 0.65rem 1.35rem;
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.45);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: #64748b;
    cursor: pointer;
    font-size: 0.9375rem;
    font-weight: 500;
    transition: background 0.25s, color 0.25s, box-shadow 0.25s, border-color 0.25s;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-tab:hover {
    background: rgba(255, 255, 255, 0.75);
    color: #334155;
    border-color: rgba(255, 255, 255, 0.95);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-tab.is-active {
    background: rgba(99, 102, 241, 0.18);
    border-color: rgba(99, 102, 241, 0.4);
    color: #4338ca;
    box-shadow: 0 4px 16px rgba(99, 102, 241, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.5);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-views {
    position: relative;
    min-height: 140px;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-view {
    display: none;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-view.is-visible {
    display: block;
}

/* 주/일 네비 — 글래스모피즘 버튼 */
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-nav,
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    width: 100%;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-nav-btn {
    width: 42px;
    height: 42px;
    border: 1px solid rgba(203, 213, 224, 0.9);
    border-radius: 12px;
    background: #e5e7eb;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: #475569;
    cursor: pointer;
    font-size: 1.35rem;
    line-height: 1;
    transition: background 0.25s, color 0.25s, box-shadow 0.25s, transform 0.2s;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-nav-btn:hover {
    background: #d1d5db;
    color: #334155;
    border-color: rgba(148, 163, 184, 0.9);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    transform: scale(1.02);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-nav-btn:active {
    transform: scale(0.98);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-range {
    flex: 0 0 auto;
    text-align: center;
    font-size: 0.9375rem;
    font-weight: 500;
    color: #4a5568;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-notice {
    margin: 0.5rem 0 0 0;
    padding: 0;
    text-align: center;
    font-size: 0.6875rem;
    color: #64748b;
    line-height: 1.4;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-date-input {
    flex: 0 0 auto;
    width: 160px;
    max-width: 180px;
    padding: 0.65rem 0.9rem;
    border: 1px solid rgba(226, 232, 240, 0.9);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: #334155;
    font-size: 0.9375rem;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03), inset 0 1px 0 rgba(255, 255, 255, 0.5);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-date-input:focus {
    outline: none;
    border-color: rgba(99, 102, 241, 0.5);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
    background: rgba(255, 255, 255, 0.8);
}

/* 날짜 카드 — 글래스모피즘 */
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list,
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-list {
    margin-top: 1.25rem;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-card {
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 16px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.5);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 4px 24px rgba(30, 41, 59, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.7);
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-label {
    padding: 0.85rem 1.25rem;
    background: rgba(255, 255, 255, 0.7);
    border-bottom: 1px solid rgba(226, 232, 240, 0.8);
    font-size: 0.9rem;
    font-weight: 600;
    color: #374151;
}

/* 편성표 헤더(시간/제목) — 데스크탑·모바일 모두 숨김 */
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-list-header {
    display: none !important;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-list-header .joyn-tv-live-schedule-item-time {
    flex-shrink: 0;
    min-width: 4.5em;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-list-header .joyn-tv-live-schedule-item-title {
    flex: 1 1 auto;
    min-width: 2.5em;
    overflow: visible;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-items {
    margin: 0;
    padding: 0.5rem 0 0.25rem;
    list-style: none;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-item {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.6rem 1rem;
    margin-bottom: 0.15rem;
    border-top: 1px solid rgba(226, 232, 240, 0.5);
    font-size: 0.9375rem;
    line-height: 1.4;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-item:first-child {
    border-top: none;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-item:last-child {
    margin-bottom: 0;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-item-time {
    flex-shrink: 0;
    min-width: 4.5em;
    font-weight: 600;
    color: #6366f1;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-item-title {
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow-x: visible;
    color: #2d3748;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-loading,
.joyn-tv-live-schedule-only .joyn-tv-live-schedule-empty {
    padding: 1.25rem;
    text-align: center;
    color: #718096;
    font-size: 0.9375rem;
}

.joyn-tv-live-schedule-only .joyn-tv-live-schedule-no-items {
    margin: 0;
    padding: 1.25rem;
    color: #718096;
    font-size: 0.9375rem;
}

/* 방송일정: 기본(재생창 등에서 쓰일 때) — 기존 다크 유지용 미니멀 */
.joyn-tv-live-schedule-section {
    margin-top: 2rem;
    padding: 1.25rem 1rem;
    border-radius: 8px;
    color: #2d3748;
}

.joyn-tv-live-schedule-heading { margin: 0 0 1rem; font-size: 1.25rem; font-weight: 600; }
.joyn-tv-live-schedule-tabs { display: flex; gap: 0.5rem; margin-bottom: 1rem; }
.joyn-tv-live-schedule-tab { padding: 0.5rem 1rem; border-radius: 6px; cursor: pointer; font-size: 0.9375rem; }
.joyn-tv-live-schedule-views { position: relative; min-height: 120px; }
.joyn-tv-live-schedule-view { display: none; }
.joyn-tv-live-schedule-view.is-visible { display: block; }
.joyn-tv-live-schedule-week-nav,
.joyn-tv-live-schedule-day-nav { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; }
.joyn-tv-live-schedule-nav-btn { width: 36px; height: 36px; border-radius: 6px; cursor: pointer; font-size: 1.25rem; line-height: 1; }
.joyn-tv-live-schedule-week-range { flex: 1; text-align: center; font-size: 0.9375rem; }
.joyn-tv-live-schedule-date-input { flex: 1; max-width: 160px; padding: 0.5rem 0.75rem; border-radius: 6px; font-size: 0.9375rem; }
.joyn-tv-live-schedule-week-list { display: flex; flex-direction: column; gap: 1rem; }
.joyn-tv-live-schedule-day-card { border-radius: 6px; overflow: hidden; }
.joyn-tv-live-schedule-day-label { padding: 0.5rem 0.75rem; font-size: 0.875rem; font-weight: 600; }
.joyn-tv-live-schedule-day-items { margin: 0; padding: 0; list-style: none; }
.joyn-tv-live-schedule-item { display: flex; align-items: center; gap: 1rem; padding: 0.5rem 0.75rem; font-size: 0.875rem; border-top: 1px solid rgba(0,0,0,0.06); }
.joyn-tv-live-schedule-item:first-child { border-top: none; }
.joyn-tv-live-schedule-item-time { flex-shrink: 0; min-width: 4.5em; }
.joyn-tv-live-schedule-item-title { }
.joyn-tv-live-schedule-loading,
.joyn-tv-live-schedule-empty { padding: 1rem; text-align: center; font-size: 0.9375rem; }
.joyn-tv-live-schedule-no-items { margin: 0; padding: 1rem; font-size: 0.9375rem; }

@media (max-width: 640px) {
    .joyn-tv-live-schedule-only {
        padding: 1.5rem 1rem 2rem;
    }
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-section {
        padding: 1.25rem 1rem;
    }
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-tab {
        padding: 0.5rem 1rem;
        font-size: 0.875rem;
    }
    /* 편성표 보기: 시간·제목 한 줄 유지 (모바일 480 등) — wrap/width:100% 제거 */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-item {
        flex-wrap: nowrap;
        gap: 0.5rem;
    }
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-item-time {
        width: auto;
        min-width: 3.5em;
    }
}

/* ============================================
   편성표 모바일: 가로폭 전체화면 + 손가락으로 옆으로 밀어서 보기 (가로 스크롤)
   /hcjoyn-tv-live-time/ — 긴 세로 스크롤 대신 가로 스와이프로 날짜별 확인
   ============================================ */
@media (max-width: 768px) {
    /* 편성표 페이지 전체 가로폭 사용 (패딩 최소화) */
    body.page-template-page-joyn-tv-live-time .site-content,
    body.page-template-page-joyn-tv-live-time .site-content .ast-container,
    body.page-template-page-joyn-tv-live-time .site-content .container,
    body.page-template-page-joyn-tv-live-time .site-content .wrap,
    body.page-template-page-joyn-tv-live-time .joyn-tv-live-container.joyn-tv-live-schedule-only {
        padding-left: 0 !important;
        padding-right: 0 !important;
        max-width: 100% !important;
        width: 100% !important;
    }

    .joyn-tv-live-schedule-only.joyn-tv-live-schedule-only {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-section {
        padding-left: 0.75rem !important;
        padding-right: 0.75rem !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
        max-width: 100% !important;
        width: 100% !important;
        border-radius: 0 !important;
    }

    /* 주(Week) 뷰: 날짜별 카드를 가로로 배치 → 손가락으로 좌우 스와이프 */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list {
        display: flex !important;
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        gap: 1rem;
        margin-top: 0.75rem;
        margin-left: -0.5rem;
        margin-right: -0.5rem;
        padding: 0.5rem 0.5rem 1.5rem;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x mandatory;
        scroll-padding: 0 0.75rem;
    }

    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list::-webkit-scrollbar {
        height: 6px;
    }

    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list::-webkit-scrollbar-thumb {
        background: rgba(99, 102, 241, 0.4);
        border-radius: 3px;
    }

    /* 날짜 카드: 한 장이 화면 대부분 차지 → 스와이프로 다음 날짜 */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list .joyn-tv-live-schedule-day-card {
        flex: 0 0 auto !important;
        min-width: calc(100vw - 2.5rem) !important;
        max-width: calc(100vw - 2.5rem) !important;
        scroll-snap-align: start;
        scroll-snap-stop: always;
    }

    /* 날짜 카드 내부: 세로 스크롤만 (한 날짜 안에서는 위아래로만) */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list .joyn-tv-live-schedule-day-items {
        max-height: 55vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* "옆으로 밀어서 보기" 안내 (모바일) */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-nav + .joyn-tv-live-schedule-notice {
        margin-bottom: 0.25rem;
    }

    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-hint-swipe {
        display: block !important;
    }

    /* 일(Day) 뷰: 목록이 길어져도 페이지 전체가 길어지지 않도록 영역 높이 제한 + 세로 스크롤 */
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-day-list {
        max-height: 65vh;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* 데스크탑에서는 스와이프 안내 숨김 */
.joyn-tv-live-schedule-hint-swipe {
    display: none;
    text-align: center;
    font-size: 0.75rem;
    color: #64748b;
    margin-bottom: 0.5rem;
    padding: 0.25rem 0;
}

@media (min-width: 769px) {
    .joyn-tv-live-schedule-only .joyn-tv-live-schedule-week-list {
        flex-direction: column;
        overflow: visible;
    }
}
