/* ============================================================
   마추 v2 — jt2.css (커뮤니티형 라이트 디자인시스템)
   시안: 마추 커뮤니티형 v2 (v2.html) 실측치 기반
   ------------------------------------------------------------
   · 신규 클래스는 전부 jt2- 접두. 구 jt.app.css / jt.gnu.css 는
     롤백용 보존 — 이 파일과 동시 로드하지 않는다.
   · 다크모드: body.jt-dark 에서 CSS 변수만 재정의.
   · 미디어쿼리는 전부 파일 맨 끝 유지. 중간 삽입 금지.
   · 섹션 삽입은 반드시 "마지막 섹션 뒤, 첫 미디어쿼리 앞"의
     '빈 줄'에만 할 것 — 문자열 검색으로 삽입점을 잡지 말 것.
     (한 번은 이 머리말 속 단어를 삽입점으로 오인해 주석이 깨지며
      :root 토큰 블록이 통째로 파싱에서 버려진 사고가 있었다.)
   ============================================================ */

/* ------------------------------------------------------------
   1. 토큰
   ------------------------------------------------------------ */
:root {
  /* 타이포 */
  --jt2-font: Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;

  /* 서피스 */
  --jt2-bg:        #F2F5FA;   /* 페이지 바닥 */
  --jt2-card:      #FFFFFF;   /* 카드 */
  --jt2-inset:     #F8FAFE;   /* 카드 속 타일 (KPI 미니 등) */
  --jt2-inset-bd:  #EDF1F7;
  --jt2-navy:      #0F1B2D;   /* 티커 · 월렛 헤더 */
  --jt2-navy-tx:   #DCE5F2;
  --jt2-navy-mut:  #7E8DA5;
  --jt2-hero:      #1D48C8;   /* 메인픽 배너 */

  /* 라인 */
  --jt2-line:      #E4EAF3;   /* 카드 테두리 */
  --jt2-line-soft: #E7EDF6;   /* 컨트롤 테두리 */
  --jt2-hairline:  #EEF2F8;   /* 카드 헤더 하단선 */
  --jt2-hairline-2:#F2F5FA;   /* 표 행 구분선 */
  --jt2-dash:      #C9D7EF;   /* 점선 안내 박스 */

  /* 텍스트 */
  --jt2-text:      #0E1B2C;
  --jt2-text-2:    #5A6A82;
  --jt2-mute:      #8B98AC;
  --jt2-faint:     #B8C2D2;
  --jt2-dim:       #7A8AA0;   /* 미적중·정산 등 낮은 톤 */

  /* 브랜드 */
  --jt2-pri:       #2563EB;
  --jt2-pri-hv:    #1D4ED8;
  --jt2-link:      #1D4ED8;   /* 텍스트 링크 (다크에서 밝게) */
  --jt2-pri-sh:    0 4px 10px rgba(37,99,235,.25);
  --jt2-hover:     rgba(37,99,235,.08);

  /* 틴트 칩 */
  --jt2-tint-blue:    #E8EFFD;  --jt2-tint-blue-tx:  #1D4ED8;  --jt2-tint-blue-bd: #D8E5FA;
  --jt2-tint-red:     #FDECEC;  --jt2-tint-red-tx:   #D62B2B;
  --jt2-tint-green:   #E6F7EE;  --jt2-tint-green-tx: #0E8A46;
  --jt2-tint-amber:   #FFF7E8;  --jt2-tint-amber-tx: #B45309;  --jt2-tint-amber-bd: #F5E5C2;
  --jt2-tint-grey:    #F1F4F9;  --jt2-tint-grey-tx:  #5A6A82;
  --jt2-soft-blue:    #EDF4FF;  /* 라인 버튼 호버 등 */

  /* 시맨틱 */
  --jt2-ok:        #0E8A46;   /* 적중 / 상승 */
  --jt2-ok-hi:     #12A150;   /* +ROI 강조 */
  --jt2-bad:       #D62B2B;   /* 미적중 / 서울 */
  --jt2-amber:     #B45309;   /* 잠정 / 대기 */
  --jt2-seoul:     #0E1B2C;   /* 시안: 서울은 기본색 — 빨강은 적중 태그 전용 */
  --jt2-busan:     #0E8A46;
  --jt2-jeju:      #0E1B2C;   /* 시안: 제주도 기본색 */

  /* 게이지 */
  --jt2-track:     #EAEFF7;
  --jt2-bar-soft:  #C7D6F2;   /* 미강조 막대(차트) */

  /* 셰이프 */
  --jt2-r-xs: 6px;   /* 미니 칩 */
  --jt2-r-sm: 7px;   /* 상태 태그 */
  --jt2-r:    10px;  /* 컨트롤 */
  --jt2-r-md: 13px;  /* 인셋 타일 */
  --jt2-r-lg: 16px;  /* 카드 */
  --jt2-r-xl: 18px;  /* 히어로 */

  /* 레이아웃 */
  --jt2-max:   1200px;
  --jt2-hd-h:  58px;
  --jt2-gut:   20px;

  /* 그림자 */
  --jt2-sh-card: 0 1px 4px rgba(14,27,44,.08);
  --jt2-sh-drop: 0 14px 40px rgba(14,27,44,.13);

  /* ── 구 토큰 별칭 (아직 리빌드 전 페이지의 인라인 var() 생존용) ── */
  --jt-font-sans: var(--jt2-font);
  --jt-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --jt-bg: var(--jt2-bg);            --jt-panel: var(--jt2-card);
  --jt-panel-2: var(--jt2-inset);    --jt-panel-3: var(--jt2-tint-grey);
  --jt-hover: var(--jt2-hover);      --jt-row-dim: var(--jt2-inset);
  --jt-border: var(--jt2-line);      --jt-border-2: var(--jt2-line-soft);
  --jt-hairline: var(--jt2-hairline-2);
  --jt-text: var(--jt2-text);        --jt-text-2: var(--jt2-text-2);
  --jt-text-sub: var(--jt2-text-2);  --jt-text-mute: var(--jt2-mute);
  --jt-text-dim: var(--jt2-faint);
  --jt-amber: var(--jt2-amber);      --jt-amber-dk: var(--jt2-amber);
  --jt-amber-lo: var(--jt2-tint-amber-bd);
  --jt-amber-bg: var(--jt2-tint-amber);
  --jt-amber-ink: #FFFFFF;
  --jt-gold: var(--jt2-amber);
  --jt-up: var(--jt2-bad);           --jt-up-bg: var(--jt2-tint-red);
  --jt-down: var(--jt2-pri);         --jt-down-bg: var(--jt2-tint-blue);
  --jt-ok: var(--jt2-ok);            --jt-ok-bg: var(--jt2-tint-green);
  --jt-red: var(--jt2-bad);          --jt-green: var(--jt2-ok);
  --jt-seoul: var(--jt2-seoul);      --jt-busan: var(--jt2-busan);
  --jt-jeju: var(--jt2-jeju);
  --jt-r: 12px; --jt-r-sm: 8px; --jt-r-xs: 5px; --jt-r-pill: 999px;
  --jt-s1: 6px; --jt-s2: 11px; --jt-s3: 17px; --jt-s4: 22px;
  --jt-s5: 28px; --jt-s6: 34px; --jt-s7: 45px; --jt-s8: 55px;
  --jt-max: var(--jt2-max); --jt-rail: 320px; --jt-gutter: var(--jt2-gut);
  --jt-header-h: var(--jt2-hd-h); --jt-ticker-h: 36px;
  --jt-shadow-sm: var(--jt2-sh-card); --jt-shadow: var(--jt2-sh-drop);
  --jt-shadow-lg: var(--jt2-sh-drop);
}

/* ------------------------------------------------------------
   2. 다크모드 — body.jt-dark 에서 변수만 재정의
      (localStorage 'jt2-theme' → 헤더 토글 스크립트가 부여)
   ------------------------------------------------------------ */
body.jt-dark {
  --jt2-bg:        #0D1320;
  --jt2-card:      #161E2C;
  --jt2-inset:     #1B2434;
  --jt2-inset-bd:  #242F44;
  --jt2-navy:      #080D17;
  --jt2-hero:      #1D48C8;

  --jt2-line:      #242F44;
  --jt2-line-soft: #2A3550;
  --jt2-hairline:  #242F44;
  --jt2-hairline-2:#202A3C;
  --jt2-dash:      #2C4070;

  --jt2-text:      #E8EEF7;
  --jt2-text-2:    #A7B4C9;
  --jt2-mute:      #8594A9;
  --jt2-faint:     #5F6D86;
  --jt2-dim:       #8594A9;

  --jt2-link:      #7EA2FF;
  --jt2-hover:     rgba(126,162,255,.10);

  --jt2-tint-blue:    #1C2B4D;  --jt2-tint-blue-tx:  #7EA2FF;  --jt2-tint-blue-bd: #3B5BBF;
  --jt2-tint-red:     #3B2126;  --jt2-tint-red-tx:   #FF7B72;
  --jt2-tint-green:   #173324;  --jt2-tint-green-tx: #4ED98A;
  --jt2-tint-amber:   #342A12;  --jt2-tint-amber-tx: #E8B95C;  --jt2-tint-amber-bd: #54431E;
  --jt2-tint-grey:    #232E43;  --jt2-tint-grey-tx:  #A7B4C9;
  --jt2-soft-blue:    #1C2B4D;

  --jt2-ok:        #4ED98A;
  --jt2-ok-hi:     #4ED98A;
  --jt2-bad:       #FF7B72;
  --jt2-amber:     #E8B95C;
  --jt2-seoul:     #E8EEF7;
  --jt2-busan:     #4ED98A;
  --jt2-jeju:      #E8EEF7;

  --jt2-track:     #2C3A54;
  --jt2-bar-soft:  #2C3A54;

  --jt2-sh-card: 0 1px 4px rgba(0,0,0,.4);
  --jt2-sh-drop: 0 14px 40px rgba(0,0,0,.5);
}

/* ------------------------------------------------------------
   3. 베이스
   ------------------------------------------------------------ */
