/* ===========================================================
   Seoul Music Management — 홈 와이어프레임 v1
   브랜드 컬러: SWMF "Warm Air" 포스터 기준 (네이비 + 골드)
   서체: 영문 Eina01 / 한글 Pretendard
   =========================================================== */

/* ---------- 영문 서체: Eina01 (로컬) ---------- */
@font-face { font-family:'Eina01'; src:url('fonts/Eina01-Light.ttf') format('truetype'); font-weight:300; font-style:normal; font-display:swap; unicode-range:U+0000-00B6,U+00B8-2012,U+2014-24FF; }
@font-face { font-family:'Eina01'; src:url('fonts/Eina01-Regular.ttf') format('truetype'); font-weight:400; font-style:normal; font-display:swap; unicode-range:U+0000-00B6,U+00B8-2012,U+2014-24FF; }
@font-face { font-family:'Eina01'; src:url('fonts/Eina01-RegularItalic.ttf') format('truetype'); font-weight:400; font-style:italic; font-display:swap; unicode-range:U+0000-00B6,U+00B8-2012,U+2014-24FF; }
@font-face { font-family:'Eina01'; src:url('fonts/Eina01-SemiBold.ttf') format('truetype'); font-weight:600; font-style:normal; font-display:swap; unicode-range:U+0000-00B6,U+00B8-2012,U+2014-24FF; }
@font-face { font-family:'Eina01'; src:url('fonts/Eina01-Bold.ttf') format('truetype'); font-weight:700; font-style:normal; font-display:swap; unicode-range:U+0000-00B6,U+00B8-2012,U+2014-24FF; }

:root {
  /* === 브랜드 컬러 (SWMF "Warm Air" 포스터 기준: 네이비 + 골드) === */
  --navy:       #133C36;   /* 다크그린 (주조색) */
  --navy-deep:  #0C2A26;
  --navy-soft:  #1C4E46;
  --gold:       #BB9A77;   /* 로즈골드 (강조색) */
  --gold-soft:  #D0B79A;
  --cream:      #F3ECE3;   /* 어두운 배경 위 텍스트 */
  --ink:        #22302C;   /* 본문 */
  --muted:      #6E7E78;   /* 헤더 높이 (2026-07-29 68→136 2배, 로고 확대) */
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  /* 영문은 Eina01, 한글은 Pretendard로 자동 분리 렌더 */
  font-family: "Eina01", "Pretendard Variable", Pretendard, -apple-system, system-ui, sans-serif;
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
word-break:keep-all;}

/* 제목용 (구 세리프) — 영문 Eina01 / 한글 Pretendard */
.serif {
  font-family: "Eina01", "Pretendard Variable", Pretendard, sans-serif;
  font-weight: 600;
}

.wrap { margin: 0 auto; padding: 0 24px; }

a { color: inherit; text-decoration: none; }

/* ---------- 와이어프레임 주석 라벨 ---------- */

/* ---------- 헤더 ---------- */
.header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(19,60,54,.96);
  backdrop-filter: blur(6px);
  border-bottom: 1px solid rgba(187,154,119,.25);
}
.header .wrap { display:flex; }
.logo { color: var(--cream); font-size: 17px; letter-spacing:.13em; font-weight:700; white-space:nowrap; }

.nav { display:flex; }
.nav a { color: var(--cream); opacity:.85; }
.nav a:hover { opacity:1; color: var(--gold-soft); }
.lang { display:flex; gap:6px; align-items:center; }
.lang span { color:var(--cream); opacity:.55; padding:3px 7px; border-radius:4px; }
.lang span.on { background:var(--gold); color:var(--navy-deep); opacity:1; font-weight:700; }
.burger { display:none; color:var(--cream); font-size:22px; }

/* ---------- 히어로 ---------- */
.hero {
  position: relative;
  display: flex;
  align-items: center;
  min-height: calc(100vh - var(--header-h));   /* 헤더 제외하고 화면 꽉 채움 */
  min-height: calc(100dvh - var(--header-h));  /* 모바일 주소창 대응 */
  background:
    radial-gradient(900px 500px at 70% 30%, var(--navy-soft) 0%, rgba(28,78,70,0) 60%),
    linear-gradient(160deg, var(--navy) 0%, var(--navy-deep) 100%);
  color: var(--cream);
  padding: 40px 0;
  overflow: hidden;
}
.hero::before { /* 네이비 배경 (사진 자리 — 추후 공연사진 교체 가능) */
  content:""; position:absolute; inset:0; z-index:0;
  background: linear-gradient(165deg, var(--navy-soft) 0%, var(--navy-deep) 100%);
}
.hero::after { /* 포스터의 점 장식 */
  content:""; position:absolute; inset:0; z-index:0;
  background-image:
    radial-gradient(2px 2px at 20% 40%, rgba(244,239,230,.5), transparent),
    radial-gradient(2px 2px at 80% 20%, rgba(244,239,230,.4), transparent),
    radial-gradient(1.5px 1.5px at 60% 70%, rgba(244,239,230,.35), transparent),
    radial-gradient(1.5px 1.5px at 35% 80%, rgba(244,239,230,.3), transparent);
  pointer-events:none;
}
/* 히어로 콘텐츠 로드 등장 */

@keyframes heroUp { to { opacity:1; transform:none; } }

.btn { border-radius:999px;
  border:1px solid var(--gold); cursor:pointer;
}
.btn-primary { background:var(--gold); color:var(--navy-deep); }
.btn-primary:hover { background:var(--gold-soft); }
.btn-ghost { background:transparent; color:var(--cream); }
.btn-ghost:hover { background:rgba(187,154,119,.14); }

/* ---------- 섹션 공통 (에디토리얼 여백) ---------- */

.sec-head { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.sec-head h2 { font-size:34px; color:var(--navy); }

/* ---------- 스크롤 등장 애니메이션 ---------- */
.reveal { opacity:0; transform:translateY(28px); }
.reveal.in { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity:1; transform:none; } }

/* ---------- 공연 일정 3칸 ---------- */

