/* ── 라이브 대시보드 패널 (서비스선택창 · login.html) ─────────────────────────
   기본(<1200px): 등록현황(reg-panel)과 동일하게 왼쪽 열 footer 아래로 펼쳐짐
   ≥1200px     : body.has-live 시 세번째 열(col-live)로 확장
                 (live-board.js 가 matchMedia 로 패널 DOM 을 슬롯↔열 사이로 이동) */

.live-panel {
    background: #fff;
    border-radius: 10px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
    max-width: 460px;
    margin: 0 auto;
    padding: 0 14px;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: opacity 0.3s ease;
    width: 100%;
    box-sizing: border-box;
}
.live-panel.open {
    max-height: none;
    opacity: 1;
    margin-top: 10px;
    padding-top: 12px;
    padding-bottom: 14px;
}
/* 좁은 화면: 슬롯은 flex(order) 배치 — reg-panel(5) 다음 */
.select-columns .live-panel-slot { order: 6; width: 100%; min-width: 0; }
.select-columns > .col-live { display: contents; }
.live-panel-slot .live-panel { scroll-margin-top: calc(env(safe-area-inset-top, 0px) + 8px); }

/* LIVE 버튼 열림 상태 */
.select-footer .live-btn.active { background: #e04050; color: #fff; border-color: #e04050; }
.select-footer .live-btn.active .live-dot { background: #fff; }

/* LIVE 점 펄스는 진행 중인 경기가 있을 때(body.live-on)만 — 상시 CSS 애니메이션 제거로 리소스 절약
   (login.html 인라인 .live-dot 규칙이 이 파일보다 나중에 로드되므로 body 셀렉터로 특이도 확보) */
body:not(.live-on) .live-dot { animation: none; opacity: 0.45; }
body.live-on .live-dot { animation: live-pulse 1.5s ease-in-out infinite; opacity: 1; }

/* 라이브 아닐 때: LIVE 버튼·패널 타이틀도 탁하고 어두운 색으로 */
body:not(.live-on) .select-footer .live-btn {
    background: #e5d8d9;
    color: #85575e;
    border-color: #cfbfc1;
}
body:not(.live-on) .select-footer .live-btn:hover {
    background: #dbcbcd;
    color: #744b51;
}
body:not(.live-on) .select-footer .live-btn.active {
    background: #85575e;
    border-color: #85575e;
    color: #fff;
}
body:not(.live-on) .live-panel-title { color: #85575e; }

@media (min-width: 1200px) {
    body:not(.is-login) .page-wrapper { transition: max-width 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
    body.has-live:not(.is-login) .page-wrapper { max-width: 1182px; }
    .select-columns > .col-live {
        display: flex;
        flex-direction: column;
        flex: 0 0 0px;
        width: 0;
        min-width: 0;
        margin-left: -24px; /* 닫힘 상태에서 flex gap 24px 상쇄 → 기존 2열 배치 그대로 */
        overflow: hidden;
        opacity: 0;
        pointer-events: none;
        transition: flex-basis 0.4s cubic-bezier(0.4, 0, 0.2, 1), width 0.4s cubic-bezier(0.4, 0, 0.2, 1),
                    margin-left 0.4s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s ease,
                    transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
        will-change: transform;
    }
    body.no-col-anim .select-columns > .col-live { transition: none !important; }
    body.has-live .select-columns > .col-live {
        flex-basis: 390px;
        width: 390px;
        margin-left: 0;
        opacity: 1;
        pointer-events: auto;
    }
    /* 라이브만 열림(선수 미선택): 좌측 패널(+207px)과 대칭으로 -207px 당겨 둘을 가운데 정렬
       (가운데의 col-right 는 opacity 0 이므로 겹쳐도 무방 — 기존 col-left 트릭과 동일) */
    body.has-live:not(.has-tracking) .select-columns > .col-live { transform: translateX(-207px); }
    /* 열 배치 시: 열 폭 고정 사용(폭 전환 중 내용이 찌그러지지 않고 슬라이드 노출)
       + 열 자체가 접히므로 패널은 항상 펼침 상태 유지(닫힘 애니메이션 중 내용이 먼저 사라지는 것 방지) */
    .select-columns > .col-live .live-panel {
        max-width: none;
        width: 390px;
        margin: 0;
        max-height: none;
        opacity: 1;
        padding-top: 12px;
        padding-bottom: 14px;
    }
}

/* ── 패널 내부 ── */
.live-panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.live-panel-title {
    font-size: 13px;
    font-weight: 700;
    color: #e04050;
    white-space: nowrap;
}
.lv-updated { font-size: 9px; font-weight: 500; color: #999; margin-left: 6px; }
.lv-refresh {
    width: 20px;
    height: 20px;
    margin-left: 6px;
    border: 1px solid #cfd8e3;
    border-radius: 4px;
    background: #fff;
    color: #555;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    vertical-align: middle;
}
.lv-refresh:hover { background: #eef2f7; color: #333; }
.lv-refresh.spin svg { animation: lv-spin 0.9s linear; }
@keyframes lv-spin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
/* 날짜 이동: 커스텀 버튼 + 단일 선택 달력 (기간 달력 pcal 과 동일한 외형 — 모바일에서도 동일) */
.lv-date-nav { position: relative; display: inline-flex; align-items: center; gap: 4px; }
.lv-date-nav .lv-date-step {
    width: 24px;
    height: 24px;
    font-size: 13px;
    line-height: 1;
    color: var(--lv-accent, #1D467D);
    background: #fff;
    border: 1px solid #cfd8e3;
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
}
.lv-date-nav .lv-date-step:hover { background: #eef2f7; }
.lv-date-nav .lv-date-trigger {
    height: 24px;
    font-size: 11px;
    font-weight: 600;
    color: #555;
    background: #fff;
    border: 1px solid #cfd8e3;
    border-radius: 4px;
    cursor: pointer;
    padding: 0 8px;
    letter-spacing: 0.2px;
}
.lv-date-nav .lv-date-trigger:hover { border-color: var(--lv-accent, #1D467D); color: var(--lv-accent, #1D467D); }
.lv-date-nav input[type='date'] { display: none; }
/* 단일 날짜 달력 (pcal 외형 복제) */
.lv-cal-wrap { position: relative; display: inline-flex; }
.lv-cal-panel {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    z-index: 10000;
    margin-top: 4px;
    background: #fff;
    border: 1px solid #cfd8e3;
    border-radius: 6px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.16);
    padding: 8px;
    min-width: 224px;
    box-sizing: border-box;
}
.lv-cal-wrap.open .lv-cal-panel { display: block; }
.lv-cal-head { display: flex; align-items: center; gap: 3px; margin-bottom: 6px; }
.lv-cal-title { flex: 1; text-align: center; font-size: 12px; font-weight: 700; color: var(--lv-accent, #1D467D); }
.lv-cal-nav {
    border: 1px solid #cfd8e3;
    background: #fff;
    border-radius: 4px;
    width: 22px;
    height: 22px;
    cursor: pointer;
    color: var(--lv-accent, #1D467D);
    line-height: 1;
    padding: 0;
}
.lv-cal-nav:hover { background: #eef2f7; }
.lv-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.lv-cal-wd { font-size: 10px; color: #8c97a8; text-align: center; padding: 2px 0; }
.lv-cal-day { font-size: 11px; text-align: center; padding: 5px 0; cursor: pointer; border-radius: 4px; color: #333; }
.lv-cal-day.empty { visibility: hidden; cursor: default; }
.lv-cal-day:hover:not(.empty) { background: #eef2f7; }
.lv-cal-day.end { background: var(--lv-accent, #1D467D); color: #fff; }
.lv-cal-foot { margin-top: 6px; padding-top: 6px; border-top: 1px solid #eef1f5; display: flex; }
.lv-cal-today {
    flex: 1;
    padding: 5px 0;
    font-size: 11px;
    font-weight: 600;
    color: var(--lv-accent, #1D467D);
    background: #fff;
    border: 1px solid #cfd8e3;
    border-radius: 4px;
    cursor: pointer;
}
.lv-cal-today:hover { background: #eef2f7; }
/* 경기 선택: 등록현황과 동일한 커스텀 드롭다운 (reg-cselect 스타일 재사용) */
.lv-game-row { margin-bottom: 8px; }
.lv-game-cselect { display: flex; width: 100%; }
.lv-game-cselect .reg-trigger { flex: 1 1 auto; text-align: center; }
.lv-game-cselect .reg-dd-panel { left: 0; right: 0; }
.lv-msg {
    text-align: center;
    font-size: 11px;
    color: #888;
    padding: 14px 6px;
}
.lv-msg.lv-error { color: #c82333; }

/* 스코어 헤더 */
.lv-scorehead {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    padding: 8px 6px;
    background: #f8f9fa;
    border-radius: 8px;
}
/* 팀 표기: [원정 엠블럼][점수] ... [점수][홈 엠블럼] */
.lv-scorehead .lv-team {
    flex: 1 1 0;
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.lv-scorehead .lv-team.away { justify-content: flex-start; padding-left: 10px; }
.lv-scorehead .lv-team.home { justify-content: flex-end; padding-right: 10px; }
.lv-scorehead .lv-emblem {
    width: 38px;
    height: 38px;
    object-fit: contain;
}
.lv-scorehead .lv-team-score {
    font-size: 26px;
    font-weight: 800;
    color: #1f2d3d;
    line-height: 1.1;
}
.lv-scorehead .lv-status {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
    min-width: 64px;
}
.lv-scorehead .lv-status .st-main { font-size: 12px; font-weight: 700; color: #e04050; white-space: nowrap; }
.lv-scorehead .lv-status .st-main.st-idle { color: #555; }
.lv-scorehead .lv-status .st-sub { font-size: 10px; color: #888; white-space: nowrap; }

/* 이닝 스코어보드 */
.lv-board-scroll { width: 100%; overflow-x: auto; margin-top: 8px; scrollbar-width: thin; }
.lv-board {
    border-collapse: collapse;
    width: 100%;
    font-size: 10px;
    text-align: center;
    white-space: nowrap;
}
.lv-board th, .lv-board td { padding: 3px 4px; min-width: 18px; border-bottom: 1px solid #f0f0f0; }
.lv-board thead th { color: #8a94a6; font-weight: 600; background: #fff; border-bottom: 1px solid #e3e8ef; }
.lv-board td { color: #333; }
.lv-board .lv-rowteam { font-weight: 700; color: var(--lv-team, #555); text-align: left; padding-right: 6px; position: sticky; left: 0; background: #fff; }
.lv-board th.rheb, .lv-board td.rheb { color: var(--lv-accent, #1D467D); font-weight: 700; border-left: 1px solid #e3e8ef; }
.lv-board td.dim { color: #ccc; }

/* 승리확률 바 + 그래프 (근사 모델) */
#lv-wp { margin-top: 8px; }
.lv-wp-bar { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.lv-wp-bar .wp-lbl { font-size: 10px; font-weight: 700; min-width: 30px; text-align: center; }
.lv-wp-bar .wp-track {
    flex: 1 1 0;
    display: flex;
    height: 10px;
    border-radius: 5px;
    overflow: hidden;
    background: #eef1f5;
}
.lv-wp-bar .wp-track i { height: 100%; transition: width 0.6s ease; }
/* 두 팀 구간 경계 구분선 — 비슷한 팀색(남색 계열 등)끼리도 경계가 보이게 */
.lv-wp-bar .wp-track i:first-child {
    border-right: 2px solid #fff;
    box-sizing: border-box;
}
.lv-wp-toggle {
    width: 20px;
    height: 20px;
    border: 1px solid #cfd8e3;
    border-radius: 4px;
    background: #fff;
    color: #555;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    cursor: pointer;
    flex: 0 0 auto;
}
.lv-wp-toggle:hover { background: #eef2f7; }
.lv-wp-toggle svg { transition: transform 0.25s ease; }
.lv-wp-toggle.open svg { transform: rotate(180deg); }
.lv-wp-graph { margin-top: 6px; border: 1px solid #e3e8ef; border-radius: 8px; padding: 4px; }
.lv-wp-svg { width: 100%; height: auto; display: block; cursor: crosshair; touch-action: pan-y; }
/* 드래그 구간 상황 나열 (최대 20줄) */
.lv-wp-list { border-top: 1px solid #f0f2f5; margin-top: 3px; padding-top: 3px; }
.lv-wp-item {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    font-size: 10px;
    color: #555;
    padding: 2px 4px;
    border-radius: 3px;
}
.lv-wp-item:nth-child(even) { background: #f8f9fa; }
.lv-wp-list .lv-wp-item.imp { background: #fdf3f4; }   /* 주요 순간 행 — 연한 빨강 */
.lv-wp-item.top { cursor: pointer; }                    /* TOP 행 클릭 → 이닝 전체 플레이 펼침 */
.lv-wp-item.top:hover { background: #fae6e9; }
.lv-wp-item.top.open { border-bottom: 1px dashed #e8b9bf; }
.lv-wp-item.sub { padding-left: 20px; color: #778; }    /* 펼쳐진 이닝 플레이 행 */
.lv-wp-cap .lv-wp-hint { font-weight: 400; color: #a6adba; white-space: nowrap; }   /* 캡션 오른쪽 안내 */
.lv-wp-item > span { min-width: 0; }
.lv-wp-item b { white-space: nowrap; }
/* 주요 순간 TOP 라벨: 순위·투구/타격은 고정, "N회초 · …"만 넘치면 좌우 슬라이드 */
.lv-wp-lbl { display: flex; align-items: center; gap: 2px; min-width: 0; flex: 1 1 auto; overflow: hidden; }
.lv-wp-lbl > b { flex: 0 0 auto; }
.lv-wp-mq { flex: 1 1 auto; min-width: 0; overflow: hidden; }
.lv-wp-mq-in { display: inline-block; white-space: nowrap; }
/* 펼침·드래그 구간 줄의 "N회초/말" 프리픽스 (MVP 서브행과 동일 톤) */
.lv-wp-item .lv-wp-inn { color: #a6adba; font-style: normal; margin-right: 5px; white-space: nowrap; }
.lv-wp-more { font-size: 9.5px; color: #999; text-align: center; padding: 3px 0 1px; }
.lv-wp-cap {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    font-size: 9.5px;
    font-weight: 700;
    color: #e04050;
    padding: 2px 4px 3px;
}
.lv-wp-reset {
    font-size: 9px;
    font-weight: 700;
    color: #fff;
    background: #e04050;   /* 주요 순간 마커·뱃지와 동일한 포인트 색 — 눈에 띄게 */
    border: 1px solid #e04050;
    border-radius: 4px;
    padding: 1px 7px;
    cursor: pointer;
    white-space: nowrap;
    flex: 0 0 auto;
}
.lv-wp-reset:hover { background: #c72f3f; border-color: #c72f3f; }
.lv-wp-item .no {
    color: #fff;
    background: #e04050;
    border-radius: 3px;
    padding: 0 4px;
    font-size: 9px;
    margin-right: 2px;
}
.lv-wp-info {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    font-size: 10px;
    color: #555;
    padding: 4px 4px 1px;
    border-top: 1px solid #f0f2f5;
    margin-top: 3px;
}
.lv-wp-info b { white-space: nowrap; }

/* MVP 후보 (승리확률 기여 WPA) */
.lv-mvp-box { margin-top: 6px; border: 1px solid #e3e8ef; border-radius: 8px; padding: 4px 6px 5px; }
.lv-mvp-cap {
    display: flex;
    justify-content: space-between;   /* 캡션 우측에 '승리확률 추정' 만 오른쪽 정렬 */
    align-items: baseline;
    gap: 8px;
    font-size: 9.5px;
    font-weight: 700;
    color: #c8940a;
    padding: 1px 2px 4px;
}
.lv-mvp-cap .lv-mvp-hint { font-weight: 400; color: #a6adba; }
.lv-mvp-item {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    font-size: 10px;
    padding: 2px 3px;
    border-radius: 3px;
    cursor: pointer;
}
.lv-mvp-item:hover { background: #fbf5e6; }
.lv-mvp-item.open { border-bottom: 1px dashed #ecd9a6; }
.lv-mvp-main { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
.lv-mvp-no {
    flex: 0 0 auto;
    color: #fff;
    border-radius: 3px;
    padding: 0 5px;
    font-size: 9px;
    font-weight: 700;
    align-self: center;
}
.lv-mvp-name { font-weight: 700; white-space: nowrap; flex: 0 0 auto; }
.lv-mvp-name:hover { text-decoration: underline; }
.lv-mvp-pos { color: #a6adba; font-weight: 400; font-size: 8.5px; margin-left: 3px; }
.lv-mvp-line { color: #778; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 0 1 auto; min-width: 0; }
.lv-mvp-wpa { flex: 0 0 auto; color: #c8940a; white-space: nowrap; }
.lv-mvp-sub {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    font-size: 9.5px;
    color: #778;
    padding: 1px 4px 1px 24px;
}
.lv-mvp-sub b { white-space: nowrap; }
.lv-mvp-sub .lv-mvp-inn { color: #a6adba; font-style: normal; margin-right: 5px; white-space: nowrap; }

/* 현재 상황 (수비 배치 필드·주자·BSO·매치업) */
.lv-now {
    display: block;
    margin-top: 8px;
    padding: 8px 10px;
    border: 1px solid #e3e8ef;
    border-radius: 8px;
}
.lv-field { width: 100%; height: auto; display: block; border-radius: 8px; }   /* 잔디가 꽉 차므로 모서리 둥글게 */
.lv-field text.lv-pl { cursor: pointer; }
.lv-now-bottom {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid #f0f2f5;
}
.lv-bso { display: flex; flex-direction: column; gap: 3px; flex: 0 0 auto; }
.lv-bso .bso-row { display: flex; align-items: center; gap: 3px; }
.lv-bso .lbl { font-size: 9px; font-weight: 700; color: #8a94a6; width: 10px; }
.lv-bso i { width: 8px; height: 8px; border-radius: 50%; background: #e3e8ef; }
.lv-bso .bso-row.b i.on { background: #1e9e4a; }
.lv-bso .bso-row.s i.on { background: #f2b705; }
.lv-bso .bso-row.o i.on { background: #e04050; }
.lv-matchup { flex: 1 1 0; min-width: 0; font-size: 11px; color: #333; display: flex; flex-direction: column; gap: 3px; }
.lv-matchup .mrow { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
/* 투수/타자 라벨 배경은 JS 가 각 소속팀 색으로 인라인 지정 (아래는 fallback) */
.lv-matchup .mlbl { font-size: 9px; font-weight: 700; color: #fff; background: #1D467D; border-radius: 3px; padding: 1px 5px; flex: 0 0 auto; }
.lv-matchup .mval { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 이름 줄(라벨+이름) 아래에 스탯 줄이 왼쪽 끝부터 시작 — 모바일에서 잘림 최소화 */
.lv-matchup .mline { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
.lv-matchup .mstat { font-size: 9px; font-weight: 600; color: #8a94a6; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* (투구 위치 표시는 구장 그림 우하단 미니 스트라이크존으로 — renderNow 내 인라인 SVG) */

/* 탭 (중계/타자/투수) */
.lv-tabs {
    display: flex;
    margin-top: 10px;
    border: 1px solid #e3e8ef;
    border-radius: 6px;
    overflow: hidden;
}
.lv-tabs button {
    flex: 1 1 0;
    font-size: 11px;
    font-weight: 600;
    color: #555;
    background: #f8f9fa;
    border: none;
    border-right: 1px solid #e3e8ef;
    padding: 6px 0;
    cursor: pointer;
}
.lv-tabs button:last-child { border-right: none; }
.lv-tabs button.active { background: var(--lv-accent, #1D467D); color: #fff; }

/* 문자중계 */
.lv-texts {
    margin-top: 8px;
    max-height: 440px;
    overflow-y: auto;
    scrollbar-width: thin;
    display: flex;
    flex-direction: column;
    gap: 3px;
    /* 리스트가 맨 위/아래 끝에 닿으면 스크롤이 페이지 전체로 이어지게 (overscroll contain 해제) */
    overscroll-behavior: auto;
}
.col-live .lv-texts { max-height: calc(100vh - 420px); min-height: 260px; }
/* 이닝 구분 헤더: 공격팀 색 (연한 배경 + 팀색 글자, 등록현황 reg-player 와 동일 방식) */
.lv-text-inn {
    font-size: 10px;
    font-weight: 700;
    color: var(--lv-team, var(--lv-accent, #1D467D));
    background: color-mix(in srgb, var(--lv-team, var(--lv-accent, #1D467D)) 10%, #fff);
    border-radius: 4px;
    padding: 3px 8px;
    margin-top: 4px;
}
.lv-text-item {
    font-size: 11px;
    color: #555;
    line-height: 1.45;
    padding: 2px 6px;
    border-radius: 4px;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
}
.lv-text-item.em { color: #1f2d3d; font-weight: 700; background: #f8f9fa; }
.lv-text-item.hl { color: #c82333; background: #fdf3f4; }
.lv-text-item.bat-ann { color: var(--lv-team, var(--lv-accent, #1D467D)); font-weight: 600; margin-top: 4px; }
.lv-text-item.sys { color: #888; font-size: 10px; }
/* 줄 클릭 → 그 시점 상황 보기 */
.lv-texts .lv-text-item[data-i] { cursor: pointer; }
.lv-texts .lv-text-item[data-i]:hover { background: #eef2f7; }
.lv-texts .lv-text-item.sel { box-shadow: inset 0 0 0 1.5px var(--lv-accent, #1D467D); background: #eef2f7; }
/* 구종·구속 표기 — 줄 오른쪽 끝 정렬 */
.lv-pt { color: #98a3b3; font-weight: 600; font-size: 10px; margin-left: auto; flex: 0 0 auto; white-space: nowrap; }
.lv-text-item.em .lv-pt, .lv-text-item.hl .lv-pt { font-weight: 600; }
/* 구장화면 스냅샷 바 + 최근 투구 */
.lv-snap-bar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 10px;
    font-weight: 700;
    color: #555;
    margin-bottom: 4px;
}
.lv-snap-bar button {
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    background: #e04050;
    border: none;
    border-radius: 4px;
    padding: 2px 8px;
    cursor: pointer;
}
.lv-snap-bar button:hover { background: #d63344; }
.lv-lastpitch {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 1px;
    font-size: 10px;
    color: #555;
    font-weight: 600;
    margin-left: auto;
    white-space: nowrap;
}
.lv-lastpitch b { color: #1f2d3d; }
.lv-lastpitch .lp-res { font-weight: 700; }
.lv-lastpitch .lp-res.b { color: #1e9e4a; }   /* 볼 */
.lv-lastpitch .lp-res.s { color: #d9a400; }   /* 스트라이크·파울·헛스윙 */
.lv-lastpitch .lp-res.h { color: #e04050; }   /* 타격 */

/* 타자/투수 기록 테이블 */
.lv-rec-team {
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    background: var(--lv-team, #6c757d);
    display: inline-block;
    padding: 2px 8px;
    border-radius: 3px;
    margin: 10px 0 4px;
}
.lv-rec-scroll { width: 100%; overflow-x: auto; scrollbar-width: thin; }
.lv-rec {
    border-collapse: collapse;
    width: 100%;
    font-size: 10px;
    text-align: center;
    white-space: nowrap;
}
.lv-rec th, .lv-rec td { padding: 3px 4px; border-bottom: 1px solid #f0f0f0; }
.lv-rec thead th { color: #8a94a6; font-weight: 600; border-bottom: 1px solid #e3e8ef; }
/* 선수 열은 내용 폭만큼만(width:1% 트릭) — 남는 폭이 이 열에 몰려 타수와 사이가 벌어지는 것 방지 */
.lv-rec td.name { text-align: left; font-weight: 600; color: #333; width: 1%; }
.lv-rec td.name.lv-pl { cursor: pointer; }
.lv-rec td.name.lv-pl:hover { color: var(--lv-accent, #1D467D); text-decoration: underline; }
/* 포지션 나열(대타, 우익, …): 선수명은 절대 줄이지 않고(말줄임 금지),
   포지션 칸만 좁게(최대 42px) 잡아 넘치면 주요 순간 TOP 라벨처럼 좌우 슬라이드 */
.lv-rec td.name .nmline { display: flex; align-items: baseline; }
.lv-rec td.name .nm { flex: 0 0 auto; white-space: nowrap; }
.lv-rec td.name .pos { font-weight: 400; color: #999; font-size: 9px; margin-left: 3px;
    flex: 0 0 auto; max-width: 42px; overflow: hidden; white-space: nowrap; }
.lv-rec td.name .pos .pos-in { display: inline-block; white-space: nowrap; }
.lv-rec td.sub-in { color: #888; }
/* 경기 종료 후 투수 승/패/세/홀 배지 (record/gameresult) */
.lv-rec td.name .lv-wls { display: inline-block; margin-left: 3px; padding: 0 3px; border-radius: 3px;
    font-size: 9px; font-weight: 700; color: #fff; }
.lv-wls-w { background: #2e7d32; }
.lv-wls-l { background: #c62828; }
.lv-wls-s { background: #1565c0; }
.lv-wls-h { background: #7b57ab; }
.lv-empty { font-size: 11px; color: #999; text-align: center; padding: 8px; }