html { overflow-y: scroll; }
body {
  margin: 0;
  background: var(--jt2-bg);
  color: var(--jt2-text);
  font-family: var(--jt2-font);
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
}
.jt2-a, .jt2-main a { color: var(--jt2-link); text-decoration: none; }
.jt2-main a:hover { color: var(--jt2-pri); }
.jt2-num { font-variant-numeric: tabular-nums; letter-spacing: 0; }
.jt2-mute { color: var(--jt2-mute); }
.jt2-faint { color: var(--jt2-faint); }
.jt2-sub { color: var(--jt2-text-2); }
.jt2-up { color: var(--jt2-ok-hi); }        /* 상승 / +수익 */
.jt2-down, .jt2-red { color: var(--jt2-bad); }
.jt2-ok { color: var(--jt2-ok); }
.jt2-amber-tx { color: var(--jt2-amber); }
.jt2-link { color: var(--jt2-link); font-weight: 700; cursor: pointer; text-decoration: none; }
.jt2-link:hover { text-decoration: underline; }
.jt2-b { font-weight: 800; }
.jt2-ellipsis { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jt2-right { margin-left: auto; }
.jt2-inline { display: inline-flex; align-items: center; gap: 6px; }
.jt2-cell-r { text-align: right; }
.jt2-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.jt2-meet--seoul { color: var(--jt2-seoul); font-weight: 800; }
.jt2-meet--busan { color: var(--jt2-busan); font-weight: 800; }
.jt2-meet--jeju  { color: var(--jt2-jeju);  font-weight: 800; }
.jt2-meet--grey  { color: var(--jt2-mute);  font-weight: 800; }

/* ------------------------------------------------------------
   4. 애니메이션
   ------------------------------------------------------------ */
@keyframes jt-pulse   { 0%{box-shadow:0 0 0 0 rgba(14,138,70,.5)} 70%{box-shadow:0 0 0 5px rgba(14,138,70,0)} 100%{box-shadow:0 0 0 0 rgba(14,138,70,0)} }
@keyframes jt-pulse-w { 0%{box-shadow:0 0 0 0 rgba(255,255,255,.55)} 70%{box-shadow:0 0 0 5px rgba(255,255,255,0)} 100%{box-shadow:0 0 0 0 rgba(255,255,255,0)} }
@keyframes jt-marquee { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
@keyframes jt-fadeup  { 0%{opacity:0;transform:translateY(9px)} 100%{opacity:1;transform:none} }
.jt2-fadeup { animation: jt-fadeup .4s ease-out both; }

/* ------------------------------------------------------------
   5. 레이아웃 골격
   ------------------------------------------------------------ */
.jt2-main {
  max-width: var(--jt2-max);
  margin: 0 auto;
  padding: 22px var(--jt2-gut) 26px;
  box-sizing: border-box;
  width: 100%;
  animation: jt-fadeup .4s ease-out both;
}
/* 본문 + 320px 사이드 (홈 포털형) */
.jt2-cols { display: grid; grid-template-columns: 1fr 320px; gap: 18px; align-items: start; }
.jt2-side { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.jt2-col  { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
/* 등분 그리드 */
.jt2-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.jt2-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.jt2-grid4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
/* 히어로(1.35fr) + KPI 2x2 조합 등 비대칭 */
.jt2-split { display: grid; grid-template-columns: 1.35fr 1fr; gap: 16px; }
.jt2-split--wide { grid-template-columns: 1.55fr 1fr; }

/* ------------------------------------------------------------
   6. 헤더
   ------------------------------------------------------------ */
.jt2-header {
  position: sticky; top: 0; z-index: 60;
  background: var(--jt2-card);
  border-bottom: 1px solid var(--jt2-line);
}
.jt2-header-in {
  max-width: var(--jt2-max); margin: 0 auto;
  display: flex; align-items: center; gap: 18px;
  padding: 0 var(--jt2-gut); height: var(--jt2-hd-h); box-sizing: border-box;
}
/* 리빌더 style.css 의 #header{position:fixed;...} 방어 (id+class > id) */
#header.jt2-header {
  position: sticky; top: 0; left: auto; width: auto;
  padding: 0; margin: 0;
  background: var(--jt2-card);
  border-bottom: 1px solid var(--jt2-line);
  box-shadow: none; z-index: 60;
}
.jt2-logo { display: flex; align-items: center; gap: 9px; flex-shrink: 0; text-decoration: none; color: var(--jt2-text); }
.jt2-logo .bi {
  width: 32px; height: 32px; border-radius: 10px;
  background: var(--jt2-pri); color: #FFFFFF;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 15px; box-shadow: var(--jt2-pri-sh);
}
.jt2-logo .bt { font-weight: 800; font-size: 17.5px; letter-spacing: -0.02em; white-space: nowrap; }

.jt2-nav { display: flex; align-items: stretch; gap: 2px; height: var(--jt2-hd-h); min-width: 0; overflow-x: auto; scrollbar-width: none; }
.jt2-nav::-webkit-scrollbar { display: none; }
.jt2-nav a {
  display: flex; align-items: center;
  padding: 3px 13px 0;
  font-size: 14.5px; font-weight: 700; white-space: nowrap;
  box-sizing: border-box; border-bottom: 3px solid transparent;
  color: var(--jt2-text-2); text-decoration: none;
}
.jt2-nav a:hover { color: var(--jt2-text); }
.jt2-nav a[aria-current="page"] { color: var(--jt2-text); border-bottom-color: var(--jt2-pri); }

.jt2-hright { margin-left: auto; display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

/* 통합 검색 */
.jt2-search {
  display: flex; align-items: center; gap: 8px;
  background: var(--jt2-tint-grey); border: 1px solid var(--jt2-line-soft);
  border-radius: var(--jt2-r); padding: 0 12px; height: 36px; width: 150px;
  color: var(--jt2-mute); box-sizing: border-box; margin: 0;
}
.jt2-search svg { width: 14px; height: 14px; flex-shrink: 0; }
.jt2-search input.jt2-search-in, input.jt2-search-in {
  flex: 1; min-width: 0; border: 0; background: transparent; outline: 0;
  font: 600 12.5px var(--jt2-font); color: var(--jt2-text); padding: 0; height: auto;
}
.jt2-search input.jt2-search-in::placeholder { color: var(--jt2-mute); }
.jt2-search:focus-within { border-color: var(--jt2-pri); background: var(--jt2-card); }

/* 포인트 칩 */
.jt2-point {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  border-radius: var(--jt2-r); padding: 0 12px; height: 36px;
  font-size: 12.5px; font-weight: 800; white-space: nowrap; text-decoration: none;
}
.jt2-point:hover { background: var(--jt2-soft-blue); }
.jt2-point .u { font-weight: 700; opacity: .75; }

/* 아이콘 버튼 (벨 · 다크토글 · 관리) */
.jt2-iconbtn {
  position: relative; width: 36px; height: 36px; border-radius: var(--jt2-r);
  border: 1px solid var(--jt2-line-soft); background: transparent;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; color: var(--jt2-text-2); flex-shrink: 0; padding: 0;
  text-decoration: none;
}
.jt2-iconbtn:hover { background: var(--jt2-hover); }
.jt2-iconbtn svg { width: 17px; height: 17px; }
.jt2-dot {
  position: absolute; top: 5px; right: 5px; width: 9px; height: 9px;
  border-radius: 50%; background: var(--jt2-tint-red-tx);
  border: 2px solid var(--jt2-card);
}
/* 다크모드 토글 아이콘 전환 */
.jt2-ic-moon { display: none; }
body.jt-dark .jt2-ic-moon { display: block; }
body.jt-dark .jt2-ic-sun { display: none; }

/* 아바타 칩 */
.jt2-avatar {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  border: 1px solid var(--jt2-line-soft); border-radius: 11px;
  padding: 4px 10px 4px 5px; text-decoration: none; color: var(--jt2-text);
}
.jt2-avatar:hover { background: var(--jt2-hover); }
.jt2-avatar .ini {
  width: 27px; height: 27px; border-radius: 8px;
  background: linear-gradient(135deg, #2563EB, #7C3AED); color: #FFFFFF;
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
}
.jt2-avatar .nm { font-size: 13px; font-weight: 700; white-space: nowrap; }

/* 헤더 텍스트 버튼 (로그인 등) */
.jt2-hbtn {
  display: inline-flex; align-items: center; height: 36px; padding: 0 13px;
  border-radius: var(--jt2-r); border: 1px solid var(--jt2-line-soft);
  font-size: 12.5px; font-weight: 800; color: var(--jt2-text-2);
  text-decoration: none; white-space: nowrap; background: transparent; cursor: pointer;
}
.jt2-hbtn:hover { background: var(--jt2-hover); }
.jt2-hbtn--pri {
  background: var(--jt2-pri); border-color: var(--jt2-pri); color: #FFFFFF;
  box-shadow: var(--jt2-pri-sh);
}
.jt2-hbtn--pri:hover { background: var(--jt2-pri-hv); }

/* 버거 (모바일 전용 — 미디어쿼리에서 표시) */
.jt2-burger {
  display: none; width: 36px; height: 36px; border-radius: var(--jt2-r);
  border: 1px solid var(--jt2-line-soft); background: transparent;
  align-items: center; justify-content: center; color: var(--jt2-text-2);
  cursor: pointer; padding: 0; flex-shrink: 0;
}
.jt2-burger svg { width: 18px; height: 18px; }

/* ------------------------------------------------------------
   7. 속보 티커 (헤더 바로 아래 sticky)
   ------------------------------------------------------------ */
.jt2-ticker {
  position: sticky; top: var(--jt2-hd-h); z-index: 55;
  background: var(--jt2-navy); color: var(--jt2-navy-tx);   /* 시안: 네이비 바 + 흰 글자 */
}
.jt2-ticker-in {
  max-width: var(--jt2-max); margin: 0 auto;
  display: flex; align-items: center; gap: 12px;
  padding: 8px var(--jt2-gut); font-size: 12.5px; box-sizing: border-box;
}
.jt2-ticker-tag {
  display: inline-flex; align-items: center; gap: 6px;
  background: #D62B2B; color: #FFFFFF; font-weight: 800; font-size: 10.5px;
  border-radius: var(--jt2-r-xs); padding: 3px 8px;
  letter-spacing: .06em; white-space: nowrap; flex-shrink: 0;
}
.jt2-ticker-tag i {
  width: 5px; height: 5px; border-radius: 50%; background: #FFFFFF;
  animation: jt-pulse-w 1.6s ease-out infinite;
}
.jt2-ticker-view { flex: 1; min-width: 0; overflow: hidden; }
.jt2-ticker-track {
  display: flex; gap: 44px; width: max-content;
  animation: jt-marquee 30s linear infinite;
}
.jt2-ticker:hover .jt2-ticker-track { animation-play-state: paused; }
.jt2-ticker-item {
  font-size: 12.5px; font-weight: 600; white-space: nowrap; color: var(--jt2-navy-tx);
  text-decoration: none; display: inline-flex; align-items: baseline; gap: 7px;
}
.jt2-ticker-item:hover { color: #FFFFFF; }
.jt2-ticker-item .k { font-weight: 800; }
.jt2-ticker-item .d { color: var(--jt2-navy-mut); font-size: 11.5px; }
.jt2-ticker-more {
  margin-left: auto; color: #9FB2CC; cursor: pointer; font-weight: 600;
  white-space: nowrap; text-decoration: none; flex-shrink: 0;
}
.jt2-ticker-more:hover { color: #FFFFFF; }

/* ------------------------------------------------------------
   8. 페이지 헤드 / 데이 필 / 세그먼트
   ------------------------------------------------------------ */
.jt2-pagehead { display: flex; align-items: flex-end; gap: 14px; margin-bottom: 20px; flex-wrap: wrap; }
.jt2-pagehead h1 { margin: 0; font-size: 23px; font-weight: 800; letter-spacing: -0.02em; color: var(--jt2-text); }
.jt2-pagehead .sub { display: block; font-size: 13px; color: var(--jt2-mute); margin-top: 4px; font-weight: 500; }
.jt2-pagehead .tit { min-width: 0; }
.jt2-pagehead .right { margin-left: auto; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* 개최일 선택 필 (금/토/일) */
.jt2-days { display: flex; gap: 6px; flex-wrap: wrap; }
.jt2-day {
  display: flex; flex-direction: column; align-items: center; gap: 1px;
  border: 1px solid var(--jt2-line-soft); background: var(--jt2-card);
  border-radius: 11px; padding: 7px 14px; cursor: pointer;
  color: var(--jt2-text-2); text-decoration: none;
}
.jt2-day:hover { background: var(--jt2-hover); }
.jt2-day .w { font-size: 10.5px; font-weight: 700; }
.jt2-day .d { font-size: 13.5px; font-weight: 700; }
.jt2-day--sat .w { color: var(--jt2-tint-blue-tx); }
.jt2-day--sun .w { color: var(--jt2-tint-red-tx); }
.jt2-day[aria-current="page"] {
  background: var(--jt2-pri); border-color: var(--jt2-pri); color: #FFFFFF;
  box-shadow: 0 4px 10px rgba(37,99,235,.28);
}
.jt2-day[aria-current="page"] .w { color: #FFFFFF; opacity: .85; }
.jt2-day[aria-current="page"] .d { font-weight: 800; }

/* 세그먼트 토글 (실전픽/백테스트 등) */
.jt2-seg { display: inline-flex; background: var(--jt2-track); border-radius: 11px; padding: 3px; }
.jt2-seg > a, .jt2-seg > button, .jt2-seg > span {
  border: 0; background: transparent; border-radius: 9px; padding: 7px 16px;
  font-family: var(--jt2-font); font-size: 12.5px; font-weight: 700; color: var(--jt2-dim);
  cursor: pointer; text-decoration: none; white-space: nowrap;
}
.jt2-seg > .on, .jt2-seg > [aria-pressed="true"], .jt2-seg > [aria-current="page"] {
  background: var(--jt2-card); color: var(--jt2-text);
  font-weight: 800; box-shadow: var(--jt2-sh-card);
}

/* 필터 행 (탭 + 우측 보조) */
.jt2-filters { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }

/* ------------------------------------------------------------
   9. 카드
   ------------------------------------------------------------ */
.jt2-card {
  background: var(--jt2-card);
  border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg);
  overflow: hidden;
  min-width: 0;
}
.jt2-card--pad { padding: 22px 24px; overflow: visible; }
.jt2-card-head {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 20px; border-bottom: 1px solid var(--jt2-hairline);
  flex-wrap: wrap;
}
.jt2-card-head .t { font-size: 15.5px; font-weight: 800; color: var(--jt2-text); }  /* 시안 L183 실측 */
.jt2-card-head .d { font-size: 12px; color: var(--jt2-mute); font-weight: 600; }
.jt2-card-head .more, .jt2-more {
  margin-left: auto; font-size: 12.5px; font-weight: 700;
  color: var(--jt2-link); cursor: pointer; text-decoration: none; white-space: nowrap;
}
.jt2-card-head .more:hover, .jt2-more:hover { text-decoration: underline; }
.jt2-card-body { padding: 16px 20px; }
.jt2-card-foot {
  padding: 12px 20px; border-top: 1px solid var(--jt2-hairline);
  font-size: 12px; color: var(--jt2-mute); display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
/* 섹션 미니 타이틀 (파란 세로바) */
.jt2-sechead { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 800; color: var(--jt2-text); }
.jt2-sechead::before { content: ""; width: 3px; height: 12px; border-radius: 2px; background: var(--jt2-pri); }
/* 킥커 라벨 (VERIFIED PERFORMANCE 등) */
.jt2-kicker {
  display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .08em;
  color: var(--jt2-tint-blue-tx); background: var(--jt2-tint-blue);
  border-radius: var(--jt2-r-xs); padding: 3px 8px; white-space: nowrap;
}
.jt2-kicker--plain { background: transparent; color: var(--jt2-mute); padding: 0; }

/* ------------------------------------------------------------
   10. KPI 타일
   ------------------------------------------------------------ */
.jt2-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.jt2-kpis--2 { grid-template-columns: 1fr 1fr; gap: 12px; }
.jt2-kpis--3 { grid-template-columns: repeat(3, 1fr); }
.jt2-kpi {
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg); padding: 16px 18px; min-width: 0;
}
.jt2-kpi .l { font-size: 11.5px; font-weight: 700; color: var(--jt2-mute); }
.jt2-kpi .v { font-size: 22px; font-weight: 800; margin-top: 6px; color: var(--jt2-text); }
.jt2-kpi .v small { font-size: 12px; color: var(--jt2-mute); font-weight: 700; }
.jt2-kpi .d { font-size: 11px; color: var(--jt2-mute); margin-top: 5px; }
.jt2-kpi .v.ok { color: var(--jt2-ok-hi); }
.jt2-kpi .v.bad { color: var(--jt2-bad); }
.jt2-kpi .v.pri { color: var(--jt2-link); }
.jt2-kpi .v.amber { color: var(--jt2-amber); }
/* 카드 속 인셋 타일 (연한 배경) */
.jt2-kpi--inset {
  background: var(--jt2-inset); border-color: var(--jt2-inset-bd);
  border-radius: var(--jt2-r-md); padding: 13px 15px;
}
.jt2-kpi--inset .l { font-size: 11.5px; }
.jt2-kpi--inset .v { font-size: 21px; margin-top: 4px; }
.jt2-kpi--inset .v small { font-size: 12px; }
.jt2-kpi--inset .d { font-size: 11px; margin-top: 3px; }

/* ------------------------------------------------------------
   11. 표 — jt2-thead / jt2-row (그리드)  ·  900px 이하 jt2-mrow
       열 구성은 페이지에서 style="--cols: 70px 64px 1fr ..." 로 지정
   ------------------------------------------------------------ */
.jt2-table { min-width: 0; }
.jt2-thead, .jt2-row {
  display: grid;
  grid-template-columns: var(--cols, repeat(6, 1fr));
  column-gap: 8px; align-items: center;
  padding: 9px 20px; box-sizing: border-box;
}
.jt2-thead {
  font-size: 11.5px; font-weight: 700; color: var(--jt2-mute);
  border-bottom: 1px solid var(--jt2-hairline);
}
.jt2-row {
  padding: 11px 20px;
  border-bottom: 1px solid var(--jt2-hairline-2);
  font-size: 13px; color: var(--jt2-text);
  text-decoration: none; cursor: pointer;
}
.jt2-row:last-child { border-bottom: 0; }
.jt2-row:hover { background: var(--jt2-hover); }
.jt2-row--hl { background: var(--jt2-inset); }           /* 발매중 등 강조 행 */
.jt2-row--dim { color: var(--jt2-mute); }                /* 종료 행 */
.jt2-row--static { cursor: default; }
.jt2-row .b { font-weight: 800; }
.jt2-row .t2 { color: var(--jt2-text-2); }
/* 그룹 구분 행 (경마장 헤더) */
.jt2-group {
  display: flex; align-items: center; gap: 8px;
  padding: 9px 20px; background: var(--jt2-inset);
  border-bottom: 1px solid var(--jt2-hairline);
  font-size: 12px; font-weight: 700; color: var(--jt2-text-2);
}
.jt2-group .d { color: var(--jt2-mute); font-weight: 600; }
/* 모바일 카드 행 — 기본 숨김. ⚠ 900px 전환은 파일 끝 미디어쿼리에서만 */
.jt2-mrow {
  display: none;
  padding: 12px 16px; border-bottom: 1px solid var(--jt2-hairline-2);
  font-size: 12.5px; color: var(--jt2-text); text-decoration: none;
}
.jt2-mrow:last-child { border-bottom: 0; }
.jt2-mrow .top { display: flex; align-items: center; gap: 8px; }
.jt2-mrow .bot { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.jt2-mrow .b { font-weight: 800; }

/* ------------------------------------------------------------
   12. 칩 / 태그 / 픽 볼
   ------------------------------------------------------------ */
/* 틴트 칩 (색상 프리미티브) */
.jt2-chip {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; font-weight: 800;
  border-radius: var(--jt2-r-sm); padding: 4px 9px; white-space: nowrap;
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
}
.jt2-chip--blue  { background: var(--jt2-tint-blue);  color: var(--jt2-tint-blue-tx); }
.jt2-chip--red   { background: var(--jt2-tint-red);   color: var(--jt2-tint-red-tx); }
.jt2-chip--green { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }
.jt2-chip--amber { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }
.jt2-chip--navy  { background: var(--jt2-navy);       color: #FFFFFF; }
.jt2-chip--sm { font-size: 10.5px; padding: 3px 8px; border-radius: var(--jt2-r-xs); }

/* 상태 태그 (시맨틱) — 적중=초록틴트 / 미적중=빨강틴트 / 대기=회색 */
.jt2-tag {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; font-weight: 800;
  border-radius: var(--jt2-r-sm); padding: 4px 9px; white-space: nowrap;
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
}
/* 시안 실측(전수 일치): 적중 = 빨강틴트 #FDECEC/#D62B2B · 미적중 = 회색 #F1F4F9/#7A8AA0.
   초록은 '발매중/LIVE' 전용이다 — 적중에 초록을 쓰면 시안과 정반대가 된다. */
.jt2-tag--hit  { background: var(--jt2-tint-red);  color: var(--jt2-tint-red-tx); }
.jt2-tag--miss { background: var(--jt2-tint-grey); color: #7A8AA0; }
.jt2-tag--wait { background: var(--jt2-tint-grey);  color: var(--jt2-dim); }
.jt2-tag--sched{ background: var(--jt2-tint-grey);  color: var(--jt2-tint-grey-tx); }
.jt2-tag--tent { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }  /* 잠정/결과대기 */
.jt2-tag--live { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }  /* 발매중 */
.jt2-tag--live i, .jt2-live-dot {
  width: 5px; height: 5px; border-radius: 50%; background: var(--jt2-tint-green-tx);
  animation: jt-pulse 1.6s ease-out infinite; display: inline-block; flex-shrink: 0;
}
.jt2-tag--w { width: 86px; justify-content: center; padding-left: 0; padding-right: 0; box-sizing: border-box; } /* 고정폭 정렬용 */

/* 픽 볼 (출주번호 원형) — 1픽 채움 / 2·3픽 틴트 */
.jt2-picks { display: inline-flex; gap: 4px; align-items: center; }
.jt2-ball {
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  font-size: 10.5px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
  font-style: normal;   /* 마크업이 <i> — 기울임 차단 (시안: 정체 숫자) */
}
.jt2-ball--1 { background: var(--jt2-pri); color: #FFFFFF; }
.jt2-ball--sm { width: 20px; height: 20px; font-size: 10px; }
.jt2-ball--lg {
  width: 54px; height: 54px; border-radius: var(--jt2-r-lg);
  font-size: 26px; background: #FFFFFF; color: var(--jt2-hero);
}

/* 적중 승식 나열 (원장) */
.jt2-hitmarks { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.jt2-hitmarks i {
  font-style: normal; background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  font-size: 10.5px; font-weight: 800; border-radius: var(--jt2-r-xs); padding: 3px 8px; white-space: nowrap;
}
.jt2-hitn {
  display: inline-flex; align-items: center;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  font-size: 10.5px; font-weight: 800; border-radius: var(--jt2-r-xs); padding: 3px 8px; white-space: nowrap;
}

/* 최근 폼 시퀀스 (적중=초록 채움 / 미적중=회색) */
.jt2-formseq { display: inline-flex; gap: 4px; vertical-align: middle; }
.jt2-formseq i {
  width: 20px; height: 20px; border-radius: var(--jt2-r-xs);
  background: var(--jt2-tint-grey); color: var(--jt2-dim);
  font-size: 10px; font-weight: 800; font-style: normal;
  display: inline-flex; align-items: center; justify-content: center;
}
.jt2-formseq i::after { content: "–"; }
.jt2-formseq i.on { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }
.jt2-formseq i.on::after { content: "적"; }

/* 날씨 칩 */
.jt2-wx {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; font-weight: 700; color: var(--jt2-text-2);
  background: var(--jt2-tint-grey); border-radius: var(--jt2-r-sm); padding: 4px 9px; white-space: nowrap;
}
.jt2-wx--wet { background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx); }
.jt2-wx .lv {
  font-size: 9px; font-weight: 800; letter-spacing: .05em;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  border-radius: 4px; padding: 1px 5px;
}

/* ------------------------------------------------------------
   13. 버튼
   ------------------------------------------------------------ */
.jt2-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 36px; padding: 0 16px; border-radius: var(--jt2-r);
  font-family: var(--jt2-font); font-size: 12.5px; font-weight: 800;
  background: var(--jt2-pri); color: #FFFFFF; border: 1px solid var(--jt2-pri);
  cursor: pointer; text-decoration: none; white-space: nowrap; box-sizing: border-box;
  box-shadow: 0 3px 8px rgba(37,99,235,.25);
}
.jt2-btn:hover { background: var(--jt2-pri-hv); border-color: var(--jt2-pri-hv); color: #FFFFFF; }
.jt2-btn--line {
  background: transparent; border-color: var(--jt2-tint-blue-bd);
  color: var(--jt2-link); box-shadow: none;
}
.jt2-btn--line:hover { background: var(--jt2-soft-blue); color: var(--jt2-link); }
.jt2-btn--ghost {
  background: var(--jt2-card); border-color: var(--jt2-line);
  color: var(--jt2-text-2); box-shadow: none;
}
.jt2-btn--ghost:hover { background: var(--jt2-hover); color: var(--jt2-text-2); }
.jt2-btn--danger { background: var(--jt2-tint-red-tx); border-color: var(--jt2-tint-red-tx); box-shadow: none; }
.jt2-btn--sm { height: 30px; padding: 0 12px; font-size: 12px; border-radius: 9px; }
.jt2-btn--lg { height: 44px; padding: 0 22px; font-size: 14px; border-radius: 12px; }
.jt2-btn--block { display: flex; width: 100%; }
.jt2-btn[disabled], .jt2-btn--off { opacity: .45; pointer-events: none; }

/* ------------------------------------------------------------
   14. 게이지 (신뢰도 바 · 진행 바)
   ------------------------------------------------------------ */
.jt2-bar {
  width: 56px; height: 6px; border-radius: 4px;
  background: var(--jt2-track); overflow: hidden;
  display: inline-block; vertical-align: middle; flex-shrink: 0;
}
.jt2-bar i, .jt2-bar b {
  display: block; height: 100%; background: var(--jt2-pri); border-radius: 4px;
}
.jt2-bar--w { width: 100%; }
/* jt.app.js initConfBars 가 부여하는 톤 클래스 호환 */
.jt-bar--hi i, .jt2-bar--hi i { background: var(--jt2-pri); }
.jt-bar--mid i, .jt2-bar--mid i { background: var(--jt2-bar-soft); }
.jt-bar--lo i, .jt2-bar--lo i { background: var(--jt2-faint); }
.jt2-progress { height: 5px; border-radius: 3px; background: var(--jt2-track); overflow: hidden; }
.jt2-progress i { display: block; height: 100%; background: var(--jt2-pri); border-radius: 3px; }
/* 수평 비교 바 (경마장별 적중률 등) */
.jt2-hbar { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--jt2-text-2); }
.jt2-hbar .l { font-weight: 800; color: var(--jt2-text); width: 64px; flex-shrink: 0; }
.jt2-hbar .g { flex: 1; height: 6px; border-radius: 4px; background: var(--jt2-track); overflow: hidden; }
.jt2-hbar .g i { display: block; height: 100%; background: var(--jt2-pri); border-radius: 4px; }
.jt2-hbar .v { font-weight: 800; color: var(--jt2-link); }
.jt2-hbar .n { font-size: 11px; color: var(--jt2-mute); }

/* ------------------------------------------------------------
   15. 폼 요소
   ------------------------------------------------------------ */
.jt2-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.jt2-field .lbl { font-size: 12px; font-weight: 700; color: var(--jt2-text-2); }
.jt2-field .hint { font-size: 11.5px; color: var(--jt2-mute); }
input.jt2-in, textarea.jt2-in, .jt2-in {
  box-sizing: border-box; width: 100%; height: 38px; padding: 0 12px;
  border: 1px solid var(--jt2-line-soft); border-radius: var(--jt2-r);
  background: var(--jt2-card); color: var(--jt2-text);
  font: 600 13px var(--jt2-font); outline: 0;
}
textarea.jt2-in { height: auto; min-height: 90px; padding: 10px 12px; line-height: 1.6; resize: vertical; }
input.jt2-in:focus, textarea.jt2-in:focus, select.jt2-sel:focus {
  border-color: var(--jt2-pri); box-shadow: 0 0 0 3px rgba(37,99,235,.13);
}
input.jt2-in::placeholder, textarea.jt2-in::placeholder { color: var(--jt2-mute); }
select.jt2-sel, .jt2-sel {
  box-sizing: border-box; height: 38px; padding: 0 30px 0 12px;
  border: 1px solid var(--jt2-line-soft); border-radius: var(--jt2-r);
  background-color: var(--jt2-card); color: var(--jt2-text);
  font: 700 12.5px var(--jt2-font); outline: 0; cursor: pointer;
  -webkit-appearance: none; appearance: none;
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238B98AC' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 11px center;
}
/* 토글 스위치 (설정) */
.jt2-switch {
  position: relative; width: 38px; height: 22px; border-radius: 12px;
  background: #D5DDE9; cursor: pointer; flex-shrink: 0; border: 0; padding: 0;
  transition: background .15s;
}
.jt2-switch i {
  position: absolute; top: 3px; left: 3px; width: 16px; height: 16px;
  border-radius: 50%; background: #FFFFFF; transition: left .15s;
}
.jt2-switch.on, .jt2-switch[aria-checked="true"] { background: var(--jt2-pri); }
.jt2-switch.on i, .jt2-switch[aria-checked="true"] i { left: 19px; }
body.jt-dark .jt2-switch { background: #2C3A54; }
body.jt-dark .jt2-switch.on, body.jt-dark .jt2-switch[aria-checked="true"] { background: var(--jt2-pri); }
/* 설정형 목록 행 */
.jt2-setrow {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 20px; border-bottom: 1px solid var(--jt2-hairline-2);
}
.jt2-setrow:last-child { border-bottom: 0; }
.jt2-setrow .t { font-size: 13.5px; font-weight: 700; color: var(--jt2-text); }
.jt2-setrow .d { font-size: 11.5px; color: var(--jt2-mute); margin-top: 2px; }
.jt2-check { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--jt2-text-2); cursor: pointer; }
.jt2-check input { width: 15px; height: 15px; accent-color: var(--jt2-pri); margin: 0; }

/* ------------------------------------------------------------
   16. 히어로 (메인픽 배너)
   ------------------------------------------------------------ */
.jt2-hero {
  position: relative; overflow: hidden; cursor: pointer;
  background: var(--jt2-hero); color: #FFFFFF;
  border-radius: var(--jt2-r-xl); padding: 24px 26px;
  display: block; text-decoration: none; min-width: 0;
}
.jt2-hero::before, .jt2-hero::after {
  content: ""; position: absolute; border-radius: 50%; background: rgba(255,255,255,.06);
}
.jt2-hero::before { right: -40px; top: -60px; width: 240px; height: 240px; }
.jt2-hero::after { right: 60px; bottom: -90px; width: 180px; height: 180px; background: rgba(255,255,255,.05); }
.jt2-hero > * { position: relative; z-index: 1; }
.jt2-hero .k {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; font-weight: 700; letter-spacing: .04em; opacity: .85;
}
.jt2-hero .rowline { display: flex; align-items: center; gap: 16px; margin-top: 16px; }
.jt2-hero .nm { font-size: 24px; font-weight: 800; letter-spacing: -0.02em; color: #FFFFFF; }
.jt2-hero .sub { font-size: 13px; opacity: .8; margin-top: 2px; font-weight: 600; }
.jt2-hero .cd-l { font-size: 11px; font-weight: 700; opacity: .75; }
.jt2-hero .cd { font-size: 24px; font-weight: 800; font-variant-numeric: tabular-nums; }
.jt2-hero .foot { display: flex; gap: 6px; margin-top: 18px; align-items: center; }
.jt2-hero .go { margin-left: auto; font-size: 12px; font-weight: 600; opacity: .8; white-space: nowrap; }

/* ------------------------------------------------------------
   17. 안내 · 빈 상태 · 경고
   ------------------------------------------------------------ */
.jt2-note {
  background: var(--jt2-inset); border: 1px dashed var(--jt2-dash);
  border-radius: 11px; padding: 12px 14px;
  font-size: 12px; color: var(--jt2-text-2); font-weight: 600; line-height: 1.75;
  word-break: keep-all; overflow-wrap: anywhere;
}
.jt2-warn {
  display: flex; gap: 10px;
  background: var(--jt2-tint-amber); border: 1px solid var(--jt2-tint-amber-bd);
  border-radius: 12px; padding: 12px 15px;
  font-size: 12.5px; color: var(--jt2-tint-amber-tx); line-height: 1.6;
}
.jt2-empty {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 48px 20px; text-align: center;
  color: var(--jt2-mute); font-size: 13px; line-height: 1.7;
}
.jt2-empty .ic { font-size: 30px; line-height: 1; }
.jt2-gate {   /* 잠긴 픽(멤버십) 안내 블록 — 서버가 내용 자체를 안 보냄 */
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  background: var(--jt2-inset); border: 1px dashed var(--jt2-dash);
  border-radius: var(--jt2-r-md); padding: 26px 18px; text-align: center;
  font-size: 12.5px; color: var(--jt2-text-2); line-height: 1.65;
}
.jt2-gate .t { font-size: 14px; font-weight: 800; color: var(--jt2-text); }

/* ------------------------------------------------------------
   18. 승식 스트립 · 경마장 평균 카드 (공용 헬퍼 출력)
   ------------------------------------------------------------ */
.jt2-betrates {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 0;
  padding: 6px 8px; min-width: 0;
}
.jt2-betrates > div { padding: 14px; border-right: 1px solid var(--jt2-hairline-2); min-width: 0; }
.jt2-betrates > div:last-child { border-right: 0; }
.jt2-betrates .l { font-size: 12px; font-weight: 800; color: var(--jt2-text-2); }
.jt2-betrates .v { font-size: 20px; font-weight: 800; margin-top: 5px; color: var(--jt2-text); }
.jt2-betrates .v small { font-size: 12px; color: var(--jt2-mute); font-weight: 700; }
.jt2-betrates .d { font-size: 11px; color: var(--jt2-mute); margin-top: 4px; line-height: 1.5; }
.jt2-betrates > div.on .v { color: var(--jt2-link); }

.jt2-mavg {
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg); padding: 16px 18px; min-width: 0;
}
.jt2-mavg .hd { display: flex; align-items: baseline; gap: 8px; font-size: 14px; }
.jt2-mavg .hd .sub { font-size: 11.5px; color: var(--jt2-mute); font-weight: 600; margin-left: auto; }
.jt2-mavg .bd {
  display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-top: 12px;
}
.jt2-mavg .bd > div { background: var(--jt2-inset); border: 1px solid var(--jt2-inset-bd); border-radius: 9px; padding: 8px 6px; text-align: center; min-width: 0; }
.jt2-mavg .bd > div.on { background: var(--jt2-tint-blue); border-color: var(--jt2-tint-blue-bd); }
.jt2-mavg .bd .l { font-size: 10px; font-weight: 700; color: var(--jt2-mute); }
.jt2-mavg .bd .v { font-size: 14px; font-weight: 800; margin-top: 2px; color: var(--jt2-text); }
.jt2-mavg .bd .v small { font-size: 9.5px; color: var(--jt2-mute); }
.jt2-mavg .bd .d { font-size: 9px; color: var(--jt2-mute); margin-top: 1px; }
.jt2-mavg .bd--wait { display: block; margin-top: 12px; font-size: 12px; color: var(--jt2-mute); }

/* ------------------------------------------------------------
   19. 벨 드롭다운 · 모달 (jt.app.js 가 ID/클래스로 제어 — 훅 유지)
   ------------------------------------------------------------ */
.jt2-bell { position: relative; }
.jt-bell-drop {
  display: none; position: absolute; right: 0; top: 44px; width: 320px; z-index: 80;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: 14px; box-shadow: var(--jt2-sh-drop); overflow: hidden;
}
.jt-bell-drop.on { display: block; }
.jt-bell-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px; border-bottom: 1px solid var(--jt2-hairline);
  font-size: 13px; font-weight: 800; color: var(--jt2-text);
}
.jt-bell-head button {
  border: 0; background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  font-family: var(--jt2-font); font-size: 11px; font-weight: 800;
  padding: 5px 10px; border-radius: 8px; cursor: pointer;
}
.jt-bell-list { list-style: none; margin: 0; padding: 0; max-height: 300px; overflow: auto; }
.jt-bell-list li { border-bottom: 1px solid var(--jt2-hairline-2); }
.jt-bell-list li:last-child { border-bottom: 0; }
.jt-bell-list li a {
  display: block; padding: 10px 14px;
  font-size: 12.5px; line-height: 1.55; color: var(--jt2-text-2); text-decoration: none;
}
.jt-bell-list li a:hover { background: var(--jt2-hover); }
.jt-bell-list .tm { color: var(--jt2-mute); font-size: 11px; margin-left: 6px; }
.jt-bell-empty { padding: 22px 14px; text-align: center; color: var(--jt2-mute); font-size: 12.5px; }

.jt-ov {
  display: none; position: fixed; inset: 0; z-index: 90;
  background: rgba(14,27,44,.5); padding: 24px; box-sizing: border-box;
  align-items: flex-start; justify-content: center; overflow-y: auto;
}
.jt-ov.on { display: flex; }
.jt-modal {
  position: relative; width: 100%; max-width: 560px; margin: 4vh auto;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg); box-shadow: var(--jt2-sh-drop);
  padding: 22px; box-sizing: border-box; color: var(--jt2-text);
  max-height: 86vh; overflow-y: auto;
}
.jt-modal-x {
  position: absolute; top: 12px; right: 12px; width: 32px; height: 32px;
  border: 0; border-radius: 9px; background: var(--jt2-tint-grey);
  color: var(--jt2-text-2); font-size: 14px; cursor: pointer;
}
.jt-modal-x:hover { background: var(--jt2-track); }
.jt-modal-load { padding: 40px 0; text-align: center; color: var(--jt2-mute); font-size: 13px; }

/* ------------------------------------------------------------
   20. 푸터 · 모바일 탭바
   ------------------------------------------------------------ */
.jt2-footer {
  background: var(--jt2-card); border-top: 1px solid var(--jt2-line);
  margin-top: 30px;
}
.jt2-footer-in {
  max-width: var(--jt2-max); margin: 0 auto;
  padding: 32px var(--jt2-gut) 26px; box-sizing: border-box;
}
/* 상단 — 좌 브랜드/고지 · 우 링크 3열 */
.jt2-footer-top {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1.75fr);
  gap: 32px; align-items: start;
}
.jt2-footer-top .brand { min-width: 0; }
.jt2-footer-top .brand .ds {
  margin: 13px 0 0; font-size: 12.5px; line-height: 1.7;
  color: var(--jt2-text-2); font-weight: 600; word-break: keep-all;
}
.jt2-footer-legal {
  margin: 14px 0 0; padding: 12px 14px; box-sizing: border-box;
  background: var(--jt2-inset); border-radius: var(--jt2-r);
  font-size: 11.5px; color: var(--jt2-mute); font-weight: 500;
  line-height: 1.75; word-break: keep-all;
}
.jt2-footer-legal .hl { color: var(--jt2-text-2); font-weight: 800; white-space: nowrap; }
.jt2-footer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; min-width: 0; }
.jt2-footer-cols .col { min-width: 0; display: flex; flex-direction: column; }
.jt2-footer-cols .col b {
  font-size: 12.5px; font-weight: 800; color: var(--jt2-text); margin-bottom: 11px;
}
.jt2-footer-cols .col a {
  font-size: 12.5px; font-weight: 600; color: var(--jt2-text-2);
  text-decoration: none; padding: 5px 0; word-break: keep-all;
}
.jt2-footer-cols .col a:hover { color: var(--jt2-link); text-decoration: none; }
/* 하단 — 사업자정보 · 카피라이트 */
.jt2-footer-bot {
  margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--jt2-hairline);
}
.jt2-footer-bot .row {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-top: 8px;
}
.jt2-footer-bot .src { margin: 0 0 0 auto; font-size: 11.5px; color: var(--jt2-faint); font-weight: 600; }

.jt2-tabbar {
  display: none;   /* 900px 이하에서만 표시 — 파일 끝 미디어쿼리 */
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
  background: var(--jt2-card); border-top: 1px solid var(--jt2-line);
  padding: 8px 2px calc(8px + env(safe-area-inset-bottom, 0px));
}
.jt2-tabbar a {
  flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 3px;
  font-size: 11.5px; font-weight: 700; color: var(--jt2-dim); text-decoration: none;
}
.jt2-tabbar a svg { width: 22px; height: 22px; }
.jt2-tabbar a[aria-current="page"] { color: var(--jt2-link); font-weight: 800; }

/* ------------------------------------------------------------
   21. 랭킹 · 커뮤니티 목록 조각
   ------------------------------------------------------------ */
.jt2-post {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 16px; border-bottom: 1px solid var(--jt2-hairline-2);
  font-size: 12.5px; color: var(--jt2-text); text-decoration: none; min-width: 0;
}
.jt2-post:last-child { border-bottom: 0; }
.jt2-post:hover { background: var(--jt2-hover); }
.jt2-post .tt { min-width: 0; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jt2-post .cnt { color: var(--jt2-link); font-weight: 800; }
.jt2-post .meta { margin-left: auto; color: var(--jt2-mute); font-size: 11.5px; flex-shrink: 0; }
.jt2-rankno { font-weight: 800; color: var(--jt2-link); width: 20px; text-align: center; flex-shrink: 0; }
.jt2-pager { display: flex; justify-content: center; gap: 5px; padding: 16px 0 4px; flex-wrap: wrap; }
.jt2-pager a, .jt2-pager strong {
  min-width: 30px; height: 30px; padding: 0 9px; box-sizing: border-box;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--jt2-line-soft); border-radius: 9px;
  font-size: 12px; font-weight: 700; color: var(--jt2-text-2); text-decoration: none;
}
.jt2-pager a:hover { background: var(--jt2-hover); }
.jt2-pager strong { background: var(--jt2-pri); border-color: var(--jt2-pri); color: #FFFFFF; }

/* ------------------------------------------------------------
   22. 구(舊) jt- 클래스 최소 생존 브리지
       — 아직 jt2 로 리빌드되지 않은 페이지가 파일 단위 배포 중에도
         "깨져 보이지" 않게 하는 임시 좌석. 리빌드 완료 후 제거 예정.
   ------------------------------------------------------------ */
.jt-wrap { max-width: var(--jt2-max); margin: 0 auto; padding: 22px var(--jt2-gut) 26px; box-sizing: border-box; }
.jt-num { font-variant-numeric: tabular-nums; }
.jt-mute { color: var(--jt2-mute); }
.jt-ellipsis { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.jt-inline { display: inline-flex; align-items: center; gap: 6px; }
.jt-cell-r { text-align: right; }
.jt-scroll { overflow-x: auto; }
.jt-card { background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg); overflow: hidden; min-width: 0; }
.jt-card-head { display: flex; align-items: center; gap: 10px; padding: 16px 20px; border-bottom: 1px solid var(--jt2-hairline); flex-wrap: wrap; font-weight: 800; }
.jt-card-body { padding: 16px 20px; }
.jt-card-foot { padding: 12px 20px; border-top: 1px solid var(--jt2-hairline); font-size: 12px; color: var(--jt2-mute); }
.jt-section { margin-bottom: 16px; }
.jt-kicker { font-size: 10.5px; font-weight: 800; letter-spacing: .08em; color: var(--jt2-mute); }
.jt-note { font-size: 12px; color: var(--jt2-text-2); line-height: 1.6; }
.jt-more { margin-left: auto; font-size: 12.5px; font-weight: 700; color: var(--jt2-link); text-decoration: none; }
.jt-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 36px; padding: 0 16px; border-radius: var(--jt2-r); font-size: 12.5px; font-weight: 800; background: var(--jt2-pri); color: #FFF; border: 1px solid var(--jt2-pri); cursor: pointer; text-decoration: none; }
.jt-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 800; border-radius: var(--jt2-r-sm); padding: 4px 9px; background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx); white-space: nowrap; }
.jt-tag { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 800; border-radius: var(--jt2-r-sm); padding: 4px 9px; background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx); white-space: nowrap; }
.jt-tag--ok { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }
.jt-tag--dim { background: var(--jt2-tint-red); color: var(--jt2-tint-red-tx); }
.jt-tag--grey { background: var(--jt2-tint-grey); color: var(--jt2-dim); }
.jt-tag--amber { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }
.jt-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.jt-kpi { background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg); padding: 16px 18px; min-width: 0; }
.jt-thead, .jt-row { display: grid; grid-template-columns: var(--cols, repeat(6, 1fr)); column-gap: 8px; align-items: center; padding: 9px 20px; }
.jt-thead { font-size: 11.5px; font-weight: 700; color: var(--jt2-mute); border-bottom: 1px solid var(--jt2-hairline); }
.jt-row { padding: 11px 20px; border-bottom: 1px solid var(--jt2-hairline-2); font-size: 13px; color: var(--jt2-text); text-decoration: none; }
.jt-row:hover { background: var(--jt2-hover); }
.jt-mrow { display: none; padding: 12px 16px; border-bottom: 1px solid var(--jt2-hairline-2); font-size: 12.5px; color: var(--jt2-text); text-decoration: none; }
.jt-mrow .top { display: flex; align-items: center; gap: 8px; }
.jt-mrow .bot { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.jt-bar { width: 56px; height: 6px; border-radius: 4px; background: var(--jt2-track); overflow: hidden; display: inline-block; vertical-align: middle; }
.jt-bar i { display: block; height: 100%; background: var(--jt2-pri); border-radius: 4px; }
.jt-seg { display: inline-flex; background: var(--jt2-track); border-radius: 11px; padding: 3px; }
.jt-seg > * { border: 0; background: transparent; border-radius: 9px; padding: 7px 16px; font-size: 12.5px; font-weight: 700; color: var(--jt2-dim); cursor: pointer; text-decoration: none; }
.jt-seg > .on, .jt-seg > [aria-pressed="true"] { background: var(--jt2-card); color: var(--jt2-text); font-weight: 800; box-shadow: var(--jt2-sh-card); }
.jt-filters { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.jt-pager { display: flex; justify-content: center; gap: 5px; padding: 16px 0 4px; }
.jt-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 48px 20px; text-align: center; color: var(--jt2-mute); font-size: 13px; }
.jt-pagehead { display: flex; align-items: flex-end; gap: 14px; margin-bottom: 20px; flex-wrap: wrap; }
.jt-pagehead h1 { margin: 0; font-size: 23px; font-weight: 800; letter-spacing: -0.02em; }
.jt-pagehead .sub { font-size: 13px; color: var(--jt2-mute); font-weight: 500; }
.jt-pagehead .right { margin-left: auto; }
.jt-days { display: flex; gap: 6px; flex-wrap: wrap; }
.jt-day { display: flex; flex-direction: column; align-items: center; gap: 1px; border: 1px solid var(--jt2-line-soft); background: var(--jt2-card); border-radius: 11px; padding: 7px 14px; color: var(--jt2-text-2); text-decoration: none; }
.jt-day[aria-current="page"] { background: var(--jt2-pri); border-color: var(--jt2-pri); color: #FFF; }
.jt-day .w { font-size: 10.5px; font-weight: 700; }
.jt-day .d { font-size: 13.5px; font-weight: 700; }
.jt-time { color: var(--jt2-text-2); }
.jt-time--done { color: var(--jt2-mute); }
.jt-time--soon { color: var(--jt2-amber); font-weight: 800; }
.jt-meet--seoul { color: var(--jt2-seoul); font-weight: 800; }
.jt-meet--busan { color: var(--jt2-busan); font-weight: 800; }
.jt-meet--jeju { color: var(--jt2-jeju); font-weight: 800; }
.jt-meet--grey { color: var(--jt2-mute); font-weight: 800; }
.jt-wx { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 700; color: var(--jt2-text-2); background: var(--jt2-tint-grey); border-radius: var(--jt2-r-sm); padding: 4px 9px; white-space: nowrap; }
.jt-wx--wet { background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx); }
.jt-wx .lv { font-size: 9px; font-weight: 800; background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); border-radius: 4px; padding: 1px 5px; }
.jt-betrates { display: grid; grid-template-columns: repeat(7, 1fr); padding: 6px 8px; }
.jt-betrates > div { padding: 14px; border-right: 1px solid var(--jt2-hairline-2); min-width: 0; }
.jt-betrates > div:last-child { border-right: 0; }
.jt-betrates .l { font-size: 12px; font-weight: 800; color: var(--jt2-text-2); }
.jt-betrates .v { font-size: 20px; font-weight: 800; margin-top: 5px; }
.jt-betrates .v small { font-size: 12px; color: var(--jt2-mute); }
.jt-betrates .d { font-size: 11px; color: var(--jt2-mute); margin-top: 4px; }
.jt-betrates > div.on .v { color: var(--jt2-link); }
.jt-formseq { display: inline-flex; gap: 4px; }
.jt-formseq i { width: 20px; height: 20px; border-radius: var(--jt2-r-xs); background: var(--jt2-tint-grey); display: inline-block; }
.jt-formseq i.on { background: var(--jt2-tint-green); }
.jt-hitmarks i { font-style: normal; background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); font-size: 10.5px; font-weight: 800; border-radius: var(--jt2-r-xs); padding: 3px 8px; margin-right: 3px; }
.jt-hitn { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); font-size: 10.5px; font-weight: 800; border-radius: var(--jt2-r-xs); padding: 3px 8px; }
.jt-mavg { background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg); padding: 16px 18px; }
.jt-mavg .hd { display: flex; align-items: baseline; gap: 8px; }
.jt-mavg .bd { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-top: 12px; }
.jt-mavg .bd > div { background: var(--jt2-inset); border: 1px solid var(--jt2-inset-bd); border-radius: 9px; padding: 8px 6px; text-align: center; }
.jt-mavg .bd .l { font-size: 10px; color: var(--jt2-mute); }
.jt-mavg .bd .v { font-size: 14px; font-weight: 800; }
.jt-mavg .bd .d { font-size: 9px; color: var(--jt2-mute); }
.jt-modal-frag { font-size: 13px; line-height: 1.65; }

