/*
 * tm-search.css — 시시브랜드 AI 상표서치 페이지 스타일
 * ccbrand 토큰 전용 (hex·인라인 금지, --c-* 변수만 사용)
 * 한국 CSS: word-break:keep-all, 360px/768px/1024px/1440px 기준
 * 클래스 prefix: tms- (tm-search 페이지 전용)
 * 버튼: box-shadow:var(--btn-shadow-raised) 필수 (feedback_ccbrand_front_buttons_must_be_3d)
 */

/* ═══════════════════════════════════════════════════════════
   리셋
═══════════════════════════════════════════════════════════ */
.tms-page *,
.tms-page *::before,
.tms-page *::after {
  box-sizing: border-box;
}

/* ═══════════════════════════════════════════════════════════
   페이지 래퍼
═══════════════════════════════════════════════════════════ */
.tms-page {
  width: 100%;
  min-height: 100vh;
  word-break: keep-all;
  overflow-wrap: break-word;
  /* tm-search 한정 배경 오버라이드 — 전역 --c-bg(#F1F3F5) 보다 밝은 near-white */
  background: #F8F9FA;
}

/* 상세 화면 활성 시: min-height 100vh 해제 → 빈 공간 방지
   tmsScreenDetail height = calc(100vh - navbar) 이므로 tms-page 도 그 높이로 수축.
   해제 안 하면 min-height: 100vh 잔여 공간(≈ navbar height)이 하단에 노출됨. */
.tms-page.tms--detail-mode {
  min-height: 0;
}

/* ═══════════════════════════════════════════════════════════
   스크린 전환 (A=히어로, B=결과)
═══════════════════════════════════════════════════════════ */
.tms-screen {
  width: 100%;
}

/* 결과 스크린 — 전체 콘텐츠 영역 흰색 (바깥 .tms-page 회색은 히어로에서 노출) */
.tms-screen--results {
  background: var(--c-paper);
}

/* ═══════════════════════════════════════════════════════════
   히어로 스크린 내부 래퍼 — 전폭 (결과/상세 화면과 동일)
   좌우 고정배너 숨김(hideQuickBanners) 후 화면 전폭을 채움.
   결과(.tms-screen--results) · 상세(.tms-screen--detail)와 폭 기준 동일.
═══════════════════════════════════════════════════════════ */
.tms-hero-inner {
  max-width: 100%;
  margin: 0 auto;
  padding: 32px 24px 64px;
  background: var(--c-paper);   /* 흰 콘텐츠 영역 */
  border-radius: 0;             /* 전폭: 모서리 라운드 불필요 */
  box-shadow: none;             /* 전폭: 카드 그림자 불필요 */
}

/* ═══════════════════════════════════════════════════════════
   베타 안내 박스
═══════════════════════════════════════════════════════════ */
.tms-beta-notice {
  background: var(--c-warn-soft);
  border: 1px solid var(--c-warn-line);
  border-left: 4px solid var(--c-warn);
  border-radius: 8px;
  padding: 14px 16px;
  margin-bottom: 24px;
}

.tms-beta-notice__row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}

.tms-beta-notice__icon {
  font-size: 18px;
  flex-shrink: 0;
  margin-top: 1px;
}

.tms-beta-notice__title {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--c-warn-strong);
  margin-bottom: 4px;
}

.tms-beta-notice__body {
  font-size: 0.8rem;
  color: var(--c-warn-strong);
  line-height: 1.6;
}

/* ═══════════════════════════════════════════════════════════
   USP 배너 (보라 그라데이션)
═══════════════════════════════════════════════════════════ */
.tms-usp-banner {
  background: linear-gradient(135deg, var(--c-plum) 0%, var(--c-plum-strong) 100%);
  border-radius: 16px;
  padding: 32px 28px;
  margin-bottom: 32px;
  position: relative;
  overflow: hidden;
}

.tms-usp-banner::before {
  content: '';
  position: absolute;
  top: -40px;
  right: -40px;
  width: 200px;
  height: 200px;
  border-radius: 50%;
  background: rgba(255,255,255,0.06);
  pointer-events: none;
}

.tms-usp-banner__top {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 16px;
}

.tms-usp-banner__beta {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(255,255,255,0.18);
  border: 1px solid rgba(255,255,255,0.35);
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--c-plum-tint);
  letter-spacing: 0.1em;
  flex-shrink: 0;
  margin-top: 4px;
}

.tms-usp-banner__title {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--c-paper);
  line-height: 1.35;
  letter-spacing: -0.02em;
}

.tms-usp-banner__sub {
  font-size: 0.85rem;
  color: var(--c-plum-tint);
  line-height: 1.6;
  margin-bottom: 20px;
}

.tms-usp-badges {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

.tms-usp-badge {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,0.10);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 8px;
  padding: 10px 12px;
}

.tms-usp-badge__icon {
  font-size: 20px;
  flex-shrink: 0;
}

.tms-usp-badge__label {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--c-paper);
  line-height: 1.3;
}

.tms-usp-badge__sub {
  font-size: 0.7rem;
  color: var(--c-plum-tint);
  margin-top: 2px;
}

/* ═══════════════════════════════════════════════════════════
   STEP 공통 헤더
═══════════════════════════════════════════════════════════ */
.tms-step {
  margin-bottom: 28px;
}

.tms-step-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px; /* tms-step-sub 숨김 후 타이트 간격 */
}

.tms-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 7px;
  background: var(--c-plum);
  color: var(--c-paper);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  flex-shrink: 0;
}

.tms-step-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--c-ink);
}

/* visually-hidden: 화면엔 숨김, DOM에 존재 → 크롤러·스크린리더 가독 */
.tms-step-sub {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ═══════════════════════════════════════════════════════════
   STEP 01: 국가 선택
═══════════════════════════════════════════════════════════ */
.tms-country-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
}

.tms-country-card {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 5px;
  padding: 7px 10px;
  border-radius: 8px;
  border: 2px solid var(--c-line-soft);
  background: var(--c-paper);
  cursor: pointer;
  transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
  position: relative;
  outline: none;
  white-space: nowrap;
  overflow: hidden;
}

.tms-country-card:not(.tms-country-card--disabled):hover {
  border-color: var(--c-plum-line);
  background: var(--c-plum-soft);
  box-shadow: var(--sh-sm);
}

.tms-country-card--selected {
  border-color: var(--c-plum) !important;
  background: var(--c-plum-soft) !important;
  box-shadow: 0 0 0 3px var(--c-plum-tint) !important;
}

.tms-country-card--disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.tms-country-card__flag-img {
  height: 16px;
  width: auto;
  max-width: 24px;
  object-fit: contain;
  border-radius: 2px;
  display: block;
  flex-shrink: 0;
}

.tms-country-card__flag {
  font-size: 16px;
  line-height: 1;
  flex-shrink: 0;
}

.tms-country-card__code {
  font-size: 0.7rem;
  font-weight: 800;
  color: var(--c-plum);
  font-family: var(--f-mono);
  letter-spacing: 0.04em;
  flex-shrink: 0;
}

.tms-country-card__name {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--c-ink);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tms-country-card__badge {
  font-size: 0.62rem;
  font-weight: 700;
  padding: 2px 5px;
  border-radius: 4px;
  letter-spacing: 0.05em;
  flex-shrink: 0;
  margin-left: auto;
}

.tms-country-card__badge--beta {
  background: var(--c-plum-tint);
  color: var(--c-plum);
}

.tms-country-card__badge--soon {
  background: var(--c-line-soft);
  color: var(--c-mute);
}

/* STEP 01 전용: 제목~박스 간격 축소 */
#tmsStep01 .tms-step-sub {
  margin-bottom: 8px;
}

/* ═══════════════════════════════════════════════════════════
   STEP 02: 언어 선택
═══════════════════════════════════════════════════════════ */
.tms-lang-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.tms-lang-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 20px;
  border-radius: 10px;
  border: 2px solid var(--c-line-soft);
  background: var(--c-paper);
  cursor: pointer;
  transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
  outline: none;
}

.tms-lang-card:not(.tms-lang-card--disabled):hover {
  border-color: var(--c-plum-line);
  background: var(--c-plum-soft);
}

.tms-lang-card--selected {
  border-color: var(--c-plum) !important;
  background: var(--c-plum-soft) !important;
  box-shadow: 0 0 0 3px var(--c-plum-tint) !important;
}

.tms-lang-card__top {
  display: flex;
  align-items: center;
  gap: 8px;
}

.tms-lang-card__icon {
  font-size: 22px;
}

