/* cj_vod_player 스킨. 플레이어 부분은 usbts_edu: skins/default/css/skin.css 146~181행, 290~792행 (.learn-page 를 .cv-scope 로 바꿈) */
.ue-btn,
.cv-scope .ue-btn,
.cv-scope button.ue-btn,
.cv-scope a.ue-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	height: 56px;
	min-height: 56px;
	padding: 0 16px;
	border: 1px solid transparent;
	border-radius: 999px;
	background: var(--learn-primary, #0961F5);
	color: var(--learn-on-primary, #fff);
	font: inherit;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.2px;
	cursor: pointer;
	text-align: center;
	text-decoration: none;
}
.ue-btn[disabled] { opacity:.55; }
.ue-btn-ghost,
.cv-scope .ue-btn-ghost,
.cv-scope button.ue-btn-ghost,
.cv-scope a.ue-btn-ghost {
	background: var(--learn-surface, #fff);
	color: var(--learn-primary, #0961F5);
	border-color: var(--learn-border, #E2E8F0);
}
.ue-btn-row { display:flex; flex-direction:column; gap:10px; margin-top:16px; }
.ue-muted { margin:0; color:var(--learn-text-muted,#4B5563); font-size:0.9rem; }
.ue-player-meta {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
}
.ue-player-meta #ueClock { margin-left: auto; text-align: right; }
.ue-card > :last-child { margin-bottom:0; }
.ue-player {
	position: relative;
	overflow: visible;
	background: #000;
}
.ue-player video {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: contain;
	object-position: center;
	background: #000;
}
.ue-player > .ue-player-title {
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	z-index: 2;
	margin: 0;
	padding: 12px 14px 36px;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0.72) 0%, transparent 100%);
	color: #fff;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.4;
	word-break: keep-all;
	pointer-events: none;
	box-sizing: border-box;
}
.ue-player-title-pause { display: none; font-weight: 500; }
.ue-player.is-paused.has-played .ue-player-title-pause { display: inline; }
.ue-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
.ue-settings {
	position: relative;
	z-index: 5;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	box-sizing: border-box;
}
.ue-settings.is-open {
	background: rgba(20, 20, 20, 0.92);
	border-radius: 0 0 12px 12px;
}
.ue-settings #ueSettings {
	position: relative;
	z-index: 2;
}
.ue-settings-panel {
	display: none;
	position: absolute;
	left: auto;
	right: -40px;
	bottom: 34px;
	width: max-content;
	min-width: 40px;
	padding: 8px;
	border-radius: 12px;
	background: rgba(20, 20, 20, 0.92);
	box-shadow: none;
	transform: none;
	box-sizing: border-box;
}
.ue-settings.is-open .ue-settings-panel { display: block; }
.ue-settings-row {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	margin-bottom: 8px;
}
.ue-settings-row:last-child { margin-bottom: 0; }
.ue-settings-row[hidden] { display: none; }
.ue-settings-label {
	color: rgba(255, 255, 255, 0.72);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	line-height: 1.2;
}
.ue-settings-opts {
	display: flex;
	flex-wrap: nowrap;
	gap: 4px;
}
.ue-settings-panel .ue-quality,
.ue-settings-panel #ueQuality,
.ue-settings-panel #ueRate { display: none !important; }
.ue-chip,
.cv-scope .ue-chip,
.cv-scope button.ue-chip {
	min-width: 36px;
	height: 28px;
	min-height: 28px;
	padding: 0 8px;
	border: 0;
	border-radius: 6px;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
}
.ue-chip.is-on,
.cv-scope .ue-chip.is-on,
.cv-scope button.ue-chip.is-on {
	background: #e11d2e;
	color: #fff;
}
.ue-quality-busy {
	display: none;
	position: absolute;
	inset: 0;
	z-index: 3;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, 0.46);
	pointer-events: none;
}
.ue-quality-busy:not([hidden]) { display: flex; }
.ue-quality-busy-card {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 12px 18px;
	border-radius: 999px;
	background: rgba(17, 17, 17, 0.88);
	color: #fff;
	font-size: 0.95rem;
	font-weight: 700;
	line-height: 1;
}
.ue-quality-busy-spin {
	width: 18px;
	height: 18px;
	border: 2px solid rgba(255, 255, 255, 0.28);
	border-top-color: #fff;
	border-radius: 50%;
	animation: ue-spin 0.7s linear infinite;
}
@keyframes ue-spin {
	to { transform: rotate(360deg); }
}
.ue-player.is-paused .ue-ico-pause { display: none; }
.ue-player:not(.is-paused) .ue-ico-play { display: none; }
.ue-player-dock {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 8px 12px 10px;
	background: #141414;
	box-sizing: border-box;
	overflow: visible;
}
.ue-player:fullscreen .ue-player-dock,
.ue-player:-webkit-full-screen .ue-player-dock,
.ue-player.is-full .ue-player-dock {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 8px 10px 8px;
	background: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, 0.22) 36%, rgba(0, 0, 0, 0.42) 100%);
}
.ue-player:fullscreen .ue-dock-scrub,
.ue-player:fullscreen .ue-dock-clock,
.ue-player:-webkit-full-screen .ue-dock-scrub,
.ue-player:-webkit-full-screen .ue-dock-clock,
.ue-player.is-full .ue-dock-scrub,
.ue-player.is-full .ue-dock-clock {
	display: none;
}
.ue-dock-scrub {
	position: relative;
	height: 18px;
	cursor: pointer;
	touch-action: none;
	--ue-scrub: 0%;
	--ue-watched: 0%;
}
.ue-dock-scrub::before {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	top: 50%;
	height: 4px;
	margin-top: -2px;
	border-radius: 99px;
	background: rgba(255, 255, 255, 0.22);
}
.ue-dock-scrub-watched {
	position: absolute;
	left: 0;
	top: 50%;
	height: 4px;
	margin-top: -2px;
	width: var(--ue-watched, 0%);
	background: rgba(255, 255, 255, 0.5);
	border-radius: 99px;
	pointer-events: none;
}
.ue-dock-scrub-fill {
	position: absolute;
	left: 0;
	top: 50%;
	height: 4px;
	margin-top: -2px;
	width: var(--ue-scrub, 0%);
	background: #e11d2e;
	border-radius: 99px;
	pointer-events: none;
}
.ue-dock-scrub-knob {
	position: absolute;
	top: 50%;
	left: var(--ue-scrub, 0%);
	width: 14px;
	height: 14px;
	margin-left: -7px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
	transform: translateY(-50%);
	pointer-events: none;
}
.ue-dock-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	min-height: 40px;
	overflow: visible;
}
.ue-dock-right {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 2px;
	min-width: 0;
	margin-left: auto;
	overflow: visible;
}
.ue-dock-clock {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	width: 100%;
	max-width: none;
	margin: 0 0 2px;
	padding: 2px 4px;
	box-sizing: border-box;
	color: #fff;
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.01em;
	line-height: 1.2;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	cursor: pointer;
	user-select: none;
}
.ue-dock-btn,
.cv-scope .ue-dock-btn,
.cv-scope button.ue-dock-btn {
	flex: 0 0 40px;
	width: 40px;
	height: 40px;
	min-height: 40px;
	padding: 0;
	border: 0;
	border-radius: 10px;
	background: transparent;
	color: #fff;
	font: inherit;
	font-size: 0.9rem;
	font-weight: 700;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.ue-dock-btn[hidden] { display: none !important; }
.ue-player-dock .ue-dock-btn:focus,
.ue-player-dock .ue-dock-btn:focus-visible,
.ue-player-dock .ue-dock-btn:active,
.cv-scope .ue-player-dock button.ue-dock-btn:focus,
.cv-scope .ue-player-dock button.ue-dock-btn:focus-visible,
.cv-scope .ue-player-dock button.ue-dock-btn:active {
	outline: none;
	box-shadow: none;
	background: transparent;
	color: #fff;
}
.ue-dock-btn svg {
	width: 24px;
	height: 24px;
	fill: currentColor;
}
.ue-dock-btn svg path[stroke] {
	fill: none;
}
.ue-dock-btn.ue-dock-text,
.cv-scope .ue-dock-btn.ue-dock-text {
	width: 48px;
	flex: 0 0 48px;
	min-width: 48px;
	padding: 0;
	font-size: 0.8rem;
	letter-spacing: 0;
}
.ue-dock-btn.is-on,
.cv-scope .ue-dock-btn.is-on {
	background: transparent;
	color: #fff;
}
.ue-mute .ue-ico-off,
.ue-player:not(.is-full) #ueFull .ue-ico-off,
.ue-player.is-full #ueFull .ue-ico-on,
.ue-mute.is-muted .ue-ico-on { display: none; }
.ue-mute.is-muted .ue-ico-off { display: block; }
.ue-vol-wrap {
	position: relative;
	z-index: 5;
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	background: transparent;
	overflow: visible;
	box-sizing: border-box;
}
.ue-vol-wrap.is-open {
	width: 40px;
	background: rgba(20, 20, 20, 0.92);
	border-radius: 0 0 12px 12px;
}
.ue-vol-wrap.is-locked {
	width: 40px;
	background: transparent;
	border-radius: 12px;
}
.ue-vol-wrap .ue-mute,
.cv-scope .ue-vol-wrap .ue-mute,
.cv-scope button.ue-vol-wrap .ue-mute {
	position: relative;
	z-index: 2;
	flex: 0 0 40px;
	width: 40px;
	background: transparent;
}
.ue-vol {
	position: absolute;
	left: 0;
	bottom: 36px;
	width: 40px;
	height: 0;
	margin: 0;
	padding: 0;
	border-radius: 12px 12px 0 0;
	background: rgba(20, 20, 20, 0.92);
	opacity: 0;
	pointer-events: none;
	cursor: pointer;
	touch-action: none;
	box-sizing: border-box;
	overflow: hidden;
}
.ue-vol::before {
	content: '';
	position: absolute;
	left: 50%;
	top: 18px;
	bottom: 6px;
	width: 6px;
	margin-left: -3px;
	border-radius: 99px;
	background: rgba(255, 255, 255, 0.22);
}
.ue-vol-wrap.is-open .ue-vol {
	height: 118px;
	opacity: 1;
	pointer-events: auto;
	overflow: visible;
}
.ue-vol-wrap.is-locked .ue-vol {
	display: none;
}
.ue-vol-fill {
	position: absolute;
	left: 50%;
	bottom: 6px;
	width: 6px;
	height: calc((100% - 24px) * var(--ue-vol-n, 1));
	margin-left: -3px;
	background: #e11d2e;
	border-radius: 99px;
	pointer-events: none;
}
.ue-vol-knob {
	position: absolute;
	left: 50%;
	bottom: calc(6px + (100% - 24px) * var(--ue-vol-n, 1));
	width: 14px;
	height: 14px;
	margin: 0 0 -7px -7px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
	transform: none;
	pointer-events: none;
}
.ue-player:fullscreen,
.ue-player:-webkit-full-screen {
	width: 100%;
	height: 100%;
	background: #000;
}
.ue-player:fullscreen video,
.ue-player:-webkit-full-screen video {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.ue-player-ui { background:var(--learn-surface,#fff); padding:16px; border-top:1px solid var(--learn-border,#E2E8F0); }
.ue-player-hint { margin:0 0 12px; color:var(--learn-text-muted,#4B5563); font-size:0.85rem; line-height:1.5; }
.ue-player-actions { display:flex; flex-direction:column; align-items:stretch; gap:10px; }
.ue-text-link,
.cv-scope a.ue-text-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: center;
	width: auto;
	min-height: 44px;
	margin: 4px 0 0;
	padding: 0;
	border: 0;
	background: none;
	box-shadow: none;
	color: var(--learn-text-muted, #4B5563);
	font: inherit;
	font-size: 0.95rem;
	font-weight: 500;
	line-height: 1.5;
	text-decoration: underline;
	cursor: pointer;
}
.ue-player:not(.is-paused) + .ue-player-ui #uePlay,
.cv-scope .ue-player:not(.is-paused) + .ue-player-ui #uePlay { display: none; }
.ue-player.is-paused + .ue-player-ui #uePauseText,
.cv-scope .ue-player.is-paused + .ue-player-ui #uePauseText { display: none; }
.ue-player-overlay {
	display: none;
	position: absolute;
	inset: 0;
	z-index: 3;
	align-items: center;
	justify-content: center;
	padding: 20px;
	background: rgba(0, 0, 0, 0.72);
	box-sizing: border-box;
}
.ue-player-overlay.is-on { display: flex; }
.ue-player-panel {
	width: 100%;
	max-width: 360px;
	padding: 20px 18px;
	border-radius: 16px;
	background: var(--learn-surface,#fff);
	color: var(--learn-heading,#1F2937);
	text-align: center;
}
.ue-player-panel p { margin: 0 0 16px; font-size: 1.05rem; font-weight: 700; line-height: 1.5; word-break: keep-all; }

/* cj_vod 추가: 구간 반복, 안내 토스트 */
.ue-dock-scrub-ab {
	position: absolute;
	top: 50%;
	left: var(--ue-ab-a, 0%);
	width: calc(var(--ue-ab-b, 0%) - var(--ue-ab-a, 0%));
	height: 8px;
	margin-top: -4px;
	border-radius: 2px;
	background: rgba(250, 204, 21, 0.45);
	pointer-events: none;
}
.ue-dock-scrub-ab[hidden],
.ue-dock-scrub-mark[hidden],
.ue-ab-bar[hidden],
.ue-ab-bar [hidden],
.ue-toast[hidden],
.ue-toast [hidden] { display: none !important; }
/* 마커 요소는 44px 투명 터치 영역, ::before 가 보이는 손잡이, ::after 가 드래그 중 시각 말풍선 */
.ue-dock-scrub-mark {
	position: absolute;
	top: 50%;
	z-index: 2;
	width: 44px;
	height: 44px;
	margin: -22px 0 0 -22px;
	cursor: ew-resize;
	touch-action: none;
	outline: none;
	-webkit-tap-highlight-color: transparent;
}
.ue-dock-scrub-mark::before {
	content: attr(data-label);
	position: absolute;
	left: 50%;
	top: 50%;
	width: 24px;
	height: 30px;
	border-radius: 7px;
	background: #facc15;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
	color: #111;
	font-size: 13px;
	font-weight: 800;
	line-height: 30px;
	text-align: center;
	transform: translate(-50%, -50%);
	transition: transform 0.12s ease;
}
.ue-dock-scrub-mark::after {
	content: attr(data-time);
	position: absolute;
	left: 50%;
	bottom: calc(100% - 2px);
	padding: 3px 7px;
	border-radius: 6px;
	background: rgba(0, 0, 0, 0.88);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	transform: translateX(-50%);
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.12s ease;
}
.ue-dock-scrub-mark.is-dragging::before { transform: translate(-50%, -50%) scale(1.2); }
.ue-dock-scrub-mark.is-dragging::after,
.ue-dock-scrub-mark:focus-visible::after { opacity: 1; }
.ue-dock-scrub-mark:focus-visible::before { box-shadow: 0 0 0 2px #fff, 0 2px 6px rgba(0, 0, 0, 0.5); }
.ue-player.is-ab-previewing .ue-dock-scrub-mark::after { opacity: 0 !important; }
.ue-ab-preview {
	position: absolute;
	left: 0;
	bottom: calc(100% + 16px);
	z-index: 3;
	width: 160px;
	padding: 3px;
	border-radius: 8px;
	background: rgba(0, 0, 0, 0.9);
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
	transform: translateX(-50%);
	box-sizing: border-box;
	pointer-events: none;
}
.ue-ab-preview[hidden] { display: none !important; }
.ue-ab-preview canvas {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	border-radius: 5px;
	background: #1f1f1f;
	opacity: 0.35;
}
.ue-ab-preview.has-frame canvas { opacity: 1; }
.ue-ab-preview.has-frame.is-stale canvas { opacity: .35; }
.ue-ab-preview span {
	display: block;
	padding: 3px 0 1px;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	font-variant-numeric: tabular-nums;
}
@media (max-width: 480px) {
	.ue-ab-preview { width: 128px; }
}
.ue-ab-bar {
	display: flex;
	align-items: center;
	gap: 4px;
	min-width: 0;
	margin-left: 4px;
}
.ue-ab-btn,
.ue-ab-badge,
.cv-scope button.ue-ab-btn,
.cv-scope button.ue-ab-badge {
	height: 30px;
	min-height: 30px;
	padding: 0 10px;
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: 999px;
	background: transparent;
	color: #fff;
	font: inherit;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	cursor: pointer;
}
.ue-ab-key { display: none; }
.ue-ab-btn.is-next,
.cv-scope button.ue-ab-btn.is-next {
	border-color: #facc15;
	background: #facc15;
	color: #111;
}
.ue-ab-btn:disabled,
.cv-scope button.ue-ab-btn:disabled { opacity: 0.4; cursor: default; }
.ue-ab-badge,
.cv-scope button.ue-ab-badge {
	border-color: transparent;
	background: rgba(250, 204, 21, 0.18);
	color: #facc15;
}
.ue-ab-close,
.cv-scope button.ue-ab-close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 40px;
	width: 40px;
	height: 40px;
	min-height: 40px;
	padding: 0;
	border: 0;
	border-radius: 10px;
	background: transparent;
	color: #fff;
	cursor: pointer;
}
.ue-ab-close svg { width: 24px; height: 24px; }
.ue-toast {
	position: absolute;
	left: 50%;
	bottom: 96px;
	z-index: 6;
	display: flex;
	align-items: center;
	gap: 12px;
	max-width: calc(100% - 24px);
	padding: 10px 14px;
	border-radius: 999px;
	background: rgba(17, 17, 17, 0.9);
	color: #fff;
	font-size: 0.85rem;
	font-weight: 600;
	line-height: 1.3;
	transform: translateX(-50%);
	box-sizing: border-box;
	white-space: nowrap;
}
.ue-toast-action,
.cv-scope button.ue-toast-action {
	padding: 0;
	border: 0;
	background: none;
	color: #facc15;
	font: inherit;
	font-weight: 800;
	cursor: pointer;
}
.ue-player.is-full .ue-toast,
.ue-player:fullscreen .ue-toast { bottom: 72px; }
@media (pointer: coarse) {
	.ue-ab-btn,
	.ue-ab-badge,
	.cv-scope button.ue-ab-btn,
	.cv-scope button.ue-ab-badge { height: 36px; min-height: 36px; }
	.ue-dock-scrub-mark::before { width: 28px; height: 34px; line-height: 34px; font-size: 14px; }
}
/* 플레이어 폭이 좁을 때(is-narrow, 창 폭이 아니라 플레이어 폭 기준) 하단바를 한 줄로 유지합니다.
   구간반복 중에는 음량 버튼(휴대폰은 기기 버튼 사용)을 숨기고, A/B/닫기를 한 덩어리로 묶어 옆 버튼과 떨어뜨립니다 */
.ue-player.is-narrow.is-ab .ue-vol-wrap { display: none; }
.ue-player.is-narrow.is-ab .ue-dock-bar { gap: 4px; }
.ue-player.is-narrow.is-ab .ue-dock-btn,
.cv-scope .ue-player.is-narrow.is-ab button.ue-dock-btn { flex-basis: 36px; width: 36px; }
.ue-player.is-narrow .ue-ab-bar {
	flex: 1 1 auto;
	gap: 2px;
	min-width: 0;
	margin: 0 6px 0 0;
	padding: 2px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.1);
}
.ue-player.is-narrow .ue-ab-close,
.cv-scope .ue-player.is-narrow button.ue-ab-close {
	flex-basis: 32px;
	width: 32px;
	height: 32px;
	min-height: 32px;
	margin-left: auto;
	border-radius: 50%;
}
.ue-player.is-narrow .ue-ab-close svg { width: 20px; height: 20px; }
.ue-player.is-narrow .ue-ab-word { display: none; }
.ue-player.is-narrow .ue-ab-key { display: inline; }
.ue-player.is-narrow .ue-ab-btn,
.ue-player.is-narrow .ue-ab-badge,
.cv-scope .ue-player.is-narrow button.ue-ab-btn,
.cv-scope .ue-player.is-narrow button.ue-ab-badge {
	min-width: 0;
	height: 32px;
	min-height: 32px;
	padding: 0 8px;
	font-size: 0.75rem;
	overflow: hidden;
	text-overflow: ellipsis;
}
.ue-player.is-narrow .ue-ab-btn:not(.is-next),
.cv-scope .ue-player.is-narrow button.ue-ab-btn:not(.is-next) { border-color: transparent; }
@media (max-width: 480px) {
	.ue-chip,
	.cv-scope .ue-chip,
	.cv-scope button.ue-chip { min-width: 32px; padding: 0 6px; }
}

/* cj_vod 추가: 목록 */
.cv-scope { --learn-primary:#0961F5; font-size:15px; }
.cv-widget { max-width:1200px; margin:0 auto; }
.cv-player-wrap { margin:0 0 28px; }
.cv-player-wrap .ue-player-ui { border-radius:0 0 12px 12px; }
.cv-player-wrap .ue-player-actions { flex-direction:row; align-items:center; flex-wrap:wrap; }
.cv-player-wrap .ue-player-actions .ue-btn { width:auto; min-width:140px; height:44px; min-height:44px; }
.cv-player-info { padding:12px 4px 0; }
.cv-player-title { margin:0 0 6px; font-size:1.2rem; }
.cv-player-desc { margin:0 0 6px; color:#4B5563; line-height:1.6; }
.cv-player-guest { margin:0; color:#6B7280; font-size:.85rem; }
.cv-grid { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(var(--cv-cols,3), minmax(0,1fr)); gap:18px; min-width:0; }
.cv-grid > .cv-item { min-width:0; }
@media (max-width: 900px) { .cv-grid { grid-template-columns:repeat(min(var(--cv-cols,3), 2), minmax(0,1fr)); } }
@media (max-width: 560px) { .cv-grid { grid-template-columns:1fr; } }
.cv-item-link { display:block; color:inherit; text-decoration:none; }
.cv-thumb { position:relative; display:block; aspect-ratio:16/9; border-radius:10px; overflow:hidden; background:#111827; }
.cv-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.cv-thumb-empty { position:absolute; inset:0; background:linear-gradient(135deg,#1f2937,#374151); }
.cv-dur { position:absolute; right:6px; bottom:8px; padding:1px 6px; border-radius:4px; background:rgba(0,0,0,.75); color:#fff; font-size:12px; font-variant-numeric:tabular-nums; }
.cv-badge { position:absolute; left:6px; top:6px; padding:2px 8px; border-radius:999px; background:#FFF4E6; color:#9A3412; font-size:12px; font-weight:700; }
.cv-bar { position:absolute; left:0; right:0; bottom:0; height:4px; background:rgba(255,255,255,.35); }
.cv-bar i { display:block; height:100%; background:#EF4444; }
.cv-title { display:block; margin:8px 0 2px; font-weight:700; line-height:1.4; word-break:keep-all; }
.cv-meta { display:block; color:#6B7280; font-size:.85rem; }
.cv-resume { display:inline-block; margin-left:6px; color:#0961F5; font-weight:600; }
.cv-item.is-current .cv-thumb { box-shadow:inset 0 0 0 3px #0961F5; }
.cv-item-link:focus-visible .cv-thumb { box-shadow:inset 0 0 0 3px rgba(9,97,245,.55); }
.cv-item.is-current .cv-item-link:focus-visible .cv-thumb { box-shadow:inset 0 0 0 3px #0961F5; }
.cv-item.is-locked .cv-thumb img { filter:grayscale(.4) brightness(.8); }
.cv-empty { color:#6B7280; }
.cv-notice { padding:18px; margin:0 0 20px; border-radius:12px; background:#FFF4E6; color:#9A3412; }
.cv-notice p { margin:0 0 10px; font-weight:700; }
.cv-btn { display:inline-block; padding:8px 18px; border-radius:999px; background:#0961F5; color:#fff !important; text-decoration:none; margin-right:10px; }
.cv-link { color:inherit; }
.cv-pager { display:flex; gap:14px; justify-content:center; align-items:center; margin:22px 0 0; }