/* ------------------------------------------------------------
   24. 리포트 (적중률 리포트 아트보드)
       — 리드 문단 · 스코어링 절차 · 월별 막대 그래프
   ------------------------------------------------------------ */
/* 카드를 세로 flex 로 (하단 요소를 margin-top:auto 로 밀어내는 사이드 카드) */
.jt2-card--col { display: flex; flex-direction: column; }

/* 리드 문단 (공개된 N건의 예상을 전부 채점했습니다) */
.jt2-lede {
  font-size: 20px; font-weight: 800; letter-spacing: -0.02em;
  color: var(--jt2-text); margin-top: 12px; line-height: 1.4;
}
.jt2-lede .hi { color: var(--jt2-link); }
.jt2-lede-d { font-size: 13px; color: var(--jt2-text-2); margin-top: 7px; line-height: 1.6; }

/* 번호가 붙은 절차 목록 (HOW WE SCORE) */
.jt2-steps { display: flex; flex-direction: column; gap: 16px; }
.jt2-step { display: flex; gap: 13px; }
.jt2-step .n { font-size: 13px; font-weight: 800; color: var(--jt2-link); flex-shrink: 0; }
.jt2-step .t { font-size: 13.5px; font-weight: 800; color: var(--jt2-text); }
.jt2-step .d { font-size: 12px; color: var(--jt2-mute); margin-top: 3px; line-height: 1.55; }

/* 수평 비교 바 묶음 (.jt2-hbar 를 세로로 쌓는 그룹) */
.jt2-hbars { display: flex; flex-direction: column; gap: 9px; }
.jt2-hbars--sep { border-top: 1px solid var(--jt2-hairline); padding-top: 16px; }

/* 막대 그래프 (월별 연승 적중률) */
.jt2-chartcap { display: flex; align-items: baseline; gap: 8px; margin-top: 20px; flex-wrap: wrap; }
.jt2-chartcap .t { font-size: 13px; font-weight: 800; color: var(--jt2-text); }
.jt2-chartcap .d { font-size: 11.5px; font-weight: 600; color: var(--jt2-mute); }
.jt2-chartcap .n { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--jt2-mute); }
.jt2-chart {
  display: flex; align-items: flex-end; gap: 14px;
  margin-top: 12px; height: 88px; padding: 0 4px;
  border-bottom: 1px solid var(--jt2-hairline);
}
.jt2-chart-col {
  flex: 1; min-width: 0; height: 100%;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 5px;
}
.jt2-chart-col .v { font-size: 10.5px; font-weight: 700; color: var(--jt2-mute); }
.jt2-chart-col i {
  display: block; width: 100%; max-width: 34px;
  background: var(--jt2-bar-soft); border-radius: 6px 6px 0 0;
}
.jt2-chart-col.on .v { font-weight: 800; color: var(--jt2-link); }
.jt2-chart-col.on i { background: var(--jt2-pri); }
.jt2-chart-col.off i { background: var(--jt2-track); }
.jt2-chart-x {
  display: flex; gap: 14px; margin-top: 7px; padding: 0 4px;
  font-size: 10.5px; font-weight: 600; color: var(--jt2-mute);
}
.jt2-chart-x span { flex: 1; min-width: 0; text-align: center; }
.jt2-chart-x span.on { color: var(--jt2-link); font-weight: 800; }

/* ------------------------------------------------------------
   25. 속보 피드 (racing/news.php) — 시안 「속보」 아트보드 실측
       날짜 그룹 헤더는 §11 .jt2-group 을 그대로 재사용한다
       (padding 9/20 · #F8FAFE · 12px/700 · .d 보조 — 시안과 동일)
   ------------------------------------------------------------ */
/* 제목줄 : h1 + 안읽음 배지 */
.jt2-newshead { display: flex; align-items: center; gap: 9px; }
.jt2-newsunread {
  background: var(--jt2-bad); color: #FFFFFF;
  font-size: 11px; font-weight: 800; border-radius: 8px; padding: 3px 9px; white-space: nowrap;
}
.jt2-newsunread[hidden] { display: none; }
/* 시안의 헤드 버튼 간격은 pagehead 자체 gap 과 같은 14px */
.jt2-pagehead .right.jt2-newsacts { gap: 14px; }

/* 타입 필터 칩 — 활성은 네이비 채움 */
.jt2-newschips { display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap; }
.jt2-newschip {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); color: var(--jt2-text-2);
  font-size: 12px; font-weight: 700; border-radius: 9px; padding: 6px 13px;
  text-decoration: none; cursor: pointer; white-space: nowrap; box-sizing: border-box;
}
.jt2-newschip:hover { background: var(--jt2-hover); text-decoration: none; color: var(--jt2-text-2); }
.jt2-newschip[aria-current="page"] {
  background: var(--jt2-navy); border-color: var(--jt2-navy); color: #FFFFFF; font-weight: 800;
}
.jt2-newschip[aria-current="page"]:hover { background: var(--jt2-navy); color: #FFFFFF; }
.jt2-newschip[aria-current="page"] .n { opacity: .7; }

/* 피드 카드 — 두 번째 날짜 그룹부터는 위에도 실선 */
.jt2-newsfeed .jt2-group + .jt2-group,
.jt2-newsfeed .jt2-newsrow + .jt2-group { border-top: 1px solid var(--jt2-hairline); }

.jt2-newsrow {
  display: flex; gap: 14px; align-items: flex-start;
  padding: 15px 20px; border-bottom: 1px solid var(--jt2-hairline-2);
  color: var(--jt2-text); text-decoration: none;
}
.jt2-newsrow:last-child { border-bottom: 0; }
.jt2-newsrow--new { background: #FBFDFF; }          /* 시안 실측 — 대응 토큰 없음 */
.jt-dark .jt2-newsrow--new { background: #19222F; }
a.jt2-newsrow:hover { background: var(--jt2-hover); text-decoration: none; color: var(--jt2-text); }
.jt2-newsrow .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--jt2-pri); flex-shrink: 0; margin-top: 8px;
}
.jt2-newsrow .tx { min-width: 0; }
.jt2-newsrow .t { font-size: 14px; font-weight: 700; }
.jt2-newsrow .d { font-size: 12px; color: var(--jt2-mute); margin-top: 3px; line-height: 1.5; }
.jt2-newsrow .tm {
  margin-left: auto; font-size: 12px; color: var(--jt2-mute); font-weight: 600; flex-shrink: 0;
}
.jt2-newsrow .rd {
  display: none; flex-shrink: 0;
  font-size: 11px; color: var(--jt2-faint); font-weight: 700;
  border: 1px solid var(--jt2-inset-bd); border-radius: var(--jt2-r-xs);
  padding: 2px 7px; margin-top: 1px; white-space: nowrap;
}
/* 읽은 알림 — 점 제거 · 제목 회색 · '읽음' 배지 노출 (시안 그대로) */
.jt2-newsrow.is-read { background: transparent; }
.jt2-newsrow.is-read .dot { display: none; }
.jt2-newsrow.is-read .t { color: var(--jt2-text-2); }
.jt2-newsrow.is-read .rd { display: inline-flex; }

/* 타입 배지 */
.jt2-newstag {
  flex-shrink: 0; display: inline-flex; align-items: center;
  font-size: 11px; font-weight: 800; border-radius: var(--jt2-r-sm);
  padding: 4px 9px; margin-top: 1px; white-space: nowrap;
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
}
.jt2-newstag--red   { background: var(--jt2-tint-red);   color: var(--jt2-tint-red-tx); }
.jt2-newstag--blue  { background: var(--jt2-tint-blue);  color: var(--jt2-tint-blue-tx); }
.jt2-newstag--amber { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }
.jt2-newstag--grey  { background: var(--jt2-tint-grey);  color: var(--jt2-tint-grey-tx); }

/* LIVE 배지 — 시안 모바일 「속보」 프레임 실측(빨강 필 · 흰 4px 점 · 9px/800 · 자간 .05em).
   데스크톱 아트보드에는 없으므로 기본 숨김, 900px 이하에서만 표시한다. */
.jt2-newslive {
  display: none; align-items: center; gap: 5px;
  background: var(--jt2-bad); color: #FFFFFF;
  font-size: 9px; font-weight: 800; letter-spacing: .05em;
  border-radius: 5px; padding: 2px 7px; white-space: nowrap;
}
.jt2-newslive i { width: 4px; height: 4px; border-radius: 50%; background: #FFFFFF; flex-shrink: 0; }

/* 모바일 전용 텍스트 액션 (알림 켜기) — 시안 11px/700/#1D4ED8, 제목줄 오른쪽 끝.
   데스크톱은 .jt2-newsacts 의 버튼이 담당하므로 기본 숨김. */
.jt2-newsmacts { display: none; margin-left: auto; align-items: center; gap: 12px; }
.jt2-newsmact {
  background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit;
  font-size: 11px; font-weight: 700; color: var(--jt2-link);
  text-decoration: none; white-space: nowrap;
}
.jt2-newsmact:hover { color: var(--jt2-link); text-decoration: underline; }

/* 모바일 카드행 — 시안 모바일 프레임 실측(#FFF · 1px #E4EAF3 · r13 · 12/14 · 카드 간 gap 8).
   ⚠ 기본 숨김 · 900px 전환은 파일 끝 미디어쿼리에서만 (절대규칙 7) */
.jt2-newsmrow {
  display: none;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-md); padding: 12px 14px;
  color: var(--jt2-text); text-decoration: none;
}
a.jt2-newsmrow:hover { text-decoration: none; color: var(--jt2-text); background: var(--jt2-hover); }
.jt2-newsmrow .top { display: flex; align-items: center; gap: 7px; }
.jt2-newsmrow .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--jt2-pri); flex-shrink: 0;
}
.jt2-newsmrow .jt2-newstag { font-size: 9.5px; padding: 2px 7px; border-radius: 5px; margin-top: 0; }
.jt2-newsmrow .tm {
  margin-left: auto; font-size: 10px; color: var(--jt2-mute); font-weight: 600; flex-shrink: 0;
}
.jt2-newsmrow .rd {
  display: none; flex-shrink: 0;
  font-size: 9.5px; color: var(--jt2-faint); font-weight: 700;
  border: 1px solid var(--jt2-inset-bd); border-radius: 5px;
  padding: 1px 5px; white-space: nowrap;
}
.jt2-newsmrow .t { font-size: 12.5px; font-weight: 700; margin-top: 7px; line-height: 1.45; }
.jt2-newsmrow .d { font-size: 10.5px; color: var(--jt2-mute); margin-top: 3px; line-height: 1.5; }
/* 읽은 알림 — 점 제거 · 제목 회색 · '읽음' 배지 노출 (데스크톱 행과 동일 규칙) */
.jt2-newsmrow.is-read .dot { display: none; }
.jt2-newsmrow.is-read .t { color: var(--jt2-text-2); }
.jt2-newsmrow.is-read .rd { display: inline-flex; }

/* ------------------------------------------------------------
   26. 경주 상세 (racing/race.php) — 시안 「서울 제8경주」 실측
       뒤로가기 · 메타 필 · 발매중 카운트다운 · 1·2·3픽 카드 ·
       출마표(착순 배지 / 게이트 볼 / 마추 스코어 게이지)
   ------------------------------------------------------------ */
/* 목록으로 돌아가기 (시안 12.5px/700 · #8B98AC · margin-bottom 12) */
.jt2-back {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12.5px; font-weight: 700; color: var(--jt2-mute);
  text-decoration: none; margin-bottom: 12px;
}
.jt2-back:hover { color: var(--jt2-link); }

/* 제목이 2줄(타이틀 + 메타 필)인 헤드는 시안대로 위쪽 정렬 */
.jt2-pagehead--top { align-items: flex-start; }

/* 제목 아래 메타 필 줄 (거리 · 등급 · 두수 · 발주 · 날씨 · 주로) */
.jt2-metas {
  display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap;
  font-size: 12px; font-weight: 700; color: var(--jt2-text-2);
}
.jt2-meta {
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: 8px; padding: 4px 10px; white-space: nowrap;
}
.jt2-meta--amber { background: var(--jt2-tint-amber); border-color: var(--jt2-tint-amber-bd); color: var(--jt2-tint-amber-tx); }
.jt2-meta--blue  { background: var(--jt2-soft-blue);  border-color: var(--jt2-tint-blue-bd);  color: var(--jt2-tint-blue-tx); }

/* 발매중 · 발주 카운트다운 칩 (시안 12px/800 · r9 · 7/13 · 6px 펄스점) */
.jt2-livecd {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  font-size: 12px; font-weight: 800; border-radius: 9px; padding: 7px 13px; white-space: nowrap;
}
.jt2-livecd i {
  width: 6px; height: 6px; border-radius: 50%; background: var(--jt2-tint-green-tx);
  animation: jt-pulse 1.6s ease-out infinite; display: inline-block; flex: none;
}
.jt2-livecd--grey  { background: var(--jt2-tint-grey);  color: var(--jt2-tint-grey-tx); }
.jt2-livecd--grey i { background: var(--jt2-tint-grey-tx); animation: none; }

/* 1·2·3픽 카드 (시안 3열 · gap 12 · padding 18 · r16 · 1픽은 2px 파란 테두리)
   ※ 블록 사이 16px 은 감싸는 .jt2-col(gap:16) 이 만든다 — 시안 margin-bottom:16 과 동일 */