.tms-lang-card__name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--c-ink);
}

.tms-lang-card__desc {
  font-size: 0.78rem;
  color: var(--c-mute);
  line-height: 1.5;
}

/* ═══════════════════════════════════════════════════════════
   STEP 03: 검색 탭 (상표/출원번호/출원인)
═══════════════════════════════════════════════════════════ */
.tms-search-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--c-line-soft);
  margin-bottom: 16px;
}

.tms-search-tab {
  padding: 9px 18px;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--c-mute);
  background: transparent;
  border: none;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
  transition: color 0.15s, border-color 0.15s;
}

.tms-search-tab--active {
  color: var(--c-plum);
  border-bottom-color: var(--c-plum);
}

.tms-search-tab--disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.tms-search-tab__soon {
  display: inline-block;
  font-size: 0.6rem;
  font-weight: 700;
  background: var(--c-line-soft);
  color: var(--c-mute);
  padding: 1px 5px;
  border-radius: 3px;
  margin-left: 4px;
  vertical-align: middle;
  letter-spacing: 0.04em;
}

/* ═══════════════════════════════════════════════════════════
   STEP 03: 검색 모드 카드
═══════════════════════════════════════════════════════════ */
.tms-mode-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 10px;
  margin-bottom: 4px;
}

.tms-mode-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 12px;
  border-radius: 12px;
  border: 2px solid var(--c-line-soft);
  background: var(--c-paper);
  cursor: pointer;
  transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
  position: relative;
  outline: none;
}

.tms-mode-card:not(.tms-mode-card--disabled):hover {
  border-color: var(--c-plum-line);
  background: var(--c-plum-soft);
  box-shadow: var(--sh-sm);
}

.tms-mode-card--selected {
  border-color: var(--c-plum) !important;
  background: var(--c-plum-soft) !important;
  box-shadow: 0 0 0 3px var(--c-plum-tint) !important;
}

.tms-mode-card--disabled {
  opacity: 0.5;
  cursor: not-allowed;
  background: var(--c-paper-2);
}

.tms-mode-card__badges {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.tms-mode-card__recommended {
  font-size: 0.65rem;
  font-weight: 800;
  padding: 2px 7px;
  border-radius: 4px;
  background: var(--c-plum);
  color: var(--c-paper);
  letter-spacing: 0.05em;
}

.tms-mode-card__points {
  font-size: 0.65rem;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 4px;
  background: var(--c-plum-tint);
  color: var(--c-plum);
}

.tms-mode-card__points--free {
  background: var(--c-ok-soft);
  color: var(--c-ok);
}

.tms-mode-card__soon-badge {
  font-size: 0.65rem;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 4px;
  background: var(--c-line-soft);
  color: var(--c-mute);
  letter-spacing: 0.04em;
}

.tms-mode-card__label {
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--c-ink);
}

.tms-mode-card--disabled .tms-mode-card__label {
  color: var(--c-mute);
}

.tms-mode-card__desc {
  font-size: 0.73rem;
  color: var(--c-ink-soft);
  line-height: 1.45;
}

/* ═══════════════════════════════════════════════════════════
   STEP 04: 검색 입력창
═══════════════════════════════════════════════════════════ */
.tms-search-input-wrap {
  display: flex;
  align-items: stretch;
  border: 2px solid var(--c-line);
  border-radius: 12px;
  overflow: hidden;
  background: var(--c-paper);
  transition: border-color 0.18s, box-shadow 0.18s;
  margin-bottom: 12px;
}

.tms-search-input-wrap:focus-within {
  border-color: var(--c-plum);
  box-shadow: 0 0 0 3px var(--c-plum-tint);
}

.tms-search-input {
  flex: 1;
  min-width: 0;
  height: 56px;
  border: none;
  outline: none;
  background: transparent;
  padding: 0 20px;
  font-family: var(--f-sans);
  font-size: 1rem;
  color: var(--c-ink);
}

.tms-search-input::placeholder {
  color: var(--c-mute);
}

.tms-search-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 56px;
  padding: 0 28px;
  border: none;
  border-radius: 0;
  background: var(--c-plum);
  color: var(--c-paper);
  font-family: var(--f-sans);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
  flex-shrink: 0;
}

.tms-search-cta:not(:disabled):hover {
  background: var(--c-plum-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-search-cta:not(:disabled):active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-search-cta:disabled {
  background: var(--c-line);
  color: var(--c-mute);
  cursor: not-allowed;
  box-shadow: none;
}

/* 폼 초기화 버튼 (입력창 왼쪽) — secondary/outline 계열, 3D 필수 */
.tms-form-reset-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 56px;
  padding: 0 16px;
  border: none;
  border-right: 1px solid var(--c-line-soft);
  border-radius: 0;
  background: var(--c-paper-2);
  color: var(--c-mute);
  font-family: var(--f-sans);
  font-size: 0.875rem;
  font-weight: 600;
  cursor: pointer;
  flex-shrink: 0;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, color 0.15s, box-shadow 0.18s;
  white-space: nowrap;
}

.tms-form-reset-btn:hover {
  background: var(--c-line-soft);
  color: var(--c-ink-soft);
  box-shadow: var(--btn-shadow-hover);
}

.tms-form-reset-btn:active {
  box-shadow: var(--btn-shadow-pressed);
}

/* 인기 검색어 */
.tms-popular-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.tms-popular-label {
  font-size: 0.78rem;
  color: var(--c-mute);
  font-weight: 500;
  flex-shrink: 0;
}

.tms-popular-chip {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--c-line);
  background: var(--c-paper);
  font-size: 0.78rem;
  color: var(--c-ink-soft);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
  white-space: nowrap;
}

.tms-popular-chip:hover {
  border-color: var(--c-plum-line);
  color: var(--c-plum);
  background: var(--c-plum-soft);
}

/* ═══════════════════════════════════════════════════════════
   결과 스크린 — 상단 검색바 + 조건 칩
═══════════════════════════════════════════════════════════ */
.tms-results-topbar {
  background: var(--c-paper);
  border-bottom: 1px solid var(--c-line-soft);
  padding: 14px 24px;
  position: sticky;
  top: 0;
  z-index: 30;
}

.tms-results-topbar__inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.tms-results-search-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
}

.tms-results-search-input {
  flex: 1;
  min-width: 0;
  height: 42px;
  border: 1.5px solid var(--c-line);
  border-radius: 8px;
  padding: 0 14px;
  font-family: var(--f-sans);
  font-size: 0.9rem;
  color: var(--c-ink);
  background: var(--c-paper);
  outline: none;
  transition: border-color 0.15s;
}

.tms-results-search-input:focus {
  border-color: var(--c-plum);
  box-shadow: 0 0 0 2px var(--c-plum-tint);
}

.tms-results-search-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 42px;
  padding: 0 18px;
  border: none;
  border-radius: 8px;
  background: var(--c-plum);
  color: var(--c-paper);
  font-family: var(--f-sans);
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
  white-space: nowrap;
  flex-shrink: 0;
}

.tms-results-search-btn:hover {
  background: var(--c-plum-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-results-search-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-back-to-search {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 42px;
  padding: 0 14px;
  border: 1.5px solid var(--c-line);
  border-radius: 8px;
  background: transparent;
  color: var(--c-mute);
  font-family: var(--f-sans);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: color 0.15s, border-color 0.15s, box-shadow 0.18s, transform 0.1s;
  white-space: nowrap;
  flex-shrink: 0;
}

.tms-back-to-search:hover {
  border-color: var(--c-plum-line);
  color: var(--c-plum);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-back-to-search:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* 검색조건 칩 */
.tms-condition-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
  font-size: 0.78rem;
}

.tms-condition-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--c-plum-tint);
  color: var(--c-plum);
  font-size: 0.75rem;
  font-weight: 600;
  white-space: nowrap;
}

.tms-condition-arrow {
  color: var(--c-plum);
  font-size: 0.7rem;
  opacity: 0.6;
}

/* ═══════════════════════════════════════════════════════════
   가로 필터바
═══════════════════════════════════════════════════════════ */
.tms-filter-bar {
  background: var(--c-paper);
  border-bottom: 1px solid var(--c-line-soft);
  padding: 10px 24px;
}

.tms-filter-bar__inner {
  max-width: 1200px;
  margin: 0 auto;
}

.tms-filter-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}

.tms-filter-row:last-child {
  margin-bottom: 0;
}

.tms-filter-label {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--c-mute);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  flex-shrink: 0;
  width: 52px;
}

