/* =====================================================================
   C2-SKIN · front.c2 전용 스킨(시안 "sugar" — 다크 베이스 + 핑크 포인트) — 1차(초반) 작업
   -------------------------------------------------------------------
   원칙
   · 이 파일은 App.razor 에서 **가장 마지막** 에 로드된다(전 CSS 위에 덮어쓰기). 다른 css 파일은 s2 원본 무접촉.
   · 색은 :root 토큰(--app-*) 재정의로 한 번에 전환 — 대부분의 컴포넌트가 토큰을 쓰므로 톤이 통째로 바뀐다.
   · 구조 변경이 필요한 곳(사이드바 유저카드·배너·메뉴 라벨)만 SportsSidebar.razor 에 마크업 추가(C2-SKIN 주석).
   · 이미지 자산(로고·배너·아이콘)은 아직 placeholder — 교체 지점은 각 규칙의 주석 참조.
   ===================================================================== */

/* ── 0. 토큰 — 시안 팔레트(BETSIN · 딥퍼플 + 바이올렛 포인트) ─────────
   ⚠️ 값만 바꾼다 — **토큰 이름은 그대로**. 대부분의 컴포넌트가 --app-* 를 쓰므로
      여기 한 블록으로 사이트 전체 톤이 핑크(구 sugar) → 보라로 넘어간다. */
