/* 실시간 문자중계 창(nbt live panel) 스타일 - 2026-10-14 layout.blade.php 안에 있던 것을 별도 파일로 분리.
   매 페이지에 직접 넣으면 안 쓰는 사람도 매번 받아야 해서, 파일로 빼 브라우저가 저장해두고 쓰게 함.
   불러오는 곳: layout.blade.php (공개 여부는 widgets/nba_schedule/nba_schedule.class.php 의 LIVE_FEED_PUBLIC) */
/* 실시간 중계 패널(2026-10-11) - PC 우측 사이드바(개선사항/광고 영역) 위에 뜨는
   플로팅 패널. 다른 게시판으로 이동하거나 글쓰기 화면으로 가도(완전히 새로운 페이지
   로드라 JS 상태는 매번 날아감) 계속 떠 있어야 해서, localStorage에 "지금 보고 있는
   경기"만 기록해두고 페이지가 새로 뜰 때마다 이 레이아웃 스크립트가 다시 열어준다.
   X를 눌러 닫거나 경기가 끝나기 전까지는 화면 스크롤과 무관하게 고정 위치에 둠 */
.nbt-live-panel {
	position: fixed; z-index: 9999; display: flex; flex-direction: column;
	width: 420px;
	background: var(--bg-body); border: 1px solid var(--border-color); border-radius: 10px;
	box-shadow: 0 8px 28px rgba(0,0,0,.28); overflow: hidden;
}
/* 2026-10-13: PIP 창으로 옮겨진 상태에서는 그 작은 창 자체가 이미 "떠 있는
   패널"이라, 메인 페이지에 떠 있을 때 쓰던 fixed 위치/고정폭/그림자가 다 필요없고
   오히려 방해됨 - PIP 창 안에서는 그냥 꽉 채우는 평범한 레이아웃으로 */