.tms-filter-chips {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  flex: 1;
  min-width: 0;
}

.tms-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--c-line);
  background: var(--c-paper);
  font-size: 0.76rem;
  font-weight: 600;
  color: var(--c-ink-soft);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  white-space: nowrap;
}

.tms-filter-chip:hover {
  border-color: var(--c-plum-line);
  color: var(--c-plum);
}

.tms-filter-chip--selected {
  border-color: var(--c-plum);
  background: var(--c-plum-soft);
  color: var(--c-plum);
}

.tms-filter-chip__count {
  font-size: 0.68rem;
  font-weight: 700;
  background: var(--c-paper-2);
  color: var(--c-mute);
  border-radius: 999px;
  padding: 1px 5px;
  line-height: 1;
}

.tms-filter-chip--selected .tms-filter-chip__count {
  background: var(--c-plum-tint);
  color: var(--c-plum);
}

.tms-filter-more-btn {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px dashed var(--c-line);
  background: transparent;
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--c-mute);
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
  white-space: nowrap;
}

.tms-filter-more-btn:hover {
  border-color: var(--c-plum-line);
  color: var(--c-plum);
}

.tms-filter-clear {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--c-danger-line);
  background: var(--c-danger-soft);
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--c-danger);
  cursor: pointer;
  transition: background 0.15s;
  white-space: nowrap;
}

.tms-filter-clear:hover {
  background: var(--c-danger-line);
}

/* ═══════════════════════════════════════════════════════════
   결과 헤더 (카운트 + 정렬 + 엑셀 + 뷰토글)
═══════════════════════════════════════════════════════════ */
.tms-results-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 24px;
  max-width: 1200px;
  margin: 0 auto;
  flex-wrap: wrap;
}

.tms-results-count {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--c-ink);
}

.tms-results-count strong {
  color: var(--c-plum);
  font-size: 1rem;
}

.tms-results-count span {
  color: var(--c-mute);
  font-weight: 400;
}

.tms-results-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex-wrap: wrap;
}

.tms-sort-select {
  height: 36px;
  padding: 0 10px;
  border: 1.5px solid var(--c-line);
  border-radius: 7px;
  background: var(--c-paper);
  font-family: var(--f-sans);
  font-size: 0.82rem;
  color: var(--c-ink-soft);
  cursor: pointer;
  outline: none;
}

.tms-excel-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 36px;
  padding: 0 14px;
  border: 1.5px solid var(--c-ok);
  border-radius: 7px;
  background: var(--c-ok-soft);
  color: var(--c-ok);
  font-family: var(--f-sans);
  font-size: 0.8rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
  white-space: nowrap;
}

.tms-excel-btn:hover {
  background: var(--c-ok);
  color: var(--c-paper);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-excel-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-excel-btn__points {
  font-size: 0.68rem;
  background: var(--c-ok);
  color: var(--c-paper);
  border-radius: 3px;
  padding: 1px 4px;
}

.tms-excel-btn:hover .tms-excel-btn__points {
  background: var(--c-paper);
  color: var(--c-ok);
}

.tms-view-toggle {
  display: flex;
  border: 1.5px solid var(--c-line);
  border-radius: 7px;
  overflow: hidden;
}

.tms-view-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 34px;
  border: none;
  background: transparent;
  color: var(--c-mute);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.tms-view-btn:first-child {
  border-right: 1px solid var(--c-line);
}

.tms-view-btn--active {
  background: var(--c-plum);
  color: var(--c-paper);
}

.tms-view-btn:not(.tms-view-btn--active):hover {
  background: var(--c-plum-soft);
  color: var(--c-plum);
}

/* ═══════════════════════════════════════════════════════════
   AI 확장 구분 행 — 필터바 서브행 공통 (exact/contains 모드)
═══════════════════════════════════════════════════════════ */
/* 칭호확장/관념확장 용어 뱃지 서브행 */
.tms-filter-subrow {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 6px 0 6px 60px;
  background: var(--c-plum-soft);
  border-top: 1px solid var(--c-border);
}
.tms-expand-terms { }   /* alias via tms-filter-subrow */
.tms-expand-term {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 12px;
  background: var(--c-surface);
  border: 1px solid var(--c-border);
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--c-text);
  font-family: var(--f-sans);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  word-break: keep-all;
}
.tms-expand-term:hover {
  background: var(--c-primary-soft, #eef2ff);
  border-color: var(--c-primary, #4f46e5);
  color: var(--c-primary, #4f46e5);
}
.tms-expand-term--selected {
  background: var(--c-primary, #4f46e5);
  border-color: var(--c-primary, #4f46e5);
  color: #fff;
}
.tms-expand-term--selected .tms-expand-term__count {
  color: rgba(255,255,255,0.8);
}
.tms-expand-term__count {
  color: var(--c-text-muted);
  font-weight: 400;
  font-size: 0.68rem;
}

/* ═══════════════════════════════════════════════════════════
   그리드 뷰 (6열 카드)
═══════════════════════════════════════════════════════════ */
.tms-results-body {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px 40px;
}

.tms-grid-view {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 14px;
  margin-bottom: 28px;
}

.tms-grid-card {
  display: flex;
  flex-direction: column;
  background: var(--c-paper);
  border: 1px solid var(--c-line-soft);
  border-radius: 10px;
  overflow: hidden;
  transition: box-shadow 0.18s, transform 0.15s;
  cursor: pointer;
}

.tms-grid-card:hover {
  box-shadow: var(--sh-md);
  transform: translateY(-2px);
}

.tms-grid-card__img {
  width: 100%;
  aspect-ratio: 1/1;
  background: var(--c-paper-2);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}

.tms-grid-card__img-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--c-plum-soft) 0%, var(--c-plum-tint) 100%);
  color: var(--c-plum);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  font-family: var(--f-sans);
  word-break: keep-all;
  overflow-wrap: break-word;
  white-space: normal;
  text-align: center;
  padding: 6px;
  overflow: hidden;
  line-height: 1.3;
}

.tms-grid-card__info {
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1;
}

.tms-grid-card__badges {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

.tms-grid-card__name {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--c-ink);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tms-grid-card__app-no {
  font-family: var(--f-mono);
  font-size: 0.68rem;
  color: var(--c-mute);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tms-grid-card__date {
  font-size: 0.7rem;
  color: var(--c-mute);
}

.tms-grid-card:active {
  box-shadow: 0 1px 3px rgba(0,0,0,0.12);
  transform: translateY(0);
}

/* ═══════════════════════════════════════════════════════════
   리스트 뷰 (테이블)
═══════════════════════════════════════════════════════════ */
.tms-list-view {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin-bottom: 28px;
  background: var(--c-paper);
  border: 1px solid var(--c-line-soft);
  border-radius: 10px;
  overflow: hidden;
  font-size: 0.82rem;
}

.tms-list-view thead th {
  background: var(--c-paper-2);
  color: var(--c-mute);
  font-size: 0.72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 10px 12px;
  text-align: left;
  border-bottom: 1px solid var(--c-line-soft);
  white-space: nowrap;
}

.tms-list-view tbody tr {
  border-bottom: 1px solid var(--c-line-soft);
  transition: background 0.12s;
}

.tms-list-view tbody tr:last-child {
  border-bottom: none;
}

.tms-list-view tbody tr:hover {
  background: var(--c-plum-soft);
}

.tms-list-view td {
  padding: 11px 12px;
  color: var(--c-ink-soft);
  vertical-align: middle;
  white-space: nowrap;
}

.tms-list-view__img-cell {
  width: 44px;
  position: relative;
}

.tms-list-img {
  width: 40px;
  height: 40px;
  border-radius: 5px;
  background: var(--c-plum-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: var(--c-plum);
  font-family: var(--f-sans);
  overflow: hidden;
  flex-shrink: 0;
  word-break: keep-all;
  overflow-wrap: break-word;
  white-space: normal;
  text-align: center;
  padding: 3px;
  line-height: 1.3;
}

.tms-list-tm-name {
  font-weight: 700;
  color: var(--c-ink);
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tms-list-app-no {
  font-family: var(--f-mono);
  font-size: 0.76rem;
  color: var(--c-mute);
}

.tms-list-date {
  font-family: var(--f-mono);
  font-size: 0.76rem;
  color: var(--c-mute);
}

.tms-list-null {
  color: var(--c-line);
  font-style: italic;
}

.tms-list-view tbody tr[data-tms-detail] {
  cursor: pointer;
}

/* ═══════════════════════════════════════════════════════════
   행정상태 배지
═══════════════════════════════════════════════════════════ */
/* ── contains 모드 전용: 완전동일 이미지 배지 ── */
.tms-exact-badge {
  position: absolute;
  top: 6px;
  left: 6px;
  background: #cc0000;
  color: #fff;
  font-size: 0.60rem;
  font-weight: 700;
  padding: 2px 5px;
  border-radius: 3px;
  letter-spacing: -0.01em;
  pointer-events: none;
  z-index: 2;
  white-space: nowrap;
}
/* 리스트 뷰: 셀이 작으므로 폰트 더 작게 */
.tms-exact-badge--list {
  font-size: 0.55rem;
  padding: 1px 4px;
}
/* contains 모드 상표명 하이라이트 */
.tms-hl-exact {
  color: #cc0000;
  font-weight: 700;
}

.tms-status-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 7px;
  border-radius: 4px;
  font-size: 0.68rem;
  font-weight: 700;
  white-space: nowrap;
}

.tms-status-badge--registered {
  background: var(--c-ok-soft);
  color: var(--c-ok);
}

.tms-status-badge--pending {
  background: var(--c-brand-soft);
  color: var(--c-brand);
}

.tms-status-badge--notice {
  background: var(--c-warn-soft);
  color: var(--c-warn-strong);
}

.tms-status-badge--rejected,
.tms-status-badge--invalid {
  background: var(--c-danger-soft);
  color: var(--c-danger);
}

.tms-status-badge--extinct,
.tms-status-badge--abandoned,
.tms-status-badge--withdrawn {
  background: var(--c-line-soft);
  color: var(--c-mute);
}

/* 류 배지 */
.tms-class-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 0.68rem;
  font-weight: 700;
  background: var(--c-accent-soft);
  color: var(--c-accent-strong);
  white-space: nowrap;
  font-family: var(--f-mono);
}

/* 결과 카드 배지 font-size +2px (그리드·리스트 공통, 상세 헤더·레일은 미포함) */
.tms-grid-card__badges .tms-status-badge,
.tms-list-view .tms-status-badge {
  font-size: 0.81rem;
  padding: 3px 7px;
}

.tms-grid-card__badges .tms-class-badge,
.tms-list-view .tms-class-badge {
  font-size: 0.81rem;
  padding: 3px 6px;
}

/* ═══════════════════════════════════════════════════════════
   페이지네이션 — base (메인·레일 공유)
═══════════════════════════════════════════════════════════ */
.tms-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}

/* 메인 결과 페이지네이션 전용 여백 */
.tms-pagination--main {
  margin-top: 32px;
  margin-bottom: 40px;
}

/* 레일 하단 페이지네이션 전용 프레이밍 */
.tms-pagination--rail {
  flex-shrink: 0;
  padding: 16px 12px;
  margin-top: 8px;
  border-top: 1px solid var(--c-line-soft);
  background: var(--c-paper);
}

.tms-page-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 36px;
  padding: 0 8px;
  border-radius: 7px;
  border: 1.5px solid var(--c-line);
  background: var(--c-paper);
  color: var(--c-ink-soft);
  font-family: var(--f-sans);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.18s, transform 0.1s;
}

.tms-page-btn:hover {
  border-color: var(--c-plum-line);
  color: var(--c-plum);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-page-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-page-btn--active {
  background: var(--c-plum);
  border-color: var(--c-plum);
  color: var(--c-paper);
  box-shadow: var(--btn-shadow-raised);
}

.tms-page-btn--active:hover {
  background: var(--c-plum-strong);
  transform: none;
}

.tms-page-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  box-shadow: none;
}

/* ═══════════════════════════════════════════════════════════
   모달 (충전 + 비회원 게이트)
═══════════════════════════════════════════════════════════ */
.tms-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15,23,42,0.55);
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.tms-modal {
  background: var(--c-paper);
  border-radius: 16px;
  padding: 32px 28px;
  width: 100%;
  max-width: 420px;
  box-shadow: 0 20px 60px rgba(15,23,42,0.25);
  position: relative;
}

.tms-modal__close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--c-line);
  background: var(--c-paper-2);
  color: var(--c-mute);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
}

