/* pamphlet.html 전용(Web판 팸플릿). site.css 는 로드하지 않는다(.reveal·nav 등 홈 전용 규칙과 충돌 방지).
   색·서체 토큰은 poster.css 의 :root 와 같다. 한 화면 = 한 페이지의 가로 스냅 트랙(.book) + 페이지 안 세로 스크롤.
   인쇄(@media print)는 페이지마다 A4 1장. 언어 메뉴(.lang-switch…)는 site.css 에서 그 블록만 복사. */
:root {
  --bg: #04091b;
  --bg-2: #0b1637;
  --navy-line: rgba(255, 255, 255, .12);
  --text: #f6f7fb;
  --muted: #a5adc6;
  --gold: #e9b64a;
  --gold-2: #f8dc8c;
  --gold-3: #b8862b;
  --hong: #e8202e;
  --lang-font: sans-serif; /* 언어별 보조 글꼴(js/i18n.js setLang) */
  --lang-body: "Noto Sans JP";
  --display: "Anton", var(--lang-font), "Noto Sans JP", sans-serif;
  --cond: "Barlow Condensed", "Anton", var(--lang-font), "Noto Sans JP", sans-serif;
  --body: var(--lang-body), "Noto Sans JP", system-ui, sans-serif;
  --gold-grad: linear-gradient(180deg, var(--gold-2) 0%, var(--gold) 45%, var(--gold-3) 100%);
  --top: 44px;
  --bot: 48px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
/* 글꼴 합자·문맥 치환 끔(사이트 전체). 2026-11-13 한 휴대폰 앱 안 브라우저에서 도장명 「日本獅道館」이 「日本士道館」으로 보인 신고 대응 —
   데이터는 獅(U+7345) 정상, 자간이 있어 합자가 꺼지는 요소만 정상이었다. 일·한 글꼴은 합자를 거의 안 쓰고 영문 제목의 fi 등만 풀린다 */
/* html 상속만으로는 버튼·입력칸(UA 글꼴)과 font 단축 속성을 쓰는 요소에서 풀리므로 모든 요소에 강제한다 */
*, *::before, *::after { font-variant-ligatures: none !important; font-feature-settings: "liga" 0, "clig" 0, "calt" 0 !important; }
html, body { background: #02050f; height: 100%; }
body {
  color: var(--text);
  font-family: var(--body);
  -webkit-font-smoothing: antialiased;
  overflow: hidden;
  line-height: 1.5;
}
html:lang(ja), html:lang(zh-CN), html:lang(zh-TW) { word-break: keep-all; overflow-wrap: anywhere; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
.print-only { display: none; }

/* ── 상단 바(44px 고정) ── */
.topbar {
  position: fixed; inset: 0 0 auto 0; height: var(--top); z-index: 40;
  display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 10px;
  background: rgba(2, 5, 15, .92); border-bottom: 1px solid var(--navy-line); backdrop-filter: blur(10px);
}
.tb-home { display: inline-flex; align-items: center; gap: 8px; font: 700 13px var(--cond); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.tb-home:hover { color: var(--text); }
.tb-home img { height: 24px; width: auto; }
.tb-right { display: flex; align-items: center; gap: 6px; }
.tb-btn {
  display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,.22); color: var(--text); font: 600 13px var(--body); white-space: nowrap;
  transition: border-color .2s, background .2s;
}
.tb-btn:hover, .tb-btn[aria-pressed="true"] { border-color: var(--gold); color: var(--gold-2); }
.tb-btn svg, .bar-text svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
/* 좁은 화면(러시아어·태국어 등 긴 문구)에서는 아이콘만: 글자는 aria-label 로 남는다 */
@media (max-width: 640px) { .tb-btn span, .bar-text span { display: none; } .tb-btn, .bar-text { padding: 0 9px; } .tb-home span { display: none; } }
@media (max-width: 420px) { .tb-btn { padding: 0 8px; } }

/* 언어 메뉴(site.css 와 동일 블록) */
.lang-switch { position: relative; }
.lang-btn {
  display: inline-flex; align-items: center; gap: 8px; height: 32px; padding: 0 12px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,.2); background: rgba(255,255,255,.04); color: var(--text);
  font: 600 13px var(--body); cursor: pointer; transition: border-color .2s, background .2s;
}
.lang-btn:hover, .lang-btn[aria-expanded="true"] { border-color: var(--text); background: rgba(255,255,255,.08); }
.lang-btn svg { width: 16px; height: 16px; }
.lang-menu {
  position: absolute; right: 0; top: calc(100% + 8px); min-width: 180px; list-style: none; padding: 6px;
  border-radius: 16px; border: 1px solid rgba(255,255,255,.14); background: rgba(8,14,36,.96); backdrop-filter: blur(14px);
  box-shadow: 0 20px 60px -20px rgba(0,0,0,.9); z-index: 60;
}
.lang-menu[hidden] { display: none; }
@media (max-height: 640px) {
  .lang-menu:not([hidden]) { display: grid; grid-template-columns: repeat(2, minmax(150px, 1fr)); column-gap: 4px; }
  .lang-menu li { padding: 8px 14px; }
}
.lang-menu li { padding: 10px 14px; border-radius: 10px; cursor: pointer; font: 500 15px var(--body); color: var(--muted); }
.lang-menu li:hover, .lang-menu li:focus { background: rgba(255,255,255,.07); color: var(--text); outline: none; }
.lang-menu li[aria-selected="true"] { color: var(--gold); font-weight: 700; }
@media (max-width: 520px) { .lang-btn span { display: none; } .lang-btn { padding: 0 10px; } }

/* ── 책: 가로 스냅 트랙 ── */
.book {
  position: fixed; top: var(--top); bottom: var(--bot); left: 0; right: 0;
  display: flex; overflow-x: auto; overflow-y: hidden;
  scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
  scrollbar-width: none; -webkit-overflow-scrolling: touch;
  background: #02050f;
}
.book::-webkit-scrollbar { display: none; }
.page {
  flex: 0 0 100%; width: 100%; height: 100%; overflow-y: auto; overflow-x: hidden;
  scroll-snap-align: start; scroll-snap-stop: always;
  background:
    radial-gradient(120% 60% at 50% -10%, #17264f 0%, transparent 60%),
    linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 55%, #030612 100%);
}
.page-in { container-type: inline-size; min-height: 100%; padding: 20px 18px 30px; display: flex; flex-direction: column; gap: 14px; }
.page-state { margin: auto; display: grid; place-items: center; gap: 12px; color: var(--muted); padding: 40px 16px; text-align: center; width: 100%; }
.spinner { width: 28px; height: 28px; border-radius: 50%; border: 3px solid rgba(255,255,255,.15); border-top-color: var(--gold); animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* 데스크톱: 어두운 바탕 가운데 A4 비율 카드 */
@media (min-width: 900px) {
  .book { background: #000; }
  .page { display: grid; place-items: start center; padding: 0; background: #000; overflow-y: auto; }
  /* A4 비율을 고정하지 않는다 — 화면에서는 폭 1180px 까지 채워 글자·이미지를 크게(인쇄는 @media print 가 A4 로 맞춘다) */
  .page-in {
    width: min(100%, 1180px); max-width: 1180px; min-height: calc(100dvh - 92px);
    padding: 32px 48px 40px; border-radius: 6px; box-shadow: 0 30px 80px rgba(0,0,0,.7), 0 0 0 1px var(--navy-line);
    background:
      radial-gradient(120% 60% at 50% -10%, #17264f 0%, transparent 60%),
      linear-gradient(180deg, var(--bg-2) 0%, var(--bg) 55%, #030612 100%);
  }
  @supports not (height: 100dvh) { .page-in { min-height: calc(100vh - 92px); } }
}

/* 일람 모드: 세로로 전부 */
.book--linear { display: block; overflow: visible; height: auto; position: static; scroll-snap-type: none; padding-top: var(--top); }
/* scroll-margin-top: 목차·해시로 이동할 때(scrollIntoView) 고정 상단 바(44px) 밑으로 페이지 머리가 숨지 않게 */
.book--linear .page { height: auto; min-height: auto; overflow: visible; scroll-margin-top: var(--top); }
.book--linear .plate { scroll-margin-top: calc(var(--top) + 8px); }
.book--linear .page + .page { border-top: 2px solid var(--gold-3); }
body.linear { overflow: auto; }
body.linear .bar, body.linear .pager { display: none; }
@media (min-width: 900px) { .book--linear .page { padding: 24px 0; } .book--linear .page-in { aspect-ratio: auto; } }

/* ── 하단 바(48px 고정) ── */
.bar {
  position: fixed; inset: auto 0 0 0; height: var(--bot); z-index: 40;
  display: flex; align-items: stretch; gap: 4px; padding: 0 6px;
  background: rgba(2, 5, 15, .94); border-top: 1px solid var(--navy-line); backdrop-filter: blur(10px);
}
.bar-btn { display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; color: var(--text); min-width: 44px; }
.bar-btn:hover { background: rgba(255,255,255,.07); }
.bar-btn:disabled { opacity: .3; cursor: default; }
.bar-btn svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.bar-text { font: 600 13px var(--body); padding: 0 10px; height: 28px; align-self: center; border: 1px solid rgba(255,255,255,.22); border-radius: 999px; gap: 6px; white-space: nowrap; }
.bar-mid { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 4px; min-width: 0; }
.bar-row { display: flex; align-items: center; justify-content: center; gap: 8px; }
.counter { font: 700 13px var(--cond); letter-spacing: .08em; color: var(--gold-2); min-width: 54px; text-align: center; font-variant-numeric: tabular-nums; }
.progress { display: flex; gap: 2px; height: 4px; }
.progress button { flex: 1; min-width: 4px; height: 4px; border-radius: 2px; background: rgba(255,255,255,.15); padding: 0; transition: background .2s; }
.progress button.on { background: var(--gold); }
.progress button:hover { background: rgba(255,255,255,.4); }
.pager { display: none; }
@media (min-width: 900px) {
  .pager {
    display: inline-flex; align-items: center; justify-content: center; position: fixed; top: 50%; z-index: 30; transform: translateY(-50%);
    width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255,255,255,.25); background: rgba(2,5,15,.7); color: var(--text);
  }
  .pager:hover { border-color: var(--gold); color: var(--gold-2); }
  .pager:disabled { opacity: .25; cursor: default; }
  .pager svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
  .pager-prev { left: 16px; } .pager-next { right: 16px; }
}

/* ── 목차 ── */
.toc { width: min(92vw, 420px); max-height: 80vh; border: 1px solid rgba(255,255,255,.16); border-radius: 18px; padding: 16px; background: #0b1230; color: var(--text); box-shadow: 0 30px 80px rgba(0,0,0,.8); }
.toc::backdrop { background: rgba(0,0,0,.6); backdrop-filter: blur(4px); }
.toc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.toc-head h2 { font: 800 18px var(--cond); letter-spacing: .08em; color: var(--gold-2); }
.toc ol { list-style: none; display: grid; gap: 2px; }
.toc li button { width: 100%; text-align: left; display: flex; gap: 12px; align-items: baseline; padding: 9px 10px; border-radius: 10px; font: 500 15px var(--body); }
.toc li button:hover, .toc li button:focus-visible { background: rgba(255,255,255,.08); outline: none; }
.toc li button.on { color: var(--gold-2); font-weight: 700; }
.toc li button i { font: 700 12px var(--cond); color: var(--muted); min-width: 1.6em; font-style: normal; }
.toast { position: fixed; left: 50%; bottom: calc(var(--bot) + 14px); transform: translateX(-50%); z-index: 50; padding: 10px 18px; border-radius: 999px; background: rgba(233,182,74,.95); color: #1a1200; font: 700 14px var(--body); box-shadow: 0 10px 30px rgba(0,0,0,.5); }

/* ── 페이지 공통 타이포(cqw: 카드 폭 기준) ── */
.pb-tag { font: 700 clamp(12.5px, 2.2cqw, 18px) var(--cond); letter-spacing: .28em; text-transform: uppercase; color: var(--gold-2); }
.pb-h { font: 800 clamp(27.5px, 5.6cqw, 56px)/1.08 var(--cond); letter-spacing: .01em; color: #fff; text-wrap: balance; }
.pb-h em { font-style: normal; color: var(--gold-2); display: inline-block; }
html:lang(ja) .pb-h, html:lang(ko) .pb-h, html:lang(zh-CN) .pb-h, html:lang(zh-TW) .pb-h, html:lang(th) .pb-h { font-family: var(--body); font-weight: 900; }
.pb-head { display: grid; gap: 4px; padding-bottom: 8px; border-bottom: 1px solid rgba(233,182,74,.4); }
.pb-sub { font: 800 clamp(17.5px, 3cqw, 28px) var(--cond); letter-spacing: .06em; color: var(--gold-2); margin-top: 6px; }
html:lang(ja) .pb-sub, html:lang(ko) .pb-sub, html:lang(zh-CN) .pb-sub, html:lang(zh-TW) .pb-sub { font-family: var(--body); font-weight: 900; }
.pb-p { font-size: clamp(15px, 2.5cqw, 21px); color: var(--text); }
.pb-note { font-size: clamp(13px, 2.1cqw, 17.5px); color: var(--muted); line-height: 1.5; }
.pb-foot { margin-top: auto; padding-top: 10px; border-top: 1px solid rgba(255,255,255,.1); font-size: clamp(12.5px, 2cqw, 17px); color: var(--muted); display: flex; justify-content: space-between; gap: 10px; }
.pb-foot b { color: var(--gold-2); font-family: var(--cond); letter-spacing: .06em; }
.btn {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: 999px; border: 1px solid rgba(255,255,255,.3);
  font: 800 clamp(15px, 2.6cqw, 21px) var(--cond); letter-spacing: .06em; text-transform: uppercase; color: var(--text);
}
.btn:hover { border-color: var(--gold); color: var(--gold-2); }
.btn-gold { border-color: rgba(233,182,74,.7); color: var(--gold-2); }
.btn-row { display: flex; flex-wrap: wrap; gap: 8px; }

/* 안내 카드(content.js blocks → .pb-card) */
.pb-cards { display: grid; gap: 10px; }
.pb-cards.cols-2 { grid-template-columns: 1fr 1fr; }
@container (max-width: 520px) { .pb-cards.cols-2 { grid-template-columns: 1fr; } }
.pb-card { border: 1px solid rgba(255,255,255,.14); border-radius: 12px; padding: 10px 12px; background: rgba(255,255,255,.05); break-inside: avoid; }
.pb-card h3 { font: 800 clamp(16px, 2.8cqw, 24px) var(--cond); letter-spacing: .04em; color: var(--gold-2); margin-bottom: 6px; }
html:lang(ja) .pb-card h3, html:lang(ko) .pb-card h3, html:lang(zh-CN) .pb-card h3, html:lang(zh-TW) .pb-card h3 { font-family: var(--body); font-weight: 900; }
.pb-card ul { list-style: none; display: grid; gap: 4px; }
.pb-card li { font-size: clamp(14.5px, 2.4cqw, 19.5px); line-height: 1.5; padding-left: 12px; position: relative; overflow-wrap: anywhere; }
.pb-card li::before { content: ""; position: absolute; left: 0; top: .68em; width: 4px; height: 4px; border-radius: 50%; background: rgba(255,255,255,.45); }
.pb-card li.warn { color: var(--muted); font-size: clamp(13px, 2.2cqw, 18px); padding-left: 0; }
.pb-card li.warn::before { display: none; }
.pb-card a, .pb-link { color: var(--gold-2); text-decoration: underline; text-underline-offset: 3px; }

/* ── 표지 ── */
.page--cover .page-in { padding: 0; gap: 0; }
/* PC: 표지는 화면 높이에 맞춰 한 화면에(폭 1180px 기준으로 커지면 세로가 길어져 하단 바 뒤로 이어져 보였음, 2026-10-01) */
@media (min-width: 900px) { .page--cover .page-in { height: calc(100dvh - 92px); max-height: calc(100dvh - 92px); } }
.cover { position: relative; flex: 1; display: flex; flex-direction: column; min-height: 100%; }
.cover--img img { flex: 1; width: 100%; height: 100%; min-height: 0; object-fit: contain; object-position: center top; display: block; background: #02050f; }
.pb-badge { position: absolute; top: 12px; right: 12px; z-index: 2; padding: 4px 10px; border-radius: 999px; border: 1px solid rgba(233,182,74,.7); background: rgba(2,5,15,.7); color: var(--gold-2); font: 800 11px var(--cond); letter-spacing: .18em; text-transform: uppercase; }
.cover-band { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 14px; padding: 10px 16px; background: rgba(2,5,15,.85); border-top: 1px solid rgba(233,182,74,.5); }
.cover-band-l { font: 700 11px var(--cond); letter-spacing: .2em; text-transform: uppercase; color: var(--gold); }
.cover-band b { font: 800 clamp(16px, 3cqw, 25px) var(--cond); color: #fff; }
.cover--type { align-items: center; text-align: center; padding: 40px 24px 0; }
.cover--type .cover-band { width: calc(100% + 48px); margin: 0 -24px; }
.cover-type { display: grid; gap: 10px; justify-items: center; margin: auto 0; }
.cover-eyebrow { font: 700 clamp(14px, 2.4cqw, 22.5px) var(--cond); letter-spacing: .32em; text-transform: uppercase; color: var(--gold-2); }
.cover-type h1 { display: grid; gap: 2px; font: 400 clamp(45px, 11cqw, 117.5px)/1 var(--display); text-transform: uppercase; color: #fff; text-shadow: 0 4px 24px rgba(0,0,0,.5); }
.cover-type h1 span:last-child:is(.year) { background: var(--gold-grad); -webkit-background-clip: text; background-clip: text; color: transparent; font-style: italic; }
html:lang(ja) .cover-type h1, html:lang(ko) .cover-type h1, html:lang(zh-CN) .cover-type h1, html:lang(zh-TW) .cover-type h1, html:lang(th) .cover-type h1 { font-family: var(--body); font-weight: 900; font-size: clamp(30px, 7cqw, 78.5px); line-height: 1.15; }
.cover-date { font: 800 clamp(17.5px, 3.4cqw, 33.5px) var(--cond); letter-spacing: .06em; color: var(--gold-2); }
.cover-venue { font-weight: 700; font-size: clamp(15px, 2.6cqw, 25px); }

/* ── 대회 개요 ── */
.facts { display: grid; gap: 8px; }
.fact { display: grid; grid-template-columns: auto 1fr; gap: 10px; align-items: start; padding: 8px 10px; border-radius: 10px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); }
.fact-ico { width: 22px; height: 22px; color: var(--gold); display: grid; place-items: center; margin-top: 2px; }
.fact-ico svg, .fact-ico img { width: 22px; height: 22px; }
.fact span { display: block; font: 700 clamp(12px, 2cqw, 15.5px) var(--cond); letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.fact b { display: block; font-size: clamp(16px, 2.9cqw, 24px); line-height: 1.3; color: #fff; }
.fact small { display: block; margin-top: 2px; font-size: clamp(13px, 2.2cqw, 17.5px); font-weight: 500; color: var(--muted); }
.manifesto { font-size: clamp(15px, 2.6cqw, 21.5px); line-height: 1.7; color: var(--text); padding: 8px 12px; border-left: 3px solid var(--gold); }
.manifesto em { font-style: normal; color: var(--gold-2); font-weight: 700; }
.flow { display: grid; gap: 6px; }
.flow li { display: grid; grid-template-columns: 10px 1fr; gap: 10px; align-items: baseline; font-size: clamp(15px, 2.5cqw, 21px); font-weight: 700; }
.flow li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--gold); margin-top: 2px; }
.flow li small { color: var(--muted); font-weight: 500; }

/* ── 柱 ── */
.pillars { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@container (max-width: 480px) { .pillars { grid-template-columns: 1fr; } }
.pillar { position: relative; padding: 12px 12px 12px; border-radius: 12px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); border-top: 3px solid var(--c, var(--gold)); break-inside: avoid; }
.pillar .num { position: absolute; right: 10px; top: 6px; font: 800 clamp(22.5px, 4cqw, 39px) var(--cond); color: rgba(255,255,255,.12); }
.pillar svg { width: 28px; height: 28px; color: var(--c, var(--gold)); margin-bottom: 6px; }
.pillar h3 { font-size: clamp(16px, 2.9cqw, 24px); font-weight: 900; line-height: 1.25; margin-bottom: 4px; }
.pillar p { font-size: clamp(14.5px, 2.4cqw, 19.5px); color: var(--muted); }
.pillar .hash { display: inline-block; margin-top: 6px; font: 700 12px var(--cond); color: var(--gold-2); letter-spacing: .04em; }

/* ── 부문: 형식 dl, 체급표(poster.css .cat-table 복사), 규정 ── */
.div-format { display: grid; gap: 4px; font-size: clamp(14px, 2.3cqw, 19px); }
.div-format > div { display: grid; grid-template-columns: minmax(5em, auto) 1fr; gap: 10px; }
.div-format dt { color: var(--gold-2); font-weight: 800; }
.div-item { display: inline-block; } .div-sep { margin: 0 4px; color: rgba(233,182,74,.6); }
.div-rules { list-style: none; display: grid; gap: 3px; font-size: clamp(14px, 2.3cqw, 19px); color: var(--text); }
.div-rules li { padding-left: 12px; position: relative; }
.div-rules li::before { content: ""; position: absolute; left: 0; top: .66em; width: 4px; height: 4px; border-radius: 50%; background: var(--gold); }
.cat-table { width: 100%; border-collapse: collapse; font-size: clamp(12px, 2cqw, 18px); line-height: 1.35; }
.cat-table th { text-align: left; font-weight: 700; color: var(--gold-2); font-size: .9em; padding: 0 6px 4px 0; border-bottom: 1px solid rgba(233,182,74,.45); white-space: nowrap; }
.cat-table td { padding: 5px 6px 5px 0; border-bottom: 1px solid rgba(255,255,255,.08); vertical-align: top; }
.cat-table tr { break-inside: avoid; }
.cat-table tr:last-child td { border-bottom: 0; }
.cat-table small { font-size: .82em; color: var(--muted); font-weight: 500; }
.c-name { font-weight: 900; color: #fff; white-space: nowrap; }
.c-name small { display: block; white-space: normal; }
.c-lv { font-weight: 800; color: #fff; line-height: 1.4; }
.c-lv small { color: var(--muted); font-weight: 500; font-size: .82em; margin-left: 3px; }
.c-lv .lv { display: block; }
.c-time { white-space: nowrap; }
.c-wt { font-family: var(--cond); font-weight: 600; font-size: 1.08em; letter-spacing: .01em; color: #fff; }
.c-wt .div-row { display: flex; flex-wrap: wrap; gap: 3px; align-items: baseline; }
.c-wt b { display: inline-block; min-width: 2em; margin-right: 2px; padding: 0 4px; border-radius: 4px; background: rgba(233,182,74,.18); color: var(--gold-2); font-family: var(--body); font-size: .8em; font-weight: 700; text-align: center; }
.div-weights { list-style: none; display: inline-flex; flex-wrap: wrap; gap: 0 2px; }
.div-weights li { white-space: nowrap; } .div-weights li:not(:last-child)::after { content: " /"; color: rgba(233,182,74,.6); }
.div-weights small { font-size: .7em; color: var(--muted); margin-left: 1px; }
.c-desc, .div-desc { display: block; font-family: var(--body); font-size: .85em; font-weight: 600; color: var(--muted); letter-spacing: 0; }
@container (max-width: 560px) {
  .cat-table thead { display: none; }
  .cat-table, .cat-table tbody, .cat-table tr { display: block; }
  .cat-table tr { padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,.1); }
  .cat-table td { display: block; padding: 2px 0; border: 0; white-space: normal; }
  .cat-table td::before { content: attr(data-l); display: inline-block; min-width: 5em; margin-right: 4px; color: var(--muted); font-weight: 700; font-size: .85em; }
  .cat-table td.c-name { font-size: 1.1em; }
  .cat-table td.c-name::before { display: none; }
  .c-name small { display: inline; margin-left: 4px; }
  .c-lv .lv { display: inline; } .c-lv .lv:not(:last-child)::after { content: "／"; margin: 0 4px; color: rgba(233,182,74,.6); }
  .c-wt { font-size: 1em; }
  .c-wt .div-row { display: inline-flex; }
}
.plist { list-style: none; display: grid; gap: 6px; }
.plist li { display: grid; gap: 2px; padding: 7px 10px; border-radius: 10px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); font-size: clamp(14px, 2.3cqw, 19px); break-inside: avoid; }
.plist li b { font-size: 1.05em; color: var(--gold-2); } .plist .born { color: var(--muted); font-size: .9em; margin-left: 6px; }
.plist dl { display: grid; gap: 1px; } .plist dl div { display: grid; grid-template-columns: minmax(6em, auto) 1fr; gap: 8px; }
.plist dt { font-weight: 800; color: #fff; } .plist dd { color: var(--muted); }
.score { width: 100%; border-collapse: collapse; font-size: clamp(13px, 2.2cqw, 18px); }
.score th { text-align: left; color: var(--gold-2); font-weight: 800; padding: 4px 8px 4px 0; vertical-align: top; width: 28%; }
.score td { padding: 4px 8px 4px 0; border-bottom: 1px solid rgba(255,255,255,.08); }
.score td.pt { text-align: right; white-space: nowrap; font-family: var(--cond); font-weight: 700; color: #fff; }
.score tr { break-inside: avoid; }

/* ── 참가비(site.css .fee-* 와 같은 구성) ── */
.fee-table { border: 1px solid rgba(255,255,255,.14); border-radius: 12px; background: rgba(255,255,255,.04); padding: 2px 12px 8px; }
.fee-table.is-early { border-color: rgba(233,182,74,.45); }
.fee-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,.08); break-inside: avoid; }
.fee-row:last-of-type { border-bottom: 0; }
.fee-row b { font-size: clamp(15px, 2.6cqw, 21px); }
.fee-row small { display: block; margin-top: 2px; color: var(--muted); font-size: clamp(12.5px, 2.1cqw, 17px); line-height: 1.4; }
.fee-amt { font: 800 clamp(21px, 3.8cqw, 33.5px)/1 var(--cond); white-space: nowrap; color: var(--gold-2); text-align: right; flex-shrink: 0; }
.fee-amt.tba { font: 700 12px var(--body); color: var(--muted); }
.fee-late { display: block; margin-top: 4px; font: 600 clamp(12.5px, 2.1cqw, 17px)/1.4 var(--body); color: var(--muted); }
.fee-late s { margin-right: 6px; text-decoration-thickness: 1.5px; }
.fee-off { color: #ff6b74; font-weight: 800; }
.fee-badge { display: inline-block; vertical-align: 2px; margin-right: 6px; padding: 2px 5px; border-radius: 4px; font: 700 .55em/1 var(--body); font-style: normal; color: #fff; background: var(--hong); }
.fee-early { display: flex; align-items: center; gap: 6px 10px; flex-wrap: wrap; margin: 8px 0 4px; padding: 7px 10px; border-radius: 10px; background: linear-gradient(90deg, rgba(232,32,46,.18), rgba(233,182,74,.12)); border: 1px solid rgba(233,182,74,.5); }
.fee-early-tag { font: 800 clamp(11px, 2cqw, 15.5px)/1 var(--cond); letter-spacing: .16em; padding: 5px 8px; border-radius: 6px; background: var(--hong); color: #fff; }
.fee-early-main { display: flex; flex-direction: column; gap: 1px; flex: 1 1 140px; min-width: 0; }
.fee-early-main b { font-size: clamp(15px, 2.8cqw, 24px); color: #fff; line-height: 1.1; }
.fee-early-main span { font-size: clamp(12px, 2cqw, 17px); color: var(--muted); font-weight: 700; }
.fee-early-left { font: 800 clamp(14px, 2.4cqw, 19.5px)/1 var(--body); color: var(--gold-2); padding: 6px 10px; border-radius: 999px; background: rgba(233,182,74,.16); white-space: nowrap; }
.fee-early-save { font: 800 clamp(12.5px, 2.2cqw, 18px)/1.3 var(--body); color: #ff6b74; }
.fee-note { margin-top: 8px; color: var(--muted); font-size: clamp(12.5px, 2.1cqw, 17px); line-height: 1.5; }
.fee-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 12px; align-items: start; }
@container (max-width: 600px) { .fee-grid { grid-template-columns: 1fr; } }
.deadline { font-weight: 700; font-size: clamp(14.5px, 2.4cqw, 19.5px); color: var(--gold-2); }

/* ── 문의 ── */
.sns { display: flex; flex-wrap: wrap; gap: 8px; }
.sns a { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(255,255,255,.2); font: 700 13px var(--cond); letter-spacing: .04em; }
.sns svg { width: 16px; height: 16px; color: var(--c); }
.venue { display: grid; gap: 4px; padding: 10px 12px; border-radius: 12px; background: rgba(233,182,74,.08); border: 1px solid rgba(233,182,74,.35); }
.venue b { font-size: clamp(17.5px, 3cqw, 26.5px); font-weight: 900; }
.venue span { color: var(--muted); font-size: clamp(14px, 2.3cqw, 19px); }

/* ── 협찬 플레이트: 6열 그리드, cover·full=6칸 half=3 third=2 sixth·web=1 ── */
.plates { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; }
.plate {
  position: relative; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 4px; text-align: center;
  min-height: 72px; padding: 10px 8px; border-radius: 10px; overflow: hidden; break-inside: avoid; cursor: pointer;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.16);
}
.plate-cover, .plate-court, .plate-full { grid-column: span 6; min-height: 120px; border: 1.5px solid transparent; background: linear-gradient(#0b1437, #0b1437) padding-box, var(--gold-grad) border-box; }
.plate-half { grid-column: span 3; min-height: 96px; }
.plate-third { grid-column: span 2; }
.plate-sixth, .plate-web, .plate-other { grid-column: span 1; padding: 8px 4px; }
@container (max-width: 520px) { .plate-third { grid-column: span 3; } .plate-sixth, .plate-web, .plate-other { grid-column: span 2; } }
.plate .chip { font: 700 10px var(--cond); letter-spacing: .16em; text-transform: uppercase; color: var(--gold); position: relative; z-index: 1; }
.plate .co { font: 800 clamp(16px, 3cqw, 31px)/1.2 var(--cond); color: #fff; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; position: relative; z-index: 1; overflow-wrap: anywhere; }
html:lang(ja) .plate .co, html:lang(ko) .plate .co, html:lang(zh-CN) .plate .co, html:lang(zh-TW) .plate .co { font-family: var(--body); font-weight: 900; }
.plate-cover .co, .plate-court .co, .plate-full .co { font-size: clamp(22.5px, 4.6cqw, 45px); }
.plate-sixth .co, .plate-web .co, .plate-other .co { font-size: clamp(12.5px, 2.2cqw, 19.5px); }
.plate .wb { position: relative; z-index: 1; font: 700 10px var(--cond); letter-spacing: .1em; padding: 2px 7px; border-radius: 999px; border: 1px solid rgba(255,255,255,.3); color: var(--muted); }
.plate .wm { position: absolute; right: -8%; bottom: -30%; width: 44%; opacity: .12; pointer-events: none; }
.plate .wm svg { width: 100%; height: auto; }
.plate .bg { position: absolute; inset: 0; z-index: 0; opacity: .35; }
.plate .bg img { width: 100%; height: 100%; object-fit: cover; }
.plate.hl { animation: hl 1.2s ease-out; }
@keyframes hl { 0%, 60% { box-shadow: 0 0 0 3px var(--gold), 0 0 30px rgba(233,182,74,.6); } 100% { box-shadow: none; } }
.plates-cover { display: grid; gap: 12px; flex: 1; align-content: center; }
.plates-cover .plate { min-height: 140px; }


/* ── 전면 광고 페이지(협찬사 원고): A4 비율 칸에 원고 한 장을 contain. PC 의 A4 카드처럼 높이가 정해진 곳에서는 칸이 남은 높이에 맞춰 줄고 그림은 가운데 ── */
.page--ad .page-in { gap: 10px; }
.ad-full { display: block; flex: 0 1 auto; min-height: 0; width: 100%; margin: 0 auto; aspect-ratio: 1 / 1.414; border-radius: 10px; overflow: hidden; border: 1px solid rgba(255,255,255,.14); background: #0b1437; transition: border-color .2s; }
.ad-full:hover, .ad-full:focus-visible { border-color: var(--gold); outline: none; }
.ad-full img { width: 100%; height: 100%; object-fit: contain; display: block; }
/* PC: 화면 높이에 맞추면 글자가 안 읽히므로 폭 960px 로 크게 두고 페이지 안에서 세로 스크롤(클릭하면 원본) */
@media (min-width: 900px) { .ad-full { width: min(100%, 960px); } }
/* 스마트폰판 원고(.has-m): <picture> 가 폭 640px 이하(ad-slider.js MOBILE_MQ 와 같은 뷰포트 기준)에서 縦長 원고를 고르므로 그 폭에서는 A4 비율을 풀고
   높이를 원고 그대로 두어 페이지 안에서 세로 스크롤. 인쇄는 A4 폭이라 <source> 가 선택되지 않고 @media print 의 238mm 칸에 인쇄판이 들어간다 */
@media (max-width: 640px) { .ad-full.has-m { flex: none; aspect-ratio: auto; } .ad-full.has-m img { height: auto; } }
/* 내지 분할 광고 페이지(1/2·1/3·1/6, pamphlet.js PLAN_SPLIT): A4 비율 칸을 --cols×--rows 로 나누고 칸마다 원고 한 장을 contain. 빈 칸은 점선으로 자리만 */
.ad-grid { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); grid-template-rows: repeat(var(--rows, 3), minmax(0, 1fr)); gap: 8px; flex: 0 1 auto; min-height: 0; width: 100%; margin: 0 auto; box-sizing: border-box; padding: 8px; aspect-ratio: 1 / 1.414; border-radius: 10px; border: 1px solid rgba(255,255,255,.14); background: #0b1437; }
@media (min-width: 900px) { .ad-grid { width: min(100%, 960px); } }
.ad-slot { display: block; min-width: 0; min-height: 0; border-radius: 6px; overflow: hidden; border: 1px solid rgba(255,255,255,.14); background: #0b1437; transition: border-color .2s; }
.ad-slot:hover, .ad-slot:focus-visible { border-color: var(--gold); outline: none; }
.ad-slot img { width: 100%; height: 100%; object-fit: contain; display: block; }
.ad-slot--empty { border-style: dashed; border-color: rgba(255,255,255,.1); }

/* ── 모집 ── */
.plan-table { width: 100%; border-collapse: collapse; font-size: clamp(15px, 2.6cqw, 21px); }
.plan-table td { padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.1); }
.plan-table td:last-child { text-align: right; font: 800 1.15em var(--cond); color: var(--gold-2); white-space: nowrap; }

/* ── 뒷표지 ── */
.page--back .page-in { justify-content: center; align-items: center; text-align: center; gap: 16px; }
.back-title { font: 400 clamp(40px, 9cqw, 101px)/1.02 var(--display); text-transform: uppercase; color: #fff; text-shadow: 0 4px 24px rgba(0,0,0,.5); }
html:lang(ja) .back-title, html:lang(ko) .back-title, html:lang(zh-CN) .back-title, html:lang(zh-TW) .back-title, html:lang(th) .back-title { font-family: var(--body); font-weight: 900; font-size: clamp(32.5px, 7cqw, 78.5px); }
.back-sp { display: grid; gap: 8px; justify-items: center; }
.back-sp .cover-band-l { font-size: 11px; }
.back-sp .lg { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; font: 800 clamp(22.5px, 4.4cqw, 42px) var(--cond); color: #fff; }
.back-sp .md { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 14px; font: 700 clamp(16px, 3cqw, 26.5px) var(--cond); color: var(--text); }
.back-org { font-weight: 700; font-size: clamp(15px, 2.6cqw, 22.5px); } .back-org small { display: block; color: var(--muted); font-weight: 500; }
.back-hash { font: 800 clamp(17.5px, 3.4cqw, 31px) var(--cond); letter-spacing: .06em; color: var(--gold-2); }
/* padding % 는 상자가 아니라 바깥 칸 너비 기준이라 QR 이 상자 절반으로 줄었다(utm 으로 칸이 33→45 로 촘촘해져 판독성 위해 고정값) */
.qr-box { width: clamp(137.5px, 28cqw, 252px); aspect-ratio: 1; padding: 14px; border-radius: 12px; background: #fff; box-shadow: 0 0 0 4px rgba(233,182,74,.9), 0 0 30px rgba(233,182,74,.35); }
.qr-svg { width: 100%; height: 100%; display: block; }
.qr-url { font: 800 clamp(22.5px, 4.6cqw, 45px) var(--cond); color: var(--gold-2); letter-spacing: .02em; }
.back-copy { font-size: 11px; color: var(--muted); }

@media (prefers-reduced-motion: reduce) { .plate.hl { animation: none; box-shadow: 0 0 0 3px var(--gold); } .spinner { animation: none; } }

/* ── 인쇄: 페이지마다 A4 1장. 넘치는 페이지(체급표 등)는 2장으로 이어지고 행·카드는 잘리지 않는다 ── */
@media print {
  @page { size: A4 portrait; margin: 10mm; }
  html, body { background: #fff; height: auto; overflow: visible; }
  body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .book, .book--linear { position: static; display: block; overflow: visible; height: auto; padding: 0; background: #fff; }
  .page { display: block; height: auto; min-height: 277mm; overflow: visible; break-after: page; page-break-after: always; border: 0 !important; padding: 0 !important; border-radius: 0; }
  .page:last-child { break-after: auto; page-break-after: auto; }
  .page-in { width: auto; aspect-ratio: auto; max-width: none; min-height: 277mm; box-shadow: none; border-radius: 0; padding: 8mm 8mm; }
  tr, .pb-card, .plate, li, .pillar, .fee-row, .fact { break-inside: avoid; page-break-inside: avoid; }
  .bar, .topbar, dialog, .pager, .toast, .no-print { display: none !important; }
  .cover--img img { max-height: 277mm; object-fit: contain; }
  /* 전면 광고: 원고가 한 장(A4)에 들어가게 칸 높이를 고정(머리글 아래 남는 높이) */
  .page--ad { break-inside: avoid; page-break-inside: avoid; }
  .ad-full { flex: none; aspect-ratio: auto; height: 238mm; border: 0; border-radius: 0; background: none; }
  .ad-grid { flex: none; aspect-ratio: auto; height: 238mm; padding: 0; border: 0; border-radius: 0; background: none; }
  .ad-slot { border: 0; border-radius: 0; }
  .ad-slot--empty { border: 0; }
  .print-only { display: block; }
  a[href] { color: inherit; }
}