.tag-past { background:#9aa6a9; }

/* 카드 하단 = 타이틀 + 통일된 하위정보(픽토그램) + 액션 2버튼 (2026-07-29 하콘 논의 반영) */

.card-actions { margin-top:auto; padding-top:14px; display:flex; gap:8px; }
.card-actions a { flex:1; text-align:center; font-weight:600; padding:8px 4px; border-radius:999px; }
.act-book { background:var(--gold); color:var(--navy-deep); }
.act-book:hover { background:var(--gold-soft); }
.act-more { border:1px solid var(--line); color:var(--navy); }
.act-more:hover { border-color:var(--gold); color:var(--gold); }

/* ---------- 카테고리 설명 (Classical vs House) ---------- */

/* ---------- Watch (영상) ---------- */

.video { aspect-ratio:16/9; background:var(--navy-deep); display:flex; align-items:center; justify-content:center; color:var(--cream); }

.watch .txt h3 { margin-bottom:10px; }
.watch .txt p { margin-bottom:18px; }

/* ---------- Festival 풀블리드 이미지 밴드 (Squarespace 시그니처) ---------- */

/* ---------- 푸터 ---------- */
.footer { background:var(--navy-deep); color:var(--cream); padding:54px 0 30px; }
.footer .cols { gap:30px; }
.footer h4 { color:var(--gold); }
.footer p, .footer a { font-size:15px; opacity:.78; line-height:1.9; display:block; }
.footer a:hover { opacity:1; color:var(--gold-soft); }
.footer .copy { margin-top:40px; padding-top:18px; border-top:1px solid rgba(244,239,230,.12); opacity:.5; }

/* ===========================================================
   하위 페이지 공통 / Concerts
   =========================================================== */

/* 페이지 히어로 (서브페이지용, full-height 아님) */
.page-hero { /* v2: 홈 인트로와 동일한 밝은 대형 타이포 (2026-08-31) */
  position:relative; color:var(--ink);
  background:transparent;
}

.page-hero h1 { color:var(--navy); margin-bottom:20px; letter-spacing:-.015em; line-height:1.1; }
.page-hero p { color:var(--muted); }

/* 필터 바 (sticky, 헤더 아래) */
.filterbar { position:sticky; top:var(--header-h); z-index:40; border-bottom:1px solid var(--line); }
.filterbar .wrap { display:flex; gap:10px; align-items:center; padding:16px 24px; flex-wrap:wrap; }
.filter-btn { letter-spacing:.02em; padding:9px 20px; border-radius:999px; cursor:pointer;
  border:1px solid var(--line); background:#fff; color:var(--muted);
}
.filter-btn:hover { border-color:var(--gold); color:var(--navy); }

/* 아카이브 그리드 (지난 공연, 작은 카드 4열) */
.archive { display:grid; grid-template-columns:repeat(4,1fr); }
.acard { overflow:hidden; }
.acard .thumb { aspect-ratio:723/1024; background:repeating-linear-gradient(135deg,#eef0ec,#eef0ec 12px,#e7eae5 12px,#e7eae5 24px); background-size:cover; background-position:center; display:flex; align-items:center; justify-content:center; color:#aeb6b2; }

.is-hidden { display:none !important; }

/* ---------- News (공지 리스트) ---------- */
.news-list { border-top:1px solid var(--line); }
.news-item { display:flex; gap:24px; border-bottom:1px solid var(--line); align-items:baseline; transition:background .2s; }
.news-item:hover { background:#fff; }
.news-item .date { min-width:108px; }

.news-item .nt { flex:1; }
.news-item .nt h3 { margin-bottom:5px; }

/* ---------- Contact ---------- */

.cform label { display:block; color:var(--muted); margin:16px 0 6px; }
.cform input, .cform textarea { width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:4px; font-family:inherit; font-size:15px; background:#fff; color:var(--ink); }
.cform input:focus, .cform textarea:focus { outline:none; border-color:var(--navy); }
.cform textarea { min-height:130px; resize:vertical; }
/* 문의 양식: 숨은 칸(자동 등록 걸러내기) · 개인정보 동의 · 전송 결과 */
.cform .cf-hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.cform .cf-agree { display:flex; gap:10px; align-items:flex-start; margin:18px 0 20px; color:var(--ink); cursor:pointer; }
.cform .cf-agree input { width:18px; height:18px; margin:3px 0 0; flex:none; accent-color:var(--navy); }
.cform .cf-agree small { display:block; color:var(--muted); margin-top:2px; }
.cform .cf-status { margin-top:14px; color:var(--muted); min-height:1.5em; }
.cform .cf-status.ok { color:var(--navy); font-weight:600; }
.cform .cf-status.err { color:#B4412F; }
.contact-info h4 { margin:0 0 8px; }
.contact-info p { color:var(--muted); margin-bottom:22px; line-height:1.7; }

/* ---------- Festival 아카데미/컴페티션 2분할 ---------- */

/* ---------- 교차 레이아웃 (About, Squarespace 시그니처) ---------- */
.split { margin-bottom:90px; }
.split:last-child { margin-bottom:0; }

.split-img { aspect-ratio:4/3; background:#e7eae5 center/cover no-repeat; }

.split-txt p { color:var(--muted); margin-bottom:12px; }

/* ---------- 아티스트 그리드 (Artists, 갤러리) ---------- */
.artist-grid { display:grid; grid-template-columns:repeat(4,1fr); }

.artist-card .photo { aspect-ratio:3/4; background:#e7eae5 center top/cover no-repeat; }

/* ---------- 반응형 ---------- */
@media (max-width: 920px) {
  .nav, .lang { display:none; }
  .burger { display:block; }
  /* 모바일 펼침 메뉴 */
  .nav.open { /* 흰색 패널 (2026-08-31 다운님 지시) */
    display:flex; flex-direction:column; gap:0;
    position:absolute; top:var(--header-h); left:0; right:0;
    background:rgba(255,255,255,.98); backdrop-filter:blur(6px);
    padding:8px 24px 18px; border-bottom:1px solid var(--line);
    box-shadow:var(--sh-1);
  }
  .nav.open a { padding:15px 2px; font-size:17px; color:var(--navy); opacity:1; border-bottom:1px solid var(--line); }
  .nav.open a:last-child { border-bottom:none; }
  .nav.open a:hover { color:var(--gold); }
  .burger.is-open { color:var(--gold-soft); }

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

}
@media (max-width: 920px) {
  .artist-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 620px) {
  /* 모바일 공연 카드 = 가로 리스트형 (좌 썸네일 / 우 정보) — 풀폭 포스터 방지 */

  .card-actions { padding-top:12px; }
  .card-actions a { padding:7px 4px; }
  .archive { grid-template-columns:repeat(2,1fr); }

  .filterbar .wrap { padding:12px 24px; gap:8px; }
  .filter-btn { padding:8px 14px; }
  .split { margin-bottom:56px; }

  .artist-grid { grid-template-columns:repeat(2,1fr); }
  .logo { font-size:15px; letter-spacing:.04em; }

  .news-item { flex-direction:column; gap:8px; }
  .news-item .date { min-width:0; }
}

/* ============================================================
   신규 CI (다크그린+로즈골드) 컴포넌트 — 2026-07 미팅 반영
   ============================================================ */
/* 로고 이미지 */
.logo-img { display:block; }

/* 홈 히어로 로고 + 모션(반복) — 실제 모션파일 수신 시 교체 */

@keyframes logoGlow {
  0%,100%{ filter:drop-shadow(0 0 0 rgba(187,154,119,0)); transform:scale(1); }
  50%{ filter:drop-shadow(0 0 20px rgba(187,154,119,.5)); transform:scale(1.03); } }

/* 히어로 풀블리드 브랜드 필름 (SMM_로고모션_최종.mp4)
   ::before(다크그린 그라데이션)가 영상 로드 전 폴백 배경 역할 */
.hero-video {
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; z-index:0;
}

/* Artist — 2027 Winter Festival 마퀴 (로즈골드 배경, 좌→우 흐름) */
.fest-marquee { padding:56px 0 0; overflow:hidden; }
.fest-marquee .wrap { text-align:center; }

.fest-marquee h2 { margin-bottom:8px; letter-spacing:.02em; }

.marquee { overflow:hidden; width:100%; padding-bottom:56px; }
.marquee-track { display:flex; gap:20px; width:max-content; animation: marquee 34s linear infinite; }
.marquee .mq { width:230px; height:300px; flex:none;
  background:#0c2a26 center top/cover no-repeat; box-shadow:var(--sh-1); }
@keyframes marquee { from{ transform:translateX(-50%); } to{ transform:translateX(0); } }
@media(max-width:620px){ .marquee .mq{ width:150px; height:200px; } }

/* ---------- 홈 v2 (Readymag 참고: 대형 타이포 인트로 + 마퀴 + 카드 모자이크) ---------- */

.intro h1 { line-height:1.1; color:var(--navy); text-wrap:balance; }

.intro .cta2 { display:flex; gap:12px; flex-wrap:wrap; }
.btn-pill { border-radius:999px; }
.btn-outline { background:transparent; color:var(--navy); border:1px solid var(--navy); }
.btn-outline:hover { border-color:var(--gold); color:var(--gold); }
.btn-dark { background:var(--navy-deep); color:var(--cream); border-color:var(--navy-deep); }
.btn-dark:hover { background:var(--navy); }

.home-marquee { padding:0 0 96px; }
.home-marquee .marquee { padding-bottom:0; }
.home-marquee .mq { width:clamp(280px,19vw,400px); aspect-ratio:3/4; height:auto; border-radius:14px; }
.home-marquee .marquee-track { animation-duration:52s; }
@media(max-width:620px){ .home-marquee .mq { width:180px; } }

.mosaic { grid-template-columns:3fr 2fr; }

.mcard .sec-head { margin-bottom:36px; }
.m-full { grid-column:1/-1; }

 /* 다크 배경 위에서는 배경보다 어두운 테두리 */
/* v7.50: .m-green .ccard:hover 테두리색 변화 제거 — 호버는 리프트+그림자로 단일화 */
.m-white { border:1px solid var(--line); }
.m-gold {
  display:flex; flex-direction:row; justify-content:space-between; gap:30px; flex-wrap:wrap; }

.m-gold h2 { margin-bottom:10px; letter-spacing:.01em; }
.m-gold .m-fest-copy { font-size:17px; opacity:.85; }

.m-cream { border:1px solid var(--line); }
@media (max-width:920px) {
  .mosaic { grid-template-columns:1fr; }

}

/* 홈 — 아티스트 스트립 카드 링크 + 페스티벌 지난 링크 */
a.artist-card { display:block; color:inherit; }

/* ---------- 공연 상세 (표준 템플릿: 메타→프로그램→프로필→예매) ---------- */
.detail-hero { background:linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 100%); color:var(--cream); }
.detail-hero .crumb { margin-bottom:28px; }
.detail-hero .crumb a { color:var(--gold-soft); }
.detail-grid { align-items:start; }
.detail-poster { aspect-ratio:3/4.2; background:#0C2A26 center top/cover no-repeat; box-shadow:var(--sh-3); }
.detail-poster.empty { /* 실제 포스터 수신 전 빈 자리 표시 */
  display:flex; align-items:center; justify-content:center;
  background:rgba(243,236,227,.04); border:1.5px dashed rgba(187,154,119,.45); box-shadow:none; }
.detail-poster.empty span { color:var(--gold-soft); opacity:.7; text-align:center; line-height:2; }
.detail-info h1 { font-size:clamp(28px,3.6vw,44px); line-height:1.2; color:var(--cream); margin:14px 0 26px; }
.meta-table { border-collapse:collapse; width:100%; margin-bottom:30px; }
.meta-table th { text-align:left; vertical-align:top; padding:9px 18px 9px 0; color:var(--gold); letter-spacing:.08em; white-space:nowrap; font-weight:600; }
.meta-table td { padding:9px 0; color:var(--cream); border-bottom:1px solid rgba(243,236,227,.12); }
.meta-table tr:last-child td { border-bottom:none; }
.detail-cta { display:flex; gap:12px; flex-wrap:wrap; }

.program-list { list-style:none; padding:0; }
.program-list li { display:flex; flex-direction:column; gap:3px; padding:16px 0; border-bottom:1px solid var(--line); }
.program-list .composer { letter-spacing:.02em; }
.program-list .composer em { color:var(--muted); font-style:normal; font-weight:400; }
.program-list .piece { color:var(--ink); }
.program-list .intermission { align-items:center; color:var(--muted); font-size:15px; border-bottom:1px solid var(--line); }
.program-note { margin-top:14px; color:var(--muted); }

.profile-block { align-items:start; }
.profile-photo { background:#e7eae5 center top/cover no-repeat; }
.profile-txt h3 { margin-bottom:12px; }
.profile-txt h3 span { color:var(--muted); font-weight:400; margin-left:10px; }
.profile-txt p { font-size:17px; color:var(--ink); line-height:1.9; margin-bottom:14px; }
.profile-txt p em { color:var(--muted); font-style:normal; font-size:15px; }
.profile-links { display:flex; gap:22px; flex-wrap:wrap; }

.detail-bottom-cta { background:var(--navy-deep); text-align:center; }
.detail-bottom-cta p { color:var(--cream); font-size:clamp(19px,2.4vw,26px); margin-bottom:24px; }

@media(max-width:820px){

  .detail-poster { max-width:320px; margin:0 auto; }

  .profile-photo { max-width:220px; }
}

/* About — 세 개의 무대 (부문별 감성 카피 블록) */
.stages .stage { border-top:1px solid var(--line); }
.stages .stage:last-child { padding-bottom:6px; }

.stage p:not(.eyebrow) { max-width:720px; }

/* Contact — 지도 임베드 */
.map-embed { aspect-ratio:16/10; overflow:hidden; border:1px solid var(--line); margin-top:6px; }
.map-embed iframe { width:100%; height:100%; border:0; display:block; }
.map-links { margin-top:10px; font-size:14px; color:var(--muted); }

/* About — 연혁 타임라인 */
.timeline { list-style:none; margin-left:6px; }
.timeline li { position:relative; padding-bottom:30px; }
.timeline li:last-child { padding-bottom:0; }
.timeline li::before { content:""; position:absolute;
  width:12px; height:12px; border-radius:50%; background:var(--gold); border:2px solid var(--paper); }
.timeline .yr { display:block; color:var(--navy); margin-bottom:4px; }
.timeline p { color:var(--muted); line-height:1.8; }

/* About — 함께한 무대 (공연장 파트너십) */
.venues { display:grid; grid-template-columns:repeat(3,1fr); }
.venue { padding:26px 26px 24px; }

.venue h3 { margin-bottom:10px; }
.venue p { color:var(--muted); }
@media(max-width:820px){ .venues { grid-template-columns:1fr; } }

/* About — 브랜드 스토리 (보이는 음악, 들리는 기와) */

.score-band { /* Seoul Ragtime 악보 — 다크그린 밴드 위 로즈골드 악보 */
  background:linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 100%);
  border-radius:10px; padding:56px 48px; margin:0 0 90px; }
.score-band .eyebrow { margin-bottom:26px; }
.score-band img { width:min(760px,100%); height:auto; display:block; margin:0 auto 24px; }
.score-band p { color:var(--cream); opacity:.72; font-size:15px; max-width:560px; margin:0 auto; }

.swatches { display:flex; gap:40px; justify-content:center; flex-wrap:wrap; }
.swatch .dot { width:76px; height:76px; border-radius:50%; margin:0 auto 12px; border:1px solid var(--line); }
.swatch .nm { color:var(--navy); font-weight:600; }
.swatch .sub { color:var(--muted); margin-top:2px; }

@media(max-width:820px){
  .score-band { padding:36px 22px; margin-bottom:56px; }

  .swatches { gap:24px; }
  .swatch .dot { width:60px; height:60px; }
}

/* ============================================================
   v3.1 센터 레이아웃 (musicalinstrumentcrafts 참고 — 배경은 밝게 유지, 2026-08-31)
   다크 팔레트는 다운님 지시로 롤백. 센터 헤더·센터 정렬만 채택.
   ============================================================ */

/* 헤더: 로고 좌측 / 메뉴 우측 (2026-08-31 다운님 지시), 메뉴 세미볼드·16px */
.header .wrap { flex-direction:row; align-items:center; height:var(--header-h); position:relative; }

.burger { position:absolute; right:24px; top:50%; transform:translateY(-50%); }

/* 인트로·페이지 히어로: 센터 정렬 */

.page-hero p { margin:0 auto; }

@media (max-width:920px) {

  .header .wrap { flex-direction:row; gap:0; }

}

/* ============================================================
   v3.2 "AI 디자인 지문" 제거 (2026-08-31 다운님 지시)
   — 자간 벌린 골드 라벨 폐지, 과대 디스플레이 축소
   ============================================================ */
/* 남은 아이브로우(부문명·장소명 등 정보성)는 평범한 소제목으로 */
.eyebrow, .score-band .eyebrow {
  letter-spacing:.01em; text-transform:none;
}
.score-band .eyebrow { color:var(--gold-soft); }

/* 디스플레이 타이틀 한 단계 축소 (랜딩페이지 과장 톤 완화) */
.intro h1 { letter-spacing:-.01em; }
.page-hero h1 { font-size:clamp(34px,4vw,56px); }
.m-gold h2 { font-size:clamp(30px,3.2vw,44px); }
.fest-marquee h2 { font-size:clamp(30px,4vw,46px); }

/* ============================================================
   v3.3 흑백 규칙 (2026-08-31 다운님 지시)
   인물 사진 = 흑백 (호버 시 컬러) · 지난 공연 포스터 = 흑백
   예정·현재 공연 포스터와 굿즈·풍경은 컬러 유지
   ============================================================ */
.artist-card .photo, .profile-photo, .mq.bw, .split-img.bw, .acard .thumb {
  filter:grayscale(1);
  transition:filter .45s ease; }
.artist-card:hover .photo, .acard:hover .thumb, .mq.bw:hover { filter:grayscale(0); }

/* ============================================================
   v3.4 표면 시스템 (참고: musicwebdesigns.com — Muserna, 2026-08-31)
   원칙: 한 톤의 명도 스택으로 깊이 (배경 크림 → 패널 웜크림 → 카드 화이트)
   + 라운드 위계 (패널 28px > 카드 14px). 다크그린·골드는 페이지당 1곳 포인트.
   ============================================================ */

/* 패널 층: 한 단계 어두운 웜 크림 */
.section.alt, .m-white, .m-cream { border-color:var(--panel-line); }

/* 라운드 위계 — 패널 28 / 카드·이미지 14 */

.acard, .venue, .video, .split-img, .profile-photo, .map-embed, .detail-poster, .marquee .mq { border-radius:14px; }

/* 패널 위 흰 카드의 보더 톤 */

/* 인사말 — 대표 사진 자리 (실제 사진 수신 전) */

/* 한/영 전환 토글 (오른쪽 끝, 2026-08-31) — EN은 영문 사이트 제작 시 연결 */
.nav { margin-left:auto; }
.header .lang { display:flex; gap:5px; align-items:center; margin-left:28px; }
.header .lang span.on { background:var(--gold); color:var(--navy-deep); font-weight:700; padding:3px 10px; border-radius:999px; opacity:1; }
.header .lang a { font-weight:600; color:var(--cream); opacity:.55; padding:3px 8px; letter-spacing:.02em; }
.header .lang a:hover { opacity:.95; color:var(--gold-soft); }
.header .wrap { justify-content:flex-start; }
@media(max-width:920px){
  /* 모바일: [로고] ....... [☰][KR EN] — 햄버거 오른쪽에 토글 */
  .burger { position:static; transform:none; margin-left:auto; }
  .header .lang { display:flex; margin-left:16px; }
}

/* ============================================================
   v3.5 여백·비율·자간 조정 (2026-08-31)
   진단: 섹션 상하 여백 과다(104+104=208px), 모자이크 gap(22)과
   패널 margin(14) 불일치, 헤딩-본문 간격 넓음. 한글 자간 무보정.
   ============================================================ */
/* 한글 자간 -15 (‑0.015em) 전역 — 라벨·네비 등 의도적 자간은 개별값 유지 */
body { letter-spacing:-0.015em; }
.serif { letter-spacing:-0.015em; }

/* 수직 리듬: 섹션 96 / 패널 내부 72 / 헤딩-콘텐츠 40 */
.section { padding:88px 0; }

.sec-head { margin-bottom:40px; }

.page-hero { padding:88px 0 48px; }

/* 카드 간 리듬 통일: 모자이크·패널 간격 16px로 일치 */
.mosaic { gap:16px; }

.mcard { padding:48px; }
.mosaic .sec-head { margin-bottom:32px; }

@media(max-width:620px){
  .section { padding:56px 0; }

  .mcard { padding:28px 22px; }
}

/* 페스티벌 2027 — 일정 표 · Coming Soon 카드 (2026-09-10) */
.fest-schedule { width:100%; border-collapse:collapse; font-size:16px; background:#fff; border-radius:14px; overflow:hidden; }
.fest-schedule th { background:var(--navy); color:var(--cream); text-align:left; padding:12px 18px; }
.fest-schedule td { padding:13px 18px; border-top:1px solid var(--panel-line); }
.artist-card .photo.empty { display:flex; align-items:center; justify-content:center; filter:none; }

/* 아티스트 상세 (2027 SWMF 인명록 기반, 2026-09-11) */
.crumb-light { margin-bottom:34px; }

.a-head h1 { font-size:clamp(30px,3.4vw,44px); color:var(--navy); margin-bottom:4px; }
.a-head h1 span { font-size:16px; color:var(--muted); font-weight:400; margin-left:12px; }

.a-quote p { color:var(--ink); font-style:italic; }

.a-sec { font-size:21px; color:var(--navy); margin:38px 0 16px; }

.a-list { list-style:none; }
.a-list li { padding:10px 0 10px 20px; border-bottom:1px solid var(--line); color:var(--ink);
  position:relative; }
.a-list li::before { content:"·"; position:absolute; left:4px; color:var(--gold); font-weight:700; }
.a-list li:last-child { border-bottom:none; }
@media(max-width:820px){ .a-head .profile-photo { max-width:260px; } }

/* ============================================================
   v3.6 (2026-09-11) — 클라 피드백 반영
   ① 헤더 슬림화(150→104, 로고 82→60)는 위 값 수정으로 적용
   ② 소개 텍스트 위계: 제목 700/24px, 본문 소프트 톤, 라벨 축소
   ============================================================ */

.split-txt p:not(.eyebrow), .stage p:not(.eyebrow) { margin-bottom:14px; }

/* ③ 홈 대표 영상 임베드 */
.video iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
.video { position:relative; overflow:hidden; }

/* ── v3.7: AI 연출 예시 이미지(플레이스홀더) 레이아웃 데모 (2026-09-11) ──
   실사진 수급 전 '이 자리에 이런 사진'을 보여주기 위한 임시 이미지.
   실존 인물 생성 금지 · 예시 표시(.ph-tag) 필수. 실사진 수신 시 URL만 교체. */
.stages .stage { padding:44px 0; }
.stages .stage:nth-child(even) .stage-photo { order:2; }
.stage-photo { position:relative; aspect-ratio:3/2; border-radius:14px; background-size:cover; background-position:center; overflow:hidden; }

.ph-tag { position:absolute; right:10px; bottom:10px; z-index:2; font-weight:500; color:#fff; background:rgba(19,60,54,.55); backdrop-filter:blur(4px); padding:4px 10px; border-radius:999px; pointer-events:none; }
.split-img { position:relative; }

/* ── v3.8: 함께한 무대 — 기존 사이트·프로그램북 실사진 (2026-09-11) ──
   venue-salon(4/26 프로그램북 조윤성) · venue-jeongdong(구 사이트, 텍스트 크롭)
   · venue-sac(SWMF 2025 실황). 통일감 위해 3장 모두 정적 흑백. */
.venue { overflow:hidden; }
.venue-photo { margin:-26px -26px 20px; aspect-ratio:3/2; background-size:cover; background-position:center; filter:grayscale(1); }

/* ── v3.9: THC 참고 인터랙션 A안 (2026-09-11) ──
   A1 홈 투명 헤더: 히어로 영상 위 투명 → 스크롤 시 다크그린 유리. 홈 전용(body.home).
   A2 스크롤 등장: .reveal은 app.js가 부여(JS 없으면 전부 그대로 보임). 절제 원칙 — 0.6s/14px, 그룹 단위만. */
body.home .header { position:fixed; left:0; right:0; background:transparent; backdrop-filter:none; border-bottom-color:transparent;
  transition: background .4s ease, backdrop-filter .4s ease, border-color .4s ease; }
body.home .header.scrolled { background:rgba(19,60,54,.88); backdrop-filter:blur(8px); border-bottom-color:rgba(187,154,119,.25); }
body.home .hero { min-height:100vh; min-height:100dvh; }

@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity:0; transform:translateY(14px); }
  .reveal.in { opacity:1; transform:none; }
}

/* ── v3.10: 마지막 섹션 ↔ 푸터 숨 고르기 (2026-09-11, 다운님 지적: 아카이브 패널이 푸터에 붙음) ── */
.section:has(+ .footer), .section.alt:has(+ .footer) { margin-bottom:88px; }
@media (max-width:620px) { .section:has(+ .footer), .section.alt:has(+ .footer) { margin-bottom:56px; } }

/* ── v3.11: 월별 탐색 바 (THC 공연안내 참고, 2026-09-11) ── */
.monthbar { border-bottom:1px solid var(--line); }
.monthbar .wrap { display:flex; gap:8px; align-items:center; padding:14px 24px; flex-wrap:wrap; }
.yr-select { appearance:none; -webkit-appearance:none; border:1px solid var(--navy); background:var(--navy);
  font-size:14px; font-weight:600; padding:9px 36px 9px 18px; border-radius:999px; cursor:pointer; margin-right:6px;
  background-repeat:no-repeat; background-position:right 14px center; background-size:12px; }

.no-result { display:none; color:var(--muted); font-size:15px; padding:26px 0 6px; }
.no-result.show { display:block; }
@media (max-width:620px) { .monthbar .wrap { padding:12px 24px; gap:6px; }  }

/* ── v4.0: 클라 2차 피드백 반영 (2026-09-15) ── */
/* ① 큰 정보그룹 박스 직각 — 라디우스 위계 개편: 패널 0 / 카드·사진·버튼 라운드 유지 */

/* ② 중점 정렬 보정 — app.js가 '·'를 .sep으로 감쌈 (전각 대시는 –로 전량 치환됨) */
.sep { display:inline; margin:0 -0.06em; position:relative; top:-0.03em; } /* 실측: Pretendard 중점 기준 (2026-09-16 캔버스 측정) */

/* ③ 미세 타이포 패스 — 네비 볼드·서브카피·버튼 */

.intro h1 { margin-bottom:20px; }

.m-gold .btn { font-size:16px; padding:13px 26px; }
.m-cream { padding-top:44px; padding-bottom:44px; }

/* ④ 제목 한영 병기 — EN 크게(Eina01) + 국문 볼드 소형 (클라 확정 위계) */

.page-hero h1.bi .kr { font-weight:700; letter-spacing:-.01em; }
.intro h1.bi .kr { font-weight:700; letter-spacing:-.01em; }

/* ⑤ 마퀴 캡션 — 실황 컷 통일 + 용도 라벨 */
.mq { position:relative; }
.mq-cap { position:absolute; left:10px; bottom:10px; z-index:2; font-weight:500; color:#fff;
  background:rgba(12,42,38,.55); backdrop-filter:blur(3px); padding:3px 10px; border-radius:999px; white-space:nowrap; }

/* ── v4.1: 아티스트 상세 한영 병기 — 인명 위계 뒤집기(EN 크게+국문·악기 볼드) + 소제목 병기 (2026-09-15) ── */

.a-head h1.bi .en { font-size:clamp(30px,3.4vw,44px); color:var(--navy); font-weight:inherit; margin-left:0; }
.a-head h1.bi .kr { font-weight:700; color:var(--navy); margin:10px 0 0; }

.a-sec.bi .kr { letter-spacing:-.01em; }

/* ── v4.2: 아티스트 상세 정보 밀도 개편 (2026-09-15, 페르소나 카드 레퍼런스) ──
   위계: 태그 필 → 스탯 카드 3장 → 인용 카드 → 스펙 테이블 → 연표형 경력 */
.a-tags { display:flex; flex-wrap:wrap; gap:8px; }
.tagp { display:inline-block; border:1px solid var(--gold); color:var(--navy); font-size:13px; font-weight:600;
  padding:5px 14px; border-radius:999px; background:rgba(187,154,119,.08); }

.a-quote { background:var(--panel); border-left:none; border-radius:14px; padding:22px 26px; position:relative; }
.a-quote::before { font-family:"Eina01", serif; font-size:52px; line-height:1; color:var(--gold); position:absolute; top:12px; left:18px; opacity:.45; }
.a-quote p { margin-bottom:8px; }
.a-quote cite { display:block; color:var(--muted); font-style:normal; }

.spec { width:100%; border-collapse:collapse; margin:6px 0 8px; }

.spec th { width:88px; text-align:left; vertical-align:top; padding:12px 10px 12px 2px; font-size:13px; font-weight:700; color:var(--navy); white-space:nowrap; }
.spec td { padding:12px 0 12px 6px; font-size:15px; color:var(--body-soft); }

.a-list li.yri { display:grid; grid-template-columns:118px 1fr; gap:12px; padding-left:0; }
.a-list li.yri::before { display:none; }
.yri .cy { white-space:nowrap; padding-top:1px; }
.yri .ct { color:var(--body-soft); }
@media (max-width:620px) { .a-list li.yri { grid-template-columns:1fr; gap:2px; } }

/* ── v4.3: 아티스트 상세 — 정보 그룹핑 재편 (2026-09-15, 동어반복 제거) ──
   스탯 카드 삭제, 사실별 단일 위치: 프로필 표 / 경력 연표 / 콩쿠르·수상 / 협연 필 / 음반 / 교육 */
.orch { flex-wrap:wrap; gap:8px; margin:4px 0 10px; }

.orch-note { color:var(--muted); margin:10px 0 0; }
.a-sec { margin-top:44px; }
.a-sec:first-child { margin-top:0; }

/* ── v4.4: 레이아웃 그리드 정규화 + 아티스트 그룹 카드 (2026-09-15) ──
   컨테이너 3단: 1560(풀·wrap 기본) / 1160(콘텐츠) / 880(텍스트). 인라인 폭 전량 정규화.
   아티스트 본문 = 카드 그리드(페르소나 레퍼런스): Profile 전폭 + 나머지 2열, 총수 짝수면 마지막 전폭. */
.a-cards { display:grid; grid-template-columns:repeat(2,1fr); align-items:start; }
.agroup { border-radius:14px; }
.agroup.span2 { grid-column:1 / -1; }
.a-cards .agroup:last-child:nth-child(even) { grid-column:1 / -1; }
.agroup .a-sec { margin-top:0; }
.agroup .a-list li:last-child { margin-bottom:0; }
.agroup .spec { margin-bottom:0; }
@media (max-width:860px) { .a-cards { grid-template-columns:1fr; }  }

/* ── v4.5: 아티스트 헤드 그리드 정렬 (2026-09-15, 다운님 지적 "그리드 안 맞음") ──
   12컬럼 체계(갭 14px): 헤드 = 사진 4 + 텍스트 8, 본문 카드 = 6 + 6. 사진 칸 고정 180px 폐기. */

.a-head .profile-photo { width:100%; aspect-ratio:3/4; border-radius:14px; }
@media (max-width:820px) { .a-head .profile-photo { max-width:320px; } }

/* ── v4.6: 8pt 스페이싱 스케일 + 행간 위계 재정립 (2026-09-16) ──
   근거: 12컬럼 거터 24px 표준(UCLA DS 등) · 8pt 배수 스케일 · 행간 제목 1.1~1.2/본문 1.6+
   원리: 근접성 — 묶음 안은 좁히고(이름↔국문 8px), 묶음 사이는 벌린다(본문↔인용 32px) */
:root { --s1:8px; --s2:16px; --s3:24px; --s4:32px; --s5:48px; --s6:64px; }

/* 그리드 간격 — 거터 24 통일 */
.a-cards { gap:var(--gutter); }

.agroup { padding:var(--s4); }

/* 아티스트 헤드 — 묶음 위계 */
.a-head h1.bi .en { line-height:1.1; }
.a-head h1.bi { margin-bottom:var(--s1); }
.a-head h1.bi .kr { line-height:1.35; }
.a-tags { margin:var(--s2) 0 var(--s3); }
.profile-txt > p { margin-bottom:var(--s2); }
.a-quote { margin:var(--s4) 0 0; }
.a-quote p { line-height:1.6; }

/* 섹션 타이틀 묶음 — EN↔KR 밀착, 타이틀↔콘텐츠 분리 */

.a-sec.bi .kr { line-height:1.3; }
.agroup .a-sec { margin-bottom:var(--s3); }

/* 표·리스트 행간 정돈 */
.spec th { padding-top:14px; padding-bottom:14px; }
.spec td { padding-top:14px; padding-bottom:14px; }
.a-list li { margin-bottom:10px; }

@media (max-width:820px) {

  .agroup { padding:var(--s3); }
}

/* ── v4.7: 아티스트 헤드 다크그린 히어로 (2026-09-16, 다운님 제안) ──
   공연 상세 .detail-hero와 같은 문법 → "상세 페이지 = 다크 히어로" 규칙 확립. 흑백 인물이 다크 위에서 강조. */
.a-hero { background: radial-gradient(900px 480px at 75% 20%, var(--navy-soft) 0%, rgba(28,78,70,0) 60%),
  linear-gradient(160deg, var(--navy) 0%, var(--navy-deep) 100%); color:var(--cream); }

.a-hero h1.bi .en, .a-hero h1.bi .kr { color:var(--cream); }
.a-hero .tagp { border-color:rgba(187,154,119,.55); color:var(--gold-soft); background:rgba(187,154,119,.12); }
.a-hero .profile-txt > p { color:rgba(244,239,230,.86); }
.a-hero .a-quote { background:rgba(244,239,230,.07); }
.a-hero .a-quote p { color:rgba(244,239,230,.92); }
.a-hero .a-quote cite { color:rgba(244,239,230,.55); }
.a-hero .profile-photo { box-shadow:var(--sh-3); }

/* ── v4.8: 가로줄 규칙 통일 (2026-09-16) — 구분선은 "항목 사이에만". 프로필 표의 외곽 상·하단 선 제거 */
.spec tr, .spec tr:first-child { border-top:none; }
.spec tr:last-child { border-bottom:none; }
.spec tr + tr { border-top:1px solid var(--line); }
.spec tr:first-child th, .spec tr:first-child td { padding-top:2px; }
.spec tr:last-child th, .spec tr:last-child td { padding-bottom:2px; }

/* ── v5.0: 과감한 인터랙션 (2026-09-16, 다운님 요청) ──
   ① 크로스 페이지 View Transitions + 아티스트 사진 모프 ② EN 타이틀 커튼 리빌
   ③ 홈 히어로 스크롤 시네마틱 ④ 호버 강화. 전부 점진적 향상 — 미지원 브라우저는 기존 동작. */

/* ① 페이지 전환: 크로스페이드 + 아티스트 사진 shared-element 모프 */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration:.38s; }
.a-hero .profile-photo { view-transition-name: artist-hero-photo; }
::view-transition-old(artist-hero-photo), ::view-transition-new(artist-hero-photo) {
  animation-duration:.5s; animation-timing-function:cubic-bezier(.2,.7,.2,1); }
@media (prefers-reduced-motion: reduce) { @view-transition { navigation: none; } }

/* ② EN 타이틀 커튼 리빌 — 섹션 타이틀이 마스크를 뚫고 상승 */
@media (prefers-reduced-motion: no-preference) {
  .sec-head.reveal h2.bi .en { clip-path: inset(0 0 105% 0); transform: translateY(.45em);
    transition: clip-path .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
  .sec-head.reveal.in h2.bi .en { clip-path: inset(0 0 -12% 0); transform: none; }
  /* 인트로 로드 시퀀스: 타이틀 커튼 → 국문 → 서브 → 버튼 순차 상승 */
  .intro h1.bi .en { clip-path: inset(0 0 105% 0); transform: translateY(.5em);
    animation: introCurtain .85s cubic-bezier(.2,.7,.2,1) .15s forwards; }
  .intro h1.bi .kr, .intro .cta2 { opacity:0; transform: translateY(14px);
    animation: introRise .7s cubic-bezier(.2,.7,.2,1) forwards; }
  .intro h1.bi .kr { animation-delay:.55s; }

  .intro .cta2 { animation-delay:.85s; }
}
@keyframes introCurtain { to { clip-path: inset(0 0 -12% 0); transform:none; } }
@keyframes introRise { to { opacity:1; transform:none; } }

/* ③ 홈 히어로 스크롤 시네마틱 (스크롤 구동 지원 브라우저만) */
@supports (animation-timeline: view()) {
  body.home .hero { view-timeline-name: --hero; }
  body.home .hero-video { animation: heroCinema linear both; animation-timeline: --hero;
    animation-range: exit 0% exit 100%; }
}
@keyframes heroCinema { to { transform: scale(1.09); filter: brightness(.55); } }

/* ④ 호버 강화 — 리프트·줌·마퀴 정지 */
@media (prefers-reduced-motion: no-preference) {
  .artist-card { overflow:hidden; }

  .marquee:hover .marquee-track { animation-play-state: paused; }

  .mq:hover { transform: scale(1.03); }
  .btn:hover { transform: translateY(-2px); box-shadow:var(--sh-1); }
}

/* ── v5.1: 아티스트 카드 일체화 (2026-09-16, 다운님 지적 "이름이 떠 있어 어색") ──
   투명 컨테이너 → 흰 카드 단위(사진 상단 풀블리드 + 캡션 내장). 공연장·정보 카드와 동일 문법, radius 14 통일. */

.artist-card .photo { border-radius:0; }

.artist-card .photo.empty { border-radius:0; }

/* ── v5.2: 페이지 타이틀 위계 복구 (2026-09-16, 다운님 지적 — 히어로 EN이 35px로 섹션 타이틀과 동급이었음) ──
   타입 스케일: 페이지 히어로 EN 56~92px(≈섹션 34px의 2.2배) > 섹션 EN 34 > 카드 소제목 21 */
.page-hero h1.bi .en { line-height:1.05; letter-spacing:-.01em; }

/* ── v5.3: 아티스트 카드 호버 단일화 (2026-09-17, 다운님 지적 "사진·카드 둘 다 움직여 이상") ──
   움직임은 카드 하나만(리프트+그림자). 사진의 개별 리프트·줌·디밍 전부 제거 — 흑백→컬러 전환만 유지. */
.artist-card:hover .photo, a.artist-card:hover .photo { transform:none; box-shadow:none; opacity:1; }

/* ── v5.4: 병기 누락분 보강 (2026-09-17 — 9/15 피드백 재검증에서 발견) ── */
.detail-info h1.bi .kr { letter-spacing:-.01em; }

/* ── v5.5: 페이지 타이틀 +10% · Regular 굵기 (2026-09-17, 다운님 지시) ── */
.page-hero h1.bi .en { font-size:clamp(62px, 7.7vw, 101px); font-weight:400; }

/* ── v6.0: 박스 은퇴 → 풀블리드 밴드 (2026-09-17, 다운님 확정 — 혼합 리듬) ──
   직각 피드백의 종착점: 색면은 화면 전체 폭(내용물은 그리드 위), 옅은 박스는 소멸.
   리듬 규칙: 마퀴↔그린 밴드는 붙이고, 색 밴드↔플레인 콘텐츠 사이는 88px. 애매한 틈 금지. */
 /* 밴드 내부 좌우 = wrap 콘텐츠 라인 */

/* A. 홈 — 모자이크 해체 */
.mosaic { display:block; padding-bottom:0; }
.mcard { border-radius:0; }
.mcard.m-green, .mcard.m-gold { padding:88px var(--band-pad); margin:0; }
.mcard.m-white, .mcard.m-cream { background:transparent; border:none; padding:88px var(--band-pad); }
 /* 마퀴 → 그린 밴드 밀착 */

/* B. 서브페이지 — 크림 밴드 풀블리드 */
.section.alt { max-width:none; margin:0; border-radius:0; border:none; padding:88px 0; }
.detail-hero, .fest-marquee, .detail-bottom-cta { max-width:none; margin:0; border-radius:0; }

@media (max-width:620px) {
  .mcard.m-green, .mcard.m-gold, .mcard.m-white, .mcard.m-cream { padding:56px 24px; }
  .section.alt { max-width:none; margin:0; border-radius:0; padding:56px 0; }
  .detail-hero, .fest-marquee, .detail-bottom-cta { max-width:none; margin:0; border-radius:0; }
}

/* ── v6.0b: 스크롤바 폭 보정 (가로 오버플로 수정) ── */
html { overflow-x: clip; }
:root { --sbw: 0px; }
.mosaic { margin-inline: calc(50% - 50vw + var(--sbw)/2); }

/* ── v6.1: 밴드 스플릿 — 좁은 텍스트 단의 빈 공간을 실황 이미지로 채움 (2026-09-17, 다운님 지적) ──
   페스티벌 일정·아카데미·지난 페스티벌: 880 중앙 단 → 1160 그리드 5:7 스플릿 (이미지+콘텐츠, 교차 배치) */

.band-split.rev .bimg { order:2; }
.bimg { position:relative; width:100%; aspect-ratio:4/3; border-radius:14px; background:center/cover no-repeat #0c2a26; overflow:hidden; }
.band-split .sec-head { margin-bottom:24px; }
@media (max-width:860px) {

  .band-split.rev .bimg { order:0; }
}
/* 스플릿 안 일정표 — 날짜·시간 줄바꿈 방지 */

/* ── v6.2: 밴드 스플릿 높이 정렬 — 이미지가 콘텐츠 열 높이를 꽉 채움 (2026-09-17) ── */

.band-split .bimg { aspect-ratio:auto; height:100%; min-height:340px; }
@media (max-width:860px) { .band-split .bimg { aspect-ratio:4/3; height:auto; min-height:0; } }

/* ════ v7.0: 9/18 클라 3차 피드백 (2026-09-20) ════ */

/* B-1. 타이틀 한 줄 병기: EN | KR (국문 승급) */
.bi .en { display:inline-block; }
.bi .kr { display:inline-block; margin:0; }
.bi .kr::before { font-weight:300; color:var(--gold); }

.page-hero h1.bi .kr { font-size:28px; margin-top:0; }
.a-head h1.bi .kr { margin-top:0; }

.detail-info h1.bi .kr { margin-top:0; }

/* B-2·B-3. 예정 공연 카드 = 아카이브 카드 통일 + 포스터 위 상태 박스 + 행간 그룹화 */

.ptag { position:absolute; top:10px; left:10px; z-index:2; font-weight:700; letter-spacing:.02em;
  padding:5px 12px; border-radius:8px; }
.ptag.up { background:rgba(244,239,230,.94); color:var(--navy); }

.acard .title { margin-bottom:4px; }

.acard .card-actions { display:flex; gap:8px; }
.acard .act-book, .acard .act-more { font-size:13px; padding:7px 14px; }

/* B-4. 카드 영/한 병기 */

/* B-5. 인사말 등 스플릿 사진 축소 (1:1 → 5:7) */

/* A-①. 메인 아티스트 6인 밴드 (골드) */
.main-band .main6 { display:grid; margin-top:36px; padding-bottom:56px; }
.main-band .m6 { display:block; color:var(--navy-deep); }
.main-band .m6 .ph { aspect-ratio:3/4; border-radius:10px; background:center top/cover no-repeat #0c2a26;
  filter:grayscale(1); margin-bottom:12px; box-shadow:var(--sh-1); }

/* A-④. 필터 위계: 카테고리 큰 위계 + 세로 구분선 / 연도 연하게 / 월 하위 위계 */
.filterbar .filter-btn[data-filter] { font-weight:600; }
.filterbar .filter-btn[data-filter] + .filter-btn[data-filter] { position:relative; margin-left:22px; }
.filterbar .filter-btn[data-filter] + .filter-btn[data-filter]::before { content:""; position:absolute; left:-12px; top:50%;
  transform:translateY(-50%); width:1px; height:16px; background:var(--line); }
.yr-select { background-color:transparent; border-color:var(--line); color:var(--navy);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23133C36' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-9'/%3E%3C/svg%3E"); }
.monthbar .month-btn { color:var(--muted); padding:7px 13px; }

/* A-④. 인덱스 영상 섹션 — 상단 정렬 + 단어 단위 줄바꿈 */

.watch .txt { word-break:keep-all; }

/* A-④. 푸터 행간 */

/* A-③. 문의 — 지도 흑백 */
.map-embed iframe { filter:grayscale(1); }

/* A-④. 페스티벌 일정 바로가기 */
.sched-links { display:flex; gap:10px; margin-top:20px; flex-wrap:wrap; }

/* C. 로고송 버튼 (히어로 우하단) */
.sound-btn { position:absolute; right:28px; bottom:28px; z-index:5; display:inline-flex; align-items:center; gap:8px;
  border:1px solid rgba(244,239,230,.55); background:rgba(12,42,38,.45); backdrop-filter:blur(6px);
  color:var(--cream); font-weight:600; cursor:pointer; }
.sound-btn:hover { background:rgba(187,154,119,.35); border-color:var(--gold); }
.sound-btn.playing { background:var(--gold); color:var(--navy-deep); border-color:var(--gold); }

/* ── v7.1: 병기 타이틀 강제 1줄 (2026-09-20, 다운님 지시) — 좁은 화면(≤720px)에서만 줄바꿈 허용 ── */
@media (min-width: 721px) {
  .sec-head h2.bi, .page-hero h1.bi, .a-sec.bi, .main-band h2.bi { white-space:nowrap; }
}
/* v7.1b: 구 레이어의 display:block 오버라이드 — 병기 스팬 전부 인라인화 */
.sec-head h2.bi .kr, .page-hero h1.bi .kr, .intro h1.bi .kr, .a-head h1.bi .kr,
.a-sec.bi .kr, .detail-info h1.bi .kr,
.sec-head h2.bi .en, .page-hero h1.bi .en, .intro h1.bi .en, .a-head h1.bi .en, .a-sec.bi .en { display:inline-block; }
/* v7.2: 로고송 버튼 아이콘 전용 (2026-09-20) */
.sound-btn { width:46px; height:46px; padding:0; justify-content:center; border-radius:50%; letter-spacing:-1px; }

/* ── v7.3: 행간 전체 한 단계 축소 (2026-09-20, 클라 "행간 전체적으로 줄이기") ── */
body { line-height:1.62; }
.profile-txt > p, .split-txt p, .stage p, .score-band p { line-height:1.62; }
.spec td, .a-list li, .yri .ct { line-height:1.5; }

.footer .cols p { line-height:1.75; }

.page-hero p { line-height:1.6; }
/* 페스티벌 회차 아카이브: 2장이므로 카드 폭 여유 */
.fest-arch { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.fest-arch .acard .thumb { aspect-ratio:16/10; }

/* ── v7.4: 타이틀 영문 = Futura 계열 (Jost, 2026-09-20 시연 — 정품 Futura 전환 시 이 스택만 교체) ── */
.bi .en, .m-gold h2.serif { letter-spacing:.005em; }  /* v7.61b: Jost 제거 — font-family는 아래에서 덮이나 letter-spacing은 여기가 유효 */

/* ── v7.5: 정품 Futura PT 연결 (Adobe Fonts 킷 ztu6oka · 다운님 CC 구독, 2026-09-20)
   허용 도메인: smm-preview.vercel.app / localhost / 127.0.0.1 — 실도메인 확정 시 fonts.adobe.com에서 킷에 추가.
   킷 미로드 시 Jost → Eina01 순 폴백이라 사이트는 깨지지 않음. ── */
.bi .en, .m-gold h2.serif { font-family:"Futura Pro","Eina01","Pretendard Variable",Pretendard,sans-serif; }

/* ── v7.6: 가로형 로고(클라 202609 신규) + 헤더 세로폭 2/3 (2026-09-21 다운님 지시) ── */
                          /* 104px × 2/3 */
             /* 가로형 184.93:14.17 → 높이 약 18px */

/* ── v7.7: 홈 인트로 병기 원복 + 타이틀 굵기 Regular (2026-09-21 다운님 지시) ── */
/* ① 홈 인트로만 예외 — 한줄 병기(EN | KR) 해제, 영문 아래 국문 2단 복귀 */
.intro h1.bi .en { display:block; }
.intro h1.bi .kr { display:block; margin-top:16px; }

@media (min-width:721px){ .intro h1.bi { white-space:normal; } }
/* ② 전 타이틀 굵기 Regular 400 (기존 영문600/국문700 → 영문 Futura PT Book · 국문 Regular) */
h1.serif.bi .en, h2.serif.bi .en, .m-gold h2.serif { font-weight:400; }
h1.serif.bi .kr, h2.serif.bi .kr { font-weight:400; }

/* ── v7.8: 다크 밴드 공연 카드 흰 외곽선 제거 (2026-09-21 다운님 지시)
   원인: 투명 1px 보더 아래로 흰 카드 배경이 비침(background-clip 기본값) → 보더 자체 제거 ── */
.m-green .archive .acard, .m-green .acard { border:0; }

/* ── v7.9: 아티스트 카드 위계 보정 (2026-09-21 다운님 지적 "악기 영문이 이름 영문보다 큼")
   국문 전용이던 .inst 15px에 영문이 붙으며 .ename 12px를 추월 → 이름 13 ≥ 악기 13으로 정렬 ── */

.main6 .in2 { font-size:13px; }

/* ── v7.10: 마퀴 ↔ 그린 밴드 여백 복원 (2026-09-21 다운님 지시 — v57 '밀착' 규칙 폐지, 표준 리듬 88px) ── */

/* ── v7.11: 인트로 CTA 정돈 (2026-09-21 다운님 지적 "버튼이 크지 않나 + 간격")
   타이틀 Regular 전환 후 Bold 56px 필이 헤드라인보다 강해 위계 역전 → 부제↔버튼 36px, 버튼 한 급 축소 ── */
.intro .cta2 { margin-top:36px; }
.intro .cta2 .btn { font-weight:600; }

/* ── v7.12: 타임라인 점 정렬 보정 (2026-09-21 다운님 지적)
   점=12px+테두리2px(content-box)=외경 16px인데 좌표가 12px 기준이라 선 중심 대비 +2px 어긋남.
   선 중심(-31px)에 외경 절반(8px) 반영 → left:-39px / 연도 첫 줄 중심(13.8px)에 맞춰 top:6px ── */
.timeline li::before { left:-39px; }

/* ── v7.13: 타임라인 선 = 첫 점~끝 점 구간만 + 점 2px 상향 (2026-09-21 다운님 지시)
   ul 전체 border-left 폐지 → li별 세그먼트(자기 점 중심→다음 점 중심). 마지막 li는 세그먼트 없음 ── */
.timeline { border-left:0; padding-left:32px; }   /* 보더 2px만큼 패딩 보전 — 텍스트 위치 불변 */
.timeline li::before { top:4px; z-index:1; }      /* 점 중심 12px — 텍스트 잉크 높이에 맞춤 */
.timeline li::after { content:""; position:absolute; left:-32px; top:12px; width:2px; height:100%;
  background:var(--gold-soft); }
.timeline li:last-child::after { display:none; }

/* ── v7.14: 페이지 타이틀 국문 제거 (2026-09-21 다운님 지시 — 타이틀 개편 1단계, 마크업은 보존) ── */
.page-hero h1.bi .kr { display:none; }

/* ── v7.15: 페이지 타이틀 영문 한 굵기 다운 (2026-09-21 다운님 지시) — Book 400 → Light 300 ── */

/* ── v7.16: 사진+텍스트 스플릿 = 상단 정렬 (2026-09-21 다운님 지시 — 기존 세로 중앙 정렬 폐지) ── */
.split, .band-split, .watch, .stages .stage { align-items:start; }

/* ── v7.17: 버튼 전역 통일 (2026-09-21 다운님 지시 "버튼도 통일")
   인트로에서 확정한 규격(15px·Semibold 600·패딩 11×24)을 모든 .btn 계열로 확장.
   카드 내부 소형 액션(.act-book 13px)은 별도 층위로 유지 ── */

.btn-pill { padding:11px 24px; }

/* ── v7.18: 푸터 직전 섹션 하단 여백 제거 (2026-09-21 다운님 지적 — 섹션 margin 사이로 배경색 띠 노출) ── */
section:has(+ .footer), div:has(+ .footer) { margin-bottom:0 !important; }

/* ── v7.19: 홈 공지사항 배경 분리 (2026-09-21 다운님 지시 — Watch(투명/페이퍼)와 구분되는 크림 패널) ── */
#news.mcard { border-color:var(--panel-line); }
#news .news-list { border-top-color:var(--panel-line); }
#news .news-item { border-bottom-color:var(--panel-line); }

/* ── v7.20: 공지 항목 호버 박스 여백 (2026-09-21 다운님 지적 — 기존 좌우 4px뿐)
   좌우 20px 패딩 + 음수 마진으로 텍스트 시작선은 유지, 호버 면만 밖으로 블리드 ── */
.news-item { padding:26px 20px; margin-inline:-20px; border-radius:12px; }
@media (max-width:720px){ .news-item { padding:20px 16px; margin-inline:-16px; } }

/* ── v7.21: 홈 마퀴 타일 그림자 제거 (2026-09-22 다운님 지적 — 그림자 번짐이 타일 사이 배경을 회색으로 물들임) ── */
.home-marquee .mq { box-shadow:none; }

/* ── v7.22: 푸터 정리 (2026-09-22 다운님 지시 — 공지사항 링크 제거 · SNS 아이콘+세로 3줄) ── */
.footer .sns-list { display:flex; flex-direction:column; }
.footer .sns-list a { display:inline-flex; align-items:center; gap:9px; }
.footer .sns-ic { flex:none; opacity:.85; }

/* ── v7.23: 로고 20% 확대 + 푸터 SNS 행간 축소 (2026-09-22 다운님 지시) ── */
                                    /* 240 × 1.2 */
       /* 200 × 1.2 */
       /* 168 × 1.2 */
.footer .sns-list { gap:5px; }

/* ── v7.24: 홈 마퀴 호버 = 틀 고정 + 사진 내부 줌 (2026-09-22 다운님 지적 — 타일 스케일이 스트립 overflow에 잘림)
   인라인 background-image를 ::before가 inherit로 받아 틀 안에서만 확대. 카드 호버 문법과 통일 ── */
.home-marquee .mq { position:relative; overflow:hidden; background-size:0 0; }  /* 부모 페인트 끔, 이미지는 ::before */
.home-marquee .mq::before { content:""; position:absolute; inset:0; z-index:0;
  background-image:inherit; background-size:cover; background-position:inherit; background-repeat:no-repeat;
  transition:transform .5s ease; }
.home-marquee .mq:hover { transform:none; }          /* 기존 타일 스케일 해제 */
.home-marquee .mq:hover::before { transform:scale(1.05); }
.home-marquee .mq .mq-cap { z-index:1; }

/* ── v7.25: 세 개의 무대 사진 크기 통일 (2026-09-22 다운님 지시)
   짝수 줄이 순서만 뒤집고 칸 폭은 그대로라 사진이 1fr(넓은 칸)에 들어가던 문제 — 칸 폭도 함께 반전 ── */

/* ── v7.26: 홈 골드 밴드 위계 재편 (2026-09-22 다운님 지시 — 페스티벌 페이지와 동일: Festival 소타이틀 → '올해의 주제' → Nova Lux) ── */
.m-gold h2.serif.bi { margin-bottom:26px; letter-spacing:.01em; }  /* 섹션 타이틀 공통 34px (v7.29b) — 구 레이어 64px 차단 */

.m-fest-theme { font-family:"Futura Pro","Eina01","Pretendard Variable",Pretendard,sans-serif; margin-bottom:12px; }

/* ── v7.27: 골드 밴드 우측 포스터 슬롯 (2026-09-22 다운님 확정 1안 — '올해의 주제' 라벨 제거·지난 페스티벌 링크 제거·버튼='자세히 보기') ── */
.m-fest-poster { display:flex; flex-direction:column; gap:18px; align-items:center; flex:none; }
.m-fest-poster .poster { border-radius:10px;
  background:center/cover no-repeat #0c2a26; position:relative; overflow:hidden; }
@media (max-width:720px){ .m-fest-poster { width:100%; }  }

/* ── v7.28: 골드 밴드 정렬·포스터 크기 (2026-09-22 다운님 지시)
   버튼=좌측 텍스트 블록 아래 · 텍스트 상단=포스터 상단 정렬 · 포스터 폭=연주자 카드급(~360px) ── */
.m-gold { align-items:flex-start; }
.m-fest-btn { margin-top:26px; }
  /* v7.30: 연주자 카드 사진급으로 — 중간 폭에서도 카드와 동급 크기 */

/* ── v7.28b: 포스터 우측 고정 (중간 폭에서 줄바꿈으로 좌측 하단에 떨어지던 문제) — v7.32b: Watch와 동일하게 920px 기준 ── */
@media (min-width:921px){
  .m-gold { flex-wrap:nowrap; }
  .m-fest-txt { flex:1 1 auto; min-width:0; padding-right:24px; }
  .m-fest-poster { margin-left:auto; }
}

/* ── v7.29: 골드 밴드 타이틀 = 섹션 타이틀 공통 규칙 (2026-09-22 다운님 지시 — 색만 다크그린 변형)
   sec-head 밖이라 국문 축소가 안 먹고, 골드 세로바가 골드 배경에 묻히던 문제 ── */

.m-fest-txt h2.serif.bi .kr::before { color:rgba(12,42,38,.5); }

/* ── v7.31: 골드 밴드 포스터 = 유튜브 16:9 비율 (2026-09-22 다운님 확정)
   웹: 우측 와이드 카드 / 모바일(≤720): 텍스트 아래 전폭 ── */
.m-fest-poster .poster { aspect-ratio:16/9; width:min(640px, 48vw); }
@media (max-width:920px){
  .m-fest-poster { width:100%; margin-left:0; }
  .m-fest-poster .poster { width:100%; }
}

/* ── v7.32: 골드 밴드 포스터 크기 = Watch 유튜브 임베드와 동일 공식 (2026-09-22 다운님 지시)
   Watch 그리드 1.5fr:1fr(거터 28) → 영상 폭 = 60%×(콘텐츠-28px). 포스터에 같은 값 적용. 접힘도 Watch와 동일 920px ── */
@media (min-width:921px){
  .m-fest-poster { flex:0 0 calc(60% - 17px); }
  .m-fest-poster .poster { width:100%; }
}

/* ── v7.33: 홈 섹션 상하 여백 +50% (2026-09-22 다운님 지시 — 88→132 / 인트로 120·64→180·96 / 마퀴 하단 88→132) ── */

.intro { padding:180px 0 96px; }
@media (max-width:920px){ .intro { padding:108px 0 66px; } }

/* ── v7.34: 홈 여백 리듬(+50%) 전 사이트 확장 (2026-09-22 다운님 지시 — 홈 규칙을 기준으로 통일)
   섹션 88→132 · 페이지 히어로 88/72→132/108 · 골드 마퀴 56→84 · 상세 히어로 48/64→72/96 · 하단 CTA 64→96 ── */

.fest-marquee { padding-top:84px; }

.detail-hero { padding:72px 0 96px; }
.detail-bottom-cta { padding:96px 0; }

/* ── v7.35: 공연 카드 날짜↔제목 간격 확대 (2026-09-22 다운님 지시 — 기존 2px, 전 카드 공통) ── */

/* ── v7.36: 공연 상세 = 기본 폭 통일 + 사진 확대 (2026-09-22 다운님 지시 — 컨테이너 원칙·132 리듬 적용)
   프로그램·출연 880px 폐지(전 섹션 좌우선 단일화), 포스터 380→520px급, 프로필 사진 180→280px ── */

@media (max-width:720px){ .profile-photo { max-width:280px; } }
/* v7.36b: 상세 히어로 상태 태그가 블록으로 늘어나던 것 보정 */

/* ── v7.37: 출연 프로필 사진 = 가로형 확대 (2026-09-22 다운님 지시 — 280px 세로형 → 480px 3:2 가로형, 세 개의 무대와 동일 문법) ── */

.profile-photo { aspect-ratio:3/2; }
@media (max-width:940px){ .profile-photo { max-width:none; } }

/* ── v7.38: 6단 폐지 (2026-09-22 다운님 지시 — "6단이 말이 되냐")
   메인 아티스트 6인 = 3단 × 2줄. 연주자 골드밴드 + 페스티벌 메인 6 카드 동일 적용. 거터 24 통일 ── */

/* ── v7.39: 연주자 골드 밴드 타이틀 = 좌정렬 + 섹션 소타이틀 규칙 (2026-09-22 다운님 지시)
   ① 페스티벌 eyebrow 제거(마크업) ② 센터→좌정렬 ③ 크기를 .sec-head h2 공통값(영 34 / 국 21)으로 —
   홈 골드 밴드 v7.29와 동일 처리(색만 다크그린 변형, 골드 배경에 세로바 묻히지 않게) ── */
.fest-marquee.main-band .wrap { text-align:left; }
.fest-marquee.main-band h2.serif { font-size:34px; letter-spacing:normal; margin-bottom:0; }

.fest-marquee.main-band h2.serif.bi .kr::before { color:rgba(12,42,38,.5); }
.fest-marquee.main-band .main6 { margin-top:40px; }  /* 타이틀↔그리드 = .sec-head margin-bottom 40px 동일 */

/* ── v7.40: 메인 아티스트 = 일반 아티스트와 동일 4단 (2026-09-22 다운님 지시)
   어제 v7.38의 3단×2줄 철회. 연주자 골드밴드(.main6)·페스티벌 메인6(.cols3) 모두
   .artist-grid 기본값(4단 → ≤920 2단)과 동일 거동으로 통일 ── */
.main-band .main6, .artist-grid.cols3 { grid-template-columns:repeat(4,1fr); }
@media (max-width:920px){ .main-band .main6, .artist-grid.cols3 { grid-template-columns:repeat(2,1fr); } }

/* ── v7.41: 중간 폭(1160) 완전 폐지 — 전 페이지 가로폭 단일화 (2026-09-22 다운님 지시)
   아티스트 상세 7종의 인라인 1160 제거(마크업) → 전 페이지가 기본 폭(--maxw 1560) 하나로 정렬.
   남은 예외는 긴 글 읽기 폭 880 2곳(소개 걸어온 길 · watch 영상)뿐 ── */
/* v7.41b: 880 읽기 폭도 폐지 (다운님 확정 "880도 1560으로") — 소개 걸어온 길·watch 영상 단의
   인라인 880 제거. 이로써 전 사이트 인라인 max-width 0개, 가로폭 = --maxw 1560 단 하나. */

/* ── v7.42: 브랜드 스토리 = 2단(5:7) 기준 배치 (2026-09-22 다운님 지시 + 레퍼런스 참고)
   레퍼런스 골격: 좌단 = 제목·캡션·바이라인 / 우단 = 본문, 이미지는 전폭 고정 비율 별블록.
   비율 5:7·거터 64는 사이트 스플릿 표준. 센터 정렬(story-lead·score-band·brand-colors) 폐지 ── */
.story-row { align-items:start; margin-bottom:96px; }
.story-row:last-child { margin-bottom:0; }
.sr-h h2.bi { margin-bottom:28px; }
.sr-h h3 { color:var(--navy); margin:0 0 16px; }
.sr-h .sr-cap { color:var(--muted); line-height:1.75; margin:0; }
.sr-h .sr-by { font-size:14px; color:var(--muted); line-height:1.75; margin:32px 0 0; }
.sr-b > p { color:var(--body-soft); font-size:17px; line-height:1.62; margin:0 0 14px; }
.sr-b > p:last-child { margin-bottom:0; }
.sr-b .eyebrow { margin:0 0 14px; }

/* 전폭 이미지 — 16:9 고정(brand-merch 원본 1.779와 정확히 일치, jongmyo는 센터 크롭) */
.story-fig { margin:0 0 96px; }
.story-fig .sf-img { aspect-ratio:16/9; border-radius:8px; background:#e7eae5 center/cover no-repeat; }
.story-fig figcaption { margin-top:14px; color:var(--muted); }

/* 악보 밴드 — 다크그린 유지, 내부만 좌정렬 2단 + 악보 전폭 */
.score-band { text-align:left; }
.score-band .score-img { width:100%; height:auto; display:block; margin:0 0 48px; }
.score-band .sr-h h3 { color:var(--cream); }
.score-band .sr-b > p { color:var(--cream); opacity:.72; max-width:none; margin:0 0 14px; }
.score-band .sr-b > p:last-child { margin-bottom:0; }

/* 컬러 스와치 — 좌단 안에서 좌정렬 */
.story-row .swatches { justify-content:flex-start; gap:32px; margin-top:28px; }
.story-row .swatch { text-align:center; }
.story-row .swatch .dot { width:64px; height:64px; }

@media (max-width:920px){
  .story-row { margin-bottom:56px; }
  .story-fig { margin-bottom:56px; }
  .sr-h h2.bi { margin-bottom:16px; }
  .sr-h .sr-by { margin-top:20px; }
  .score-band .score-img { margin-bottom:28px; }
}

/* ── v7.43: 모바일 1단 붕괴 회귀 수정 (2026-09-22 다운님 확인 후 반영)
   원인: 뒤쪽 v4.x/v7.x의 미디어쿼리 없는 다단 선언이 앞쪽 모바일 규칙을 캐스케이드로 덮음.
     · .split      L338 @620 1단  ← L1052 `.split{5fr 7fr}`(v4.x)에 덮임 → 375px에서 124/174 2단
     · .detail-grid L469 @820 1단 ← L1307 `minmax(320px,520px) 1fr`(v7.36)에 덮임 → 375px에서 320px 고정 칸
   수정: 원래 의도된 브레이크포인트(.split 620 / .detail-grid 820)를 파일 끝에서 재선언만 함
   (브레이크포인트·비율은 바꾸지 않음). 카드 그리드의 모바일 2단(.archive·.artist-grid·.main6·.fest-arch)은 의도된 동작이라 제외 ── */

/* ── v7.44: 스플릿 체계 완전 통일 (2026-09-22 다운님 "통일") ─────────────────────
   허브 대기 3건 일괄 확정: ① 비율 = 좁은단:넓은단 5:7 ② 거터 2값(스플릿 64 / 카드·1단 24)
   ③ 접힘 지점 = 860px 단일 (기존 620·820·860·920·940 혼재).
   넓은 단이 좌측인 유형(.watch·.contact-grid·짝수 stage)은 좌우만 뒤집어 7:5.
   minmax(0,·)로 그리드 오버플로 가드 유지(.a-head 기존 장치를 전 스플릿으로 확장). */
:root { --split-gap:64px; }

/* 좁은 단(사진·포스터·제목) 좌측 = 5:7 */
.split, .band-split, .story-row, .stages .stage,
.detail-grid, .profile-block, .a-head { gap:var(--split-gap);
}
/* 넓은 단(영상·폼·본문) 좌측 = 7:5 */
.watch, .contact-grid, .stages .stage:nth-child(even) {
  grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:var(--split-gap);
}

/* 접힘 = 860px 단일, 1단 거터 24 */
@media (max-width:860px){
  .split, .band-split, .story-row, .stages .stage, .stages .stage:nth-child(even),
  .detail-grid, .profile-block, .a-head, .watch, .contact-grid {
    grid-template-columns:1fr; gap:var(--gutter);
  }
  .stages .stage:nth-child(even) .stage-photo { order:0; }

}

/* 홈 골드밴드 포스터 = Watch 영상 폭 동일 공식 유지 (v7.32 다운님 지시).
   7:5 · 거터 64 기준 재계산: 영상 폭 = (콘텐츠-64)×7/12 = 58.3333% - 37.34px. 접힘도 860으로 이동. */
@media (min-width:861px){
  .m-gold { flex-wrap:nowrap; }
  .m-fest-txt { flex:1 1 auto; min-width:0; padding-right:24px; }
  .m-fest-poster { margin-left:auto; flex:0 0 calc(58.3333% - 37.34px); }
  .m-fest-poster .poster { width:100%; }
}
@media (max-width:860px){
  .m-fest-poster { width:100%; margin-left:0; flex:0 0 auto; }
  .m-fest-poster .poster { width:100%; }
}

/* ── v7.45: 타이틀 크기 조정 + 병기 막대 강화 (2026-09-23 다운님 지시)
   굵기는 기존 2종(히어로 300 Light / 그 외 400 Book) 그대로 유지 — 크기·막대만 변경.
   ① 큰제목(페이지 히어로) 조금 키움  clamp(62,7.7vw,101) → clamp(68,8.4vw,110)
   ② 중제(섹션 h2) 조금 줄임  영문 34→31 · 국문 21→19 (비율 1.62 유지)
   ③ 병기 세로 막대: 글립 "|"(굵기 0.94px·길이 12px, 폰트 굵기에 의존) →
      인라인 블록으로 교체해 굵기·길이를 직접 제어(2px / 0.86em). em 기준이라 전 타이틀 위계에 비례 적용 ── */

.bi .kr::before { display:inline-block;
  font-size:1em;                 /* em 기준을 .kr 크기로 되돌림(기존 .75em 해제) */
  width:2px; height:0.86em;
  background:currentColor;     /* color 기반이라 골드밴드용 다크그린 override(v7.29·v7.39)가 그대로 적용됨 */
  border-radius:1px;
  vertical-align:-0.06em;
}
/* v7.45b: 홈 인트로는 세로바 없음(v7.7 다운님 지시) — 위 content:""가 되살리지 않도록 재확인 */
.intro h1.bi .kr::before { content:none; margin:0; }

/* ── v7.46: 병기 막대를 영문 기준으로 이관 + 큰제목 +10% (2026-09-23 다운님 지시)
   ① 막대 소속을 .kr::before → .en::after 로 옮김. em 기준이 국문(19px)→영문(31px)이 되어
      모든 병기 위계에서 자동으로 영문 크기를 따라감(레벨별 하드코딩 불필요).
      길이 = 0.74em = Futura PT 실측 캡높이(베이스라인 위 0.71em / 아래 0.02em)로, 영문 글자 높이와 일치.
      색은 currentColor가 아니라 명시 지정 — .en의 글자색(다크)과 달라야 하므로.
   ② 큰제목 clamp(68,8.4vw,110) → clamp(75,9.24vw,121) (+10%) ── */

.bi .kr::before { margin:0; }        /* 막대 이관 — 국문 쪽 해제 */
.bi .en::after {
  width:2px; height:0.74em;                        /* em = 영문 크기, 0.74em = 캡높이 */
  background:var(--gold);
  border-radius:1px;
  vertical-align:-0.09em;                          /* v7.47c: 국문을 올리는 대신 막대를 내림 — 영문 캡 기준 약 2px(29px 기준) 하강 */
}
/* 골드 배경 위에서는 다크그린 (v7.29·v7.39 의도 승계) */
.m-fest-txt h2.serif.bi .en::after,
.fest-marquee.main-band h2.serif.bi .en::after { background:rgba(12,42,38,.5); }
/* 홈 인트로는 막대 없음 (v7.7) */
.intro h1.bi .en::after { content:none; margin:0; }

/* ── v7.46b: 막대 이관 후속 보정 + 중제 영문 축소 (2026-09-23 다운님 지시)
   ① 회귀 수정 — 페이지 히어로는 국문이 display:none(v7.14)인데, 막대가 .kr→.en으로 옮겨가며
      국문 없이 막대만 남아 "Artists |" 로 보임. 국문 숨김 위계는 막대도 함께 해제. (숨김 규칙은 L1177 한 곳뿐 — 전수 확인)
   ② 중제 영문 31 → 29px (-6.5%, 요청 5~10% 범위). 국문 19px 유지 → 영문이 국문보다 큼(비율 1.53). ── */
.page-hero h1.bi .en::after { content:none; margin:0; }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.48: 타이포 스케일 정규화 (2026-09-27 다운님 지시 — 40_리소스/웹_타이포그래피_규칙 기준)
   문제: 역할 하나에 값이 여러 개(본문 5종·캡션 3종·라벨 3종·카드제목 2종·블록제목 2종),
         그리고 제목 다수가 행간 선언이 없어 body의 1.62(본문 행간)를 물려받고 있었음.
   원칙(규칙 문서): 대형 제목 행간 1.1~1.2 / 본문 1.6~1.7 / 굵기 4단계 / 역할당 값 하나.
   확정: 가로폭 1560 유지 · 히어로 121px 유지(다운님 결정 2026-09-27).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── 제목 행간 위계 (가장 큰 수정) ── */
   /* 히어로 121px — 유지 */

   /* 상세 대제목 44 — 1.10/1.20 혼재 해소 */
   /* 밴드 제목 34 — 1.62 → 1.15 */
.sec-head h2.serif.bi,
.fest-marquee.main-band h2.serif.bi { line-height:1.20; }   /* 중제 29 — 1.62 → 1.20 */
.sr-h h3                            { line-height:1.25; }   /* 브랜드스토리 챕터 제목 28 */

/* ── 블록 제목 = 24/400 단일화 (기존 .split-txt 28/700 · .stage 27/700 혼재) ── */
.split-txt h3, .stage h3, .block-title { font-size:24px; font-weight:400; line-height:1.30; color:var(--navy); margin-bottom:14px; }

/* ── 소제목(아티스트 상세) = 400 (9/21 "전 타이틀 Regular 400" 미적용분) ── */

/* ── 카드 제목 = 18/600 단일화 (골드밴드 m6만 16/700이었음) ── */

/* ── 본문 = 17/400/1.62 단일화 (13·15·17px + 행간 1.62·1.80·1.90 혼재 해소) ── */
.sr-b > p:not(.eyebrow), .split-txt p:not(.eyebrow), .stage p:not(.eyebrow), .score-band .sr-b > p { font-size:17px; font-weight:400; line-height:1.62; }

/* ── 카드 메타 = 13/400/1.45 · 이미지 캡션·주석 = 14/400/1.5 ── */
.artist-card .inst, .main-band .m6 .in2 { font-weight:400; }
.story-fig figcaption, .program-note, .orch-note { font-size:14px; font-weight:400; line-height:1.50; }

/* ── 라벨(eyebrow) = 13/600/1.5 단일화 (13·15px + 행간 2종 혼재) ── */
.eyebrow, .sr-b .eyebrow, .score-band .eyebrow { font-size:13px; font-weight:600; line-height:1.50; }

/* ── 한글 줄바꿈 (규칙 문서 필수 항목) ── */
h1, h2, h3, h4, p, li, td, th, figcaption { word-break:keep-all; }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.49: 카드 그리드 = 4 > 3 > 2 > 1단 사다리 (2026-09-27 다운님 지시)
   기존: 4단 → (≤920) 2단  — 3단 단계가 없어 1000px대에서 카드가 과도하게 넓어짐.
   사다리: ≥1201 = 기준단수 / 921~1200 = 3단 / 621~920 = 2단 / ≤620 = 1단
   기준단수가 3인 목록(공연·장소)은 3 > 2 > 1, 2인 목록은 2 > 1 로 같은 리듬을 따름.
   거터는 카드 24px 유지(스플릿 64와 2값 체계).
   ═══════════════════════════════════════════════════════════════════════════ */

/* 기준 4단 — 연주자·메인6·아카이브 */
@media (min-width:1201px){
  .artist-grid, .artist-grid.cols3, .main-band .main6, .archive { grid-template-columns:repeat(4,1fr); }
}
@media (min-width:921px) and (max-width:1200px){
  .artist-grid, .artist-grid.cols3, .main-band .main6, .archive { grid-template-columns:repeat(3,1fr); }
}
@media (min-width:621px) and (max-width:920px){
  .artist-grid, .artist-grid.cols3, .main-band .main6, .archive { grid-template-columns:repeat(2,1fr); }
}

/* 기준 3단 — 공연 카드·장소 */
@media (min-width:921px){ .venues { grid-template-columns:repeat(3,1fr); } }
@media (min-width:621px) and (max-width:920px){ .venues { grid-template-columns:repeat(2,1fr); } }

/* 기준 2단 — 페스티벌 아카이브·카테고리 */
@media (min-width:621px){ .fest-arch { grid-template-columns:repeat(2,1fr); } }

/* 1단 — 전 그리드 공통 */
@media (max-width:620px){
  .artist-grid, .artist-grid.cols3, .main-band .main6, .archive, .venues, .fest-arch { grid-template-columns:1fr; }
}

/* 거터 — 카드 24 통일 (기존 .artist-grid 26/18, .archive 18 등 혼재 해소) */
.artist-grid, .artist-grid.cols3, .main-band .main6, .archive, .venues, .fest-arch { gap:var(--gutter); }

/* v7.48b: 강조 본문(.lead) = 이름 있는 역할로 승격 — about·festival의 인라인 font-weight 제거.
   규칙 문서의 "Lead 리드/강조 본문" 층위. 본문과 같은 17/1.62, 굵기만 600. */
.lead { font-size:17px; font-weight:600; line-height:1.62; margin-top:14px; }
/* v7.48c: 상세 대제목 clamp 통일 — .detail-info clamp(28,3.6vw,44) vs .a-head clamp(30,3.4vw,44)로
   갈려 있어 좁은 화면에서 28/30px로 어긋남. 한 식으로 통일. */

/* ═══════════════════════════════════════════════════════════════════════════
   v7.50: 카드 호버·반경 통일 (2026-09-27 다운님 승인)
   문제: 골드 테두리 호버가 .ccard/.acard 2종에만 있었음(2026-06-01 첫 빌드 유산).
         이후 만든 카드들(연주자 v51 · 골드밴드 m6)은 각각 따로 정의돼 규칙이 갈라짐.
   판단: 테두리 호버는 배경 의존적이라 전 카드 적용이 구조적으로 불가 —
         ① 골드밴드 위에선 골드가 배경에 묻힘 ② 다크밴드 카드는 9/21에 보더 자체를 제거
         ③ 그래서 이미 .m-green용 검정 예외가 따로 있었음.
   확정: 호버 = 리프트 + 그림자 단일. 테두리 색 변화 전면 폐지. 반경 10 통일.
   ═══════════════════════════════════════════════════════════════════════════ */

/* 반경 10 통일 (기존 8 / 10 / 14 혼재) */
.acard, .artist-card, .venue { border-radius:10px; }

/* 호버 = 리프트 -5 + 그림자 (전환 .28s) */

.acard:hover, .artist-card:hover, .venue:hover {
  transform:translateY(-5px);
  box-shadow:var(--sh-2);
}
/* 테두리색은 호버에서 건드리지 않음 — 원본 선언(.ccard/.acard의 골드, .m-green의 검정)을 직접 제거함.
   배경별 기본 보더색(.section.alt --panel-line · .m-green 검정/투명)이 그대로 유지된다. */

/* 골드밴드 메인6 — 카드 박스가 없어 그림자는 사진에, 리프트는 요소 단위 */
.main-band .m6:hover { transform:translateY(-5px); }

.main-band .m6:hover .ph { transform:none; filter:grayscale(0); box-shadow:var(--sh-2); }

/* ── v7.51: 화면 밖 카드 렌더·이미지 로딩 지연 (2026-09-27)
   CSS 배경 이미지는 네이티브 lazy가 안 먹어 17장이 한 번에 로드되던 문제.
   실측(연주자 페이지): 초기 이미지 17장 1004KB → 8장 503KB (50% 감소), 나머지는 스크롤 시.
   contain-intrinsic-size로 자리를 미리 잡아 스크롤 높이가 튀지 않게 함. ── */
/* ⚠️ contain-intrinsic-SIZE는 폭에도 적용돼 화면 밖 카드가 부풀어 넘친다(모바일 실측 500px).
   높이 축만 지정해야 폭은 그리드 트랙이 정한다. */
.artist-grid .artist-card { content-visibility:auto; contain-intrinsic-height:auto 520px; }
.main-band .m6             { content-visibility:auto; contain-intrinsic-height:auto 500px; }
.archive .acard            { content-visibility:auto; contain-intrinsic-height:auto 600px; }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.52: 그림자·모션 토큰화 (2026-09-27 — 퀄리티 개선 2차)
   문제: 그림자 13종 · 전환 시간 12종(.15~.75s) · 이징 3종 혼재.
        눈으로 구분 안 되는 .12/.13/.14가 따로 있는 건 "만들 때마다 값을 새로 정한 흔적"이고,
        그게 정돈되지 않은 인상의 기술적 실체.
   확정: 그림자 3단 · 전환 3단(+등장 1단) · 이징 1종.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{ /* 호버: 카드 부상 */
  --sh-3: 0 20px 48px rgba(6,22,19,.32);    /* 강조: 다크 배경 위 큰 이미지 */
  /* 전환 */
  --t-fast: .18s;    /* 색·투명도 등 작은 상태 변화 */
  --t-base: .28s;    /* 카드 호버 — transform·shadow */
  --t-slow: .5s;     /* 이미지 필터, 헤더 배경 */
  --t-enter: .7s;    /* 등장 연출(리빌·커튼) */
  --ease: cubic-bezier(.2,.7,.2,1);
}

/* 전환 시간·이징 통일
   ⚠️ 순서 주의: .reveal(등장)을 먼저 두고 카드 규칙을 뒤에 둔다.
      카드에 .reveal이 같이 붙는데 transition은 단축 속성이라 뒤 규칙이 전체를 덮는다.
      카드 규칙에 opacity를 포함시켜 등장 연출도 함께 처리. */
.reveal { transition:opacity var(--t-enter) var(--ease), transform var(--t-enter) var(--ease); }
@media (prefers-reduced-motion: reduce){ .reveal { transition:none; } }

.nav a, .filter-btn, .month-btn, .card-actions a, .sound-btn, .btn { transition:all var(--t-fast) var(--ease); }
.acard, .artist-card, .venue, .agroup, .main-band .m6 {
  transition:transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease),
             border-color var(--t-base) var(--ease), opacity var(--t-enter) var(--ease);
}
.artist-card .photo, .mq, .main-band .m6 .ph, .split-img, .profile-photo {
  transition:filter var(--t-slow) var(--ease), transform var(--t-slow) var(--ease), box-shadow var(--t-base) var(--ease);
}
.header { transition:background var(--t-slow) var(--ease), backdrop-filter var(--t-slow) var(--ease), border-color var(--t-slow) var(--ease); }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.53: 마감 디테일 (2026-09-27 — 퀄리티 개선 3차)
   ① 키보드 포커스 — 기존 :focus-visible 0건. 탭으로 이동하면 현재 위치가 안 보였음.
      (.cform은 input:focus에 outline:none까지 걸려 있어 더 안 보임)
   ② 숫자 정렬 — 날짜·연도·표가 비례폭 숫자라 세로로 쌓일 때 자릿수가 어긋남.
   ③ 제목 줄바꿈 — 마지막 줄에 한 단어만 떨어지는 것 방지.
   ※ text-underline-offset은 전역 `a{text-decoration:none}`이라 적용 대상이 없어 제외
     (밑줄은 전부 border-bottom 방식 — 이미 padding-bottom으로 간격 확보됨).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ① 키보드 포커스 링 — 마우스 클릭에는 안 나타남(:focus-visible) */
:focus-visible { outline:2px solid var(--gold); outline-offset:3px; border-radius:2px; }
/* 골드 배경 위에서는 골드가 묻히므로 다크그린 */
.m-gold :focus-visible, .fest-marquee :focus-visible { outline-color:var(--navy-deep); }
/* 다크그린 밴드 위에서는 밝은 골드 */
.m-green :focus-visible, .detail-hero :focus-visible, .a-hero :focus-visible, .footer :focus-visible, .header :focus-visible { outline-color:var(--gold-soft, #d8bd9a); }
/* 폼 입력 — 기존 outline:none 복구 */
.cform input:focus-visible, .cform textarea:focus-visible {
  outline:2px solid var(--gold); outline-offset:2px; border-color:var(--navy);
}

/* ② 숫자 고정폭 — 날짜·연도·표 */
.date, .cy, .spec td, .spec th, table td, table th, .news-item .date { font-variant-numeric:tabular-nums; }

/* ③ 제목 줄바꿈 균형 (한 단어만 떨어지는 줄 방지) */
h1, h2, h3, .block-title, .sr-h h3 { text-wrap:balance; }
.sr-b > p, .split-txt p, .stage p, .lead { text-wrap:pretty; }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.54: 모바일 레이아웃 전수 점검 수정 (2026-09-27)
   375px 실측으로 확인된 가로 넘침 4건. 문서 오버플로 festival 15 · about 27 · concert-detail 15px.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ② 히어로 하한 — "Management"는 375px 화면(가용 327)에서 최대 63px까지만 들어감(캔버스 실측).
   하한 75px가 넘치고 있었음. 320px 화면 기준 최대 52px까지 가능 → 48px로 하향.
   vw 계수(9.24)와 상한(121px)은 그대로라 520px 이상 화면은 변화 없음. */

@media (max-width:620px){
  /* ③ 페스티벌 일정표 — 4열 데이터(일자·장소·시간·프로그램)라 스택하면 오히려 읽기 어려움 → 가로 스크롤 */
  .fest-schedule { display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .fest-schedule tbody { display:table; width:max-content; min-width:100%; }

  /* ④ 공연 상세 메타표 — 라벨/값 2열이라 좁은 화면에선 세로 스택이 정답 */
  .meta-table, .meta-table tbody, .meta-table tr, .meta-table th, .meta-table td { display:block; width:auto; }
  .meta-table th { padding:14px 0 2px; }
  .meta-table td { padding:0 0 12px; border-bottom:1px solid rgba(243,236,227,.14); }
  .meta-table tr:last-child td { border-bottom:none; }
}

/* ── v7.55: 모바일 터치 타겟 확보 (2026-09-27 실측 — 40px 미만 8건)
   가장 문제: 햄버거 19×36px(권장 44의 절반 이하). 언어 토글 35×27, 푸터 SNS 높이 29.
   본문 인라인 링크(브레드크럼·이메일)는 글 흐름 안이라 높이를 억지로 키우면 행간이 깨져 제외. ── */
@media (max-width:920px){
  .burger {
    display:flex; align-items:center; justify-content:center;
    width:44px; height:44px; margin-right:-10px;   /* 시각 위치는 유지하고 히트 영역만 확장 */
  }
  .lang span { padding:0 8px; }
  .header .lang span.on { padding:0 10px; }
  .footer .sns-list a { min-height:40px; }
  .footer .sns-list { gap:2px; }
}
/* v7.55b: 터치 타겟 보완 — EN은 span이 아니라 <a>라 앞 선택자에 안 걸렸음.
   텍스트 링크(.more 등)는 밑줄 위치가 틀어지지 않게 가상요소로 히트 영역만 넓힘. */
@media (max-width:920px){
  .burger { flex:0 0 44px; }
  .lang a, .lang span { min-width:40px; min-height:40px; display:inline-flex; align-items:center; justify-content:center; }

  /* 인라인 텍스트 링크 — 시각은 그대로, 히트 영역만 확장 */
  .sec-head .more, .card-actions a { position:relative; }
  .sec-head .more::after { position:absolute; inset:-9px -8px;
  }
}
/* v7.55c: 카드 하단 액션 버튼(예매하기·더보기) 37 → 40px */
@media (max-width:920px){
  .card-actions a { min-height:40px; display:inline-flex; align-items:center; justify-content:center; }
}

/* ── v7.56: 320px 소형 화면 헤더 넘침 (2026-09-27 실측)
   320 가용폭 272 = 로고168 + 햄버거44 + KR40 + EN40 + 여백33 = 325 → 41px 넘쳐 EN이 잘림.
   (터치 타겟 확대 전에도 약 18px 넘치던 기존 문제 — 확대로 드러남)
   로고를 줄이고 우측 묶음 여백을 좁혀 해결. ── */
@media (max-width:400px){

  .header .lang { margin-left:10px; gap:2px; }
  .burger { margin-right:-6px; }
}

/* ── v7.57: 공연 상세 히어로 — 배지·공연명 줄바꿈 수정 (2026-09-27 다운님 지적)
   ① 배지: `.tag` 스타일이 `.ccard .tag` 스코프에만 정의돼 있어 상세 페이지 배지는
      배경색만 받고 **패딩 0 · 16px · 굵기 400**으로 렌더 → 글자가 상자 가장자리에 붙음.
      라벨 위계(13/600)에 맞춰 상세용 정의 추가.
   ② 공연명: 마크업에 `<br>`가 있어 영문이 2줄인데 국문이 둘째 줄 끝에 붙어
      "Flute Recital │ 헨릭 비제 …"로 읽힘. 국문을 아래 줄로 내리고 구분 막대 제거
      (줄이 바뀌면 막대의 구분 역할이 사라짐). 명시 줄바꿈이라 text-wrap:balance도 해제. ── */
.detail-info .tag {
  display:inline-block; font-weight:600;
  line-height:1.2; padding:8px 13px; border-radius:3px;
}
.detail-info h1.serif.bi { text-wrap:initial; }
.detail-info h1.serif.bi .en::after { content:none; margin:0; }
.detail-info h1.serif.bi .kr { display:block; margin-top:12px; }
/* v7.57b: 근접성 보정 — 배지↔제목 14px < 영문↔국문 16px 로 묶음 사이가 묶음 안보다 좁았음.
   규칙(웹_타이포그래피_규칙: 묶음 안은 좁히고 묶음 사이는 벌린다) 적용 → 배지↔제목 24px. */
.detail-info h1.serif.bi { margin-top:22px; }

/* ── v7.58: 아티스트 상세 히어로 (2026-09-28 다운님 지적 "사진이 좌우폭에 안 맞음")
   ① 사진 폭: `.a-head .profile-photo`에 `max-width:320px`(≤820 구간)가 남아 있어
      393px 화면에서 콘텐츠 345 중 320만 차지 → 우측 25px이 비어 어긋나 보임.
      1단으로 접힌 뒤엔 콘텐츠 폭이 이미 좁아 상한이 불필요 → 해제.
   ② 인명 타이틀: 국문부가 "헨릭 비제 · 플루티스트(수석) & 음악학자 · 편집자"로 길어
      **데스크톱(1512)에서도 영문과 다른 줄**로 떨어짐 → 막대만 첫 줄 끝에 고아로 남음.
      공연 상세(v7.57)와 동일하게 국문을 블록으로 내리고 막대 제거. ── */
@media (max-width:860px){
  .a-head .profile-photo { max-width:none; }
}
.a-head h1.serif.bi .en::after { content:none; margin:0; }
.a-head h1.serif.bi .kr { display:block; margin-top:10px; }

/* ── v7.59: 인용 블록 장식 따옴표 제거 (2026-09-28 다운님 지시)
   `.a-quote::before`의 큰 따옴표(\201C, 52px 골드)를 없애고,
   그 자리를 비워두던 `padding-left:34px`도 함께 해제해 본문이 블록 좌측선에 맞게 함.
   본문 안의 인용부호("…")는 원문 표기이므로 유지. 적용 대상: 아티스트 상세 6종. ── */
.a-quote::before { content:none; }
.a-quote p, .a-quote cite { padding-left:0; }

/* ═══════════════════════════════════════════════════════════════════════════
   v7.60: Futura Pro 자체 호스팅 (2026-10-06 다운님이 MyFonts 웹폰트 킷 구매)
   Webfont: Futura Pro Light / Futura Pro Book by Linotype — MyFonts Build 3867246
   ⚠️ 라이선스: 이 웹폰트는 사이트 소유자가 체결한 EULA에 종속. 제3자 사용 금지.
   킷 원본 CSS는 두 파일을 별개 패밀리(FuturaProBook/FuturaProLight)로 선언하고
   font-weight가 없어 둘 다 400으로 잡힌다 → 한 패밀리 + 굵기 300/400으로 재선언.
   ═══════════════════════════════════════════════════════════════════════════ */
@font-face {
  font-family:'Futura Pro';
  src:url('fonts/FuturaPro-Light.woff2') format('woff2'), url('fonts/FuturaPro-Light.woff') format('woff');
  font-weight:300; font-style:normal; font-display:swap;
}
@font-face {
  font-family:'Futura Pro';
  src:url('fonts/FuturaPro-Book.woff2') format('woff2'), url('fonts/FuturaPro-Book.woff') format('woff');
  font-weight:400; font-style:normal; font-display:swap;
}

/* ═══════════════════════════════════════════════════════════════════════════
   v7.61: Futura Pro 광학 크기 보정 — 이전(Futura PT) 크기로 복원 (2026-10-06 다운님 지시)
   Futura Pro(링크타입)는 Futura PT(어도비)보다 캡하이트가 13% 크다(0.760 vs 0.670~0.675).
   같은 px이면 글자가 커 보이므로, 캡하이트 비율로 font-size를 역산해 **보이는 크기**를 맞춘다.
     Light(300) 계수 0.675/0.760 = 0.888   ·   Book(400) 계수 0.670/0.760 = 0.882
   ※ 국문(Pretendard)은 서체가 바뀌지 않았으므로 크기 그대로 둔다.
   ═══════════════════════════════════════════════════════════════════════════ */
/* 히어로 — 300 Light : clamp(48, 9.24vw, 121) × 0.888 */

/* 홈 인트로 — clamp(36, 4.2vw, 60) × 0.882 */

/* 상세 대제목(공연명·인명) — clamp(28, 3.6vw, 44) × 0.882 */

/* 홈 골드밴드 제목 34 × 0.882 */

/* 페스티벌 테마(Nova Lux) — clamp(40, 4.5vw, 64) × 0.882 */

/* 중제(섹션) 29 × 0.882 */

/* 아티스트 소제목 21 × 0.882 */

/* v7.61b: 폴백 체인에서 Jost 제거 — 어도비 킷 시절 잔재.
   실측상 Jost는 어디서도 해결되지 않아(웹폰트 미로드·미설치) 죽은 항목이었고,
   혹시 방문자 PC에 설치돼 있으면 Futura보다 11% 좁아 레이아웃이 틀어진다.
   Futura Pro 자체 호스팅 이후 폴백은 Eina01(폭 차 8%)이 훨씬 가깝다. */

/* ═══════════════════════════════════════════════════════════════════════════
   v7.62 (2026-10-06 다운님 지적) — 인트로 행간 · 버튼 글자 상하 중앙
   ① 인트로 "Stages Where Music / Touches Hearts" — 1행 g 꼬리와 2행 T 머리가 붙어 보임
      Futura Pro 실측(em): 캡 .754 · 어센더(h) .825 · 디센더(g) .262
      행간 1.10 → g↔T 잉크 간격 .084em(4.4px) · g↔h .013em(0.7px, 사실상 접촉)
      행간 1.20 → g↔T .184em(9.7px) · g↔h .113em(6.0px)   [52.9px 기준]
   ② 버튼 글자가 0.4~2.1px 위로 뜸 — 원인 두 가지
      - 줄 상자는 1순위 서체(Eina01, 어센더.8/디센더.2) 기준인데 실제 글자는 한글(Pretendard)이라
        잉크 중심이 .054em 위에 놓임 → 한글 전용 버튼은 Pretendard를 1순위로
      - 카드 '예매하기'만 테두리가 없어 옆 '더보기'(1px 테두리) 높이에 늘려 맞춰지며 글자가 위에 남음
        → 같은 1px 테두리를 준다
      - 행간 24.3px 같은 소수 px는 반 픽셀 스냅으로 위로 쏠림 → 정수 px 행간
      결과: 전 페이지 버튼 13종 잉크 중심 편차 −0.36~+0.52px (1px 스냅 한계 안)
   ═══════════════════════════════════════════════════════════════════════════ */

.btn, .card-actions a { font-family:"Pretendard Variable", Pretendard, -apple-system, sans-serif; }

.card-actions a { line-height:21px; }
.act-book { border:1px solid var(--gold); }
.act-book:hover { border-color:var(--gold-soft); }

/* v7.63 (2026-10-07 다운님 결정) — 페이지 히어로 영문 107.5 → 최대 72px
   본문(17) 대비 6.3배 → 4.2배 · 홈 인트로(52.9)보다 1.4배 큼(위계 유지)
   실측: 글자 윗선 141.3 → 137.8px(−3.5, 보정 불필요) · 히어로 높이 403 → 367px
   좁은 화면에서 2줄이 되면 행간 1.05는 빡빡해 1.15 */

/* v7.64 (2026-10-07) — 데이터 빌드 도입: 예정 공연이 없을 때 안내 문구 */
.empty-note { grid-column:1/-1; font-size:17px; line-height:1.62; padding:8px 0 4px; }
.empty-note a { white-space:nowrap; }

/* 공연 상세 포스터 — 글자 없는 이미지 상자는 그리드 auto 여백에서 폭 0이 되므로 폭을 명시 */
.detail-poster { width:100%; }
/* 공연 상세 소개 문단 (빌드 생성) */
.detail-intro { max-width:760px; }
.detail-intro p { font-size:17px; line-height:1.62; margin-bottom:1em; word-break:keep-all; }

/* v7.65 (2026-10-08) — 공지 상세 페이지 (빌드 생성, templates/news.html)
   읽기 폭 760 · 본문 17/1.62 · 배지·날짜는 목록(.news-item)과 같은 모양 */
.nd { margin:0 auto; }
.nd-crumb { margin-bottom:28px; font-size:15px; }

.nd-head { padding-bottom:26px; margin-bottom:30px; border-bottom:1px solid var(--line); }
.nd-meta { display:flex; align-items:center; gap:14px; margin-bottom:14px; }

.nd-meta .date { color:var(--muted); font-variant-numeric:tabular-nums; }
.nd-title { font-weight:600; line-height:1.4; word-break:keep-all; text-wrap:balance; }
.nd-summary { font-size:18px; line-height:1.55; color:var(--body-soft); margin-top:12px; word-break:keep-all; }
.nd-body p { font-size:17px; line-height:1.62; color:var(--ink); margin-bottom:1em; word-break:keep-all; }
.nd-body p:last-child { margin-bottom:0; }
.nd-link { margin-top:30px; }
.nd-nav { margin:64px auto 0; padding-top:22px; border-top:1px solid var(--line); gap:20px; align-items:start; font-size:15px; }
.nd-nav a { color:var(--ink); word-break:keep-all; }
.nd-nav a span { display:block; font-weight:600; color:var(--muted); margin-bottom:4px; }
.nd-nav a:hover { color:var(--navy); }
.nd-next { text-align:right; }
.nd-list { align-self:center; padding:8px 18px; border:1px solid var(--line); border-radius:999px; font-size:14px; font-weight:600; }
@media (max-width:620px) {

  .nd-list { grid-column:1/-1; grid-row:2; justify-self:center; }
}
/* 푸터 저작권 줄 끝 관리자 링크 — 저작권 문구와 같은 크기·투명도로 눈에 띄지 않게 */
.footer .copy .copy-admin { white-space:nowrap; }
.footer .copy .admin-link { display:inline; color:inherit; padding:0; margin:0; }
.footer .copy .admin-link:hover { text-decoration:underline; text-underline-offset:3px; }

/* v7.66 (2026-10-13 다운님 결정) — 섹션 '더보기' 링크: 금색 밑줄 → 외곽선 알약 (A안)
   이유: 이전 SMM 사이트 관리사(쿨디가 포스트)의 '글자 + 아래 금색 선' 링크와 같아 보임 → 사이트의 알약 버튼과 같은 계열로 통일
   글자 중앙: 버튼과 같은 규칙(한글 서체 1순위 · 정수 행간) */
.sec-head .more {
  display:inline-flex; align-items:center; gap:4px;
  border:1px solid rgba(19,60,54,.28); border-bottom-width:1px; border-radius:999px;
  padding:6px 15px; font-weight:500; line-height:20px; white-space:nowrap;
  font-family:"Pretendard Variable", Pretendard, -apple-system, sans-serif;
  color:var(--navy); transition:background var(--t-fast, .18s) ease, color var(--t-fast, .18s) ease, border-color var(--t-fast, .18s) ease;
}

/* 알약은 자체로 34px라 터치용 확장 영역(::after)이 필요 없다 */
.sec-head .more::after { content:none; }

/* v7.67 (2026-10-13 다운님 결정) — 카드 글줄 2줄: 제목 1줄 + 설명 1줄, 왼쪽 정렬
   이유: 포스터→분류→날짜→제목→장소로 쌓던 카드 구조가 쿨디가 포스트(AI 생성)와 같아 보임
   연주자 = '국문 이름 + 영문 이름' 한 줄 / '악기 · Instrument' 한 줄 */
.artist-card { text-align:left; padding-bottom:20px; }
.artist-card .photo { margin-bottom:16px; }
.artist-card .name { padding:0 20px; }

.artist-card .inst { padding:0 20px; margin:3px 0 0; color:var(--muted); }
/* 메인 아티스트 띠(로즈골드 바탕) — 같은 2줄 구조 */
.main-band .m6 { text-align:left; }

/* 지난 페스티벌 카드 — 날짜는 사진 위 표시로, 본문은 제목 + 설명 */
.fest-arch .acard .body { padding:20px 22px 24px; }
.fest-arch .acard .title { margin-bottom:6px; }
.fest-arch .acard .desc { color:var(--muted); word-break:keep-all; }

/* v7.68 (2026-10-13) — 공연 카드도 2줄(공연명 / 날짜 · 장소), 분류 칩 제거
   + 카드 테두리 선 제거 (다운님 제안). 칸 구분은 흰 카드 면과 바탕의 명도 차이로만 */
.acard .body { padding:18px 20px 20px; }
.acard .body .title { margin-bottom:4px; word-break:keep-all; }
.acard .body .meta { color:var(--muted); }
.acard .card-actions { margin-top:14px; }
.acard, .section.alt .acard, .artist-card, .fest-arch .acard { border:0; }

/* ═══════════════════════════════════════════════════════════════════════════
   v8.0 디자인 시스템 층 (2026-10-13 다운님 결정) — 이 아래 규칙이 위의 모든 층보다 우선
   참고: 쏘카(엄격한 그리드·단순한 글자 체계) · 우버 지속가능성 페이지(흰색 위주 배경)
   ① 그리드: 콘텐츠 최대 1280 · 12칸 · 칸 간격 24 하나
      분할 = 좁은 단 5칸 + 빈 1칸 + 넓은 단 6칸 → 넓은 단(사진·영상) 가장자리가 4칸 카드의 세로선과 일치
   ② 글자: 7단계 72 / 40 / 26 / 20 / 17 / 15 / 13 · 굵기 400·600
   ③ 섹션 제목: 영문 유지 + 국문은 아래 회색 한 줄 (│ 막대 병기 폐지)
   ④ 페이지 대제목·인트로 왼쪽 정렬 (가운데 정렬 폐지)
   ═══════════════════════════════════════════════════════════════════════════ */
:root {
  --maxw:1280px; --pad:32px; --gutter:24px;
  --fs-1:clamp(40px, 4.8vw, 72px); --fs-2:clamp(28px, 2.8vw, 40px); --fs-5:17px;
  --band-pad:max(var(--pad), calc(50vw - var(--sbw)/2 - var(--maxw)/2));
}
@media (max-width:620px) { :root { --pad:20px; } }

/* ① 컨테이너 */
.wrap { max-width:calc(var(--maxw) + var(--pad) * 2); padding-left:var(--pad); padding-right:var(--pad); }
.filterbar .wrap, .monthbar .wrap { padding-left:var(--pad); padding-right:var(--pad); }

/* ① 카드 그리드: 간격 하나 */
.archive, .artist-grid, .artist-grid.cols3, .main-band .main6, .a-cards, .fest-arch { column-gap:var(--gutter); row-gap:var(--gutter); }

/* ① 분할 레이아웃 = 12칸 */
.split, .band-split, .story-row, .stages .stage, .detail-grid, .profile-block, .a-head,
.watch, .contact-grid, .mcard.m-festival {
  display:grid; grid-template-columns:repeat(12, minmax(0, 1fr)); column-gap:var(--gutter); row-gap:var(--gutter);
}
/* 좁은 단이 왼쪽: 1~5칸 | (6칸 비움) | 7~12칸 */
.split > :first-child, .story-row > :first-child, .stages .stage > :first-child,
.detail-grid > :first-child, .profile-block > :first-child, .a-head > :first-child,
.mcard.m-festival > .m-fest-txt { grid-row:1; }
.split > :last-child, .story-row > :last-child, .stages .stage > :last-child,
.detail-grid > :last-child, .profile-block > :last-child, .a-head > :last-child,
.mcard.m-festival > .m-fest-poster { grid-row:1; }
/* 넓은 단이 왼쪽: 1~6칸 | (7칸 비움) | 8~12칸 */
.watch > :first-child, .contact-grid > :first-child { grid-row:1; }
.watch > :last-child, .contact-grid > :last-child { grid-row:1; }
/* 사진이 오른쪽으로 가는 변형 */
.band-split.rev > .bimg { grid-row:1; }
.band-split.rev > :not(.bimg) { grid-row:1; }

.mcard.m-festival .m-fest-txt { padding-right:0; }
.mcard.m-festival .m-fest-poster, .mcard.m-festival .m-fest-poster .poster { width:100%; margin:0; }
@media (max-width:860px) {
  .split, .band-split, .story-row, .stages .stage, .detail-grid, .profile-block, .a-head,
  .watch, .contact-grid, .mcard.m-festival { grid-template-columns:minmax(0, 1fr); }
  .split > *, .band-split > *, .story-row > *, .stages .stage > *, .detail-grid > *, .profile-block > *,
  .a-head > *, .watch > *, .contact-grid > *, .mcard.m-festival > * { grid-column:1 / -1 !important; grid-row:auto !important; }
}

/* ④ 왼쪽 정렬 */
.intro, .page-hero { text-align:left; }
.intro h1, .page-hero h1, .page-hero p { margin-left:0; margin-right:0; max-width:none; }
.intro .cta2 { justify-content:flex-start; }

/* ③ 섹션 제목: 영문 + 아래 회색 국문 한 줄 */
.bi .kr::before { content:none; }
.sec-head h2.bi, .m-fest-txt h2.serif.bi, .main-band h2.bi, .a-sec.bi { white-space:normal; }
.sec-head h2.bi .kr, .m-fest-txt h2.serif.bi .kr, .fest-marquee.main-band h2.serif .kr, .sr-h h2.bi .kr {
  display:block; margin:8px 0 0; font-family:"Pretendard Variable", Pretendard, sans-serif;
  font-size:var(--fs-6); font-weight:400; line-height:1.5; letter-spacing:0; color:var(--muted);
}

.a-sec.bi .kr { display:block; margin:4px 0 0; font-size:var(--fs-7); font-weight:400; color:var(--muted); }
.sec-head { align-items:flex-end; }

/* ② 글자 7단계 */

.a-sec.bi .en, .block-title, .split-txt h3, .sr-h h3, .fest-arch .acard .title { font-size:var(--fs-4); }
.page-hero p, .intro h1.bi .kr { font-size:var(--fs-5); }
/* ② 글자 7단계 — 실측으로 찾은 나머지 (16→15·17, 18→17, 14→15·13, 11·12→13, 19·22·24→20) */
.sec-head h2.serif.bi .kr { color:var(--muted); }

.nav a, .filter-btn, .sec-head .more, .m-fest-btn, a.pl, .nd-nav .nd-list { font-size:var(--fs-6); }

.artist-card .inst, .main-band .m6 .in2, .acard .body .meta, .fest-schedule td, .yri .cy, .venue p { font-size:var(--fs-6); }

.mq-cap, .ph-tag, .ptag, .fest-schedule th, .program-note, .story-fig figcaption, .sr-by { font-size:var(--fs-7); }
.split-txt p, .story-row p:not(.sr-cap):not(.sr-by), .stage-txt p { font-size:var(--fs-5); }
.stage-txt h3, .venue h3, .watch .txt h3, .profile-txt h3, .detail-info h1.bi .kr { font-size:var(--fs-4); }
body { font-size:var(--fs-5); }
.fest-marquee.main-band h2.serif.bi .kr { display:block; margin:8px 0 0; font-size:var(--fs-6); font-weight:400; }
.filterbar .filter-btn, .monthbar .filter-btn, .m-gold .m-fest-btn { font-size:var(--fs-6); }

.sr-h p.sr-by { font-size:var(--fs-7); }
.filterbar .filter-btn[data-filter] { font-size:var(--fs-6); }
.timeline p { font-size:var(--fs-6); }
/* ③ 병기 막대는 .en::after로도 그려지고 있었음 → 모두 해제 */
.bi .en::after { content:none !important; display:none; margin:0; }
/* 홈 인트로 문장 = 대제목 단계(72) — 다운님 "키워줘" */
.intro h1, .intro h1.serif.bi .en { font-size:var(--fs-1); }

/* v8.1 (2026-10-13 다운님 "더 줄일 수 있나" → 5단계) — 72 / 40 / 26 / 17 / 14
   20 → 17(굵기 600으로 위계) · 15 + 13 → 14 */
:root { --fs-4:17px; --fs-6:14px; --fs-7:14px; }
.block-title, .split-txt h3, .sr-h h3, .stage-txt h3, .venue h3, .watch .txt h3, .profile-txt h3,
.fest-arch .acard .title, .detail-info h1.bi .kr { font-weight:600; }
/* v8.1 — 숫자를 직접 적었던 옛 규칙 정리: 보조 글 = 14 / 읽는 글 = 17 */
.footer h4, .footer p, .footer .sns-list a, .footer .copy, .footer .copy .admin-link, .lang span, .lang a, .sound-btn, .news-item .date, .news-item .nt p, .acard .thumb, .btn, .card-actions a, .filter-btn, .monthbar .month-btn, .meta-table th, .meta-table td, table.spec th, table.spec td, .fest-schedule th, .fest-schedule td, .yri .ct, .a-list li, .a-tags .tagp, .a-quote cite, .crumb a, .crumb-light a, .detail-poster span, .tag, .eyebrow, .swatch .nm, .swatch .sub, .cform label, .contact-info h4, .contact-info p, .contact-info a, .map-links a, .fest-arch .acard .desc, .sr-h .sr-cap, .profile-txt h3 span, .nd-crumb a, .nd-meta .date, .nd-nav a, .nd-nav a span { font-size:var(--fs-6); }
.a-quote p, .program-list li, .program-list .composer, .program-list .composer em, .program-list .piece,
.watch .txt p { font-size:var(--fs-5); }
.a-head h1.bi .kr, .a-head h1.serif.bi .kr { font-size:var(--fs-5); }
.header .lang span, .header .lang a, .lang span.on, .intro .cta2 .btn, .monthbar .filter-btn.month-btn, .monthbar .month-btn.active, .detail-hero .crumb a, .detail-poster.empty span, .detail-info .tag, .detail-info .tag-past { font-size:var(--fs-6); }
.program-list li.intermission { font-size:var(--fs-5); }
@media (max-width:620px) { .monthbar .month-btn, .monthbar .filter-btn.month-btn { font-size:var(--fs-6); } }
.header .lang span.on { font-size:var(--fs-6); }

/* v8.2 (2026-10-13 다운님 "너무 떨어진 거 아냐?") — 분할의 빈 칸(≈133px) 폐지
   두 칸을 붙이고(간격 24) 글 쪽 칸 안에만 여백 40 → 보이는 간격 64 (v8 이전과 같은 감각)
   · 사진·영상 분할 = 6칸 + 6칸 (사진 가장자리 = 카드 두 장 폭, 세로선 일치)
   · 인물 사진 분할(상세 머리·공연 상세·브랜드 스토리) = 5칸 + 7칸 */
:root { --split-inset:40px; }
.split > :first-child, .mcard.m-festival > .m-fest-txt, .watch > :first-child, .contact-grid > :first-child,
.band-split.rev > :not(.bimg) { grid-column:1 / span 6; }
.split > :last-child, .mcard.m-festival > .m-fest-poster, .watch > :last-child, .contact-grid > :last-child,
.band-split.rev > .bimg { grid-column:7 / span 6; }
.story-row > :first-child, .stages .stage > :first-child, .detail-grid > :first-child,
.profile-block > :first-child, .a-head > :first-child { grid-column:1 / span 5; }
.story-row > :last-child, .stages .stage > :last-child, .detail-grid > :last-child,
.profile-block > :last-child, .a-head > :last-child { grid-column:6 / span 7; }
.stages .stage:nth-child(even) > :first-child { grid-column:8 / span 5; }
.stages .stage:nth-child(even) > :last-child { grid-column:1 / span 7; }
/* 글 쪽 안쪽 여백 */
.split > :last-child, .watch > :last-child, .contact-grid > :last-child,
.story-row > :last-child, .stages .stage:nth-child(odd) > :last-child, .detail-grid > :last-child,
.profile-block > :last-child, .a-head > :last-child { padding-left:var(--split-inset); }
.band-split.rev > :not(.bimg), .mcard.m-festival > .m-fest-txt,
.stages .stage:nth-child(even) > :last-child { padding-right:var(--split-inset); }
@media (max-width:860px) {
  .split > *, .watch > *, .contact-grid > *, .story-row > *, .stages .stage > *, .detail-grid > *,
  .profile-block > *, .a-head > *, .band-split.rev > *, .mcard.m-festival > * { padding-left:0 !important; padding-right:0 !important; }
}
/* 연주자 경력 목록 — 연도가 있는 목록에서는 연도 없는 줄도 같은 글 시작선(연도 칸 118 + 간격 12)에 맞춤 */
.a-list:has(.yri) li:not(.yri) { padding-left:130px; }
.a-list:has(.yri) li:not(.yri)::before { display:none; }
@media (max-width:620px) { .a-list:has(.yri) li:not(.yri) { padding-left:0; } }
/* 섹션 제목: 영문–국문 간격 좁힘 (실측 12~19px → 6px) */
.sec-head h2.serif.bi .en, .m-fest-txt h2.serif.bi .en, .fest-marquee.main-band h2.serif .en, .sr-h h2.bi .en { display:block; }
.sec-head h2.serif.bi .kr, .m-fest-txt h2.serif.bi .kr, .fest-marquee.main-band h2.serif.bi .kr, .sr-h h2.bi .kr { line-height:1.4; }
.sec-head h2.serif.bi, .m-fest-txt h2.serif.bi { line-height:1.15; }
.sec-head h2.serif.bi .kr, .fest-marquee.main-band h2.serif.bi .kr, .sr-h h2.bi .kr { margin-top:7px; }
.m-fest-txt h2.serif.bi .kr { margin-top:6.5px; } /* 실측 보정: 다른 섹션 제목과 영문–국문 글자 간격 일치 */

/* ═══ v8.3 배경 정리 (2026-10-13 다운님 결정 A안 — 우버 지속가능성 페이지 참고)
   구간 배경 = 전부 흰색 (기와색 공연 일정 띠 · 로즈골드 페스티벌/메인 아티스트 띠 · 크림 패널 폐지)
   카드 = 아주 옅은 회색 면 #F6F6F5 (테두리가 없으므로 흰 바탕 위 구분은 카드 면으로)
   기와색은 시작과 끝에만: 헤더 · 홈 영상 히어로 · 상세 페이지 머리 · 푸터 */
:root { --paper:#FFFFFF; --panel:#F6F6F5; --panel-line:#EBEBE9; --line:#E8E8E6; }
body { background:#fff; }
.section.alt, .m-white, .m-cream, #news.mcard, .mcard.m-green, .mcard.m-gold, .m-green, .m-gold,
.fest-marquee, .fest-marquee.main-band { background:#fff; color:var(--ink); }
.acard, .section.alt .acard, .artist-card, .fest-arch .acard, .agroup { background:var(--panel); }
#news .news-item:hover { background:var(--panel); }
/* 기와색 띠 위의 밝은 글자 → 흰 바탕용으로 되돌림 */
.m-green .sec-head h2, .m-green .sec-head h2.serif.bi .en { color:var(--navy); }
.m-green .sec-head h2.bi .kr, .m-green .sec-head h2.serif.bi .kr { color:var(--muted); }
.m-green .sec-head .more { color:var(--navy); border-color:rgba(19,60,54,.28); }
.m-green .sec-head .more:hover { background:var(--navy); border-color:var(--navy); color:var(--cream); }
.m-green .empty-note { color:var(--body-soft); }
.m-green .empty-note a { color:var(--navy); }
/* 로즈골드 띠 위 글자색(어두운 녹색 반투명) → 기본 색 */
.m-fest-txt h2.serif.bi .kr, .fest-marquee.main-band h2.serif.bi .kr { color:var(--muted); }

/* v8.4 (2026-10-13 다운님 "우버처럼 중간에 옅게 하나만") — 페이지마다 옅은 회색 구간 1곳으로 구간 구분
   홈 = 페스티벌 · 페스티벌 = 공연 일정표 · 공연 = 지난 공연 · 연주자 = 메인 아티스트 · 소개 = 걸어온 길 · 영상/공연 상세 = 보조 구간
   회색 구간 안의 카드는 흰 면 (회색 위 회색 카드 방지) */
:root { --band-gray:#F6F6F5; }
.section.alt, .mcard.m-festival, .fest-marquee.main-band { background:var(--band-gray); }
#academy.section.alt, #brand-story.section.alt { background:#fff; }
.section.alt .acard, .section.alt .artist-card, .section.alt .agroup { background:#fff; }

/* 공연 페이지 필터 영역은 흰색 (회색 구간은 '지난 공연' 한 곳만) */
.filterbar, .monthbar { background:#fff; }

/* v8.5 (2026-10-13) — 구간 위아래 여백 통일: 132 → 96 (태블릿 72 · 휴대폰 56)
   흰 구간이 이어질 때 264px이던 사이를 192px로. 대제목 아래는 다음 구간 여백과 겹치지 않게 24 */
:root { --sec-y:96px; }
@media (max-width:860px) { :root { --sec-y:72px; } }
@media (max-width:620px) { :root { --sec-y:56px; } }
.section, .mcard.m-green, .mcard.m-gold, .mcard.m-white, .mcard.m-cream, .fest-marquee.main-band,
.a-hero, .section.a-hero { padding-top:var(--sec-y); padding-bottom:var(--sec-y); }
.detail-hero { padding-bottom:var(--sec-y); }
.page-hero { padding-top:calc(var(--sec-y) + 16px); padding-bottom:24px; }
.intro { padding-top:calc(var(--sec-y) + 24px); padding-bottom:calc(var(--sec-y) * .67); }
.section.alt, section.section.alt, #academy.section.alt, #brand-story.section.alt { padding-top:var(--sec-y); padding-bottom:var(--sec-y); }

/* v8.6 (2026-10-13) — 남은 밑줄 링크 정리 (쿨디가식 '글자 + 금색 밑줄' 폐지 마무리)
   글자 링크 = 밑줄 없이 기와색, 마우스 올리면 밑줄 / 카드 안 '▶ 영상' = 카드 버튼과 같은 알약 */
.crumb-light a, .a-hero .crumb-light a, .nd-crumb a, .empty-note a, .contact-info a, .map-links a {
  border-bottom:0; padding-bottom:0; text-decoration:none; color:var(--navy);
}
.a-hero .crumb-light a { color:var(--gold-soft); }
.crumb-light a:hover, .nd-crumb a:hover, .empty-note a:hover, .contact-info a:hover, .map-links a:hover {
  text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px;
}

/* v8.7 (2026-10-13) — 자주 묻는 질문 (신뢰 지표는 같은 날 제거) (소카 참고, 상자·테두리 장식 없이) */

.faq-list { border-top:1px solid var(--line); }
.faq { border-bottom:1px solid var(--line); }
.faq summary { list-style:none; cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:24px;
  padding:22px 0; word-break:keep-all; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::after { content:""; flex:none; width:9px; height:9px; border-right:1.5px solid var(--navy); border-bottom:1.5px solid var(--navy);
  transform:rotate(45deg) translateY(-3px); transition:transform var(--t-fast, .18s) ease; }
.faq[open] summary::after { transform:rotate(-135deg) translateY(-3px); }

.faq-a { padding:0 48px 24px 0; }
.faq-a p { line-height:1.62; word-break:keep-all; }

/* v8.8 (2026-10-13) — 호버 그림자 아주 옅게 · 섹션 제목(중제) 26 → 40 (--fs-2 단계로 올림, 단계 수는 그대로) */
:root { --sh-1:0 4px 14px rgba(19,60,54,.06); --sh-2:0 4px 14px rgba(19,60,54,.05); }
.sec-head h2.serif.bi .en, .fest-marquee.main-band h2.serif .en, .m-fest-txt h2.serif.bi .en,
.m-gold h2.serif.bi, .sr-h h2.bi .en { font-size:var(--fs-2); line-height:1.15; }
/* 홈 사진 띠 아래 여백: 띠 132 + 공연 일정 96 = 228 과다 → 띠 0, 다음 구간의 96만 */
.home-marquee { padding-bottom:0; }
/* 홈 페스티벌: 섹션 제목 'Festival'(40)과 축제 이름 'Nova Lux'가 같은 크기라 구별 안 됨 → 축제 이름을 1단계(72)로 */
.m-fest-theme { font-size:var(--fs-1); line-height:1.05; }

/* ═══ v9.0 (2026-10-13) — 전 페이지 통일 (다운님 "색상·여백·그리드·텍스트 크기 전부 동일하게")
   글자색 3가지(밝은 바탕): 제목·링크 = 기와색 --navy / 본문 = --ink / 보조 = --muted
   금색 글자는 어두운 바탕에서만. 제목 크기: 페이지 제목 72 · 섹션 제목 40 · 소제목 17(600) */
:root { --body-soft:var(--ink); }
/* 본문 회녹색(#4C5B55) → 본문색 하나로 — 변수 위 직접 지정분 포함 */
.split-txt p:not(.eyebrow), .stage p:not(.eyebrow), .empty-note, .faq-a p, .lead, .a-list .ct { color:var(--ink); }
/* 진한 초록(#0C2A26) 글자 → 기와색 */
.m-fest-theme { color:var(--navy); }
/* 밝은 바탕 위 금색 글자 → 보조색 */
.eyebrow, .a-list .cy, .composer, .contact-info h4 { color:var(--muted); }
/* 상세 페이지 제목도 페이지 제목 단계(72), 굵기는 모든 대제목 400 */
.page-hero h1.serif.bi .en, .intro h1.serif.bi .en,
.detail-info h1.serif.bi .en, .a-head h1.serif.bi .en, .profile-txt h1.serif.bi .en { font-size:var(--fs-1); line-height:1.05; }
/* 소제목은 모두 17 · 600 (연주자 상세 Profile·Career 등 400이던 것 포함) */

/* 구분점 크기 제각각(15·16) → 주변 글자 크기 따름 */
.sep { font-size:inherit; }
/* 상세 머리(공연) 위 여백을 다른 머리와 같게 */
.detail-hero { padding-top:var(--sec-y); }
/* v9.0 보강 — 실측으로 남은 것 */
.sr-b .eyebrow, .program-list .composer { color:var(--muted); }
.m6 .nm, .main-band .nm { color:var(--navy); }
.crumb-light, .crumb-light .sep, .crumb .sep { font-size:var(--fs-6); }
h1.serif.bi .kr .sep, .bi .kr .sep { font-size:inherit; }
/* v9.1 — 제목 색 통일: 영문 제목은 모두 기와색, 아래 국문은 모두 보조색 (어두운 머리 제외)
   (홈 Festival · 연주자 Main Artists · 소개 Brand Story가 본문색, 페이지 대제목 국문이 기와색이던 것) */
.m-fest-txt h2.serif.bi .en, .main-band h2.serif.bi .en, .fest-marquee.main-band h2.serif .en,
#brand-story h2.serif.bi .en, .sr-h h2.bi .en, .sec-head h2.serif.bi .en { color:var(--navy); }
.page-hero h1.serif.bi .kr, .m-fest-txt h2.serif.bi .kr, .main-band h2.serif.bi .kr,
#brand-story h2.serif.bi .kr, .sr-h h2.bi .kr { color:var(--muted); }
.intro h1.serif.bi .kr, .intro h1.bi .kr { color:var(--muted); }
/* v9.2 — 섹션 제목 국문 14 → 3단계(22, 휴대폰 20): 본문(17)보다 크게. 3단계 26은 공지 상세 제목 한 곳뿐이라 22로 낮춰 단계 수 유지 */

.sec-head h2.serif.bi .kr, .m-fest-txt h2.serif.bi .kr, .main-band h2.serif.bi .kr, .fest-marquee.main-band h2.serif .kr,
#brand-story h2.serif.bi .kr, .sr-h h2.bi .kr { font-size:var(--fs-3); font-weight:400; line-height:1.4; }
.fest-marquee.main-band .wrap h2.serif.bi .kr { font-size:var(--fs-3); font-weight:400; line-height:1.4; color:var(--muted); }
.nd-title { font-size:var(--fs-3); }
/* v9.3 — 1단계(72) 제목 굵기 Light(300): 홈 소개 + 같은 단계인 페이지 제목·상세 제목·축제 이름 모두 같게 */
.intro h1.serif.bi .en, .page-hero h1.serif.bi .en, .detail-info h1.serif.bi .en,
.a-head h1.serif.bi .en, .profile-txt h1.serif.bi .en, .m-fest-theme { font-weight:300; }
/* v9.4 — 지난 공연 카드: '영상' 링크를 포스터 위(왼쪽 아래)로 → 모든 카드 2줄 · 흰 면 높이 같게
   (글 아래 버튼 한 줄 때문에 같은 줄 카드가 늘어나 빈 흰 면이 생기던 것 + 밑줄·알약 스타일 겹침 해소) */
.acard .thumb { position:relative; }
.thumb-play { position:absolute; left:12px; bottom:12px; display:inline-flex; align-items:center; gap:6px;
  padding:6px 12px; border-radius:999px; background:rgba(0,0,0,.6); color:#fff; font-size:var(--fs-6); font-weight:600;
  line-height:1.2; text-decoration:none; backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); transition:background .2s; }
.thumb-play:hover { background:var(--navy); color:#fff; }
/* v9.5 — 소개 'Three Stages' 그리드: 가운데 줄 사진이 반쪽 크기로 줄고 글이 칸을 넘던 것(예전 order 규칙 충돌)
   → 사진 분할 규칙대로 6+6, 지그재그. 두 칸 모두 같은 행에 고정 */
.stages .stage > * { grid-row:1; order:0; }
.stages .stage:nth-child(odd) > .stage-photo  { grid-column:1 / span 6; }
.stages .stage:nth-child(odd) > .stage-txt    { grid-column:7 / span 6; padding-left:var(--split-inset); padding-right:0; }
.stages .stage:nth-child(even) > .stage-photo { grid-column:7 / span 6; }
.stages .stage:nth-child(even) > .stage-txt   { grid-column:1 / span 6; padding-right:var(--split-inset); padding-left:0; }
@media (max-width:860px) {
  .stages .stage > * { grid-row:auto; grid-column:1 / -1 !important; padding-left:0 !important; padding-right:0 !important; }
  .stages .stage > .stage-photo { order:0; } .stages .stage > .stage-txt { order:1; }
}
/* 짝수 줄에 남아 있던 옛 2칸 틀(1fr 400px)까지 12칸으로 */
.stages .stage:nth-child(n) { grid-template-columns:repeat(12, minmax(0, 1fr)); column-gap:var(--gutter); }
@media (max-width:860px) { .stages .stage:nth-child(n) { grid-template-columns:1fr; } }
/* 공지 상세: 가운데 760 → 그리드 왼쪽 선에서 8칸 폭(다른 페이지처럼 왼쪽 정렬, 그리드 선 위) */
:root { --col:calc((min(100vw, var(--maxw)) - 2 * var(--pad) - 11 * var(--gutter)) / 12); }
.nd, .nd-nav { max-width:none; width:calc(8 * (min(100%, var(--maxw)) - 11 * var(--gutter)) / 12 + 7 * var(--gutter)); margin-left:0; margin-right:0; }
.nd-nav { display:grid; grid-template-columns:repeat(8, minmax(0, 1fr)); column-gap:var(--gutter); }
.nd-nav > .nd-prev { grid-column:1 / span 3; } .nd-nav > .nd-list { grid-column:4 / span 2; justify-self:center; } .nd-nav > .nd-next { grid-column:6 / span 3; }
@media (max-width:860px) { .nd, .nd-nav { width:auto; } .nd-nav { grid-template-columns:1fr 1fr; }
  .nd-nav > .nd-prev { grid-column:1; grid-row:1; } .nd-nav > .nd-next { grid-column:2; grid-row:1; } .nd-nav > .nd-list { grid-column:1 / -1; grid-row:2; } }

/* v9.6 — 문의 페이지 · 푸터 정리
   문의: 오른쪽 소제목(자간 벌린 14/700 회색)을 왼쪽 '메시지 보내기'와 같은 소제목(17·600·기와색)으로, 정보 글은 본문(17·본문색)
   푸터: 610/305/305(간격 30) → 12칸 그리드(소개 1–6 · 연락처 7–9 · SNS 10–12), 자간 벌린 제목 정리 */
.contact-info h4 { letter-spacing:-.015em; text-transform:none; }
.contact-info p:not(.map-links) { font-size:var(--fs-5); color:var(--ink); }
.contact-info p a { color:var(--navy); }
.footer .cols { display:grid; grid-template-columns:repeat(12, minmax(0, 1fr)); column-gap:var(--gutter); row-gap:40px; }
.footer .cols > :nth-child(1) { grid-column:1 / span 6; }
.footer .cols > :nth-child(2) { grid-column:7 / span 3; }
.footer .cols > :nth-child(3) { grid-column:10 / span 3; }
.footer h4 { letter-spacing:0; text-transform:none; }
@media (max-width:860px) {
  .footer .cols > :nth-child(1) { grid-column:1 / -1; }
  .footer .cols > :nth-child(2) { grid-column:1 / span 6; }
  .footer .cols > :nth-child(3) { grid-column:7 / span 6; }
}
@media (max-width:620px) { .footer .cols > * { grid-column:1 / -1 !important; } }
/* v9.7 — 남아 있던 '자간 벌린 글자' 정리 (메뉴 · 상세 경로 · 태그 · 표 머리 · 인터미션 · 소제목 · 포스터 자리표시) */
.nav a, .crumb a, .detail-poster span, .detail-info .tag, .detail-info th, table th, .program-list .intermission, .sr-b .eyebrow, .eyebrow { letter-spacing:0; }
.contact-info p:not(.map-links) a { font-size:inherit; }
/* 문의: 폼 1–6칸 · 정보 7–12칸 정확히 절반씩 — 정보 쪽 안쪽 여백(40) 없애 7번째 칸 선(=푸터 연락처 선)에서 시작 */
.contact-grid > :last-child { padding-left:0; }
/* v9.8 — 소개 브랜드 스토리
   ① 그리드: 제목 5칸 + 본문 7칸(안쪽 여백 40 → 본문이 칸 선 밖 654에서 시작) → 6+6, 본문은 7번째 칸 선(723)에서 바로 시작 (문의 페이지·푸터와 같은 선)
   ② 글 속 중제(보이는 음악… · 첫 미팅… · 작곡 헨릭 비제 · 종묘의 지붕선 · 브랜드 컬러) 17 = 본문과 같은 크기 → 3단계 22 · 600 */
.story-row > .sr-h { grid-column:1 / span 6; }
.story-row > .sr-b { grid-column:7 / span 6; padding-left:0; }
.story-row .sr-h h3, .story-row .sr-h p.eyebrow, .story-row .sr-b p.eyebrow {
  font-size:var(--fs-3); font-weight:600; line-height:1.4; color:var(--navy); }
/* 초록 악보 상자 안 중제는 밝은 색 유지 (크기만 22) */

.score-band .story-row .sr-h h3 { color:var(--cream); }

/* v9.9 — 헤더 · 푸터 키우기 (쏘카 헤더 · 우버/쏘카 푸터 참고)
   헤더: 높이 70 → 80, 로고 높이 22 → 30, 메뉴 14·700 → 17·700(자간 0), 메뉴 간격 34 → 40
   푸터: 14 일색 → 제목 17·600 금색 / 내용 17 크림(옅게) / 저작권 줄만 14 */
:root { --header-h:80px; }
.logo-img { width:392px; max-width:100%; height:auto; }
.nav { gap:40px; }
.nav a { font-size:var(--fs-4); font-weight:700; letter-spacing:0; }
@media (max-width:1100px) { .logo-img { width:320px; } .nav { gap:28px; } }
@media (max-width:920px) { :root { --header-h:68px; } .logo-img { width:300px; } }
@media (max-width:620px) { :root { --header-h:60px; } .logo-img { width:236px; } }
.footer h4 { font-size:var(--fs-4); font-weight:600; margin-bottom:16px; }
.footer p, .footer .sns-list a { font-size:var(--fs-5); line-height:1.75; color:rgba(243,236,227,.82); }
.footer .sns-list a:hover { color:var(--cream); }
.footer .sns-list .sns-ic { width:18px; height:18px; }
.footer .copy, .footer .copy .admin-link { font-size:var(--fs-6); }

/* ═══ v10.0 (2026-10-13) — 금색 포인트 규칙 (다운님 "금색이 중간에 안 보여 규칙이 없는 것 같다")
   ① 행동      : 주요 버튼 = 로즈골드 바탕 (기존 유지)
   ② 선택 상태 : 지금 선택된 필터·월 버튼 = 로즈골드 바탕 (기와색 → 금색, 버튼과 같은 뜻)
   ③ (철회) 짧은 정보는 보조 회색
   ④ 반응      : 링크·더보기·FAQ 화살표에 마우스 올리면 금색
   제목은 기와색, 본문은 본문색 그대로. 금색 글자는 밝은 바탕에선 ③의 진한 금색만 */
:root { --gold-ink:#886A48; }
/* ② */
.filter-btn.active, .monthbar .month-btn.active, .filter-btn.month-btn.active { background:var(--gold); border-color:var(--gold); color:var(--navy-deep); }
/* ③ 짧은 정보 진한 금색 — 철회(다운님 "금색이 더 AI 느낌") → 보조 회색 유지 */
.story-row .sr-h p.eyebrow, .story-row .sr-b p.eyebrow { color:var(--navy); }          /* 브랜드 스토리 중제는 제목 */
.score-band .story-row .sr-h p.eyebrow { color:var(--gold-soft); }
/* ④ */
.sec-head .more:hover { background:var(--navy); border-color:var(--gold); color:var(--cream); }   /* 기와색 바탕 + 금색 테두리 + 크림 글자 */
.faq summary::after { border-color:var(--gold); }
.faq summary:hover { color:var(--gold-ink); }

/* v10.1 — 블록 제목 위계 (다운님 "항목 제목이 작은 요소처럼 쓰여 내용이 애매하다")
   블록 이름(인사말 · 클래식 콘서트 …) = 소제목 22·600 기와색 / 한 줄 요약 = 17·600 본문색(본문 첫 줄 역할)
   작은 금색 라벨은 카드 위 위치·분류 같은 부가 정보에만(공연장 '서울 평창동' 등) */
.split-txt h3, .stage-txt h3, .split-txt h3.serif, .stage-txt h3.serif { font-size:var(--fs-3); font-weight:600; line-height:1.4; color:var(--navy); margin:0 0 12px; }
.split-txt .lead-line, .stage-txt .lead-line { font-size:var(--fs-4); font-weight:600; line-height:1.55; color:var(--ink); margin:0 0 14px; }
.split-txt p.lead-line, .stage-txt p.lead-line, .stage p.lead-line { font-size:var(--fs-4); color:var(--ink); }
.section .block-title, h3.block-title, h3.serif.block-title { font-size:var(--fs-3); font-weight:600; line-height:1.4; color:var(--navy); }
/* 공연장 카드: 위치 라벨 삭제 후 사진–제목 간격을 카드 좌우 여백(26)과 같게 */
.venue h3 { margin-top:6px; }

/* v10.2 — 카드 글자 키우기 (다운님 "연주자 카드 텍스트 둘 다 커져야") — 모든 카드 같은 규칙
   카드 제목 17 → 22·600 기와색 (연주자 이름·공연명·공연장·지난 페스티벌) / 둘째 줄·영문 이름 14 → 17 보조 회색 */
.artist-card .name, .m6 .nm, .acard .body .title, .acard .title, .venue h3, .venue h3.serif, .fest-arch .acard .title {
  font-size:var(--fs-3); font-weight:600; line-height:1.35; color:var(--navy); }

.main-band .m6 .nm { font-size:var(--fs-3); font-weight:600; color:var(--navy); }
.main-band .m6 .in2 { font-weight:400; color:var(--muted); }
/* v10.3 — 3단계 22 → 20 (다운님 "카드 크기 좀 줄여줘", 쏘카 카드 비율 참고: 제목 20 / 설명 17 ≈ 1.2배)
   카드 제목 · 소제목 · 섹션 국문 제목이 함께 20 — 단계 수는 그대로 (72 / 40 / 20 / 17 / 14) */
:root { --fs-3:20px; }
@media (max-width:620px) { :root { --fs-3:20px; } }
/* v10.4 — 카드 둘째 줄 17 → 14 (다운님 쏘카 카드 '이 정도로' — 카드 폭 대비 제목 ≈ 6.6% · 설명 ≈ 5% → 제목 20 / 설명 14) */
.artist-card .inst, .m6 .in2, .main-band .m6 .in2, .acard .body .meta, .acard .meta, .fest-arch .acard .desc, .venue p, .artist-card .sep, .m6 .sep { font-size:var(--fs-6); line-height:1.55; }

/* ═══ v10.5 (2026-10-13) — 섹션 아래 요소 3역할 통일 (다운님 "통일!")
   ① 항목 제목 = 20 · 600 · 기와색 (카드 이름 · 블록 이름 · Watch 제목 · 공지 제목 · FAQ 질문 · 프로필 카드 제목)
   ② 설명 글   = 17 · 400 · 본문색 (문장으로 된 본문)
   ③ 짧은 정보 = 14 · 400 · 회색   (날짜 · 장소 · 악기 · 요약 한 줄) */
.watch .txt h3, .watch .txt h3.serif, .news-item .nt h3, .news-item h3, .faq summary, .profile-txt h3, .profile-txt h3.serif {
  font-size:var(--fs-3); font-weight:600; line-height:1.4; color:var(--navy); letter-spacing:-.015em; }
.watch .txt p, .faq-a p { font-size:var(--fs-5); font-weight:400; color:var(--ink); }
.news-item .date, .news-item .nt p { font-size:var(--fs-6); font-weight:400; color:var(--muted); }
/* v10.5 보강 — 실측으로 남은 곳도 3역할로
   항목 제목: 연주자 상세 Profile·Career… · 소개 연혁 항목 · 공연 프로그램 작곡가 · 문의 소제목(메시지 보내기 포함)
   설명 글: 소개 블록 한 줄 요약(굵게 → 보통) / 짧은 정보: 경력 연도(굵게 → 보통) */
.a-sec.bi .en, .a-sec .en, .yr, .program-list .composer, .contact-info h4, .cform h3, .contact-grid h3 {
  font-size:var(--fs-3); font-weight:600; line-height:1.4; color:var(--navy); }
.split-txt p.lead-line, .stage-txt p.lead-line, .stage p.lead-line { font-weight:400; }
.a-list .cy, .yri .cy { font-weight:400; color:var(--muted); }
.timeline .yr { font-size:var(--fs-3); font-weight:600; letter-spacing:-.015em; line-height:1.4; }
/* v10.6 — 남아 있던 테두리 정리 (조정 4번 '카드 테두리 없음'과 같게): 공연장 카드 · 연주자 상세 정보 상자 · 페스티벌 일정표
   흰 바탕 위 공연장 카드는 테두리 대신 옅은 회색 면(다른 카드와 같은 방식) */
.venue { border:0; background:var(--panel); }

.agroup { border:0; }
.fest-schedule, table.fest-schedule { border:0; }
/* v10.7 — ① 소개 '공연 보러 가기' 글자 링크 → 섹션 '더보기'와 같은 둥근 테두리 버튼
   ② 연주자 페이지 Main Artists: 회색 구간 안 카드 면도 회색이라 묻힘 → 흰 면(회색 구간 안 카드 = 흰 면 규칙) */
.stages-cta { margin-top:40px; }
.stages-cta .more { display:inline-flex; align-items:center; gap:4px; border:1px solid rgba(19,60,54,.28); border-radius:999px;
  padding:6px 15px; font-size:var(--fs-6); font-weight:500; line-height:20px; white-space:nowrap; color:var(--navy);
  font-family:"Pretendard Variable", Pretendard, -apple-system, sans-serif; text-decoration:none;
  transition:background .18s ease, color .18s ease, border-color .18s ease; }
.stages-cta .more:hover { background:var(--navy); border-color:var(--gold); color:var(--cream); }
.fest-marquee.main-band .m6 { background:#fff; }
/* 연주자 페이지 메인 카드(.m6)도 홈 연주자 카드와 같은 모양: 모서리 10 · 사진 아래 16 · 글 좌우 20 · 아래 20 */
.fest-marquee.main-band .m6 { border-radius:10px; overflow:hidden; padding-bottom:20px; }
.fest-marquee.main-band .m6 .ph { margin-bottom:16px; border-radius:0; }
.fest-marquee.main-band .m6 .nm, .fest-marquee.main-band .m6 .in2 { padding:0 20px; }

/* v10.8 — 연주자 카드 둘째 줄: 영문 이름 빼고 악기만, 14 → 17(본문 크기, 보조 회색 유지) · 이름–악기 사이 줄 간격 좁게 */
.artist-card .inst, .m6 .in2, .main-band .m6 .in2, .fest-marquee.main-band .m6 .in2 { font-size:var(--fs-5); line-height:1.4; margin-top:2px; }
.artist-card .name, .m6 .nm, .main-band .m6 .nm { line-height:1.3; }

/* v10.9 — 전체 재점검으로 찾은 것 (연주자 상세)
   ① 협연 오케스트라 목록: 13px 테두리 알약(배지) → ' · '로 잇는 설명 글(17 본문색)
   ② Profile·Career 상자 안 문장: 14(짧은 정보 크기) → 17 설명 글. 왼쪽 항목명(출생·학력·연도)은 14 회색 그대로 */
.orch { display:block; font-size:var(--fs-5); line-height:1.7; color:var(--ink); }
.orch span { display:inline; border:0; padding:0; margin:0; background:none; border-radius:0; font-size:inherit; color:inherit; font-weight:400; }
.orch span:not(:last-child)::after { content:" · "; color:var(--muted); }
.a-list .ct, .a-list li:not(.yri), table.spec td, .agroup .spec td { font-size:var(--fs-5); line-height:1.6; color:var(--ink); }
.a-list .ct strong, .a-list li strong { font-weight:600; }

/* v11.0 (2026-10-19) — 2027 포스터 반영 · 아카데미 페이지
   페스티벌 소개: 세로 포스터 = 인물 분할 규칙 5+7, 포스터 비율 그대로(1:1.414) */
.split.poster-split > .fest-poster { aspect-ratio:1200 / 1697; height:auto; min-height:0; background-size:cover; background-position:center; }
.split.poster-split > .split-txt { padding-left:var(--split-inset); }
@media (max-width:860px) { .split.poster-split > * { grid-column:1 / -1; padding-left:0; } .split.poster-split > .fest-poster { max-width:420px; } }
/* 티켓 정보 = 짧은 정보 (14 회색 · 항목명 14 본문색) */
.ticket-info { display:grid; gap:6px; margin:24px 0 8px; }
.ticket-info > div { display:flex; gap:16px; font-size:var(--fs-6); line-height:1.6; }
.ticket-info dt { flex:0 0 72px; font-weight:600; color:var(--ink); }
.ticket-info dd { margin:0; color:var(--muted); }
/* 페스티벌 아카데미 구간 · 아카데미 페이지 */
.acad-txt { font-size:var(--fs-5); color:var(--ink); margin-bottom:12px; }
.acad-meta { font-size:var(--fs-6); color:var(--muted); margin:8px 0 20px; }
.acad-cta { display:flex; flex-wrap:wrap; gap:12px; margin-top:32px; }
/* 안내 말풍선: 아직 열리지 않은 버튼(예매·신청)을 누르면 버튼 위에 잠깐 (assets/app.js 10번) */
.notice-wrap { position:relative; display:inline-flex; }
.notice-pop { position:absolute; left:0; bottom:calc(100% + 12px); z-index:20; width:max-content; max-width:min(320px, calc(100vw - 32px));
  padding:12px 16px; border-radius:12px; background:var(--navy); color:var(--cream); font-size:var(--fs-6, 14px); line-height:1.5; font-weight:400;
  box-shadow:0 6px 20px rgba(12,42,38,.18); opacity:0; transform:translateY(4px); transition:opacity .18s, transform .18s; pointer-events:none; }
.notice-pop::after { content:""; position:absolute; left:28px; top:100%; border:7px solid transparent; border-top-color:var(--navy); }
.notice-pop.on { opacity:1; transform:none; }
.acad-detail { margin-top:32px; }
.section.alt .agroup { background:#fff; }

.acad-fees td:last-child { white-space:nowrap; }
/* 아카데미: 레슨·강의 상자 6+6 나란히(같은 높이) — 연주자 상세용 '마지막 짝수 상자 전폭' 규칙 해제 */
.acad-detail { align-items:stretch; }
.acad-detail .agroup:last-child:nth-child(even) { grid-column:auto; }
/* 사진 없는 연주자 카드: 금색 자간 글자 → 짧은 정보(14 회색), 면은 옅은 회색 */
.artist-card .photo.empty { background:#ECECEA; }
.artist-card .photo.empty span { color:var(--muted); opacity:1; letter-spacing:0; font-size:var(--fs-6); }
/* v11.1 — 다가올 공연에 페스티벌 공연 포함: 카드 버튼(더보기·예매하기)을 다른 버튼과 같은 14 · 반응(기와색 + 금색 테두리) */
.acard .card-actions a, .acard .card-actions .act-more, .acard .card-actions .act-book { font-size:var(--fs-6); line-height:20px; letter-spacing:0; }
.acard .card-actions .act-more:hover { background:var(--navy); border-color:var(--gold); color:var(--cream); }
@media (max-width:620px) { .acard .card-actions a { font-size:var(--fs-6); } }
/* v11.2 — 표 내용 = 설명 글(17 본문색): 참가비 표 · 페스티벌 공연 일정표가 14(짧은 정보 크기)라 위 상자 글보다 작아 보이던 것.
   표 머리줄은 14 · 600 그대로, 표 머리 굵기는 모든 표 600으로 통일 */
.fest-schedule td, table.fest-schedule td, .acad-fees td { font-size:var(--fs-5); line-height:1.5; color:var(--ink); }
.fest-schedule th, table.spec th, .agroup .spec th { font-weight:600; }
/* 페스티벌 묶음 카드: 기간 · 장소가 길어 두 줄이 될 수 있음 */
/* v11.3 — 페스티벌 포스터: 웹(1025 이상) 절반 6+6 · 아이패드·모바일(1024 이하) 가로 전체 */
.split.poster-split > .fest-poster { grid-column:1 / span 6; }
.split.poster-split > .split-txt { grid-column:7 / span 6; }
@media (max-width:1024px) {
  .split.poster-split { grid-template-columns:minmax(0,1fr); row-gap:32px; }
  .split.poster-split > .fest-poster, .split.poster-split > .split-txt { grid-column:1 / -1; grid-row:auto; padding-left:0; padding-right:0; }
  .split.poster-split > .fest-poster { max-width:none; width:100%; }
}

/* v11.4 — 행동 버튼 통일 (다운님 "버튼 크기가 묘하게 작다"): 높이 48 · 52 · 45 제각각에 글자 14 → 모두 글자 17 · 600 · 높이 52
   보조 버튼('전체 공연 →' 같은 .more, 카드 안 '더보기')은 14 그대로 */
.btn, .btn.btn-pill, .btn-primary, .btn-outline, .btn-dark, .m-fest-btn, .cform .btn, a.btn, button.btn {
  font-size:var(--fs-5); font-weight:600; line-height:24px; padding:14px 28px; min-height:52px; letter-spacing:-.01em;
  display:inline-flex; align-items:center; justify-content:center; gap:6px; }
.intro .cta2 .btn { font-size:var(--fs-5); padding:14px 28px; }   /* 홈 첫 화면 버튼에 따로 남아 있던 14 지정 해제 */

/* v11.5 — 아카데미 원고 반영: 전공 소개 · 렉처 한국어 제목 · 모집 안내 주석 · 바로가기 */
.acad-intro { max-width:calc(8 * (100% - 11 * var(--gutter)) / 12 + 7 * var(--gutter)); margin:0 0 32px; }
.acad-intro p { font-size:var(--fs-5); line-height:1.7; color:var(--ink); }
.acad-notes { list-style:none; margin:16px 0 0; padding:0; }
.acad-notes li { position:relative; padding-left:16px; font-size:var(--fs-6); line-height:1.6; color:var(--muted); margin-bottom:4px; }
.acad-notes li::before { content:"※"; position:absolute; left:0; }
@media (max-width:860px) { .acad-intro { max-width:none; } }
.nd-title { color:var(--navy); }   /* 공지 상세 제목도 항목 제목 = 기와색 */
.artist-card .photo.empty { border:0; }   /* 사진 없는 카드도 테두리 없음 (카드 규칙과 같게) */

/* v11.6 (2026-10-20 다운님 피드백)
   ② 표 면: 흰 구간 위 표는 옅은 회색 면(카드 규칙과 같게 — 회색 구간 위는 흰 면 그대로)
   ③ 상자 제목(Program · Lectures · Profile · Career …) 20 → 40 (국문 20) — 섹션 제목과 같은 단계, 상자 안이라 구분
   ⑤ 공연 카드 둘째 줄(날짜 · 장소) 14 → 17 회색 — 연주자 카드 둘째 줄과 같게 */
section:not(.alt) table.fest-schedule { background:var(--panel); }
.agroup .a-sec { margin-bottom:24px; }
.acard .body .meta, .acard .meta { font-size:var(--fs-5); line-height:1.4; margin-top:2px; }

/* v11.8 (다운님 정리안) — 상자 안 정보를 카드 정보와 같은 규칙으로 (28 단계 삭제 → 다시 5단계)
   상자 제목 = 카드 이름(20 · 600 · 기와색, 본문 서체) / 국문 = 카드 둘째 줄(17 · 회색)
   표 항목명(개인 레슨 · 강의 · 선생님 이름 …) = 본문 크기 17, 굵기 600 유지 */
.agroup .a-sec.bi .en, .agroup h3.serif.a-sec.bi .en { font-family:inherit; font-size:var(--fs-3); font-weight:600; line-height:1.35; color:var(--navy); letter-spacing:-.015em; }
.agroup .a-sec.bi .kr, .agroup h3.serif.a-sec.bi .kr { display:block; font-size:var(--fs-5); font-weight:400; line-height:1.4; color:var(--muted); margin-top:2px; }
.agroup .spec th, table.spec th { font-size:var(--fs-5); font-weight:600; line-height:1.6; }
/* 표 항목명 칸 폭 통일 — 상자마다 내용 시작선이 어긋나던 것 (가장 긴 항목명 '마스터클래스 청강' 기준) · 휴대폰은 항목명 위 · 내용 아래 */
.agroup .spec th { width:9.5em; white-space:nowrap; }
@media (max-width:620px) {
  .agroup .spec tr { display:block; padding:10px 0; }
  .agroup .spec th, .agroup .spec td { display:block; width:auto; padding:0; white-space:normal; }
  .agroup .spec th { margin-bottom:2px; }
}
/* 페스티벌: 티켓 · 예매 · 공연 문의를 소개 글 아래로 — 상자 표와 같은 규칙(항목명 17 · 600 / 내용 17 본문색) */
.split-txt .ticket-info { margin:32px 0 0; padding-top:24px; border-top:1px solid var(--line); gap:10px; }
.split-txt .ticket-info > div { font-size:var(--fs-5); line-height:1.6; gap:20px; }
.split-txt .ticket-info dt { flex:0 0 5.5em; font-weight:600; color:var(--navy); }
.split-txt .ticket-info dd { color:var(--ink); }
.split-txt .sched-links { margin-top:32px; display:flex; flex-wrap:wrap; gap:12px; }
/* v11.9 — 상자 제목만 28 (다운님 지시, 국문 17 회색 · 굵기 600 · 본문 서체 그대로) — 데스크톱 단계 72/40/28/20/17/14 */
.agroup .a-sec.bi .en, .agroup h3.serif.a-sec.bi .en { font-family:"Futura Pro", Eina01, "Pretendard Variable", Pretendard, sans-serif; font-size:28px; line-height:1.2; font-weight:300; letter-spacing:0; }   /* 28 · Futura Light 300 (페이지 대제목과 같은 굵기) */