.tms-modal__close:hover {
  background: var(--c-line-soft);
  color: var(--c-ink);
}

.tms-modal__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  background: var(--c-plum-soft);
  color: var(--c-plum);
  margin: 0 auto 16px;
  font-size: 26px;
}

.tms-modal__title {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--c-ink);
  text-align: center;
  margin-bottom: 8px;
}

.tms-modal__desc {
  font-size: 0.85rem;
  color: var(--c-mute);
  text-align: center;
  margin-bottom: 20px;
  line-height: 1.6;
}

/* 충전 모달 포인트 요약 3칸 */
.tms-charge-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 16px;
}

.tms-charge-item {
  background: var(--c-paper-2);
  border: 1px solid var(--c-line-soft);
  border-radius: 8px;
  padding: 12px 8px;
  text-align: center;
}

.tms-charge-item--deficit {
  background: var(--c-danger-soft);
  border-color: var(--c-danger-line);
}

.tms-charge-item__label {
  font-size: 0.7rem;
  color: var(--c-mute);
  font-weight: 600;
  margin-bottom: 4px;
}

.tms-charge-item--deficit .tms-charge-item__label {
  color: var(--c-danger);
}

.tms-charge-item__val {
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--c-ink);
  font-family: var(--f-mono);
}

.tms-charge-item--deficit .tms-charge-item__val {
  color: var(--c-danger);
}

/* 출석체크 안내 */
.tms-attend-hint {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--c-ok-soft);
  border: 1px solid var(--c-ok);
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 16px;
}

.tms-attend-hint__text {
  font-size: 0.78rem;
  color: var(--c-ok);
  font-weight: 600;
  flex: 1;
}

.tms-attend-btn {
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  border-radius: 6px;
  border: none;
  background: var(--c-ok);
  color: var(--c-paper);
  font-size: 0.74rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
  white-space: nowrap;
}

