/* 커티 2026 리디자인. 색은 아래 토큰만 쓴다. 시즌 색은 --accent 하나만 바꾼다. */
:root {
  /* 글자 단계표 (A7-01). 크기는 이 다섯 토큰만 쓴다. 900 굵기는 페이지 제목과 워드마크(그리고 큰 표시 글자)에만 */
  --fs-title: 34px;     /* 페이지 제목 · 900 */
  --fs-subtitle: 22px;  /* 소제목(섹션 제목) · 800 */
  --fs-item: 18px;      /* 항목 제목(카드·목록·이름) · 700 */
  --fs-body: 16px;      /* 본문 · 400~500 */
  --fs-meta: 13px;      /* 보조(날짜·장소·출처·라벨) */
  --accent: #8e1b24; /* 연말 시즌: 깊은 빨강 */
  --bg: #ffffff;
  --ink: #111111;
  --ink-2: #555555;
  --line: #e5e5e5;
  --line-soft: #eeeeee;
  --wrap: 1120px;
  --gutter: 20px;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;
  font-size: var(--fs-body);
  line-height: 1.5;
  word-break: keep-all;
}
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
h1, h2, h3, p { margin: 0; }
button { font: inherit; color: inherit; }

.wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter); }
.skip { position: absolute; left: -999px; }
.skip:focus { left: 8px; top: 8px; background: var(--bg); padding: 8px; z-index: 10; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* 머리 */
.site-header { border-bottom: 1px solid var(--ink); background: var(--bg); position: sticky; top: 0; z-index: 5; }
.header-row { display: flex; justify-content: space-between; align-items: center; padding-top: 16px; }
/* 워드마크: 한글 "커티"(Pretendard 900) + 영문 "curty"(Bodoni Moda italic 700, 시즌 색). 베이스라인 정렬 */
.logo { display: inline-flex; align-items: baseline; gap: 0.2em; font-size: 24px; line-height: 1; }
.logo-ko { font-weight: 900; letter-spacing: -0.04em; color: #141414; }
/* 시인성: 가장 작은 광학 크기(opsz 6)로 가는 획을 굵게, 800 */
.logo-en { font-family: 'Bodoni Moda', 'Didot', 'Bodoni 72', serif; font-style: italic; font-weight: 800; font-variation-settings: 'opsz' 6; font-size: 0.9em; color: var(--accent); letter-spacing: 0; }
.logo:hover { text-decoration: none; }
.sample-badge { font-size: var(--fs-meta); font-weight: 500; color: var(--ink-2); border: 1px solid #cccccc; padding: 3px 8px; }
.nav { display: flex; gap: 22px; font-size: var(--fs-body); font-weight: 700; margin-top: 6px; }
.nav a { padding: 12px 0 9px; color: var(--ink-2); border-bottom: 3px solid transparent; }
.nav a:hover { text-decoration: none; color: var(--ink); }
.nav a[aria-current='page'] { color: var(--ink); border-bottom-color: var(--accent); }

main { min-height: 60vh; padding-bottom: 32px; }
main:focus { outline: none; }
.loading, .empty { color: var(--ink-2); padding: 32px 0; }

/* 검색 */
.search { padding: 20px 0 8px; position: relative; }
.search-box { display: flex; align-items: center; gap: 10px; border: 1.5px solid var(--ink); padding: 0 14px; height: 48px; }
.search-box input { border: 0; outline: none; font: inherit; font-size: 16px; flex: 1; background: transparent; color: var(--ink); min-width: 0; }
.search-results { border: 1.5px solid var(--ink); border-top: 0; background: var(--bg); }
.search-results a { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; border-top: 1px solid var(--line-soft); }
.search-results a:first-child { border-top: 0; }
.search-results .kind { font-size: var(--fs-meta); color: var(--ink-2); flex-shrink: 0; }

/* 섹션과 목록 */
.section { padding: 26px 0 8px; border-bottom: 1px solid var(--line); }
.section:last-child { border-bottom: 0; }
.section-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.section-title { font-size: var(--fs-subtitle); font-weight: 800; letter-spacing: -0.8px; }
.section-sub { font-size: var(--fs-meta); color: var(--ink-2); margin: 4px 0 8px; }
.more { font-size: var(--fs-meta); color: var(--ink-2); flex-shrink: 0; }
.label { font-size: var(--fs-meta); font-weight: 700; color: var(--ink-2); }

.rows { display: grid; grid-template-columns: 1fr; column-gap: 32px; }
.row { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 16px 0; border-top: 1px solid var(--line-soft); }
.row:hover { text-decoration: none; }
.row:hover .row-title { text-decoration: underline; }
.row-kicker { font-size: var(--fs-meta); font-weight: 700; letter-spacing: 0.5px; color: var(--ink-2); }
.row-badge { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); text-align: right; }
.row-title { font-size: var(--fs-item); font-weight: 700; letter-spacing: -0.5px; grid-column: 1 / 3; }
.row-meta { font-size: var(--fs-meta); color: var(--ink-2); grid-column: 1 / 3; }

/* 날짜로 찾기 */
.days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.day { min-height: 56px; border: 1px solid var(--line); background: var(--bg); padding: 6px 0; cursor: pointer; }
.day[aria-pressed='true'] { background: var(--accent); border-color: var(--accent); color: #ffffff; }
.day-dow { display: block; font-size: var(--fs-meta); font-weight: 500; }
.day-num { display: block; font-size: var(--fs-item); font-weight: 700; margin-top: 2px; }
.day-nav { display: flex; gap: 16px; }
.text-btn { background: none; border: 0; padding: 4px 0; font-size: var(--fs-meta); color: var(--accent); cursor: pointer; }
.text-btn:disabled { color: var(--line); cursor: default; }
.day-count { margin-top: 12px; font-size: var(--fs-meta); color: var(--ink-2); }
.day-count strong { color: var(--ink); }

/* 상세 페이지 */
.page-head { padding: 28px 0 20px; border-bottom: 1px solid var(--ink); }
.page-kicker { font-size: var(--fs-meta); font-weight: 700; color: var(--ink-2); }
.page-title { font-size: var(--fs-title); font-weight: 900; letter-spacing: -1.4px; line-height: 1.2; margin-top: 6px; }
.page-sub { font-size: var(--fs-body); color: var(--ink-2); margin-top: 8px; }
.facts { display: grid; grid-template-columns: 88px 1fr; gap: 8px 12px; padding: 20px 0; border-bottom: 1px solid var(--line); font-size: var(--fs-body); }
.facts dt { color: var(--ink-2); }
.facts dd { margin: 0; }
.prose { padding: 20px 0; font-size: var(--fs-body); line-height: 1.7; max-width: 680px; }
.prose p + p { margin-top: 12px; }

.btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 0 20px; border: 1.5px solid var(--ink); background: var(--ink); color: #ffffff; font-weight: 700; font-size: var(--fs-body); cursor: pointer; }
.btn:hover { text-decoration: none; background: var(--accent); border-color: var(--accent); }
.btn-line { background: var(--bg); color: var(--ink); }
.btn-line:hover { background: var(--bg); color: var(--accent); border-color: var(--accent); }
.actions { display: flex; flex-wrap: wrap; gap: 8px; padding: 20px 0; }
.note { font-size: var(--fs-meta); color: var(--ink-2); }

/* 회차별 캐스팅 */
.sessions { width: 100%; border-collapse: collapse; font-size: var(--fs-body); }
.sessions th, .sessions td { text-align: left; padding: 12px 8px 12px 0; border-top: 1px solid var(--line-soft); vertical-align: top; }
.sessions th { font-weight: 700; white-space: nowrap; width: 1%; }
.sessions .when { color: var(--ink-2); font-weight: 500; font-size: var(--fs-meta); display: block; }
.cast-line + .cast-line { margin-top: 2px; }
.cast-role { color: var(--ink-2); font-size: var(--fs-meta); margin-right: 6px; }
.cast-line a { font-weight: 700; }

.chips { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 8px 0 16px; }
.chips a { font-weight: 700; }

.footer-row { display: flex; align-items: baseline; gap: 16px; margin-bottom: 6px; }
.footer-logo { font-size: 16px; font-weight: 800; letter-spacing: -0.04em; color: var(--ink); }
.install-hint { margin-bottom: 8px; }
.footer-row a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
.site-footer { border-top: 1px solid var(--ink); padding: 28px 0 48px; font-size: var(--fs-meta); color: var(--ink-2); line-height: 1.6; }
.site-footer strong { color: var(--ink); }
.deploy-marker { position: fixed; right: 8px; bottom: 6px; font-size: 9px; letter-spacing: 0.1em; color: #bbbbbb; pointer-events: none; }

/* 홈 첫 화면 */
.hero { padding: 28px 0 20px; border-bottom: 1px solid var(--line); }
.hero-date { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.hero-title { font-size: 44px; font-weight: 900; letter-spacing: -2px; line-height: 1.05; margin: 8px 0 24px; }

/* 포스터 */
.poster-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px 12px; }
.poster-card { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.poster-card:hover { text-decoration: none; }
.poster-card:hover .poster-title { text-decoration: underline; }
.poster-frame { display: block; aspect-ratio: 3 / 4; background: var(--line-soft); overflow: hidden; margin-bottom: 6px; }
.poster-frame img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; transition: transform 0.4s ease; }
.poster-card:hover .poster-frame img { transform: scale(1.03); }
.poster-fallback { display: flex; align-items: flex-end; height: 100%; padding: 12px; font-size: var(--fs-item); font-weight: 700; letter-spacing: -0.8px; line-height: 1.15; background: var(--ink); color: #ffffff; }
.poster-badge { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.poster-title { font-size: var(--fs-body); font-weight: 700; letter-spacing: -0.4px; line-height: 1.3; }

/* 시즌 특집: 시즌 색 면 */
.season { background: var(--accent); color: #ffffff; margin: 0 calc(var(--gutter) * -1); padding: 36px var(--gutter) 32px; }
.season-label { font-size: var(--fs-meta); font-weight: 700; opacity: 0.85; }
.season-title { font-size: 34px; font-weight: 900; letter-spacing: -1.4px; line-height: 1.1; margin-top: 6px; }
.season-sub { font-size: var(--fs-meta); opacity: 0.85; margin-top: 8px; }
.season-scroll { display: grid; grid-auto-flow: column; grid-auto-columns: 46%; gap: 12px; overflow-x: auto; margin: 20px calc(var(--gutter) * -1) 0; padding: 0 var(--gutter) 4px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.season-scroll::-webkit-scrollbar { display: none; }
.season-scroll .poster-card { scroll-snap-align: start; }
.season .poster-badge, .season .row-meta { color: #ffffff; opacity: 0.85; }
.season .poster-frame { background: rgba(255, 255, 255, 0.12); }
.season a:focus-visible { outline-color: #ffffff; }

/* 상세 */
.show-poster { display: block; width: 100%; max-width: 420px; aspect-ratio: 3 / 4; object-fit: cover; object-position: top; margin-bottom: 20px; background: var(--line-soft); }
.page-title.display-name { font-size: 64px; letter-spacing: -3px; line-height: 1; }

/* 홈 위계 (A1-07) */
.home-sec { padding: 24px 0 28px; }
.sec-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 14px; }
.sec-title-xl { font-size: var(--fs-subtitle); font-weight: 800; letter-spacing: -0.03em; }
.sec-title { font-size: var(--fs-subtitle); font-weight: 800; letter-spacing: -0.03em; }
.sec-title-sm { font-size: var(--fs-item); font-weight: 700; margin-bottom: 12px; }
.sec-range { font-size: var(--fs-meta); color: var(--ink-2); flex-shrink: 0; }
.wk-main, .wk-sub, .soon-card { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.wk-main:hover, .wk-sub:hover, .soon-card:hover, .closing-card:hover, .col-card:hover, .genre-row:hover, .line-row:hover, .cmp-lines a:hover { text-decoration: none; }
.wk-main:hover .wk-title, .wk-sub:hover .wk-subtitle, .soon-card:hover .soon-title, .closing-card:hover .closing-genre { color: var(--ink-2); }
.closing-title { text-decoration: underline; }
.wk-poster { position: relative; display: block; aspect-ratio: 3 / 4; background: #e9e7e3; overflow: hidden; margin-bottom: 4px; }
/* 포스터는 모두 3:4, 위쪽 기준으로 자른다 (A7-03). 크기만 메인·서브·나머지 3단계 */
.wk-poster img, .wk-poster .poster-fallback { width: 100%; height: 100%; object-fit: cover; object-position: top; display: flex; }
.pick-badge { position: absolute; top: 12px; left: 12px; background: var(--accent); color: #ffffff; font-size: var(--fs-meta); font-weight: 700; padding: 4px 8px; }
.wk-kicker { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.wk-title { font-size: var(--fs-subtitle); font-weight: 800; letter-spacing: -0.03em; line-height: 1.25; }
.wk-reason { font-size: var(--fs-body); line-height: 1.55; color: #333333; }
.wk-meta { font-size: var(--fs-meta); color: var(--ink-2); }
.wk-subs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding-top: 20px; }
.wk-subtitle { font-size: var(--fs-body); font-weight: 700; line-height: 1.35; }
.wk-sub .wk-kicker { font-size: var(--fs-meta); }
.wk-sub .wk-meta { font-size: var(--fs-meta); }
details.fold { margin-top: 16px; }
details.fold > summary, .fold-link { display: flex; justify-content: space-between; align-items: center; min-height: 48px; border-top: 1px solid var(--ink); border-bottom: 1px solid #d6d4d0; font-size: var(--fs-meta); font-weight: 700; cursor: pointer; list-style: none; }
details.fold > summary::-webkit-details-marker { display: none; }
details.fold[open] > summary span { transform: rotate(90deg); }
.fold-link { margin-top: 12px; border-bottom: 0; }
.closing { padding-right: 0; }
.closing-strip { display: flex; gap: 10px; overflow-x: auto; margin-right: calc(var(--gutter) * -1); padding-right: var(--gutter); scrollbar-width: none; }
.closing-strip::-webkit-scrollbar { display: none; }
.closing-card { flex: 0 0 140px; display: flex; flex-direction: column; gap: 4px; border-top: 2px solid var(--accent); padding-top: 8px; }
.closing-d { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.closing-title { font-size: var(--fs-meta); font-weight: 700; line-height: 1.35; }
.closing-venue { font-size: var(--fs-meta); color: var(--ink-2); }
.compare-teaser { background: #f4f2ee; margin: 0 calc(var(--gutter) * -1); padding: 20px var(--gutter) 24px; }
.cmp-label { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); margin-bottom: 4px; }
.cmp-lines { display: flex; flex-direction: column; margin-top: 8px; }
.cmp-lines a { display: flex; flex-direction: column; gap: 2px; padding: 10px 0; border-bottom: 1px solid #d6d4d0; }
.cmp-lines strong { font-size: var(--fs-meta); }
.cmp-lines span { font-size: var(--fs-meta); color: #444444; }
.compare-teaser .fold-link { border-top: 0; }
.soon-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.soon-card .wk-kicker { font-size: var(--fs-meta); }
.soon-title { font-size: var(--fs-meta); font-weight: 700; line-height: 1.35; }
/* 이번 주 캐스팅 (A7-02): 날짜 · 공연 · 주역 이름 한 줄씩, 공연과 이름은 각각 링크 */
.cast-lines { border-bottom: 1px solid var(--line); margin-top: 10px; }
.cast-line { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 2px 12px; padding: 11px 0; border-top: 1px solid var(--line); font-size: var(--fs-meta); }
.cast-when { color: var(--accent); font-weight: 700; grid-row: span 2; }
.cast-show { font-weight: 700; color: var(--ink); }
.cast-names { color: var(--ink-2); }
.cast-names a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
/* 작품 페이지 (W-06) */
.work-hero { display: block; width: 100%; max-width: 1200px; aspect-ratio: 1200 / 630; object-fit: cover; margin-bottom: 20px; }
.glance { width: 100%; border-collapse: collapse; font-size: var(--fs-meta); margin-top: 8px; }
.glance th, .glance td { text-align: left; padding: 10px 8px 10px 0; border-top: 1px solid var(--line); vertical-align: top; }
.glance thead th { color: var(--ink-2); font-weight: 700; border-top: 0; }
.glance tbody th a { font-weight: 700; color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
.glance-ver { display: block; color: var(--ink-2); font-weight: 500; }
.ver-row { padding: 14px 0; border-top: 1px solid var(--line); }
.ver-row h3 { font-size: var(--fs-item); font-weight: 700; }
.ver-row p { margin-top: 4px; color: var(--ink-2); font-size: var(--fs-meta); }
.wk-cast .sessions { margin-top: 6px; }
.line-list { display: flex; flex-direction: column; margin-top: 12px; }
.line-row { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-top: 1px solid #d6d4d0; font-size: var(--fs-meta); }
.line-row span:first-child { font-weight: 500; min-width: 0; }
.line-date { color: var(--ink-2); white-space: nowrap; }
/* 박스 대신 위아래 선으로 나눈 목록 (A7-04): 컬렉션, 곧 무대에 서는 퍼포머, 주요 공연장 */
.col-grid { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; border-bottom: 1px solid var(--line); }
.col-card { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; min-height: 48px; padding: 12px 0; border-top: 1px solid var(--line); color: var(--ink); }
.col-title { font-size: var(--fs-body); font-weight: 700; }
.col-count { font-size: var(--fs-meta); color: var(--ink-2); }
.genre-rows { display: flex; flex-direction: column; border-bottom: 1px solid #d6d4d0; }
.genre-row { display: flex; justify-content: space-between; align-items: center; min-height: 48px; border-top: 1px solid #d6d4d0; font-size: var(--fs-body); font-weight: 700; }
.genre-row:first-child { border-top-color: var(--ink); }
.genre-row span { font-weight: 500; color: var(--ink-2); }

/* 퍼포머 목록 (A3-01) */
.chip { min-height: 36px; padding: 0 14px; border: 1px solid var(--ink); background: var(--bg); font: inherit; font-size: var(--fs-meta); font-weight: 700; cursor: pointer; }
.chip[aria-pressed='true'] { background: var(--ink); color: #ffffff; }
.pf-top { display: flex; flex-direction: column; gap: 12px; padding: 20px 0 4px; }
.pf-search { height: 44px; border: 1px solid var(--ink); padding: 0 14px; font: inherit; font-size: 16px; }
.pf-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.sec-count { font-size: var(--fs-meta); font-weight: 500; color: var(--ink-2); margin-left: 6px; }
.soon-stage { margin-top: 16px; }
.tabs { display: flex; gap: 16px; margin: 10px 0 14px; }
.tab { background: none; border: 0; padding: 0 0 4px; font: inherit; font-size: var(--fs-meta); font-weight: 700; color: var(--ink-2); border-bottom: 2px solid transparent; cursor: pointer; min-height: 32px; }
.tab[aria-pressed='true'] { color: var(--ink); border-bottom-color: var(--ink); }
.stage-cards { display: grid; column-gap: 32px; border-bottom: 1px solid var(--line); }
.stage-card { display: flex; flex-direction: column; gap: 4px; padding: 14px 0; border-top: 1px solid var(--line); color: var(--ink); }
.stage-card:hover { text-decoration: none; }
.stage-card:hover .stage-name { text-decoration: underline; }
.stage-date { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.stage-name { font-size: var(--fs-item); font-weight: 700; letter-spacing: -0.02em; }
.stage-show { font-size: var(--fs-meta); color: #333333; }
.fold-btn { width: 100%; background: none; border-left: 0; border-right: 0; font: inherit; font-size: var(--fs-meta); font-weight: 700; color: var(--ink); }
.ini-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.ini { min-height: 44px; border: 1px solid #d6d4d0; background: var(--bg); font: inherit; font-size: var(--fs-body); font-weight: 700; cursor: pointer; }
.ini[aria-pressed='true'] { background: var(--ink); color: #ffffff; border-color: var(--ink); }
.ini:disabled { color: #c8c6c2; cursor: default; }
.name-list { display: flex; flex-direction: column; margin-top: 12px; }
.name-kind { font-size: var(--fs-meta); color: var(--ink-2); font-weight: 500; }

/* 소개 */
.about { max-width: 680px; padding-bottom: 24px; }
.about-sec { padding: 24px 0 4px; border-top: 1px solid var(--line); }
.about-sec:first-child { border-top: 0; }
.about-sec h2 { font-size: var(--fs-item); font-weight: 700; letter-spacing: -0.03em; margin-bottom: 10px; }
.about-sec p, .about-sec li { font-size: var(--fs-body); line-height: 1.75; }
.about-sec ul { margin: 0; padding-left: 18px; display: grid; gap: 6px; }
.about-sec a { text-decoration: underline; }
.footer-links { margin-top: 10px; }
.footer-links a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }

/* 공연 태그 */
.show-line { font-size: var(--fs-body); line-height: 1.6; margin-top: 10px; }
.show-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.show-tags span { font-size: var(--fs-meta); font-weight: 700; border: 1px solid var(--ink); padding: 3px 8px; }

/* 출처와 정보 수정 제보 */
.page-src { margin-top: 28px; padding-top: 14px; border-top: 1px solid var(--line); font-size: var(--fs-meta); color: var(--ink-2); }
.link-btn { background: none; border: 0; padding: 6px 0; font: inherit; color: var(--ink); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.report-form { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; max-width: 520px; font-size: var(--fs-meta); color: var(--ink); }
.report-form input:not([type=hidden]) { font: inherit; font-size: 16px; padding: 10px; border: 1px solid var(--ink); }
.report-form .btn { align-self: flex-start; min-height: 40px; font-size: var(--fs-meta); margin-top: 6px; }
.report-form[hidden] { display: none; }
.report-form .hp { position: absolute; left: -9999px; width: 1px; height: 1px; }
.report-status { min-height: 1em; color: var(--ink-2); }

/* 공연장 팁 */
.tip { padding: 16px 0; border-top: 1px solid var(--line-soft); }
.tip h3 { font-size: var(--fs-item); font-weight: 700; }
.tip p { margin-top: 4px; white-space: pre-line; }
.tip .tip-src { font-size: var(--fs-meta); color: var(--ink-2); }
.tip .tip-src a { text-decoration: underline; }

/* 공연·공연장 메뉴 (2026-10-20) */
a.chip { display: inline-flex; align-items: center; }
a.chip:hover { text-decoration: none; }
.chip-sm { min-height: 32px; padding: 0 10px; font-size: var(--fs-meta); border-color: #c8c6c2; }
.chip-sm[aria-pressed='true'] { border-color: var(--ink); }
.rank-list { list-style: none; margin: 8px 0 0; padding: 0; }
.rank-row { display: grid; grid-template-columns: 32px 48px 1fr; gap: 12px; align-items: center; padding: 10px 0; border-top: 1px solid #d6d4d0; }
.rank-row:hover { text-decoration: none; }
.rank-row:hover strong { text-decoration: underline; }
.rank-num { font-size: 20px; font-weight: 800; color: var(--ink-2); text-align: center; }
.rank-num.is-top { font-size: 26px; color: var(--accent); }
.rank-poster { display: block; aspect-ratio: 3 / 4; background: #e9e7e3; overflow: hidden; }
.rank-poster img, .rank-poster .poster-fallback { width: 100%; height: 100%; object-fit: cover; object-position: top; display: flex; font-size: 9px; padding: 4px; }
.rank-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rank-body strong { font-size: var(--fs-body); line-height: 1.35; }
.sort-links { display: flex; gap: 14px; padding: 12px 0 4px; font-size: var(--fs-meta); }
.sort-links a { color: var(--ink-2); }
.sort-links a[aria-current='true'] { color: var(--ink); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.venue-grid { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; margin-top: 10px; border-bottom: 1px solid var(--line); }
.venue-card { display: flex; flex-direction: column; gap: 4px; padding: 14px 0; border-top: 1px solid var(--line); }
.venue-card a:hover { text-decoration: none; }
.venue-card a.venue-name:hover, .venue-card a.venue-show:hover strong { text-decoration: underline; }
.venue-card .venue-show { color: var(--ink); padding: 4px 0; }
.quick-results { margin-top: 0; }
.venue-name { display: block; font-size: var(--fs-body); font-weight: 700; letter-spacing: -0.02em; line-height: 1.3; }
.venue-area { font-size: var(--fs-meta); color: var(--ink-2); }
.venue-show { display: flex; flex-direction: column; gap: 1px; margin-top: 8px; min-width: 0; }
.venue-show strong { font-size: var(--fs-meta); line-height: 1.35; }
.venue-show span { font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.area-fold { margin-top: 0; }
.area-fold > summary { border-bottom: 0; font-size: var(--fs-body); }
.area-fold:last-child > summary { border-bottom: 1px solid #d6d4d0; }
.area-meta { font-size: var(--fs-meta); font-weight: 500; color: var(--ink-2); }
details.fold[open] > summary span.area-meta { transform: none; }

/* 이번 시즌 주역, 단체별 단원 */
.principal-row { grid-template-columns: 32px 1fr; }
.principal-row strong { font-size: var(--fs-item); }
.org-tabs { flex-wrap: wrap; gap: 6px 16px; border-bottom: 1px solid #d6d4d0; padding-bottom: 2px; }
.rank-group { padding-top: 14px; }
.roster-names { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; margin-top: 6px; font-size: var(--fs-body); font-weight: 500; }
.roster-names.is-lead { font-size: var(--fs-body); font-weight: 700; }
.roster-names a:hover { text-decoration: underline; }

/* 비교 추천 카드 */
.cmp { display: grid; grid-auto-flow: column; grid-auto-columns: 86%; gap: 12px; overflow-x: auto; margin: 20px calc(var(--gutter) * -1) 0; padding: 0 var(--gutter) 6px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.cmp::-webkit-scrollbar { display: none; }
.cmp-card { background: var(--bg); color: var(--ink); padding: 18px; scroll-snap-align: start; display: grid; grid-template-rows: auto auto auto auto auto 1fr; gap: 14px; align-content: start; }
.cmp-head { display: flex; gap: 12px; align-items: center; }
.cmp-head:hover { text-decoration: none; }
.cmp-head:hover .cmp-name { text-decoration: underline; }
.cmp-head img { width: 52px; aspect-ratio: 3 / 4; object-fit: cover; object-position: top; flex-shrink: 0; background: var(--line-soft); }
.cmp-name { display: block; font-size: var(--fs-item); font-weight: 700; letter-spacing: -0.5px; line-height: 1.3; }
.cmp-by { display: block; font-size: var(--fs-meta); color: var(--ink-2); margin-top: 2px; }
.cmp-identity { font-size: var(--fs-body); font-weight: 700; line-height: 1.45; letter-spacing: -0.3px; padding-top: 12px; border-top: 2px solid var(--ink); }
.cmp-block h3 { margin: 0 0 6px; font-size: var(--fs-meta); font-weight: 700; color: var(--accent); }
.cmp-block ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.cmp-block li strong { display: block; font-size: var(--fs-meta); line-height: 1.4; }
.cmp-block li span { display: block; font-size: var(--fs-meta); color: var(--ink-2); line-height: 1.45; }
.cmp-block p { font-size: var(--fs-meta); line-height: 1.55; }
.cmp-info { border-top: 1px solid var(--line); padding-top: 10px; font-size: var(--fs-meta); }
.cmp-info summary { cursor: pointer; font-weight: 700; }
.cmp-info dl { display: grid; grid-template-columns: 72px 1fr; gap: 4px 10px; margin: 10px 0 0; line-height: 1.45; }
.cmp-info dt { color: var(--ink-2); }
.cmp-info dd { margin: 0; }
.cmp-source { font-size: var(--fs-meta); color: var(--ink-2); align-self: end; }
.cmp-source a { text-decoration: underline; }
.cmp-head img, .cmp-head .cmp-noposter { width: 52px; aspect-ratio: 3 / 4; flex-shrink: 0; }

@media (min-width: 768px) {
  :root { --fs-title: 48px; --fs-subtitle: 28px; --fs-item: 19px; }
  .hero-title { font-size: 88px; letter-spacing: -4px; }
  .poster-grid { grid-template-columns: repeat(4, 1fr); gap: 32px 20px; }
  .season-title { font-size: 56px; letter-spacing: -2.5px; }
  .season-scroll { grid-auto-columns: 22%; }
  .show-head { display: grid; grid-template-columns: 360px 1fr; gap: 40px; align-items: end; }
  .show-poster { margin-bottom: 0; }
  .page-title.display-name { font-size: 120px; letter-spacing: -6px; }
  :root { --gutter: 40px; }
  .rows-2 { grid-template-columns: 1fr 1fr; }
  .rows-3 { grid-template-columns: 1fr 1fr 1fr; }
  .page-title { font-size: var(--fs-title); }
  .cmp { grid-auto-flow: row; grid-template-columns: repeat(var(--cards), minmax(0, 1fr)); overflow: visible; margin: 28px 0 0; padding: 0; gap: 16px; }
  .cmp-card { grid-row: span 6; grid-template-rows: subgrid; gap: 16px; }
  .sec-title-xl { font-size: var(--fs-subtitle); }
  .home-sec .wk-main { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); grid-template-rows: auto auto auto 1fr; column-gap: 40px; row-gap: 10px; }
  .home-sec .wk-main .wk-poster { grid-row: 1 / span 5; }
  .home-sec .wk-main > :not(.wk-poster) { grid-column: 2; }
  .home-sec .wk-main .wk-kicker { padding-top: 8px; }
  .home-sec .wk-main .wk-title { font-size: 44px; letter-spacing: -0.04em; }
  .home-sec .wk-main .wk-reason { font-size: 18px; }
  .wk-subs { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; padding-top: 32px; }
  .soon-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
  .col-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .closing-card { flex-basis: 200px; }
  .venue-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rank-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 32px; }
  .stage-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .roster-names { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ini-grid { grid-template-columns: repeat(15, minmax(0, 1fr)); }
  .name-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 32px; }
}