.jt2-pickcards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.jt2-pickcard {
  position: relative; min-width: 0;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg); padding: 18px;
}
.jt2-pickcard--1 { border: 2px solid var(--jt2-pri); }
.jt2-pickcard .bdg {
  position: absolute; top: -9px; left: 16px;
  background: var(--jt2-text-2); color: #FFFFFF;
  font-size: 10.5px; font-weight: 800; letter-spacing: .05em;
  border-radius: var(--jt2-r-xs); padding: 3px 8px;
}
.jt2-pickcard--1 .bdg { background: var(--jt2-pri); }
.jt2-pickcard .hd { display: flex; align-items: center; gap: 12px; min-width: 0; }
.jt2-pickcard .no {
  width: 44px; height: 44px; border-radius: var(--jt2-r-md); flex: none;
  background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; font-weight: 800;
}
.jt2-pickcard--1 .no { background: var(--jt2-pri); color: #FFFFFF; }
.jt2-pickcard .who { min-width: 0; }
.jt2-pickcard .nm { font-size: 16.5px; font-weight: 800; color: var(--jt2-text); }
.jt2-pickcard .sub { font-size: 12px; font-weight: 600; color: var(--jt2-mute); margin-top: 1px; }
.jt2-pickcard .od { margin-left: auto; text-align: right; flex: none; }
.jt2-pickcard .od .l { font-size: 11px; font-weight: 700; color: var(--jt2-mute); }
.jt2-pickcard .od .v { font-size: 17px; font-weight: 800; color: var(--jt2-text); }
.jt2-pickcard .cf { display: flex; align-items: center; gap: 8px; margin-top: 14px; }
.jt2-pickcard .cf .jt2-bar { flex: 1; width: auto; height: 7px; }
.jt2-pickcard .cf .n { flex: none; font-size: 12.5px; font-weight: 800; color: var(--jt2-text-2); white-space: nowrap; }
.jt2-pickcard--1 .cf .n { color: var(--jt2-link); }

/* 출마표 — 열이 11개라 좁은 뷰포트에서는 가로 스크롤 (900px↓ 는 .jt2-mrow 로 교체) */
.jt2-entry { min-width: 1040px; }

/* 착순 배지 (시안 w40 · 11px/800 · r7 · padding 4/0) */
.jt2-ord {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; padding: 4px 0; font-size: 11px; font-weight: 800;
  border-radius: var(--jt2-r-sm);
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
}
.jt2-ord--1 { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }
.jt2-ord--2 { background: var(--jt2-hairline);   color: var(--jt2-text-2); }
/* 3착 브론즈 — jt2 팔레트에 대응색이 없는 시안 실측치(#F6E8DC / #8A5A2B) */
.jt2-ord--3 { background: #F6E8DC; color: #8A5A2B; }
body.jt-dark .jt2-ord--3 { background: #3B2E20; color: #D9A96A; }
.jt2-ordnone { display: block; text-align: center; color: var(--jt2-faint); }

/* 게이트 볼 — 픽이 아닌 말(또는 픽 잠금 상태)의 중립 톤 */
.jt2-ball--n { background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx); }

/* 마명 셀 (마명 + 성·연령 보조) */
.jt2-hname { min-width: 0; font-weight: 800; color: var(--jt2-text); }
.jt2-hname--sub { font-weight: 700; }
.jt2-hname .hs { font-size: 11px; font-weight: 600; color: var(--jt2-mute); }

/* 마추 스코어 게이지 (시안 h7 게이지 + 12px/800 값) */
.jt2-score { display: flex; align-items: center; gap: 8px; min-width: 0; }
.jt2-score .jt2-bar { flex: 1; width: auto; height: 7px; }
.jt2-score .v { flex: none; font-size: 12px; font-weight: 800; color: var(--jt2-link); }
.jt2-score .v--2 { color: var(--jt2-text-2); }
.jt2-score .v--n { font-weight: 700; color: var(--jt2-mute); }

/* 마체중 증감 (시안 +는 초록 / -는 빨강 / 0은 회색) */
.jt2-wgd { font-weight: 700; }

/* 배당 셀 (단승 굵게 + 연승/증감 보조줄) */
.jt2-odds { min-width: 0; }
.jt2-odds .m  { font-weight: 800; color: var(--jt2-text); }
.jt2-odds .p  { display: block; font-size: 11px; color: var(--jt2-mute); }
.jt2-odds .dl { display: block; font-size: 11px; line-height: 1; }

/* 출전제외 행 */
.jt2-row--ex, .jt2-mrow--ex { opacity: .45; }

/* 모바일 카드행 보강 */
.jt2-mrow .jt2-hname { flex: 1 1 auto; }
.jt2-mrow .mt { flex: 1; min-width: 0; font-size: 12px; color: var(--jt2-mute); line-height: 1.6; }
.jt2-mrow .jt2-score { flex: none; width: 118px; }

/* 경기 환경 타일 (§10 .jt2-kpi--inset 변형 — 라벨 옆 상태 태그) */
.jt2-envtile .l { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.jt2-envtile .v { font-size: 15px; }
.jt2-envtile .d { line-height: 1.6; }

/* 승식 베팅 가이드 타일 (§10 .jt2-kpi--inset 위에 얹는 변형) */
.jt2-bet .l { display: flex; align-items: center; gap: 6px; }
.jt2-bet .v { font-size: 19px; }
.jt2-bet--main { background: var(--jt2-tint-blue); border-color: var(--jt2-tint-blue-bd); }

/* 승식 판정 배지 줄 (헬퍼 출력 배지를 감싸는 래퍼) */
.jt2-badgerow { display: flex; gap: 6px; flex-wrap: wrap; }

/* 간격 · 굵기 보조 (인라인 style 대체 — 시안 레이팅 열은 700) */
.jt2-note--mt { margin-top: 12px; }
.jt2-b7 { font-weight: 700; }

/* ------------------------------------------------------------
   27. 경기일정 (racing/schedule.php) — 시안 「경기일정」 아트보드 실측
   ------------------------------------------------------------ */
/* 일정 검증 배지 (초록 틴트 + 펄스 점) */
.jt2-verify {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  font-size: 12px; font-weight: 800; border-radius: 9px; padding: 7px 13px; white-space: nowrap;
}
.jt2-verify i {
  width: 6px; height: 6px; border-radius: 50%; background: var(--jt2-tint-green-tx);
  display: inline-block; flex-shrink: 0; animation: jt-pulse 1.6s ease-out infinite;
}

/* 개최일 필 — 금요일도 개최일이라 파랑 · 필 줄 아래 여백 */
.jt2-days--block { margin-bottom: 14px; }
.jt2-day--fri .w { color: var(--jt2-tint-blue-tx); }

/* 경마장 필터 — 세그먼트가 아니라 낱개 칩(선택 = 네이비 채움) */
.jt2-filters--tight { gap: 8px; }
.jt2-filters .lbl { font-size: 12px; font-weight: 700; color: var(--jt2-mute); }
.jt2-mchip {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); color: var(--jt2-text-2);
  font-family: var(--jt2-font); font-size: 12px; font-weight: 700;
  border-radius: 9px; padding: 6px 13px;
  white-space: nowrap; cursor: pointer; text-decoration: none;
}
.jt2-mchip:hover { background: var(--jt2-hover); }
.jt2-mchip .n { color: var(--jt2-mute); }
.jt2-mchip--empty, .jt2-mchip--empty .n { color: var(--jt2-faint); }
.jt2-mchip.on, .jt2-mchip[aria-pressed="true"] {
  background: var(--jt2-navy); border-color: var(--jt2-navy); color: #FFFFFF; font-weight: 800;
}
.jt2-mchip.on .n, .jt2-mchip[aria-pressed="true"] .n { color: #FFFFFF; opacity: .7; }
.jt2-wxgroup { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* 카드 헤드 앞 점 */
.jt2-headdot { width: 8px; height: 8px; border-radius: 50%; background: var(--jt2-pri); flex-shrink: 0; }

/* 상태 칸 — 상태 태그 + 적중 칩을 86px 고정폭으로 세로 정렬 */
.jt2-statuscell { display: flex; align-items: center; gap: 5px; min-width: 0; }
.jt2-statuscell > .jt2-tag, .jt2-statuscell > .jt-tag,
.jt2-statuscell > .jt2-hitn, .jt2-statuscell > .jt-hitn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 86px; box-sizing: border-box; padding-left: 0; padding-right: 0;
}

/* 행 안 링크형 안내 (출주표 보기 → / 편성 대기) */
.jt2-cta { font-size: 12.5px; font-weight: 700; color: var(--jt2-link); white-space: nowrap; }
.jt2-cta--mute { color: var(--jt2-mute); font-weight: 600; }
/* 행 안 보조 수치 (기수명 · 신뢰도 %) · 배당 델타 */
.jt2-confv { font-size: 11.5px; font-weight: 700; color: var(--jt2-text-2); flex-shrink: 0; }
.jt2-odds-d { font-style: normal; font-size: 11px; font-weight: 700; margin-left: 3px; }

/* 모바일 카드행 톤 */
.jt2-mrow--dim { color: var(--jt2-mute); }
.jt2-mrow--hl { background: var(--jt2-inset); box-shadow: inset 2px 0 0 var(--jt2-pri); }
.jt2-mrow--static { cursor: default; }

/* 넓은 점선 안내 박스 (시안 하단 노트) */
.jt2-note--lg {
  display: flex; align-items: center; gap: 8px;
  border-radius: 14px; padding: 12px 18px; margin-top: 14px; font-size: 12.5px;
}

/* 경기일정 한정 — 셀 안 말줄임이 그리드를 밀지 않게 */
.jt2-sched .jt2-row > .jt2-inline { min-width: 0; }
.jt2-sched .jt2-row > .jt2-inline > .jt2-ellipsis { flex: 1 1 auto; }
.jt2-sched .jt2-mrow .top > .jt2-ellipsis { flex: 1 1 auto; }
.jt2-sched .jt2-mrow .bot > .jt2-ellipsis { flex: 0 1 auto; }

/* ------------------------------------------------------------
   28. 마추예측 (racing/ai.php) — 시안 「마추예측」 아트보드 실측
       모델 상태 필 · 23요소 구성 스트립 · 픽 카드 그리드 · 잠긴 픽
       ※ .jt2-pickcard 는 §26(경주 상세)이 선점 — 여기선 .jt2-aicard 로 분리
   ------------------------------------------------------------ */
/* 상태 필 (모델 정상 · 자동 학습 ON) — 시안 12px / padding 7·13 / r9 */
.jt2-chip--lg { font-size: 12px; padding: 7px 13px; border-radius: 9px; }

/* 섹션 미니 타이틀 확대형 — 시안 세로바 4×16 · 제목 14.5 / 15.5px */
.jt2-sechead--md { font-size: 14.5px; gap: 8px; }
.jt2-sechead--lg { font-size: 15.5px; gap: 10px; margin-bottom: 12px; }
.jt2-sechead--md::before, .jt2-sechead--lg::before { width: 4px; height: 16px; }
.jt2-sechead .d { font-size: 12px; font-weight: 600; color: var(--jt2-mute); }

/* KPI 축소형 — 시안 값 21px · 간격 5/4 */
.jt2-kpi--sm .v { font-size: 21px; margin-top: 5px; }
.jt2-kpi--sm .v small { font-size: 12px; }
.jt2-kpi--sm .d { margin-top: 4px; }

/* 모델 상태 3연 — 시안은 데스크톱/모바일 모두 3열을 유지한다(붕괴 금지).
   3열 유지 + 모바일 타이포 축약은 파일 끝 미디어쿼리에서 재선언한다. */
.jt2-grid3--keep3 { gap: 12px; }
/* 데스크톱/모바일이 서로 다른 3연을 쓰기 때문에 타일 단위로 교체한다
   (데스크톱 = 모델 버전·마지막 학습·학습 표본 / 모바일 = 모델 버전·학습 표본·자동 학습) */
.jt2-kpi--monly { display: none; }
/* 모바일 '자동 학습 ON' — 시안 #0E8A46 (기본 .v.ok 보다 한 톤 진한 쪽) */
.jt2-kpi--monly .v.ok { color: var(--jt2-ok); }

/* 타이틀 줄 우측 소형 메타 — 모바일에서만 (시안 'v1.4 · 학습 8.15 04:00', 10.5px) */
.jt2-headmeta {
  display: none; margin-left: auto;
  font-size: 10.5px; font-weight: 600; color: var(--jt2-mute); white-space: nowrap;
}

/* 23요소 구성 스트립 (성적·시장 17 + 환경 × 개체 6) */
.jt2-factors {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  margin-top: 11px; font-size: 11.5px; font-weight: 700;
}
.jt2-factors + .jt2-factors { margin-top: 7px; }
.jt2-factors .g { font-weight: 800; color: var(--jt2-mute); margin-right: 2px; }
.jt2-factors .n { margin-left: auto; font-size: 11px; font-weight: 600; color: var(--jt2-mute); }
.jt2-fchip {
  border-radius: var(--jt2-r-sm); padding: 4px 10px; white-space: nowrap;
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
}
.jt2-fchip--blue  { background: var(--jt2-tint-blue);  color: var(--jt2-tint-blue-tx); }
.jt2-fchip--green { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }

/* 오늘의 마추픽 — 시안 2열 gap 12. 폭이 좁아지면 자동 1열(미디어쿼리 불필요) */
.jt2-aigrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; }
.jt2-aicard {
  display: block; box-sizing: border-box; min-width: 0;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: var(--jt2-r-lg); padding: 15px 18px;
  color: var(--jt2-text); text-decoration: none; cursor: pointer;
}
.jt2-aicard:hover { border-color: var(--jt2-dash); }
/* 고신뢰 픽 — 시안 2px 파란 테두리 + 파란 그림자 (안쪽 폭 유지 위해 padding 1px 보정) */
.jt2-aicard--hi {
  border: 2px solid var(--jt2-pri); padding: 14px 17px;
  box-shadow: 0 6px 14px rgba(37,99,235,.10);
}
.jt2-aicard--hi:hover { border-color: var(--jt2-pri-hv); }
.jt2-aicard .hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.jt2-aicard .hd .r { font-size: 14.5px; font-weight: 800; white-space: nowrap; }
.jt2-aicard .hd .m { font-size: 11.5px; font-weight: 600; color: var(--jt2-mute); }
/* 카드 헤더 경마장명 — 시안 「마추예측」에서 빨강은 '적중 태그' 전용이라
   서울은 기본 텍스트색(v2.html:629,634), 부경만 초록(639), 강조 카드만 파랑(624).
   같은 카드 안에서 경마장명과 적중 태그가 같은 색이 되면 위계가 무너진다. */
.jt2-aicard .hd .r.jt2-meet--seoul { color: var(--jt2-text); }
.jt2-aicard--hi .hd .r { color: var(--jt2-link); }
.jt2-aicard .ln { display: flex; align-items: center; gap: 6px; margin-top: 11px; min-width: 0; }
.jt2-aicard .ln .nm { font-size: 13.5px; font-weight: 800; min-width: 0; }
.jt2-aicard .ln .jt2-picks { margin-left: 6px; }
.jt2-aicard .ln .cf { margin-left: auto; font-size: 12px; font-weight: 700; color: var(--jt2-text-2); white-space: nowrap; }
.jt2-aicard .ln .cf--hi { font-weight: 800; color: var(--jt2-link); }
/* 픽 근거 / 채점 인셋 박스 */
.jt2-aicard .why {
  background: var(--jt2-inset); border: 1px solid var(--jt2-inset-bd);
  border-radius: var(--jt2-r); padding: 8px 11px; margin-top: 10px;
  font-size: 11.5px; font-weight: 600; color: var(--jt2-text-2); line-height: 1.55;
}
.jt2-aicard .why b { font-weight: 800; color: var(--jt2-text); }

/* 잠긴 픽 — 서버가 마명·마번·점수를 아예 보내지 않는 자리 */
.jt2-ailock {
  display: flex; align-items: center; gap: 8px; margin-top: 11px;
  background: var(--jt2-inset); border: 1px dashed var(--jt2-dash);
  border-radius: var(--jt2-r); padding: 10px 12px;
  font-size: 12px; font-weight: 700; color: var(--jt2-text-2);
}
.jt2-ailock .ic { font-size: 14px; line-height: 1; flex-shrink: 0; }
.jt2-ailock .p { margin-left: auto; font-weight: 800; color: var(--jt2-link); white-space: nowrap; }

/* 하단 고지 박스 — 시안 r14 / padding 12·18 / 12.5px */
.jt2-ainote { border-radius: 14px; padding: 12px 18px; font-size: 12.5px; }
/* 모바일 고지 — 시안은 박스를 없애고 중앙정렬 9px 캡션 한 줄로 처리한다(v2.html:1864).
   기본은 숨김, 900px 이하에서 .jt2-ainote 와 자리를 맞바꾼다. */
.jt2-mnote { display: none; text-align: center; font-size: 9px; font-weight: 600; color: var(--jt2-faint); }

/* 아트보드 세로 리듬 (시안 블록 간격 14px) */
.jt2-vstack { display: flex; flex-direction: column; gap: 14px; min-width: 0; }

/* ------------------------------------------------------------
   29. 오늘의 경주 (racing/index.php) — 시안 「홈 대시보드」 실측
   ------------------------------------------------------------ */
/* 히어로 내부 정렬 (마명 말줄임 / 카운트다운 우측) */
.jt2-hero .k svg { flex-shrink: 0; }
.jt2-hero .nmbox { min-width: 0; }
.jt2-hero .cdbox { margin-left: auto; text-align: right; flex-shrink: 0; }

/* 표 셀 — 경주번호 800 / 단승배당 700 / 착순 700 #5A6A82, 없으면 #B8C2D2 */
.jt2-rno { font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.jt2-row--hl .jt2-rno, .jt2-mrow--hl .jt2-rno { color: var(--jt2-link); }
.jt2-oddsv { font-weight: 700; font-variant-numeric: tabular-nums; }
.jt2-fin { font-weight: 700; color: var(--jt2-text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.jt2-fin--none { color: var(--jt2-faint); font-weight: 600; }
/* 상태 칸 — 상태 태그 + 적중 종수 칩 (좁은 칸에서 줄바꿈 허용) */
.jt2-stcell { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; row-gap: 4px; min-width: 0; }

/* 발매중 행의 상태 태그에 초록 펄스 점 (시안 8R 행) */
.jt2-row--hl .jt-tag--ok::before, .jt2-mrow--hl .jt-tag--ok::before,
.jt2-row--hl .jt2-tag--hit::before, .jt2-mrow--hl .jt2-tag--hit::before {
  content: ""; width: 5px; height: 5px; border-radius: 50%;
  background: currentColor; display: inline-block; flex-shrink: 0;
  animation: jt-pulse 1.6s ease-out infinite;
}

/* 최근 N경주 폼 스트립 — 시안 r14 / padding 12·18 / 12.5px */
.jt2-formbar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: 14px; padding: 12px 18px; margin-bottom: 16px;
  font-size: 12.5px; font-weight: 600; color: var(--jt2-text-2);
}
.jt2-formbar .l { color: var(--jt2-mute); }
.jt2-formbar .r { margin-left: auto; color: var(--jt2-mute); }

/* 오늘 경마장별 적중 카드 묶음 */
.jt2-mavgs { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }

/* 구 브리지 보강 — 헬퍼(jtm_ui_form_seq / jtm_ui_meet_avg)가 뱉는 마크업을 시안 톤으로 */
.jt-formseq i {
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--jt2-dim); font-size: 10px; font-weight: 800; font-style: normal;
}
.jt-formseq i::after { content: "–"; }
.jt-formseq i.on { color: var(--jt2-tint-green-tx); }
.jt-formseq i.on::after { content: "적"; }
.jt-mavg .hd .sub { margin-left: auto; font-size: 11.5px; color: var(--jt2-mute); font-weight: 600; }
.jt-mavg .bd--wait { display: block; margin-top: 12px; font-size: 12px; color: var(--jt2-mute); }

/* ------------------------------------------------------------
   31. 커뮤니티 (racing/community.php) — 시안 「커뮤니티」 아트보드 실측
       · 게시판 칩  gap 6 / r9 / 6·13 / 12px / 활성 네이비 채움
       · 2단 그리드 1.7fr + 1fr, gap 16, align-items:start
       · 글 행     padding 14·20 / gap 12 / 제목 14px·700 / 메타 11.5px
       · 사이드    헤드 14·18(14px·800) · 바디 12·18 · 항목 gap 11 / 13px
   ------------------------------------------------------------ */
/* 게시판(분류) 필터 칩 */
.jt2-bochips { display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap; }
.jt2-bochip {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); color: var(--jt2-text-2);
  font-size: 12px; font-weight: 700; border-radius: 9px; padding: 6px 13px;
  text-decoration: none; cursor: pointer; white-space: nowrap; box-sizing: border-box;
}
.jt2-bochip:hover { background: var(--jt2-hover); color: var(--jt2-text-2); text-decoration: none; }
.jt2-bochip[aria-current="page"] {
  background: var(--jt2-navy); border-color: var(--jt2-navy); color: #FFFFFF; font-weight: 800;
}
.jt2-bochip[aria-current="page"]:hover { background: var(--jt2-navy); color: #FFFFFF; }
.jt2-bochip .n { font-size: 11px; opacity: .7; }

/* 본문 1.7fr + 사이드 1fr (시안 커뮤니티 전용 비율) */
.jt2-cocols { display: grid; grid-template-columns: 1.7fr 1fr; gap: 16px; align-items: start; }
.jt2-coside { display: flex; flex-direction: column; gap: 12px; min-width: 0; }

/* 분류 배지 — 11px/800 · r7 · 4·9 (모바일 행에서도 그대로 재사용) */
.jt2-cotag {
  display: inline-flex; align-items: center; flex-shrink: 0; box-sizing: border-box;
  max-width: 140px; background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
  font-size: 11px; font-weight: 800; border-radius: var(--jt2-r-sm); padding: 4px 9px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jt2-cotag--blue { background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx); }
.jt2-cotag--red  { background: var(--jt2-tint-red);  color: var(--jt2-tint-red-tx); }

/* 글 목록 행 — §11 .jt2-row 위에 얹는 변형 (--cols: auto 1fr auto) */
.jt2-corow { padding: 14px 20px; column-gap: 12px; }
.jt2-corow .tx { display: block; min-width: 0; }
.jt2-corow .tt {
  display: block; font-size: 14px; font-weight: 700; color: var(--jt2-text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jt2-corow .cnt { color: var(--jt2-link); font-weight: 800; }
.jt2-corow .mt {
  display: block; font-size: 11.5px; color: var(--jt2-mute); font-weight: 600; margin-top: 3px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jt2-corow .hot { font-size: 12px; font-weight: 800; color: var(--jt2-mute); white-space: nowrap; }
.jt2-corow .hot--on { color: var(--jt2-bad); }

/* 모바일 카드행 (900px 이하) — 칩+메타 / 제목 / 조회·댓글 3단 */
.jt2-comrow .top { gap: 6px; }
.jt2-comrow .tt {
  display: block; font-size: 12.5px; font-weight: 700; color: var(--jt2-text); margin-top: 6px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jt2-comrow .cnt { color: var(--jt2-link); font-weight: 800; }
.jt2-comrow .bot { margin-top: 4px; font-size: 11px; color: var(--jt2-mute); font-weight: 600; }
.jt2-comrow .hot { font-weight: 800; color: var(--jt2-mute); }
.jt2-comrow .hot--on { color: var(--jt2-bad); }

/* 사이드 카드 — 시안 헤드 14·18 / 바디 12·18 */
.jt2-card--side > .jt2-card-head { padding: 14px 18px; }
.jt2-card--side > .jt2-card-head .t { font-size: 14px; }
.jt2-card--side > .jt2-card-body { padding: 12px 18px; }
.jt2-card--side > .jt2-card-foot { padding: 11px 18px; }

/* 주간 인기글 목록 */
.jt2-hotlist { display: flex; flex-direction: column; gap: 11px; font-size: 13px; }
.jt2-hotlist a {
  display: flex; align-items: baseline; gap: 9px; min-width: 0;
  color: var(--jt2-text); text-decoration: none;
}
.jt2-hotlist a:hover .t { text-decoration: underline; }
.jt2-hotlist .n { font-weight: 800; color: var(--jt2-text-2); flex-shrink: 0; }
.jt2-hotlist .n.on { color: var(--jt2-link); }
.jt2-hotlist .t {
  font-weight: 600; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* 공지 점선 박스 — 시안 r16 · 16·18 · 12.5px */
.jt2-note--card { border-radius: var(--jt2-r-lg); padding: 16px 18px; font-size: 12.5px; }
.jt2-note b { color: var(--jt2-text); font-weight: 800; }

/* 사이드 속보 줄 (기존 .jt2-post 재사용 + 아이콘) */
.jt2-post .ic { flex-shrink: 0; font-size: 15px; line-height: 1; }

/* ------------------------------------------------------------
   30. 랭킹 (racing/rank.php) — 시안 「랭킹」 아트보드 실측
       11열 표(48 / 1.4fr / 60 / 52 / 52 / 52 / 70 / 1fr / 76 / 92 / 104)
       · 세그먼트 2조 + 세로 구분선 · 0~50% 스케일 승률 게이지
       · 최근 60일 초록 칩
       ※ §21 의 .jt2-rankno(커뮤니티 순위 숫자)와는 별개 — 여기는 .jt2-rank-*
   ------------------------------------------------------------ */
/* 헤드 · 필터 줄 우측 보조 문구 (시안 12.5px / 12px · 600 · #8B98AC) */
.jt2-hnote { font-size: 12.5px; font-weight: 600; color: var(--jt2-mute); }
.jt2-hnote b { color: var(--jt2-text); }
.jt2-hnote--sm { font-size: 12px; }
/* 랭킹 아트보드 세그먼트 — 시안 padding 6/15 (기본 §8 은 7/16) */
.jt2-seg--sm > a, .jt2-seg--sm > button, .jt2-seg--sm > span { padding: 6px 15px; }
/* 세그먼트 2조 사이 세로 구분선 (시안 1×22 · #E4EAF3) */
.jt2-segdiv { width: 1px; height: 22px; background: var(--jt2-line); flex-shrink: 0; }
/* 가운데 정렬 셀 (시안 '최근 60일' 열) */
.jt2-cell-c { text-align: center; }

/* 랭킹 카드 — 시안 헤드 15/20 · 행 13/20 · 열 사이 여백 0(게이지 셀이 14px 들여씀) */
.jt2-rank .jt2-card-head { padding-top: 15px; padding-bottom: 15px; }
.jt2-rank .jt2-thead, .jt2-rank .jt2-row { column-gap: 0; }
.jt2-rank .jt2-row { padding: 13px 20px; }
/* 마지막 데스크톱 행은 아래 실선 없음 — 행마다 .jt2-mrow 가 뒤따르므로
   :last-child 가 아니라 :nth-last-child(2) 가 마지막 표 행이다 (시안 7행 기준) */
.jt2-rank .jt2-table > .jt2-row:nth-last-child(2) { border-bottom: 0; }
/* 순위 — 시안 14px/800 · 1~3위 링크블루 / 그 외 #5A6A82 */
.jt2-rank-no { font-size: 14px; font-weight: 800; color: var(--jt2-text-2); font-variant-numeric: tabular-nums; }
.jt2-rank-no--top { color: var(--jt2-link); }
/* 이름 — 시안 800 (행 전체가 프로필 모달 링크) */
.jt2-rank-nm { font-weight: 800; color: var(--jt2-text); min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 승률 — 시안 800 · 50% 이상은 링크블루 강조 */
.jt2-rank-win { font-weight: 800; }
.jt2-rank-win--hi { color: var(--jt2-link); }
/* 입상률 — 시안 700 */
.jt2-rank-plc { font-weight: 700; }
/* 게이지 셀 — 시안 padding-left 14 (트랙 h6 · r4 는 §14 .jt2-bar 그대로) */
.jt2-rank-g { padding-left: 14px; min-width: 0; display: flex; align-items: center; }
/* 최근 60일 칩 — 시안 11px/800 · r6 · 3/8 · 초록 틴트 */
.jt2-rank-w60 {
  display: inline-block; background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  font-size: 11px; font-weight: 800; border-radius: var(--jt2-r-xs); padding: 3px 8px; white-space: nowrap;
}
/* 값 없음 '—' (시안 #B8C2D2) · 최근 출주 일자 (시안 #8B98AC) */
.jt2-rank-none { color: var(--jt2-faint); }
.jt2-rank-dt { color: var(--jt2-mute); font-variant-numeric: tabular-nums; }
/* 모바일 카드행 — 게이지가 남은 폭을 채우도록 (900px↓ 전용 마크업) */
.jt2-rank .jt2-mrow .top { gap: 7px; }
.jt2-rank .jt2-mrow .jt2-bar--w { flex: 1; min-width: 60px; }

/* ------------------------------------------------------------
   33. 배당 계산기 (racing/calc.php) — 전용 아트보드 없음 · 디자인시스템 재스킨
       컨트롤 바(승식 세그먼트 + 베팅 입력) · 6칸 합계 KPI
       · 7열 내역표(112 / 1fr / 64 / 88 / 112 / 96 / 116)
       ※ 손익 부호 색은 jt-calc JS 가 .pos / .neg 로 토글한다 — 클래스명 고정
   ------------------------------------------------------------ */
/* 컨트롤 바 — 라벨+컨트롤 묶음을 한 줄에, 좁아지면 줄바꿈 */
.jt2-calcbar { display: flex; align-items: flex-end; gap: 20px; flex-wrap: wrap; }
.jt2-calcbar .grp { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.jt2-calcbar .grp > .lbl { font-size: 11.5px; font-weight: 800; color: var(--jt2-mute); }
.jt2-calcbar .grp--desc { margin-left: auto; max-width: 340px; }
.jt2-calcdesc { font-size: 12px; font-weight: 600; color: var(--jt2-text-2); line-height: 1.55; }
.jt2-calcdesc b { font-weight: 800; color: var(--jt2-text); }

/* 승식 세그먼트 — 관리자에겐 8칸까지 늘어나므로 줄바꿈 허용 */
.jt2-seg--wrap { flex-wrap: wrap; row-gap: 3px; }
/* 관리자 전용 '전체' — 앰버로 구분 (활성 상태에서도 유지) */
.jt2-seg > .jt2-seg-adm { color: var(--jt2-amber); font-weight: 800; }
.jt2-seg > .jt2-seg-adm[aria-current="page"] {
  color: var(--jt2-amber); background: var(--jt2-tint-amber); box-shadow: none;
}

/* 베팅 입력 — 우측 '원' 접미사 · 스피너 제거(접미사와 겹침 방지) */
.jt2-betin { position: relative; display: inline-flex; align-items: center; }
.jt2-betin input.jt2-in {
  width: 152px; padding-right: 34px; text-align: right;
  font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums;
}
.jt2-betin .u {
  position: absolute; right: 12px; pointer-events: none;
  font-size: 12px; font-weight: 700; color: var(--jt2-mute);
}
.jt2-betin input[type="number"] { -moz-appearance: textfield; }
.jt2-betin input[type="number"]::-webkit-outer-spin-button,
.jt2-betin input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* 합계 KPI 6칸 (1180px↓ 는 파일 끝 미디어쿼리가 2열로 접는다) */
.jt2-kpis--6 { grid-template-columns: repeat(6, 1fr); }
/* 6칸이라 타일이 좁다 — 금액(‘12,345,600원’)이 넘치지 않게 값 한 단계 축소 */
.jt2-calcsum .jt2-kpi { padding: 15px 16px; }
.jt2-calcsum .v { font-size: 20px; letter-spacing: -0.02em; }

/* 내역 행 — 픽 볼 + 마명 묶음 */
.jt2-calcrow .pk { display: flex; align-items: center; gap: 8px; min-width: 0; }
.jt2-calcrow .pk .nm { font-weight: 700; min-width: 0; }
.jt2-calcrow .jt2-picks { flex-shrink: 0; }
/* 모바일 카드행 — 라벨+값 묶음 */
.jt2-calcrow .kv { display: inline-flex; align-items: baseline; gap: 4px; font-size: 11.5px; font-weight: 600; color: var(--jt2-mute); }
.jt2-calcrow .kv b { font-size: 12.5px; font-weight: 800; color: var(--jt2-text); font-variant-numeric: tabular-nums; }
/* 손익 부호 색 (JS 토글) */
.jt2-calcrow .neg, .jt2-calcrow .kv b.neg, .jt2-calcsum .v.neg { color: var(--jt2-bad); }
.jt2-calcrow .pos, .jt2-calcrow .kv b.pos, .jt2-calcsum .v.pos { color: var(--jt2-ok-hi); }

/* ------------------------------------------------------------
   32. 설정 (racing/settings.php) — 시안 「설정」 아트보드 실측
       · 2열 그리드 1fr 1fr · gap 16 · align-items:start · max-width 980
       · 카드 헤더 padding 15/20 · 14.5px/800 (§9 기본 16/20·15px 보다 조밀)
       · 행/스위치는 §15 .jt2-setrow(14·20) / .jt2-switch(38×22) 를 그대로 재사용
       ⚠ 열 축소는 auto-fit 으로 처리 — 미디어쿼리를 여기에 추가하지 말 것
   ------------------------------------------------------------ */
.jt2-setgrid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px; align-items: start; max-width: 980px;
}
.jt2-setcol { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.jt2-setgate { max-width: 520px; }

/* 설정 카드 헤더 — 시안 15/20 · 14.5px */
.jt2-setcard > .jt2-card-head { padding: 15px 20px; }
.jt2-setcard > .jt2-card-head .t { font-size: 14.5px; }

/* 행 좌측 텍스트 묶음 (말줄임 허용) */
.jt2-setrow .tx { min-width: 0; }
/* 마지막 행 아래에 카드 푸터가 오면 경계선이 두 줄 겹친다 — 푸터 쪽을 지운다 */
.jt2-setrow + .jt2-card-foot { border-top: 0; }

/* 계정 행 — 시안 padding 16/20 · 아바타 40px r12 그라데이션 */
.jt2-setrow--acct { padding: 16px 20px; }
.jt2-acct-ini {
  width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
  background: linear-gradient(135deg, #2563EB, #7C3AED); color: #FFFFFF;
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 15px;
}
.jt2-acct-nm { font-size: 14px; font-weight: 800; color: var(--jt2-text); }
.jt2-acct-em { font-size: 12px; color: var(--jt2-mute); margin-top: 1px; }

/* 행 우측 알약 셀렉트 ("5분 전 ▾") — 시안 #F1F4F9 / r8 / 5·10 / 12px/800 / #1D4ED8 */
select.jt2-setpick, .jt2-setpick {
  box-sizing: border-box; height: auto; border: 0; outline: 0;
  background: var(--jt2-tint-grey); border-radius: 8px;
  padding: 5px 26px 5px 10px; flex-shrink: 0;
  font-family: var(--jt2-font); font-size: 12px; font-weight: 800;
  color: var(--jt2-link); cursor: pointer;
  -webkit-appearance: none; appearance: none;
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%231D4ED8' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 9px center;
}
select.jt2-setpick:focus { box-shadow: 0 0 0 3px rgba(37,99,235,.13); }

/* 행 우측 보조 버튼 (로그아웃) — 시안 border #E4EAF3 / r9 / 7·13 / 12px/700 */
.jt2-setbtn {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  border: 1px solid var(--jt2-line); border-radius: 9px; padding: 7px 13px;
  font-family: var(--jt2-font); font-size: 12px; font-weight: 700;
  color: var(--jt2-text-2); background: transparent;
  text-decoration: none; white-space: nowrap; cursor: pointer;
}
.jt2-setbtn:hover { background: var(--jt2-hover); color: var(--jt2-text); text-decoration: none; }

/* 행 우측 값 */
.jt2-setval {
  font-size: 13px; font-weight: 800; color: var(--jt2-text);
  white-space: nowrap; flex-shrink: 0; font-variant-numeric: tabular-nums;
}
.jt2-setval small { font-size: 10.5px; font-weight: 600; color: var(--jt2-mute); margin-left: 2px; }

/* 비로그인 게이트 버튼 2열 — 시안 「아직 회원이 아니신가요?」 */
.jt2-gate-acts { display: flex; gap: 8px; width: 100%; max-width: 300px; margin-top: 4px; }
.jt2-gate-acts > * { flex: 1; }

/* ------------------------------------------------------------
   33. 멤버십 · 포인트 (racing/membership.php)
       시안에 전용 아트보드가 없어 「홈 포털」 우측 레일의 네이비 월렛 카드와
       「설정」 계정 카드 톤을 옮긴 마감판.
       · 네이비 월렛(보유 포인트 + 멤버십 상태 타일)
       · 공개 원칙 2행(좌측 칩 + 제목/설명)
       · 이용 방법 2타일은 §10 .jt2-kpi--inset 변형으로 처리
       ⚠ 사이드 레일을 좁은 폭에서 위로 올리는 order 규칙은 파일 끝 1180px 블록에 있다
   ------------------------------------------------------------ */
/* 공개 원칙 행 — 시안 홈 포털 안내 블록 톤(칩 + 13.5/800 제목 + 12.5 설명) */
.jt2-poly { display: flex; flex-direction: column; gap: 14px; }
.jt2-poly-row { display: flex; gap: 11px; align-items: flex-start; min-width: 0; }
.jt2-poly-row > .jt2-chip { margin-top: 2px; flex-shrink: 0; }
.jt2-poly-row .tx { min-width: 0; }
.jt2-poly-row .t { font-size: 13.5px; font-weight: 800; color: var(--jt2-text); line-height: 1.45; }
.jt2-poly-row .d { display: block; font-size: 12.5px; color: var(--jt2-text-2); line-height: 1.65; margin-top: 3px; }
.jt2-poly-row .d b { font-weight: 800; color: var(--jt2-text); }

/* 이용 방법 타일 — §10 .jt2-kpi--inset 위에 얹는 변형(라벨이 곧 제목) */
.jt2-waytile .l { font-size: 13px; font-weight: 800; color: var(--jt2-text); }
.jt2-waytile .v { color: var(--jt2-link); }
.jt2-waytile .v small { font-size: 11.5px; font-weight: 600; }
.jt2-waytile .d { font-size: 12px; line-height: 1.65; }

/* 네이비 월렛 카드 (시안 홈 포털 우측 레일 실측 — 헤드 14/18 · 본문 13/18) */
.jt2-wallet .hd { background: var(--jt2-navy); color: #FFFFFF; padding: 14px 18px; }
.jt2-wallet .who { display: flex; align-items: center; gap: 8px; min-width: 0; }
.jt2-wallet .nm {
  font-size: 13px; font-weight: 700; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.jt2-wallet .pt { margin-top: 12px; }
.jt2-wallet .hd > .pt:first-child { margin-top: 0; }
.jt2-wallet .pt .l { font-size: 10.5px; font-weight: 700; color: var(--jt2-navy-mut); }
.jt2-wallet .pt .v { font-size: 24px; font-weight: 800; margin-top: 2px; font-variant-numeric: tabular-nums; }
.jt2-wallet .pt .v small { font-size: 13px; font-weight: 600; color: var(--jt2-navy-mut); }
.jt2-wallet .pt .v--sm { font-size: 17px; }
.jt2-wallet .msg { font-size: 11.5px; font-weight: 600; color: var(--jt2-navy-mut); line-height: 1.7; margin-top: 8px; }
.jt2-wallet .bd { padding: 13px 18px; }
.jt2-wallet .bd .hdr { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 800; color: var(--jt2-text); }
.jt2-wallet .tile {
  display: flex; align-items: center; gap: 8px; margin-top: 10px;
  background: var(--jt2-inset); border: 1px solid var(--jt2-inset-bd);
  border-radius: 11px; padding: 10px 12px;
}
.jt2-wallet .tile .tx { min-width: 0; }
.jt2-wallet .tile .t { font-size: 12.5px; font-weight: 800; color: var(--jt2-text); }
.jt2-wallet .tile .s { font-size: 11px; font-weight: 600; color: var(--jt2-mute); margin-top: 2px; line-height: 1.5; }
.jt2-wallet .tile .p {
  margin-left: auto; flex-shrink: 0; white-space: nowrap;
  font-size: 14px; font-weight: 800; color: var(--jt2-text); font-variant-numeric: tabular-nums;
}
.jt2-wallet .tile .p small { font-size: 10.5px; font-weight: 600; color: var(--jt2-mute); }
.jt2-wallet .fine { font-size: 10.5px; font-weight: 600; color: var(--jt2-faint); line-height: 1.6; margin-top: 9px; }
.jt2-wallet .fine a { color: var(--jt2-mute); text-decoration: underline; }

/* 네이비 위에 얹는 유리 칩 (시안 rgba(255,255,255,.1) + 라이트 텍스트) */
.jt2-chip--glass {
  background: rgba(255,255,255,.10);
  border: 1px solid rgba(255,255,255,.16);
  color: var(--jt2-navy-tx);
}

/* 월렛 헤드 아바타 — §32 .jt2-acct-ini(40px) 의 26px 축소판 */
.jt2-acct-ini--sm { width: 26px; height: 26px; border-radius: 8px; font-size: 11px; font-weight: 700; }

/* 세로 버튼 묶음 (바로가기 레일) */
.jt2-btnstack { display: flex; flex-direction: column; gap: 8px; }
.jt2-sechead + .jt2-btnstack, .jt2-sechead + .jt2-gate-acts { margin-top: 10px; }

/* 단건 열람 내역 표 — 표 아래 카드 푸터가 붙어 경계선이 겹치지 않도록 (이 표에만 적용) */
.jt2-unlocks + .jt2-card-foot { border-top: 0; }
.jt2-unlocks .jt2-mrow:last-child { border-bottom: 1px solid var(--jt2-hairline-2); }

/* ------------------------------------------------------------
   34. 프로필 모달 브리지 보강 (horse / jockey / trainer.php ?modal=1)
       — 랭킹에서 이름을 누르면 열리는 프래그먼트가 아직 구(舊) jt- 마크업이라
         §22 브리지에 빠져 있던 "표 열 정의"를 채워 준다.
         (열 정의가 없으면 10칸 표가 6등분 그리드로 무너진다)
         ※ 3개 상세 페이지가 jt2 로 리빌드되면 이 절은 통째로 제거
   ------------------------------------------------------------ */
/* 출주 · 기승 이력 10열 — 모달 폭(560)보다 넓어 가로 스크롤 */
.jt-scroll--hist { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.jt-grid--hist {
  --cols: 62px 56px 46px 54px minmax(76px, 1fr) 60px 62px 58px 66px 62px;
  min-width: 640px;
}
/* KPI 타일 내부 (§22 는 상자만 있고 자식 규칙이 없었다) */
.jt-kpi .l { font-size: 12px; font-weight: 700; color: var(--jt2-mute); }
.jt-kpi .v { font-size: 24px; font-weight: 800; margin-top: 6px; color: var(--jt2-text); }
.jt-kpi .v .u { font-size: 14px; font-weight: 700; color: var(--jt2-mute); margin-left: 2px; }
.jt-kpi .d { font-size: 11.5px; color: var(--jt2-mute); margin-top: 5px; }
/* 미니 타일 3연 (최근 60일 폼) */
.jt-minigrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(88px, 1fr)); gap: 8px; margin-top: 12px; }
.jt-minigrid > div {
  background: var(--jt2-inset); border: 1px solid var(--jt2-inset-bd);
  border-radius: var(--jt2-r-md); padding: 10px 12px; min-width: 0;
}
.jt-minigrid .l { font-size: 11.5px; font-weight: 700; color: var(--jt2-mute); }
.jt-minigrid .v { font-size: 19px; font-weight: 800; margin-top: 4px; }
/* 콤비 마필 TOP 5 행 (순위 · 이름 · 횟수 · 입상률) */
.jt-rank {
  display: grid; grid-template-columns: 26px 1fr 64px 64px;
  align-items: center; gap: 8px; padding: 11px 20px;
  border-bottom: 1px solid var(--jt2-hairline-2); font-size: 12.5px;
}
.jt-rank .p { font-weight: 800; color: var(--jt2-link); text-align: center; }
.jt-rank .n { font-weight: 800; color: var(--jt2-text); }
/* 거리별 성적 게이지 행 */
.jt-calib {
  display: flex; align-items: center; gap: 10px; padding: 11px 20px;
  border-bottom: 1px solid var(--jt2-hairline-2); font-size: 12.5px;
}
.jt-calib .k { width: 96px; flex-shrink: 0; font-weight: 700; color: var(--jt2-text-2); }
.jt-calib .jt-bar { flex: 1; width: auto; }
/* 킥커 회색 변형 */
.jt-kicker--grey { color: var(--jt2-mute); }
/* 모달 안에서는 카드 테두리를 지우고 프래그먼트 자체를 본문으로 (시안 모달 톤) */
.jt-modal-frag .jt-card { border: 0; border-radius: 0; background: transparent; }
.jt-modal-frag .jt-card + .jt-card { border-top: 1px solid var(--jt2-hairline); }
.jt-modal-frag .jt-card-head, .jt-modal-frag .jt-card-body,
.jt-modal-frag .jt-card-foot, .jt-modal-frag .jt-thead, .jt-modal-frag .jt-row,
.jt-modal-frag .jt-rank, .jt-modal-frag .jt-calib { padding-left: 0; padding-right: 0; }
.jt-modal-frag .jt-kpis { grid-template-columns: repeat(2, 1fr); }
.jt-modal-frag .jt-kpi { padding: 12px 14px; border-radius: var(--jt2-r-md); background: var(--jt2-inset); border-color: var(--jt2-inset-bd); }
.jt-modal-frag .jt-kpi .v { font-size: 21px; }

/* ------------------------------------------------------------
   35. 오픈톡 (racing/race.php 3번째 블록) — 시안 「서울 제8경주」 @910~951
       + 경주 상세 모바일 위계 보강용 요소(출마표 열 라벨 · 승식 칩 줄)
       ※ 실제 전환 규칙은 파일 맨 끝 @media(900px) 에만 둔다.
   ------------------------------------------------------------ */
/* 카드 헤더 좌측 액센트 바 (시안 4×16 · r2 · #2563EB)
   — 출마표 카드 헤더와 오픈톡 카드 헤더를 시각적으로 가르는 장치 */
.jt2-card-head--accent { gap: 9px; padding-top: 14px; padding-bottom: 14px; }
.jt2-card-head--accent::before {
  content: ""; flex: none; width: 4px; height: 16px;
  border-radius: 2px; background: var(--jt2-pri);
}

/* 헤더 우측 '자동 업데이트' 토글 (시안 11.5px/700 라벨 + 34×20 스위치 · ON #12A150) */
.jt2-talk-auto {
  margin-left: auto; display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; font-weight: 700; color: var(--jt2-text-2); white-space: nowrap;
}
.jt2-switch--talk { width: 34px; height: 20px; border-radius: 11px; }
.jt2-switch--talk i { top: 3px; left: 3px; width: 14px; height: 14px; }
.jt2-switch--talk.on, .jt2-switch--talk[aria-checked="true"],
body.jt-dark .jt2-switch--talk.on, body.jt-dark .jt2-switch--talk[aria-checked="true"] { background: var(--jt2-ok-hi); }
.jt2-switch--talk.on i, .jt2-switch--talk[aria-checked="true"] i { left: 17px; }
.jt2-switch[disabled] { cursor: not-allowed; opacity: .5; }

/* 톡 스트림 (시안 padding 14/20 · gap 11 · 카드 흰 배경과 가르는 미세 톤)
   ※ 시안 #FBFCFE 는 팔레트의 '카드 속 타일'(--jt2-inset)로 매핑 — §11 .jt2-row--hl 과 같은 규칙 */
.jt2-talk {
  padding: 14px 20px; background: var(--jt2-inset);
  display: flex; flex-direction: column; gap: 11px;
}
.jt2-talk .jt2-empty { padding: 22px 0; }

/* 이전 톡 더보기 (시안 중앙 정렬 11.5px/700) */
.jt2-talk-more {
  display: block; width: 100%; padding: 0; border: 0; background: transparent;
  font-family: inherit; text-align: center; cursor: pointer;
  font-size: 11.5px; font-weight: 700; color: var(--jt2-mute);
}
.jt2-talk-more:hover { color: var(--jt2-link); }

/* 말풍선 아이템 — 닉네임 윗줄 + 버블 + 우측 하단 타임스탬프 */
.jt2-talk-item { min-width: 0; }
.jt2-talk-nick { font-size: 11px; font-weight: 700; color: var(--jt2-mute); }
.jt2-talk-line { display: flex; align-items: flex-end; gap: 7px; margin-top: 3px; }
.jt2-talk-bubble {
  max-width: 70%; padding: 8px 12px;
  background: var(--jt2-tint-grey); border: 1px solid var(--jt2-inset-bd);
  /* 시안 식별 특징 — 좌상단만 4px 인 비대칭 라디우스 */
  border-radius: 4px var(--jt2-r-md) var(--jt2-r-md) var(--jt2-r-md);
  font-size: 12.5px; font-weight: 500; color: var(--jt2-text);
  line-height: 1.55; word-break: break-word;
}
/* 이모지 전용 톡은 크게 (시안 16px) */
.jt2-talk-bubble--emoji { font-size: 16px; line-height: 1.35; }
.jt2-talk-time { flex: none; font-size: 10px; font-weight: 600; color: var(--jt2-faint); white-space: nowrap; }
/* 사진 첨부 썸네일 (시안 200×124 · 버블과 같은 비대칭 라디우스) */
.jt2-talk-photo {
  position: relative; width: 200px; max-width: 70%; height: 124px; margin-top: 5px;
  border-radius: 4px var(--jt2-r-md) var(--jt2-r-md) var(--jt2-r-md);
  overflow: hidden; background: var(--jt2-track);
}
.jt2-talk-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* 입력 바 (시안 padding 10/14 · 상단선 #EEF2F8 · 아이콘 20 · 입력 r10 · 보내기 r9) */
.jt2-talk-bar {
  display: flex; align-items: center; gap: 9px;
  padding: 10px 14px; border-top: 1px solid var(--jt2-hairline);
}
.jt2-talk-ico {
  flex: none; display: inline-flex; padding: 0; border: 0;
  background: transparent; color: var(--jt2-mute); cursor: pointer;
}
.jt2-talk-ico:hover { color: var(--jt2-link); }
.jt2-talk-ico svg { display: block; }
.jt2-talk-ico[disabled] { cursor: not-allowed; opacity: .55; }
/* ⚠ 리빌더 style.css 의 input[type=text] 전역 규칙 방어 — 태그+클래스로 못 박는다 */
input.jt2-talk-in, .jt2-talk-in {
  flex: 1; min-width: 0; box-sizing: border-box; height: auto;
  padding: 9px 13px; font-family: inherit; font-size: 12.5px; line-height: 1.4;
  color: var(--jt2-text); background: var(--jt2-tint-grey);
  border: 1px solid var(--jt2-line-soft); border-radius: var(--jt2-r);
}
input.jt2-talk-in::placeholder { color: var(--jt2-mute); }
input.jt2-talk-in[disabled] { cursor: not-allowed; }
.jt2-talk-send {
  flex: none; padding: 9px 16px; border: 0; border-radius: 9px;
  background: var(--jt2-pri); color: #FFFFFF; font-family: inherit;
  font-size: 12px; font-weight: 800; white-space: nowrap; cursor: pointer;
  box-shadow: var(--jt2-pri-sh);
}
.jt2-talk-send:hover { background: var(--jt2-pri-hv); }
.jt2-talk-send[disabled] { cursor: not-allowed; opacity: .45; box-shadow: none; }

/* ── 모바일 전용 보강 요소 — 기본(데스크톱)은 숨김 ── */
/* 출마표 카드 상단 열 라벨 행 (시안 모바일 @1723) */
.jt2-mhead { display: none; }
/* 승식 가이드 인라인 칩 줄 (시안 모바일 @1716~1721) */
.jt2-betchips { display: none; }
/* 모바일 카드행 안의 스코어 값 (게이지 없이 숫자만 — 시안 모바일 표) */
.jt2-mscore { font-size: 12px; font-weight: 800; color: var(--jt2-link); }
.jt2-mscore--2 { color: var(--jt2-text-2); }
.jt2-mscore--n { font-weight: 700; color: var(--jt2-mute); }

/* ------------------------------------------------------------
   36. 경마장 그룹 헤더의 주로 상태 · 함수율 (racing/index.php)
       시안 '서울  11경주 · 맑음 29℃ · 주로 건조 (함수율 8%)'
       — 날씨 칩(.jt-wx)이 아니라 .jt2-group .d 안의 회색 본문으로 붙는다.
   ------------------------------------------------------------ */
.jt2-group { flex-wrap: wrap; row-gap: 4px; }
.jt2-group .d { min-width: 0; }
/* 젖은 주로 — 예측 신뢰도를 좌우하는 1차 정보라 색으로 눈에 띄게 */
.jt2-group .wet { color: var(--jt2-tint-blue-tx); font-weight: 700; }
/* 기상청 실황(관측값) — 예보와 구분 */
.jt2-group .now {
  font-size: 9px; font-weight: 800; border-radius: 4px; padding: 1px 5px;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  margin-right: 4px; vertical-align: 1px;
}

/* ------------------------------------------------------------
   37. 경기일정 재대조 보강 (racing/schedule.php) — 시안 「경기일정」 @140700
       감사 지적분: 상태 칩 2칸 조합 · 오픈톡 열 · 날씨 2색 칩 ·
                    모바일 라이브 2px 테두리 · 일정 검증 배지 폴백
       ※ 상태 칩은 §12 의 .jt2-tag 와 색 체계가 정반대다(시안은 적중=빨강,
         초록은 발매중 전용). 다른 페이지를 흔들지 않도록 .jt2-stat 로 분리한다.
       ※ .jt2-talk* 는 §35(오픈톡 대화 카드)가 선점 — 여기 톡 수 칩은 .jt2-talkn.
   ------------------------------------------------------------ */
/* 상태 칩 — 시안 992·998·1004 실측 (86px 고정폭 · 11px/800 · r7) */
.jt2-stat {
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
  width: 86px; box-sizing: border-box; padding: 4px 0;
  background: var(--jt2-tint-grey); color: var(--jt2-tint-grey-tx);
  font-size: 11px; font-weight: 800; border-radius: var(--jt2-r-sm);
  white-space: nowrap; flex-shrink: 0;
}
/* 예정 · 일정 = #5A6A82 (시안 1016 · 1022) — 기본 톤 그대로 */
.jt2-stat--plan { color: var(--jt2-tint-grey-tx); }
/* 확정 · 미적중 = 한 단계 낮은 회색 #7A8AA0 (시안 992 · 998) */
.jt2-stat--fix, .jt2-stat--miss { color: var(--jt2-dim); }
/* 적중 N승식 = 빨강 (시안 992 · 1004) */
.jt2-stat--hit { background: var(--jt2-tint-red); color: var(--jt2-tint-red-tx); }
/* 발매중 = 초록 + 칩 안 펄스 점 (시안 1010) */
.jt2-stat--live { background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx); }
.jt2-stat--live i {
  width: 5px; height: 5px; border-radius: 50%; background: currentColor;
  display: inline-block; flex-shrink: 0; animation: jt-pulse 1.6s ease-out infinite;
}
/* 결과 대기 · 결과 없음 = 앰버 (시안에 없는 운영 상태 — 토큰 톤 유지) */
.jt2-stat--wait { background: var(--jt2-tint-amber); color: var(--jt2-tint-amber-tx); }

/* 오픈톡 수 — 말풍선 + 참여 수 (시안 993~1029 / 8번째 열) */
.jt2-talkn {
  display: inline-flex; align-items: center; gap: 4px;
  color: var(--jt2-mute); font-size: 11.5px; font-weight: 700; white-space: nowrap;
}
.jt2-talkn svg { flex-shrink: 0; }
.jt2-talkn--live { color: var(--jt2-link); font-weight: 800; }   /* 발매중 행 강조 (시안 1011) */
.jt2-talkn--none { color: var(--jt2-faint); font-weight: 600; }  /* 톡 수 미수집 자리표시 */

/* 날씨 칩 2색 — 건조 = 앰버 / 습윤(함수율 10%↑) = 블루, 둘 다 1px 테두리 (시안 976 · 977) */
.jt2-wx2 {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--jt2-tint-amber); border: 1px solid var(--jt2-tint-amber-bd);
  color: var(--jt2-tint-amber-tx);
  border-radius: 8px; padding: 5px 10px;
  font-size: 12px; font-weight: 600; white-space: nowrap;
}
.jt2-wx2--wet {
  background: var(--jt2-soft-blue); border-color: var(--jt2-tint-blue-bd); color: var(--jt2-link);
}
.jt2-wx2 .lv {
  font-size: 9px; font-weight: 800; letter-spacing: .05em;
  background: var(--jt2-tint-green); color: var(--jt2-tint-green-tx);
  border-radius: 4px; padding: 1px 5px;
}

/* 일정 미검증 폴백 — 배지 자리를 비우지 않는다 (시안 962 는 배지를 항상 표시) */
.jt2-verify--none { background: var(--jt2-tint-grey); color: var(--jt2-mute); }
.jt2-verify--none i { background: var(--jt2-faint); animation: none; }

/* 출주표 칸 — 마명이 0폭까지 줄지 않게.
   CTA 가 칸의 유일한 내용이면 시안 991·1021·1027 처럼 왼쪽에 붙고,
   1픽 정보 뒤에 올 때만 오른쪽 끝으로 민다. */
.jt2-sched .jt2-row > .jt2-inline > .jt2-ellipsis { min-width: 46px; }
.jt2-sched .jt2-row .jt2-cta:not(:first-child) { margin-left: auto; padding-left: 6px; }

/* 모바일 카드행 — 라이브 행은 카드 전체를 2px 파란 테두리로 (시안 1614) */
.jt2-sched .jt2-mrow--hl {
  box-sizing: border-box;
  background: var(--jt2-card); box-shadow: none;
  border: 2px solid var(--jt2-pri); border-radius: var(--jt2-r-md);
  padding: 10px 14px;
}
/* 모바일 상태 칩 · 오픈톡 축소값 (시안 1612~1619) */
.jt2-mrow .jt2-stat { width: 56px; gap: 3px; padding: 3px 0; font-size: 9px; border-radius: 5px; }
.jt2-mrow .jt2-stat--live i { width: 3px; height: 3px; }
.jt2-mrow .jt2-talkn { width: 44px; justify-content: flex-end; gap: 3px; font-size: 10px; }

/* ------------------------------------------------------------
   38. 커뮤니티 글 목록 마감 보강 (racing/community.php)
       — 시안 「커뮤니티」 L1373 / 모바일 L1816 대조 잔여분 (§31 보완)
   ------------------------------------------------------------ */
/* 마지막 데스크톱 행의 헤어라인 제거.
   글 1건마다 .jt2-row + .jt2-mrow 를 쌍으로 출력하므로 .jt2-table 의
   마지막 자식은 항상 .jt2-mrow 다 → §11 의 .jt2-row:last-child 가 절대
   매칭되지 않아 카드 하단 라운드 안쪽에 선이 걸린다.
   실제 마지막 표 행은 :nth-last-child(2) (§30 랭킹과 동일한 처방). */
.jt2-cocols .jt2-table > .jt2-row:nth-last-child(2) { border-bottom: 0; }

/* 「추천 N」 우측 강조 슬롯 — 색·크기는 §31 의 .jt2-corow .hot / .hot--on 재사용.
   .hot--na 는 데이터 소스(wr_good)가 없을 때의 빈 자리표시로,
   3열 그리드의 마지막 칸만 잡고 시각적으로는 아무것도 그리지 않는다. */
.jt2-corow .hot--na { width: 0; padding: 0; }

/* ============================================================
   ⚠ 여기부터 미디어쿼리 — 반드시 파일의 "맨 끝"에 유지할 것.
   (기본규칙이 뒤에 오면 900px 카드 전환이 덮여버리는 구버그 방지)
   ============================================================ */

/* ------------------------------------------------------------
   23. 셸 보강 — 헤더 우측 묶음 · 벨 드롭다운 · 푸터 법적표기
   ------------------------------------------------------------ */
.jt2-header-right { display: flex; align-items: center; gap: 8px; margin-left: auto; min-width: 0; }

.jt2-bell { position: relative; }
.jt2-bell-drop {
  display: none; position: absolute; right: 0; top: calc(100% + 8px); width: 320px; max-width: 78vw;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  box-shadow: 0 12px 32px rgba(15,27,45,.14); overflow: hidden; z-index: 60;
}
.jt2-bell-drop.open { display: block; }
.jt2-bell-head {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 11px 14px; border-bottom: 1px solid var(--jt2-hairline);
  font-size: 12.5px; font-weight: 800; color: var(--jt2-text);
}
.jt2-bell-head button {
  border: 1px solid var(--jt2-line-soft); background: var(--jt2-inset); color: var(--jt2-text-2);
  border-radius: 999px; padding: 4px 10px; font-size: 11px; font-weight: 700; cursor: pointer;
}
.jt2-bell-list { list-style: none; margin: 0; padding: 0; max-height: 340px; overflow-y: auto; }
.jt2-bell-list li { border-bottom: 1px solid var(--jt2-hairline-2); }
.jt2-bell-list li:last-child { border-bottom: 0; }
.jt2-bell-list a {
  display: flex; align-items: center; gap: 7px; padding: 10px 14px;
  font-size: 12.5px; color: var(--jt2-text); text-decoration: none;
}
.jt2-bell-list a:hover { background: var(--jt2-inset); text-decoration: none; }
.jt2-bell-list .tm { margin-left: auto; font-size: 11px; color: var(--jt2-mute); flex: none; }
.jt2-bell-empty { padding: 18px 14px; font-size: 12.5px; color: var(--jt2-mute); text-align: center; }

.jt2-age { color: var(--jt2-bad); font-weight: 800; margin-right: 6px; }
.jt2-footer-biz {
  margin: 10px 0 0; font-size: 11.5px; line-height: 1.75; color: var(--jt2-mute); word-break: keep-all;
}
.jt2-footer-copy { margin: 8px 0 0; font-size: 11.5px; color: var(--jt2-mute); }

.jt-dark .jt2-bell-drop { box-shadow: 0 12px 32px rgba(0,0,0,.5); }

/* ------------------------------------------------------------
   25. 리빌더 구세대 하단 크롬 비활성화 (테마 페이지 전용으로 끼어드는 것들)
       tail.php 가 전 테마 페이지에 그리는 하단 허브 — v2 셸과 역할이 겹친다:
       · 요즘 뜨는 글 스와이퍼(rb_swiper_hub) → v2 커뮤니티/속보가 대체
       · 하단 검색 패널·플로팅 검색 버튼   → v2 헤더 검색이 대체
       · 구 모바일 GNB 닫기 버튼·사이드메뉴 → v2 탭바/버거가 대체
       파일(tail.php)은 남겨두고 표시만 끈다 — 롤백은 이 블록 삭제.
   ------------------------------------------------------------ */
.rb_btm_sbbs, .rb_btm_skey, .rb_btm_search_pn, .rb_btm_search_btn,
#m_gnb_close_btn, #rb_sidemenu, .hub_latest { display: none !important; }

/* ------------------------------------------------------------
   26. 리빌더 section.index 상하 패딩 제거
       set.style.php 가 --rb-padding-top/btm 으로 메인 콘텐츠 위아래에
       큰 여백을 먹인다. v2 메인의 간격은 시안 원문(이식 마크업의
       인라인 padding:22px 20px 26px)이 정한다 — 리빌더 몫은 0.
   ------------------------------------------------------------ */
section.index { padding-top: 0 !important; padding-bottom: 0 !important; }

@media (max-width: 1180px) {
  .jt2-cols { grid-template-columns: 1fr; }
  .jt2-cocols { grid-template-columns: 1fr; }
  .jt2-split, .jt2-split--wide { grid-template-columns: 1fr; }
  .jt2-kpis { grid-template-columns: repeat(2, 1fr); }
  .jt2-betrates, .jt-betrates { grid-template-columns: repeat(3, 1fr); }
  .jt2-betrates > div, .jt-betrates > div { border-right: 0; }
  .jt2-mavg .bd, .jt-mavg .bd { grid-template-columns: repeat(4, 1fr); }
  /* 멤버십(§33) — 1단으로 접히면 내 포인트/멤버십 상태가 먼저 보이도록 */
  .jt2-cols--mem .jt2-side { order: -1; }
  /* 경기일정(§37) — 8열 그리드의 1fr 이 좁아지면 기수·배당을 접고
     시안이 매 행에 두는 「출주표 보기 →」를 남긴다 (모바일 카드행에는 그대로 남는다) */
  .jt2-sched .jt2-row .jt2-jk, .jt2-sched .jt2-row .jt2-rowodds { display: none; }
}

@media (max-width: 1024px) {
  .jt2-search { display: none; }
}

@media (max-width: 900px) {
  /* 시안 「모바일 시안」 7화면 모두 콘텐츠 좌우 여백이 18px 이고
     헤더는 8/18/10 패딩 + 28px 로고 = 48px 높이다.
     헤더 · 티커 · 본문(.jt2-main/.jt-wrap) · 푸터가 전부 --jt2-gut 을 참조하므로
     토큰 두 개로 7화면 골격이 한 번에 맞는다. */
  :root { --jt2-gut: 18px; --jt2-hd-h: 48px; }

  /* 헤더 → 버거 + 드로어 */
  .jt2-burger { display: inline-flex; }
  .jt2-nav {
    display: none; position: absolute; top: var(--jt2-hd-h); left: 0; right: 0;
    height: auto; flex-direction: column; align-items: stretch; gap: 0;
    background: var(--jt2-card); border-bottom: 1px solid var(--jt2-line);
    box-shadow: var(--jt2-sh-drop); padding: 6px 0; overflow: visible;
  }
  .jt2-nav.open { display: flex; }
  /* 드로어 링크도 터치 타깃 44px (13 + 18.2 + 13) */
  .jt2-nav a { padding: 13px 18px; border-bottom: 0; border-left: 3px solid transparent; font-size: 14px; }
  .jt2-nav a[aria-current="page"] { border-left-color: var(--jt2-pri); background: var(--jt2-hover); }
  .jt2-avatar .nm { display: none; }
  .jt2-avatar { padding: 4px; border: 0; }
  .jt2-point { padding: 0 10px; }
  .jt2-hbtn { padding: 0 10px; font-size: 12px; }

  /* 표 → 카드형 전환 */
  .jt2-thead, .jt-thead { display: none; }
  .jt2-row, .jt-row { display: none; }
  .jt2-mrow, .jt-mrow { display: block; }
  /* 예외 : horse/jockey/trainer 프로필 모달(?modal=1)은 아직 구 jt- 마크업이라
     .jt-mrow 대체행이 없다. 여기까지 숨기면 출주·기승 이력이 통째로 사라지므로
     .jt-scroll--hist 안의 표만 남겨 가로 스크롤로 본다.
     ※ 3개 상세 페이지가 jt2 로 리빌드되면 이 예외도 §31 과 함께 제거 */
  .jt-scroll--hist .jt-thead, .jt-scroll--hist .jt-row { display: grid; }
  .jt2-group { padding: 9px 16px; }

  /* 그리드 붕괴 */
  .jt2-grid2, .jt2-grid3, .jt2-grid4 { grid-template-columns: 1fr 1fr; }
  .jt2-kpi .v { font-size: 20px; }
  .jt2-card-body, .jt2-card-head { padding-left: 16px; padding-right: 16px; }
  .jt2-card--pad { padding: 16px; }
  .jt2-betrates, .jt-betrates { grid-template-columns: repeat(3, 1fr); }
  .jt2-mavg .bd, .jt-mavg .bd { grid-template-columns: repeat(2, 1fr); }
  .jt2-chart, .jt2-chart-x { gap: 6px; }
  .jt2-hero { padding: 18px 16px; }
  .jt2-hero .nm { font-size: 19px; }
  .jt2-hero .cd { font-size: 19px; }
  .jt2-ball--lg { width: 40px; height: 40px; font-size: 19px; border-radius: 12px; }
  .jt2-pagehead h1 { font-size: 20px; }
  .jt2-newshead h1 { font-size: 20px; }
  /* ── 속보 — 시안 모바일 「속보」 프레임 실측 ──
        · 제목줄 : 속보 + LIVE 배지 + 오른쪽 끝 '알림 켜기' 텍스트 링크
          (데스크톱의 44px 버튼 2~3개는 이 폭에서 두 줄을 잡아먹으므로 숨긴다)
        · 피드 : 카드 껍데기를 벗고 항목마다 독립 카드(gap 8) — .jt2-newsrow → .jt2-newsmrow */
  .jt2-newslive { display: inline-flex; }
  .jt2-newsmacts { display: flex; }
  .jt2-pagehead--news .tit { width: 100%; }
  .jt2-pagehead--news .right.jt2-newsacts { display: none; }
  .jt2-newsfeed {
    background: transparent; border: 0; border-radius: 0; overflow: visible;
    display: flex; flex-direction: column; gap: 8px;
  }
  .jt2-newsfeed .jt2-group { background: transparent; border: 0; padding: 4px 2px 0; }
  .jt2-newsfeed .jt2-group + .jt2-group,
  .jt2-newsfeed .jt2-newsrow + .jt2-group,
  .jt2-newsfeed .jt2-newsmrow + .jt2-group { border-top: 0; }
  .jt2-newsfeed .jt2-empty {
    background: var(--jt2-card); border: 1px solid var(--jt2-line);
    border-radius: var(--jt2-r-md); padding: 36px 18px;
  }
  .jt2-newsrow { display: none; }
  .jt2-newsmrow { display: block; }
  /* 커뮤니티 — 사이드 카드 패딩은 본문 카드와 같은 16 으로 */
  .jt2-card--side > .jt2-card-head,
  .jt2-card--side > .jt2-card-body,
  .jt2-card--side > .jt2-card-foot { padding-left: 16px; padding-right: 16px; }
  /* 경주 상세 — 출마표는 .jt2-mrow 로 교체되므로 min-width 해제 */
  .jt2-entry { min-width: 0; }

  /* ── 픽 카드 위계 (시안 모바일 @1697~1715)
     1픽은 폭 전체를 쓰는 대형 카드, 2·3픽은 2열 축약 카드 ── */
  .jt2-pickcards { grid-template-columns: 1fr 1fr; gap: 8px; }
  .jt2-pickcard--1 { grid-column: 1 / -1; padding: 14px; border-radius: 15px; }
  .jt2-pickcard--1 .bdg { top: -8px; left: 13px; font-size: 9px; padding: 2px 7px; border-radius: 5px; }
  .jt2-pickcard--1 .hd { gap: 10px; }
  .jt2-pickcard--1 .no { width: 36px; height: 36px; border-radius: 11px; font-size: 16px; }
  .jt2-pickcard--1 .nm { font-size: 14.5px; }
  .jt2-pickcard--1 .sub { font-size: 10.5px; }
  .jt2-pickcard--1 .od .l { font-size: 9.5px; }
  .jt2-pickcard--1 .od .v { font-size: 15px; }
  .jt2-pickcard--1 .cf { margin-top: 10px; gap: 7px; }
  .jt2-pickcard--1 .cf .jt2-bar { height: 6px; }
  .jt2-pickcard--1 .cf .n { font-size: 10.5px; }
  /* 2·3픽 = 라벨 + 게이트 + 마명 + 단승만 (신뢰도 바·마방 줄 없음) */
  .jt2-pickcard:not(.jt2-pickcard--1) { padding: 11px 12px; border-radius: var(--jt2-r-md); }
  .jt2-pickcard:not(.jt2-pickcard--1) .bdg {
    position: static; display: block; padding: 0; border-radius: 0;
    background: transparent; color: var(--jt2-mute); font-size: 9.5px; letter-spacing: 0;
  }
  .jt2-pickcard:not(.jt2-pickcard--1) .hd { gap: 7px; margin-top: 6px; }
  .jt2-pickcard:not(.jt2-pickcard--1) .no {
    width: 24px; height: 24px; border-radius: 8px; font-size: 11px;
  }
  .jt2-pickcard:not(.jt2-pickcard--1) .nm { font-size: 12.5px; }
  .jt2-pickcard:not(.jt2-pickcard--1) .sub,
  .jt2-pickcard:not(.jt2-pickcard--1) .od .l,
  .jt2-pickcard:not(.jt2-pickcard--1) .cf { display: none; }
  .jt2-pickcard:not(.jt2-pickcard--1) .od .v { font-size: 11px; font-weight: 700; color: var(--jt2-text-2); }

  /* ── 승식 가이드 인라인 칩 줄 (시안 모바일 @1716~1721) ── */
  .jt2-betchips {
    display: flex; align-items: center; flex-wrap: wrap; gap: 5px; padding: 11px 12px;
  }
  .jt2-betchips .l { font-size: 10.5px; font-weight: 800; color: var(--jt2-text-2); margin-right: 2px; }

  /* ── 출마표 모바일 열 라벨 + 카드행 4열 정렬 (시안 모바일 @1723~) ── */
  .jt2-mhead {
    display: grid; grid-template-columns: 34px 1fr 44px 52px;
    column-gap: 8px; align-items: center; padding: 9px 16px;
    font-size: 9.5px; font-weight: 700; color: var(--jt2-mute);
    border-bottom: 1px solid var(--jt2-hairline);
  }
  .jt2-mrow--entry .top {
    display: grid; grid-template-columns: 34px 1fr 44px 52px;
    column-gap: 8px; align-items: center;
  }
  .jt2-mrow--entry .top > * { min-width: 0; }
  .jt2-mrow--entry .bot { gap: 6px; }

  /* ── 오픈톡 — 좌우 여백을 카드 본문(16)과 맞추고 버블 폭을 조금 넓힌다 ── */
  .jt2-talk { padding-left: 16px; padding-right: 16px; }
  .jt2-talk-bubble, .jt2-talk-photo { max-width: 78%; }
  .jt2-talk-auto { font-size: 11px; }
  .jt2-talk-bar { padding-left: 12px; padding-right: 12px; gap: 7px; }
  .jt2-talk-send { padding: 9px 13px; }

  /* 하단 탭바 표시 + 본문 여백 확보
     (탭바 실측 높이 = 상단선 1 + 패딩 10 + 아이템 44 + 패딩 10 = 65 → 68 로 여유 확보.
      64 였을 때 푸터 법적표기 마지막 줄이 탭바에 가려졌다) */
  .jt2-tabbar { display: flex; }
  body { padding-bottom: calc(68px + env(safe-area-inset-bottom, 0px)); }
  .jt2-footer { margin-bottom: 0; }

  /* 티커 우측 링크는 접기 */
  .jt2-ticker-more { display: none; }

  /* ==========================================================
     모바일 시안 실측 반영 — 시안 「모바일 시안」 아트보드(402px 프레임)
     메인 / 경기일정 / 커뮤니티 / 마추예측 / 오늘의 경주 /
     경주 상세 / 속보 7화면의 공통 골격을 여기에 맞춘다.
     ========================================================== */

  /* ── 헤더 축약 — 시안: 로고 28(r9) · 브랜드 16px · 아이템 간격 8 ── */
  .jt2-header-in { gap: 8px; }
  /* ── 헤더 좌우 정렬 — 티커·본문 카드·푸터와 같은 18px 선에 맞춘다.
     버거/프로필은 테두리가 0.67px #E7EDF6(사실상 안 보임)이라 박스는 18px 에 맞아도
     '눈에 보이는 아이콘'은 9px 더 안쪽에 찍혀 헤더만 여백이 넓어 보였다.
     보이지 않는 안쪽 여백만큼 바깥으로 당겨 잉크 기준선을 통일. ── */
  .jt2-burger { margin-left: -9px; }
  .jt2-prof-btn { margin-right: -9px; }
  /* 로그아웃 상태의 우측 끝은 배경이 채워진 버튼(회원가입)이라 박스 자체가
     시각 경계다 — 그대로 18px 유지 (당기지 않는다). */
  .jt2-logo { gap: 8px; min-width: 0; }
  .jt2-logo .bi { width: 28px; height: 28px; border-radius: 9px; font-size: 13px; }
  .jt2-logo .bt { font-size: 16px; overflow: hidden; text-overflow: ellipsis; }
  .jt2-header-right { gap: 6px; }
  /* 시안 모바일 헤더 우측은 아이콘 1개뿐이다 — 포인트 칩은 월렛/멤버십 화면이 담당.
     (로그인 상태 헤더가 360px 뷰포트를 넘겨 가로 스크롤을 만들던 원인) */
  .jt2-point { display: none; }

  /* ── 터치 타깃 — 시안 크기(28~36px)는 유지하고 히트영역만 44px 로 넓힌다 ── */
  .jt2-burger, .jt2-avatar, .jt2-hbtn, .jt2-switch { position: relative; }
  .jt2-iconbtn::after, .jt2-burger::after, .jt2-hbtn::after {
    content: ''; position: absolute; top: -4px; right: -2px; bottom: -4px; left: -2px;
  }
  .jt2-avatar::after {
    content: ''; position: absolute; top: -5px; right: 0; bottom: -5px; left: 0;
  }
  .jt2-switch::after {
    content: ''; position: absolute; top: 50%; left: 50%;
    width: 44px; height: 44px; transform: translate(-50%, -50%);
  }

  /* ── 하단 탭바 — 시안: 흰 배경 · 상단선 · padding 10/18/30 ·
        아이콘 20 · 라벨 9.5px · gap 3 · 5칸(홈/경주/마추예측/랭킹/더보기).
        10 + 44 + 10 = 64 로 위의 body padding-bottom 64 와 정확히 맞물린다. ── */
  /* 좌우 여백은 본문 거터(18px)를 쓰지 않는다 — 5칸 균등 분할이라 거터만큼
     양끝 항목이 안쪽으로 더 밀려 보인다. 폭을 최대한 칸에 돌려준다. */
  .jt2-tabbar { padding: 10px 2px calc(10px + env(safe-area-inset-bottom, 0px)); }
  .jt2-tabbar a { min-height: 48px; justify-content: center; font-size: 13.5px; font-weight: 700; }
  .jt2-tabbar a span { white-space: nowrap; letter-spacing: -.02em; }
  .jt2-tabbar a[aria-current="page"] { font-weight: 800; }

  /* ── 티커 — 시안: padding 7/11 · 본문 10px · LIVE 태그 8.5px ── */
  .jt2-ticker-in { gap: 8px; padding: 7px var(--jt2-gut); font-size: 11.5px; }
  .jt2-ticker-tag { font-size: 9.5px; padding: 2px 6px; }
  .jt2-ticker-track { gap: 28px; }
  .jt2-ticker-item .d { font-size: 10.5px; }

  /* ── 개최일 필 — 시안 모바일은 데스크톱의 2단(요일 위/날짜 아래)이 아니라
        「금 8.14」 한 줄이고, 가로를 등분해 꽉 채운다 (r10 · 12px/700 · 가운데) ── */
  .jt2-pagehead .right { margin-left: 0; width: 100%; }
  .jt2-days { flex: 1 1 100%; gap: 6px; }
  .jt2-day {
    flex: 1 1 88px; flex-direction: row; gap: 5px;
    justify-content: center; min-height: 44px; box-sizing: border-box;
    padding: 6px 8px; border-radius: 10px;
  }
  .jt2-day .w, .jt2-day .d { font-size: 12px; font-weight: 700; }

  /* ── 세그먼트 · 필터칩 — 칸이 늘어도 넘치지 않게 가로 스크롤, 컨트롤 높이 44(3+38+3) ── */
  .jt2-seg { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .jt2-seg::-webkit-scrollbar { display: none; }
  .jt2-seg > a, .jt2-seg > button, .jt2-seg > span,
  .jt2-seg--sm > a, .jt2-seg--sm > button, .jt2-seg--sm > span {
    display: inline-flex; align-items: center; min-height: 38px; padding: 0 14px;
  }
  .jt2-newschip, .jt2-setbtn { box-sizing: border-box; min-height: 38px; }

  /* ── 버튼 — 시안 모바일 CTA: r12~13 · 13px/800 · 높이 44 ── */
  .jt2-btn { height: 44px; font-size: 13px; border-radius: 12px; }
  .jt2-btn--sm { height: 36px; font-size: 12px; border-radius: 10px; }
  .jt2-btn--lg { height: 48px; }
  .jt2-pager a, .jt2-pager strong { min-width: 40px; height: 40px; }

  /* ── 폼 — iOS Safari 는 16px 미만 입력에 포커스하면 화면 전체를 확대한다.
        (.jt2-betin input 은 §33 이 14px 로 덮으므로 같은 특이도로 다시 지정) ── */
  input.jt2-in, textarea.jt2-in, select.jt2-sel, select.jt2-setpick,
  .jt2-betin input.jt2-in { font-size: 16px; }
  input.jt2-in, select.jt2-sel { height: 44px; }
  select.jt2-setpick { padding-top: 8px; padding-bottom: 8px; }
  .jt2-betin, .jt2-betin input.jt2-in { width: 100%; }
  .jt2-calcbar { gap: 12px; }
  .jt2-calcbar .grp, .jt2-calcbar .grp--desc { margin-left: 0; max-width: none; width: 100%; }

  /* ── auto-fit 그리드 — 최소폭(320)이 뷰포트를 넘겨 가로 스크롤을 만들지 않도록 1열 고정 ── */
  .jt2-aigrid, .jt2-setgrid, .jt2-mavgs { grid-template-columns: 1fr; }
  .jt2-setgate { max-width: none; }

  /* ── §28 마추예측(racing/ai.php) — 시안 모바일 실측 ──
     시안 v2.html:1837 은 모바일에서도 모델 상태 3연을 1fr 1fr 1fr 로 유지한다.
     .jt2-grid3 붕괴 규칙(위 '그리드 붕괴')보다 뒤에 와야 3열이 살아남는다. */
  .jt2-grid3--keep3 { grid-template-columns: 1fr 1fr 1fr; gap: 6px; }
  .jt2-grid3--keep3 .jt2-kpi { padding: 9px 10px; border-radius: 11px; }
  .jt2-grid3--keep3 .jt2-kpi .l { font-size: 9px; }
  .jt2-grid3--keep3 .jt2-kpi .v,
  .jt2-grid3--keep3 .jt2-kpi--sm .v { font-size: 14px; margin-top: 2px; }
  .jt2-grid3--keep3 .jt2-kpi .v small { font-size: 9px; }
  .jt2-grid3--keep3 .jt2-kpi .d { display: none; }   /* 시안 모바일 타일은 라벨+값 2줄 */
  /* 3연 구성 교체 — 마지막 학습(데스크톱) ↔ 자동 학습(모바일) */
  .jt2-kpi--donly { display: none; }
  .jt2-kpi--monly { display: block; }
  /* 마지막 학습 시각은 타이틀 줄 우측 메타로 (시안 v2.html:1834) */
  .jt2-headmeta { display: block; }
  /* 하단 고지 — 점선 박스 → 중앙정렬 캡션 (시안 v2.html:1864) */
  .jt2-ainote { display: none; }
  .jt2-mnote { display: block; }

  /* ── 모달 · 벨 드롭다운 — 좁은 화면 여백 축소 + 닫기 버튼 터치 크기 ── */
  .jt-ov { padding: 12px; }
  .jt-modal { margin: 2vh auto; max-height: 92vh; padding: 18px 16px; }
  .jt-modal-x { width: 40px; height: 40px; top: 10px; right: 10px; }
  .jt-bell-drop { max-width: calc(100vw - 24px); }
}

@media (max-width: 640px) {
  .jt2-grid3, .jt2-grid4 { grid-template-columns: 1fr 1fr; }
  /* §28 모델 상태 3연은 360px 급에서도 3열 유지 (시안 v2.html:1837) */
  .jt2-grid3--keep3 { grid-template-columns: 1fr 1fr 1fr; }
  .jt2-kpis { grid-template-columns: 1fr 1fr; gap: 8px; }
  /* 필은 900px 블록에서 이미 flex:1 로 폭을 등분한다 — 여기서는 최소폭만 더 줄인다 */
  .jt2-day { flex-basis: 72px; padding-left: 4px; padding-right: 4px; }
  .jt2-pagehead .right { margin-left: 0; width: 100%; }
  /* 360px 급 화면에서 헤더가 넘치지 않도록 화면모드 토글은 접는다.
     (racing/settings.php 의 #jtSetTheme 스위치가 같은 'jt2-theme' 키를 공유한다) */
  #jtTheme { display: none; }
  /* 시안 모바일 탭바 라벨 — '마추예측' 5글자가 5등분 칸에 들어가야 한다 */
  /* ⚠ 여기서 9px 로 줄이던 규칙이 ≤900 의 확대(11.5px)를 덮어써서
     실기기(≤640px)에서만 글자가 안 보였다 — 라벨은 키우고 폭은 gap 으로 확보한다 */
  .jt2-tabbar a { font-size: 13px; gap: 2px; }
  .jt2-tabbar a svg { width: 24px; height: 24px; }
  .jt-modal, .jt2-card--pad { padding: 16px 14px; }
  /* 속보 — 900px 블록에서 이미 카드행(.jt2-newsmrow)으로 전환됐다.
     360px 급에서는 카드 좌우 여백만 한 단계 더 줄인다. */
  .jt2-pagehead .right.jt2-newsacts { gap: 8px; }
  .jt2-newsmrow { padding: 11px 12px; }
  .jt2-newsmrow .t { font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .jt2-ticker-track { animation: none; }
  .jt2-tag--live i, .jt2-live-dot, .jt2-ticker-tag i { animation: none; }
  .jt2-stat--live i, .jt2-verify i { animation: none; }
  .jt2-main, .jt2-fadeup { animation: none; }
}

/* ============================================================
   99. 최종 오버라이드 — 반드시 파일 맨 끝 유지 (파싱 안전지대)
   리빌더가 페이지 바깥에서 덧씌우는 것들의 무력화 모음.
   ============================================================ */
main#main[class*="co_"], main#main { background: var(--jt2-bg) !important; }
#contents_wrap { padding-top: 0 !important; }
section.index { padding-top: 0 !important; padding-bottom: 0 !important; }
.rb_btm_sbbs, .rb_btm_skey, .rb_btm_search_pn, .rb_btm_search_btn,
#m_gnb_close_btn, #rb_sidemenu, .hub_latest { display: none !important; }

/* 리빌더 고정폭(--rb-main-width) 무력화 — 모바일에서 section.index 가
   1160px 고정으로 남아 본문이 우측으로 밀리던 문제. v2 폭은 콘텐츠가 정한다. */
section.index, .index { width: 100% !important; max-width: 100% !important; }
main#main { overflow-x: clip; }

/* ============================================================
   100. 모달 폴리시 — 프로필 팝업이 본문과 '따로 노는' 문제
   (프래그먼트는 구 jt- 마크업 — 셸/타이포를 v2 톤으로 눌러 맞춘다)
   ============================================================ */
.jt-ov { backdrop-filter: blur(2px); }
.jt-modal { max-width: 520px; padding: 20px 20px 18px; border-radius: 18px; }
.jt-modal-x { width: 34px; height: 34px; border-radius: 10px; font-size: 15px; }
.jt-modal-x:hover { background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx); }
.jt-modal-frag { font-size: 13px; line-height: 1.6; color: var(--jt2-text); }
.jt-modal-frag .jt-card { border: 0; border-radius: 0; background: transparent; }
.jt-modal-frag .jt-card-head { padding: 0 0 12px; border-bottom: 1px solid var(--jt2-hairline); font-size: 16px; }
.jt-modal-frag .jt-card-body { padding: 14px 0 0; }
.jt-modal-frag .jt-empty { padding: 34px 10px; text-align: center; color: var(--jt2-mute); font-size: 13px; }
.jt-modal-frag .jt-empty .ic { display: block; font-size: 30px; margin-bottom: 8px; }
.jt-modal-frag table, .jt-modal-frag .jt-row, .jt-modal-frag .jt-mrow { font-size: 12.5px; }
.jt-modal-frag a { color: var(--jt2-link); }
.jt-modal-frag h1, .jt-modal-frag h2, .jt-modal-frag h3 { font-size: 16px; margin: 0 0 8px; }

/* 구절 유틸 — 문장 중간이 아니라 구절 사이에서만 줄바꿈 (과부 단어 방지) */
.jt2-phrase { white-space: nowrap; }

/* ============================================================
   101. 모바일 타이포 업스케일 — 사용자 지시: 전체 폰트 한 단계 크게
   (시안 축소 수치가 실기기에서 작게 읽힘 → ≤900px 에서 +0.5~1px 티어 업)
   ⚠ 이 블록은 반드시 파일 최하단 미디어쿼리 구역에 유지.
   ============================================================ */
@media (max-width: 900px) {
  /* 2차 확대 (사용자 지시) — 실기기에서 여전히 작아 한 단계 더 올린다 */
  body { font-size: 16px; }
  .jt2-pagehead h1 { font-size: 25px; }
  .jt2-pagehead .sub { font-size: 14.5px; }
  .jt2-card-head .t { font-size: 18px; }
  .jt2-card-head .d { font-size: 14px; }
  .jt2-card-head .more, .jt2-more { font-size: 14px; }
  .jt2-chip { font-size: 13.5px; }
  .jt2-tag, .jt-tag { font-size: 13px; }
  .jt2-kpi .l { font-size: 13.5px; }
  .jt2-kpi .v { font-size: 27px; }
  .jt2-kpi .d { font-size: 13px; }
  .jt2-row, .jt2-mrow, .jt-mrow { font-size: 15.5px; }
  .jt2-mrow .bot, .jt-mrow .bot { font-size: 14px; }
  .jt2-thead { font-size: 13.5px; }
  .jt2-note, .jt-note { font-size: 14px; }
  .jt2-day { font-size: 14px; }
  .jt2-ticker-item { font-size: 14.5px; }
  .jt2-ticker-item .d { font-size: 13.5px; }
  .jt2-bell-list a { font-size: 14.5px; }
  .jt2-empty, .jt2-empty div { font-size: 14px; }
  .jt2-mute, .jt2-hint { font-size: 13.5px; }
  .jt2-btn { font-size: 15.5px; }
  .jt2-btn--sm { font-size: 14px; }
  .jt2-seg button, .jt2-filters button { font-size: 14px; }
  .jt2-nav a { font-size: 15.5px; }
  .jt2-hbtn { font-size: 14px; }
  .jt2-sechead > span:first-of-type { font-size: 17.5px; }
  .jt2-sechead .d, .jt2-sechead > span + span { font-size: 13.5px; }
  .jt2-betrates .l, .jt-betrates .l { font-size: 13px; }
  .jt2-betrates .v, .jt-betrates .v { font-size: 20.5px; }
  .jt2-footer-legal, .jt2-footer-biz, .jt2-footer-copy { font-size: 13.5px; }
  .jt2-footer-cols .col b { font-size: 14px; }
  .jt2-footer-cols .col a { font-size: 14px; }
  .jt2-footer-top .brand .ds { font-size: 14px; }
  /* 푸터 — 세로 스택 + 링크 2열 */
  .jt2-footer-in { padding-top: 26px; padding-bottom: 22px; }
  .jt2-footer-top { grid-template-columns: 1fr; gap: 24px; }
  .jt2-footer-cols { grid-template-columns: repeat(2, 1fr); gap: 18px 14px; }
  .jt2-footer-bot .row { flex-direction: column; gap: 5px; }
  .jt2-footer-bot .src { margin-left: 0; }
  /* 메인(v2m)은 인라인 px — 대표 소형 사이즈만 한 단계 업 */
  .v2m [style*="font-size:9.5px"]  { font-size: 12px !important; }
  .v2m [style*="font-size:10.5px"] { font-size: 13px !important; }
  .v2m [style*="font-size:11px"]   { font-size: 13.5px !important; }
  .v2m [style*="font-size:11.5px"] { font-size: 14px !important; }
  .v2m [style*="font-size:12px"]   { font-size: 14.5px !important; }
  .v2m [style*="font-size:12.5px"] { font-size: 15px !important; }
  .v2m [style*="font-size:13px"]   { font-size: 15.5px !important; }
  .v2m [style*="font-size:13.5px"] { font-size: 16px !important; }
  .v2m [style*="font-size:14px"]   { font-size: 16.5px !important; }
  .v2m [style*="font-size:15.5px"] { font-size: 18px !important; }
  .v2m [style*="font-size:16px"]   { font-size: 18.5px !important; }
  .v2m [style*="font-size:21px"]   { font-size: 23px !important; }
}

/* ============================================================
   102. 한글 제목·라벨 줄바꿈 보호
   좁은 폭에서 "23요소 구​성", "오늘의 화이​바픽", 알약 "일·오​늘"처럼
   단어 한가운데가 꺾이던 문제. 제목은 통째로 지키고,
   줄바꿈이 필요하면 제목과 설명 '사이'에서만 일어나게 한다.
   ============================================================ */
h1, h2, h3, .jt2-card-head .t, .jt2-pagehead h1 { word-break: keep-all; }
.jt2-sechead { flex-wrap: wrap; }
.jt2-sechead > span:first-of-type { white-space: nowrap; flex: none; }
.jt2-card-head .t { white-space: nowrap; flex: none; }
.jt2-day, .jt2-day * { white-space: nowrap; }

@media (max-width: 900px) {
  /* 개최일 알약: 구겨 넣지 말고 가로 스크롤 (시안 모바일 패턴) */
  .jt2-days { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
              scrollbar-width: none; padding-bottom: 2px; }
  .jt2-days::-webkit-scrollbar { display: none; }
  .jt2-day { flex: none; }
}

/* ============================================================
   103. 적중 마크 — 원장 '적중 승식' 셀
   시안 색 체계: 적중 = 빨강 (초록은 발매중 전용).
   [적중] 마크 배지 + 적중한 승식명 칩 나열.
   ============================================================ */
.jt2-hitmarks { align-items: center; }
.jt2-hitmarks .mk {
  background: var(--jt2-bad); color: #FFFFFF;
  font-size: 10.5px; font-weight: 800; border-radius: var(--jt2-r-xs);
  padding: 3px 8px; white-space: nowrap; letter-spacing: .02em;
}
/* 승식명 칩은 기존 초록틴트 그대로 (사용자 지정: 마크만 빨강) */

/* ============================================================
   104. 오픈톡 활성화 — 저장소 연결 후 추가 UI
   (스크롤 채팅창 · 관리자 삭제 · 이모티콘 팔레트)
   ============================================================ */
.jt2-talk { max-height: 430px; overflow-y: auto; overscroll-behavior: contain; }
/* 해시 이동 시 상단 고정 헤더·티커에 가리지 않도록 */
#jtTalkSec, #jtVod, #jtTalk { scroll-margin-top: 104px; }
.jt2-talk-del {
  flex: none; width: 20px; height: 20px; border: 0; border-radius: 6px;
  background: transparent; color: var(--jt2-faint); font-size: 11px;
  cursor: pointer; line-height: 1; padding: 0;
}
.jt2-talk-del:hover { background: var(--jt2-tint-red); color: var(--jt2-tint-red-tx); }
.jt2-talk-bar { position: relative; }
.jt2-talk-emopop {
  position: absolute; left: 12px; bottom: calc(100% + 6px); z-index: 40;
  display: flex; flex-wrap: wrap; gap: 2px; width: 208px; padding: 8px;
  background: var(--jt2-card); border: 1px solid var(--jt2-line);
  border-radius: 12px; box-shadow: 0 10px 26px rgba(14, 27, 44, .14);
}
.jt2-talk-emopop[hidden] { display: none; }
.jt2-talk-emopop button {
  width: 36px; height: 34px; border: 0; border-radius: 8px;
  background: transparent; font-size: 19px; line-height: 1; cursor: pointer; padding: 0;
}
.jt2-talk-emopop button:hover { background: var(--jt2-inset); }

/* ============================================================
   105. 경주 다시보기 (KRA 스타플레이어 VOD) + 재배치 후처리
   ============================================================ */
.jt2-vodbox {
  position: relative; aspect-ratio: 16 / 9; background: #0B1526;
  border-radius: 0 0 var(--jt2-r-lg) var(--jt2-r-lg); overflow: hidden;
}
.jt2-vodbox iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.jt2-vodplay {
  position: absolute; inset: 0; width: 100%; height: 100%; border: 0; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  background: radial-gradient(520px 300px at 50% 42%, rgba(37, 99, 235, .35), transparent 70%), #0B1526;
  color: #EAF0FB; font-family: inherit;
}
.jt2-vodplay i {
  width: 58px; height: 58px; border-radius: 50%; background: var(--jt2-pri); color: #FFF;
  display: flex; align-items: center; justify-content: center;
  font-size: 21px; font-style: normal; padding-left: 4px;
  box-shadow: 0 10px 26px rgba(37, 99, 235, .45); transition: transform .13s;
}
.jt2-vodplay:hover i { transform: scale(1.07); }
.jt2-vodplay span { font-size: 14.5px; font-weight: 800; }
.jt2-vodplay small { font-size: 11.5px; color: #A9B8D6; font-weight: 600; }
/* 오늘의 경주 · 다시보기 칩 목록 */
.jt2-vodchips { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 20px; }
.jt2-vodchips a {
  display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--jt2-line); border-radius: 999px; padding: 7px 13px;
  font-size: 12.5px; font-weight: 700; color: var(--jt2-text);
  text-decoration: none; white-space: nowrap;
}
.jt2-vodchips a:hover { border-color: var(--jt2-pri); color: var(--jt2-pri); }
.jt2-vodchips a i {
  width: 18px; height: 18px; border-radius: 50%; flex: none;
  background: var(--jt2-bad); color: #FFF; font-size: 9px; font-style: normal;
  display: inline-flex; align-items: center; justify-content: center; padding-left: 1px;
}

/* ============================================================
   106. 로고 이미지 — 마추 공식 로고 (라이트=잉크 / 다크=흰색 스왑)
   크기·기본표시는 마크업 인라인이 담당 — 여기선 다크 스왑만 !important 로 뒤집는다
   ============================================================ */
body.jt-dark .jt2-logo .lg--ink { display: none !important; }
body.jt-dark .jt2-logo .lg--w { display: block !important; }

/* ============================================================
   107. 통합 프로필 (헤더) — 아바타 + 닉네임 + 포인트 알약 → 드롭다운
   (기존 포인트칩 · 아바타 · 로그아웃 · 관리자 기어를 하나로 묶는다)
   ============================================================ */
.jt2-prof { position: relative; flex-shrink: 0; }
.jt2-prof-btn {
  display: inline-flex; align-items: center; gap: 7px; height: 36px;
  padding: 0 10px 0 4px; border-radius: 999px;
  border: 1px solid var(--jt2-line-soft); background: var(--jt2-card);
  cursor: pointer; font-family: inherit; color: var(--jt2-text);
}
.jt2-prof-btn:hover { background: var(--jt2-hover); }
.jt2-prof-btn .av {
  width: 28px; height: 28px; border-radius: 50%; background: var(--jt2-pri); color: #FFF;
  font-size: 13px; font-weight: 800; display: flex; align-items: center; justify-content: center; flex: none;
}
.jt2-prof-btn .nm { font-size: 13px; font-weight: 800; max-width: 88px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt2-prof-btn .pt {
  font-size: 11.5px; font-weight: 800; white-space: nowrap;
  color: var(--jt2-tint-blue-tx); background: var(--jt2-tint-blue);
  border-radius: 999px; padding: 3px 8px;
}
.jt2-prof-btn .cv { color: var(--jt2-mute); transition: transform .15s; flex: none; }
.jt2-prof.open .jt2-prof-btn .cv { transform: rotate(180deg); }
.jt2-prof-drop {
  position: absolute; right: 0; top: calc(100% + 8px); width: 234px; z-index: 80;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: 14px;
  box-shadow: 0 14px 34px rgba(14, 27, 44, .14); padding: 8px; display: none;
}
.jt2-prof.open .jt2-prof-drop { display: block; }
@media (hover: hover) { .jt2-prof:hover .jt2-prof-drop { display: block; } }
.jt2-prof-drop .hd { padding: 10px 12px 12px; border-bottom: 1px solid var(--jt2-hairline); margin-bottom: 6px; }
.jt2-prof-drop .who { display: flex; align-items: baseline; gap: 7px; min-width: 0; }
.jt2-prof-drop .who b { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jt2-prof-drop .who span { font-size: 11.5px; color: var(--jt2-mute); flex: none; }
.jt2-prof-drop .pp { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 12px; font-weight: 600; color: var(--jt2-text-2); }
.jt2-prof-drop .pp b { color: var(--jt2-tint-blue-tx); }
.jt2-prof-drop .pp a { margin-left: auto; font-size: 11.5px; font-weight: 800; color: var(--jt2-link); text-decoration: none; }
.jt2-prof-drop > a { display: flex; align-items: center; padding: 9px 12px; border-radius: 9px; font-size: 13px; font-weight: 700; color: var(--jt2-text-2); text-decoration: none; }
.jt2-prof-drop > a:hover { background: var(--jt2-inset); color: var(--jt2-text); text-decoration: none; }
.jt2-prof-drop .sep { height: 1px; background: var(--jt2-hairline); margin: 6px 4px; }
.jt2-prof-drop a.out { color: var(--jt2-bad); }
.jt2-prof-drop a.out:hover { background: var(--jt2-tint-red); color: var(--jt2-tint-red-tx); }

/* ============================================================
   109. 검색 아이콘 → 펼침 검색바 (상시 노출 검색창 대체)
   ============================================================ */
.jt2-schwrap { position: relative; flex-shrink: 0; }
.jt2-sch-drop {
  position: absolute; right: 0; top: calc(100% + 8px); width: 300px; z-index: 80;
  background: var(--jt2-card); border: 1px solid var(--jt2-line); border-radius: 14px;
  box-shadow: 0 14px 34px rgba(14, 27, 44, .14); padding: 10px; display: none;
}
.jt2-schwrap.open .jt2-sch-drop { display: block; }
.jt2-sch-drop form { display: flex; gap: 8px; margin: 0; }
.jt2-sch-drop input[type=text] {
  flex: 1; min-width: 0; height: 38px; border: 1.5px solid var(--jt2-line-soft);
  background: var(--jt2-inset); border-radius: 10px; padding: 0 12px;
  font-family: inherit; font-size: 13px; font-weight: 600; color: var(--jt2-text); outline: 0;
}
.jt2-sch-drop input[type=text]:focus { border-color: var(--jt2-pri); background: var(--jt2-card); }
.jt2-sch-drop button[type=submit] {
  flex: none; height: 38px; padding: 0 14px; border: 0; border-radius: 10px; cursor: pointer;
  background: var(--jt2-pri); color: #FFF; font-family: inherit; font-size: 12.5px; font-weight: 800;
}
@media (max-width: 900px) { .jt2-sch-drop { width: 252px; right: -44px; } }

/* ============================================================
   108. 경마 아카데미 (racing/academy.php) — 초보 입문 가이드
   ============================================================ */
.jt2-filters a.jt2-chip { text-decoration: none; cursor: pointer; }

/* ── 히어로 ── */
.jt2-acad-hero {
  position: relative; overflow: hidden; border-radius: var(--jt2-r-lg);
  padding: 34px 32px 30px; color: #EAF0FB;
  background:
    radial-gradient(760px 420px at 88% -20%, rgba(37, 99, 235, .55), transparent 62%),
    radial-gradient(620px 400px at -10% 120%, rgba(37, 99, 235, .30), transparent 58%),
    linear-gradient(152deg, #0B1526 0%, #101F3C 55%, #15294E 100%);
}
.jt2-acad-hero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size: 42px 42px;
  -webkit-mask-image: radial-gradient(620px 400px at 26% 40%, #000 26%, transparent 76%);
          mask-image: radial-gradient(620px 400px at 26% 40%, #000 26%, transparent 76%);
}
.jt2-acad-hero .in { position: relative; z-index: 1; }
.jt2-acad-hero .kicker {
  display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: .14em;
  color: #8FB2FF; background: rgba(37, 99, 235, .22); border-radius: 999px; padding: 5px 11px;
}
.jt2-acad-hero h1 {
  margin: 14px 0 10px; font-size: 30px; line-height: 1.3; font-weight: 800;
  letter-spacing: -.03em; color: #FFFFFF; word-break: keep-all;
}
.jt2-acad-hero p { margin: 0 0 20px; font-size: 14px; line-height: 1.7; color: #A9B8D6; word-break: keep-all; }
.jt2-acad-hero .chips { display: flex; flex-wrap: wrap; gap: 7px; }
.jt2-acad-hero .chips a {
  font-size: 12.5px; font-weight: 700; color: #D5DFF2; text-decoration: none;
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14);
  border-radius: 999px; padding: 7px 13px; transition: background .13s, color .13s;
}
.jt2-acad-hero .chips a:hover { background: var(--jt2-pri); color: #FFFFFF; border-color: transparent; }

/* ── 공통 소제목 · 안내 ── */
.jt2-acad-h3 {
  display: flex; align-items: center; gap: 9px; margin: 26px 0 13px;
  font-size: 15.5px; font-weight: 800; color: var(--jt2-text);
}
.jt2-acad-h3::before { content: ""; width: 4px; height: 15px; border-radius: 2px; background: var(--jt2-pri); }
.jt2-acad-note {
  background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  border-radius: var(--jt2-r); padding: 11px 14px; font-size: 12.5px;
  font-weight: 600; line-height: 1.6; margin-bottom: 16px; word-break: keep-all;
}
.jt2-acad-warn {
  display: flex; gap: 11px; align-items: flex-start; margin-bottom: 18px;
  background: var(--jt2-tint-red); border-radius: var(--jt2-r);
  padding: 13px 15px; font-size: 12.5px; line-height: 1.65; color: var(--jt2-tint-red-tx);
  word-break: keep-all;
}
.jt2-acad-warn .ic { font-size: 15px; line-height: 1.3; flex: none; }

/* ── 승식 카드 ── */
.jt2-acad-bets { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.jt2-acad-bets .bet {
  border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  padding: 15px 17px; min-width: 0; background: var(--jt2-card);
  transition: border-color .13s, box-shadow .13s, transform .13s;
}
.jt2-acad-bets .bet:hover {
  border-color: var(--jt2-pri); transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(37, 99, 235, .10);
}
.jt2-acad-bets .hd { display: flex; align-items: center; gap: 8px; }
.jt2-acad-bets .no {
  width: 22px; height: 22px; border-radius: 7px; flex: none;
  background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx);
  display: flex; align-items: center; justify-content: center; font-size: 11.5px; font-weight: 800;
}
.jt2-acad-bets .hd b { font-size: 16.5px; letter-spacing: -.02em; }
.jt2-acad-bets .en { font-size: 10px; font-weight: 800; color: var(--jt2-faint); letter-spacing: .06em; }
.jt2-acad-bets .lv { margin-left: auto; display: flex; gap: 3px; flex: none; }
.jt2-acad-bets .lv i { width: 6px; height: 6px; border-radius: 50%; background: var(--jt2-pri); }
.jt2-acad-bets .lv i.off { background: var(--jt2-hairline-2); }
.jt2-acad-bets .ds { font-size: 13px; line-height: 1.65; color: var(--jt2-text-2); margin-top: 9px; word-break: keep-all; }
.jt2-acad-bets .ex {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  margin-top: 10px; background: var(--jt2-inset); border-radius: var(--jt2-r-sm);
  padding: 9px 11px; font-size: 12px; font-weight: 600; color: var(--jt2-text-2); word-break: keep-all;
}
.jt2-acad-bets .ex .lb {
  flex: none; font-size: 10px; font-weight: 800; color: var(--jt2-mute);
  background: var(--jt2-card); border-radius: 5px; padding: 2px 6px;
}
.jt2-acad-bets .ex .ok {
  color: #FFFFFF; background: var(--jt2-bad); border-radius: 5px;
  padding: 2px 7px; font-size: 10.5px; font-weight: 800;
}
.jt2-acad-bets .tip { margin-top: 9px; font-size: 11.5px; line-height: 1.55; color: var(--jt2-mute); word-break: keep-all; }
.jt2-acad-bets .bet--hard { border-color: #F3CFCF; background: linear-gradient(180deg, #FFF9F9, var(--jt2-card)); }
.jt2-acad-bets .bet--hard .no { background: var(--jt2-tint-red); color: var(--jt2-tint-red-tx); }
.jt2-acad-bets .bet--hard .lv i { background: var(--jt2-bad); }
.jt2-acad-bets .bet--cta {
  background: var(--jt2-tint-blue); border-color: transparent;
  display: flex; flex-direction: column; justify-content: center;
}
.jt2-acad-bets .bet--cta:hover { transform: none; box-shadow: none; border-color: transparent; }
.jt2-acad-bets .bet--cta > b { font-size: 15px; color: var(--jt2-tint-blue-tx); }
.jt2-acad-bets .bet--cta .jt2-btn { margin-top: 12px; align-self: flex-start; }

/* ── 구매 채널 3장 ── */
.jt2-acad-chan { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.jt2-acad-chan .ch {
  border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  padding: 16px 17px; min-width: 0; display: flex; flex-direction: column; gap: 7px;
}
.jt2-acad-chan .ch .ic {
  width: 38px; height: 38px; border-radius: 12px; background: var(--jt2-inset);
  display: flex; align-items: center; justify-content: center; font-size: 19px; margin-bottom: 3px;
}
.jt2-acad-chan .ch b { font-size: 15px; }
.jt2-acad-chan .ch .ds { font-size: 12.5px; line-height: 1.6; color: var(--jt2-text-2); word-break: keep-all; }
.jt2-acad-chan .ch .tag {
  margin-top: auto; align-self: flex-start; font-size: 10.5px; font-weight: 800;
  color: var(--jt2-mute); background: var(--jt2-inset); border-radius: 999px; padding: 4px 9px;
}
.jt2-acad-chan .ch--on { border-color: var(--jt2-pri); background: linear-gradient(180deg, #F5F8FF, var(--jt2-card)); }
.jt2-acad-chan .ch--on .ic { background: var(--jt2-pri); }
.jt2-acad-chan .tag--on { color: var(--jt2-tint-blue-tx); background: var(--jt2-tint-blue); }

/* ── 단계 (활용법 · 현장 구매) ── */
.jt2-acad-steps { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.jt2-acad-steps .st {
  display: block; border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  padding: 14px 16px; text-decoration: none; color: inherit; min-width: 0;
  transition: border-color .13s, transform .13s;
}
.jt2-acad-steps a.st:hover { border-color: var(--jt2-pri); transform: translateY(-2px); text-decoration: none; }
.jt2-acad-steps .st i {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 8px; background: var(--jt2-pri); color: #FFF;
  font-style: normal; font-size: 12px; font-weight: 800; margin-right: 8px;
}
.jt2-acad-steps .st b { font-size: 14px; }
.jt2-acad-steps .st span { display: block; margin-top: 8px; font-size: 12.5px; line-height: 1.6; color: var(--jt2-text-2); word-break: keep-all; }
.jt2-acad-steps--num { grid-template-columns: repeat(4, 1fr); }
.jt2-acad-steps--num .st { padding: 13px 14px; }
.jt2-acad-steps--num .st i { background: var(--jt2-tint-blue); color: var(--jt2-tint-blue-tx); }
.jt2-acad-steps--num .st b { font-size: 13.5px; }
.jt2-acad-steps--num .st span { font-size: 12px; margin-top: 7px; }

/* ── 모바일 구매 (폰 목업 + 단계) ── */
.jt2-acad-mob { display: grid; grid-template-columns: 232px 1fr; gap: 22px; align-items: start; }
.jt2-acad-mob .ph {
  /* width 를 명시하지 않으면 그리드 안에서 auto-margin 이 stretch 를 꺼버려
     내용 폭(≈133px)으로 쪼그라든다 */
  width: 100%; box-sizing: border-box;
  border-radius: 26px; padding: 10px; background: #0B1526;
  box-shadow: 0 14px 34px rgba(14, 27, 44, .22);
}
.jt2-acad-mob .scr { background: var(--jt2-card); border-radius: 18px; padding: 14px 14px 16px; }
.jt2-acad-mob .bar { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.jt2-acad-mob .bar span { width: 26px; height: 4px; border-radius: 999px; background: var(--jt2-hairline-2); }
.jt2-acad-mob .bar b { font-size: 12.5px; font-weight: 800; }
.jt2-acad-mob .row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 0; border-bottom: 1px solid var(--jt2-hairline); font-size: 12.5px;
}
.jt2-acad-mob .row span { color: var(--jt2-mute); font-weight: 600; }
.jt2-acad-mob .row b { font-weight: 800; }
.jt2-acad-mob .row b.bl {
  width: 22px; height: 22px; border-radius: 50%; background: var(--jt2-pri); color: #FFF;
  display: inline-flex; align-items: center; justify-content: center; font-size: 11.5px;
}
.jt2-acad-mob .btn {
  margin-top: 13px; height: 38px; border-radius: 10px; background: var(--jt2-pri); color: #FFF;
  display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800;
}
.jt2-acad-mob .cap { margin-top: 8px; text-align: center; font-size: 10.5px; color: var(--jt2-mute); font-weight: 600; }
.jt2-acad-mob .stp { display: flex; flex-direction: column; gap: 2px; }
.jt2-acad-mob .s { position: relative; padding: 0 0 18px 34px; }
.jt2-acad-mob .s::before {
  content: ""; position: absolute; left: 11px; top: 24px; bottom: 0; width: 2px; background: var(--jt2-hairline);
}
.jt2-acad-mob .s:last-child { padding-bottom: 0; }
.jt2-acad-mob .s:last-child::before { display: none; }
.jt2-acad-mob .s i {
  position: absolute; left: 0; top: 0; width: 24px; height: 24px; border-radius: 50%;
  background: var(--jt2-pri); color: #FFF; display: flex; align-items: center; justify-content: center;
  font-style: normal; font-size: 12px; font-weight: 800;
}
.jt2-acad-mob .s b { display: block; font-size: 14px; line-height: 24px; }
.jt2-acad-mob .s span { display: block; margin-top: 5px; font-size: 12.5px; line-height: 1.65; color: var(--jt2-text-2); word-break: keep-all; }

/* ── 더비온 배지 · 필수 표시 ── */
.jt2-acad-chan .bd, .jt2-acad-h3 .bd {
  display: inline-block; margin-left: 4px; vertical-align: middle;
  font-size: 10.5px; font-weight: 800; letter-spacing: .01em;
  color: #FFFFFF; background: var(--jt2-pri); border-radius: 999px; padding: 3px 8px;
}
.jt2-acad-mob .s .req {
  display: inline-block; margin-left: 6px; vertical-align: middle;
  font-size: 10px; font-weight: 800; color: var(--jt2-tint-red-tx);
  background: var(--jt2-tint-red); border-radius: 999px; padding: 3px 8px;
}

/* ── 영상 매뉴얼 (유튜브 퍼사드) ── */
.jt2-acad-vids { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.jt2-acad-vids .vd {
  border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  overflow: hidden; min-width: 0; background: var(--jt2-card);
  transition: border-color .13s, transform .13s, box-shadow .13s;
}
.jt2-acad-vids .vd:not(.on):hover {
  border-color: var(--jt2-pri); transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(37, 99, 235, .10); cursor: pointer;
}
.jt2-acad-vids .th {
  position: relative; aspect-ratio: 16 / 9; background: #0B1526;
  background-size: cover; background-position: center;
}
.jt2-acad-vids .th iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.jt2-acad-vids .pl {
  position: absolute; inset: 0; width: 100%; height: 100%; border: 0; cursor: pointer;
  background: linear-gradient(180deg, rgba(11, 21, 38, .18), rgba(11, 21, 38, .52));
  display: flex; align-items: center; justify-content: center; padding: 0;
}
.jt2-acad-vids .pl i {
  width: 46px; height: 46px; border-radius: 50%; background: var(--jt2-bad); color: #FFF;
  display: flex; align-items: center; justify-content: center;
  font-style: normal; font-size: 16px; padding-left: 3px;
  box-shadow: 0 8px 20px rgba(214, 43, 43, .40); transition: transform .13s;
}
.jt2-acad-vids .vd:hover .pl i { transform: scale(1.08); }
.jt2-acad-vids .ep {
  position: absolute; left: 9px; top: 9px; min-width: 22px; height: 22px; padding: 0 6px;
  border-radius: 7px; background: rgba(11, 21, 38, .78); color: #FFFFFF;
  display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800;
}
.jt2-acad-vids .bf {
  position: absolute; right: 9px; top: 9px; font-size: 9.5px; font-weight: 800;
  color: #FFFFFF; background: rgba(37, 99, 235, .88); border-radius: 999px; padding: 3px 8px;
}
.jt2-acad-vids .mt { padding: 12px 14px 13px; }
.jt2-acad-vids .mt b { display: block; font-size: 13px; line-height: 1.5; word-break: keep-all; }
.jt2-acad-vids .mt span { display: block; margin-top: 5px; font-size: 11.5px; color: var(--jt2-mute); font-weight: 600; }

/* ── 경마 가이드 (재생목록 대표 카드) ── */
.jt2-acad-feat {
  display: grid; grid-template-columns: 360px 1fr; gap: 20px; align-items: center;
  border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg);
  padding: 16px; cursor: pointer; background: var(--jt2-card);
  transition: border-color .13s, box-shadow .13s;
}
.jt2-acad-feat:hover { border-color: var(--jt2-pri); box-shadow: 0 8px 22px rgba(37, 99, 235, .10); }
.jt2-acad-feat:focus-visible { outline: 2px solid var(--jt2-pri); outline-offset: 2px; }
.jt2-acad-feat .th {
  position: relative; aspect-ratio: 16 / 9; border-radius: var(--jt2-r);
  background: #0B1526; background-size: cover; background-position: center; overflow: hidden;
}
.jt2-acad-feat .pl {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, rgba(11, 21, 38, .18), rgba(11, 21, 38, .52));
}
.jt2-acad-feat .pl i {
  width: 54px; height: 54px; border-radius: 50%; background: var(--jt2-bad); color: #FFF;
  display: flex; align-items: center; justify-content: center;
  font-style: normal; font-size: 19px; padding-left: 3px;
  box-shadow: 0 8px 22px rgba(214, 43, 43, .42); transition: transform .13s;
}
.jt2-acad-feat:hover .pl i { transform: scale(1.08); }
.jt2-acad-feat .badge {
  position: absolute; left: 10px; top: 10px; font-size: 10.5px; font-weight: 800;
  color: #FFFFFF; background: rgba(11, 21, 38, .72); border-radius: 999px; padding: 4px 10px;
}
.jt2-acad-feat .mt { min-width: 0; }
.jt2-acad-feat .mt b { display: block; font-size: 17px; letter-spacing: -.02em; }
.jt2-acad-feat .mt .ds { display: block; margin-top: 8px; font-size: 13px; line-height: 1.65; color: var(--jt2-text-2); word-break: keep-all; }
.jt2-acad-feat .mt ul { margin: 11px 0 0; padding-left: 17px; }
.jt2-acad-feat .mt li { font-size: 12.5px; line-height: 1.75; color: var(--jt2-text-2); }
.jt2-acad-feat .mt .go {
  display: inline-block; margin-top: 13px; font-size: 12.5px; font-weight: 800;
  color: var(--jt2-tint-blue-tx); background: var(--jt2-tint-blue);
  border-radius: 999px; padding: 7px 14px;
}

/* ── 영상 팝업 ── */
.jt2-vmodal {
  position: fixed; inset: 0; z-index: 200; display: flex;
  align-items: center; justify-content: center; padding: 24px;
  background: rgba(8, 14, 26, .72); backdrop-filter: blur(3px);
}
.jt2-vmodal[hidden] { display: none; }
.jt2-vmodal .bx { position: relative; width: 100%; max-width: 900px; }
.jt2-vmodal .fr {
  position: relative; aspect-ratio: 16 / 9; background: #000;
  border-radius: var(--jt2-r-lg); overflow: hidden; box-shadow: 0 24px 60px rgba(0, 0, 0, .45);
}
.jt2-vmodal .fr iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.jt2-vmodal .cap { margin-top: 11px; text-align: center; font-size: 13px; font-weight: 700; color: #EAF0FB; }
.jt2-vmodal .x {
  position: absolute; right: -6px; top: -44px; width: 36px; height: 36px; border: 0; cursor: pointer;
  border-radius: 50%; background: rgba(255, 255, 255, .14); color: #FFFFFF; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
}
.jt2-vmodal .x:hover { background: rgba(255, 255, 255, .26); }

/* ── 환급금 계산 ── */
.jt2-acad-pay { border: 1px solid var(--jt2-line); border-radius: var(--jt2-r-lg); padding: 16px 18px; }
.jt2-acad-pay .f {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding-bottom: 13px; border-bottom: 1px solid var(--jt2-hairline); margin-bottom: 12px;
}
.jt2-acad-pay .f span {
  background: var(--jt2-inset); border-radius: var(--jt2-r-sm); padding: 8px 14px;
  font-size: 13px; font-weight: 800; color: var(--jt2-text);
}
.jt2-acad-pay .f b { font-size: 14px; color: var(--jt2-mute); }
.jt2-acad-pay ul { margin: 0; padding-left: 18px; }
.jt2-acad-pay li { font-size: 12.5px; line-height: 1.85; color: var(--jt2-text-2); word-break: keep-all; }
.jt2-acad-pay .jt2-btn { margin-top: 13px; }

/* ── 용어 사전 ── */
.jt2-acad-terms .tr { display: flex; gap: 14px; padding: 12px 20px; border-top: 1px solid var(--jt2-hairline); }
.jt2-acad-terms .tr b { flex: 0 0 96px; font-size: 13px; }
.jt2-acad-terms .tr span { font-size: 12.5px; line-height: 1.65; color: var(--jt2-text-2); min-width: 0; word-break: keep-all; }

/* ── FAQ ── */
.jt2-acad-faq details { border-top: 1px solid var(--jt2-hairline); }
.jt2-acad-faq summary { padding: 13px 20px; font-size: 13.5px; font-weight: 700; cursor: pointer; list-style: none; }
.jt2-acad-faq summary::before { content: 'Q. '; color: var(--jt2-pri); font-weight: 800; }
.jt2-acad-faq summary::-webkit-details-marker { display: none; }
.jt2-acad-faq summary:hover { background: var(--jt2-inset); }
.jt2-acad-faq details[open] summary { color: var(--jt2-pri); }
.jt2-acad-faq details > div { padding: 0 20px 14px; font-size: 12.5px; line-height: 1.7; color: var(--jt2-text-2); word-break: keep-all; }

@media (max-width: 900px) {
  .jt2-acad-hero { padding: 24px 20px 22px; }
  .jt2-acad-hero h1 { font-size: 22px; }
  .jt2-acad-hero p { font-size: 12.5px; margin-bottom: 14px; }
  .jt2-acad-hero .chips a { font-size: 11.5px; padding: 6px 11px; }
  .jt2-acad-bets, .jt2-acad-steps, .jt2-acad-chan { grid-template-columns: 1fr; }
  .jt2-acad-steps--num { grid-template-columns: repeat(2, 1fr); }
  .jt2-acad-vids { grid-template-columns: 1fr; }
  .jt2-acad-feat { grid-template-columns: 1fr; gap: 14px; padding: 14px; }
  .jt2-acad-feat .mt b { font-size: 15.5px; }
  .jt2-vmodal { padding: 16px; }
  .jt2-vmodal .x { right: 0; top: -40px; }
  .jt2-acad-mob { grid-template-columns: 1fr; gap: 18px; }
  .jt2-acad-mob .ph { max-width: 232px; margin: 0 auto; }
  .jt2-acad-terms .tr { flex-direction: column; gap: 4px; padding: 11px 16px; }
  .jt2-acad-terms .tr b { flex-basis: auto; }
}

/* ============================================================
   110. 모바일 가독성 보정 (사용자 지정)
   ============================================================ */
/* 스크롤바 2개 방지 — 리빌더 mobile.css 의 body{overflow-x:hidden} 이
   overflow-y 를 auto 로 승격시켜 html·body 가 동시에 스크롤됐다.
   가로 클리핑은 html 에만 남기고 body 는 문서 흐름으로 되돌린다. */
html { overflow-x: hidden; }
body { overflow: visible !important; height: auto !important; }
/* 표·카드행 안의 마명·기수·조교사 링크는 밑줄 없이 */
.jt2-table a, .jt2-row a, .jt2-mrow a, .jt2-hname a, .jt2-entry a { text-decoration: none; }
.jt2-table a:hover, .jt2-row a:hover, .jt2-mrow a:hover, .jt2-hname a:hover { text-decoration: none; opacity: .78; }

@media (max-width: 900px) {
  /* 뒤로가기 — 상단 텍스트 링크 대신 하단 중앙 고정 알약 (스크롤해도 따라온다).
     탭바(높이 ≈68px) 바로 위에 띄우고, 탭바보다 아래 z-index 로 겹침을 피한다. */
  .jt2-back {
    position: fixed; left: 50%; transform: translateX(-50%);
    bottom: calc(68px + env(safe-area-inset-bottom, 0px) + 12px);
    z-index: 66; margin-bottom: 0;
    background: var(--jt2-card); border: 1px solid var(--jt2-line);
    border-radius: 999px; padding: 11px 20px;
    font-size: 13.5px; font-weight: 800; color: var(--jt2-text);
    box-shadow: 0 8px 24px rgba(14, 27, 44, .18);
    white-space: nowrap; max-width: calc(100vw - 32px);
    overflow: hidden; text-overflow: ellipsis;
  }
  .jt2-back:active { transform: translateX(-50%) scale(.97); }
  /* 고정 버튼이 마지막 카드 위를 덮지 않도록 본문 아래 여백 확보 */
  .jt-wrap { padding-bottom: 78px; }

  /* 승식별 적중률 — 모바일은 구분선이 사라져 글자만 떠 보인다 → 각 승식을 카드 박스로 */
  .jt2-betrates, .jt-betrates { gap: 8px; padding: 14px 16px; }
  .jt2-betrates > div, .jt-betrates > div {
    background: var(--jt2-inset); border: 1px solid var(--jt2-line-soft);
    border-radius: var(--jt2-r); padding: 11px 10px 10px;
  }
  .jt2-betrates > div.on, .jt-betrates > div.on {
    background: var(--jt2-tint-blue); border-color: transparent;
  }
  .jt2-betrates > div.on .l, .jt-betrates > div.on .l { color: var(--jt2-tint-blue-tx); }
  .jt2-betrates .d, .jt-betrates .d { font-size: 12px; }

  /* 경주 다시보기 칩 — 폰 폭과 무관하게 한 줄에 정확히 2개
     (기존 flex-wrap 은 폰마다 1개/2개로 갈렸다. 좁아진 칸에 맞춰 '다시보기' 접미는 생략) */
  .jt2-vodchips { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .jt2-vodchips a { justify-content: center; padding: 9px 8px; min-width: 0; }
  .jt2-vodchips a .sfx { display: none; }

  /* ── 메인 카드 헤더 — 한글 단어 중간 꺾임 방지 ──
     좁은 폭에서 flex 가 각 항목을 최소내용폭 아래로 짜부라뜨려
     "커뮤니 / 티", "자 / 유", "더보기 / →" 처럼 단어가 쪼개졌다.
     제목·더보기는 통째로 지키고, 설명은 통째로 다음 줄로 내린다. */
  .v2m-cardhd { flex-wrap: wrap; row-gap: 4px; }
  .v2m-cardhd > span[style*="font-weight:800"] { flex: none; white-space: nowrap; }
  .v2m-cardhd > a { flex: none; white-space: nowrap; margin-left: auto; }
  .v2m-cardhd > span[style*="#8B98AC"] {
    flex: 1 1 100%; order: 9; min-width: 0;
    word-break: keep-all; line-height: 1.5;
  }

  /* 초협소 기기(320px대) — 헤더 버튼의 터치영역 확장 의사요소가 가로로 삐져나가
     페이지에 넘침을 만든다. 세로 확장은 남기고 가로만 버튼 폭에 맞춘다. */
  .jt2-iconbtn::after, .jt2-burger::after, .jt2-hbtn::after { left: 0; right: 0; }

  /* ── 오늘의 경주 목록(모바일 카드행) — 조건 잘림 해소 + 글자 확대 ──
     "1200M · 국4등…" 처럼 말줄임되던 조건을 다음 줄로 내려 전체를 보여준다.
     (Z폴드 485px 같은 넓은 모바일에서도 상태칩과 경쟁해 잘리던 문제) */
  .jt2-mrow .top { flex-wrap: wrap; row-gap: 4px; }
  .jt2-mrow .top > .jt2-mute {
    flex: 1 1 100%; order: 3;
    white-space: normal; overflow: visible; text-overflow: clip;
    word-break: keep-all; line-height: 1.5;
  }
  .jt2-mrow .top > .jt2-stcell { margin-left: auto; }
  .jt2-mrow .jt2-rno { font-size: 16px; }
  .jt2-mrow .top > .jt2-mute { font-size: 13.5px; }
  .jt2-mrow .jt2-confv { font-size: 13px; }
  .jt2-mrow .jt2-fin { font-size: 13.5px; }
  .jt2-mrow .jt2-ball--sm { width: 24px; height: 24px; font-size: 12px; }
  .jt2-mrow .jt2-tag, .jt2-mrow .jt2-chip { font-size: 12.5px; }

  /* 경기 환경 — 타일 한 줄에 하나씩 (읽는 양이 많아 2열이면 글자가 뭉친다) */
  .jt2-grid3--env { grid-template-columns: 1fr !important; }
  .jt2-grid3--env .jt2-kpi .v { font-size: 17px; }
  .jt2-grid3--env .jt2-kpi .d { font-size: 13.5px; line-height: 1.7; }
  /* 아카데미 현장구매 단계 — 한 줄에 하나씩 + 글자 확대 */
  .jt2-acad-steps--num { grid-template-columns: 1fr !important; }
  .jt2-acad-steps--num .st { padding: 14px 16px; }
  .jt2-acad-steps--num .st b { font-size: 16px; }
  .jt2-acad-steps--num .st span { font-size: 14px; line-height: 1.7; }
  .jt2-acad-steps .st b { font-size: 16px; }
  .jt2-acad-steps .st span { font-size: 14px; line-height: 1.7; }
  /* 초보가이드 본문 — 읽는 문서라 모바일에서 한 단계 더 크게 */
  .jt2-acad-h3 { font-size: 17.5px; }
  .jt2-acad-note, .jt2-acad-warn { font-size: 14px; }
  .jt2-acad-bets .hd b { font-size: 18.5px; }
  .jt2-acad-bets .ds { font-size: 14.5px; }
  .jt2-acad-bets .ex { font-size: 13.5px; }
  .jt2-acad-bets .tip { font-size: 13px; }
  .jt2-acad-chan .ch b { font-size: 17px; }
  .jt2-acad-chan .ch .ds { font-size: 14px; }
  .jt2-acad-mob .s b { font-size: 16px; }
  .jt2-acad-mob .s span { font-size: 14px; }
  .jt2-acad-pay li { font-size: 14px; }
  .jt2-acad-pay .f span { font-size: 14px; }
  .jt2-acad-terms .tr b { font-size: 14.5px; }
  .jt2-acad-terms .tr span { font-size: 14px; }
  .jt2-acad-faq summary { font-size: 15.5px; }
  .jt2-acad-faq details > div { font-size: 14px; }
  .jt2-acad-vids .mt b { font-size: 14.5px; }
  .jt2-acad-vids .mt span { font-size: 13px; }
  .jt2-acad-feat .mt .ds, .jt2-acad-feat .mt li { font-size: 14px; }
}

/* 섹션 재배치로 승식 가이드 카드가 칩줄 바로 아래로 왔다 — 모바일 칩줄은 중복이라 숨김 */
@media (max-width: 900px) {
  .jt2-betchips { display: none !important; }
  /* 실제 쓰이는 로고(리빌더 /data/logos/pc)는 비율이 3:1 이라 같은 높이라도 작아 보인다.
     헤더 폭에 여유가 60px 이상 남아 있어 키워도 안 밀린다. */
  .jt2-logo img.lg { height: 26px !important; }
  /* 모바일 프로필 알약은 아바타만 (포인트·닉네임은 드롭다운 안에) */
  .jt2-prof-btn .nm, .jt2-prof-btn .pt { display: none; }
  .jt2-prof-btn { padding: 0 8px 0 4px; }
  .jt2-prof-drop { right: -8px; }
}