.tms-attend-btn:hover {
  background: var(--c-ok);
  opacity: 0.88;
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-attend-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* 모달 버튼 행 */
.tms-modal__actions {
  display: flex;
  gap: 10px;
}

.tms-modal__cancel {
  flex: 1;
  height: 44px;
  border: 1.5px solid var(--c-line);
  border-radius: 8px;
  background: transparent;
  color: var(--c-mute);
  font-family: var(--f-sans);
  font-size: 0.88rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
}

.tms-modal__cancel:hover {
  background: var(--c-paper-2);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-modal__cancel:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-modal__charge-btn {
  flex: 2;
  height: 44px;
  border: none;
  border-radius: 8px;
  background: var(--c-plum);
  color: var(--c-paper);
  font-family: var(--f-sans);
  font-size: 0.88rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
}

.tms-modal__charge-btn:hover {
  background: var(--c-plum-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-modal__charge-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-modal__login-btn {
  flex: 2;
  height: 44px;
  border: none;
  border-radius: 8px;
  background: var(--c-plum);
  color: var(--c-paper);
  font-family: var(--f-sans);
  font-size: 0.88rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
}

.tms-modal__login-btn:hover {
  background: var(--c-plum-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-modal__login-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* ═══════════════════════════════════════════════════════════
   hidden 가드 (layout hidden 충돌 방지)
═══════════════════════════════════════════════════════════ */
[hidden] { display: none !important; }

/* ═══════════════════════════════════════════════════════════
   Phase 2: 로딩 / 에러 / 빈결과 / 이미지
═══════════════════════════════════════════════════════════ */
.tms-loading {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 48px 16px;
  color: var(--c-mute);
  font-size: 0.95rem;
}
.tms-loading__spinner {
  display: inline-block;
  width: 18px;
  height: 18px;
  border: 2px solid var(--c-border, #e2e8f0);
  border-top-color: var(--c-primary, #2563eb);
  border-radius: 50%;
  animation: tms-spin 0.7s linear infinite;
}
@keyframes tms-spin {
  to { transform: rotate(360deg); }
}
.tms-no-results {
  padding: 48px 16px;
  text-align: center;
  color: var(--c-mute);
  font-size: 0.95rem;
}
.tms-error {
  padding: 48px 16px;
  text-align: center;
  color: #dc2626;
  font-size: 0.95rem;
}
/* 그리드 카드 이미지 — 실 이미지 */
.tms-grid-card__img-actual {
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 6px;
}
/* 리스트 이미지 — 실 이미지 */
.tms-list-img--actual {
  width: 40px;
  height: 40px;
  object-fit: contain;
}
/* 0건 필터 칩 흐리게 */
.tms-filter-chip--zero {
  opacity: 0.45;
}

/* facet에 존재하지 않는 류 칩 숨김 (hidden 속성과 충돌 없음) */
.tms-filter-chip--absent {
  display: none !important;
}

/* ═══════════════════════════════════════════════════════════
   반응형 — 1024px
═══════════════════════════════════════════════════════════ */
@media (max-width: 1024px) {
  .tms-grid-view {
    grid-template-columns: repeat(4, 1fr);
  }

  .tms-usp-badges {
    grid-template-columns: repeat(2, 1fr);
  }

  .tms-mode-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .tms-country-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════════
   반응형 — 768px
═══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .tms-hero-inner {
    padding: 20px 16px 48px;
    border-radius: 0;   /* 모바일: 전폭 시 라운드 제거 */
    box-shadow: none;
  }

  .tms-usp-banner {
    padding: 22px 18px;
  }

  .tms-usp-banner__title {
    font-size: 1.1rem;
  }

  .tms-usp-badges {
    grid-template-columns: 1fr 1fr;
  }

  .tms-country-grid {
    grid-template-columns: repeat(3, 1fr);
  }

  .tms-mode-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .tms-grid-view {
    grid-template-columns: repeat(2, 1fr);
  }

  .tms-results-topbar {
    padding: 10px 16px;
  }

  .tms-filter-bar {
    padding: 8px 16px;
  }

  .tms-results-header {
    padding: 12px 16px;
  }

  .tms-results-body {
    padding: 0 16px 32px;
  }

  .tms-results-controls {
    flex-wrap: wrap;
    gap: 6px;
  }

  .tms-list-view {
    display: block;
    overflow-x: auto;
  }
}

/* ═══════════════════════════════════════════════════════════
   반응형 — 480px
═══════════════════════════════════════════════════════════ */
@media (max-width: 480px) {
  .tms-country-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .tms-lang-grid {
    grid-template-columns: 1fr;
  }

  .tms-mode-grid {
    grid-template-columns: 1fr;
  }

  .tms-grid-view {
    grid-template-columns: repeat(2, 1fr);
  }

  .tms-usp-banner__title {
    font-size: 1rem;
  }

  .tms-charge-summary {
    grid-template-columns: 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════
   스크린 C: 상표 상세 (좌 ResultRail + 우 DetailPanel)
   prefix: tms-detail-*
   feedback_ccbrand_front_buttons_must_be_3d: 버튼에 btn-shadow-raised 필수
═══════════════════════════════════════════════════════════ */
.tms-screen--detail {
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--tms-detail-top, 110px));
  /* overflow: hidden 제거 — sticky topbar 무력화 원인.
     내용 클립은 .tms-detail-main { overflow: hidden } 이 담당 */
  background: var(--c-paper);
}

/* ── 상세 상단 검색바 (results-topbar 동일 스타일, sticky) ── */
.tms-detail-topbar {
  background: var(--c-paper);
  border-bottom: 1px solid var(--c-line-soft);
  padding: 14px 24px;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  z-index: 30;
}

/* ── 상세 레일+패널 래퍼 (flex row, 남은 높이 모두 차지) ── */
.tms-detail-main {
  flex: 1;
  display: flex;
  overflow: hidden;
  min-height: 0;
}

/* ── 좌측 ResultRail ── */
.tms-detail-rail {
  width: 460px;
  flex-shrink: 0;
  border-right: 1px solid var(--c-line-soft);
  background: var(--c-paper);
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.tms-detail-rail__header {
  padding: 14px 16px;
  border-bottom: 1px solid var(--c-line-soft);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.tms-detail-rail__back {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--f-sans);
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--c-plum);
  padding: 5px 9px;
  border-radius: 7px;
  border: 1px solid var(--c-plum-line);
  background: var(--c-plum-soft);
  white-space: nowrap;
  cursor: pointer;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
  flex-shrink: 0;
}

.tms-detail-rail__back:hover {
  background: var(--c-plum-tint);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}

.tms-detail-rail__back:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

.tms-detail-rail__query {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--c-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.tms-detail-rail__count {
  font-size: 0.8rem;
  color: var(--c-mute);
  white-space: nowrap;
  flex-shrink: 0;
}

.tms-detail-rail__count b {
  color: var(--c-plum);
}

.tms-detail-rail__grid {
  flex: 1;
  min-height: 0;        /* flex 자식 shrink 허용 → overflow-y scroll 활성화 */
  overflow-y: auto;
  padding: 12px 12px 0; /* 하단 padding 제거 — 페이징 영역에서 처리 */
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  align-content: start;
  align-items: start;   /* 카드가 행 높이에 맞춰 stretch 되지 않도록 */
}

/* Rail 카드 */
.tms-detail-rail-card {
  text-align: left;
  cursor: pointer;
  padding: 0;
  overflow: hidden;
  background: var(--c-paper);
  border-radius: 10px;
  border: 1px solid var(--c-line-soft);
  transition: border-color 0.14s, transform 0.14s;
  position: relative;
  display: block;
  width: 100%;
}

.tms-detail-rail-card:hover:not(.tms-detail-rail-card--active) {
  border-color: var(--c-plum-line);
  transform: translateY(-2px);
}

.tms-detail-rail-card--active {
  border: 2px solid var(--c-plum) !important;
  box-shadow: 0 6px 18px rgba(124,58,237,0.16);
}

.tms-detail-rail-card__thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  background: repeating-linear-gradient(
    45deg,
    var(--c-paper-2),
    var(--c-paper-2) 6px,
    var(--c-paper) 6px,
    var(--c-paper) 12px
  );
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}

.tms-detail-rail-card__thumb-img {
  position: absolute; /* 부모 position:relative 기준으로 꽉 채움 */
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.tms-detail-rail-card__thumb-label {
  /* 이미지 있으면 [hidden] 으로 숨겨짐. 없거나 onerror 시 절대위치로 중앙 노출 */
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--c-ink-soft);
  padding: 0 8px;
  text-align: center;
  letter-spacing: -0.02em;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}

.tms-detail-rail-card__status-badge {
  position: absolute;
  top: 5px;
  left: 5px;
  font-size: 0.62rem;
  font-weight: 700;
  padding: 2px 5px;
  border-radius: 3px;
  white-space: nowrap;
}

.tms-detail-rail-card__cls-badge {
  position: absolute;
  top: 5px;
  right: 5px;
  font-family: var(--f-mono);
  font-size: 0.62rem;
  font-weight: 800;
  padding: 2px 5px;
  border-radius: 3px;
  background: var(--c-paper);
  color: var(--c-ink-soft);
  border: 1px solid var(--c-line-soft);
}

.tms-detail-rail-card__info {
  padding: 7px 9px 9px;
}

.tms-detail-rail-card__name {
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--c-ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tms-detail-rail-card__sub {
  font-size: 0.7rem;
  color: var(--c-mute);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tms-detail-rail-card__appno {
  font-family: var(--f-mono);
  font-size: 0.62rem;
  color: var(--c-mute);
  margin-top: 4px;
  letter-spacing: 0.02em;
}

.tms-detail-rail-card__check {
  position: absolute;
  bottom: 8px;
  right: 8px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--c-plum);
  color: var(--c-paper);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.62rem;
  font-weight: 800;
  pointer-events: none;
}

/* ── 우측 DetailPanel ── */
.tms-detail-panel {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--c-paper);   /* 상세 우측 패널 흰색 */
  overflow: hidden;
}

.tms-detail-panel__loading {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: var(--c-mute);
  font-size: 0.95rem;
}

/* ─ 헤더 ─ */
.tms-detail-header {
  background: var(--c-paper);
  border-bottom: 1px solid var(--c-line-soft);
  padding: 16px 28px;
  flex-shrink: 0;
}

.tms-detail-header__inner {
  display: flex;
  align-items: flex-start;
  gap: 18px;
}

.tms-detail-mark-thumb {
  position: relative; /* img/label absolute 기준점 */
  width: 120px;
  height: 84px;
  flex-shrink: 0;
  border-radius: 6px;
  border: 1px solid var(--c-line-soft);
  background: repeating-linear-gradient(
    45deg,
    var(--c-paper-2),
    var(--c-paper-2) 6px,
    var(--c-paper) 6px,
    var(--c-paper) 12px
  );
  overflow: hidden;
}

.tms-detail-mark-thumb img {
  position: absolute; /* 컨테이너 꽉 채움, 텍스트 라벨과 겹치지 않게 분리 */
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.tms-detail-mark-thumb__label {
  /* 이미지 없거나 onerror 시에만 노출. 이미지 있으면 DOM 자체를 제거하는 onerror 사용 */
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--c-ink-soft);
  letter-spacing: -0.02em;
  padding: 0 6px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.tms-detail-header__meta {
  flex: 1;
  min-width: 0;
}

.tms-detail-header__badges {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 4px;
}

.tms-detail-header__kind {
  font-family: var(--f-mono);
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--c-mute);
  letter-spacing: 0.04em;
}

.tms-detail-header__title {
  margin: 2px 0;
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--c-ink);
  letter-spacing: -0.02em;
  word-break: keep-all;
  overflow-wrap: break-word;
}

.tms-detail-header__sub {
  font-size: 0.85rem;
  color: var(--c-mute);
}

.tms-detail-header__numbers {
  font-family: var(--f-mono);
  font-size: 0.8rem;
  color: var(--c-ink-soft);
  margin-top: 6px;
  letter-spacing: 0.02em;
}

/* ─ 헤더 버튼 컬럼 (닫기 + 유사군검색 세로 스택) ─ */
.tms-detail-header__actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  flex-shrink: 0;
}

/* ─ 상세 닫기/검색결과 버튼 — 레드 raised 3D ─ */
.tms-detail-close-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 18px;
  border-radius: 8px;
  cursor: pointer;
  font-family: var(--f-sans);
  font-size: 0.85rem;
  font-weight: 700;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1.5px solid var(--c-danger-strong);
  background: var(--c-danger);
  color: #fff;
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
}
.tms-detail-close-btn:hover {
  background: var(--c-danger-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}
.tms-detail-close-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* ─ 본 유사군코드로 검색하기 버튼 — plum raised 3D ─ */
.tms-detail-sg-search-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 8px 18px;
  border-radius: 8px;
  cursor: pointer;
  font-family: var(--f-sans);
  font-size: 0.85rem;
  font-weight: 700;
  white-space: nowrap;
  flex-shrink: 0;
  border: 1.5px solid var(--c-plum-line);
  background: var(--c-plum);
  color: var(--c-paper);
  box-shadow: var(--btn-shadow-raised);
  transition: background 0.15s, box-shadow 0.18s, transform 0.1s;
}
.tms-detail-sg-search-btn:hover {
  background: var(--c-plum-strong);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}
.tms-detail-sg-search-btn:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* ─ 메인 탭 ─ */
.tms-detail-tabs {
  background: var(--c-paper);
  border-bottom: 1px solid var(--c-line-soft);
  padding: 0 28px;
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}

.tms-detail-tab {
  padding: 12px 16px;
  border: none;
  background: transparent;
  cursor: pointer;
  font-family: var(--f-sans);
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--c-mute);
  border-bottom: 2.5px solid transparent;
  margin-bottom: -1px;
  transition: color 0.15s, border-color 0.15s;
  white-space: nowrap;
}

.tms-detail-tab--active {
  font-weight: 700;
  color: var(--c-plum);
  border-bottom-color: var(--c-plum);
}

/* ─ 본문 스크롤 영역 ─ */
.tms-detail-body {
  flex: 1;
  overflow-y: auto;
  position: relative;
}

/* ─ 상세 탭 본문 컨테이너 (앵커 nav 제거 후 단일 컬럼) ─ */
.tms-detail-content {
  display: block;
}

/* ─ 앵커 사이드 nav ─ */
.tms-detail-anchor-nav {
  position: sticky;
  top: 0;
  align-self: flex-start;
  width: 158px;
  flex-shrink: 0;
  padding: 20px 0 20px 20px;
}

.tms-detail-anchor-nav__title {
  font-family: var(--f-mono);
  font-size: 0.65rem;
  font-weight: 700;
  color: var(--c-mute);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 8px;
  padding-left: 10px;
}

.tms-detail-anchor-nav__list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.tms-detail-anchor-btn {
  text-align: left;
  cursor: pointer;
  padding: 7px 10px;
  border-radius: 7px;
  border: none;
  border-left: 2px solid transparent;
  font-family: var(--f-sans);
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--c-ink-soft);
  background: transparent;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
  white-space: nowrap;
  display: block;
  width: 100%;
}

.tms-detail-anchor-btn:hover {
  color: var(--c-plum);
  background: var(--c-plum-soft);
}

.tms-detail-anchor-btn--active {
  font-weight: 700;
  color: var(--c-plum);
  background: var(--c-plum-soft);
  border-left-color: var(--c-plum);
}

/* ─ 섹션 본문 ─ */
.tms-detail-sections {
  flex: 1;
  min-width: 0;
  padding: 20px 28px 80px;
}

.tms-detail-section {
  margin-bottom: 26px;
  scroll-margin-top: 64px;
}

.tms-detail-section__header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}

.tms-detail-section__bar {
  width: 4px;
  height: 18px;
  border-radius: 2px;
  background: var(--c-plum);
  flex-shrink: 0;
}

.tms-detail-section__title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--c-ink);
  letter-spacing: -0.01em;
}

