@charset "utf-8";
/* ============================================================
   BS4-Streaming-Shorts (쇼츠) - ONCA TV 스타일 / 9:16 세로형
   .sv-board.sv-shorts 로 스코프
   ============================================================ */
.sv-board{
    --brand:#5b7bff; --brand-strong:#3f5be0; --brand-soft:#1c2748;
    --surface:#171a21; --surface-2:#1d212a; --line:#272b35;
    --text:#eef1f6; --text-sub:#a4acba; --text-mute:#6f7886;
    --radius:12px;
    font-family:'Pretendard','Noto Sans KR',sans-serif; color:var(--text);
}
.sv-board *{box-sizing:border-box}
.sv-board a{text-decoration:none;color:inherit}
.sv-board img{max-width:100%}

/* 헤더 */
.sv-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.sv-head__title{margin:0;font-size:24px;font-weight:800;color:var(--text)}
.sv-sort{position:relative}
.sv-sort__btn{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:8px 16px;font-size:14px;font-weight:600;color:var(--text-sub);cursor:pointer}
.sv-sort__btn i{margin-left:4px}
.sv-sort__menu{display:none;position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 20px rgba(20,30,60,.12);overflow:hidden;z-index:20;min-width:120px}
.sv-sort.open .sv-sort__menu{display:block}
.sv-sort__item{display:block;padding:10px 16px;font-size:14px;color:var(--text)}
.sv-sort__item:hover{background:var(--surface-2);color:var(--brand)}

/* 검색 */
.sv-search{display:none;margin-bottom:16px}
.sv-search.show{display:block}
.sv-search__form{display:flex;max-width:460px;gap:8px}
.sv-search__form input{flex:1;height:42px;border:1px solid var(--line);border-radius:10px;padding:0 14px;font-size:14px;background:var(--surface);color:var(--text)}
.sv-search__form button{width:46px;border:none;border-radius:10px;background:var(--brand);color:#fff;cursor:pointer}

/* 세로 카드 그리드 */
.sv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:22px}
.sv-card{display:flex;flex-direction:column}
.sv-card__thumb{position:relative;display:block;aspect-ratio:9/16;background:#11141b;border-radius:var(--radius);overflow:hidden}
.sv-card__thumb img{width:100%;height:100%;object-fit:cover;transition:transform .25s}
.sv-card:hover .sv-card__thumb img{transform:scale(1.04)}
.sv-card__noimg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#555;font-size:30px}
.sv-card__play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:40px;opacity:0;background:rgba(0,0,0,.25);transition:opacity .2s}
.sv-card:hover .sv-card__play{opacity:1}
.sv-card__body{padding:12px 2px 0}
.sv-card__title{display:block;font-size:15px;font-weight:700;color:var(--text);line-height:1.4;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.sv-card__streamer{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-sub);margin-bottom:6px}
.sv-card__streamer a{display:inline-flex;align-items:center;gap:6px;color:var(--text);font-weight:600}
.sv-card__streamer a img{width:22px;height:22px;border-radius:50%;object-fit:cover}
.sv-card__streamer .xp-icon img{width:auto;height:15px;border-radius:0}
.sv-card__meta{display:flex;gap:10px;font-size:12px;color:var(--text-mute);flex-wrap:wrap}
.sv-card__meta i{margin-right:2px}

/* 버튼 */
.sv-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:9px;font-size:14px;font-weight:700;cursor:pointer;border:1px solid transparent}
.sv-btn--sm{padding:7px 12px;font-size:13px}
.sv-btn--primary{background:var(--brand);color:#fff}
.sv-btn--primary:hover{background:var(--brand-strong);color:#fff}
.sv-btn--ghost{background:var(--surface);color:var(--text-sub);border-color:var(--line)}
.sv-btn--ghost:hover{background:var(--surface-2);color:var(--text)}
.sv-btn b{color:inherit}

.sv-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.sv-empty{padding:60px 0;text-align:center;color:var(--text-mute);font-size:15px}
.sv-paging{margin-top:24px}

/* ───────── 상세(view) ───────── */
.sv-view{display:flex;gap:22px;align-items:flex-start}
.sv-view__main{flex:1;min-width:0}
.sv-view__side{flex:0 0 360px;width:360px}

/* 세로 플레이어 */
.sv-vplayer{display:flex;justify-content:center;background:#0b0d12;border-radius:var(--radius);padding:18px}
.sv-vplayer__frame{position:relative;width:360px;max-width:100%;aspect-ratio:9/16;background:#000;border-radius:10px;overflow:hidden}
.sv-vplayer__frame img{width:100%;height:100%;object-fit:cover}
.sv-vplayer__frame iframe,.sv-vplayer__frame video{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:contain;background:#000}
.sv-vplayer__frame>div:not(.sv-vplayer__body),.sv-vplayer__frame .na-videowrap,.sv-vplayer__frame .na-videoframe{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;max-width:none}
.sv-vplayer__body{position:absolute;inset:0;overflow:auto;background:var(--surface);color:var(--text);padding:14px}

/* 정보 */
.sv-mt{margin-top:14px}
.sv-view__streamerrow{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sv-view__streamer{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:var(--text)}
.sv-view__streamer a{display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.sv-view__streamer a img{width:36px;height:36px;border-radius:50%;object-fit:cover}
.sv-view__streamer .xp-icon img{width:auto;height:16px;border-radius:0}
.sv-view__btns{display:flex;gap:6px;flex-wrap:wrap}
.sv-view__title{margin:0;font-size:18px;font-weight:800;color:var(--text);line-height:1.4}
.sv-view__stat{display:flex;gap:14px;font-size:13px;color:var(--text-sub);flex-wrap:wrap}
.sv-view__stat b{color:var(--text);font-weight:700}
.sv-view__toolbar{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}

/* 사이드 카드 */
.sv-side-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;overflow:hidden}
.sv-side-card__head{padding:14px 18px;font-size:16px;font-weight:800;color:var(--text);border-bottom:1px solid var(--line)}
.sv-side-card__body{padding:16px 18px}
.sv-side-sub{margin:2px 2px 12px;font-size:14px;font-weight:700;color:var(--text)}
.sv-side-empty{padding:18px 0;text-align:center;color:var(--text-mute);font-size:13px}

/* 쇼츠 리스트(세로 썸네일) */
.sv-vod{display:flex;flex-direction:column;gap:12px}
.sv-vod__item{display:flex;gap:10px;align-items:center}
.sv-vod__thumb{position:relative;flex:0 0 64px;width:64px;aspect-ratio:9/16;border-radius:8px;overflow:hidden;background:#11141b;display:flex;align-items:center;justify-content:center;color:#555}
.sv-vod__thumb img{width:100%;height:100%;object-fit:cover}
.sv-vod__txt{display:flex;flex-direction:column;gap:5px;min-width:0}
.sv-vod__title{font-size:13px;font-weight:600;color:var(--text);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sv-vod__meta{font-size:12px;color:var(--text-mute)}

/* 반응형 */
@media (max-width:980px){
    .sv-view{flex-direction:column-reverse}
    .sv-view__side{flex:none;width:100%}
    .sv-vplayer__frame{width:300px}
}
@media (max-width:560px){
    .sv-head__title{font-size:20px}
    .sv-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:14px}
}

/* 다크모드 */
@media (prefers-color-scheme:dark){
    .sv-board{
        --surface:#171a21; --surface-2:#1d212a; --line:#272b35;
        --text:#eef1f6; --text-sub:#a4acba; --text-mute:#6f7886; --brand-soft:#1c2748;
    }
}