.nbt-live-panel.is-pip {
	position: static !important; width: 100% !important; height: 100% !important;
	border-radius: 0; box-shadow: none; left: auto !important; top: auto !important;
}
.nbt-live-panel-head { flex: none; background: #1E3A8A; color: #fff; padding: 10px 14px 8px; }
.nbt-live-panel-head-top { display: flex; justify-content: flex-end; margin-bottom: 2px; }
.nbt-live-panel-close {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer;
	background: rgba(255,255,255,.14); color: #fff; font-size: 13px; line-height: 1;
}
.nbt-live-panel-close:hover { background: rgba(255,255,255,.28); }
.nbt-live-panel-pip {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer;
	background: rgba(255,255,255,.14); color: #fff; font-size: 11px; line-height: 1;
}
.nbt-live-panel-pip:hover { background: rgba(255,255,255,.28); }
.nbt-live-panel-head-top { justify-content: space-between; align-items: center; }
/* 2026-10-13: 네모 버튼 2개 대신, 헤더의 라이트/다크 토글과 같은 스위치
   형태(아이콘 - 트랙+손잡이 - 아이콘)로 바꿔서 지금 어느 모드인지 한눈에 보이게 함 */
.nbt-live-mode-toggle {
	display: flex; align-items: center; gap: 5px; border: none; cursor: pointer;
	background: rgba(255,255,255,.14); border-radius: 999px; padding: 0 8px; height: 22px;
}
.nbt-live-mode-toggle:hover { background: rgba(255,255,255,.22); }
.nbt-live-mode-toggle i { font-size: 10px; color: rgba(255,255,255,.55); transition: color .15s; }
.nbt-live-mode-toggle[aria-checked="false"] .nbt-live-mode-icon-single { color: #ffc94d; }
.nbt-live-mode-toggle[aria-checked="true"] .nbt-live-mode-icon-split { color: #ffc94d; }
.nbt-live-mode-track { position: relative; width: 20px; height: 11px; border-radius: 999px; background: rgba(255,255,255,.3); flex: none; }
.nbt-live-mode-thumb { position: absolute; top: 1.5px; left: 1.5px; width: 8px; height: 8px; border-radius: 50%; background: #fff; transition: transform .2s; }
.nbt-live-mode-toggle[aria-checked="true"] .nbt-live-mode-thumb { transform: translateX(9px); }
/* 2026-10-13: "현재 코트 5명" 섹션을 보일지/숨길지 - 보일 때 노란색, 숨길 때 흰색 */
.nbt-live-oncourt-toggle {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer;
	background: rgba(255,255,255,.14); color: #fff; font-size: 11px; line-height: 1;
}
.nbt-live-oncourt-toggle:hover { background: rgba(255,255,255,.22); }
.nbt-live-oncourt-toggle[aria-pressed="true"] { color: #ffc94d; }
/* 2026-10-12: 로고 두 개 + 점수 두 개를 전부 한 줄에 - 헤더 높이를 최대한 줄임.
   3글자 팀코드 텍스트는 로고만으로 충분히 구분돼서 뺌
   2026-10-13: 시간(상태) 줄을 토글 버튼 줄 안으로 합치고 스코어라인을 그만큼
   위로 올림 - 나중에 넣을 "현재 코트 5명" 섹션 자리를 피드 영역에 더 확보하려는 것 */
.nbt-live-panel-scoreline { display: grid; grid-template-columns: 1fr 1fr; padding: 3px 0 2px; }
/* 2026-10-14: 점수줄을 반반으로 나눠 각 팀 [로고 + 점수]를 자기 절반의 가운데에 둠
   (아래 "현재 코트 5명"의 좌우 칸과 같은 기준선) */
.nbt-live-panel-side { display: flex; align-items: center; justify-content: center; gap: 8px; min-width: 0; }
.nbt-live-panel-team-logo { width: 33px; height: 33px; object-fit: contain; flex: none; }
/* 2026-10-13: 로컬 로고 파일이 없는 비표준 팀(Lions 등)은 onerror로 이 모양으로 교체 */
.nbt-live-panel-team-logo.is-logo-fallback { display: flex; align-items: center; justify-content: center; border-radius: 50%; background: #4b5563; color: #fff; font-size: 10px; font-weight: 800; }
.nbt-live-panel-team-score { font-size: 29px; font-weight: 700; font-variant-numeric: tabular-nums; color: #fff; transition: color .5s ease-in; }
/* 2026-10-14: 점수가 올라가는 순간 주황색으로 바뀌어 0.45초 유지했다가 0.5초 동안 흰색으로 돌아옴(합쳐서 1초 안) */
.nbt-live-panel-team-score.is-score-up { color: #ff9f1c; transition: none; }
/* 2026-10-13: 토글 버튼 줄 안으로 들어와서 가운데를 차지하는 flex 자식이 됨 -
   남는 공간을 다 먹고(flex:1) 그 안에서 텍스트만 가운데 정렬. 에러 메시지처럼
   긴 문구가 올 수 있어서 넘치면 말줄임표로 */
.nbt-live-panel-status {
	flex: 0 1 auto; min-width: 0; text-align: center; font-size: 11px; color: #ff8fa3; font-weight: 700;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0 6px;
}
/* 2026-10-13: 스코어 바로 아래 - 양 팀 "지금 코트에 있는 5명"을 사진+이름으로 */
.nbt-live-oncourt { display: flex; gap: 10px; padding: 4px 4px 2px; }
.nbt-live-oncourt-col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.nbt-live-oncourt-player { display: flex; align-items: center; gap: 6px; min-width: 0; transition: opacity .35s ease; }
/* 2026-10-14: 교체될 때 나가는 선수는 서서히 사라지고 같은 자리에 들어오는 선수가 서서히 나타남 */
.nbt-live-oncourt-player.is-fading { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
	.nbt-live-oncourt-player, .nbt-live-panel-team-score { transition: none; }
}
.nbt-live-oncourt-photo { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; flex: none; background: rgba(255,255,255,.15); }
.nbt-live-oncourt-photo.is-photo-fallback { display: block; }
.nbt-live-oncourt-name { font-size: 13px; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.nbt-live-oncourt-short { display: none; }
/* 2026-10-13: X 버튼 위에 "N초 후 갱신" 텍스트 + 원형 링 아이콘 - 5초 폴링 주기와
   맞물려서 링이 가득 찬 상태에서 5초에 걸쳐 서서히 비워짐(= 파이 타이머) */
/* 2026-10-14: 왼쪽 버튼 묶음과 오른쪽 버튼 묶음을 같은 폭(flex 1 1 0)으로 맞춰서, 가운데
   남은 시간이 버튼 폭 차이에 끌려가지 않고 패널 정중앙에 오게 함 */
.nbt-live-head-left { flex: 1 1 0; min-width: 0; display: flex; align-items: center; }
.nbt-live-head-right { flex: 1 1 0; min-width: 0; display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 6px; }
.nbt-live-refresh { display: flex; align-items: center; gap: 4px; font-size: 11.5px; color: rgba(255,255,255,.7); }
/* 2026-10-13: "N초 후 갱신" 전체가 아니라 숫자만 강조색 - 나머지는 원래 톤으로 */
.nbt-live-refresh-num { color: #ff6b81; font-weight: 700; }
.nbt-live-refresh-ring { width: 17px; height: 17px; flex: none; transform: rotate(-90deg); }
/* 2026-10-14: 평소엔 희미한 바탕 원(bg)만 보이고, 갱신되는 순간 그 위로 밝은 선(fg)이
   한 바퀴 돌며 그려졌다가 서서히 사라짐. 예전엔 원 하나로 했더니 그리기 시작하는 순간
   바탕 원까지 같이 사라져서 돌아가는 느낌이 안 났음 */
.nbt-live-refresh-ring-bg { fill: none; stroke: rgba(255,255,255,.18); stroke-width: 2; }
.nbt-live-refresh-ring-fg { fill: none; stroke: rgba(255,255,255,0); stroke-width: 2; stroke-dasharray: 50.27; stroke-dashoffset: 0; }
/* 2026-10-13: PIP 팝업 안에서도 엔톡으로 돌아갈 연결고리가 필요 - 클릭하면
   메인 탭을 홈으로 보내는 작은 로고 바를 헤더 맨 위에 추가 */
/* 2026-10-13: 브라우저 내장형 패널에선 로고가 필요 없음(이미 사이트 안이라
   엔톡으로 돌아갈 연결고리가 의미없음) - PIP로 뺐을 때만 보이게 하고, 그때는
   16px -> 24px(50%) 키움 */
.nbt-live-panel-brand { display: none; align-items: center; padding-bottom: 6px; margin-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,.15); text-decoration: none; }
.nbt-live-panel.is-pip .nbt-live-panel-brand { display: flex; }
.nbt-live-panel-brand img { height: 24px; width: auto; display: block; }
.nbt-live-panel-brand-text { font-size: 18px; font-weight: 700; color: #fff; letter-spacing: .3px; }
.nbt-live-panel-brand:hover { opacity: .85; }
.nbt-live-panel-feed { flex: 1 1 auto; display: flex; min-height: 0; overflow: hidden; }
/* 2026-10-13: 고정 200px x 2 = 400px가 420px 패널 폭에 딱 안 맞아서 오른쪽에
   빈 여백이 생기던 문제 - 컨테이너 폭 기준 50%로 바꿔서 항상 정확히 반반 */
.nbt-live-feed-col { width: 50%; flex: none; padding: 8px 10px; overflow-y: auto; box-sizing: border-box; }
.nbt-live-feed-col[data-side="away"] { border-right: 1px solid var(--border-color); }
.nbt-live-feed-col.is-single { width: 100%; border-right: none !important; }
.nbt-live-play-team-logo { flex: none; width: 18px; height: 18px; object-fit: contain; margin-top: 2px; }
.nbt-live-play { display: flex; align-items: flex-start; gap: 6px; padding: 7px 0; border-bottom: 1px solid var(--border-color); font-size: 12px; line-height: 1.4; color: var(--text-primary); }
.nbt-live-play:last-child { border-bottom: none; }
/* 2026-10-13: 득점(핑크) 전용이던 걸 성공(노랑)/실패(회색)로 확장 - 자유투
   성공도 득점이지만 득점샷(필드골)이 아니라서 기존엔 안 들어왔었음. 노란색은
   헤더의 라이트모드 토글 아이콘과 같은 색(#ffc94d)으로 통일. 검정 대신 회색을
   쓴 건 다크 모드에서 진짜 검정은 배경과 거의 구분이 안 되기 때문 */
.nbt-live-play.is-score { background: rgba(255,201,77,.16); border-radius: 6px; padding-left: 4px; }
.nbt-live-play.is-miss { background: rgba(128,128,128,.14); border-radius: 6px; padding-left: 4px; }
.nbt-live-play-photo { flex: none; width: 22px; height: 22px; border-radius: 50%; object-fit: cover; background: var(--bg-sidebar); margin-top: 1px; }
.nbt-live-play-body { flex: 1 1 auto; min-width: 0; white-space: pre-line; }
.nbt-live-play-extra { display: block; margin-top: 1px; color: var(--text-secondary); }
.nbt-live-play-meta { display: block; color: var(--text-placeholder); font-size: 10.5px; font-variant-numeric: tabular-nums; margin-bottom: 2px; }
.nbt-live-panel-chat { flex: none; border-top: 1px solid var(--border-color); padding: 10px; background: var(--bg-sidebar); }
/* 2026-10-13: 중계 보다가 바로 NBA Talk에 글 쓰러 갈 수 있도록 - 지금 보고 있는
   두 팀을 관련 팀 태그에 미리 선택해서 넘겨줌 (team_tags GET 파라미터) */
.nbt-live-panel-write-btn {
	display: flex; align-items: center; justify-content: center; gap: 6px;
	width: 100%; padding: 9px 0; border-radius: 7px; border: none; cursor: pointer;
	background: #c0392b; color: #fff; font-size: 12.5px; font-weight: 700; text-decoration: none;
}
.nbt-live-panel-write-btn:hover { background: #a93226; }
/* 2026-10-14: 모바일(1024px 미만)은 화면 아래에서 올라오는 판(바텀시트)으로 - 접힘(점수 띠)/
   반/전체 3단계. 손잡이나 머리 부분을 끌어서 단계를 바꾸고, 손을 떼면 가까운 단계로 붙음.
   접힘에선 로고·점수·시간·최근 플레이 한 줄만, 반에선 코트 5명을 빼고 플레이 기록 위주로 */
.nbt-live-sheet-grabber, .nbt-live-sheet-peek { display: none; }
.nbt-live-panel.is-sheet {
	left: 0 !important; right: 0; top: auto !important; bottom: 0; width: auto; height: 50vh;
	border-radius: 16px 16px 0 0; border-left: 0; border-right: 0; border-bottom: 0;
	box-shadow: 0 -6px 24px rgba(0,0,0,.25);
	transition: height .28s cubic-bezier(.2,.8,.2,1);
	padding-bottom: env(safe-area-inset-bottom, 0px);
}
.nbt-live-panel.is-sheet.is-dragging { transition: none; }
.nbt-live-panel.is-sheet .nbt-live-panel-head { touch-action: none; padding-top: 0; }
.nbt-live-panel.is-sheet .nbt-live-sheet-grabber { display: block; width: 40px; height: 5px; border-radius: 3px; background: rgba(255,255,255,.55); margin: 7px auto 7px; }
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-sheet-peek { display: flex; }
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-panel-head-top,
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-panel-scoreline,
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-oncourt,
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-panel-feed,
.nbt-live-panel.is-sheet.sheet-peek .nbt-live-panel-chat { display: none !important; }
.nbt-live-panel.is-sheet.sheet-half .nbt-live-oncourt { display: none !important; }
/* 2026-10-14: 시트가 위로 떠 있는 판처럼 보이게 진한 그림자(머리 색은 아래 원목 코트 블록) */
.nbt-live-panel.is-sheet { box-shadow: 0 -10px 28px rgba(0,0,0,.45); }
.nbt-live-panel.is-sheet .nbt-live-sheet-grabber { width: 44px; background: rgba(255,255,255,.6); }
/* 경기 중일 때만 상태 글자 앞에 깜빡이는 주황 점(LIVE) - is-live는 폴링 응답이 진행 중일 때 붙음.
   처음엔 모바일 시트에만 넣었다가 원목 코트 디자인과 함께 PC/PIP에도 적용 */
.nbt-live-panel.is-live .nbt-live-panel-status::before,
.nbt-live-panel.is-live .nbt-live-peek-status::before {
	content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #ff9f1c;
	margin-right: 5px; vertical-align: 1px; animation: nbtLiveDot 1.4s ease-in-out infinite;
}
/* 2026-10-14: 중계창 머리 = 원목 농구 코트(비교 시안 B, 사용자 선택) - 남색 사이트 헤더/위젯 헤더와
   색 계열이 완전히 달라서 웨일 강제 다크 모드에서도 경계가 보임. 조명 낮춘 원목 + 판자 이음새 + 결,
   점수줄 가운데에 하프라인과 센터 서클(두 팀 점수가 서클 양쪽에서 마주 봄). 서클/라인은 점수줄에
   붙여 그려서 코트 5명 줄을 켜고 꺼도 늘 점수 사이 가운데. 로고는 흰 원판 위에(녹색/남색 로고가
   바닥에 묻히지 않게). PC 내장형/모바일 시트 공통, PIP는 아래 콘크리트(시안 D) */
.nbt-live-panel-head {
	position: relative; overflow: hidden; isolation: isolate;
	box-shadow: inset 0 1px 0 rgba(255,255,255,.28);
	background:
		linear-gradient(180deg, rgba(0,0,0,.36) 0%, rgba(0,0,0,0) 42%, rgba(0,0,0,.16) 100%),
		repeating-linear-gradient(90deg, rgba(0,0,0,.22) 0 1px, transparent 1px 34px),
		repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 3px, transparent 3px 8px),
		linear-gradient(180deg, #8d572c 0%, #62391b 100%);
}
.nbt-live-panel-scoreline { position: relative; }
.nbt-live-panel-scoreline::before {
	content: ''; position: absolute; left: 50%; top: -4px; height: 1000px; width: 2px; margin-left: -1px;
	background: rgba(255,255,255,.55); z-index: -1; pointer-events: none;
}
.nbt-live-panel-scoreline::after {
	/* 2026-10-14: 68px -> 88px(사용자 요청, 약 30%) - 위아래가 머리 밖으로 잘려도 됨. 중심을 점수줄 가운데보다
	   18px 아래로 둬서 원 윗부분이 위쪽 상태 글자("경기 종료")와 겹치지 않게 */
	content: ''; position: absolute; left: 50%; top: 50%; width: 88px; height: 88px; margin: -26px 0 0 -44px;
	border: 2px solid rgba(255,255,255,.6); border-radius: 50%; z-index: -1; pointer-events: none;
	box-sizing: border-box; /* 테두리를 폭 안에 포함 - 빠지면 원이 테두리 두께만큼 오른쪽으로 밀려 하프라인이 정중앙을 안 지남 */
}
.nbt-live-panel-scoreline .nbt-live-panel-team-logo {
	box-sizing: border-box; width: 40px; height: 40px; padding: 5px; border-radius: 50%;
	background: rgba(255,255,255,.93); box-shadow: 0 2px 6px rgba(0,0,0,.35);
}
.nbt-live-panel .nbt-live-sheet-peek .nbt-live-panel-team-logo {
	box-sizing: border-box; width: 27px; height: 27px; padding: 3.5px; border-radius: 50%;
	background: rgba(255,255,255,.93); box-shadow: 0 1px 3px rgba(0,0,0,.35);
}
.nbt-live-panel-scoreline .nbt-live-panel-team-logo.is-logo-fallback,
.nbt-live-panel .nbt-live-sheet-peek .nbt-live-panel-team-logo.is-logo-fallback { background: #4b5563; padding: 0; }
.nbt-live-panel-team-score, .nbt-live-peek-score { text-shadow: 0 2px 6px rgba(0,0,0,.5); }
.nbt-live-panel-status, .nbt-live-panel .nbt-live-peek-status { color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
.nbt-live-oncourt-name { text-shadow: 0 1px 3px rgba(0,0,0,.6); }
/* 머리가 아래 플레이 목록 위로 그림자를 살짝 드리워 판이 겹쳐 보이게 */
.nbt-live-panel-feed { box-shadow: inset 0 9px 10px -8px rgba(0,0,0,.4); }
/* PIP = 콘크리트 스트리트 코트(시안 D) - 거친 바닥 알갱이를 선 위에 덮어 선이 닳아 보이게 */
.nbt-live-panel.is-pip .nbt-live-panel-head {
	background:
		radial-gradient(ellipse at 18% 75%, rgba(0,0,0,.2), transparent 38%),
		radial-gradient(ellipse at 82% 30%, rgba(255,255,255,.06), transparent 35%),
		linear-gradient(180deg, #6b6f74 0%, #474a4f 100%);
}
.nbt-live-panel.is-pip .nbt-live-panel-head::after {
	/* 2026-10-14: 처음엔 SVG 필터(feTurbulence)로 알갱이를 만들었는데, 사용자 크롬(그래픽 처리 문제가 있는
	   환경)에서 필터가 실패하면서 검은 사각형이 그대로 깔려 PIP 머리가 거의 검게 보였음 - 미리 만든
	   PNG 타일(2px 덩어리, 어두운 점 위주 + 가끔 밝은 점)로 교체. 못 불러와도 투명하게 남을 뿐 */
	content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	background: url(/layouts/root/assets/img/concrete_noise.png?v=2) repeat;
}
.nbt-live-panel.is-pip .nbt-live-panel-scoreline::before { width: 3px; margin-left: -1.5px; background: rgba(255,255,255,.5); }
.nbt-live-panel.is-pip .nbt-live-panel-scoreline::after { border-width: 3px; border-color: rgba(255,255,255,.5); }
.nbt-live-panel.is-pip .nbt-live-panel-status { color: #ffe08a; }
@keyframes nbtLiveDot { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(255,159,28,.6); } 50% { opacity: .45; box-shadow: 0 0 0 4px rgba(255,159,28,0); } }
@media (prefers-reduced-motion: reduce) {
	.nbt-live-panel.is-live .nbt-live-panel-status::before,
	.nbt-live-panel.is-live .nbt-live-peek-status::before { animation: none; }
}
.nbt-live-sheet-peek { align-items: center; gap: 8px; padding-bottom: 6px; min-width: 0; color: #fff; }
.nbt-live-peek-team { display: flex; align-items: center; gap: 5px; flex: none; }
.nbt-live-sheet-peek .nbt-live-panel-team-logo { width: 22px; height: 22px; }
.nbt-live-peek-score { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; width: 2.1em; text-align: center; color: #fff; transition: color .5s ease-in; }
.nbt-live-peek-score.is-score-up { color: #ff9f1c; transition: none; }
.nbt-live-peek-sep { color: #9db0d8; font-size: 12px; }
.nbt-live-peek-text { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; line-height: 1.3; }
.nbt-live-peek-status { font-size: 11px; font-weight: 700; color: #ff8fa3; }
.nbt-live-peek-latest { font-size: 12px; color: rgba(255,255,255,.85); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nbt-live-peek-close { flex: none; width: 26px; height: 26px; border: none; border-radius: 7px; background: rgba(255,255,255,.14); color: #fff; font-size: 13px; line-height: 1; cursor: pointer; }

/* ===== 2026-10-15: 중계창 효과 ===== */
.nbt-live-fx-toggle {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer;
	background: rgba(255,255,255,.14); color: #fff; font-size: 11px; line-height: 1;
}
.nbt-live-fx-toggle:hover { background: rgba(255,255,255,.22); }
.nbt-live-fx-toggle[aria-pressed="true"] { color: #ffc94d; }
.nbt-live-fx-toggle { margin-left: 4px; }
/* 3점슛/덩크 불꽃 */
.nbt-live-play { position: relative; }
.nbt-live-play.is-fx-pop { animation: nbtFxPop .5s ease-out; }
@keyframes nbtFxPop { 0% { box-shadow: 0 0 0 0 rgba(255,170,40,.55); } 100% { box-shadow: 0 0 0 10px rgba(255,170,40,0); } }
.nbt-fx-burst { position: absolute; left: 34px; top: 16px; width: 0; height: 0; pointer-events: none; z-index: 3; }
.nbt-fx-burst i { position: absolute; left: -3px; top: -3px; width: 6px; height: 6px; border-radius: 50%; opacity: 0;
	animation: nbtFxSpark .8s cubic-bezier(.15,.7,.3,1) forwards; }
.nbt-fx-burst.is-dunk i { width: 7px; height: 7px; }
@keyframes nbtFxSpark {
	0% { opacity: 1; transform: translate(0, 0) scale(1); }
	70% { opacity: 1; }
	100% { opacity: 0; transform: translate(var(--dx), var(--dy)) scale(.3); }
}
.nbt-fx-burst b { position: absolute; left: -12px; top: -14px; font-size: 22px; animation: nbtFxBoom .7s ease-out forwards; }
@keyframes nbtFxBoom { 0% { transform: scale(.3); opacity: 0; } 30% { transform: scale(1.3); opacity: 1; } 100% { transform: scale(1); opacity: 0; } }
/* 배너(역전/런/기록 돌파/연속 3점/클러치) - 머리 바로 아래에서 기록 목록 위로 겹쳐 뜸 */
.nbt-live-fx-host { position: relative; height: 0; z-index: 6; flex: none; }
.nbt-live-fx-toast {
	position: absolute; left: 10px; right: 10px; top: 8px; padding: 9px 12px; border-radius: 10px;
	color: #fff; font-size: 13.5px; font-weight: 800; text-align: center; letter-spacing: -.2px;
	box-shadow: 0 6px 18px rgba(0,0,0,.3); pointer-events: none;
	background: linear-gradient(135deg, #f5811f, #e0561b);
	animation: nbtToastIn .35s cubic-bezier(.2,.8,.2,1), nbtToastOut .35s ease-in 2.3s forwards;
}
.nbt-live-fx-toast.is-lead { background: linear-gradient(135deg, #e5383b, #b5179e); }
.nbt-live-fx-toast.is-run { background: linear-gradient(135deg, #ff7b00, #e0391b); }
.nbt-live-fx-toast.is-milestone { background: linear-gradient(135deg, #f7b500, #e08a00); color: #2b1d00; }
.nbt-live-fx-toast.is-streak { background: linear-gradient(135deg, #7b2ff7, #3a86ff); }
.nbt-live-fx-toast.is-clutch { background: linear-gradient(135deg, #d00000, #6a040f); }
.nbt-live-fx-toast.is-static { animation: nbtToastOut .2s linear 2.4s forwards; }
@keyframes nbtToastIn { from { opacity: 0; transform: translateY(-10px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes nbtToastOut { to { opacity: 0; transform: translateY(-6px); } }
/* 클러치 타임 - 테두리가 붉게 숨쉬듯 */
.nbt-live-panel.is-clutch { animation: nbtClutch 1.6s ease-in-out infinite; }
@keyframes nbtClutch {
	0%, 100% { box-shadow: 0 0 0 2px rgba(255,59,48,.85), 0 8px 28px rgba(0,0,0,.28); }
	50% { box-shadow: 0 0 0 3px rgba(255,59,48,.35), 0 0 22px rgba(255,59,48,.55); }
}
/* 선수 기록 툴팁 */
.nbt-live-play-photo[data-pid], .nbt-live-oncourt-player[data-pid] { cursor: pointer; }
.nbt-live-player-pop {
	position: fixed; z-index: 100000; width: 276px; padding: 12px; border-radius: 12px;
	background: #1c2230; color: #fff; box-shadow: 0 10px 30px rgba(0,0,0,.4); border: 1px solid rgba(255,255,255,.08);
	font-size: 12.5px; line-height: 1.45; animation: nbtToastIn .18s ease-out;
}
.nbt-pop-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; padding-right: 24px; }
.nbt-pop-close {
	position: absolute; top: 8px; right: 8px; width: 24px; height: 24px; border: none; border-radius: 7px; cursor: pointer;
	background: rgba(255,255,255,.12); color: #fff; font-size: 12px; line-height: 1; display: flex; align-items: center; justify-content: center;
}
.nbt-pop-close:hover { background: rgba(255,255,255,.24); }
.nbt-pop-photo { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; background: rgba(255,255,255,.12); flex: none; }
.nbt-pop-name { font-size: 15px; font-weight: 800; display: flex; flex-direction: column; min-width: 0; }
.nbt-pop-name span { font-size: 11.5px; font-weight: 500; color: rgba(255,255,255,.7); display: flex; align-items: center; gap: 4px; }
.nbt-pop-logo { width: 16px; height: 16px; object-fit: contain; }
.nbt-pop-main { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-bottom: 8px; }
.nbt-pop-main div { background: rgba(255,255,255,.07); border-radius: 8px; padding: 6px 0; text-align: center; color: rgba(255,255,255,.75); font-size: 11px; }
.nbt-pop-main b { display: block; font-size: 20px; color: #fff; font-variant-numeric: tabular-nums; }
.nbt-pop-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px 6px; color: rgba(255,255,255,.85); font-variant-numeric: tabular-nums; }
.nbt-pop-grid span { white-space: nowrap; }
.nbt-pop-grid em { font-style: normal; color: rgba(255,255,255,.5); font-size: 11px; }
@media (prefers-reduced-motion: reduce) {
	.nbt-live-panel.is-clutch, .nbt-live-play.is-fx-pop, .nbt-live-player-pop { animation: none; }
}

/* ===== 2026-10-15: 경기 시작 전 카드(옆으로 넘기기) ===== */
.nbt-live-panel-feed.is-pregame > .nbt-live-feed-col { display: none; }
.nbt-pg { position: relative; flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; padding: 12px 0 8px; }
.nbt-pg-track { flex: 1 1 auto; min-height: 0; display: flex; gap: 10px; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; padding: 0 16px; scroll-padding: 0 16px; scrollbar-width: none; overscroll-behavior-x: contain; }
.nbt-pg-track::-webkit-scrollbar { display: none; }
.nbt-pg-card { flex: 0 0 calc(100% - 32px); scroll-snap-align: start; box-sizing: border-box; border: 1px solid var(--border-color); border-radius: 14px; background: var(--bg-body); padding: 14px; overflow-y: auto; color: var(--text-primary); }
.nbt-pg-title { font-size: 14px; font-weight: 800; margin-bottom: 10px; }
.nbt-pg-title small { font-size: 11px; font-weight: 500; color: var(--text-secondary); margin-left: 4px; }
.nbt-pg-intro { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; }
.nbt-pg-badge { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; background: rgba(245,129,31,.12); color: #e0701a; font-size: 13px; font-weight: 800; }
.nbt-pg-pulse { width: 8px; height: 8px; border-radius: 50%; background: #f5811f; animation: nbtLiveDot 1.4s ease-in-out infinite; }
.nbt-pg-matchup { display: flex; align-items: center; gap: 14px; margin: 6px 0 2px; font-size: 12px; font-weight: 800; color: var(--text-secondary); }
.nbt-pg-matchup .nbt-pg-logo { width: 46px; height: 46px; }
.nbt-pg-logo { width: 20px; height: 20px; object-fit: contain; flex: none; }
.nbt-pg-tip { font-size: 20px; font-weight: 800; }
.nbt-pg-arena { font-size: 12px; color: var(--text-secondary); }
.nbt-pg-note { font-size: 12.5px; color: var(--text-secondary); margin-top: 4px; }
.nbt-pg-hint { font-size: 11.5px; color: #e0701a; font-weight: 700; margin-top: 6px; }
.nbt-pg-cmp-head { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; margin-bottom: 8px; }
.nbt-pg-cmp-head .nbt-pg-sp { flex: 1; }
.nbt-pg-cmp-row { display: grid; grid-template-columns: 46px 1fr 62px 1fr 46px; align-items: center; gap: 6px; font-size: 12px; margin: 7px 0; font-variant-numeric: tabular-nums; }
.nbt-pg-cmp-row > span { text-align: center; color: var(--text-secondary); font-size: 11.5px; }
.nbt-pg-cmp-row > b { font-weight: 600; color: var(--text-secondary); }
.nbt-pg-cmp-row > b:first-child { text-align: right; }
.nbt-pg-cmp-row > b.is-lead { color: var(--text-primary); font-weight: 800; }
.nbt-pg-bar { height: 8px; border-radius: 4px; background: var(--border-color); overflow: hidden; display: flex; }
.nbt-pg-bar.is-away { justify-content: flex-end; }
.nbt-pg-bar i { display: block; height: 100%; border-radius: 4px; }
.nbt-pg-bar.is-away i { background: #8a6a4f; }
.nbt-pg-bar.is-home i { background: #f5811f; }
.nbt-pg-lrow { margin-bottom: 8px; }
.nbt-pg-lcat { font-size: 11.5px; color: var(--text-secondary); font-weight: 700; margin-bottom: 4px; }
.nbt-pg-lpair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.nbt-pg-leader { display: flex; align-items: center; gap: 6px; min-width: 0; background: var(--bg-page, rgba(0,0,0,.03)); border-radius: 9px; padding: 6px 8px; }
.nbt-pg-leader img { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; flex: none; background: var(--border-color); }
.nbt-pg-leader span { flex: 1; min-width: 0; font-size: 12px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nbt-pg-leader b { font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums; }
.nbt-pg-msum { font-size: 13px; font-weight: 800; color: #e0701a; margin: -2px 0 8px; }
.nbt-pg-meet { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; padding: 6px 0; border-top: 1px solid var(--border-color); font-variant-numeric: tabular-nums; color: var(--text-secondary); }
.nbt-pg-meet em { font-style: normal; }
.nbt-pg-meet em.is-win { color: var(--text-primary); font-weight: 800; }
.nbt-pg-post { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-top: 1px solid var(--border-color); color: var(--text-primary); text-decoration: none; font-size: 13px; }
.nbt-pg-post span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nbt-pg-post b { flex: none; min-width: 18px; padding: 1px 5px; border-radius: 6px; background: rgba(245,129,31,.14); color: #e0701a; font-size: 11px; text-align: center; }
.nbt-pg-post:hover span { text-decoration: underline; }
.nbt-pg-empty { font-size: 12.5px; color: var(--text-secondary); text-align: center; line-height: 1.6; padding: 18px 0; }
.nbt-pg-dots { display: flex; justify-content: center; gap: 6px; padding-top: 8px; }
.nbt-pg-dot { width: 7px; height: 7px; border-radius: 50%; border: none; padding: 0; background: var(--border-color); cursor: pointer; transition: width .2s, background .2s; }
.nbt-pg-dot.is-on { width: 18px; border-radius: 4px; background: #f5811f; }
.nbt-pg-arrow { position: absolute; top: calc(50% - 20px); width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--border-color); background: var(--bg-body); color: var(--text-primary); font-size: 11px; cursor: pointer; display: none; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0,0,0,.15); z-index: 2; }
.nbt-pg-arrow.is-prev { left: 4px; }
.nbt-pg-arrow.is-next { right: 4px; }
.nbt-pg-arrow:disabled { opacity: 0; pointer-events: none; }
@media (hover: hover) { .nbt-pg:hover .nbt-pg-arrow { display: flex; } }
@media (prefers-reduced-motion: reduce) { .nbt-pg-pulse { animation: none; } }
/* 모바일 바텀시트(반 단계는 카드 높이가 170px 남짓)에서도 첫 카드가 한 화면에 들어가게 촘촘하게.
   내용이 넘쳐도 위가 잘리지 않게 safe center */
.nbt-pg-intro { justify-content: safe center; }
.nbt-pg-card { scrollbar-width: thin; }
.nbt-live-panel.is-sheet .nbt-pg { padding-top: 8px; }
.nbt-live-panel.is-sheet .nbt-pg-card { padding: 10px 12px; }
.nbt-live-panel.is-sheet .nbt-pg-intro { gap: 3px; }
.nbt-live-panel.is-sheet .nbt-pg-badge { padding: 3px 10px; font-size: 12px; }
.nbt-live-panel.is-sheet .nbt-pg-matchup { margin: 2px 0 0; }
.nbt-live-panel.is-sheet .nbt-pg-matchup .nbt-pg-logo { width: 28px; height: 28px; }
.nbt-live-panel.is-sheet .nbt-pg-tip { font-size: 17px; }
.nbt-live-panel.is-sheet .nbt-pg-note { margin-top: 0; }
.nbt-live-panel.is-sheet .nbt-pg-hint { display: none; } /* 시트에선 아래 점(넘기기 표시)으로 충분 */
.nbt-live-panel.is-sheet.sheet-half .nbt-pg-note { display: none; } /* 반 시트는 높이가 낮아 안내 문구 생략(위 머리에 경기 시작 전 표시가 있음) */

/* 2026-10-15: 경기 중 LIVE 점 색만 주황 -> 밝은 초록(형 요청: 원목 바닥과 겹쳐 잘 안 보임). 모양/크기/깜빡임은 원래 그대로 -
   위 nbtLiveDot과 똑같은 움직임에 색만 바꾼 키프레임. 경기 전 카드의 주황 점(nbtLiveDot)은 그대로 */
.nbt-live-panel.is-live .nbt-live-panel-status::before,
.nbt-live-panel.is-live .nbt-live-peek-status::before { background: #3dff6e; animation-name: nbtLiveDotGreen; }
@keyframes nbtLiveDotGreen { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(61,255,110,.6); } 50% { opacity: .45; box-shadow: 0 0 0 4px rgba(61,255,110,0); } }

/* ===== 2026-10-15: 소리 버튼 + ⚙ 설정 메뉴(휴대폰/PIP) + 갱신 숫자를 동그라미 안으로(형 요청) =====
   PC(붙박이)는 자리가 넉넉해서 버튼을 그대로 펼쳐 두고 소리 버튼만 추가. 휴대폰 시트/PIP는 1줄·2줄/코트 선수/효과/소리를
   ⚙ 메뉴 하나로 모으고, "N초 후 갱신" 글자 대신 동그라미 안 숫자만 - 가운데 시간이 늘 정중앙에 넉넉하게 */
.nbt-live-sound-toggle, .nbt-live-settings-btn {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer; margin-left: 4px;
	background: rgba(255,255,255,.14); color: #fff; font-size: 11px; line-height: 1;
	display: flex; align-items: center; justify-content: center;
}
.nbt-live-sound-toggle:hover, .nbt-live-settings-btn:hover { background: rgba(255,255,255,.22); }
.nbt-live-sound-toggle[aria-pressed="true"], .nbt-live-settings-btn[aria-expanded="true"] { color: #ffc94d; }
.nbt-live-settings-btn { display: none; margin-left: 0; width: 26px; height: 24px; font-size: 13px; }
/* 2026-10-29(형 요청): PC도 휴대폰과 똑같이 ⚙ 하나만 - 나머지 버튼은 숨겨 두고 메뉴가 대신 눌러줌. 승률 그래프 버튼은 메뉴 전용 */
.nbt-live-panel .nbt-live-settings-btn { display: flex; }
.nbt-live-panel .nbt-live-mode-toggle, .nbt-live-panel .nbt-live-oncourt-toggle, .nbt-live-panel .nbt-live-pbp-toggle,
.nbt-live-panel .nbt-live-fx-toggle, .nbt-live-panel .nbt-live-sound-toggle, .nbt-live-panel .nbt-live-wp-toggle { display: none; }
.nbt-live-panel.nbt-wp-off .nbt-wp-live { display: none !important; }
.nbt-live-settings-menu {
	position: absolute; z-index: 40; min-width: 190px; padding: 6px; border-radius: 12px; box-sizing: border-box;
	background: var(--bg-body, #fff); color: var(--text-primary, #222); border: 1px solid var(--border-color, #ddd);
	box-shadow: 0 10px 28px rgba(0,0,0,.28);
}
.nbt-live-settings-item {
	display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 8px; box-sizing: border-box;
	color: inherit; font-size: 13.5px; font-weight: 600; text-align: left;
}
.nbt-live-settings-item i { width: 18px; text-align: center; font-size: 14px; color: #e0701a; flex: none; }
.nbt-live-settings-label { flex: 1; }
.nbt-live-settings-switch { position: relative; width: 34px; height: 19px; padding: 0; border: 0; border-radius: 999px; background: var(--border-color, #ccc); flex: none; cursor: pointer; transition: background .15s; }
.nbt-live-settings-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.3); transition: transform .15s; }
.nbt-live-settings-switch[aria-checked="true"] { background: #f5811f; }
.nbt-live-settings-switch[aria-checked="true"]::after { transform: translateX(15px); }
.nbt-live-settings-close {
	display: block; width: 100%; margin-top: 4px; padding: 9px 0; border: 0; border-top: 1px solid var(--border-color, #e5e5e5);
	border-radius: 0 0 8px 8px; background: transparent; color: var(--text-secondary, #666); font-size: 13px; font-weight: 700; cursor: pointer;
}
.nbt-live-settings-close:hover { color: var(--text-primary, #222); }
/* 갱신 남은 초: 휴대폰/PIP에선 "N초 후 갱신" 글자 대신 동그라미 안 숫자만 */
.nbt-live-refresh-ringwrap { position: relative; display: inline-flex; flex: none; }
.nbt-live-refresh-ringnum { display: none; position: absolute; inset: 0; align-items: center; justify-content: center; font-size: 9.5px; line-height: 1; }
.nbt-live-panel.is-sheet .nbt-live-refresh-text, .nbt-live-panel.is-pip .nbt-live-refresh-text { display: none; }
.nbt-live-panel.is-sheet .nbt-live-refresh-ringnum, .nbt-live-panel.is-pip .nbt-live-refresh-ringnum { display: flex; }
.nbt-live-panel.is-sheet .nbt-live-refresh-ring, .nbt-live-panel.is-pip .nbt-live-refresh-ring { width: 20px; height: 20px; }

/* 2026-10-15: 중계 줄의 선수 이름 강조(형 요청) - 1px 크게(12 -> 13px) + 굵게, 글자는 기본 글자색(라이트=검정).
   2026-10-18: 이름 앞 팀 색 막대는 뺌(형 요청 - 이용자가 헷갈릴 수 있음) */
.nbt-live-play-name { display: block; font-size: 13px; font-weight: 700; color: var(--text-primary); }

/* 2026-10-19: 슛 장면 애니메이션(시험 - dachshund 계정만, live_panel.js의 shotviz*). 오후(형 요청): 탭/겹쳐 뜨는 방식 없앰 -
   '코트 위 선수' 바로 위에 항상 붙고, Play-By-Play 버튼(PC 머리줄)·⚙ 메뉴(휴대폰/PIP)로 켜고 끔 */
.nbt-sv-host { border-radius: 10px; overflow: hidden; background: #000; margin: 6px 0 4px; }
/* 휴대폰 아래 패널: 반만 올린 상태는 높이가 낮아(375x812에서 슛 장면 208px면 기록이 24px만 남음) '코트 위 선수'처럼 숨기고, 끝까지 올리면 보임 */
.nbt-live-panel.is-sheet.sheet-peek .nbt-sv-host, .nbt-live-panel.is-sheet.sheet-half .nbt-sv-host { display: none !important; }
/* 2026-10-19(형 요청 - 휴대폰에서 끝까지 올려도 기록이 거의 안 보임): 휴대폰 아래 패널을 끝까지 올리고 Play-By-Play가 켜져 있으면
   코트 위 선수는 팀마다 얼굴 5개 + 성 한 줄로 작게(점수를 슛 장면 위로 옮겼던 것은 형 요청으로 원복) */
/* 2026-10-29(형 요청): PC/PIP도 휴대폰처럼 - 팀마다 다섯 명을 한 줄에 얼굴+이름(작게). 세로 5줄 목록이 중계 칸을 너무 많이 먹었음 */
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt, .nbt-live-panel:not(.is-sheet) .nbt-live-oncourt { gap: 10px; padding: 0 2px 4px; }
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt-col, .nbt-live-panel:not(.is-sheet) .nbt-live-oncourt-col { flex-direction: row; gap: 2px; }
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt-player, .nbt-live-panel:not(.is-sheet) .nbt-live-oncourt-player { flex: 1 1 0; flex-direction: column; gap: 2px; }
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt-photo, .nbt-live-panel:not(.is-sheet) .nbt-live-oncourt-photo { width: 26px; height: 26px; }
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt-name, .nbt-live-panel:not(.is-sheet) .nbt-live-oncourt-name { display: none; }
.nbt-live-panel:not(.is-sheet) .nbt-live-oncourt-short,
.nbt-live-panel.is-sheet.sheet-full.nbt-pbp-on .nbt-live-oncourt-short { display: block; max-width: 100%; font-size: 10.5px; line-height: 1.2; color: #fff; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 2026-10-19(형 요청): 슛 장면이 나오는 동안 코트 위 선수 목록에서 슛한 선수 강조 - 사진에 노란 테두리, 이름 노랗고 굵게 */
.nbt-live-oncourt-player.is-shooting .nbt-live-oncourt-photo { box-shadow: 0 0 0 2px #ffd65a, 0 0 8px rgba(255,214,90,.8); }
.nbt-live-oncourt-player.is-shooting .nbt-live-oncourt-name,
.nbt-live-oncourt-player.is-shooting .nbt-live-oncourt-short { color: #ffd65a; font-weight: 800; }
.nbt-live-pbp-toggle {
	flex: none; width: 22px; height: 22px; border-radius: 6px; border: none; cursor: pointer; margin-left: 4px;
	background: rgba(255,255,255,.14); color: #fff; font-size: 11px; line-height: 1;
}
.nbt-live-pbp-toggle:hover { background: rgba(255,255,255,.22); }
.nbt-live-pbp-toggle[aria-pressed="true"] { color: #ff9a3c; }
.nbt-live-panel.is-sheet .nbt-live-pbp-toggle, .nbt-live-panel.is-pip .nbt-live-pbp-toggle { display: none; }
.nbt-live-has-shot { cursor: pointer; }
.nbt-live-has-shot .nbt-live-play-meta::after { content: ' ▶'; font-size: 9px; opacity: .6; }
/* 2026-10-29: 경기 상태를 맨 위 시간 옆에(형 요청) - "4Q 9:51 플레이 중". 플레이 중=초록, 휘슬로 멈춤/작전타임/쉬는 시간=노랑.
   시간 앞 점도 같은 색(모양/깜빡임은 그대로, 색만). 좁으면 상태 글자가 말줄임 */
.nbt-live-status-wrap { flex: 0 1 auto; min-width: 0; display: flex; align-items: center; gap: 5px; margin: 0 6px; }
.nbt-live-status-wrap .nbt-live-panel-status { flex: none; margin: 0; }
.nbt-live-panel-sit {
	flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
	font-size: 11px; font-weight: 800; color: #69f08a; text-shadow: 0 1px 3px rgba(0,0,0,.55);
}
.nbt-live-panel-sit[hidden] { display: none; }
.nbt-live-panel[data-sit="stop"] .nbt-live-panel-sit { color: #ffd43b; }
.nbt-live-panel.is-live[data-sit="stop"] .nbt-live-panel-status::before,
.nbt-live-panel.is-live[data-sit="stop"] .nbt-live-peek-status::before { background: #ffd43b; animation-name: nbtLiveDotYellow; }
@keyframes nbtLiveDotYellow { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(255,212,59,.6); } 50% { opacity: .45; box-shadow: 0 0 0 4px rgba(255,212,59,0); } }
/* 2026-10-29: PC도 "N초 후 갱신" 글자 대신 동그라미 안 숫자만(상태 글자가 들어가면서 글자가 두 줄로 꺾였음). 양옆 묶음은 같은 폭으로
   늘어나되 오른쪽 버튼(동그라미+PIP+닫기 = 76px)보다 줄지 않게 - 좁은 폰에서 가운데 글자가 버튼을 덮지 않고 말줄임으로 줄어듦 */
.nbt-live-panel .nbt-live-refresh-text { display: none; }
.nbt-live-panel .nbt-live-refresh-ringnum { display: flex; }
.nbt-live-panel .nbt-live-refresh-ring { width: 20px; height: 20px; }
.nbt-live-panel .nbt-live-head-left, .nbt-live-panel .nbt-live-head-right { flex: 1 0 0; min-width: 76px; }
/* 아주 좁은 폰(머리줄 270px 이하)에선 상태 글자가 한두 글자만 남아 오히려 헷갈려서 숨김 - 시간 앞 점 색(초록/노랑)으로만 표시 */
.nbt-live-panel-head-top { container-type: inline-size; }
@container (max-width: 270px) { .nbt-live-panel-sit { display: none; } }