.tms-detail-subhead {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--c-ink-soft);
  margin: 14px 0 6px;
  word-break: keep-all;
}

/* ─ KVTable (서지정보) ─ */
.tms-detail-kv {
  border: 1px solid var(--c-line-soft);
  border-radius: 8px;
  overflow: hidden;
  background: var(--c-paper);
}

.tms-detail-kv__row {
  display: grid;
  grid-template-columns: 210px 1fr;
  border-top: 1px solid var(--c-line-soft);
}

.tms-detail-kv__row:first-child {
  border-top: none;
}

.tms-detail-kv__label {
  padding: 9px 14px;
  background: var(--c-paper-2);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--c-ink-soft);
  border-right: 1px solid var(--c-line-soft);
  display: flex;
  align-items: center;
  word-break: keep-all;
}

.tms-detail-kv__value {
  padding: 9px 14px;
  font-size: 0.85rem;
  color: var(--c-ink);
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  line-height: 1.5;
  word-break: keep-all;
}

/* ─ DataTable ─ */
.tms-detail-dt {
  border: 1px solid var(--c-line-soft);
  border-radius: 8px;
  overflow: hidden;
  background: var(--c-paper);
}

.tms-detail-dt__th {
  padding: 8px 12px;
  font-size: 0.76rem;
  font-weight: 700;
  color: var(--c-mute);
  white-space: nowrap;
}

.tms-detail-dt__body-row {
  border-top: 1px solid var(--c-line-soft);
}

.tms-detail-dt__td {
  padding: 9px 12px;
  font-size: 0.82rem;
  color: var(--c-ink);
  line-height: 1.5;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* ─ 준비중 안내 ─ */
.tms-detail-coming {
  padding: 60px 28px;
  text-align: center;
}

.tms-detail-coming__icon {
  font-size: 2.5rem;
  margin-bottom: 10px;
  opacity: 0.5;
}

.tms-detail-coming__title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--c-ink-soft);
  margin-bottom: 6px;
}

.tms-detail-coming__desc {
  font-size: 0.85rem;
  color: var(--c-mute);
}

/* ─ 상세 스크린 반응형 ─ */
@media (max-width: 1280px) {
  .tms-detail-rail {
    width: 360px;
  }
}

@media (max-width: 1024px) {
  .tms-detail-rail {
    width: 300px;
  }
  .tms-detail-anchor-nav {
    display: none;
  }
  .tms-detail-kv__row {
    grid-template-columns: 140px 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════
   STEP NC: 분류 선택 — hero 체크박스형 박스 그리드
   prefix: tms-nc- (nice-class, tm-search hero 전용)
   word-break: keep-all 강제
   3D 버튼: var(--btn-shadow-raised) (feedback_ccbrand_front_buttons_must_be_3d)
═══════════════════════════════════════════════════════════ */

/* 헤더 우측 "선택사항" 배지 (SG step 과 동일 패턴) */
.tms-nc-step__opt {
  margin-left: auto;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--c-mute);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--c-paper-2);
  border: 1px solid var(--c-line-soft);
  white-space: nowrap;
}

/* 전체선택 / 전체취소 컨트롤 행 */
.tms-nc-ctrl {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

/* 컨트롤 버튼 공통 */
.tms-nc-ctrl__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 30px;
  padding: 0 14px;
  border-radius: 6px;
  font-family: var(--f-sans);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s, transform 0.1s;
  white-space: nowrap;
}