:root {
    --app-primary: #7c4dff;
    --app-primary-light: #a98bff;
    --app-primary-hover: #8f66ff;
    --app-primary-active: #6836e0;
    --app-primary-grad: linear-gradient(180deg, #8b5cff, #6836e0);
    --app-primary-tint: rgba(124, 77, 255, .12);

    --app-text-primary: #ffffff;
    --app-text-secondary: #cabff2;
    --app-text-muted: #9a8cc4;
    --app-text-dim: #6f6394;

    --app-bg-root: #150e2b;
    --app-bg: #1a1236;
    --app-bg-panel: #241a48;
    --app-bg-panel-2: #2c2158;
    --app-bg-panel-3: #372a6b;
    --app-bg-card: rgba(36, 26, 72, .85);

    --app-border: #35275f;
    --app-border-soft: #453473;

    --app-radius-sm: 10px;
    --app-radius-md: 14px;
    --app-radius-lg: 18px;

    /* 시안 카드 테두리 3색(공지/이벤트 썸네일 프레임 — 순환) */
    --sk-frame-1: #8b5cff;
    --sk-frame-2: #22d3ee;
    --sk-frame-3: #ff5fa2;
    --sk-glow: 0 0 0 1px rgba(124, 77, 255, .38), 0 8px 24px rgba(124, 77, 255, .20);
}

/* 배경 = 단색이 아니라 **보라 글로우 2겹 + 세로 그라디언트**(시안의 중앙~우측 발광).
   fixed 첨부라 스크롤해도 글로우가 따라 흐르지 않는다(시안 동일). */
body {
    background:
        radial-gradient(1100px 620px at 50% 22%, rgba(124, 77, 255, .30), transparent 68%),
        radial-gradient(900px 560px at 88% 62%, rgba(168, 85, 247, .18), transparent 70%),
        linear-gradient(180deg, #1c1340 0%, #150e2b 55%, #120b24 100%);
    background-attachment: fixed;
    background-color: var(--app-bg-root);   /* iOS 등 fixed 미지원 폴백 — 빈 배경 방지 */
}

/* ── 1. 헤더 — 레퍼런스(sug13 Header) 규격: sticky · h 80 · bg(--bg-lighten) · 좌 [햄버거 60x60 + 로고 max-h 60] · 우 액션
   한줄공지 티커 = s3 관례대로 헤더 안(브랜드와 액션 사이 · 남는 폭 전부). Row2(사용자·쪽지·보유머니·포인트·통화) = 시안 ③ KRW 블록 톤 */
.pc_header {
    position: sticky; top: 0; z-index: 50;
    background: var(--sk-bg-lighten, #1c1c25);
    border-bottom: 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .35);
}
.pc_header .hdr_row1 {
    height: 80px; min-height: 80px;
    padding: 0 1.25rem;
    display: flex; align-items: center; gap: 12px;
}
/* ② 브랜드 = 햄버거 + 로고 */
.pc_header .sk_hdr_brand { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; }
.pc_header .sk_hdr_menu {
    width: 60px; height: 60px; border-radius: 12px;
    border: 2px solid var(--sk-border, #4a4b59); background: var(--sk-bg-dark, #14141b);
    display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
    cursor: pointer; padding: 0;
}
.pc_header .sk_hdr_menu span { display: block; width: 20px; height: 2px; border-radius: 2px; background: var(--app-text-primary); }
.pc_header .sk_hdr_menu:hover { background: var(--sk-btn-2nd, #484960); }
.pc_header .sk_hdr_logo { display: inline-flex; align-items: center; }
.pc_header .sk_hdr_logo img { max-height: 40px; width: auto; display: block; }   /* ⚠️ 로고 교체 = MainLayout <img src> 1곳 */

/* 한줄공지 — 브랜드/액션 사이, 남는 폭 */
.pc_header .hdr_notice {
    flex: 1 1 auto; min-width: 0;
    height: 40px; align-self: center;
    background: var(--sk-bg-dark, #14141b);
    border: 0; border-radius: 8px;
}
.pc_header .hdr_notice_tag { color: var(--app-primary); }

/* 우측 액션 — 60x60 사각 버튼(알림/문의 톤) · 충전=지갑 핑크 채움 · 환전 아웃라인 */
.pc_header .hdr_actions { margin-left: auto; display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.pc_header .hdr_btn {
    height: 60px; min-width: 60px; padding: 0 16px; border-radius: 12px;
    border: 2px solid var(--sk-border, #4a4b59); background: var(--sk-bg-dark, #14141b);
    color: var(--app-text-primary); font-weight: 700; font-size: 14px;
    transition: background .15s, border-color .15s, transform .08s;
}
.pc_header .hdr_btn:hover { background: var(--sk-btn-2nd, #484960); }
.pc_header .hdr_btn:active { transform: translateY(1px); }
.pc_header .hdr_btn_charge { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }
.pc_header .hdr_btn_charge:hover { background: var(--app-primary-hover); border-color: var(--app-primary-hover); }
.pc_header .hdr_btn_exchange { border-color: var(--app-primary); color: var(--app-primary-light); }
.pc_header .hdr_btn_exchange:hover { background: var(--app-primary-tint); }
.pc_header .hdr_btn_login { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }
.pc_header .hdr_btn_signup { border-color: var(--app-primary); color: var(--app-primary-light); }
.pc_header .app-header-login-input {
    height: 44px; border-radius: 10px; background: var(--sk-bg-dark, #14141b);
    border: 2px solid var(--sk-border, #4a4b59); color: var(--app-text-primary);
}
.pc_header .hdr_quick { border-radius: 10px; }

/* ③ Row2(로그인 정보) — 시안 KRW 블록: 어두운 라운드 pill 안에 [KRW ▾ 잔액] [포인트] · 쪽지 = 아이콘 사각 */
.pc_header .hdr_row2 {
    height: auto; min-height: 52px;
    padding: 6px 1.25rem 10px;
    background: var(--sk-bg-lighten, #1c1c25);
    justify-content: flex-end; gap: 8px;
}
.pc_header .hdr_user,
.pc_header .hdr_bal {
    height: 44px; padding: 0 12px; border-radius: 12px;
    background: var(--sk-bg-dark, #14141b); border: 2px solid var(--sk-border, #4a4b59);
    display: inline-flex; align-items: center; gap: 8px;
}
.pc_header .hdr_bal_label { font-size: 11px; color: var(--app-text-muted); }
.pc_header .hdr_bal_val { font-size: 14px; font-weight: 800; color: var(--app-text-primary); }
.pc_header .hdr_bal_unit { font-size: 11px; color: var(--app-primary-light); font-weight: 700; }
.pc_header .hdr_mail {
    width: 44px; height: 44px; border-radius: 12px;
    background: var(--sk-bg-dark, #14141b); border: 2px solid var(--sk-border, #4a4b59); color: var(--app-text-primary);
    display: inline-flex; align-items: center; justify-content: center;
}
.pc_header .hdr_mail:hover { background: var(--sk-btn-2nd, #484960); }
.pc_header .hdr_cur {
    height: 44px; border-radius: 12px; padding: 0 10px;
    background: var(--sk-bg-dark, #14141b); border: 2px solid var(--sk-border, #4a4b59); color: var(--app-text-primary);
}
.pc_header .hdr_swap { color: var(--app-primary-light); }
.pc_header .hdr_nick { color: var(--app-primary-light); }

/* ── 2. 사이드바 — 레퍼런스(sug13 Sample5 Sidebar) 규격 그대로 ─────────────────
   aside  = min-w 230 / >=1280 300 / >=1536 360 · max-w 380 · p-3(.75rem) · bg(--bg-lighten) · rounded-lg · 블록 간 12px
   접힘   = w 88px · p-2 · 카드/광고/라벨 축소(아이콘 60x60)
   유저카드 = rounded-xl · 헤더 p-3(bg-light) · 아바타 60x60 rounded-xl border-2 · 토글 32x32 · 계정메뉴 bg-dark p-2 space-y-1
   아이템 = h 60 · px-3 · gap-3 · rounded-xl · bg-dark · hover/active = button-secondary · 아이콘 30 · 라벨 14/600 */
:root {
    --sk-bg-lighten: #1c1c25;   /* aside 배경 */
    --sk-bg-light:   #22222c;   /* 유저카드 헤더 */
    --sk-bg-dark:    #14141b;   /* 아이템·계정메뉴 배경 */
    --sk-bg-table:   #2a2a36;   /* 계정메뉴 hover/active */
    --sk-border:     #4a4b59;   /* 레퍼런스 --border 실값 */
    --sk-btn-2nd:    #484960;   /* 레퍼런스 --button-secondary 실값 */
}

.page_shell > .league_sidebar,
.league_sidebar {
    width: auto;
    min-width: 360px;
    max-width: 380px;
    margin-left: 1.25rem;
    margin-right: 1.25rem;
    padding: .75rem;
    background: #2e2f3b;                                  /* 사장 지정 */
    border: 1px solid #3d3e4d;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(0,0,0,.45), inset 0 1px 0 rgba(255,255,255,.04);
    display: flex; flex-direction: column; gap: 12px;    /* space-y-3 */
    transition: min-width .2s, width .2s, padding .2s;
}
@media (min-width: 1280px) { .league_sidebar { min-width: 300px; } }
@media (min-width: 1536px) { .league_sidebar { min-width: 360px; } }
/* 헤더가 셸 바깥 위(전폭)로 이동 — 사이드바는 헤더 아래에서 시작·고정(sticky top = 헤더 높이 80 + Row2).
   높이 = 뷰포트 − 헤더(내부 스크롤 유지). 상단 여백 12px 로 헤더와 띄운다. */
:root { --sk-hdr-h: 80px; }
/* 헤더 = #app 직속(page_shell 형제·위) → 뷰포트 전폭. 좌측 오프셋 0 강제(사이드바 폭 침범 X — 사이드바가 헤더 아래로 들어간다). */
.pc_header.sk_hdr_top { position: sticky; top: 0; left: 0; z-index: 60; width: 100%; margin: 0; }
.page_shell > .league_sidebar,
.league_sidebar {
    /* sticky top 은 margin-top(12) 을 포함해야 스크롤 시 12px 튀지 않는다(구 top=헤더높이 → 스크롤하면 12px 위로 올라붙던 사고). */
    top: calc(var(--sk-hdr-h) + 12px);
    height: calc(100vh - var(--sk-hdr-h) - 24px);
    margin-top: 12px;
    box-sizing: border-box;
}
/* 본문 컬럼 — 사이드바 침범 방지(flex 축소 허용) */
.page_shell_body { min-width: 0; flex: 1 1 0; }
.page_shell_body .main_index_container,
.page_shell_body .home_index { width: 100%; min-width: 0; align-items: stretch; }
/* 로고는 헤더로 이관(2번 항목) — 사이드바 로고 슬롯·구 접기 버튼 숨김 */
.league_sidebar .side_logo,
.league_sidebar .side_fold_btn { display: none; }

/* 🔴 사이드바 = 고정 높이 flex 컬럼(overflow-y:auto). 자식 flex-shrink 기본 1 + 유저카드 overflow:hidden(min-height:auto → 0)이라
   내용이 창보다 길어지면 **유저카드가 0px 로 눌려 사라졌다**(로그인 후 "내정보 안 보임" 실사고 — 실측 h=0).
   직속 자식 전부 축소 금지 → 넘치면 사이드바가 스크롤한다. */
.league_sidebar > * { flex-shrink: 0; }
/* 2-1 유저 카드 */
.league_sidebar .sk_user_card { margin: 0; background: #1c1d26; border: 1px solid #454657; border-radius: 12px; overflow: hidden; box-shadow: 0 6px 18px rgba(0,0,0,.4); }
.league_sidebar .sk_user_row {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 10px 12px; background: var(--sk-bg-light);
}
.league_sidebar .sk_user_avatar {
    width: 60px; height: 60px; flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 12px; border: 2px solid var(--sk-border); background: var(--sk-bg-dark);
    font-size: 26px;
}
.league_sidebar .sk_user_txt { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; font-size: 14px; }
.league_sidebar .sk_user_hi { color: var(--app-text-primary); opacity: .7; }
.league_sidebar .sk_user_name { font-weight: 600; color: var(--app-text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.league_sidebar .sk_user_toggle {
    width: 34px; height: 34px; flex: 0 0 auto; border-radius: 50%; padding: 0;
    border: 0; background: var(--app-primary); color: #fff; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(255,47,125,.4);
}
.league_sidebar .sk_user_toggle svg { width: 22px; height: 22px; fill: currentColor; transition: transform .2s; }
.league_sidebar .sk_user_toggle svg.up { transform: rotate(180deg); }
.league_sidebar .sk_user_toggle:hover { background: var(--app-primary-hover); }
.league_sidebar .sk_user_avatar_lv img { padding: 4px; }
/* 계정 카드 본문 — 접힘/펼침 애니메이션(grid rows 0fr↔1fr · opacity) */
.league_sidebar .sk_acct_wrap { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s cubic-bezier(.4,0,.2,1); }
.league_sidebar .sk_acct_wrap.open { grid-template-rows: 1fr; }
.league_sidebar .sk_acct_inner { min-height: 0; overflow: hidden; opacity: 0; transform: translateY(-4px); transition: opacity .22s ease, transform .22s ease; }
.league_sidebar .sk_acct_wrap.open .sk_acct_inner { opacity: 1; transform: none; transition-delay: .06s; }
/* 계정 메뉴 = 1열(한 줄 하나) */
.league_sidebar .sk_acct_menu {
    display: flex; flex-direction: column; gap: 4px;
    padding: 8px; border-top: 1px solid #3d3e4d; background: var(--sk-bg-dark);
}
.league_sidebar .sk_acct_menu a {
    display: flex; align-items: center; height: 38px; padding: 0 12px; border-radius: 8px;
    font-size: 13px; font-weight: 600; color: var(--app-text-primary); text-decoration: none; transition: background .12s, color .12s;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.league_sidebar .sk_acct_menu a.sk_acct_partner { margin-top: 4px; border-top: 1px dashed #3d3e4d; border-radius: 0 0 8px 8px; padding-top: 4px; height: 42px; color: var(--app-primary-light); }
.league_sidebar .sk_acct_menu a:hover,
.league_sidebar .sk_acct_menu a.on { background: var(--sk-bg-table); color: var(--app-primary); }

/* 2-2 이미지 배너 슬롯(C2-BNIMG — 구 sk_bn 그라데이션 타일 대체)
   한 줄 1개 = .sk_bnimg(전폭) / 한 줄 2개 = .sk_bnimg_row2 래퍼 안 <a> 2개(반폭 자동).
   사이드바 콘텐츠 폭 = 유동 256~356px(min-width 280/300/360 − padding 24) → 이미지는 object-fit:cover 로 흡수.
   권장 자산 사이즈(@2x): 전폭 700×180(표시 ~350×90 · 비율 35:9) / 반폭 342×180(표시 ~171×90 · 비율 19:10).
   이미지 부재 시(onerror 숨김) 폴백 = 아래 그라데이션 + 라벨 스팬. */
.league_sidebar .sk_bnimg_grid { display: flex; flex-direction: column; gap: 8px; }
.league_sidebar .sk_bnimg_row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.league_sidebar .sk_bnimg_row2:empty { display: none; }
.league_sidebar .sk_bnimg {
    position: relative; display: flex; align-items: center; justify-content: center;
    aspect-ratio: 350 / 90; border-radius: 8px; text-decoration: none; overflow: hidden;
    color: #fff; font-weight: 800; font-size: 13px; letter-spacing: .2px;
    background-size: cover; background-position: center; background-repeat: no-repeat;
    transition: transform .12s, filter .12s;
}
.league_sidebar .sk_bnimg_row2 .sk_bnimg { aspect-ratio: 171 / 90; }
.league_sidebar .sk_bnimg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.league_sidebar .sk_bnimg:hover { transform: translateY(-1px); filter: brightness(1.08); }
.league_sidebar .sk_bnimg span { position: relative; z-index: 1; text-shadow: 0 1px 2px rgba(0, 0, 0, .45); }
.league_sidebar .sk_bnimg small { font-size: 10px; font-weight: 600; opacity: .85; margin-left: 4px; }
/* BN-FIX · 고정 3행(고객센터 / 카지노·슬롯 / 평생도메인) 폴백 그라데이션 — 이미지 도착 전 임시 */
.league_sidebar .sk_bnimg_cs     { background-image: linear-gradient(90deg, #ff2f7d, #ff7fb0); }
.league_sidebar .sk_bnimg_casino { background-image: linear-gradient(90deg, #e8186a, #ff5f9e); }
.league_sidebar .sk_bnimg_slot   { background-image: linear-gradient(90deg, #ff2f7d, #ff9ac2); }
.league_sidebar .sk_bnimg_domain { background-image: linear-gradient(90deg, #ff5f9e, #ffb3cf); }

/* 2-3 구분선(레퍼런스 divider = h-1px border-t) — 광고 다음 · 게임 블록 다음 */
.league_sidebar .sk_bnimg_grid + .side_menu_block,
.league_sidebar .side_menu_block + .side_menu_block { position: relative; padding-top: 12px; }
.league_sidebar .sk_bnimg_grid + .side_menu_block::before,
.league_sidebar .side_menu_block + .side_menu_block::before {
    content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; border-top: 1px solid var(--sk-border);
}

/* 2-4 메뉴 아이템 */
.league_sidebar .side_menu_block { margin: 0; padding: 0; background: transparent; border: 0; display: flex; flex-direction: column; gap: 8px; }
.league_sidebar .side_menu_block_ttl { display: none; }
.league_sidebar .side_menu_item {
    display: flex; align-items: center; gap: 12px; position: relative;
    height: 60px; padding: 0 12px; margin: 0;
    background: linear-gradient(180deg, #23242e, #1a1b23); border: 1px solid #454657; border-radius: 12px;
    box-shadow: 0 4px 12px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.05);
    color: var(--app-text-primary); font-weight: 700; font-size: 14px; letter-spacing: .2px; text-transform: none;
    transition: background .12s, border-color .12s, transform .12s, box-shadow .12s;
}
.league_sidebar .side_menu_item:hover { border-color: var(--app-primary); transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,0,0,.45), 0 0 0 1px rgba(255,47,125,.25); }
.league_sidebar .side_menu_item.on { border-color: var(--app-primary); background: linear-gradient(180deg, rgba(255,47,125,.22), rgba(255,47,125,.08)); color: #fff; transform: none; }
.league_sidebar .side_menu_ico { width: 30px; height: 30px; object-fit: contain; filter: none; transition: transform .15s; }
.league_sidebar .side_menu_item:hover .side_menu_ico { transform: scale(1.1); }

/* 2-5 시안에 없는 축(스포츠 검색·리그 트리) 숨김 — 기능 코드 보존(되살리려면 이 3줄만 삭제) */
.league_sidebar .sch_sp_box,
.league_sidebar .side_section_head,
.league_sidebar .side_tree { display: none; }

/* 2-6 접힘(html.sb_folded · 레퍼런스 collapsed = w-88px p-2 · 아바타/아이콘만)
   BJ-C3 · ≥1025 전용으로 봉인 — 파트너 경로 기본값(sb_folded)이 ≤1024 오프캔버스 드로어에도 걸려
   햄버거를 눌러도 88px 접힘 규격(계정메뉴·라벨 숨김)만 열려 '먹처리만 되고 메뉴가 안 보이는' 실사고. */
@media (min-width: 1025px) {
html.sb_folded .page_shell .league_sidebar { min-width: 88px; max-width: 88px; width: 88px; padding: 8px; }
html.sb_folded .page_shell .league_sidebar .sk_user_row { padding: 0; background: transparent; justify-content: center; }
html.sb_folded .page_shell .league_sidebar .sk_user_txt,
html.sb_folded .page_shell .league_sidebar .sk_user_toggle,
html.sb_folded .page_shell .league_sidebar .sk_acct_menu,
html.sb_folded .page_shell .league_sidebar .sk_bnimg span,
html.sb_folded .page_shell .league_sidebar .side_menu_label { display: none; }
html.sb_folded .page_shell .league_sidebar .side_menu_item { width: 60px; height: 60px; padding: 0; margin: 0 auto; justify-content: center; gap: 0; }
}
/* 메뉴 아이콘 = 인라인 SVG · 핑크 톤(currentColor) · 원형 배경 */
.league_sidebar .side_menu_ico_svg {
    width: 34px; height: 34px; padding: 6px; border-radius: 10px; flex: 0 0 auto;
    fill: var(--app-primary-light); color: var(--app-primary-light);
    background: rgba(255,47,125,.12); box-shadow: inset 0 0 0 1px rgba(255,47,125,.35);
    transition: background .15s, transform .15s;
}
.league_sidebar .side_menu_item:hover .side_menu_ico_svg,
.league_sidebar .side_menu_item.on .side_menu_ico_svg { background: var(--app-primary); fill: #fff; color: #fff; transform: scale(1.05); }
/* 접힘 — 머니/포인트·계정메뉴·배너 타일 숨김(사장 지시) · 툴팁(data-tip) 라벨 — BJ-C3 · ≥1025 전용(위와 동일 사유) */
@media (min-width: 1025px) {
html.sb_folded .page_shell .league_sidebar .sk_acct_wrap,
html.sb_folded .page_shell .league_sidebar .sk_bnimg_grid { display: none !important; }
html.sb_folded .page_shell .league_sidebar { overflow: visible; }
html.sb_folded .page_shell .league_sidebar .side_menu_item[data-tip]::after {
    content: attr(data-tip); position: absolute; left: calc(100% + 12px); top: 50%; transform: translateY(-50%) translateX(-6px);
    padding: 8px 12px; border-radius: 10px; white-space: nowrap; font-size: 13px; font-weight: 800; color: #fff;
    background: linear-gradient(180deg, #ff5f9e, #e8186a); box-shadow: 0 8px 24px rgba(255,47,125,.45), 0 0 0 1px rgba(255,255,255,.08);
    opacity: 0; pointer-events: none; transition: opacity .15s, transform .15s; z-index: 80;
}
html.sb_folded .page_shell .league_sidebar .side_menu_item[data-tip]::before {
    content: ""; position: absolute; left: calc(100% + 4px); top: 50%; transform: translateY(-50%);
    border: 6px solid transparent; border-right-color: #ff5f9e; opacity: 0; transition: opacity .15s; z-index: 80;
}
html.sb_folded .page_shell .league_sidebar .side_menu_item:hover::after { opacity: 1; transform: translateY(-50%) translateX(0); }
html.sb_folded .page_shell .league_sidebar .side_menu_item:hover::before { opacity: 1; }
}

/* <=1024 오프캔버스(s2 mobile.css .m_open 승계)에서는 여백 없이 붙인다 */
@media (max-width: 1024px) {
    .page_shell > .league_sidebar, .league_sidebar { margin-left: 0; margin-right: 0; border-radius: 0; min-width: 280px; }
}

/* ── 3. 홈 — ④ 메인 영역: 레퍼런스처럼 사이드바 옆 잔여 폭 전부(1248 상한 해제) · 좌우 여백 1.25rem ─── */
.home_index > .main_banner_wrap,
.home_index > .home_wrap { max-width: none; margin-left: 1.25rem; margin-right: 1.25rem; width: auto; }
.home_wrap { padding: 20px 0 56px; gap: 28px; }
.home_index > .main_banner_wrap { margin-top: 12px; }
/* 스포츠 메뉴 이미지 카테고리 섹션(home_cat_section) = 시안에 없음 → 제거(마크업 보존·CSS 숨김) */
.home_section.home_cat_section { display: none !important; }
/* 인기경기(스포츠) 섹션도 시안(카지노/슬롯 중심)에 없음 → 숨김. 카지노/슬롯 그리드는 2차(전용 섹션 신설) */
.home_section.home_pop_section { display: none !important; }

/* ── 3. 홈 — 시안: 섹션 타이틀 좌 + 우측 ‹ › MORE · 카드 프레임 3색 순환 ───── */
.home_sec_title { font-size: 20px; font-weight: 900; letter-spacing: -.2px; }
.home_sec_title .accent { color: var(--app-text-primary); }
.home_more,
.info_more {
    display: inline-flex; align-items: center; justify-content: center;
    height: 30px; padding: 0 12px; border-radius: 8px;
    background: #1e1e29; border: 1px solid var(--app-border-soft);
    color: var(--app-text-primary); font-size: 11px; font-weight: 800; letter-spacing: .6px; text-transform: uppercase;
}
.home_more:hover, .info_more:hover { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }

.home_cat_card {
    border-radius: 14px; overflow: hidden;
    border: 1px solid var(--app-border-soft);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .35);
}
.home_cat_card:hover { box-shadow: var(--sk-glow); }

/* 하단 정보 패널(공지/이벤트/게시판 — s2 방식 유지) = 카드 프레임 3색 */
.info_panel {
    background: #14141c; border-radius: 16px; overflow: hidden;
    border: 1px solid var(--app-border);
}
.home_panel_grid > .info_panel:nth-child(1) { border-color: var(--sk-frame-1); box-shadow: 0 0 0 1px rgba(255, 47, 125, .25); }
.home_panel_grid > .info_panel:nth-child(2) { border-color: var(--sk-frame-2); box-shadow: 0 0 0 1px rgba(42, 212, 255, .22); }
.home_panel_grid > .info_panel:nth-child(3) { border-color: var(--sk-frame-3); box-shadow: 0 0 0 1px rgba(255, 138, 61, .22); }
.info_head { background: #1a1a25; border-bottom: 1px solid var(--app-border); }
.info_title { font-weight: 900; }
.info_title::before { content: "📢 "; }
.home_panel_grid > .info_panel:nth-child(2) .info_title::before { content: "🎁 "; }
.home_panel_grid > .info_panel:nth-child(3) .info_title::before { content: "💬 "; }
.hp_list li { border-color: var(--app-border) !important; }
.hp_list li:hover { background: #1a1a25; }

/* 배너 슬라이더 프레임 */
.main_banner_wrap { border-radius: 18px; overflow: hidden; border: 1px solid var(--app-border-soft); }

/* ── 1b. 헤더 Row1 머니 블록(시안 ③) — Row2 폐지 · [KRW ▾ 잔액] [P 포인트 ⇄] [쪽지] [지갑=충전] ─── */
/* 사용자 정보 Row2 는 시안에 없음 → 숨김. 파트너 경로(hdr_row2_pnav)는 파트너 내비를 담고 있어 유지. */
.pc_header .hdr_row2 { display: none !important; }   /* 파트너 경로 포함 전부 숨김 — 파트너 GNB 는 Row1 로고 옆(.sk_hdr_pnav) */
/* 파트너 GNB(Row1) — 로고 옆 · 드롭 서브메뉴 톤 */
.pc_header .sk_hdr_pnav { display: flex; align-items: center; flex: 0 1 auto; min-width: 0; margin-left: 8px; }
.pc_header .sk_hdr_pnav .main_menu, .pc_header .sk_hdr_pnav .hdr_pnav_flat { display: flex; gap: 4px; margin: 0; padding: 0; list-style: none; }
.pc_header .sk_hdr_pnav .menu-item { position: relative; }
.pc_header .sk_hdr_pnav .nav-link { display: inline-flex; align-items: center; height: 44px; padding: 0 14px; border-radius: 10px; font-weight: 800; font-size: 14px; color: var(--app-text-secondary); text-decoration: none; white-space: nowrap; }
.pc_header .sk_hdr_pnav .nav-link:hover, .pc_header .sk_hdr_pnav .nav-link.active { background: var(--sk-btn-2nd, #484960); color: #fff; }
.pc_header .sk_hdr_pnav .nav-link.active { box-shadow: inset 0 -2px 0 var(--app-primary); }
.pc_header .sk_hdr_pnav .sub_menu { display: none; position: absolute; left: 0; top: calc(100% + 6px); min-width: 160px; padding: 6px; margin: 0; list-style: none; z-index: 90;
    background: #2e2f3b; border: 1px solid #454657; border-radius: 10px; box-shadow: 0 12px 30px rgba(0,0,0,.5); }
.pc_header .sk_hdr_pnav .menu-item:hover .sub_menu { display: block; }
.pc_header .sk_hdr_pnav .sub_menu_link { display: block; padding: 9px 12px; border-radius: 8px; font-size: 13px; font-weight: 600; color: var(--app-text-primary); text-decoration: none; white-space: nowrap; }
.pc_header .sk_hdr_pnav .sub_menu_link:hover { background: var(--sk-btn-2nd, #484960); }
.pc_header .sk_hdr_pnav .gnb_scroll_wrap { overflow: visible; }
.pc_header .sk_money {
    height: 60px; padding: 0 6px 0 6px; border-radius: 12px;
    background: var(--sk-bg-dark, #14141b); border: 2px solid var(--sk-border, #4a4b59);
    display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto;
}
.pc_header .sk_money_cur {
    height: 44px; min-width: 56px; padding: 0 10px; border-radius: 10px;
    background: var(--sk-btn-2nd, #484960); color: var(--app-text-primary);
    font-size: 13px; font-weight: 800; border: 0; display: inline-flex; align-items: center; justify-content: center;
}
.pc_header select.sk_money_cur { appearance: auto; padding-right: 6px; }
.pc_header .sk_money_val { font-size: 15px; font-weight: 800; color: var(--app-text-primary); padding-right: 8px; min-width: 72px; text-align: right; }
.pc_header .sk_point .sk_money_val { cursor: pointer; }
.pc_header .sk_swap { width: 32px; height: 32px; border-radius: 8px; color: var(--app-primary-light); background: transparent; border: 0; display: inline-flex; align-items: center; justify-content: center; }
.pc_header .sk_swap svg { width: 20px; height: 20px; fill: currentColor; }
.pc_header .sk_swap:hover { background: var(--sk-btn-2nd, #484960); }
/* 아이콘 사각 버튼(쪽지·지갑) = 60x60 정사각 · 배지 위치 */
.pc_header .hdr_btn_icon { width: 60px; min-width: 60px; padding: 0; position: relative; }
.pc_header .hdr_btn_icon svg { width: 26px; height: 26px; fill: currentColor; }
.pc_header .hdr_btn_logout svg { width: 26px; height: 26px; fill: currentColor; }
.pc_header .sk_mail .app-msg-badge { position: absolute; top: 6px; right: 6px; }
@media (max-width: 1024px) {
    .pc_header .sk_money_val { min-width: 0; }
}

/* ── 3b. 홈 공지/이벤트 썸네일 스트립(시안 ④) — 카드 = 라이브카지노 gcard 규격(400/224) · PC 4장 노출 ─── */
.sk_thumb_strip { --vis: 4; }
.sk_thumb_strip .gcard_name { display: block; font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 8px 10px; }   /* 시안 = 제목 바 표시(전역 .gcard_name display:none 은 게임사 카드용 — 여기선 해제) */
/* ⚠️ 카드가 <a> 라 기본 display:inline — 인라인 박스는 테두리가 줄 조각마다 갈라져 "좌측 모서리에만 테두리" 증상이 됐다. 블록으로. */
.sk_thumb_strip .sk_thumb_card { display: block; }
/* 시안 · 그라디언트 테두리 — 우측/상단 3px 진함 → 남서(bottom-left)로 갈수록 투명.
   기법 = 투명 border 위에 background 2겹(padding-box 패널색 / border-box 그라디언트). 라운드 모서리에서도 끊김 0.
   홀짝은 Razor 가 원본 인덱스로 부여(sk_thumb_a=홀수 청록 · sk_thumb_b=짝수 분홍) — 클론이 앞뒤로 붙어 nth-child 는 어긋난다. */
.sk_thumb_strip .sk_thumb_card {
    border: 3px solid transparent;
    border-radius: 10px;
    background:
        linear-gradient(var(--app-bg-panel), var(--app-bg-panel)) padding-box,
        linear-gradient(to bottom left, var(--sk-thumb-edge) 0%, var(--sk-thumb-edge) 28%, transparent 78%) border-box;
    box-shadow: 4px 0 14px -6px var(--sk-thumb-glow);   /* 우측 은은한 발광(시안) */
}
.sk_thumb_strip .sk_thumb_card:hover { border-color: transparent; }   /* 공통 .gcard:hover 보더색 상쇄(그라디언트 유지) */
.sk_thumb_a { --sk-thumb-edge: #19c9e6; --sk-thumb-glow: rgba(25, 201, 230, .45); }
.sk_thumb_b { --sk-thumb-edge: var(--app-primary, #ff2f7d); --sk-thumb-glow: rgba(255, 47, 125, .45); }
.sk_thumb_strip .gcard_img { aspect-ratio: 400 / 224; }
.sk_thumb_strip .gcard_img img { width: 100%; height: 100%; object-fit: cover; }
.sk_thumb_ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; padding: 12px; text-align: center;
    color: var(--app-text-muted); font-size: 13px; background: linear-gradient(135deg, var(--sk-bg-dark, #14141b), var(--sk-btn-2nd, #484960)); }
.sk_sec_ico { margin-right: 6px; }
@media (max-width: 1280px) { .sk_thumb_strip { --vis: 3; } }
@media (max-width: 900px)  { .sk_thumb_strip { --vis: 2.5; } }   /* 시안 · 공지/이벤트 썸네일 2.5개(반 칸 = 스와이프 힌트) */

/* ── 2b. 내정보 카드 머니/포인트 행 — 한 줄 하나(잘림 방지) · [코인] 금액 단위 [캐럿/⇄] */
.sk_user_money { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; background: #1c1d26; }
.sk_user_money .sk_um {
    position: relative; height: 40px; padding: 0 8px 0 6px; border-radius: 10px;
    background: var(--sk-bg-dark, #14141b); border: 1px solid #454657;
    display: flex; align-items: center; gap: 8px; min-width: 0;
}
.sk_user_money .sk_um b { flex: 1 1 auto; min-width: 0; font-size: 14px; font-weight: 800; color: var(--app-text-primary); text-align: right; font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk_user_money .sk_um_unit { font-size: 11px; font-weight: 800; color: var(--app-text-muted); flex: 0 0 auto; }
.sk_um_coin { width: 26px; height: 26px; border-radius: 50%; flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; background: var(--app-primary); color: #fff; font-style: normal; font-size: 12px; font-weight: 900; }
.sk_um_coin_p { background: #2ad4ff; color: #0a0a10; }
.sk_um_caret, .sk_um_swap { width: 26px; height: 26px; border-radius: 6px; border: 0; background: transparent; color: var(--app-text-secondary); display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; cursor: pointer; }
.sk_um_caret svg { width: 12px; height: 9px; transform: rotate(180deg); transition: transform .2s; }
.sk_um_caret.open svg { transform: rotate(0); }
.sk_um_swap svg { width: 18px; height: 18px; fill: currentColor; }
.sk_um_caret:hover, .sk_um_swap:hover { background: var(--sk-btn-2nd, #484960); color: #fff; }
/* 통화 드롭다운(헤더·사이드바 공용) */
.sk_cur_bd { position: fixed; inset: 0; z-index: 70; }
.sk_cur_dd {
    position: absolute; right: 0; top: calc(100% + 6px); z-index: 71; min-width: 120px; padding: 6px;
    background: #2e2f3b; border: 1px solid #454657; border-radius: 10px; box-shadow: 0 12px 30px rgba(0,0,0,.5);
    display: flex; flex-direction: column; gap: 4px; animation: c2MdIn .16s ease-out;
}
.sk_cur_dd button { height: 34px; padding: 0 12px; border-radius: 8px; border: 0; background: transparent; color: var(--app-text-primary); font-weight: 700; font-size: 13px; text-align: left; cursor: pointer; }
.sk_cur_dd button:hover { background: var(--sk-btn-2nd, #484960); }
.sk_cur_dd button.on { background: var(--app-primary); color: #fff; }
/* PC 헤더 머니 pill 안 캐럿·코인 */
.pc_header .sk_money_wrap { position: relative; padding-left: 8px; }
.pc_header .sk_money_coin { width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--app-primary); color: #fff; font-style: normal; font-size: 13px; font-weight: 900; }
.pc_header .sk_money_unit { font-size: 12px; font-weight: 800; color: var(--app-text-muted); padding-right: 6px; }
.pc_header .sk_money_caret { width: 32px; height: 32px; border-radius: 8px; border: 0; background: transparent; color: var(--app-text-secondary); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.pc_header .sk_money_caret svg { width: 12px; height: 9px; transform: rotate(180deg); transition: transform .2s; }
.pc_header .sk_money_caret.open svg { transform: rotate(0); }
.pc_header .sk_money_caret:hover { background: var(--sk-btn-2nd, #484960); color: #fff; }

/* ── 3c. 실시간 입금/출금/당첨 피드(C2-FEED) — 캡처 2 톤(어두운 카드 · 헤더 핑크 · 행 구분선) · 3분할 1/3 ─── */
.sk_feed_section { display: block; }
.sk_feed_grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.sk_feed_panel {
    background: var(--sk-bg-lighten, #1c1c25); border: 1px solid var(--sk-border, #4a4b59);
    border-radius: 12px; overflow: hidden; min-width: 0;
}
.sk_feed_head {
    height: 52px; padding: 0 20px; display: flex; align-items: center; gap: 10px;
    font-size: 17px; font-weight: 800; color: #fff;
    background: linear-gradient(90deg, var(--app-primary), var(--app-primary-hover, var(--app-primary)));
}
.sk_feed_dot { width: 8px; height: 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 4px rgba(255,255,255,.25); animation: c2FeedPulse 1.6s ease-in-out infinite; }
@keyframes c2FeedPulse { 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(.7); opacity: .6; } }
.sk_feed_empty { padding: 28px 20px; text-align: center; color: var(--app-text-muted); font-size: 13px; }
/* 창 = 행 7개 높이 고정(행 52 + 간격 0) → 8번째부터는 롤링으로 올라온다. */
.sk_feed_view { --sk-feed-row: 52px; height: calc(var(--sk-feed-row) * 7); overflow: hidden; padding: 0 12px; }
.sk_feed_track { will-change: transform; }
.sk_feed_row {
    height: var(--sk-feed-row); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: center; gap: 10px;
    padding: 0 8px; border-bottom: 1px solid rgba(255,255,255,.06); font-size: 14px; position: relative;
}
.sk_feed_no { width: 24px; height: 24px; border-radius: 7px; background: linear-gradient(180deg, #23242e, #14141b); border: 1px solid #4a4b59; box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 2px 6px rgba(0,0,0,.35); color: var(--app-text-secondary); font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.sk_feed_row.is_new .sk_feed_no { border-color: var(--app-primary); color: #fff; box-shadow: 0 0 0 2px rgba(255,47,125,.25); }
.sk_feed_id { color: var(--app-primary-light); font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk_feed_nick { color: var(--app-text-secondary, #b8b8c8); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk_feed_amt { color: var(--app-text-primary); font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; overflow: hidden; text-overflow: ellipsis; }
.sk_feed_no { justify-self: start; }
.sk_feed_win .sk_feed_amt { color: #ffd166; }
.sk_feed_wd  .sk_feed_amt { color: #ff8fa3; }
/* 새로 창에 들어온 행 — 핑크 글로우 플래시 + 살짝 떠오름(JS 가 .is_new 를 1.4초 부여) */
.sk_feed_row.is_new { animation: c2FeedIn 1.4s ease-out; }
.sk_feed_row.is_new .sk_feed_amt { animation: c2FeedAmt 1.4s ease-out; }
@keyframes c2FeedIn {
    0%   { background: rgba(255,47,125,.28); box-shadow: inset 3px 0 0 var(--app-primary); transform: translateY(6px); opacity: .2; }
    35%  { transform: translateY(0); opacity: 1; }
    100% { background: transparent; box-shadow: inset 3px 0 0 transparent; }
}
@keyframes c2FeedAmt { 0% { transform: scale(1.18); color: var(--app-primary-light); } 100% { transform: scale(1); } }
/* 탭(모바일 전용) — /cs/paper 탭 관용구 재사용. PC 는 숨김. */
.sk_feed_tabs { display: none; }
@media (max-width: 900px) {
    .sk_feed_tabs { display: block; margin-bottom: 12px; }
    .sk_feed_grid { grid-template-columns: 1fr; }
    .sk_feed_panel { display: none; }
    .sk_feed_panel.is_tab { display: block; }
    .sk_feed_head { display: none; }   /* 탭이 제목을 대신한다 */
    .sk_feed_view { --sk-feed-row: 46px; height: calc(var(--sk-feed-row) * 8); }
    /* FEED-M(2026-08-31) · 모바일 금액 짤림 수리 — 금액 열 = 내용맞춤(auto·짤림 원천 차단),
       순번 고정폭·아이디/닉네임이 남는 폭을 나눠 갖고 ellipsis. 폰트도 살짝 축소. */
    .sk_feed_row { font-size: 12px; grid-template-columns: 22px minmax(0, 1fr) minmax(0, 1fr) auto; gap: 6px; }
    .sk_feed_amt { font-size: 12px; }
}
@media (min-width: 901px) and (max-width: 1280px) {
    .sk_feed_row { font-size: 12px; gap: 6px; }
}

/* ── 6. C2-MODAL ① 라우트 모달 셸(?m=) + 모바일 하단 네비 ─────────────────────── */
body.sk_modal_open { overflow: hidden; }
.sk_modal_bd {
    position: fixed; inset: 0; z-index: 1200;
    background: rgba(0, 0, 0, .8);   /* S7-NOBLUR(2026-09-06) · backdrop-filter 제거(모바일 뒷배경 반전 사고) */
    display: flex; align-items: flex-start; justify-content: center;
    padding: 48px 16px; overflow-y: auto;
    animation: c2BdIn .18s ease-out;
}
@keyframes c2BdIn { from { opacity: 0; } to { opacity: 1; } }
.sk_modal {
    width: min(960px, 100%); max-height: calc(100vh - 96px);
    background: var(--app-bg, #101017); border: 1px solid rgba(255,255,255,.08); border-radius: 18px;
    box-shadow: 0 0 0 1px rgba(255,47,125,.28), 0 0 32px rgba(255,47,125,.12), 0 30px 80px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.05);
    display: flex; flex-direction: column; overflow: hidden;
    animation: c2MdIn .22s cubic-bezier(.2,.8,.2,1);
}
@keyframes c2MdIn { from { transform: translateY(16px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.sk_modal_head {
    flex: 0 0 auto; height: 60px; padding: 0 12px 0 16px;
    background: var(--sk-bg-lighten, #1c1c25); border-bottom: 1px solid var(--sk-border, #4a4b59);
    display: flex; align-items: center; gap: 12px;
}
.sk_modal_title { font-size: 16px; font-weight: 800; color: var(--app-text-primary); }
.sk_modal_tabs { display: flex; gap: 6px; flex: 1 1 auto; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.sk_modal_tabs::-webkit-scrollbar { display: none; }
.sk_modal_tabs button {
    height: 40px; padding: 0 16px; border-radius: 10px; white-space: nowrap;
    background: var(--sk-bg-dark, #14141b); border: 1px solid var(--sk-border, #4a4b59); color: var(--app-text-secondary);
    font-size: 14px; font-weight: 700; cursor: pointer;
}
.sk_modal_tabs button:hover { background: var(--sk-btn-2nd, #484960); color: var(--app-text-primary); }
.sk_modal_tabs button.on { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }
.sk_modal_close {
    margin-left: auto; width: 40px; height: 40px; border-radius: 10px; flex: 0 0 auto;
    background: var(--sk-bg-dark, #14141b); border: 1px solid var(--sk-border, #4a4b59); color: var(--app-text-primary);
    font-size: 16px; cursor: pointer;
}
.sk_modal_close:hover { background: var(--sk-btn-2nd, #484960); }
.sk_modal_body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 16px; }
/* 자식 페이지가 스스로 갖는 폭 상한/여백은 모달 안에서 해제 */
.sk_modal_body .main_index_container, .sk_modal_body .w-1248px { max-width: none; width: 100%; padding-left: 0; padding-right: 0; }
.sk_modal_guard { padding: 48px 16px; text-align: center; color: var(--app-text-secondary); display: flex; flex-direction: column; align-items: center; gap: 16px; }
.sk_modal_guard p { font-size: 15px; margin: 0; }
@media (max-width: 900px) {
    /* 풀스크린 시트 — 하단 네비 위까지 */
    .sk_modal_bd { padding: 0; align-items: stretch; }
    .sk_modal { width: 100%; max-height: none; height: 100%; border-radius: 0; border: 0; padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
    .sk_modal_head { height: 56px; }
    .sk_modal_body { padding: 12px; }
}

/* 하단 고정 네비(≤1024) — 5칸 · 가운데 홈 = 핑크 원 */
.sk_bnav { display: none; }
@media (max-width: 1024px) {
    .sk_bnav {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 1300;
        height: calc(64px + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom);
        background: var(--sk-bg-lighten, #1c1c25); border-top: 1px solid var(--sk-border, #4a4b59);
        display: grid; grid-template-columns: repeat(5, 1fr); align-items: stretch;
    }
    .sk_bnav a {
        display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
        color: var(--app-text-muted); font-size: 11px; font-weight: 700; text-decoration: none;
    }
    .sk_bnav a svg { width: 24px; height: 24px; fill: currentColor; }
    .sk_bnav a.on { color: var(--app-primary-light); }
    .sk_bnav .sk_bnav_home i {
        width: 48px; height: 48px; border-radius: 50%; margin-top: -22px;
        background: var(--app-primary); color: #fff; box-shadow: 0 6px 18px rgba(255,47,125,.45);
        display: inline-flex; align-items: center; justify-content: center; border: 3px solid var(--sk-bg-lighten, #1c1c25);
    }
    .sk_bnav .sk_bnav_home i svg { width: 26px; height: 26px; }
    /* 본문이 네비에 가리지 않게 */
    #app { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }
}

/* C2-MODAL ② · 모달 안에서는 자식 페이지의 자체 탭(support_tabs_container — 충전/환전/내역 페이지 이동)을 숨긴다.
   모달 헤더 탭이 대신한다(페이지 이동 = 모달 이탈 사고 방지). 홈 피드 탭(sk_feed_tabs)은 모달 밖이라 무관. */
.sk_modal_body .support_tabs_container { display: none !important; }
/* 모달 안 이중 스크롤 제거 — 머니/포인트내역·배팅내역 등의 `height:calc(100vh-115px); overflow-y:auto` 컨테이너를 해제해
   **모달 본문(.sk_modal_body) 하나만** 스크롤한다(안쪽 스크롤 끝까지 내려도 페이징이 모달 스크롤 아래에 숨던 버그). */
.sk_modal_body .bet_history_container,
.sk_modal_body .left_panel,
.sk_modal_body .cart_sidebar,
.sk_modal_body .right_detail_panel { height: auto !important; max-height: none !important; overflow: visible !important; position: static !important; }
/* 게임 로비 모달 — 그리드가 폭을 다 쓰도록 */
.sk_modal_game .sk_modal_body { padding: 12px 16px 20px; }
@media (max-width: 900px) {
    .sk_modal_game .sk_modal_body { padding: 12px 4px 20px; }   /* 지시 · 모바일 양옆 4px(2열 카드 폭 확보) */
    /* 모달 안 페이지 헤더(제목 + 검색) — 모바일은 검색 input 을 제목 **아래**로(겹침 제거). */
    .sk_modal_body .support_header.page_header { flex-direction: column; align-items: stretch; gap: 8px; min-height: 0; }
    /* ⚠️ layout.css 가 action_buttons 를 absolute(우측·수직중앙)로 띄운다 — 모바일 모달에선 흐름 배치로 되돌려야 제목 아래로 내려온다. */
    .sk_modal_body .support_header.page_header .action_buttons { position: static; transform: none; width: 100%; }
    .sk_modal_body .support_header.page_header .action_buttons .sch_key { width: 100% !important; max-width: none !important; }
}
/* 유저카드 아바타 = 로고 이미지 */
.sk_user_avatar img { width: 100%; height: 100%; object-fit: contain; padding: 6px; display: block; }
.sk_user_guest { color: var(--app-text-muted); font-weight: 600; }

/* ── 7. C2-SKIN M · 모바일(≤1024) 헤더 · 드로어 · 모달 여백 · 한줄공지 ─────────────────── */
.sk_side_close { display: none; }
.sk_mnotice { display: none; }
@media (max-width: 1024px) {
    :root { --sk-mhdr-h: 56px; }
    /* 헤더 = 상단 sticky · 드로어/백드롭 위(z) → 드로어 열린 채로도 헤더 버튼 클릭 가능 */
    .mobile_header.sk_mhdr {
        position: sticky; top: 0; z-index: 1210;
        background: var(--sk-bg-lighten, #1c1c25); border-bottom: 1px solid var(--sk-border, #4a4b59);
    }
    .sk_mhdr .m_header_top { height: var(--sk-mhdr-h); padding: 0 8px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
    .sk_mhdr .m_header_left { display: flex; align-items: center; gap: 8px; }
    .sk_mhdr .btn_m_menu {
        width: 40px; height: 40px; border-radius: 10px; padding: 0;
        border: 2px solid var(--sk-border, #4a4b59); background: var(--sk-bg-dark, #14141b); color: var(--app-text-primary);
        display: inline-flex; align-items: center; justify-content: center;
    }
    .sk_mhdr .btn_m_menu svg { width: 22px; height: 22px; fill: currentColor; }
    .sk_mhdr .m_header_logo { position: static; transform: none; margin: 0; }
    .sk_mhdr .m_header_logo img { max-height: 34px; width: auto; display: block; }
    .sk_mhdr .m_header_right { display: flex; align-items: center; gap: 6px; }
    /* ₩ 잔액 pill + 드롭다운(KRW / POINTS) — 포인트는 드롭에서만 */
    .sk_mmoney_wrap { position: relative; }
    .sk_mmoney {
        height: 40px; padding: 0 8px 0 4px; border-radius: 12px; display: inline-flex; align-items: center; gap: 6px;
        background: var(--sk-bg-dark, #14141b); border: 2px solid var(--sk-border, #4a4b59); color: var(--app-text-primary); font-size: 14px; font-weight: 800;
    }
    .sk_mmoney span { font-size: 11px; color: var(--app-text-muted); font-weight: 700; }
    .sk_mmoney .sk_mcaret { font-style: normal; font-size: 11px; color: var(--app-text-muted); }
    .sk_mcoin {
        width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
        background: var(--app-primary); color: #fff; font-style: normal; font-size: 13px; font-weight: 900;
    }
    .sk_mcoin_p { background: #2ad4ff; color: #0a0a10; }
    .sk_mmoney_bd { position: fixed; inset: 0; z-index: 1215; }
    .sk_mmoney_dd {
        position: absolute; left: 0; top: calc(100% + 8px); z-index: 1216; min-width: 240px; padding: 8px;
        background: var(--sk-bg-lighten, #1c1c25); border: 1px solid var(--sk-border, #4a4b59); border-radius: 14px;
        box-shadow: 0 16px 40px rgba(0,0,0,.55); display: flex; flex-direction: column; gap: 6px;
        animation: c2MdIn .18s ease-out;
    }
    .sk_mmoney_row {
        display: grid; grid-template-columns: 32px 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; text-align: left;
        padding: 8px 10px; border-radius: 10px; background: var(--sk-bg-dark, #14141b); border: 0; color: var(--app-text-primary);
    }
    .sk_mmoney_row .sk_mcoin { grid-row: 1 / span 2; width: 32px; height: 32px; }
    .sk_mmoney_row .sk_mmoney_lb { font-size: 11px; font-weight: 800; color: var(--app-text-muted); letter-spacing: .3px; }
    .sk_mmoney_row b { font-size: 15px; font-weight: 800; }
    .sk_mmoney_row b small { font-size: 11px; color: var(--app-text-muted); font-weight: 700; }
    .sk_mmoney_swap { height: 36px; border-radius: 10px; border: 1px solid var(--app-primary); background: transparent; color: var(--app-primary-light); font-weight: 700; font-size: 13px; }
    .sk_mmoney_cur { height: 36px; border-radius: 10px; background: var(--sk-bg-dark, #14141b); border: 1px solid var(--sk-border, #4a4b59); color: var(--app-text-primary); padding: 0 8px; }
    /* 아이콘 사각 버튼 */
    .sk_mbtn {
        width: 40px; height: 40px; border-radius: 10px; padding: 0; position: relative; flex: 0 0 auto;
        border: 2px solid var(--sk-border, #4a4b59); background: var(--sk-bg-dark, #14141b); color: var(--app-text-primary);
        display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px;
    }
    .sk_mbtn svg { width: 22px; height: 22px; fill: currentColor; }
    .sk_mbtn_wallet { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }
    .sk_mbtn .app-msg-badge { position: absolute; top: -4px; right: -4px; }
    .sk_mlogin { height: 40px; padding: 0 14px; border-radius: 10px; background: var(--app-primary); color: #fff; font-weight: 800; border: 0; }

    /* 한줄공지 = 홈 배너 아래(모바일만) */
    .sk_mnotice {
        display: flex; align-items: center; gap: 8px; margin: 10px 1rem 0; padding: 0 12px; height: 38px; border-radius: 10px;
        background: var(--sk-bg-lighten, #1c1c25); border: 1px solid var(--sk-border, #4a4b59); font-size: 13px; overflow: hidden;
    }
    .sk_mnotice_tag { color: var(--app-primary); font-weight: 800; flex: 0 0 auto; }
    .sk_mnotice_txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; color: var(--app-text-secondary); }
    .mobile_header .app-oneline-notice--mobile { display: none !important; }   /* 구 위치(헤더 안) 폐기 */
    .sk_side_close { display: none !important; }

    /* 드로어 = 헤더 아래에서 시작 · 폭 70% · 하단 네비 위까지. 백드롭도 헤더 아래부터(헤더는 클릭 가능). */
    .page_shell > .league_sidebar,
    .league_sidebar {
        top: var(--sk-mhdr-h) !important; height: calc(100dvh - var(--sk-mhdr-h) - 64px - env(safe-area-inset-bottom, 0px)) !important;
        width: 70vw !important; min-width: 0 !important; max-width: 380px !important; left: -80vw;
        margin: 0 !important; border-radius: 0 16px 16px 0; padding: .75rem; z-index: 1150 !important;
    }
    .league_sidebar.m_open { left: 0; }
    .m_side_backdrop { top: var(--sk-mhdr-h); z-index: 1140; }
    .sk_side_close {
        display: inline-flex; align-items: center; justify-content: center; align-self: flex-end;
        height: 32px; padding: 0 12px; border-radius: 8px; border: 1px solid var(--sk-border, #4a4b59);
        background: var(--sk-bg-dark, #14141b); color: var(--app-text-secondary); font-size: 12px; font-weight: 700;
    }
    /* 구 내정보 드로어 사용 안 함 */
    /* 내정보 오버레이(mobile_user_drawer) — 헤더 아래로 떨어지는 카드 · 모달(1180)·드로어(1150) 위 */
    .mobile_user_drawer { top: var(--sk-mhdr-h); z-index: 1205; }
    .mobile_user_drawer .user_info_container {
        background: var(--sk-bg-lighten, #1c1c25); border-bottom: 1px solid var(--sk-border, #4a4b59); border-radius: 0 0 16px 16px;
        padding: 16px; z-index: 1206;
    }
    .mobile_user_drawer .user_overlay { background: rgba(0,0,0,.6); }
    .mobile_user_drawer .user_profile img { width: 32px; height: 32px; object-fit: contain; }
    .mobile_user_drawer .myinfo_header { margin-bottom: 14px; }
    .mobile_user_drawer .btn_icon_action { width: 40px; height: 40px; border-radius: 10px; border: 2px solid var(--sk-border, #4a4b59); background: var(--sk-bg-dark, #14141b); color: var(--app-text-primary); }
    /* 아이콘 정중앙(svg/img) — 구 규칙은 inline 정렬이라 위로 붙었다 */
    .mobile_user_drawer .btn_icon_action { display: inline-flex; align-items: center; justify-content: center; padding: 0; }
    .mobile_user_drawer .btn_icon_action svg, .mobile_user_drawer .btn_icon_action img { width: 20px; height: 20px; display: block; fill: currentColor; }
    .mobile_user_drawer .user_actions { display: flex; align-items: center; gap: 8px; }
    .sk_mbtn_user.on { border-color: var(--app-primary); color: var(--app-primary-light); }
}
@media (max-width: 380px) { .sk_mbtn.sk_mbtn_hide_xs { display: none; } }
/* 모바일 모달 = **헤더 아래**(백드롭 top = 모바일 헤더 높이 · 헤더는 그대로 보이고 클릭 가능) · 살짝 여백 · 하단 네비 위 */
@media (max-width: 1024px) {
    .sk_modal_bd { top: var(--sk-mhdr-h, 56px); z-index: 1180; padding: 12px 12px calc(76px + env(safe-area-inset-bottom, 0px)); align-items: stretch; }
    .sk_modal { width: 100%; height: auto; max-height: 100%; border-radius: 16px; border: 1px solid var(--sk-border, #4a4b59); padding-bottom: 0; }
}

/* ── 8. 툴팁 — 헤더 아이콘 버튼(아래로) · 사이드바 접힘(우측) 공통 톤 ─────────────── */
.pc_header .hdr_btn[data-tip] { position: relative; }
.pc_header .hdr_btn[data-tip]::after {
    content: attr(data-tip); position: absolute; left: 50%; top: calc(100% + 10px); transform: translateX(-50%) translateY(-6px);
    padding: 7px 12px; border-radius: 10px; white-space: nowrap; font-size: 12px; font-weight: 800; color: #fff; line-height: 1;
    background: linear-gradient(180deg, #ff5f9e, #e8186a); box-shadow: 0 8px 24px rgba(255,47,125,.45), 0 0 0 1px rgba(255,255,255,.08);
    opacity: 0; pointer-events: none; transition: opacity .15s, transform .15s; z-index: 90;
}
.pc_header .hdr_btn[data-tip]::before {
    content: ""; position: absolute; left: 50%; top: calc(100% + 2px); transform: translateX(-50%);
    border: 5px solid transparent; border-bottom-color: #ff5f9e; opacity: 0; transition: opacity .15s; z-index: 90;
}
.pc_header .hdr_btn[data-tip]:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.pc_header .hdr_btn[data-tip]:hover::before { opacity: 1; }
.pc_header .sk_money_coin_p { background: #2ad4ff; color: #0a0a10; }
.pc_header .sk_point { padding-left: 8px; }
.pc_header .hdr_btn_exchange.hdr_btn_icon { border-color: var(--app-primary); color: var(--app-primary-light); }
/* 접힘 사이드바 툴팁이 본문(main_index_container) 뒤로 숨던 문제 — 사이드바 자체에 stacking 우선순위 */
/* ⚠️ PC 전용 — 이 규칙이 ≤1024 에도 걸리면 mobile.css 의 position:fixed(off-canvas 드로어)를 덮어써 메뉴가 항상 열려 보인다(실사고). */
@media (min-width: 1025px) {
    .page_shell > .league_sidebar { position: sticky; z-index: 45; }
    html.sb_folded .page_shell > .league_sidebar { z-index: 46; }
}

/* ── 4. 공통 버튼/입력 톤 ─────────────────────────────────────────── */
.btn_primary, .btn.primary, .primary_btn { background: var(--app-primary) !important; border-color: var(--app-primary) !important; color: #fff !important; }
.form_control:focus, input:focus, select:focus, textarea:focus { outline: none; border-color: var(--app-primary) !important; box-shadow: 0 0 0 3px var(--app-primary-tint) !important; }

/* ── 5. 파트너 페이지 — 토큰만 상속(partner.css 는 --app-* 소비). 헤더/사이드바 동일 스킨 적용됨. ─── */
.partner_scope .card, .partner_scope .panel { border-color: var(--app-border) !important; }

/* ==========================================================================
   NT-S3(2026-08-19) · 헤더 한줄공지 티커 = **s3 정본 이식**(구 AT 초기판 규칙 위에 덮어씀 — 뒤에 와서 이긴다).
     · 껍데기 = 고정 폭 400px(좁으면 shrink) × 34px 필 — 잔여 폭 전부 차지(flex:1)하던 것 폐기 = **영역 지정·침범 0**.
     · 트랙 = 절대배치(뷰포트 기준) → 트랙 길이가 레이아웃에 영향 0. 폴백 duration 30s(JS 실패 시에도 흐름).
     · 마퀴 정규화 min-width:200% + seg flex:1 0 auto → 짧은 문구도 한 벌씩 지나감(반복 나열 X).
     · 태그·본문 세로 기준 통일(inline-flex · line-height 1) → "높이 안 맞음" 해소.
     · reduced-motion 정지 분기 **금지**(RDP/Windows Server 기본 OFF 라 PC 만 안 흐르던 원인).
   ========================================================================== */
.pc_header .hdr_notice {
    flex: 0 1 400px;
    min-width: 0;
    height: 34px;
    padding: 0 12px;
    display: flex;
    align-items: center;
    gap: 8px;
    overflow: hidden;
    background: rgba(255, 255, 255, .05);
    border-radius: 4px;
    cursor: pointer;
}
.pc_header .hdr_notice_tag {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding-right: 10px;
    border-right: 1px solid var(--app-border);
    color: var(--app-primary);
    font-weight: 700;
    font-size: 12.5px;
    line-height: 1;
    white-space: nowrap;
}
.pc_header .hdr_notice_tag::before { content: none; }   /* 구 ▲ 의사요소 해제 */
.pc_header .hdr_notice_vp {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    position: relative;
    height: 100%;
}
.pc_header .hdr_notice_track {
    position: absolute;
    left: 0;
    top: 0;
    display: inline-flex;
    align-items: center;
    height: 100%;
    min-width: 200%;
    white-space: nowrap;
    will-change: transform;
    animation: hdrTicker 30s linear infinite;
}
.pc_header .hdr_notice_vp:hover .hdr_notice_track { animation-play-state: paused; }
@keyframes hdrTicker {
    from { transform: translate3d(0, 0, 0); }
    to   { transform: translate3d(-50%, 0, 0); }
}
.pc_header .hdr_notice_seg {
    flex: 1 0 auto;
    display: inline-flex;
    align-items: center;
    height: 100%;
    line-height: 1;
    padding-right: 60px;
    color: var(--app-text-muted);
    font-size: 12px;
}
.pc_header .hdr_notice_seg .hl { color: var(--app-primary); font-weight: 700; }
.pc_header .hdr_notice_vp::after {
    content: "";
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: 36px;
    pointer-events: none;
    background: linear-gradient(to left, var(--sk-bg-dark, #14141b) 0%, rgba(0, 0, 0, 0) 100%);
}
.pc_header .hdr_notice.is_static .hdr_notice_track {
    animation: none;
    position: static;
    min-width: 0;
    display: block;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pc_header .hdr_notice.is_static .hdr_notice_seg { padding-right: 0; }
.pc_header .hdr_notice.is_static .hdr_notice_vp::after { display: none; }
/* reduced-motion 재정지 방지 — 구 규칙이 남아 있어도 흐름 유지(RDP 기본 OFF 대응). */
@media (prefers-reduced-motion: reduce) {
    .pc_header .hdr_notice_track { animation: hdrTicker 30s linear infinite; display: inline-flex; width: auto; overflow: visible; }
    .pc_header .hdr_notice_seg + .hdr_notice_seg { display: inline-flex; }
    .pc_header .hdr_notice_seg { padding-right: 60px; }
    .pc_header .hdr_notice_vp::after { display: block; }
    .pc_header .hdr_notice.is_static .hdr_notice_track { animation: none; }
}

/* c2/c3 스킨 질감 — 34px 라운드 필(스킨 기존 톤 유지 · 치수/흐름은 위 NT-S3 정본). */
.pc_header .hdr_notice { border-radius: 17px; background: var(--sk-bg-dark, #14141b); border: 1px solid var(--app-border); }

/* ==========================================================================
   NT-S3(2026-08-19) · 모바일 한줄공지 = **홈 전용 · 배너 아래** 흐름 티커(s3 정본 이식 · Home.razor .home_m_notice).
     · PC 는 헤더 티커가 있으므로 ≤1024 에서만 표시(두 벌 금지). 빈 값이면 미렌더.
     · 바 폭 = 부모 전폭 고정(align-self:stretch) · 트랙 절대배치 = 긴 공지가 화면을 침범하지 않는다.
   ========================================================================== */
.home_m_notice { display: none; }
@media (max-width: 1024px) {
    .home_m_notice {
        display: flex;
        align-items: center;
        gap: 8px;
        height: 34px;
        align-self: stretch;
        width: 100%;
        margin: 8px 0 0;
        padding: 0 12px;
        box-sizing: border-box;
        background: var(--sk-bg-lighten, #1c1c25);
        border-radius: 0;
        overflow: hidden;
        cursor: pointer;
    }
    .home_m_notice_tag {
        flex: 0 0 auto;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        color: var(--app-text-secondary);
        font-size: 12.5px;
        font-weight: 700;
        line-height: 1;
        white-space: nowrap;
    }
    .home_m_notice_tag i { color: var(--app-primary); font-size: 13px; }
    .home_m_notice_vp {
        flex: 1 1 auto;
        min-width: 0;
        overflow: hidden;
        position: relative;
        height: 100%;
    }
    .home_m_notice_track {
        position: absolute;
        left: 0;
        top: 0;
        display: inline-flex;
        align-items: center;
        height: 100%;
        white-space: nowrap;
        will-change: transform;
        animation: hdrTicker 30s linear infinite;
        min-width: 200%;
    }
    .home_m_notice_seg {
        flex: 1 0 auto;
        display: inline-flex;
        align-items: center;
        height: 100%;
        line-height: 1;
        padding-right: 60px;
        color: var(--app-text-muted);
        font-size: 12px;
    }
    .home_m_notice_seg .hl { color: var(--app-primary); font-weight: 700; }
}

/* 모바일 홈 티커 c2/c3 보정 — 배너 아래 **전폭**(지시: 꽉 차게) · 스킨 배경 · 상하 1px 라인. 구 .sk_mnotice 는 미사용(마크업 폐기). */
@media (max-width: 1024px) {
    .home_m_notice { margin: 0; border-radius: 0; border-top: 1px solid var(--app-border); border-bottom: 1px solid var(--app-border); }
    .sk_mnotice { display: none !important; }
}

/* =====================================================================
   BETSIN · c4 스킨 (시안 = 벳신 · 딥퍼플 + 바이올렛)
   ---------------------------------------------------------------------
   원칙
   · 이 블록은 app-skin.css **맨 끝**이다 = 위의 C2-SKIN(sugar) 규칙을 같은 셀렉터로 덮어쓴다.
     새 클래스 축을 만들지 않고 **기존 이름(hdr_/side_/sk_/home_)을 재사용**한다 — 미러 접두사 신설 금지.
   · 색은 §0 토큰에서 이미 전환됐다. 여기는 **구조·형태**(라운드 패널 헤더 2행 · 좌측 2카드 · 칩 줄)만.
   · 마크업 추가분(hdr_row0/hdr_clock/hdr_utils/hdr_gnb_items/pop_chips)의 소재는
     MainLayout.razor(BETSIN §1·§2) · SportsSidebar.razor(§3) · Home.razor(§4).
   ===================================================================== */

/* ── B0. 구조 토큰 재정의 ────────────────────────────────────────────
   ⚠️ --sk-hdr-h 는 **사이드바 sticky 기준선**이다(위 규칙이 top/height 를 여기서 파생).
      헤더 = margin-top 12 + row0 46 + row1 78 + 테두리 2 = 138. 행 높이를 바꾸면 여기도 같이 바꿀 것. */
:root {
    --sk-bg-lighten: #2a1f52;   /* 헤더·모바일헤더 배경 */
    --sk-bg-light:   #322561;   /* 유저카드 헤더 */
    --sk-bg-dark:    #1e1542;   /* 아이템·계정메뉴 배경 */
    --sk-bg-table:   #372a6b;   /* 계정메뉴 hover/active */
    --sk-border:     #3f2f78;
    --sk-btn-2nd:    #46357f;
    --sk-hdr-h:      138px;
}

/* ── B1. 헤더 셸 — 시안: 본문과 같은 여백을 두고 뜨는 **라운드 패널**(전폭 바 아님) ───── */
.pc_header.sk_hdr_top {
    /* ⚠️ top:12px (0 아님) — sticky 는 **테두리 박스** 기준이라 top:0 이면 스크롤 시 margin-top 12 가 사라져
       헤더가 화면 맨 위에 딱 붙는다(정지 상태와 뜬 모양이 달라짐). 12 로 맞춰 두 상태를 같게 만든다.
       그래서 스크롤 중 헤더 하단 = 12 + 126 = 138 = --sk-hdr-h (사이드바 sticky 기준선과 정확히 일치). */
    position: sticky; top: 12px; left: 0; z-index: 60;
    width: auto;
    margin: 12px 1.25rem 0;
    padding: 0 20px;
    background: linear-gradient(180deg, #3a2a70 0%, #2b1f56 100%);
    border: 1px solid rgba(255, 255, 255, .09);
    border-radius: 18px;
    box-shadow: 0 14px 34px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .07);
    overflow: hidden;   /* 라운드 안쪽으로 행 배경이 삐져나오지 않게 */
}
/* 행 공통 — 위 layout.css 의 hdr_row 배경(#2e2f3b)·좌우 패딩을 무력화(패널이 배경을 갖는다) */
.pc_header .hdr_row { background: transparent; padding: 0; gap: 12px; }

/* ── B1-1. Row0 = 시계 / 공지 티커 / 유틸 / 액션 ──────────────────────── */
.pc_header .hdr_row0 {
    height: 46px; min-height: 46px;
    display: flex; align-items: center;
    border-bottom: 1px solid rgba(255, 255, 255, .07);
}
.pc_header .hdr_clock {
    flex: 0 0 auto;
    display: inline-flex; align-items: center; gap: 8px;
    color: #ded5ff; font-size: 12.5px; font-weight: 600; letter-spacing: .2px;
    font-variant-numeric: tabular-nums;   /* 초가 바뀔 때 폭이 흔들리지 않게 */
}
.pc_header .hdr_clock i { color: var(--app-primary-light); font-size: 14px; }
/* 시계와 유틸 사이 = 시안에서는 빈 공간. 공지가 설정돼 있으면 그 자리를 티커가 쓴다(빈칸 낭비 0). */
.pc_header .hdr_row0 .hdr_notice {
    flex: 1 1 auto; min-width: 0;
    height: 30px; margin: 0 8px;
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .06);
    border-radius: 8px;
}
.pc_header .hdr_row0 .hdr_notice_tag { color: var(--app-primary-light); font-size: 11.5px; }

/* 유틸 링크 줄 — 아이콘 타일 + 라벨. 시안 = 우측 정렬. */
.pc_header .hdr_utils {
    margin-left: auto; flex: 0 1 auto; min-width: 0;
    display: flex; align-items: center; gap: 2px;
}
.pc_header .hdr_util {
    display: inline-flex; align-items: center; gap: 6px;
    height: 32px; padding: 0 9px;
    border: 0; background: transparent; border-radius: 8px;
    color: #e9e3ff; font-size: 12.5px; font-weight: 600; white-space: nowrap;
    cursor: pointer; transition: background .15s, color .15s;
}
.pc_header .hdr_util:hover { background: rgba(255, 255, 255, .09); color: #fff; }
.pc_header .hdr_util_ico {
    width: 20px; height: 20px; flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 6px; font-size: 10.5px; color: #fff;
}

/* ── B1-2. 액션(인증/머니) — 46px 행에 맞춘 축소판.
   ⚠️ 위 C2-SKIN 은 hdr_btn 을 60×60(80px 행 기준)으로 잡는다 → Row0 스코프로 전부 다시 잡는다. */
.pc_header .hdr_actions { margin-left: 8px; flex: 0 0 auto; gap: 6px; }
.pc_header .hdr_row0 .hdr_btn {
    height: 30px; min-width: 0; padding: 0 14px;
    border-radius: 8px; border: 1px solid transparent;
    font-size: 12.5px; font-weight: 800;
    background: rgba(255, 255, 255, .07); color: #e9e3ff;
}
.pc_header .hdr_row0 .hdr_btn:hover { background: rgba(255, 255, 255, .13); }
.pc_header .hdr_row0 .hdr_btn_icon { width: 30px; min-width: 30px; padding: 0; }
.pc_header .hdr_row0 .hdr_btn_icon svg,
.pc_header .hdr_row0 .hdr_btn_logout svg { width: 16px; height: 16px; }
/* 시안 3버튼 — 로그인(밝은 보라) · 회원가입(진한 보라) · 무기명(어두운 아웃라인) */
.pc_header .hdr_row0 .hdr_btn_login  { background: linear-gradient(180deg, #9366ff, #6d3ce6); border-color: #7c4dff; color: #fff; }
.pc_header .hdr_row0 .hdr_btn_login:hover { background: linear-gradient(180deg, #a077ff, #7b4bf0); }
.pc_header .hdr_row0 .hdr_btn_signup { background: linear-gradient(180deg, #7b4bf0, #5a2ec2); border-color: #6f3fe0; color: #fff; }
.pc_header .hdr_row0 .hdr_btn_signup:hover { background: linear-gradient(180deg, #8a5cf5, #6a3cd4); }
.pc_header .hdr_row0 .hdr_btn_anon   { background: #241a48; border-color: #4c3a86; color: #d6ccf7; }
.pc_header .hdr_row0 .hdr_btn_anon:hover { background: #2e2258; color: #fff; }
.pc_header .hdr_row0 .hdr_btn_charge { background: linear-gradient(180deg, #9366ff, #6d3ce6); border-color: #7c4dff; color: #fff; }
.pc_header .hdr_row0 .hdr_btn_exchange { background: transparent; border-color: #6f3fe0; color: var(--app-primary-light); }
/* 로그인 후 머니/포인트 알약 — 30px 행 높이에 맞춤(구 44/60 → 30) */
.pc_header .hdr_row0 .sk_money { height: 30px; padding-left: 6px; border-radius: 8px; background: rgba(255, 255, 255, .06); }
.pc_header .hdr_row0 .sk_money_coin { width: 20px; height: 20px; font-size: 11px; }
.pc_header .hdr_row0 .sk_money_val { font-size: 13px; min-width: 60px; }
.pc_header .hdr_row0 .sk_money_caret { width: 24px; height: 24px; }
.pc_header .hdr_row0 .app-header-login-input { height: 30px; border-width: 1px; border-radius: 8px; font-size: 12.5px; }

/* ── B1-3. Row1 = 로고 + 게임 메뉴(GNB) ─────────────────────────────── */
.pc_header .hdr_row1 {
    height: 78px; min-height: 78px;
    display: flex; align-items: center; gap: 18px;
    border-bottom: 0;
}
.pc_header .sk_hdr_brand { gap: 10px; }
/* 시안에는 햄버거가 없다 — 접기 토글은 마크업 유지하되 PC 에서만 감춘다(≤1024 는 모바일 헤더 담당이라 영향 0). */
.pc_header .sk_hdr_menu { display: none; }
.pc_header .sk_hdr_logo img { max-height: 62px; }

.pc_header .hdr_gnb_items {
    flex: 1 1 auto; min-width: 0;
    display: flex; align-items: center; gap: 4px;
    overflow-x: auto; overflow-y: hidden;   /* 좁은 화면에서 줄바꿈 대신 가로 스크롤(행 높이 고정 유지) */
    scrollbar-width: none;
}
.pc_header .hdr_gnb_items::-webkit-scrollbar { display: none; }
.pc_header .hdr_gnb_item {
    display: inline-flex; align-items: center; gap: 8px;
    height: 46px; padding: 0 13px; border-radius: 10px;
    color: #f2eeff; font-size: 14px; font-weight: 700; text-decoration: none; white-space: nowrap;
    transition: background .15s, color .15s;
}
.pc_header .hdr_gnb_item:hover { background: rgba(255, 255, 255, .09); color: #fff; }
.pc_header .hdr_gnb_item.active {
    background: rgba(124, 77, 255, .22);
    box-shadow: inset 0 0 0 1px rgba(169, 139, 255, .45);
}
.pc_header .hdr_gnb_ico {
    width: 26px; height: 26px; flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 8px; font-size: 13px; color: #fff;
}

/* 좁은 PC(1025~1500) — 유틸 라벨을 접어 아이콘만 남긴다(줄바꿈·잘림 방지). */
@media (max-width: 1500px) {
    .pc_header .hdr_util span { display: none; }
    .pc_header .hdr_util { padding: 0 6px; }
}
@media (max-width: 1280px) {
    .pc_header .hdr_gnb_item { font-size: 13px; padding: 0 10px; gap: 6px; }
    .pc_header .sk_hdr_logo img { max-height: 52px; }
}

/* ── B2. 아이콘 타일 색 팔레트 — 헤더 유틸/GNB · 사이드바 메뉴 공용 ─────
   시안의 "메뉴마다 다른 색 아이콘"을 재현한다. 클래스 하나로 헤더·사이드바 양쪽에 붙는다. */
.tone_green  { background: linear-gradient(180deg, #34d399, #10a37f); }
.tone_gold   { background: linear-gradient(180deg, #fbbf24, #e08c0b); }
.tone_amber  { background: linear-gradient(180deg, #fcd34d, #f0a91c); color: #3b2600; }
.tone_blue   { background: linear-gradient(180deg, #60a5fa, #2f6fe4); }
.tone_sky    { background: linear-gradient(180deg, #38bdf8, #0e8fd0); }
.tone_cyan   { background: linear-gradient(180deg, #22d3ee, #0aa5c0); }
.tone_violet { background: linear-gradient(180deg, #a78bfa, #7c3aed); }
.tone_pink   { background: linear-gradient(180deg, #f472b6, #db2777); }
.tone_red    { background: linear-gradient(180deg, #fb7185, #e11d48); }
.tone_orange { background: linear-gradient(180deg, #fb923c, #ea6c14); }
.tone_lime   { background: linear-gradient(180deg, #a3e635, #65a30d); color: #1a2a00; }

/* ── B3. 좌측 사이드바 — 시안: 바깥 카드 없음 · **블록 자체가 카드** 2벌 ───── */
.page_shell > .league_sidebar,
.league_sidebar {
    min-width: 300px; max-width: 320px;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    gap: 12px;
    overflow-y: auto; overflow-x: hidden;
    scrollbar-width: thin;
}
@media (min-width: 1536px) { .league_sidebar { min-width: 320px; } }

/* 비로그인 = 유저 카드 미노출(시안) — 마크업은 그대로, 표시만 끈다. */
.league_sidebar .sk_user_card.is_guest { display: none; }
.league_sidebar .sk_user_card { background: linear-gradient(180deg, #2c2059, #241a48); border-color: var(--app-border); border-radius: 14px; }

/* 메뉴 블록 = 카드. 구 C2-SKIN 의 "투명 블록 + 블록 사이 구분선" 을 되돌린다. */
.league_sidebar .side_menu_block {
    padding: 8px;
    background: linear-gradient(180deg, #2a1f54, #221846);
    border: 1px solid var(--app-border);
    border-radius: 14px;
    box-shadow: 0 8px 22px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255, 255, 255, .05);
    gap: 2px;
}
.league_sidebar .sk_bnimg_grid + .side_menu_block,
.league_sidebar .side_menu_block + .side_menu_block { padding-top: 8px; }
.league_sidebar .sk_bnimg_grid + .side_menu_block::before,
.league_sidebar .side_menu_block + .side_menu_block::before { content: none; }

.league_sidebar .side_menu_item {
    position: relative;
    height: 46px; padding: 0 12px; gap: 12px;
    background: transparent; border: 0; border-radius: 10px;
    color: #ece7fb; font-size: 14px; font-weight: 600;
    transition: background .15s, color .15s;
}
.league_sidebar .side_menu_item:hover {
    background: rgba(255, 255, 255, .07);
    border-color: transparent; transform: none; box-shadow: none; color: #fff;
}
.league_sidebar .side_menu_item.on {
    background: rgba(124, 77, 255, .22);
    border-color: transparent;
    box-shadow: inset 0 0 0 1px rgba(169, 139, 255, .40);
    color: #fff;
}
/* 아이콘 = FA 타일(색은 tone_*). 구 30px SVG 원형 규칙과 크기 축을 맞춘다. */
.league_sidebar .side_menu_ico_fa {
    width: 26px; height: 26px; flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 8px; font-size: 13px; color: #fff;
}
.league_sidebar .side_menu_item:hover .side_menu_ico_fa { transform: none; }
/* 시안 스포츠 항목의 아래 화살표 — 펼침 상태가 아니라 장식(하위 트리는 아래 리그 트리가 담당). */
/* S7-SPORTS-TREE(2026-09-06 지시) · 모바일 드로어의 스포츠 펼침 트리 — 하위 5표면(국내형·크로스·스페셜·실시간·인플레이).
   PC 는 헤더 GNB 가 표면을 주므로 마크업 자체가 IsNarrow 일 때만 나온다(이 규칙은 모바일 폭에서만 의미). */
.league_sidebar .side_menu_item.has_caret.tree_open::after { content: "\f077"; color: var(--app-primary-light); }
.league_sidebar .side_sub_menu { display: flex; flex-direction: column; gap: 6px; padding: 0 0 2px 22px; }
.league_sidebar .side_sub_item { height: 44px; padding: 0 14px; font-size: 13px; font-weight: 600; border-radius: 10px; }
.league_sidebar .side_sub_item::before { content: "\f105"; font-family: "Font Awesome 5 Free"; font-weight: 900; font-size: 11px; color: var(--app-text-muted); margin-right: 2px; }
.league_sidebar .side_sub_item.on::before { color: #fff; }
.league_sidebar .side_menu_item.has_caret::after {
    content: "\f078";
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    margin-left: auto; font-size: 11px; color: var(--app-text-muted);
}

/* ── B3-2. 텔레그램 고객센터 배너 — 시안 좌측 하단. DOM 순서상 메뉴 위에 있어 order 로 내린다.
   (.league_sidebar 는 flex column 이라 order 만으로 시각 순서가 바뀐다 — 마크업 이동 0) */
.league_sidebar .sk_bnimg_grid { order: 3; gap: 10px; }
.league_sidebar .app-social-buttons { display: flex; flex-direction: column; gap: 10px; }
.league_sidebar .app-social-btn {
    display: flex; align-items: center; gap: 12px;
    height: 62px; padding: 0 16px;
    border-radius: 14px; text-decoration: none;
    color: #fff; font-size: 15px; font-weight: 800; letter-spacing: -.2px;
    box-shadow: 0 8px 22px rgba(0, 0, 0, .35);
    transition: filter .15s, transform .12s;
}
.league_sidebar .app-social-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.league_sidebar .app-social-telegram { background: linear-gradient(100deg, #6d3ce6 0%, #9a5cff 60%, #b98bff 100%); }
.league_sidebar .app-social-kakao    { background: linear-gradient(100deg, #4a3a86 0%, #6d5bb8 100%); }
/* 아이콘 = 우측 원형 뱃지(시안) — 마크업 순서(아이콘 → 문구)를 order 로 뒤집는다. */
.league_sidebar .app-social-btn svg {
    order: 2; margin-left: auto;
    width: 38px; height: 38px; padding: 8px;
    border-radius: 50%; background: rgba(255, 255, 255, .18);
}
.league_sidebar .app-social-btn span { order: 1; }
.league_sidebar .app-social-telegram span::after { content: " 고객센터"; }

/* ── B4. 홈 ─────────────────────────────────────────────────────────── */
/* 시안 = 배너 바로 아래 인기 종목 섹션. C2-SKIN 이 껐던 섹션을 되살린다. */
.home_section.home_pop_section { display: block !important; }   /* 위 C2-SKIN 의 `display:none !important` 를 되돌리려면 같은 !important 가 필요하다 */
.home_index > .main_banner_wrap { border-radius: 14px; border-color: rgba(255, 255, 255, .08); }

.home_sec_title { display: flex; align-items: baseline; gap: .32em; font-size: 18px; font-weight: 800; color: #fff; }
.home_sec_title .accent { color: #fff; }

/* 종목 칩 줄 — 원형 아이콘 + 라이브 알약 */
.pop_chips { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 2px 0 16px; }
.pop_chip {
    width: 42px;
    height: 42px;
    padding: 0;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    cursor: pointer;
    background: linear-gradient(180deg, #737373, #353535);
    border: 1px solid var(--app-border);
    transition: border-color .15s, box-shadow .15s, transform .12s;
}
.pop_chip img { width: 22px; height: 22px; object-fit: contain; }
.pop_chip:hover { border-color: var(--app-primary); transform: translateY(-1px); }
    .pop_chip.on {
        background: linear-gradient(180deg, #a8f52e, #c5cf28);
        border-color: #8b8063;
        box-shadow: 0 0 0 3px var(--app-primary-tint);
    }
.pop_chip_live {
    width: auto; border-radius: 21px; gap: 8px; padding: 0 16px 0 10px;
    text-decoration: none; color: #fff; font-size: 13px; font-weight: 700;
}
.pop_chip_live em {
    font-style: normal; font-size: 9px; font-weight: 900; letter-spacing: .5px;
    background: #e11d48; color: #fff; border-radius: 4px; padding: 3px 5px;
}
/* 0건 안내 — 시안: 카드 없이 넓은 여백 가운데 한 줄 */
.pop_empty {
    min-height: 240px;
    display: flex; align-items: center; justify-content: center;
    color: var(--app-text-muted); font-size: 14px;
}

/* 공지/이벤트 썸네일 = 시안처럼 큼직한 2장(구 4장 축소 노출) */
.sk_thumb_strip { --vis: 2; }
@media (max-width: 1280px) { .sk_thumb_strip { --vis: 2; } }
@media (max-width: 900px)  { .sk_thumb_strip { --vis: 1.2; } }

/* 섹션 도구 버튼(이전/다음 · 전체보기) 톤 */
.home_more, .info_more, .strip_nav {
    background: rgba(255, 255, 255, .07);
    border: 1px solid var(--app-border);
    color: var(--app-text-secondary);
}
.home_more:hover, .info_more:hover, .strip_nav:hover { background: var(--app-primary); border-color: var(--app-primary); color: #fff; }

/* ── B5. 잔여 핑크 하드코딩 정리(토큰을 안 쓰던 지점만) ──────────────── */
.sk_modal {
    box-shadow: 0 0 0 1px rgba(124, 77, 255, .30), 0 0 32px rgba(124, 77, 255, .12),
                0 30px 80px rgba(0, 0, 0, .65), inset 0 1px 0 rgba(255, 255, 255, .05);
}
.sk_feed_row.is_new .sk_feed_no { box-shadow: 0 0 0 2px rgba(124, 77, 255, .28); }
.sk_feed_no { background: linear-gradient(180deg, #2c2158, #1e1542); border-color: var(--app-border); }
@keyframes c2FeedIn {
    0%   { background: rgba(124, 77, 255, .28); box-shadow: inset 3px 0 0 var(--app-primary); transform: translateY(6px); opacity: .2; }
    35%  { transform: translateY(0); opacity: 1; }
    100% { background: transparent; box-shadow: inset 3px 0 0 transparent; }
}
.sk_feed_panel { background: linear-gradient(180deg, #2a1f54, #221846); border-color: var(--app-border); }
.info_panel, .home_cat_card { border-color: var(--app-border); }
.info_head { background: rgba(255, 255, 255, .04); border-bottom-color: var(--app-border); }

/* ── B6. 모바일(≤1024) — PC 헤더는 partner.css 가 숨기고 mobile_header 가 대체.
   여기서는 좌측바가 전폭 카드가 되도록 여백만 맞춘다. */
@media (max-width: 1024px) {
    .page_shell > .league_sidebar,
    .league_sidebar { margin-left: 0; margin-right: 0; min-width: 280px; padding: 10px; background: transparent; }
    .league_sidebar .side_menu_block { border-radius: 12px; }
}

/* ── B7. 로그인·가입·알림 모달 — **토큰을 안 쓰고 리터럴 색을 박아둔** 지점만 보정 ─────
   근거: 원본 파일(app-login.css / app-login-modal.css / app-alert-modal.css)에 남아 있던
   슬레이트 네이비(#0f172a·#1e293b)와 골드(#eb9d25)는 --app-* 를 거치지 않아 §0 토큰 전환이 닿지 않는다.
   ⚠️ 원본 파일은 손대지 않는다(다른 미러 공용) — 스킨에서만 덮는다. */
.app-login-modal { background: rgba(36, 26, 72, .96); border-color: var(--app-border-soft); }
.login_btn_primary { background: linear-gradient(180deg, #9366ff, #6d3ce6); color: #fff; }
.login_btn_sub { background: var(--app-bg-panel-2); border-color: var(--app-border); color: var(--app-text-primary); }
/* ⚠️ .app-alert-modal 은 **의도된 밝은(흰) 모달**이다(제목·본문 글자색이 어둠) — 배경을 어둡게 덮으면 글이 사라진다.
   확인 버튼(슬레이트 #1e293b)만 브랜드색으로 바꾼다. */
.app-alert-btn { background: linear-gradient(180deg, #9366ff, #6d3ce6); }


/* =====================================================================
   BETSIN 2차 — ① 스크롤 시 헤더 뒤 본문 비침 차단 ② 이벤트/공지 2열 패널
   ===================================================================== */

/* ── B8. 헤더 상단 띠 — 스크롤한 본문이 헤더 **위/옆으로 비쳐 보이던** 문제 ─────────
   원인: 헤더는 `margin:12px 1.25rem 0` 로 **떠 있는 라운드 패널**이라
         ⓐ 뷰포트 top 0~12px 띠 ⓑ 좌우 여백(20px) ⓒ 둥근 모서리 바깥
         — 이 세 군데가 뚫려 있어 sticky 로 고정돼도 그 틈으로 본문이 지나간다.
         (헤더 배경 자체는 불투명이므로 "반투명" 문제가 아니다.)
   해법: 헤더와 같은 stacking context 안에 **뷰포트 고정 가림막**을 깔아 헤더 밴드 전체를 덮는다.
         · `position:fixed` + `z-index:-1` → 헤더 콘텐츠 **뒤**, 본문 **앞**에 그려진다
           (.pc_header 가 z-index:60 으로 stacking context 를 만들므로 -1 이 밖으로 새지 않는다).
         · 배경은 body 와 **완전히 같은 선언**을 쓴다. body 가 `background-attachment: fixed` 라
           둘 다 뷰포트 기준으로 그려져 그라디언트가 픽셀 단위로 이어진다(이음매 0).
   ⚠️ 높이는 --sk-hdr-h(=12+126) 정본을 그대로 쓴다. 행 높이를 바꾸면 여기도 자동 추종. */
.pc_header.sk_hdr_top::before {
    content: "";
    position: fixed;
    top: 0; left: 0; right: 0;
    height: var(--sk-hdr-h);
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(1100px 620px at 50% 22%, rgba(124, 77, 255, .30), transparent 68%),
        radial-gradient(900px 560px at 88% 62%, rgba(168, 85, 247, .18), transparent 70%),
        linear-gradient(180deg, #1c1340 0%, #150e2b 55%, #120b24 100%);
    background-attachment: fixed;
    background-color: var(--app-bg-root);
}
/* ⚠️ overflow:hidden 은 fixed 자식을 자르지 않지만(변환/필터가 없어서), 의도를 분명히 하기 위해 해제한다.
   행 배경이 전부 transparent 라 라운드 밖으로 삐져나갈 것도 없다. */
.pc_header.sk_hdr_top { overflow: visible; }

/* 좌측바도 같은 이유로 sticky 상단이 헤더 밴드에 물린다 — 밴드가 위를 덮으므로 추가 조치 불필요.
   단 앵커 이동(태그 칩 등)이 헤더에 가리지 않도록 스크롤 여백을 헤더 높이로 준다. */
:root { scroll-padding-top: calc(var(--sk-hdr-h) + 12px); }
.home_section, .sk_tag_section { scroll-margin-top: calc(var(--sk-hdr-h) + 12px); }

/* ── B9. 이벤트 / 공지사항 2열 — **c3 판 그대로 이식**(지시 2026-09-02) ────────────
   구 BETSIN 1차판(네온 아트 타이틀 + 큰 그라디언트 카드)은 "너무 정신없다"는 지시로 폐기.
   c3 원본(app-skin.css `.sk_info_grid` 블록)을 클래스명까지 그대로 가져오고, 색만 c4 토큰 경유로 바꾼다.
   구조 요지: **패널에 카드 프레임이 없다** — 배경/테두리/패딩 0. 대신 **행 하나하나가 알약**이다.
   ⚠️ 머리만 c3 와 다르다 — `info_head`(h3+앵커) 대신 `home_sec_head` 관용구(지시).
      그래서 제목·「+ 전체보기」 스타일은 app-home.css 전역 규칙이 그대로 먹는다(여기서 다시 정의하지 않음). */
.sk_info_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.sk_info_grid .info_panel { background: transparent; border: 0; padding: 0; border-radius: 0; box-shadow: none; overflow: visible; }

/* 목록 = 행 5개 높이 고정 + 넘치면 스크롤(c3 정본 산식: 행 44 × 5 + 간격 8 × 4). */
.sk_info_grid .hp_list {
    display: flex; flex-direction: column; gap: 8px;
    margin: 0; padding: 0; list-style: none;
    height: calc(44px * 5 + 8px * 4);
    overflow-y: auto; scrollbar-width: thin; padding-right: 2px;
}
.sk_info_grid .info_row { border: 0; }
.sk_info_grid .info_row + .info_row { border-top: 0; }
.sk_info_grid .info_row a {
    display: flex; align-items: center; gap: 12px;
    height: 44px; padding: 0 14px; border-radius: 10px; text-decoration: none;
    background: var(--app-bg-panel-2); border: 1px solid var(--app-border); color: var(--app-text-primary);
}
.sk_info_grid .info_row a:hover { border-color: var(--app-primary-light); background: var(--app-bg-panel-3); }
.sk_info_grid .info_tag {
    min-width: 64px; height: 26px; padding: 0 10px; border-radius: 6px; border: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 800; color: #fff;
    background: linear-gradient(180deg, #8b5cf6, #5b21b6);
}
.sk_info_grid .info_subject {
    flex: 1 1 auto; min-width: 0;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 13px; font-weight: 500; color: var(--app-text-primary);
}
.sk_info_grid .info_empty { padding: 20px; text-align: center; color: var(--app-text-muted); font-size: 13px; }

@media (max-width: 900px) {
    .sk_info_grid { grid-template-columns: 1fr; gap: 20px; }
}

/* ── B10. 접힘 레일(파트너 경로 기본 · html.sb_folded ≥1025) 정합 ──────────────────
   🔴 잘림 원인(실측): 구 규칙의 항목은 **고정 60px** 인데, BETSIN 에서 블록을 카드로 만들며 padding 이 생겨
      블록 안쪽이 그보다 좁아졌다. 게다가 접힘 레일에는 **세로 스크롤바가 12px** 를 더 먹는다
      (88 − 사이드바 padding 16 = 72 → 스크롤바 12 = 블록 60 → padding 6×2 = **안쪽 48**. 항목 60 이 12px 넘침).
      → 항목을 **고정폭 대신 블록을 채우게**(width:auto) 바꾼다. 스크롤바 유무로 폭이 변해도 항상 맞는다.
   ⚠️ 구 규칙의 `width:60px; margin:0 auto` 를 여기서 되돌리는 것이므로 두 선언을 같이 지운다. */
@media (min-width: 1025px) {
    html.sb_folded .page_shell .league_sidebar .side_menu_block {
        padding: 6px; border-radius: 12px; gap: 6px;
    }
    html.sb_folded .page_shell .league_sidebar .side_menu_item { width: auto; margin: 0; height: 56px; }
    /* 접힘은 아이콘만 보이는 레일 — 타일을 키워 알아보게 한다(펼침 26 → 접힘 34). */
    html.sb_folded .page_shell .league_sidebar .side_menu_ico_fa { width: 34px; height: 34px; font-size: 16px; }
    /* 「스포츠 ▼」 장식은 라벨이 있을 때만 의미가 있다. 접힘에선 margin-left:auto 로 아이콘을 밀어 잘림을 만든다. */
    html.sb_folded .page_shell .league_sidebar .side_menu_item.has_caret::after { content: none; }
    /* 툴팁 말풍선 = 구 핑크 하드코딩 → 브랜드 보라. */
    html.sb_folded .page_shell .league_sidebar .side_menu_item[data-tip]::after {
        background: linear-gradient(180deg, #9366ff, #6d3ce6);
        box-shadow: 0 8px 24px rgba(124, 77, 255, .45), 0 0 0 1px rgba(255, 255, 255, .08);
    }
    html.sb_folded .page_shell .league_sidebar .side_menu_item[data-tip]::before { border-right-color: #9366ff; }
    /* 접힘의 유저 카드 = 아바타 한 장만 남는 자리 — 카드 테두리가 아바타 테두리와 겹쳐 이중 링이 된다. */
    html.sb_folded .page_shell .league_sidebar .sk_user_card { background: transparent; border: 0; box-shadow: none; }
}

/* ── B11. 레벨 메달 아바타 — 테두리 제거(지시) ────────────────────────────────
   메달 PNG 자체가 원형 링을 갖고 있어서, 구 규칙의 `border 2px` + 사각 배경 + `img padding 4px` 가
   그 위에 링을 한 겹 더 쌓아 "테두리가 겹층"으로 보였다. 이미지 하나만 남긴다.
   ⚠️ 비로그인(guest) 아바타는 이 클래스가 없어 기존 톤 유지 — 어차피 `is_guest` 로 숨겨져 있다. */
.league_sidebar .sk_user_avatar_lv {
    border: 0; background: transparent; box-shadow: none;
}
.league_sidebar .sk_user_avatar_lv img { padding: 0; width: 100%; height: 100%; object-fit: contain; }

/* ── B12. 로그인 모달 소셜 버튼(텔레그램/카카오) — airplane 벤치마킹 ──────────────
   🔴 근본 원인은 CSS 가 아니라 **스코프 CSS 번들 404** 였다(App.razor 에서 수정 — 어셈블리명 파생).
      `SocialContactButtons.razor.css` 는 c4 에도 airplane 과 **글자 하나 다르지 않게** 있었지만,
      링크가 `awaken.frontend.blazor.front.styles.css` 하드코딩이라 c4(어셈블리명 …front.c4)에서 404 →
      전 스코프 CSS 미적용 → 버튼이 기본 링크 모양으로 나왔다. 그 수정으로 기본 톤(텔레 파랑/카카오 노랑)이 살아난다.
   여기 규칙은 airplane `app-login-modal.css` 의 **모달 전용 배치**만 이식한 것:
     둘 다 ON = 반반 / 하나만 = 가운데(최대 절반 폭).
   ⚠️ airplane 의 `lm_air`(흰 글래스 카드) 톤은 가져오지 않는다 — 그건 airplane 전용 스킨이고 c4 는 다크 퍼플이다.
      대신 어두운 모달 위에서 뜨도록 테두리/그림자만 얹는다. */
.app-login-modal .app-social-buttons { display: flex; gap: 8px; justify-content: center; margin-top: 6px; }
.app-login-modal .app-social-buttons .app-social-btn { flex: 1 1 0; min-width: 0; display: flex; align-items: center; justify-content: center; }
.app-login-modal .app-social-buttons .app-social-btn:only-child { flex: 0 0 50%; }
.app-login-modal .app-social-banner-img { width: 100%; height: auto; display: block; }
.app-login-modal .app-social-btn { border: 1px solid rgba(255, 255, 255, .14); box-shadow: 0 6px 16px rgba(0, 0, 0, .35); }

/* ── B13. 미니게임 모달(지시 2026-09-02 2차) ────────────────────────────────────
   Mini 페이지는 iframe(원본 830×641 · scale) + 자기 카트(aside 260)를 함께 그린다 → 기본 폭 960 으로는 눌린다.
   ⚠️ 모바일(≤900)은 기존 풀스크린 시트 규칙이 그대로 이긴다(여기서 건드리지 않음). */
.sk_modal_mini { width: min(1400px, 100%); }
.sk_modal_mini .sk_modal_body { padding: 12px 16px 20px; }


/* =====================================================================
   BETSIN-D · c2 차별화 (지시 2026-09-02) — ① 좌측바 제거·전폭 / ③ 각진 + 듀오톤
   ===================================================================== */

/* ── D1. 좌측바를 쓰지 않는 라우트 = PC 전폭 ────────────────────────────────
   마커(`no_side`)는 MainLayout `HasSideNav` 가 붙인다. 남기는 곳 = 스포츠 5표면 + 파트너.
   🔴 **≥1025 한정**이다. ≤1024 에서 감추면 모바일 드로어(=같은 .league_sidebar)가 열려도 안 보인다.
      드로어는 `left:-80vw` 오프캔버스로 이미 화면 밖이라, PC 에서만 끄면 모바일은 무영향. */
@media (min-width: 1025px) {
    .page_shell.no_side > .league_sidebar { display: none; }

    /* ⚠️ 본문에 max-width 를 걸지 **않는다**. 헤더는 셸 밖 형제라 같은 상한을 못 받는데,
       본문만 가운데로 모으면 초광폭에서 헤더는 전폭·본문은 중앙이 되어 축이 어긋난다.
       전폭 + 좌우 1.25rem 여백(헤더와 동일)으로 통일한다 — 시안(벳신)도 풀블리드다.
       상한이 필요해지면 **헤더와 본문에 같이** 걸 것. */

    /* 좌측바가 빠진 만큼(≈300px) 스트립 노출 수를 한 칸씩 올려 빈 폭을 메운다.
       ⚠️ `--vis` 가 노출 개수 **정본**이고 JS(appStrip)가 이 값을 읽는다 — 산식은 손대지 않는다.
       ⚠️ `!important` 금지: 슬롯(StripCols=5)·태그 스트립(7)은 **인라인 style** 로 자기 값을 갖는데
          여기서 강제하면 그 계약을 덮어쓴다. 클래스 구체성만 올려 기본값만 바꾼다. */
    .page_shell.no_side .pop_strip { --vis: 4; }
    .page_shell.no_side .gwrap { --vis: 5; }
}

/* ── D3-1. 각진 축 — 라운드 18/14/10 → 3~5px ─────────────────────────────
   c2(=sugar)와 c4 가 공유하던 "둥근 카드" 인상을 끊는 지점. 토큰부터 내리고,
   토큰을 안 쓰고 리터럴 radius 를 박아둔 지점만 아래에서 개별로 다시 잡는다. */
:root {
    --app-radius-sm: 3px;
    --app-radius-md: 4px;
    --app-radius-lg: 5px;
    /* 듀오톤 2번째 축 — 시안(cyan). 보라(--app-primary)가 주, 이쪽은 강조·상태 표시용. */
    --app-accent-2: #22d3ee;
    --app-accent-2-soft: #67e8f9;
    --app-accent-2-tint: rgba(34, 211, 238, .14);
}

/* 헤더 셸·행 요소 */
.pc_header.sk_hdr_top { border-radius: 5px; }
.pc_header .hdr_row0 .hdr_btn,
.pc_header .hdr_util,
.pc_header .hdr_util_ico,
.pc_header .hdr_gnb_item,
.pc_header .hdr_gnb_ico,
.pc_header .hdr_row0 .hdr_notice,
.pc_header .hdr_row0 .sk_money,
.pc_header .hdr_row0 .app-header-login-input { border-radius: 3px; }

/* 좌측바(스포츠 표면·모바일 드로어에 남는다) */
.league_sidebar .side_menu_block,
.league_sidebar .sk_user_card,
.league_sidebar .app-social-btn { border-radius: 5px; }
.league_sidebar .side_menu_item,
.league_sidebar .side_menu_ico_fa { border-radius: 3px; }

/* 홈 */
.home_index > .main_banner_wrap { border-radius: 5px; }
.sk_info_grid .info_row a { border-radius: 3px; }
.sk_info_grid .info_tag { border-radius: 2px; }
.home_more, .info_more, .strip_nav { border-radius: 3px; }
.home_cat_card, .info_panel, .sk_feed_panel { border-radius: 5px; }
/* 종목 칩 = 시안에서는 원형이었다. 각진 축에서는 정사각 라운드로 통일한다(이 회차의 핵심 변화점 중 하나). */
.pop_chip { border-radius: 5px; }
.pop_chip_live { border-radius: 5px; }

/* 모달 */
.sk_modal { border-radius: 6px; }

/* ── D3-2. 듀오톤 — 보라(주) + 시안(보조) ────────────────────────────────
   원칙: **면적은 보라, 신호는 시안**. 활성·선택·hover 처럼 "지금 여기"를 가리키는 것만 시안으로 준다.
   두 색이 같은 면적을 다투면 촌스러워지므로 시안을 배경 대면적에는 쓰지 않는다. */

/* 헤더 상단 헤어라인 = 시안(패널 위쪽 1px) — 브랜드 인상을 가장 싸게 바꾸는 지점 */
.pc_header.sk_hdr_top { border-top: 1px solid rgba(34, 211, 238, .55); }

/* GNB 활성 = 보라 채움 + 시안 밑줄(둘을 겹쳐 듀오톤이 한 요소 안에서 읽히게) */
.pc_header .hdr_gnb_item.active {
    background: rgba(124, 77, 255, .20);
    box-shadow: inset 0 -2px 0 var(--app-accent-2), inset 0 0 0 1px rgba(169, 139, 255, .35);
}
.pc_header .hdr_util:hover { box-shadow: inset 0 -2px 0 var(--app-accent-2); }

/* 좌측바 활성 = 좌측 시안 바 */
.league_sidebar .side_menu_item.on {
    background: rgba(124, 77, 255, .20);
    box-shadow: inset 3px 0 0 var(--app-accent-2), inset 0 0 0 1px rgba(169, 139, 255, .30);
}

/* 섹션 제목의 강조 어절 = 시안(구 흰색 — 듀오톤 도입 지점) */
.home_sec_title .accent { color: var(--app-accent-2); }

/* 선택 상태 = 시안 */
.pop_chip.on {
    background: linear-gradient(180deg, #2ee0f5, #12a7c2);
    border-color: var(--app-accent-2-soft);
    box-shadow: 0 0 0 3px var(--app-accent-2-tint);
}
.pop_chip:hover { border-color: var(--app-accent-2); }
.home_more:hover, .info_more:hover, .strip_nav:hover {
    background: transparent; border-color: var(--app-accent-2); color: var(--app-accent-2);
}

/* 이벤트/공지 태그 = 좌 보라 / 우 시안(2열이 서로 구분되게 — 듀오톤의 실용적 소비처) */
.sk_info_grid .info_panel:nth-child(2) .info_tag { background: linear-gradient(180deg, #22d3ee, #0a7f96); color: #04222a; }
.sk_info_grid .info_row a:hover { border-color: var(--app-accent-2); background: var(--app-bg-panel-3); }

/* ── D3-3. 전용 디스플레이 폰트 — Arita-dotum ────────────────────────────
   c2·c4 는 둘 다 본문 폰트가 A2Z 다. **제목/메뉴만** 다른 얼굴로 갈아 끼워 타이포로도 갈린다.
   ⚠️ 자산은 이미 있다(`wwwroot/fonts/Arita-dotum-Medium.woff` — 구 선언만 제거된 상태).
   ⚠️ 비용: woff 710KB(woff2 아님). **본문에는 쓰지 않는다** — 제목·GNB·모달 제목에만 건다.
      되돌리려면 아래 `--app-font-display` 값을 `var(--app-font-base)` 로 바꾸면 끝(선언은 남겨둬도 무해). */
@font-face {
    font-family: 'AritaDotum';
    src: url('/fonts/Arita-dotum-Medium.woff') format('woff');
    font-weight: 500;
    font-style: normal;
    font-display: swap;   /* 로드 전에는 A2Z 로 먼저 그린다(FOIT 방지) */
}
:root { --app-font-display: 'AritaDotum', var(--app-font-base); }

.pc_header .hdr_gnb_item,
.home_sec_title,
.sk_modal_title,
.sk_modal_tabs button {
    font-family: var(--app-font-display);
    letter-spacing: -.01em;
}
/* 디스플레이 페이스는 획이 얇아 작은 크기에서 묻힌다 — GNB·제목만 살짝 키우고 굵기를 올린다. */
.pc_header .hdr_gnb_item { font-size: 14.5px; font-weight: 700; }
.home_sec_title { font-size: 19px; font-weight: 700; letter-spacing: 0; }

/* =====================================================================
   S6 · s6 전용 분기(지시 2026-09-02) — c4 와 갈리는 지점만 여기 모은다.
   s6 = 스포츠를 그대로 다루는 미러 / c4 = 카지노 전용. 두 미러의 app-skin.css 는
   이 블록 유무로만 갈린다(위쪽 BETSIN 블록들은 동일하게 유지 — 대조가 쉽도록).
   ===================================================================== */

/* ── S6-1. 헤더 유틸 = **아이콘 + 라벨**(지시 정정) · 문법·치수는 airplane 관용구 ─────
   airplane 정본: `gap:5px · height:32 · padding:0 9px · font-size:12px`
                  `+ .hdr_util i { font-size:13px; color: var(--app-primary) }`
   구 회차에서 잠깐 아이콘만 남겼다가, 지시로 **라벨을 되살렸다**([아이콘]충전 [아이콘]환전 …).
   ⚠️ 구 `hdr_util_ico`/`tone_*` 규칙은 **지우지 않는다** — 좌측 메뉴 아이콘(side_menu_ico_fa)이
      같은 `tone_*` 팔레트를 공유하므로 팔레트 자체는 살아 있어야 한다. */
.pc_header .hdr_util {
    gap: 5px; padding: 0 9px;
    width: auto; min-width: 0;
    justify-content: center;
    font-size: 12px;
    color: var(--app-text-primary);
}
.pc_header .hdr_util > span { display: inline; }
.pc_header .hdr_util i {
    font-size: 13px;
    color: var(--app-primary);
    transition: color .15s;
}
.pc_header .hdr_util:hover i { color: var(--app-primary-light); }
/* 라벨 축소 경계 = airplane 과 같은 1279.98(신규 브레이크포인트 0). 위 1500 분기는 무력화한다. */
@media (max-width: 1500px) {
    .pc_header .hdr_util > span { display: inline; }
    .pc_header .hdr_util { padding: 0 9px; }
}
@media (max-width: 1279.98px) {
    .pc_header .hdr_util > span { display: none; }
    .pc_header .hdr_util { padding: 0 7px; }
}

/* ── S6-2. 로그아웃 = 유틸 줄 맨 끝 아이콘 1개(지시) ─────────────────────────────
   ⚠️ 우측 `hdr_actions` 에 기존 로그아웃 아이콘이 그대로 있다 — 마크업을 지우지 않고 여기서 감춘다
      (핸들러·게이트는 손대지 않고 표시만 한 곳으로 모으는 쪽이 되돌리기 쉽다). */
.pc_header .hdr_util_logout > span { display: none; }
.pc_header .hdr_util_logout { width: 32px; min-width: 32px; padding: 0; }
.pc_header .hdr_util_logout i { color: var(--app-text-muted); }
.pc_header .hdr_util_logout:hover i { color: #fff; }
.pc_header .hdr_actions .hdr_btn_logout { display: none; }

/* ── S6-3. 좌측바 폭 트랜지션 제거 — c4 에서 실측된 결함의 **예방 이식** ─────────
   `transition: min-width .2s, width .2s`(위 2-6 블록) 때문에 폭이 애니메이션되는 동안
   본문 컬럼이 계속 좁아지고, 그 사이 appStrip 이 잰 중간값이 스트립 칸폭으로 픽셀 고정된다
   (c4 실측: 한 화면 안에서 칸폭이 238.75 / 190.4 / 132.57 … 로 제각각).
   s6 는 현재 증상이 안 보이지만 **같은 코드·같은 조건**이라 언제든 재발한다.
   접기/펴기는 파트너 레일 전용이라 즉시 전환이어도 무해하다. */
.page_shell > .league_sidebar,
.league_sidebar { transition: none; }


/* =====================================================================
   S7 · 가로등 시안(검정 + 골드) — s6 복사본 위 재스킨 (지시 2026-09-02)
   ---------------------------------------------------------------------
   ⚠️ 파일 **맨 끝** 블록이다. CSS 변수는 마지막 선언이 이기므로 위쪽 BETSIN(보라) 토큰을 지우지 않고 덮는다.
      → 이 블록만 통째로 지우면 s6 와 같은 보라 스킨으로 즉시 원복된다.
   ⚠️ 위 S6-* 블록(유틸 라벨·로그아웃·좌측바 트랜지션)은 s7 도 그대로 쓴다 — 여기서는 색과 신규 열만 다룬다.
   ===================================================================== */

/* ── S7-1. 팔레트 = 검정 베이스 + 골드 액센트 ──────────────────────────────── */
:root {
    --app-primary:        #e0b23c;   /* 골드 — 시안의 로고·타이틀·버튼 축 */
    --app-primary-light:  #f2d17a;
    --app-primary-hover:  #eec253;
    --app-primary-active: #b8902a;
    --app-primary-grad:   linear-gradient(180deg, #f5d989, #c9a12e);
    --app-primary-tint:   rgba(224, 178, 60, .12);

    --app-text-primary:   #ffffff;
    --app-text-secondary: #cfcabb;
    --app-text-muted:     #94908a;
    --app-text-dim:       #6a675f;

    --app-bg-root:        #0a0a0b;
    --app-bg:             #121213;
    --app-bg-panel:       #18181a;
    --app-bg-panel-2:     #1f1f21;
    --app-bg-panel-3:     #27272a;
    --app-bg-card:        rgba(24, 24, 26, .85);

    --app-border:         #2c2a26;
    --app-border-soft:    #3d3a33;

    --sk-frame-1: #b8952a;
    --sk-frame-2: #e0b23c;
    --sk-frame-3: #6a675f;
    --sk-glow: 0 0 0 1px rgba(224, 178, 60, .35), 0 8px 24px rgba(0, 0, 0, .5);

    --sk-bg-lighten: #1c1c1e;
    --sk-bg-light:   #242427;
    --sk-bg-dark:    #131315;
    --sk-bg-table:   #2a2a2d;
    --sk-border:     #35322c;
    --sk-btn-2nd:    #3d3a33;

    /* 듀오톤 2번째 축 — 시안은 골드 단색이라 시안(cyan) 대신 **밝은 골드**로 바꾼다.
       (③ 회차의 "면적은 주색 · 신호는 액센트2" 구조는 그대로 두고 색만 교체) */
    --app-accent-2:      #f2d17a;
    --app-accent-2-soft: #f8e3ab;
    --app-accent-2-tint: rgba(242, 209, 122, .16);
}

body,
.pc_header.sk_hdr_top::before {
    background:
        radial-gradient(1100px 620px at 50% 20%, rgba(224, 178, 60, .10), transparent 66%),
        linear-gradient(180deg, #141414 0%, #0e0e0f 55%, #0a0a0b 100%);
    background-attachment: fixed;
    background-color: var(--app-bg-root);
}

/* 헤더 — 시안: 검정 판 + 하단 골드 헤어라인 */
.pc_header.sk_hdr_top {
    background: linear-gradient(180deg, #1e1e20 0%, #141416 100%);
    border-color: rgba(224, 178, 60, .22);
    border-top-color: rgba(224, 178, 60, .55);
}

/* 인증/액션 버튼 — 골드 채움(어두운 글자) · 그라파이트 · 아웃라인 */
.pc_header .hdr_row0 .hdr_btn_login,
.pc_header .hdr_row0 .hdr_btn_charge {
    background: linear-gradient(180deg, #f5d989, #c9a12e); border-color: #e0b23c; color: #22190a;
}
.pc_header .hdr_row0 .hdr_btn_signup { background: #2e2b24; border-color: #4a4437; color: #f2d17a; }
.pc_header .hdr_row0 .hdr_btn_anon   { background: #1a1a1c; border-color: #3a3730; color: #cfcabb; }
.pc_header .hdr_row0 .hdr_btn_exchange { background: transparent; border-color: #6a5f3f; color: #f2d17a; }

/* 좌측 메뉴(모바일 드로어) · 카드류 */
.league_sidebar .side_menu_block { background: linear-gradient(180deg, #1b1b1d, #151517); border-color: var(--app-border); }
.league_sidebar .sk_user_card    { background: linear-gradient(180deg, #1e1e21, #171719); border-color: var(--app-border); }
.league_sidebar .side_menu_item.on {
    background: rgba(224, 178, 60, .16);
    box-shadow: inset 3px 0 0 var(--app-primary), inset 0 0 0 1px rgba(224, 178, 60, .30);
}
.league_sidebar .app-social-telegram { background: linear-gradient(100deg, #2a2620 0%, #3d372a 60%, #5a5138 100%); }
.league_sidebar .app-social-kakao    { background: linear-gradient(100deg, #242118 0%, #3a3527 100%); }

/* 홈 패널 */
.sk_info_grid .info_tag { background: linear-gradient(180deg, #4a4130, #2a2620); color: #f2d17a; }
.sk_info_grid .info_panel:nth-child(2) .info_tag { background: linear-gradient(180deg, #f5d989, #c9a12e); color: #22190a; }
.sk_feed_panel { background: linear-gradient(180deg, #1b1b1d, #151517); border-color: var(--app-border); }
.sk_feed_no    { background: linear-gradient(180deg, #27272a, #161618); border-color: var(--app-border); }
.main_banner_wrap { background-color: #121213; }
.home_sec_head { border-top-color: var(--app-primary); border-bottom-color: var(--app-border); }

/* 로그인/알림 모달 CTA */
.app-login-modal { background: rgba(24, 24, 26, .96); border-color: var(--app-border-soft); }
.login_btn_primary { background: linear-gradient(180deg, #f5d989, #c9a12e); color: #22190a; }
.app-alert-btn { background: linear-gradient(180deg, #4a4130, #2a2620); }
.sk_modal {
    box-shadow: 0 0 0 1px rgba(224, 178, 60, .22), 0 30px 80px rgba(0, 0, 0, .75),
                inset 0 1px 0 rgba(255, 255, 255, .04);
}
@keyframes c2FeedIn {
    0%   { background: rgba(224, 178, 60, .18); box-shadow: inset 3px 0 0 var(--app-primary); transform: translateY(6px); opacity: .2; }
    35%  { transform: translateY(0); opacity: 1; }
    100% { background: transparent; box-shadow: inset 3px 0 0 transparent; }
}

/* ── S7-2. 좌측 배너 열 ────────────────────────────────────────────────────
   지시: 이미지 **원본 높이 그대로** · **폭만** 열에 맞춘다.
   → 열에 고정 폭만 주고 `img { width:100%; height:auto }` — 비율 유지, 세로는 파일이 정한다.
   ⚠️ 높이를 절대 지정하지 않는다(`height`/`aspect-ratio` 금지) — 배너 교체마다 잘리거나 늘어난다.
   ⚠️ 열 자체는 `align-self:flex-start` + sticky — 배너 총 길이가 본문보다 짧아도 열이 늘어나지 않는다.
   2026-09-09 지시 반영:
   · 테두리 삭제 · 클릭 차단(pointer-events:none — 마크업도 `<a>`→`<div>`) · 우측 여백(--s7-bn-gap)으로 본문과 띄운다.
   · 스크롤 = **본문(.home_index / .main_index_container)과 같은 흐름**으로 함께 내려간다(지시 정정 2차).
     sticky 금지 — 배너가 화면에 고정되면 본문만 올라가 "따라가지 않는" 것으로 보인다.
     구 `max-height + overflow-y:auto`(열 안쪽 스크롤)도 **폐기** — 안쪽 스크롤바·하단 잘림 회귀. */
.side_bn_col {
    flex: 0 0 auto;
    width: 270px;
    margin-left: 1.25rem;
    margin-top: 12px;
    align-self: flex-start;
    position: static;
    display: block;
    pointer-events: none;            /* 장식 전용 — 클릭·드래그·우클릭 저장 유도 전부 차단 */
    user-select: none;
}
.side_bn {
    display: block;
    border: 0;                       /* 지시: 보더 삭제 */
    border-radius: 0;
    line-height: 0;                  /* img 아래 baseline 여백 제거 */
}
.side_bn img { width: 100%; height: auto; display: block; }
/* ≤1024 = 모바일. 좌측 열은 접고 본문이 전폭을 쓴다(드로어가 메뉴를 대신한다). */
@media (max-width: 1024px) { .side_bn_col { display: none; } }

/* ── S7-3. 게임 타일 5장 — 시안(스포츠·카지노·미니게임·토큰게임·가상게임) ─────────
   구 C2-SKIN 이 숨겨 둔 `home_cat_section` 을 되살린다(마크업은 처음부터 있었다).
   ⚠️ 위 숨김 규칙이 `!important` 라 되돌리려면 같은 `!important` 가 필요하다. */
.home_section.home_cat_section { display: block !important; }
.home_cat_grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.home_cat_card {
    position: relative;
    display: block;
    aspect-ratio: 262 / 250;         /* 시안 타일 비율 — 이미지 도착 전에도 자리가 잡힌다 */
    border: 1px solid #b8952a;
    border-radius: 4px;
    overflow: hidden;
    background: linear-gradient(180deg, #1b1b1d, #121213);
    transition: filter .15s, border-color .15s;
}
.home_cat_card:hover { filter: brightness(1.12); border-color: var(--app-primary-light); box-shadow: none; }
.home_cat_card img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* 이미지 미도착 폴백 — 라벨만 가운데(깨진 아이콘 대신) */
.home_cat_label {
    position: absolute; inset: 0;
    align-items: center; justify-content: center;
    font-size: 17px; font-weight: 800; letter-spacing: -.02em;
    color: var(--app-primary-light);
}
@media (max-width: 900px) { .home_cat_grid { grid-template-columns: repeat(3, 1fr); } }

/* ── S7-4. 인기경기 카드 = ceo 골드 프레임 PNG ────────────────────────────────
   자산 = `/img/main/ceo_pop_frame.png`(ceo 판 그대로 복사 · 370×160).
   ⚠️ 프레임을 요소 배경이 아니라 **::before 별도 레이어**에 둔다 — ceo 회차 실측 사유 그대로:
      transform 으로 움직이는 캐러셀 트랙(.strip_track) 위의 스트레치 배경이 iOS 실기기에서
      위쪽만 래스터화되는 글리치가 있었다. `translateZ(0)` 로 독립 레이어 승격해 회피한다. */
.home_index .pop_card {
    border: 0;
    border-radius: 0;
    padding: 20px 26px;
    position: relative;
    isolation: isolate;
    background: none;
}
.home_index .pop_card::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: url("/img/main/hope_pop_frame.png") center / 100% 100% no-repeat;
    transform: translateZ(0);
}
.home_index .pop_card:hover { filter: brightness(1.12); border-color: transparent; }

/* ── S7-5. 헤더 3행 구조(지시 2026-09-02) ─────────────────────────────────────
   헤더1 [로고] ─── [회원정보·쪽지·로그아웃]
   헤더2 [메뉴 중앙정렬 · 아이콘 없음]
   헤더3 [로고 폭만큼 띄움][한줄공지] ─── [충전][환전]
   ⚠️ 세 행의 좌측 기준선은 **로고 폭 토큰 하나**(--s7-logo-w)로 묶는다 — 로고가 바뀌면 여기만 고친다.
   🔴 `--sk-hdr-h` 는 좌측바/배너열 sticky 기준선 + 헤더 가림막 높이의 정본이다.
      행 높이를 바꾸면 **반드시 같이** 바꿀 것: margin 12 + 60 + 44 + 40 + 테두리 2 = 158. */
:root { --s7-logo-w: 200px; --sk-hdr-h: 158px; }

.pc_header .hdr_row0 { height: 60px; min-height: 60px; border-bottom: 1px solid rgba(224, 178, 60, .18); }
.pc_header .hdr_row1 { height: 44px; min-height: 44px; border-bottom: 1px solid rgba(224, 178, 60, .18); }
.pc_header .hdr_row3 { height: 40px; min-height: 40px; display: flex; align-items: center; gap: 12px; }

/* 헤더1 — 로고 왼쪽 · 회원정보 오른쪽(사이는 hdr_gap 이 밀어낸다) */
.pc_header .hdr_row0 .sk_hdr_brand { flex: 0 0 var(--s7-logo-w); width: var(--s7-logo-w); }
.pc_header .hdr_gap { flex: 1 1 auto; }
.pc_header .hdr_actions { margin-left: 0; }

/* 헤더2 — 메뉴 **중앙정렬** · 아이콘 없음(마크업에서 제거) · 게임/유틸 한 줄 */
.pc_header .hdr_row1 .hdr_gnb_items {
    flex: 1 1 auto;
    justify-content: center;      /* 지시 = 중앙정렬 */
    gap: 2px;
    overflow: visible; flex-wrap: nowrap;
}
.pc_header .hdr_gnb_item {
    height: 40px; padding: 0 13px; gap: 0;
    border: 0; background: transparent;
    font-size: 14px; font-weight: 700; white-space: nowrap;
    color: var(--app-text-primary);
}
.pc_header .hdr_gnb_item:hover { background: transparent; color: var(--app-primary-light); }
.pc_header .hdr_gnb_item.active { background: transparent; box-shadow: none; color: var(--app-primary); }
/* 헤더2 로 흡수된 구 유틸 링크 — 게임 메뉴와 **완전히 같은 모양**으로 보이게 한다(한 줄로 읽히도록). */
.pc_header .hdr_gnb_util { font-family: inherit; cursor: pointer; }
.pc_header .hdr_gnb_util > span { display: inline; }

/* 헤더3 — 로고 폭만큼 비우고 공지, 오른쪽 끝에 충전/환전 */
.pc_header .hdr_row3::before { content: ""; flex: 0 0 var(--s7-logo-w); }
.pc_header .hdr_row3 .hdr_notice {
    flex: 1 1 auto; min-width: 0; width: auto; max-width: none;
    height: 28px; margin: 0;
    background: transparent; border: 0;
}
.pc_header .hdr_row3 .hdr_notice_tag { color: var(--app-primary); }
.hdr_money_btns { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; }
.hdr_money_btns .hdr_btn {
    height: 28px; padding: 0 18px; border-radius: 3px;
    font-size: 12.5px; font-weight: 800; border: 1px solid transparent;
}
.hdr_money_btns .hdr_btn_charge   { background: linear-gradient(180deg, #f5d989, #c9a12e); border-color: #e0b23c; color: #22190a; }
.hdr_money_btns .hdr_btn_exchange { background: #2e2b24; border-color: #6a5f3f; color: #f2d17a; }

/* 좁은 PC — 메뉴가 많아 넘치면 가로 스크롤(줄바꿈으로 행 높이가 깨지는 것보다 낫다) */
@media (max-width: 1500px) {
    .pc_header .hdr_gnb_item { padding: 0 9px; font-size: 13px; }
    .pc_header .hdr_row1 .hdr_gnb_items { overflow-x: auto; justify-content: flex-start; scrollbar-width: none; }
    .pc_header .hdr_row1 .hdr_gnb_items::-webkit-scrollbar { display: none; }
}

/* ── S7-6. 3열 셸 = [좌측배너][본문][우측카트] ─────────────────────────────────
   ⚠️ 우측 카트는 **배팅 페이지가 자기 안에서** 그린다(`SportsBetSidebar`) — 셸이 소유하지 않는다.
      홈에 상시 카트를 두려면 카트 상태를 공용 서비스로 올려야 해서 이번 회차에서는 손대지 않았다.
      대신 홈 우측 열은 시안의 「실시간 적중내역」에 대응하는 기존 피드가 맡는다(아래 S7-7). */
.page_shell { align-items: flex-start; }

/* ── S7-7. 셸 ↔ 헤더 좌우 기준선 정합 ─────────────────────────────────────────
   헤더는 **뜬 패널**이라 좌측 기준선이 `margin 20 + padding 20 = 40` 이다.
   반면 셸 자식(배너 열)은 자기 `margin-left: 1.25rem`(20)만 갖고 있어 **21px 어긋났다**(실측 41 vs 20).
   → 셸에 같은 값(40)을 패딩으로 주고 배너 열의 자체 마진은 0 으로. 로고·배너·본문이 한 축에 선다.
   ⚠️ ≥1025 한정 — 모바일은 배너 열이 숨겨지고 본문이 전폭이라 이 패딩이 오히려 방해된다. */
@media (min-width: 1025px) {
    .page_shell { padding-left: calc(1.25rem + 20px); padding-right: calc(1.25rem + 20px); }
    .side_bn_col { margin-left: 0; }
    /* 본문 자체 여백은 배너 열과의 **간격**으로만 남긴다(바깥 여백은 셸이 책임진다). */
    .home_index > .main_banner_wrap,
    .home_index > .home_wrap,
    .home_index > .home_m_notice { margin-left: 0; margin-right: 0; }
}

/* =====================================================================
   S7-8 · 헤더 전폭화 + 헤더3 기준선 = 중앙 본문 · 우측 열 신설 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 헤더 = 뜬 라운드 패널 폐기 → **화면 전폭 밀착**(지시: margin·padding 제거) ──
   🔴 margin 12 가 사라지므로 `--sk-hdr-h`(좌측 열 sticky 기준선 + 헤더 가림막 높이)도 같이 내린다:
      60(헤더1) + 44(헤더2) + 40(헤더3) + 아래 테두리 2 = **146**.
   ⚠️ 좌우 padding 도 0 이라 로고·로그인 폼이 화면 끝에 붙는다(시안 동일).
      대신 **행별로** 필요한 여백만 준다(아래 ②·③). */
:root { --sk-hdr-h: 146px; }
.pc_header.sk_hdr_top {
    margin: 0;
    padding: 0;
    width: 100%;
    border-radius: 0;
    border-left: 0; border-right: 0; border-top: 0;
    border-bottom: 1px solid rgba(224, 178, 60, .28);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .5);
}
/* 헤더가 전폭·밀착이 되어 위/옆으로 새는 틈이 없다 → 가림막 불필요(레이어 1장 절감). */
.pc_header.sk_hdr_top::before { content: none; }

/* ── ② 헤더1·2 = 전폭 안에서 최소 여백만 ─────────────────────────────────────
   시안: 로고는 화면 왼쪽 끝, 로그인/가입은 오른쪽 끝. 메뉴 줄은 가운데. */
.pc_header .hdr_row0 { padding: 0 16px 0 0; }
.pc_header .hdr_row0 .sk_hdr_brand { flex: 0 0 auto; width: auto; padding-left: 0; }
.pc_header .hdr_row1 { padding: 0 16px; }

/* ── ③ 헤더3 = **중앙 본문의 시작과 끝**에 맞춘다(지시) ──────────────────────
   본문 시작 = 셸 좌우 패딩(40) + 좌측 배너 열 폭(270) → 310.
   본문 끝   = 셸 우측 패딩(40).
   ⚠️ 값을 세 군데 따로 박지 않도록 **토큰 2개**로 묶는다 — 배너 열 폭이 바뀌면 여기 한 값만 고친다.
   ⚠️ 구 `::before`(로고 폭만큼 띄우기)는 폐기 — 기준이 로고가 아니라 본문으로 바뀌었다. */
:root { --s7-shell-pad: calc(1.25rem + 20px); --s7-bn-w: 270px; --s7-bn-gap: 16px; /* 배너 열 ↔ 본문 간격(지시: 살짝 띄워 안정감) */ }
.pc_header .hdr_row3::before { content: none; }
.pc_header .hdr_row3 {
    padding-left: calc(var(--s7-shell-pad) + var(--s7-bn-w) + var(--s7-bn-gap));
    padding-right: var(--s7-shell-pad);
}
/* 배너 열 폭·우측 간격 정본을 토큰에 위임(위 S7-2 의 고정값과 갈리지 않게) */
.side_bn_col { width: var(--s7-bn-w); margin-right: var(--s7-bn-gap); }

/* ── ④ 우측 열 = 실시간 적중내역 ────────────────────────────────────────────
   시안 우측은 [배팅카트 + 실시간 적중내역] 2단이다.
   ⚠️ **배팅카트는 아직 못 올린다** — `SportsBetSidebar` 가 배팅 페이지의 카트 상태(파라미터 10개)에 묶여 있어
      홈에 상시로 두려면 카트 상태를 공용 서비스로 승격해야 한다(별건·결재 대기).
   → 지금은 홈이 이미 가진 **실시간 피드**를 우측 열로 옮겨 3열 형태를 완성한다.
     마크업 이동 0 — `.home_wrap` 을 그리드로 바꾸고 피드 섹션만 2열로 배치한다(순수 CSS).
   ⚠️ 피드는 원래 가로 3분할(입금·출금·당첨)이라 270px 열에서는 세로로 쌓는다. */
@media (min-width: 1025px) {
    .home_wrap {
        display: grid;
        grid-template-columns: minmax(0, 1fr) var(--s7-bn-w);
        grid-auto-rows: min-content;
        column-gap: 12px;
        align-items: start;
    }
    .home_wrap > * { grid-column: 1; min-width: 0; }
    .home_wrap > .sk_feed_section {
        grid-column: 2;
        grid-row: 1 / span 99;      /* 좌측 섹션이 몇 개든 오른쪽 한 줄로 붙어 있게 */
        align-self: stretch;
    }
    .home_wrap > .sk_feed_section .sk_feed_grid { grid-template-columns: 1fr; gap: 12px; }
    /* 좁은 열에서는 행이 촘촘한 편이 읽기 좋다 */
    .home_wrap > .sk_feed_section .sk_feed_view { --sk-feed-row: 40px; height: calc(var(--sk-feed-row) * 6); }
    .home_wrap > .sk_feed_section .sk_feed_row { font-size: 12px; grid-template-columns: 22px minmax(0,1fr) minmax(0,1fr) auto; gap: 6px; }
}

/* ── ⑤ 이벤트/공지 목록 = 5행까지만 보이고 6행부터 스크롤(지시) ────────────────
   위 c3 이식분이 이미 `height: 44*5 + 8*4`(=252) + `overflow-y:auto` 로 그렇게 돼 있다.
   여기서는 **행이 눌리지 않게** 최소 높이만 못 박아 규칙을 확정한다(내용이 길어도 5행 창 유지). */
.sk_info_grid .hp_list { max-height: calc(44px * 5 + 8px * 4); }
.sk_info_grid .info_row { flex: 0 0 auto; }

/* =====================================================================
   S7-9 · 본문 3열 재배치(지시 도식) — 그리드 주체를 `home_wrap` → **`home_index`** 로 승격
   ---------------------------------------------------------------------
   [        헤더 3행 (전폭)        ]
   [좌측배너][ 메인배너 ][우측카트]
   [ 빈칸  ][ 게임5종  ][실시간당첨]
   [ 빈칸  ][ 공지이벤 ][  빈칸   ]
   ---------------------------------------------------------------------
   ⚠️ 구 S7-8 ④ 는 `home_wrap` 을 그리드로 썼다 → **메인 배너가 그 밖**이라 우측 열 아래까지 뻗었다.
      배너까지 중앙 열에 넣으려면 그리드가 배너의 부모(`home_index`)여야 한다.
      그래서 `sk_feed_section` 을 `home_wrap` 밖으로 꺼내 배너와 형제로 만들었다(Home.razor 마크업 1회 이동).
   ⚠️ 아래에서 `home_wrap` 그리드 선언을 되돌린다(이중 그리드 방지).
   ===================================================================== */
:root { --s7-rail-w: 270px; --s7-col-gap: 12px; }

@media (min-width: 1025px) {
    /* 구 S7-8 ④ 무력화 — 그리드는 이제 home_index 소관 */
    .home_wrap { display: flex; flex-direction: column; }
    .home_wrap > * { grid-column: auto; grid-row: auto; }

    .page_shell_body .main_index_container.home_index {
        display: grid;
        grid-template-columns: minmax(0, 1fr) var(--s7-rail-w);
        column-gap: var(--s7-col-gap);
        align-items: start;
    }
    /* 🔴 열을 **명시**해야 한다 — 자동 배치는 행을 가로로 채워서
       `home_wrap` 이 배너 옆(1행 2열)으로 올라가 버린다. */
    .home_index > .main_banner_wrap,
    .home_index > .home_m_notice,
    .home_index > .home_wrap { grid-column: 1; }
    /* 우측 열: 행은 **자동**으로 둔다 — 지금은 카트가 없어 피드가 1행에 붙고,
       나중에 카트를 이 열의 앞 형제로 넣으면 카트 1행 / 피드 2행으로 저절로 밀린다(행 번호 하드코딩 0). */
    .home_index > .sk_feed_section { grid-column: 2; margin: 0; }

    /* 「실시간 당첨」만 노출(지시) — 입금·출금 패널은 우측 열에서 감춘다.
       ⚠️ 마크업·조회는 그대로 둔다(모바일 탭은 3종을 계속 쓴다). */
    .home_index > .sk_feed_section .sk_feed_dep,
    .home_index > .sk_feed_section .sk_feed_wd { display: none; }
    .home_index > .sk_feed_section .sk_feed_grid { grid-template-columns: 1fr; }
    .home_index > .sk_feed_section .sk_feed_view { --sk-feed-row: 40px; height: calc(var(--sk-feed-row) * 10); }
    .home_index > .sk_feed_section .sk_feed_row { font-size: 12px; grid-template-columns: 22px minmax(0,1fr) minmax(0,1fr) auto; gap: 6px; }

    /* ── 헤더3 = **게임5종(중앙 열)** 의 시작과 끝에 정확히 붙인다(지시) ──
       좌: 셸패딩 + 좌측배너열 / 우: 셸패딩 + 우측열 + 열간격. 값은 전부 토큰 파생이라 폭을 바꾸면 따라온다. */
    .pc_header .hdr_row3 {
        padding-left: calc(var(--s7-shell-pad) + var(--s7-bn-w) + var(--s7-bn-gap));
        padding-right: calc(var(--s7-shell-pad) + var(--s7-rail-w) + var(--s7-col-gap));
    }
}

/* =====================================================================
   S7-10 · 우측 열 회원 카드(목업 ③ 확정) + 카트 금액버튼 시안 정합 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 회원 카드 = 우측 열 **맨 위**(카트보다 앞) ────────────────────────────
   ⚠️ 그리드 행은 지정하지 않는다 — `home_index` 2열 그리드의 자동 배치가
      [카드][피드] 순서를 그대로 유지하고, 나중에 카트를 그 사이에 끼우면 저절로 밀린다. */
@media (min-width: 1025px) {
    .home_index > .rail_user_card { grid-column: 2; margin: 0; }
}
.rail_user_card {
    border: 1px solid #b8952a;
    border-radius: 4px;
    background: linear-gradient(180deg, #18181a, #131315);
    overflow: hidden;
}
/* 머리 = 닉네임(+아이디/파트너) 좌 · 레벨 메달 우상단 */
.ruc_head { position: relative; padding: 11px 46px 9px 12px; border-bottom: 1px solid var(--app-border); }
.ruc_medal {
    position: absolute; top: 9px; right: 10px;
    width: 34px; height: 34px; border-radius: 50%;
    object-fit: contain;                       /* 관리자 업로드 이미지 비율 보존(자르지 않는다) */
    background: rgba(224, 178, 60, .10);
    box-shadow: 0 0 0 2px rgba(224, 178, 60, .30);
}
.ruc_nick { display: block; font-size: 13px; font-weight: 700; color: #fff; letter-spacing: -.01em;
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ruc_uid { display: block; font-size: 10.5px; color: var(--app-text-muted); }
/* 파트너 = 아이디 자리를 대체하는 **버튼**(지시) */
.ruc_partner {
    display: inline-block; margin-top: 3px; padding: 1.5px 8px; border-radius: 2px;
    font-size: 9.5px; font-weight: 800; letter-spacing: .04em; text-decoration: none;
    background: linear-gradient(180deg, #f5d989, #c9a12e); color: #22190a;
}
.ruc_partner:hover { filter: brightness(1.08); }

/* 행 = [라벨(+⇄)] ─── [값 단위] */
.ruc_item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 12px; }
.ruc_item + .ruc_item { border-top: 1px solid rgba(255, 255, 255, .05); }
.ruc_k { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; color: var(--app-text-muted); }
.ruc_v { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-variant-numeric: tabular-nums;
         font-size: 12.5px; font-weight: 700; color: #fff; }
.ruc_v.gold { color: var(--app-primary-light); }
.ruc_v em { font-style: normal; font-size: 9px; color: var(--app-text-dim); margin-left: 3px; }
/* ⇄ = airplane `hdr_swap` 규격 준용(22×20 · 아이콘만 · 브랜드색) */
.ruc_swap {
    width: 20px; height: 18px; padding: 0; border: 1px solid rgba(224, 178, 60, .32); border-radius: 2px;
    background: transparent; color: var(--app-primary-light);
    display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.ruc_swap svg { width: 13px; height: 13px; fill: currentColor; display: block; }
.ruc_swap:hover { background: var(--app-primary-tint); color: #fff; }

/* ── ② 카트 금액 버튼 = 시안 색 + **높이·너비 동일**(지시) ────────────────────
   구 규칙(sports.css:860·885)은 `padding: 12px 0`(글자에 따라 높이가 흔들림) · 네이비 `#2a303d` ·
   `MAX` 에 `grid-column: span 2`(혼자 2칸) 였다.
   🔴 **셀렉터에 `.page_shell` 을 붙인 이유** — App.razor 로드 순서가 `app-skin.css` → `sports.css` 라
      같은 구체성으로 쓰면 **뒤에 오는 sports.css 가 이긴다**(실측: 배경이 계속 #2a303d 였다).
      `.page_shell` 은 PC 카트(aside)·모바일 오버레이 **양쪽의 공통 조상**이라 안전하게 한 단계 올릴 수 있다.
      (`!important` 는 쓰지 않는다 — 뒤 회차에서 되덮기가 어려워진다.) */
.page_shell .quick_amount_grid { grid-template-columns: repeat(3, 1fr); gap: 6px; }
.page_shell .quick_amount_grid button,
.page_shell .quick_amount_grid button.reset,
.page_shell .quick_amount_grid button.max {
    height: 34px;
    min-width: 0;
    padding: 0;
    border-radius: 3px;
    font-size: 12.5px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    background: #34343a;
    border: 1px solid #43434b;
    color: #ffffff;
    /* 🔴 MAX 의 `grid-column: span 2` 해제 — 지시 = 9칸 전부 같은 크기. */
    grid-column: auto;
}
.page_shell .quick_amount_grid button:hover { background: #41414a; border-color: #55555f; }
.page_shell .quick_amount_grid button.reset,
.page_shell .quick_amount_grid button.max { background: #3f3f47; border-color: #4e4e58; }
.page_shell .quick_amount_grid button.reset:hover,
.page_shell .quick_amount_grid button.max:hover { background: #4b4b55; }
.quick_amount_grid button.reset:hover,
.quick_amount_grid button.max:hover { background: #4b4b55; }

/* =====================================================================
   S7-11 · 우측 레일 = 메인 배너 오른쪽부터 · 게임 타일 원본 비율 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 우측 레일 = 2열 전체를 세로로 차지 ────────────────────────────────────
   구 방식(항목마다 `grid-column:2`)은 자동배치 커서 때문에 **게임 타일 옆(2행)**부터 시작했다.
   래퍼 하나가 `grid-row: 1 / -1` 을 차지하면 **메인 배너 오른쪽**에서 시작한다. */
@media (min-width: 1025px) {
    .home_index > .rail_col {
        grid-column: 2;
        grid-row: 1 / -1;
        display: flex; flex-direction: column; gap: 8px;
        min-width: 0;
        /* 배너 옆에서 시작해 아래로 이어지되, 길어지면 화면에 붙어 따라온다 */
        position: sticky;
        top: calc(var(--sk-hdr-h) + 12px);
        align-self: start;
    }
    .home_index > .rail_col > * { margin: 0; }
    /* 구 개별 배치 규칙 무력화(래퍼가 대신한다) */
    .home_index > .rail_user_card,
    .home_index > .sk_feed_section { grid-column: auto; }
}

/* ── ② 게임 타일 = **원본 비율 그대로**(지시) ────────────────────────────────
   🔴 구 규칙은 `aspect-ratio: 262/250` + `object-fit: cover` 였다 —
      제공 이미지가 295×320 이라 칸 비율과 달라 **위아래가 잘렸다**(cover = 채우고 넘치면 자름).
   → 비율을 못 박지 않고 이미지가 높이를 정하게 한다(`height:auto`). 어떤 크기가 와도 원본 비율이 유지된다.
   ⚠️ 이미지가 없을 때만 자리를 잡도록 `min-height` 만 남긴다(라벨 폴백용). */
.home_cat_card {
    aspect-ratio: auto;
    min-height: 120px;
}
.home_cat_card img {
    width: 100%;
    height: auto;          /* 🔴 100% 아님 — 100% + cover 조합이 잘림의 원인이었다 */
    object-fit: contain;
    display: block;
}
/* 타일 높이가 이미지에 따라 달라지므로 위쪽 기준으로 정렬(가운데 정렬이면 들쭉날쭉해 보인다) */
.home_cat_grid { align-items: start; }

/* =====================================================================
   S7-12 · 우측 레일 정정 — 「카트 + 실시간 당첨」만 (지시 2026-09-02)
   ---------------------------------------------------------------------
   🔴 **직전 회차 회귀의 원인** — 피드를 `<aside class="rail_col">` 로 감싸면서
      기존 규칙의 `>`(직속 자식) 선택자가 더 이상 맞지 않게 됐다:
        `.home_index > .sk_feed_section …`  ← 이제 `.home_index > .rail_col > .sk_feed_section`
      그래서 입금·출금 패널 숨김과 1열 전환이 **전부 풀려** 3패널이 270px 안에 끼며
      제목이 세로로 뭉갰다(캡처 증상). 래퍼를 넣을 땐 `>` 를 쓰는 기존 규칙을 반드시 같이 본다.
   → 여기서는 **래퍼 유무와 무관하게** 걸리도록 자손 선택자(`.rail_col …`)로 다시 잡는다.
   ===================================================================== */
@media (min-width: 1025px) {
    /* 실시간 당첨 1종만 — 입금·출금 패널은 레일에서 감춘다(마크업·조회·모바일 탭 무접촉). */
    .rail_col .sk_feed_section .sk_feed_dep,
    .rail_col .sk_feed_section .sk_feed_wd { display: none; }
    .rail_col .sk_feed_section .sk_feed_tabs { display: none; }
    .rail_col .sk_feed_section .sk_feed_grid { display: block; }
    .rail_col .sk_feed_section .sk_feed_panel { min-width: 0; }
    /* 좁은 열에 맞춘 행 규격 */
    .rail_col .sk_feed_section .sk_feed_head { height: 40px; padding: 0 12px; font-size: 14px; }
    .rail_col .sk_feed_section .sk_feed_view { --sk-feed-row: 38px; height: calc(var(--sk-feed-row) * 10); padding: 0 8px; }
    .rail_col .sk_feed_section .sk_feed_row {
        font-size: 11.5px; gap: 6px; padding: 0 4px;
        grid-template-columns: 20px minmax(0, 1fr) minmax(0, 1fr) auto;
    }
    .rail_col .sk_feed_section .sk_feed_no { width: 20px; height: 20px; font-size: 10px; }
}

/* ── S7-13. 비로그인 회원 카드 + 레일 안 카트(지시 2026-09-02) ─────────────────
   비로그인도 카드를 보여준다 — 값만 비우고 골격은 같게. 안내 문구는 값 톤보다 한 단계 낮춘다. */
.rail_user_card.is_guest .ruc_nick.ruc_guest {
    font-size: 11.5px; font-weight: 600; color: var(--app-text-muted); letter-spacing: -.01em;
}
.rail_user_card.is_guest .ruc_medal { filter: grayscale(.55); opacity: .75; }
.rail_user_card.is_guest .ruc_v { color: var(--app-text-secondary); }
.rail_user_card.is_guest .ruc_v.gold { color: var(--app-text-secondary); }

/* 카트 = 레일 폭(270)에 맞춘다. 원래는 배팅 표면의 넓은 aside 안에 있던 컴포넌트다. */
@media (min-width: 1025px) {
    .rail_col > .cart_container,
    .rail_col > .cart_wrap,
    .rail_col > .cart { width: 100%; min-width: 0; }
    /* 카트 내부 격자·표가 270px 을 넘지 않게 */
    .rail_col .cart_item,
    .rail_col .cart_footer,
    .rail_col .cart_header { min-width: 0; }
}

/* =====================================================================
   S7-14 · 헤더 3색·상단 고정 / 충전·환전 글자 / 회원카드 / 카트 버튼 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 헤더 = 상단 완전 고정 + 행별 색(위→아래 #222 / #333 / #111) ────────────
   🔴 `--sk-hdr-h` 는 좌측/우측 열 sticky 기준선이다. margin 이 0 이므로 60+44+40+1 = **145**.
   ⚠️ 사이트 배경도 #111 로 맞춰 **헤더3과 이어져 떨어지는 느낌**이 나게 한다(지시). */
:root { --sk-hdr-h: 145px; }
.pc_header.sk_hdr_top {
    top: 0;                       /* 구 12px 띄움 폐기 — 화면 맨 위에 붙는다 */
    margin: 0; padding: 0;
    background: none;             /* 행별 색이 배경을 대신한다 */
    border: 0;
    border-bottom: 1px solid #000;
    border-radius: 0;
    box-shadow: none;
}
.pc_header .hdr_row0 { background: #222222; border-bottom: 0; }
.pc_header .hdr_row1 { background: #333333; border-bottom: 0; }
.pc_header .hdr_row3 { background: #111111; border-bottom: 0; }
body { background: #111111; background-image: none; }

/* ── ② 헤더2 메뉴 = 아이콘 없음(마크업에서 제거) · 간격 확대(지시) ───────────── */
.pc_header .hdr_row1 .hdr_gnb_items { gap: 10px; }
.pc_header .hdr_gnb_item { padding: 0 16px; gap: 0; }
.pc_header .hdr_gnb_util > span { display: inline; }

/* ── ③ 헤더3 좌우 기준 = 헤더2 첫 메뉴(국내형스포츠)의 시작점 ─────────────────
   지시: 「공지사항 영역 좌우 띄운 만큼 국내형스포츠가 시작」 → 두 행의 좌우 여백을 **같은 값**으로 묶는다.
   ⚠️ 헤더2 는 중앙정렬이라 `justify-content` 를 풀지 않으면 시작점이 안 맞는다 →
      메뉴 줄을 좌측정렬로 바꾸고 같은 패딩을 준다. */
:root { --s7-hdr-pad: calc(var(--s7-shell-pad) + var(--s7-bn-w) + var(--s7-bn-gap)); }
.pc_header .hdr_row1 { padding-left: var(--s7-hdr-pad); padding-right: var(--s7-shell-pad); }
.pc_header .hdr_row1 .hdr_gnb_items { justify-content: flex-start; }
.pc_header .hdr_row3 { padding-left: var(--s7-hdr-pad); padding-right: var(--s7-shell-pad); }

/* ── ④ 충전·환전 = 버튼 아님 · 아이콘 + 색 글자(지시) ─────────────────────── */
.hdr_money_btns { display: flex; align-items: center; gap: 18px; }
.hdr_money_btns .hdr_money {
    display: inline-flex; align-items: center; gap: 6px;
    height: auto; padding: 0; border: 0; background: none; box-shadow: none;
    font-size: 14px; font-weight: 800; letter-spacing: -.01em; cursor: pointer;
}
.hdr_money_btns .hdr_money img { width: 48px; height: 38px; object-fit: contain; display: block; }
.hdr_money_btns .hdr_money_charge   { color: #e8433f; }   /* 시안 · 충전 = 빨강 */
.hdr_money_btns .hdr_money_exchange { color: #4db8e8; }   /* 시안 · 환전 = 하늘색 */
.hdr_money_btns .hdr_money:hover { filter: brightness(1.15); background: none; }

/* ── ⑤ 회원 카드 — 테두리 대신 그림자(지시) ────────────────────────────────
   구 골드 1px 테두리가 뒷배경과 애매하게 겹쳤다 → 배경과 같은 계열 면 + 그림자로 띄운다. */
.rail_user_card {
    border: 1px solid #1c1c1c;                 /* 배경(#111)과 거의 같은 계열 — 선이 아니라 경계만 */
    border-radius: 4px;
    background: linear-gradient(180deg, #1b1b1b, #161616);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .05);
}
/* 행 간격 확대(지시) */
.rail_user_card .ruc_head { padding: 14px 52px 12px 14px; border-bottom-color: rgba(255,255,255,.06); }
.rail_user_card .ruc_item { padding: 11px 14px; }
.rail_user_card .ruc_item + .ruc_item { border-top-color: rgba(255,255,255,.06); }
/* 둘째 줄(레벨/파트너) — 비로그인이어도 **자리를 비우지 않는다**(지시: 레벨 이미지가 잘리지 않게) */
.rail_user_card .ruc_meta { display: flex; align-items: center; gap: 6px; min-height: 20px; margin-top: 4px; }
.rail_user_card .ruc_lv {
    padding: 1px 6px; border-radius: 2px;
    font-family: 'IBM Plex Mono', ui-monospace, monospace;
    font-size: 9.5px; font-weight: 800; letter-spacing: .04em;
    background: rgba(224, 178, 60, .16); color: var(--app-primary-light);
    border: 1px solid rgba(224, 178, 60, .34);
}
.rail_user_card .ruc_uid { display: inline; font-size: 10.5px; }
/* 숫자 = 사이트 본문 폰트 축으로(지시) — 모노 고정 해제, 자릿수 정렬만 유지 */
.rail_user_card .ruc_v { font-family: var(--app-font-base); font-variant-numeric: tabular-nums; }

/* ── ⑥ 카트 금액 버튼 = 시안 규격(지시) ───────────────────────────────────
   시안 정본: `width 80 · height 30 · line-height 30 · font-size 12 · font-weight 600 ·
              color #fff · text-shadow 0 1px 0 #000 · padding 0 · margin 2px 1px · border 0`
              + `box-shadow: inset 0 2px 0 0 rgba(255,255,255,.3)` · vertical-align: middle.
   ⚠️ 「버튼끼리 붙어있어야」 → 격자 `gap` 을 0 으로 두고 시안의 `margin: 2px 1px` 만 남긴다.
   ⚠️ `.page_shell` 접두 유지 — sports.css 가 뒤에 로드되므로 한 단계 올려야 이긴다(S7-10 사유). */
.page_shell .quick_amount_grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.page_shell .quick_amount_grid button,
.page_shell .quick_amount_grid button.half,
.page_shell .quick_amount_grid button.reset,
.page_shell .quick_amount_grid button.max {
    width: auto; height: 30px; line-height: 30px;
    padding: 0; margin: 2px 1px; border: 0; border-radius: 2px;
    font-size: 12px; font-weight: 600; color: #fff;
    text-shadow: 0 1px 0 #000; vertical-align: middle;
    background: #3a3a3a;
    box-shadow: inset 0 2px 0 0 rgba(255, 255, 255, .3);
    grid-column: auto;
}
/* 호버 = 해당 칸 전체를 채운다(지시 · 캡처) */
.page_shell .quick_amount_grid button:hover { background: #4d4d4d; }
.page_shell .quick_amount_grid button.half,
.page_shell .quick_amount_grid button.max,
.page_shell .quick_amount_grid button.reset { background: #2f2f2f; }
.page_shell .quick_amount_grid button.half:hover,
.page_shell .quick_amount_grid button.max:hover,
.page_shell .quick_amount_grid button.reset:hover { background: #444444; }
/* 배팅하기 = 빨강(시안) */
.page_shell .submit_bet_btn {
    background: linear-gradient(180deg, #d32b26, #a81f1b);
    border: 0; color: #fff; font-weight: 800;
    box-shadow: inset 0 2px 0 0 rgba(255, 255, 255, .22);
}
.page_shell .submit_bet_btn:hover:not(:disabled) { filter: brightness(1.1); }

/* =====================================================================
   S7-15 · 가로 스크롤 차단 / 메뉴 폰트·호버 / 충전·환전 이설 / 카드 디테일 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 좌우(가로) 스크롤 차단 ──────────────────────────────────────────────
   🔴 원인: 헤더 행에 `padding-left: calc(셸패딩 + 배너열)` 를 주면서 **행 안의 콘텐츠**(메뉴 13개·공지·충전환전)가
      남은 폭보다 길어질 때 헤더가 뷰포트를 넘겼다. 전역 `*{box-sizing:border-box}` 라 패딩은 폭에 포함되지만,
      **내용 자체가 min-content 로 밀면** 그 폭을 넘어간다.
   → 뷰포트 밖으로 나가는 축을 문서 레벨에서 막고, 헤더/셸이 내용에 밀리지 않도록 `min-width:0` 을 준다. */
/* 🔴 `overflow-x: hidden` 을 **body 에** 주면 body 가 스크롤 컨테이너가 되고(overflow-y 가 auto 로 계산됨),
   모바일에서 터치 스크롤이 전파되지 않아 **페이지가 아예 안 굴러가는** 증상이 난다(충전/환전 실사고).
   `overflow-x: clip` 은 잘라내기만 하고 스크롤 컨테이너를 만들지 않는다 → 가로 잘림은 유지, 세로 스크롤은 살아난다.
   ⚠️ 선언 순서 = 구형 폴백(hidden) → clip. clip 미지원 브라우저는 뒤 선언을 무시하고 hidden 을 쓴다.
   ⚠️ body 의 overflow-y 는 명시적으로 visible 로 되돌린다(hidden 폴백이 걸린 브라우저 보정). */
/* 🔴 S7-MOBILE-FIX(2026-09-06 지시) · 위 html/body 문서 레벨 overflow 규칙 **폐기** — 두 가지 실사고의 공통 원인.
   ① 모달 배경 거울 반전: `overflow: clip` 을 가진 조상(html) 아래의 `backdrop-filter`(로그인/알림/라우트 모달 배경)를
      모바일 Chrome 이 **반전(flip)된 스냅샷**으로 그린다(엔진 버그). c2 는 문서 레벨 overflow 규칙이 없어 정상.
   ② 충전/환전 페이지 스크롤 불가: body 에 `overflow-x: clip` + `overflow-y: visible` 을 주면 계산값이 auto/auto 로
      떨어져(실측 getComputedStyle) body 가 결국 스크롤 컨테이너가 된다 — 구 hidden 사고와 같은 결말.
   → 문서(html/body)에는 아무 overflow 도 주지 않는다(c2 동형). 원인이었던 **헤더 자신**만 가로 클립한다
     (모달 배경은 헤더의 자손이 아니라 backdrop-filter 와 무관 · sticky 헤더 자체의 clip 은 sticky 를 깨지 않는다). */
.pc_header.sk_hdr_top { max-width: 100%; overflow-x: hidden; overflow-x: clip; }
.sk_mhdr { max-width: 100%; overflow-x: hidden; overflow-x: clip; }
.pc_header .hdr_row { min-width: 0; }
.pc_header .hdr_row1 .hdr_gnb_items { min-width: 0; }
.page_shell { min-width: 0; }

/* ── ② 헤더 메뉴 = Pretendard 통일 · 호버 시 **칸 전체 노랑 + 검정 글자**(지시) ── */
.pc_header .hdr_gnb_item,
.pc_header .hdr_gnb_item .hdr_gnb_label,
.pc_header .hdr_gnb_util,
.pc_header .hdr_gnb_util span {
    font-family: Pretendard, "Pretendard Variable", -apple-system, BlinkMacSystemFont,
                 "Malgun Gothic", "맑은 고딕", sans-serif;
}
.pc_header .hdr_gnb_item {
    height: 44px;               /* 행 높이를 꽉 채워야 호버 면이 "바깥 영역"까지 덮인다 */
    border-radius: 0;
    transition: background .12s, color .12s;
}
.pc_header .hdr_gnb_item:hover,
.pc_header .hdr_gnb_item:hover .hdr_gnb_label,
.pc_header .hdr_gnb_item:hover span { background: #f5c400; color: #000; }
.pc_header .hdr_gnb_item.active { background: #f5c400; color: #000; box-shadow: none; }
.pc_header .hdr_gnb_item.active .hdr_gnb_label { color: #000; }

/* ── ③ 충전·환전 = 헤더3 우측 정렬 폐기 → **메인 배너 위**(지시) ────────────────
   ⚠️ 마크업 이동 없이 헤더3 안에서 위치만 바꾼다 — 헤더3 은 본문(중앙 열) 좌우에 맞춰져 있으므로
      `margin-left: auto` 를 풀고 공지 뒤에 바로 붙이면 **배너 좌측 기준선 위**에 온다.
   ⚠️ 공지 티커가 남는 폭을 먹지 않도록 폭을 고정한다(안 그러면 충전·환전이 다시 오른쪽 끝으로 밀린다). */
.pc_header .hdr_row3 .hdr_notice { flex: 0 1 420px; max-width: 420px; }
.pc_header .hdr_row3 .hdr_money_btns { margin-left: 0; margin-right: auto; }

/* ── ④ 회원 카드 — 레벨/파트너 **높이 24px 통일**(지시) ────────────────────── */
.rail_user_card .ruc_meta { min-height: 24px; gap: 5px; }
.rail_user_card .ruc_lv,
.rail_user_card .ruc_partner,
.rail_user_card .ruc_uid {
    height: 24px; line-height: 22px;         /* 테두리 1px×2 를 뺀 값 = 세로 중앙 */
    display: inline-flex; align-items: center;
    padding: 0 8px; margin: 0;
    border-radius: 3px; box-sizing: border-box;
}
.rail_user_card .ruc_uid { padding-left: 0; border: 0; background: none; }

/* ── ⑤ 포인트 전환 버튼 = 테두리 삭제(지시) ─────────────────────────────── */
.ruc_swap { border: 0; background: transparent; }
.ruc_swap:hover { background: rgba(255, 255, 255, .08); }

/* =====================================================================
   S7-16 · 지시 정정 3건 (2026-09-02)
   ===================================================================== */

/* ── ① 충전·환전 = **메인 배너 우측 위**(직전 회차에 좌측으로 옮긴 것을 되돌린다) ──
   헤더3 은 이미 중앙 열(배너) 좌우에 맞춰져 있으므로 `margin-left:auto` 면 **배너 우측 끝** 위에 선다.
   ⚠️ 공지 폭 고정(420)은 유지 — 티커가 남는 폭을 다 먹으면 충전·환전이 다시 밀려난다. */
.pc_header .hdr_row3 .hdr_money_btns { margin-left: auto; margin-right: 0; }

/* ── ② 헤더 메뉴 폰트 = **A2Z**(지시 정정 — Pretendard 아님) ────────────────
   font.css 에 `@font-face { font-family:'A2Z' … }` 가 이미 선언돼 있고 `--app-font-base` 의 1순위다.
   ⚠️ 리터럴 'A2Z' 만 쓰면 폰트 실패 시 폴백이 없다 → 토큰(`--app-font-base`)을 써서 폴백 체인을 유지한다. */
.pc_header .hdr_gnb_item,
.pc_header .hdr_gnb_item .hdr_gnb_label,
.pc_header .hdr_gnb_util,
.pc_header .hdr_gnb_util span { font-family: var(--app-font-base); }

/* ── ③ 헤더 버튼 툴팁 = 회색 계열(지시 · s6 와 같은 톤) ─────────────────────
   구 규칙은 sugar 잔재(핑크/보라 그라디언트)였다. */
.pc_header .hdr_btn[data-tip]::after,
.pc_header .hdr_util[data-tip]::after {
    background: #2f3036;
    color: #f1f1f4;
    border: 1px solid #43444c;
    box-shadow: 0 8px 20px rgba(0, 0, 0, .55);
}
.pc_header .hdr_btn[data-tip]::before,
.pc_header .hdr_util[data-tip]::before { border-bottom-color: #2f3036; border-right-color: #2f3036; }

/* =====================================================================
   S7-17 · 충전·환전 우측 기준 정정 + 「배너 ↔ 게임5종」 큰 공백 제거 (지시 2026-09-02)
   ===================================================================== */

/* ── ① 충전·환전 = **메인 배너 우측 위** ────────────────────────────────────
   S7-14 §3 이 헤더3 우측 패딩을 셸패딩 단독으로 덮어써서 버튼이 **우측 레일 끝**(화면 오른쪽)까지 갔다.
   중앙 열(메인 배너)의 오른쪽 끝 = 셸패딩 + 레일폭 + 열간격 → S7-9 의 값으로 되돌린다.
   ⚠️ 헤더2(메뉴 줄)의 우측 패딩은 셸패딩 그대로 둔다 — 중앙정렬이라 우측 기준을 쓰지 않는다. */
@media (min-width: 1025px) {
    .pc_header .hdr_row3 {
        padding-right: calc(var(--s7-shell-pad) + var(--s7-rail-w) + var(--s7-col-gap));
    }
}

/* ── ② 🔴 배너 아래 ~ 게임 타일 사이 **768px 공백**의 진범 ────────────────────
   `.rail_col { grid-row: 1 / -1 }` 인데 `home_index` 에는 `grid-template-rows` 선언이 없다.
   → **명시 그리드가 없으면 `-1` 은 암시 행이 아니라 「명시 그리드의 마지막 선」**(= 1번 선)을 가리켜
     결국 **1행 한 칸**만 차지한다. 그 바람에 1행 높이가 레일 전체 높이(1102px)로 부풀고,
     배너(322px) 아래가 통째로 빈칸이 됐다(실측: 배너 하단 479 → 타일 상단 1267).
   → 행 수를 **span** 으로 세면 암시 행에도 걸린다. 두 행(배너 / home_wrap)에 걸치므로 span 2.
     레일이 두 행 합보다 짧으면 행이 커지지 않는다 = 배너 행은 배너 높이 그대로. */
@media (min-width: 1025px) {
    .home_index > .rail_col { grid-row: 1 / span 2; }
}

/* ── ③ 배너 행은 **배너 높이로 고정**(레일이 밀어 올리지 못하게) ─────────────
   ②로 큰 공백은 사라지지만, 우측 레일이 좌측 열(배너+본문)보다 길면
   그리드가 **부족분을 두 행에 절반씩 나눠** 배너 행까지 부풀린다(실측: 배너 14px 행이 105px).
   → 1행을 `min-content` 로 **명시**하면 부족분이 2행으로만 간다 = 배너 아래가 항상 붙는다.
   ⚠️ 2행은 선언하지 않는다(암시 행 auto 유지) — 좌측 항목이 늘어도 그대로 동작. */
@media (min-width: 1025px) {
    .page_shell_body .main_index_container.home_index { grid-template-rows: min-content; }
}

/* ── ④ 충전·환전 아이콘 폭 26px (지시 2026-09-03) ───────────────────────── */
.hdr_money_btns .hdr_money img { width: 26px; height: auto; }

/* =====================================================================
   S7-18 · 헤더3 공지 위치 + 헤더 하단 경계선 제거 (지시 2026-09-03)
   ===================================================================== */

/* ── ① 한줄공지 = **충전·환전 바로 왼쪽** ───────────────────────────────────
   구: [공지]……………[충전][환전]  →  신: ……………[공지][충전][환전]
   여백 흡수 주체를 공지로 옮기면 둘이 gap(12px) 간격으로 붙어 우측 정렬된다. */
.pc_header .hdr_row3 .hdr_notice     { margin-left: auto; }
.pc_header .hdr_row3 .hdr_money_btns { margin-left: 0; }

/* ── ② 헤더 하단 경계선 제거(지시 — 본문과 경계 없이 이어지게) ────────────────
   실측 진범은 `hdr_row3` 가 아니라 **떠 있던 구 헤더 규칙 `.pc_header.sk_hdr_top` 의 `border: 1px …`** 이었다
   (row3 는 이미 border 0). 헤더 바닥(145px)에 1px 선이 남아 본문과 갈라져 보였다.
   ⚠️ `.pc_header`(0,1,0) 단독으로는 **`.pc_header.sk_hdr_top`(0,2,0) 에 진다** — 1회 헛발질. 두 선택자 모두 명시한다. */
.pc_header,
.pc_header.sk_hdr_top { border-bottom: 0; }

/* =====================================================================
   S7-19 · 한줄공지 전폭 + 회원카드 메달/여백 (지시 2026-09-03)
   ===================================================================== */

/* ── ① 한줄공지 = 헤더3 **좌측 시작점부터 충전·환전 직전까지** ────────────────
   지시: 「국내형스포츠 밑에서 시작해 고객센터 아래까지」 = 헤더2 메뉴 줄과 같은 좌우 기준.
   구 420px 상한과 `margin-left:auto`(우측 밀착)를 함께 푼다 — 둘 중 하나만 풀면 폭이 안 늘거나
   왼쪽 시작점이 안 맞는다. 남는 폭은 공지가 전부 먹고, 충전·환전은 gap(12px) 뒤 우측 끝에 남는다. */
.pc_header .hdr_row3 .hdr_notice {
    flex: 1 1 auto;
    max-width: none;
    margin-left: 0;
    min-width: 0;
}

/* ── ② 회원 카드 레벨 메달 = 닉네임 + LV/파트너 **두 줄 높이**를 덮게 ──────────
   구 34px 은 닉네임 한 줄 높이라 아래 메타 줄이 비어 보였다. 48px 로 키우고
   헤드 영역 세로 중앙에 건다(`top:50%` + translate) — 로그인 전/후로 줄 수가 같아 흔들리지 않는다.
   ⚠️ 메달이 커진 만큼 헤드 **우측 패딩**도 같이 키워야 닉네임이 메달 밑으로 파고들지 않는다. */
.rail_user_card .ruc_medal {
    top: 50%;
    right: 12px;
    transform: translateY(-50%);
    width: 48px;
    height: 48px;
}
.rail_user_card .ruc_head { padding: 14px 70px 14px 14px; }

/* ── ③ 닉네임 ↔ LV/파트너 줄 사이를 더 띄워 안정감 ─────────────────────────── */
.rail_user_card .ruc_meta { margin-top: 8px; }

/* =====================================================================
   S7-20 · 셸 우측 배팅카트 열 — 카트 없는 전 페이지 (지시 2026-09-03)
   ===================================================================== */

/* PC 만. 홈의 `home_index` 그리드와 **같은 토큰**을 써서 카트 폭·간격이 화면마다 어긋나지 않게 한다. */
@media (min-width: 1025px) {
    .page_shell_body.has_shell_rail {
        display: grid;
        grid-template-columns: minmax(0, 1fr) var(--s7-rail-w);
        column-gap: var(--s7-col-gap);
        align-items: start;
    }
    /* 본문(@Body)이 1열, 카트가 2열. @Body 는 래퍼가 없어 선택자로 못 집으므로
       **레일만 2열로 명시**하고 나머지는 자동 배치에 맡긴다(홈에서 배운 것 — 자동 배치는 행을 가로로 채운다). */
    .page_shell_body.has_shell_rail > .shell_rail { grid-column: 2; grid-row: 1; }
    .page_shell_body.has_shell_rail > :not(.shell_rail) { grid-column: 1; }

    .shell_rail {
        display: flex; flex-direction: column; gap: 8px;
        min-width: 0;
        position: sticky;
        top: calc(var(--sk-hdr-h) + 12px);
        align-self: start;
        padding-top: 12px;
    }
    .shell_rail > * { margin: 0; }
}

/* 모바일은 숨긴다 — 좁은 화면에서 본문을 반으로 가르는 대신 기존 모바일 카트 진입점을 쓴다. */
@media (max-width: 1024.98px) {
    .shell_rail { display: none; }
    /* S7-MOBILE-FIX(2026-09-06 지시) · 홈 레일(`Home.razor` rail_col)도 모바일에서는 회원카드·배팅카트를 감춘다 —
       모바일 카트는 아래서 올라오는 시트가 정본이라 중복이고, 회원정보는 헤더/드로어가 이미 보여준다.
       ⚠️ 실시간 피드(sk_feed_section)는 같은 rail_col 안이지만 모바일 탭 1패널로 설계된 것이라 **남긴다**. */
    .home_index > .rail_col > .rail_user_card,
    .home_index > .rail_col > .cart_section { display: none !important; }
}

/* =====================================================================
   S7-21 · 충전/환전 규격 = 시안(가로등) 정합 (지시 2026-09-03)

   ⚠️ 여기(app-skin)에 두는 이유 — 이 규칙들의 원본은 `layout.css` 인데 그쪽이 **먼저** 로드되므로
      같은 특이도로도 이긴다(sports.css 와는 반대 상황 — 순서 확인 후 파일을 골랐다).
   구 톤: 네이비 입력창(#1a2235) + 청록 버튼(#2a8a9d) + 우측정렬 라벨 + 800px 중앙 폼.
   시안 톤: **표 형식**(좌측 회색 라벨 기둥 + 행 구분선 + 바깥 테두리) + 갈색/골드 금액 버튼 + 전폭.
   ===================================================================== */

/* ── ① 폼 = 표 ─────────────────────────────────────────────────────────
   구 `flex 3:7 + 우측정렬 라벨 + max-width:800` → 시안의 **라벨 기둥이 있는 표**로. */
.charge_form_container {
    max-width: none;
    margin: 0;
    padding: 0;
    border: 1px solid #2a2a2a;
    background: #171717;
}
.charge_form_container .form_row {
    display: grid;
    grid-template-columns: 152px minmax(0, 1fr);
    align-items: center;
    gap: 0;
    margin: 0;
    border-bottom: 1px solid #2a2a2a;
}
.charge_form_container .form_row:last-child { border-bottom: 0; }
.charge_form_container .form_label_area {
    align-self: stretch;
    display: flex; flex-direction: column; justify-content: center;
    text-align: left;
    padding: 14px 16px;
    background: #1c1c1c;
    border-right: 1px solid #2a2a2a;
}
.charge_form_container .form_label { font-size: 13px; font-weight: 700; color: #e6e2d8; }
.charge_form_container .form_input_area { padding: 12px 16px; min-width: 0; }

/* 입력창 = 어두운 바탕 + 우측 정렬 숫자(시안) */
.charge_form_container .form_control {
    background-color: #101010;
    border: 1px solid #2f2f2f;
    border-radius: 2px;
    color: #fff;
    font-size: 15px;
    padding: 10px 12px;
}
/* ⚠️ 구 `.readonly_text` 는 background/border 에 `!important` 가 박혀 있다(layout.css) →
   특이도로는 못 이긴다. 같은 `!important` 로만 되돌아온다(이번 스킨 작업에서 반복된 함정).
   정렬은 시안대로 **우측 유지**(구 flex-end 그대로 둔다 — 값이 오른쪽에 서는 게 시안). */
.charge_form_container .form_control.readonly_text {
    background-color: transparent !important;
    border: 0 !important;
    padding: 0;
    min-height: 0;
    font-size: 14px;
    color: #e6e2d8;
}
.charge_form_container select.form_control { text-align: left; font-size: 13px; width: auto; min-width: 120px; }

/* 안내 문구는 좌측 정렬(구 중앙정렬은 표 안에서 뜬다) */
.charge_form_container .amount_notice { text-align: left; margin: 8px 0 0; font-size: 12px; }

/* ── ② 금액 퀵버튼 = 시안 갈색/골드 · 균등 · 붙임 ────────────────────────── */
.charge_form_container .money_btn_grid,
.wd_amount_quick {
    display: flex; flex-wrap: wrap; gap: 4px; margin-top: 10px;
}
.charge_form_container .btn_amt,
.wd_amount_quick .btn_amt {
    flex: 1 1 0; min-width: 74px;
    background: linear-gradient(180deg, #8a5f24, #63421a);
    border: 1px solid #9b6d2b;
    border-radius: 2px;
    color: #f4e6c8;
    font-size: 13px; font-weight: 700;
    padding: 9px 0;
}
.charge_form_container .btn_amt:hover,
.wd_amount_quick .btn_amt:hover { filter: brightness(1.12); }
/* 정정·초기화 = 회색(시안) */
.charge_form_container .btn_amt.reset,
.wd_amount_quick .btn_amt.reset {
    background: #6b6b6b; border-color: #7a7a7a; color: #fff;
}

/* ── ③ 신청 버튼 = 충전 빨강 / 환전 골드(시안) ────────────────────────────── */
.submit_area { margin-top: 22px; text-align: center; }
.btn_submit_charge {
    max-width: 200px;
    background-color: #b81c22;
    border: 1px solid #d33;
    border-radius: 2px;
    padding: 12px;
    font-size: 15px;
}
/* 환전 = 시안의 골드 「환전요청」. 구 인라인 초록(#2e7d32)은 마크업에 있으므로 !important 로 덮는다
   — 인라인 style 은 특이도로는 못 이긴다(유일한 정당한 !important). */
.btn_submit_charge.btn_submit_exchange {
    background: linear-gradient(180deg, #d8b25c, #b0862f) !important;
    border-color: #c79b3d !important;
    color: #241a06 !important;
}

/* ── ④ 충전유형 선택 = 시안 행 리스트(구 카드 gap 6 → 표 안 행 구분선) ───────── */
.charge_type_section { border-bottom: 1px solid #2a2a2a; }
.charge_type_list { gap: 0; }
.charge_type_list > li {
    border-bottom: 1px solid #242424;
    padding: 12px 16px;
}
.charge_type_list > li:last-child { border-bottom: 0; }
.charge_type_head {
    padding: 14px 16px; background: #1c1c1c; border-bottom: 1px solid #2a2a2a;
    font-size: 13px; font-weight: 700; color: #e6e2d8;
}

/* ── ⑤ 환전 = 2열(좌 폼 / 우 안내) ────────────────────────────────────────
   시안은 안내가 **폼 오른쪽**에 선다. 구조는 CSS 만으로 만든다(마크업은 래퍼 1개 추가). */
@media (min-width: 1025px) {
    .charge_section_wrapper.wd_grid {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 420px;
        gap: 16px;
        align-items: start;
    }
}
.wd_aside .money_guide_panel { margin: 0; }
.wd_aside .spacer_v { margin: 0 0 12px; }

/* ── ⑥ 🔴 모바일 = 환전안내를 **폼 위**로 올리고 닫을 수 있게(지시) ───────────
   `order:-1` 로 시각 순서만 바꾼다 — 마크업/탭 순서는 그대로라 폼이 먼저 읽힌다.
   닫기는 MoneyGuidePanel 의 기존 토글(mg_toggle)이 그대로 담당한다(신규 상태 0). */
@media (max-width: 1024.98px) {
    .charge_section_wrapper.wd_grid { display: flex; flex-direction: column; }
    .charge_section_wrapper.wd_grid > .wd_aside { order: -1; }
    .wd_aside .money_guide_panel { margin: 0 0 12px; }
}

/* ── ⑦ 롤링내역 = 시안의 칩 줄 + 우리 상세(rolling_card) 결합 ────────────────
   시안은 [스포츠 7%][카지노 0%][슬롯 0%][미니게임 22%] 칩 4개 + 우측 「새로고침」.
   ⚠️ 우리 모델에는 **종목별 % 가 없다**(종목별은 누적 금액·건수, % 는 전체 1개) →
      칩에는 실재하는 값(종목 + 누적금액 + 건수)을 넣고, 전체 진행률은 칩 줄 아래 바로 남긴다. */
.rl_row .form_input_area { padding-top: 10px; }
.rl_head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rl_hint { font-size: 11px; color: var(--app-text-muted); font-weight: 400; margin-top: 3px; }
.rl_refresh {
    margin-left: auto; background: none; border: 0; color: var(--app-primary);
    font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
}
.rl_chips { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.rl_chip {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    background: #101010; border: 1px solid #2f2f2f; border-radius: 2px;
    padding: 8px 6px; min-width: 0;
}
.rl_chip .rl_k { font-size: 11px; color: var(--app-text-muted); }
.rl_chip .rl_v { font-size: 13px; font-weight: 800; color: var(--app-primary-light); }
.rl_chip .rl_c { font-size: 10px; color: var(--app-text-dim); }
@media (max-width: 640px) { .rl_chips { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* 상세(기존 rolling_card)는 표 안으로 들어오므로 바깥 여백·테두리를 표에 맞춘다. */
.rl_row .rolling_card { margin: 10px 0 0; border-color: #2f2f2f; background: #101010; }

/* =====================================================================
   S7-22 · 충전/환전 시안 재정합 + 홈 타일 보더 제거 (지시 2026-09-03)
   ===================================================================== */

/* ── ① 환전 = **정확히 반반**(지시 — 구 1fr/420px 는 좌측이 훨씬 넓었다) ────── */
@media (min-width: 1025px) {
    .charge_section_wrapper.wd_grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ── ② 롤링내역이 표 안 한 행으로 들어옴 → 카드 여백을 행에 맞춘다 ─────────── */
.rl_row .rl_head { justify-content: flex-end; margin-bottom: 8px; }
.rl_row .rl_refresh { margin-left: 0; }
.rl_row .form_label_area .rl_hint { display: block; margin-top: 4px; }

/* ── ③ 충전유형 = 시안 4열 행([◯ 🏆 이름] · [안내] · [지급률] · [롤링박스]) ──── */
.ct_area .charge_type_list { gap: 0; }
.ct_area .charge_type_item { border-bottom: 1px solid #242424; padding: 0; }
.ct_area .charge_type_item:last-child { border-bottom: 0; }
.ct_area .radio_container {
    display: grid;
    grid-template-columns: 24px minmax(120px, 1.1fr) minmax(0, 1.6fr) minmax(0, 1.5fr) 180px;
    align-items: center;
    gap: 10px;
    padding: 12px 4px;
    margin: 0;
    min-height: 0;
}
/* 체크마크는 1열, 나머지는 순서대로 2~5열(자동 배치) */
.ct_area .radio_container .checkmark { position: static; grid-column: 1; }
.ct_name { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.ct_name i { color: var(--app-primary); font-size: 15px; width: 18px; text-align: center; }
.ct_name b { font-size: 13px; color: var(--app-primary); white-space: nowrap; }
.charge_type_item.selected .ct_name b { color: var(--app-primary-light); }
.ct_desc { font-size: 12px; color: #cfcfcf; line-height: 1.5; min-width: 0; }
.ct_rate { font-size: 12px; color: #e8a33d; min-width: 0; }
.ct_rate .tl_pct { color: var(--app-primary-light); font-weight: 800; margin-left: 4px; }
/* 롤링 = 시안의 우측 테두리 박스(내용 없으면 박스도 없다) */
.ct_roll:not(:empty) {
    display: block;
    border: 1px solid #9b6d2b; border-radius: 3px;
    padding: 8px 10px; text-align: center;
}
.ct_roll_line { display: block; font-size: 12px; font-weight: 700; color: var(--app-primary-light); }

@media (max-width: 900px) {
    /* 좁은 화면 = 2열로 접는다(라디오 + 이름 / 나머지 세로) */
    .ct_area .radio_container { grid-template-columns: 24px minmax(0, 1fr); row-gap: 6px; }
    .ct_desc, .ct_rate, .ct_roll { grid-column: 2; }
}

/* ── ④ 빠른계좌문의 = 표 안 행이므로 버튼 폭을 내용에 맞춘다(전폭 금지) ───────── */
.charge_form_container .form_input_area .btn_submit_charge.btn_account_inquiry {
    width: auto; max-width: none; padding: 10px 22px; font-size: 13px;
}

/* ── ⑤ 🔴 홈 타일·배너 테두리 제거(지시 — 위·아래 요소까지 확인) ────────────────
   실측으로 테두리가 남아 있던 곳은 **정확히 두 군데**였다:
     · `.home_cat_card`   1px solid #b8952a (금색)
     · `.main_banner_wrap` 1px solid rgba(255,255,255,.08)
   아래쪽(공지·이벤트·실시간당첨)은 테두리 0 으로 확인돼 손대지 않았다. */
.home_cat_card { border: 0; background: none; border-radius: 0; }
.home_cat_card:hover { border-color: transparent; }
.main_banner_wrap { border: 0; }

/* =====================================================================
   S7-23 · 탭/버튼 가독 + 모바일 표 폭 + 금액버튼 3열 (지시 2026-09-03)
   ===================================================================== */

/* ── ① 탭 바 배경 #2d2d2d · **선택 탭 = 밝은 바탕 + 검정 글자**(지시) ───────────
   지시: 「모바일에서 클릭 시 글자가 검정이어야 명확」 → 활성 탭에 금색 바탕을 깔고 글자를 검정으로.
   어두운 바탕 위 검정 글자는 읽히지 않으므로 **바탕과 글자를 한 쌍으로** 바꾼다. */
.support_tabs_container { background-color: #2d2d2d; }
.support_tabs_container .tab_item { color: #cfcfcf; }
.support_tabs_container .tab_item.active {
    background: var(--app-primary);
    color: #111111;
    font-weight: 800;
}
/* 모바일 탭(누름) 순간에도 같은 대비 유지 — iOS 기본 하이라이트가 글자를 흐리게 만든다. */
.support_tabs_container .tab_item:active,
.support_tabs_container .tab_item:focus-visible { background: var(--app-primary); color: #111111; }
.support_tabs_container .tab_item { -webkit-tap-highlight-color: transparent; }

/* ── ② 빠른계좌문의 = 뚜렷한 색(구 회색 #5a6472 는 배경에 묻혔다) ───────────── */
.charge_form_container .btn_submit_charge.btn_account_inquiry {
    background: #1f6feb;
    border: 1px solid #4a95ff;
    color: #fff;
    font-weight: 700;
}
.charge_form_container .btn_submit_charge.btn_account_inquiry:hover { background: #2a7cf7; }

/* ── ③ 금액 퀵버튼 = **3열 고정 · 폭 통일**(지시) ────────────────────────────
   환전 = PC·모바일 모두 3열(2줄 × 3개). 충전 = PC 는 한 줄 균등, 모바일만 3열.
   ⚠️ `repeat(3, minmax(0,1fr))` 이라 글자 길이와 무관하게 **셋이 정확히 같은 폭**이 된다
      (구 flex 는 내용폭이 섞여 「1000만원」 칸만 넓어졌다 = "안정화 안 됨"의 원인). */
.wd_grid .charge_form_container .money_btn_grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
}
@media (max-width: 1023.98px) {
    .charge_form_container .money_btn_grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 6px;
    }
    .charge_form_container .btn_amt { min-width: 0; font-size: 12px; padding: 9px 2px; }
}

/* ── ④ 모바일 = 라벨 기둥 축소(지시 — 우측 내용이 안 보이던 문제) ───────────────
   구 `flex: 2` 규칙(layout.css)은 행이 grid 로 바뀌면서 무력화됐다 → grid 축으로 다시 잡는다. */
@media (max-width: 1023.98px) {
    .charge_form_container .form_row { grid-template-columns: 84px minmax(0, 1fr); }
    .charge_form_container .form_label_area { padding: 10px 8px; }
    .charge_form_container .form_label { font-size: 12px; white-space: normal; }
    .charge_form_container .form_input_area { padding: 10px 8px; }
}

/* ── ⑤ 롤링 안내 = i 버튼 토글 ─────────────────────────────────────────── */
.rl_info {
    display: inline-flex; align-items: center; justify-content: center;
    width: 16px; height: 16px; margin-left: 5px; vertical-align: middle;
    border: 1px solid var(--app-primary); border-radius: 50%;
    background: none; color: var(--app-primary);
    font-size: 10px; font-weight: 800; font-style: italic; line-height: 1; cursor: pointer;
}
.rl_info:hover { background: var(--app-primary); color: #111; }

/* ── ⑥ 롤링 칩 = 항목이 늘면 **가로 스크롤**(지시 — 줄바꿈으로 세로로 길어지지 않게) ── */
.rl_chips {
    display: flex;
    flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}
.rl_chip { flex: 0 0 auto; min-width: 92px; }
@media (max-width: 640px) { .rl_chips { grid-template-columns: none; } }

/* =====================================================================
   S7-24 · 충전유형 선택 가독 + 모바일 타일 6칸 (지시 2026-09-03)
   ===================================================================== */

/* ── ① 선택된 충전유형 = 금색 바탕 → **글자 전부 검정**(지시) ────────────────
   구 규칙은 유형명만 색을 바꿔 나머지(안내·지급률·롤링)가 금색 위 금색이라 안 보였다.
   행 전체를 검정 계열로 한 번에 뒤집는다. */
.ct_area .charge_type_item.selected { background: var(--app-primary); }
.ct_area .charge_type_item.selected .ct_name b,
.ct_area .charge_type_item.selected .ct_desc,
.ct_area .charge_type_item.selected .ct_rate,
.ct_area .charge_type_item.selected .ct_rate .tl_muted,
.ct_area .charge_type_item.selected .ct_rate .tl_pct,
.ct_area .charge_type_item.selected .ct_roll_line { color: #111111; }
.ct_area .charge_type_item.selected .ct_name i { color: #3a2a05; }
.ct_area .charge_type_item.selected .ct_roll:not(:empty) { border-color: rgba(0, 0, 0, .45); }

/* ── ② 라디오(checkmark) = 칸 **정중앙**(지시) ────────────────────────────
   모바일 2열 배치에서 첫 열이 1행만 차지해 라디오가 위로 붙어 있었다 →
   전체 행 높이를 차지하게 하고 가운데 정렬한다. */
/* 🔴 `grid-row: 1 / -1` 은 여기서도 안 먹는다 — `grid-template-rows` 선언이 없으면 `-1` 이
   **암시 행 끝이 아니라 명시 그리드의 마지막 선(=1번 선)** 이라 결국 1행 한 칸만 차지한다
   (홈 우측 레일에서 이미 한 번 당한 함정 · 실측 라디오가 중앙에서 42px 위로 떴다).
   → 행 수를 `span` 으로 센다. 모바일 최대 4줄(이름/안내/지급률/롤링)이라 span 4.
     PC 는 한 줄이라 남는 3행이 높이 0 으로 생겨도 무해하다. */
.ct_area .radio_container .checkmark {
    grid-row: 1 / span 4;
    align-self: center;
    justify-self: center;
    margin: 0;
}

/* ── ③ 모바일 전용 6번째 타일(이벤트) — PC(5열)에서는 숨긴다 ────────────────── */
@media (min-width: 901px) { .home_cat_card.mo_only { display: none; } }

/* BANK-MULTI(2026-10-28) · 충전·환전 방식 탭(폼 표 맨 위 — 계좌가 2개 이상일 때만)
   A안(결정 2026-10-28) — 떨어진 버튼 왼쪽 정렬 · 선택 = 밝은 베이지 / 비선택 = 진회색 */
.charge_form_container .method_tabs {
    display: flex; flex-wrap: wrap; gap: 8px;
    padding: 12px 14px;
    border-bottom: 1px solid #2a2a2a;
    background: #141414;
}
.charge_form_container .method_tab {
    flex: 0 0 auto; min-width: 96px;
    padding: 9px 18px;
    border-radius: 6px;
    background: #3a3a3a;
    border: 1px solid #5a5a5a;
    color: #cfcac0; font-size: 14px; font-weight: 700;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}
.charge_form_container .method_tab:hover { border-color: #8a8478; color: #fff; }
.charge_form_container .method_tab.active { background: #e8e2cf; border-color: #fff7df; color: #1a1a1a; }
@media (max-width: 767px) {
    .charge_form_container .method_tabs { padding: 10px; gap: 6px; }
    .charge_form_container .method_tab { min-width: 80px; padding: 8px 14px; font-size: 13px; }
}