/* 전체 선택 — 보라 outline (raised 3D 필수) */
.tms-nc-ctrl__btn--all {
  border: 1.5px solid var(--c-plum-line);
  background: var(--c-plum-soft);
  color: var(--c-plum);
  box-shadow: var(--btn-shadow-raised);
}
.tms-nc-ctrl__btn--all:hover {
  background: var(--c-plum);
  color: var(--c-paper);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}
.tms-nc-ctrl__btn--all:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* 전체 취소 — neutral (raised 3D 필수) */
.tms-nc-ctrl__btn--clear {
  border: 1.5px solid var(--c-line);
  background: var(--c-paper);
  color: var(--c-mute);
  box-shadow: var(--btn-shadow-raised);
}
.tms-nc-ctrl__btn--clear:hover {
  border-color: var(--c-danger-line);
  color: var(--c-danger);
  background: var(--c-danger-soft);
  box-shadow: var(--btn-shadow-hover);
  transform: translateY(-1px);
}
.tms-nc-ctrl__btn--clear:active {
  box-shadow: var(--btn-shadow-pressed);
  transform: translateY(0);
}

/* 선택 힌트 텍스트 ("N개 선택됨") */
.tms-nc-ctrl__hint {
  font-size: 0.74rem;
  font-weight: 600;
  color: var(--c-plum);
}

/* 1~45류 박스 그리드 — 기본 23열 (촘촘, 1440px+) */
.tms-nc-grid {
  display: grid;
  grid-template-columns: repeat(23, 1fr);
  gap: 4px;
}

/* 개별 류 박스 — 작은 정사각형 */
.tms-nc-box {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;   /* 정사각형 */
  border-radius: 5px;
  border: 1.5px solid var(--c-line-soft);
  background: var(--c-paper);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  position: relative;
  outline: none;
  padding: 0;
}

.tms-nc-box:hover {
  border-color: var(--c-plum-line);
  background: var(--c-plum-soft);
}

.tms-nc-box--selected {
  border-color: var(--c-plum) !important;
  background: var(--c-plum-soft) !important;
  box-shadow: 0 0 0 2px var(--c-plum-tint) !important;
}

/* 체크 아이콘 (선택 시 opacity 1, 기본 0) */
.tms-nc-box__check {
  font-size: 0.5rem;
  font-weight: 800;
  color: var(--c-plum);
  opacity: 0;
  position: absolute;
  top: 2px;
  right: 2px;
  line-height: 1;
  pointer-events: none;
}

.tms-nc-box--selected .tms-nc-box__check {
  opacity: 1;
}

/* 번호 텍스트 (숫자만 — "류" 접미사 없음) */
.tms-nc-box__num {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--c-ink-soft);
  line-height: 1;
  white-space: nowrap;
}

.tms-nc-box--selected .tms-nc-box__num {
  color: var(--c-plum);
  font-weight: 700;
}

/* 반응형 — NC 그리드 열 수 조정 */
@media (max-width: 1024px) {
  .tms-nc-grid {
    grid-template-columns: repeat(15, 1fr);
  }
}
@media (max-width: 768px) {
  .tms-nc-grid {
    grid-template-columns: repeat(10, 1fr);
  }
}
@media (max-width: 480px) {
  .tms-nc-grid {
    grid-template-columns: repeat(9, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════════
   유사군코드 STEP (tms-sg-*)
   prefix: tms-sg- (similar-group, tm-search 전용)
   word-break: keep-all 강제
═══════════════════════════════════════════════════════════ */

/* STEP 헤더 우측 "선택사항" 배지 */
.tms-sg-step__opt {
  margin-left: auto;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--c-mute);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--c-paper-2);
  border: 1px solid var(--c-line-soft);
  white-space: nowrap;
}

/* 자동완성 입력창 래퍼 */
.tms-sg-input-wrap {
  position: relative;
  margin-bottom: 10px;
}

/* 자동완성 입력창 */
.tms-sg-input {
  width: 100%;
  height: 46px;
  border: 2px solid var(--c-line);
  border-radius: 10px;
  padding: 0 16px;
  font-family: var(--f-sans);
  font-size: 0.9rem;
  color: var(--c-ink);
  background: var(--c-paper);
  outline: none;
  transition: border-color 0.18s, box-shadow 0.18s;
  word-break: keep-all;
}

.tms-sg-input:focus {
  border-color: var(--c-plum);
  box-shadow: 0 0 0 3px var(--c-plum-tint);
}

.tms-sg-input::placeholder {
  color: var(--c-mute);
}

/* 드롭다운 */
.tms-sg-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: var(--c-paper);
  border: 1.5px solid var(--c-plum-line);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
  z-index: 100;
  overflow: hidden;
  max-height: 280px;
  overflow-y: auto;
}

/* 드롭다운 옵션 */
.tms-sg-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  cursor: pointer;
  border-bottom: 1px solid var(--c-line-soft);
  transition: background 0.12s;
  word-break: keep-all;
}

.tms-sg-option:last-child {
  border-bottom: none;
}

.tms-sg-option:hover,
.tms-sg-option--focused {
  background: var(--c-plum-soft);
}

.tms-sg-option--selected {
  background: var(--c-plum-tint);
}

.tms-sg-option__code {
  font-family: var(--f-mono);
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--c-plum);
  flex-shrink: 0;
  min-width: 74px;
}

.tms-sg-option__cls {
  font-size: 0.74rem;
  color: var(--c-ink-soft);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tms-sg-option__count {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--c-mute);
  background: var(--c-paper-2);
  border-radius: 999px;
  padding: 2px 7px;
  flex-shrink: 0;
  font-family: var(--f-mono);
  white-space: nowrap;
}

.tms-sg-option__checkmark {
  font-size: 0.8rem;
  color: var(--c-plum);
  flex-shrink: 0;
  visibility: hidden;
  width: 14px;
}

.tms-sg-option--selected .tms-sg-option__checkmark {
  visibility: visible;
}

/* 빈 드롭다운 안내 */
.tms-sg-dropdown-empty {
  padding: 12px 16px;
  font-size: 0.82rem;
  color: var(--c-mute);
  text-align: center;
}

/* 상품명 자동완성 옵션 (tms-sg-option--goods 추가 클래스) */
.tms-sg-option--goods {
  gap: 6px;
}

/* 상품명 텍스트: 유연하게 늘어남 */
.tms-sg-option__goods-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.84rem;
  color: var(--c-ink);
  font-weight: 500;
  word-break: keep-all;
}

/* 선택 칩 컨테이너 */
.tms-sg-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 0;
}

/* 선택 칩 */
.tms-sg-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 6px 4px 10px;
  border-radius: 999px;
  background: var(--c-plum);
  color: var(--c-paper);
  font-size: 0.78rem;
  font-weight: 700;
  white-space: nowrap;
  animation: tms-sg-chip-in 0.14s ease;
}

@keyframes tms-sg-chip-in {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}

.tms-sg-chip__code {
  font-family: var(--f-mono);
}

.tms-sg-chip__cls {
  font-size: 0.7rem;
  font-weight: 400;
  opacity: 0.8;
}

/* 상품명에서 온 코드 칩 — 상품명 부제 라벨 */
.tms-sg-chip__goods {
  font-size: 0.68rem;
  font-weight: 400;
  opacity: 0.75;
  max-width: 6rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 칩 제거 버튼 */
.tms-sg-chip__x {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.28);
  color: var(--c-paper);
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.12s;
  flex-shrink: 0;
  padding: 0;
  font-family: var(--f-sans);
}

.tms-sg-chip__x:hover {
  background: rgba(255,255,255,0.45);
}

/* 반응형 — 768px */
@media (max-width: 768px) {
  .tms-sg-input {
    height: 42px;
    font-size: 0.85rem;
  }
  .tms-sg-dropdown {
    max-height: 220px;
  }
}

@media (max-width: 768px) {
  .tms-screen--detail {
    flex-direction: column;
    height: auto;
    overflow: visible;
  }
  .tms-detail-topbar {
    padding: 10px 16px;
  }
  .tms-detail-main {
    flex-direction: column;
  }
  .tms-detail-rail {
    width: 100%;
    height: 220px;
    border-right: none;
    border-bottom: 1px solid var(--c-line-soft);
    overflow: hidden;
  }
  .tms-detail-rail__grid {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    gap: 8px;
    padding: 8px 12px;
    grid-template-columns: unset;
  }
  .tms-detail-rail-card {
    width: 130px;
    min-width: 130px;
    flex-shrink: 0;
  }
  .tms-pagination--rail {
    display: none; /* 모바일 가로 슬라이드 뷰에서는 레일 페이징 숨김 */
  }
  .tms-detail-panel {
    flex: none;
    height: auto;
    overflow: visible;
  }
  .tms-detail-body {
    overflow-y: visible;
    flex: none;
  }
  .tms-detail-header {
    padding: 12px 16px;
  }
  .tms-detail-header__inner {
    flex-wrap: wrap;
  }
  .tms-detail-header__actions {
    margin-left: auto; /* 모바일 flex-wrap 시 우측 정렬 */
  }
  .tms-detail-close-btn,
  .tms-detail-sg-search-btn {
    font-size: 0.78rem;
    padding: 7px 14px;
  }
  .tms-detail-tabs {
    padding: 0 16px;
    overflow-x: auto;
  }
  .tms-detail-sections {
    padding: 16px 16px 60px;
  }
  .tms-detail-kv__row {
    grid-template-columns: 110px 1fr;
  }
  .tms-mc-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════════
   멀티분류 탭
═══════════════════════════════════════════════════════════ */
.tms-mc-desc {
  font-size: 0.8rem;
  color: var(--c-ink-soft);
  line-height: 1.6;
  word-break: keep-all;
  margin-bottom: 16px;
}

.tms-mc-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 14px;
}

.tms-mc-card-wrap {
  border-radius: 11px;
  transition: box-shadow 0.18s;
}

.tms-mc-card-wrap--active {
  box-shadow: 0 0 0 3px var(--c-plum);
  border-radius: 11px;
}

.tms-mc-card-wrap--active .tms-grid-card {
  border-color: var(--c-plum);
}

@media (max-width: 767px) {
  .tms-mc-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════════
   주지·저명 탭 — 외부 시장 실사용 근거 인라인 그리드 (D-014/D-015, tm_market_search 프록시)
   기존 그리드/리스트/페이지네이션 영역을 대체 표시. 카드 스타일은 .tms-grid-card 관례 따름.
   D-015: 고유 상품명별 그룹(.tms-market-goods-group) 안에 소스별 섹션(.tms-market-section)을 중첩.
═══════════════════════════════════════════════════════════ */
.tms-market-view {
  margin-bottom: 28px;
}

/* 고유 상품명 1건 그룹 — 안에 소스(쇼핑/블로그)별 .tms-market-section 이 중첩됨 */
.tms-market-goods-group {
  margin-bottom: 32px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--c-line-soft);
}

.tms-market-goods-group:last-of-type {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.tms-market-goods-group__header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}

.tms-market-goods-group__label {
  font-size: 1rem;
  font-weight: 800;
  color: var(--c-ink);
  word-break: keep-all;
  padding-left: 10px;
  border-left: 3px solid var(--c-plum);
}

/* 상한(MARKET_GOODS_CAP) 초과 안내 */
.tms-market-overflow {
  margin-top: 8px;
  padding: 14px 16px;
  text-align: center;
  font-size: 0.82rem;
  color: var(--c-mute);
  word-break: keep-all;
  background: var(--c-paper-2);
  border-radius: 8px;
}

/* 상품명 그룹 내부용 컴팩트 상태 표시 (전체 화면용 .tms-loading/.tms-error/.tms-no-results 보다 축소) */
.tms-loading--inline {
  padding: 24px 16px;
  font-size: 0.86rem;
}

.tms-error--inline {
  padding: 24px 16px;
  font-size: 0.86rem;
}

.tms-no-results--inline {
  padding: 24px 16px;
  font-size: 0.86rem;
}

/* 폴링 소진(timeout) 안내 — silent drop 금지 */
.tms-market-timeout-notice {
  margin-top: 12px;
  padding: 10px 14px;
  font-size: 0.82rem;
  color: var(--c-mute);
  background: var(--c-paper-2);
  border-radius: 6px;
  word-break: keep-all;
}

.tms-market-retry-btn {
  display: inline;
  background: none;
  border: none;
  padding: 0;
  margin-left: 4px;
  font-size: inherit;
  color: var(--c-primary, #3b82f6);
  text-decoration: underline;
  cursor: pointer;
  word-break: keep-all;
}

.tms-market-retry-btn:hover {
  opacity: 0.75;
}

.tms-market-section {
  margin-bottom: 24px;
}

.tms-market-section:last-child {
  margin-bottom: 0;
}

.tms-market-section__header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}

.tms-market-section__label {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--c-ink);
  word-break: keep-all;
}

.tms-market-section__meta {
  font-size: 0.74rem;
  color: var(--c-mute);
  word-break: keep-all;
}

.tms-market-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}

.tms-market-card {
  display: flex;
  flex-direction: column;
  background: var(--c-paper);
  border: 1px solid var(--c-line-soft);
  border-radius: 10px;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: box-shadow 0.18s, transform 0.15s;
}

.tms-market-card:hover {
  box-shadow: var(--sh-md);
  transform: translateY(-2px);
}

.tms-market-card__img {
  width: 100%;
  aspect-ratio: 1/1;
  background: var(--c-paper-2);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  position: relative;
}

.tms-market-card__img-actual {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.tms-market-card__img-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--c-plum-soft) 0%, var(--c-plum-tint) 100%);
  color: var(--c-plum);
  font-size: 13px;
  font-weight: 700;
  word-break: keep-all;
  overflow-wrap: break-word;
  text-align: center;
  padding: 6px;
  line-height: 1.3;
}

.tms-market-card__info {
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1;
}

.tms-market-card--blog .tms-market-card__info {
  padding: 14px;
}

.tms-market-card__title {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--c-ink);
  line-height: 1.35;
  word-break: keep-all;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.tms-market-card__price {
  font-size: 0.86rem;
  font-weight: 700;
  color: var(--c-plum);
}

.tms-market-card__seller {
  font-size: 0.72rem;
  color: var(--c-mute);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tms-market-card__snippet {
  font-size: 0.76rem;
  color: var(--c-ink-soft);
  line-height: 1.4;
  word-break: keep-all;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

@media (max-width: 1024px) {
  .tms-market-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 768px) {
  .tms-market-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 480px) {
  .tms-market-grid {
    grid-template-columns: 1fr;
  }
}

/* ═══════════════════════════════════════════════════════════
   전체 검색 로딩 오버레이 (#tmsSearchLoading)
   신규검색 시 _fetchSearch + _fetchExpand 양쪽 완료 전 표시.
   결과는 DOM 에 렌더되지만 오버레이가 가려 부분 노출 방지.
   word-break: keep-all (한국 CSS 표준)
═══════════════════════════════════════════════════════════ */
#tmsSearchLoading {
  padding: 80px 24px 100px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: var(--c-paper);
  min-height: 360px;
}

[hidden] { display: none !important; }

.tms-search-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  text-align: center;
  word-break: keep-all;
}

/* 돋보기 이모지 — 좌우 흔들림 */
.tms-search-loading__icon {
  font-size: 2.8rem;
  display: block;
  animation: tms-loading-wobble 1.3s ease-in-out infinite;
  transform-origin: bottom center;
}

@keyframes tms-loading-wobble {
  0%   { transform: rotate(-18deg); }
  50%  { transform: rotate(18deg); }
  100% { transform: rotate(-18deg); }
}

/* 통통 튀는 점 3개 */
.tms-search-loading__dots {
  display: flex;
  gap: 8px;
  align-items: flex-end;
  height: 28px;
}

.tms-search-loading__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--c-primary, #3b6ff5);
  animation: tms-loading-bounce 1.5s ease-in-out infinite;
}

.tms-search-loading__dot:nth-child(1) { animation-delay: 0s; }
.tms-search-loading__dot:nth-child(2) { animation-delay: 0.22s; }
.tms-search-loading__dot:nth-child(3) { animation-delay: 0.44s; }

@keyframes tms-loading-bounce {
  0%, 80%, 100% {
    transform: translateY(0);
    opacity: 0.35;
  }
  40% {
    transform: translateY(-18px);
    opacity: 1;
  }
}

.tms-search-loading__text {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--c-text);
  margin: 0;
  letter-spacing: -0.01em;
}

.tms-search-loading__sub {
  font-size: 0.83rem;
  color: var(--c-text-mute, #888);
  margin: 0;
}

/* prefers-reduced-motion: 애니메이션 비활성화 */
@media (prefers-reduced-motion: reduce) {
  .tms-search-loading__icon {
    animation: none;
  }
  .tms-search-loading__dot {
    animation: none;
    opacity: 1;
  }
}
