
/* gofesta.css — 자동 생성(scripts/build-tokens.mjs). 원본: tokens/gofesta.tokens.json. 손으로 고치지 않는다. */
/* 3층: --p-* primitive(값) · --* semantic(역할) · 스포크 호환 alias. 테마는 [data-theme="..."]로 semantic만 재지정. */
:root{
  --p-color-white:#ffffff;
  --p-color-paper-warm:#fbf9f6;
  --p-color-sand-100:#f3f0ea;
  --p-color-sand-200:#e9e4db;
  --p-color-sand-300:#e6e2da;
  --p-color-sand-400:#d9d3c8;
  --p-color-sand-600:#8e867a;
  --p-color-ink-600:#6b655d;
  --p-color-ink-700:#57514a;
  --p-color-ink-900:#2b2723;
  --p-color-ink-950:#12100f;
  --p-color-rose-50:#f6ece9;
  --p-color-rose-100:#f0dcd6;
  --p-color-rose-500:#ff385c;
  --p-color-rose-600:#d91447;
  --p-color-rose-700:#b80f3b;
  --p-color-red-700:#b3261e;
  --p-color-green-500:#30a46c;
  --p-color-green-700:#2e6b4a;
  --p-color-tone-now-ink:#a8321f;
  --p-color-tone-now-mid:#f09a86;
  --p-color-tone-now-tint:#fde8e2;
  --p-color-tone-soon-ink:#7d5209;
  --p-color-tone-soon-mid:#ddb366;
  --p-color-tone-soon-tint:#f8edd3;
  --p-color-tone-upcoming-ink:#2c4a6b;
  --p-color-tone-upcoming-mid:#8fa9c4;
  --p-color-tone-upcoming-tint:#e4ebf2;
  --p-color-tone-events-ink:#6a3f63;
  --p-color-tone-events-mid:#bf9bb8;
  --p-color-tone-events-tint:#f1e6ee;
  --p-color-tone-world-ink:#46602f;
  --p-color-tone-world-mid:#a3b889;
  --p-color-tone-world-tint:#e9efde;
  --p-color-tone-picks-ink:#6e4a38;
  --p-color-tone-picks-mid:#c9a48f;
  --p-color-tone-picks-tint:#f3e8e0;
  --p-font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",system-ui,sans-serif;
  --p-type-size-caption:.8125rem;
  --p-type-size-small:.9375rem;
  --p-type-size-body:1.0625rem;
  --p-type-size-lead:1.1875rem;
  --p-type-size-h3:1.25rem;
  --p-type-size-h2:1.5rem;
  --p-type-size-h1:clamp(1.875rem,1.3rem + 2.4vw,2.75rem);
  --p-type-floor:12px;
  --p-radius-sm:10px;
  --p-radius-md:14px;
  --p-radius-lg:20px;
  --p-radius-pill:999px;
  --p-shadow-card:0 1px 2px rgb(43 39 35 / .05),0 8px 24px rgb(43 39 35 / .06);
  --p-motion-ease:cubic-bezier(.2,0,0,1);
  --p-target-min:44px;
  --p-target-floor:24px;

  --paper:#ffffff;
  --surface:#ffffff;
  --sunken:#ffffff;
  --ink:#2b2723;
  --ink2:#57514a;
  --ink3:#6b655d;
  --line:#e9e4db;
  --field:#8e867a;
  --point:#ff385c;
  --point-deep:#d91447;
  --point-press:#b80f3b;
  --point-ink:#d91447;
  --point-ink-on-tint:#b80f3b;
  --on-point:#ffffff;
  --danger:#b3261e;
  --ok:#2e6b4a;
  --ok-fill:#2e6b4a;
  --on-ok:#ffffff;
  --fill:var(--point-deep);
  --fill-press:var(--point-press);
  --soft:#f6ece9;
  --soft-press:#f0dcd6;
  --map-land:#e6e2da;
  --map-land-hover:#d9d3c8;
  --shadow-card:0 1px 2px rgb(43 39 35 / .05),0 8px 24px rgb(43 39 35 / .06);
  --sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",system-ui,sans-serif;
  --ease:cubic-bezier(.2,0,0,1);
  --fs-caption:.8125rem;
  --fs-small:.9375rem;
  --fs-body:1.0625rem;
  --fs-lead:1.1875rem;
  --fs-h3:1.25rem;
  --fs-h2:1.5rem;
  --fs-h1:clamp(1.875rem,1.3rem + 2.4vw,2.75rem);
  --r-sm:10px;
  --r-md:14px;
  --r-lg:20px;
  --tone:#2c4a6b;
  --tone-mid:#8fa9c4;
  --tone-tint:#e4ebf2;
  --ad-surface:#f3f0ea;
  --ad-line:#d9d3c8;
  --warn-ink:#7d5209;
  --info-ink:#2c4a6b;
}
@supports (color:color-mix(in oklch,red,blue)){:root:not([data-theme]){--accent-ink:color-mix(in oklch,var(--accent),black 25%);--accent-wash:color-mix(in oklch,var(--accent) 12%,transparent);--primary-wash:color-mix(in oklch,var(--primary) 6%,transparent)}}
@media (prefers-reduced-motion:reduce){:root{--p-motion-duration-fast:0ms;--p-motion-duration-base:0ms;--p-motion-duration-slow:0ms;--p-motion-duration-reveal:0ms;--p-motion-stagger:0ms}}

/* 섹션 톤: now=salmon · soon=tastes(치자) · upcoming=places(쪽) · events=contents(가지) · world=orgs(이끼) · picks=people(흙) */
.tone-now{--tone:#a8321f;--tone-mid:#f09a86;--tone-tint:#fde8e2}.tone-soon{--tone:#7d5209;--tone-mid:#ddb366;--tone-tint:#f8edd3}.tone-upcoming{--tone:#2c4a6b;--tone-mid:#8fa9c4;--tone-tint:#e4ebf2}
.tone-events{--tone:#6a3f63;--tone-mid:#bf9bb8;--tone-tint:#f1e6ee}.tone-world{--tone:#46602f;--tone-mid:#a3b889;--tone-tint:#e9efde}.tone-picks{--tone:#6e4a38;--tone-mid:#c9a48f;--tone-tint:#f3e8e0}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{font-size:16px}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);line-height:1.65;word-break:keep-all;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:8px}
.mono{font-size:.8125rem;line-height:1.5;letter-spacing:.01em;color:var(--ink3);text-transform:none;font-weight:500}
.wrap{max-width:74rem;margin:0 auto;padding:0 1rem}
@media(min-width:640px){.wrap{padding:0 1.5rem}}@media(min-width:1024px){.wrap{padding:0 2rem}}
main.wrap{padding-top:1.5rem;padding-bottom:5rem}
@media(min-width:640px){main.wrap{padding-top:2.5rem}}
.top{background:var(--paper);border-bottom:1px solid var(--line);padding:.625rem 0 .75rem}
@media(min-width:64rem){.top{padding:.875rem 0}}
.top .wrap{display:flex;align-items:center;justify-content:flex-start;gap:1rem;flex-wrap:wrap}
.navwrap{margin-left:auto}
@media(min-width:641px){.aux{margin-left:.25rem}}
.brand{display:inline-flex;line-height:1.15}
.brand::before{content:"";display:none}
.brand .festa{color:var(--point-deep)}
.brand{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
.brand picture{display:block;line-height:0}.brand-logo{display:block;height:1.6em;width:auto}@media(max-width:640px){.top .brand-logo{height:1.36em}}@media(max-width:399px){.top .brand-logo{height:1.19em;margin-right:4px}}   /* 회장 2026-10-09 로고 이미지 교체 · 글자 크기 규칙(반응형)이 그대로 로고 높이를 정한다 */
.home{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;color:var(--ink2);background:var(--surface);box-shadow:var(--shadow-card);margin-right:.25rem;flex:0 0 auto;transition:transform .13s var(--ease)}
.home:active{transform:scale(.97)}
.home[aria-current="page"]{color:var(--point-deep)}
.navwrap{display:flex;align-items:center;gap:.5rem;min-width:0}
.nav{display:flex;align-items:center;gap:.25rem;background:var(--sunken);border-radius:14px;padding:3px;overflow-x:auto;scrollbar-width:none;max-width:100%}
.nav::-webkit-scrollbar{display:none}
.nav a{flex:0 0 auto;padding:.6rem .875rem .6rem .75rem;border-radius:11px;font-size:.9375rem;font-weight:600;color:var(--ink2);min-height:44px;display:inline-flex;align-items:center;gap:.4375rem;white-space:nowrap;transition:transform .13s var(--ease)}
.nav a svg{width:18px;height:18px;flex:0 0 auto;color:var(--ink3)}
.nav a[aria-current="page"] svg{color:var(--point-deep)}
.nav a:active{transform:scale(.97)}
.nav a[aria-current="page"]{background:var(--surface);color:var(--point-deep);box-shadow:var(--shadow-card)}
.aux a[aria-current="page"]{color:var(--point-deep)}
.nav a:active,.aux a:active,.home:active{color:var(--point-deep)}
.aux{display:flex;gap:.25rem}.aux a{padding:.5rem .625rem;border-radius:10px;font-size:.875rem;font-weight:600;color:var(--ink3);display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}.aux a svg{width:16px;height:16px;flex:0 0 auto}.aux a:active{transform:scale(.97)}
@media(max-width:640px){.aux{width:100%;justify-content:flex-end}.navwrap{width:100%;justify-content:flex-end}.nav{flex:1 1 auto}.nav a{flex:1 1 0;flex-direction:column;justify-content:center;gap:.15rem;padding:.35rem .125rem;font-size:.6875rem;min-height:50px;letter-spacing:-.01em}.nav a svg{width:20px;height:20px}}
.searchbar{background:var(--sunken);border-bottom:1px solid var(--line);padding:.625rem 0}
.sbrow{display:flex;align-items:center;gap:1rem}.sbrow .search{flex:1 1 auto}
.visitc{flex:0 0 auto;font-size:.875rem;font-weight:600;color:var(--ink2);white-space:nowrap}.visitc b{color:var(--point-deep);font-weight:800;font-variant-numeric:tabular-nums}
@media(max-width:640px){.sbrow{gap:.5rem}.visitc{font-size:.75rem}}
.search{display:flex;align-items:center;gap:.625rem;background:var(--surface);box-shadow:var(--shadow-card);border-radius:12px;padding:.625rem 1rem;min-height:48px;max-width:40rem;margin:0 auto}
.search .mono{color:var(--ink3);font-size:.75rem}
.search input{border:0;outline:0;background:transparent;color:var(--ink);width:100%;flex:1 1 auto;min-width:8rem;font-size:.9375rem;font-family:inherit}
.search .mono:empty{display:none}
.search input::placeholder{color:var(--ink3)}
.search .qbtn{appearance:none;border:0;background:var(--ink);color:#fff;border-radius:8px;padding:.45rem .8rem;font:inherit;font-size:.8125rem;font-weight:700;cursor:pointer;flex:0 0 auto}
#qn{white-space:nowrap}
.hero{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:center;margin-bottom:1rem}
@media(min-width:64rem){.hero{grid-template-columns:5fr 7fr;gap:3rem}}
.hero>div:first-child{background:transparent;border:0;padding:0;display:flex;flex-direction:column;justify-content:center}
.hero>div:first-child::before{content:"";display:block;width:1.5rem;height:2px;background:var(--point);margin-bottom:.875rem}
.hero h1{font-size:clamp(1.75rem,1.2rem + 2.4vw,2.625rem);line-height:1.28;letter-spacing:-.025em;margin:.25rem 0 .75rem;font-weight:700;text-wrap:balance}
.hero h1 em{font-style:normal;color:var(--point-ink);font-weight:800;font-variant-numeric:tabular-nums}
.cover{text-align:center;max-width:44rem;margin:-.25rem auto 1.5rem;font-size:.875rem;line-height:1.65;color:var(--ink3)}.cover b{color:var(--ink2);font-weight:700;font-variant-numeric:tabular-nums}
.hero .lead{font-size:1.0625rem;color:var(--ink2);margin:0 0 1.125rem;max-width:30rem}
.stats{display:flex;gap:1.5rem;flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.875rem 0}
.stat{display:flex;flex-direction:column}
.stat b{font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1.1;font-variant-numeric:tabular-nums}
.stat .mono{font-size:.75rem}
.mapbox{background:var(--surface);border:0;border-radius:24px;box-shadow:var(--shadow-card);padding:1.25rem 1.25rem .75rem;position:relative}
.mapbox .corner{display:none}
.mapbox .cap{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.375rem}
.mapbox .cap .sel{font-weight:800;font-size:1.0625rem}
.mapbox svg,html body .mapbox svg{width:100%;height:auto;display:block;max-height:34rem}   /* 지역 이름이 실제 12px 이상 되게(지도 폭 ≈ 높이×0.59 · 2026-11-02 허브 지적 5.5px) */
.mapbox path{fill:var(--sunken);stroke:var(--surface);stroke-width:1.4;cursor:pointer;transition:fill .13s var(--ease)}
.mapbox path:hover{fill:#e4ebf2}
.mapbox path[aria-pressed="true"]{fill:var(--point);stroke:var(--point-deep)}
.mapbox text,html body .mapbox svg text{font-family:var(--sans);font-size:23px;font-weight:700;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}   /* viewBox 600 기준 23 = 화면 12~13px · 흰 테두리로 지도 위 대비(2026-11-02) */
.mapbox text.n{display:none}   /* 지역별 숫자는 아래 지역 칩·지도 툴팁에 있다 — 글자를 키우면 지도 위에서 겹쳐 숨김(2026-11-02) */
.index{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.25rem 0 .25rem;padding:.5rem;background:var(--sunken);border-radius:16px}
.index[hidden]{display:none}.index.sub{margin-top:.25rem;background:transparent;padding:.25rem .5rem}
.index button{appearance:none;border:0;background:var(--surface);color:var(--ink2);border-radius:999px;padding:.5rem .95rem;font-family:inherit;font-size:.875rem;font-weight:600;letter-spacing:-.01em;display:inline-flex;gap:.4rem;align-items:baseline;cursor:pointer;min-height:38px;box-shadow:0 1px 2px rgb(43 39 35 / .06);transition:transform .13s var(--ease),box-shadow .13s var(--ease),background .13s var(--ease)}
.index button .n{font-size:.6875rem;font-weight:700;color:var(--ink3);font-variant-numeric:tabular-nums;background:var(--sunken);border-radius:999px;padding:.05rem .4rem}
.index button:hover{box-shadow:0 2px 6px rgb(43 39 35 / .1)}
.index button:active{transform:scale(.96)}
.index button[aria-pressed="true"]{background:var(--ink);color:#fff;box-shadow:0 4px 12px -4px rgb(43 39 35 / .45)}
.index button[aria-pressed="true"] .n{background:rgba(255,255,255,.18);color:#fff}
#dchips{background:transparent;padding:0;margin-bottom:0}
#dchips button{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink2)}
#dchips button[aria-pressed="true"]{background:var(--point-deep);box-shadow:none;color:#fff}
@media(max-width:640px){.index{flex-wrap:nowrap;overflow-x:auto;margin:1rem -1rem 0;padding:.5rem 1rem;border-radius:0;scrollbar-width:none}.index::-webkit-scrollbar{display:none}.index button{flex:0 0 auto}.index::after{content:"";flex:0 0 .75rem}}
section{padding:0;margin:3.5rem 0 0}
@media(min-width:640px){section{margin-top:5rem}}
.sh{display:flex;align-items:baseline;gap:.75rem;margin:0 0 1rem}
.sh .no{display:none}
.sh::before{content:"";width:1.5rem;height:2px;background:var(--tone);align-self:center}
.sh h2{font-size:1.375rem;line-height:1.35;font-weight:700;margin:0;letter-spacing:-.02em}
.sh .n{margin-left:auto;font-size:.8125rem;color:var(--ink3);font-variant-numeric:tabular-nums}
.sh.hsh{align-items:center;gap:.5rem;justify-content:flex-start}
.sh.hsh::before{display:none}
.sh.hsh h2{flex:1 1 auto;min-width:0}   /* 「모두 보기」가 없는 머리도 제목은 왼쪽(space-between 상속 때문에 오른쪽으로 밀리던 것 · 회장 2026-10-10) */
.sh.hsh>svg{width:26px;height:26px;flex:0 0 auto;color:var(--tone,var(--point-deep))}
.sh.hsh .all{margin-left:auto;font-size:var(--fs-small);font-weight:700;color:var(--ink2);text-decoration:none;min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}
.sh.hsh .all:hover{color:var(--ink)}
@media(max-width:640px){html.cjs body .htabs>section[id]>.sh.hsh>svg{display:none}html.cjs body .htabs>section[id]>.sh.hsh{justify-content:flex-end}}
.feature{display:grid;grid-template-columns:1fr;gap:0;background:var(--surface);border:0;border-radius:24px;overflow:hidden;margin-bottom:1.25rem;box-shadow:var(--shadow-card);transition:transform .13s var(--ease)}
@media(min-width:640px){.feature{grid-template-columns:.62fr 1fr}}
.feature:active{transform:scale(.985)}
.feature .media{position:relative;aspect-ratio:1/1.414;overflow:hidden;background:var(--tone-tint)}
.feature .media img{width:100%;height:100%;object-fit:contain;display:block}
.feature .media::after{content:none}
.feature .txt{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:.5rem}
.feature .txt h3{font-size:clamp(1.625rem,1.3rem + 1.4vw,2.25rem);line-height:1.3;margin:0;font-weight:700;letter-spacing:-.025em}
.feature .txt p{margin:0;color:var(--ink2);font-size:.9375rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.feature .txt .go{margin-top:auto;font-size:.9375rem;color:var(--ink);font-weight:600;align-self:flex-start;box-shadow:inset 0 0 0 1px var(--ink);border-radius:12px;padding:.6rem 1.125rem}
.grid{display:grid;grid-template-columns:1fr;gap:1rem;background:transparent;border:0}
@media(min-width:640px){.grid{grid-template-columns:repeat(2,1fr);gap:1.25rem}}
.card{--pw:9.5rem;display:grid;grid-template-columns:var(--pw) 1fr;gap:.75rem;align-items:stretch;background:transparent;border:0;padding:0;box-shadow:none;overflow:visible}
.card>.media-link,.card>.namecard{align-self:start}   /* 같은 줄 카드 본문 높이를 맞추고 포스터는 위에 고정(회장 2026-09-30 높이 일관성) */
@media(max-width:420px){.card{--pw:7rem}}
.card .media,.card .ph{width:var(--pw);height:calc(var(--pw) * 1.414);aspect-ratio:auto;border-radius:16px;overflow:hidden;background:var(--tone-tint);box-shadow:var(--shadow-card);display:flex;align-items:center;justify-content:center;transition:transform .13s var(--ease)}
.card .media:active,.card .ph:active{transform:scale(.985)}
.card .media img{width:100%;height:100%;object-fit:contain;display:block}
.card .media{position:relative}   /* 지난 연도 포스터 표시(.pyear) 자리 — 2026-10-08 */
.pyear .pls{display:none}
@media(max-width:479px){.card .media .pyear{font-size:.625rem;padding:.1rem .35rem;left:.25rem;bottom:.25rem;white-space:nowrap}.card .media .pyear .pl{display:none}.card .media .pyear .pls{display:inline}}
.card .ph{font-size:2rem;font-weight:800;color:var(--tone-mid)}
.card.lite>.namecard{width:var(--pw);height:calc(var(--pw) * 1.414);border-radius:16px;box-shadow:var(--shadow-card)}
.card .litenote{margin:.375rem 0 0;font-size:.75rem;color:var(--ink3)}
.card .t .ext{font-size:.8125rem;color:var(--ink3)}
/* 페이지 나누기(회장 2026-09-28: 20개씩 · 아래 번호) */
[data-pgoff]{display:none!important}
.pager{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.375rem;margin:1.75rem 0 .5rem}
.pager button{appearance:none;border:0;min-width:44px;height:44px;padding:0 .75rem;border-radius:12px;background:var(--surface);box-shadow:var(--shadow-card);font:inherit;font-size:.9375rem;font-weight:700;color:var(--ink2);cursor:pointer;font-variant-numeric:tabular-nums}
.pager button[aria-current="page"]{background:var(--ink);color:#fff;box-shadow:none}
.pager button:disabled{opacity:.35;cursor:default}
.pager .gap{color:var(--ink3);padding:0 .25rem}
.pager .info{flex-basis:100%;text-align:center;font-size:.8125rem;color:var(--ink3);margin-top:.25rem}
.card .body{min-height:calc(var(--pw) * 1.414);background:var(--surface);border-radius:16px;box-shadow:var(--shadow-card);padding:.875rem 1rem;display:flex;flex-direction:column;gap:.5rem;min-width:0}
.card .info{display:flex;flex-direction:column;gap:.2rem;min-width:0;flex:0 0 auto}
.card .meta{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;padding:0}
.card .meta .mono{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card .t{font-weight:700;font-size:1.0625rem;line-height:1.35;letter-spacing:-.015em}
.card .sub{font-size:.8125rem;color:var(--ink3);display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.card .facts{margin:.5rem 0 0;padding:.375rem 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.125rem}
.card .facts div{display:grid;grid-template-columns:2.25rem 1fr;gap:.5rem;align-items:baseline;padding:.2rem 0;border-bottom:1px solid var(--line)}
.card .facts div:last-child{border-bottom:0}
.card .facts dt{font-size:.6875rem;font-weight:700;letter-spacing:.04em;color:var(--ink3);text-transform:uppercase}
.card .facts dd{margin:0;font-size:.8125rem;color:var(--ink2);line-height:1.45;overflow-wrap:anywhere}
.evbox{margin:0;background:var(--tone-tint);border-radius:12px;padding:.5rem .625rem;display:flex;flex-direction:column}
.evbox .h{font-size:.75rem;font-weight:700;color:var(--tone);margin-bottom:.125rem;display:flex;justify-content:space-between;flex:0 0 auto}
.evbox .h a{color:var(--ink3);font-weight:600}
.evbox ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.125rem}
.evbox li a{display:grid;grid-template-columns:auto 1fr;gap:.5rem;align-items:baseline;font-size:.8125rem;line-height:1.4;padding:.2rem .25rem;border-radius:8px;min-width:0}
.evbox li .row{display:block;font-size:.8125rem;line-height:1.4;padding:.25rem .25rem;border-radius:8px;min-width:0;color:inherit;text-decoration:none}
.evbox li .row b,.evbox li .row .s{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.evbox li+li .row{border-top:1px solid color-mix(in srgb,var(--tone) 12%,transparent)}
.evbox li a:active{background:var(--surface)}
.evbox li a.more-ev{color:var(--tone);font-weight:700}
.evbox li .dot{width:6px;height:6px;border-radius:50%;background:var(--tone);align-self:center}
.evbox li b{font-weight:700;display:block}
.evbox li span{min-width:0}
.evbox li span.s{color:var(--ink3);display:block;font-size:.75rem}
.tag{font-size:.75rem;padding:.1875rem .625rem;border-radius:999px;border:0;background:var(--sunken);color:var(--ink2);letter-spacing:0;text-transform:none;font-weight:600}
.tag.live{color:#fff;background:var(--point-deep)}
.tag.ok{color:var(--ok);background:#e5efe8}
.tag.chk{color:#7d5209;background:#f8edd3}.tag.warn{color:#8a2a1a;background:#f9e3de}.rb .src{font-size:.72rem;color:var(--ink3);margin-top:.15rem}.stat.warn{border-color:#e0a89e}.tag.end{color:var(--ink3)}
.dday{font-size:.8125rem;font-weight:800;color:var(--point-ink);font-variant-numeric:tabular-nums}
.list{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line)}
.month{font-size:.8125rem;font-weight:700;letter-spacing:.01em;color:var(--tone);padding:1.125rem 0 .25rem}
.row{display:grid;grid-template-columns:3.25rem 1fr auto;gap:1rem;align-items:center;padding:1.125rem 0;background:transparent;border:0;border-bottom:1px solid var(--line);min-height:44px;transition:transform .13s var(--ease)}
.row:active{transform:scale(.985)}
.row .d{font-size:.8125rem;color:var(--ink3);font-variant-numeric:tabular-nums;display:flex;flex-direction:column;align-items:center;background:var(--surface);border-radius:8px;box-shadow:var(--shadow-card);overflow:hidden;width:3.25rem;padding:0 0 .25rem}
.row .d::before{content:attr(data-m);display:block;width:100%;background:var(--tone);color:#fff;font-size:.6875rem;font-weight:700;text-align:center;padding:.125rem 0}
.row .d span.dd{font-size:1.25rem;font-weight:800;color:var(--ink);line-height:1.2}
.row .t{font-weight:600;font-size:1.0625rem}
.row .m{font-size:.9375rem;color:var(--ink2);margin-left:.5rem}
.empty{color:var(--ink3);padding:1rem 0;font-size:.9375rem}
.picks{display:grid;grid-template-columns:1fr;gap:1rem;background:transparent;border:0}
@media(min-width:640px){.picks{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}}@media(min-width:1024px){.picks{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}}   /* 테마 5개(2026-09-29): 3열(3+2) · 칸이 내용에 밀려 넘치지 않게 minmax(0,…) */
.pick ol li>span{min-width:0;overflow-wrap:anywhere}
.picks.home10 .pick{height:100%}
.picks.home10 .pick .head{min-height:2.75rem;align-items:flex-start}
.picks.home10 .pick ol{flex:1 1 auto;min-height:calc(5 * 2.5rem)}
.picks.home10 .pick ol li{height:2.5rem;padding:0;align-items:center}
.picks.home10 .pick ol li>span{overflow:hidden}
.picks.home10 .pick ol li .nm{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picks.home10 .pick .more{margin-top:auto}
.pick{background:var(--surface);border:0;border-radius:16px;padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;box-shadow:var(--shadow-card);min-width:0}
.pick .head{display:flex;justify-content:space-between;align-items:baseline}
.pick .head .mono{color:var(--tone);font-weight:700}
.pick h3,.pick h2.pk{font-size:1.0625rem;margin:0;font-weight:700;letter-spacing:-.015em;line-height:1.4}   /* hub-b-2026-10-07 · hub-b2-2026-10-07 */
.pick p{margin:0;font-size:.875rem;color:var(--ink2);line-height:1.6}
.pick ol{margin:.375rem 0 0;padding:0;list-style:none}
.pick ol li{display:grid;grid-template-columns:1.75rem 1fr;gap:.5rem;padding:.5rem 0;border-top:1px solid var(--line);align-items:baseline}
.pick ol li .rk{font-size:.8125rem;font-weight:800;color:var(--point-ink);font-variant-numeric:tabular-nums}
.pick ol li .rk.dt{font-size:.75rem;font-weight:700;white-space:nowrap}
.pick ol:has(.rk.dt) li{grid-template-columns:4.25rem 1fr}
.pick ol li .nm{font-weight:600;font-size:.9375rem;color:var(--ink)}
.pick ol li .why{display:block;font-size:.8125rem;color:var(--ink3);margin-top:.125rem}
.pick .more{margin-top:.5rem;font-size:.8125rem;color:var(--ink);font-weight:600;align-self:center;box-shadow:inset 0 0 0 1px var(--ink);border-radius:12px;padding:.5rem .875rem}   /* 가운데 정렬·글자 축소(회장 2026-09-29) */
.links{display:flex;gap:.625rem;flex-wrap:wrap;margin:2.25rem 0 0}
.links a{min-height:48px;display:inline-flex;align-items:center;padding:0 1.375rem;border-radius:12px;box-shadow:inset 0 0 0 1px var(--ink);background:var(--surface);font-size:.9375rem;font-weight:600;transition:transform .13s var(--ease)}
.links a:active{transform:scale(.97)}
footer{margin:3.5rem -1rem 0;padding:1.5rem 1rem 2.5rem;background:var(--sunken);color:var(--ink3);font-size:.8125rem;line-height:1.7;display:grid;grid-template-columns:1fr auto;gap:1rem}
footer.ft{display:block;text-align:center}.ft .ftn{margin:0 0 .625rem}.ft .ftl{margin:0 0 .5rem}.ft .ftl a,.ft .ftc a{color:var(--ink2);text-decoration:none;margin:0 .3rem;white-space:nowrap}.ft .ftl a:hover,.ft .ftc a:hover{text-decoration:underline}
.ft .ftc{line-height:1.9}.ft .ftc .cp{display:block;margin-top:.375rem;color:var(--ink3)}
@media(min-width:640px){footer{margin:5rem -1.5rem 0;padding:1.5rem 1.5rem 2.5rem}}@media(min-width:1024px){footer{margin:5rem -2rem 0;padding:1.5rem 2rem 2.5rem}}
@media(max-width:640px){.hero h1{font-size:1.75rem}.row{grid-template-columns:3.25rem 1fr;gap:.75rem}.row .tagwrap{grid-column:2}footer{grid-template-columns:1fr}.nav{width:100%}.search{max-width:none;flex-wrap:wrap}.search input{flex:1 1 0;min-width:0}.search .mono{order:3;flex:1 0 100%;padding:0 0 .5rem}}   /* 검색 안내 문구가 입력칸을 찌그러뜨리지 않게 아랫줄로(2026-10-08 긴급) */
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
/* 포스터 없음 자리표시(전 페이지 공통) */
.namecard{display:flex;align-items:center;justify-content:center;text-align:center;background:linear-gradient(160deg,var(--tone-tint,#f3f0ea),var(--sunken));color:var(--tone,#2b2723);padding:.5rem;word-break:keep-all;overflow-wrap:anywhere}
.namecard span{font-weight:800;letter-spacing:-.02em;line-height:1.25;font-size:1rem;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.namecard.initial span{display:block;font-weight:800;line-height:1;letter-spacing:-.02em;-webkit-line-clamp:unset;overflow:visible;font-size:clamp(2.5rem,6vw,4.5rem)}
.dtop .poster .namecard.initial span{font-size:clamp(4rem,9vw,6.5rem)}
.namecard.typo{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;text-align:left;gap:.375rem;padding:1rem .875rem .875rem;
 background:linear-gradient(165deg,hsl(var(--th) 70% 93%) 0%,hsl(var(--th) 62% 84%) 58%,hsl(var(--th) 55% 74%) 100%);color:hsl(var(--th) 45% 20%)}
.namecard.typo::before{content:"";position:absolute;right:-22%;top:-12%;width:78%;aspect-ratio:1;border-radius:50%;background:hsl(var(--th) 80% 97% / .55)}
.namecard.typo::after{content:"";position:absolute;left:.875rem;right:.875rem;top:.875rem;height:3px;border-radius:2px;background:hsl(var(--th) 55% 45% / .55)}
.namecard.typo span,.namecard.typo b{position:relative;display:block;-webkit-line-clamp:unset;overflow:visible}
.namecard.typo .tp-k{font-size:.75rem;font-weight:700;letter-spacing:.04em;opacity:.8;margin-bottom:auto;padding-top:.5rem}
.namecard.typo .tp-n{font-size:clamp(1.125rem,2.1vw,1.5rem);font-weight:800;line-height:1.25;letter-spacing:-.02em;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;word-break:keep-all}
.namecard.typo .tp-d{font-size:.8125rem;font-weight:600;opacity:.85}
.namecard.typo .tp-m{font-size:.75rem;font-weight:800;letter-spacing:.06em;opacity:.55}
.feature .media.namecard.initial span{font-size:clamp(3.5rem,7vw,5.5rem)}
.pickpage .item .media.namecard.initial{display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--tone-tint,#f3f0ea),var(--sunken))}
.pickpage .item .media.namecard.initial span{font-size:2.5rem}
.bcard .ph.namecard.initial span,.mrow .namecard.initial span,.crow .ph.namecard.initial span{font-size:1.625rem}
.crow .ph.namecard.initial{display:flex}

.search input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none}
.search{position:relative}.search .qx{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:0;border-radius:999px;background:var(--sunken);color:var(--ink2);cursor:pointer}
.search .qx[hidden]{display:none}.search .qx svg{width:12px;height:12px}.search .qx:hover{background:var(--line);color:var(--ink)}.search .qx:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.qsug{position:absolute;left:0;right:0;top:calc(100% + .375rem);z-index:40;text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-card);overflow:hidden}
.qsug ul{list-style:none;margin:0;padding:0}.qsug li+li{border-top:1px solid var(--line)}
.qsug li a{display:flex;align-items:center;min-height:var(--p-target-min);padding:.5rem .875rem;color:var(--ink);text-decoration:none;font-size:var(--fs-body);line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}
.qsug li a:hover,.qsug li a:focus-visible,.qsug li a.on{background:color-mix(in srgb,var(--point) 12%,var(--surface))}   /* 고른 칸 전체 색(회장 2026-11-14 · 띠 대신) */.qsug li b{font-weight:800;color:var(--point-ink)}
.qsug .qnone{margin:0;padding:.75rem .875rem;font-size:var(--fs-small);color:var(--ink2)}

.prereg{margin:.5rem 0 0;font-size:var(--fs-small);line-height:1.6;color:var(--ink2)}.prereg a{font-weight:700;color:var(--point-ink);white-space:nowrap}   /* 사전등록 안내(회장 2026-11-01) */
.care{margin:1.25rem 0;padding:1rem 1.125rem;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--point);border-radius:var(--r-md);box-shadow:var(--shadow-card)}
.care h2{font-size:var(--fs-h3);margin:0 0 .25rem}.care .lead{margin:0 0 .75rem;color:var(--ink2);font-size:var(--fs-small)}
.care ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.care li{display:flex;gap:.625rem;align-items:flex-start;line-height:1.55}
.care li b{flex:0 0 3.5rem;color:var(--point-deep);font-size:var(--fs-small)}.care .note{margin:.75rem 0 0;color:var(--ink3);font-size:var(--fs-caption)}
.fb.page{flex-wrap:wrap}.fb.page .fix{flex:1 0 100%;margin-top:.5rem;text-align:center;color:var(--ink2);font-size:var(--fs-small)}
.fixlog{margin:.5rem 0 1rem;padding:.5rem .75rem;border:1px dashed var(--line);border-radius:var(--r-sm);color:var(--ink3);font-size:var(--fs-caption);line-height:1.5}
.fixlog b{color:var(--ink2);font-weight:600}.fixlog ul{list-style:none;margin:.25rem 0 0;padding:0}
.vc-alert{display:block;margin:.25rem 0 .5rem;padding:.625rem .75rem;border-radius:.625rem;background:color-mix(in srgb,#e5484d 12%,var(--surface));color:#b4232a;font-weight:800;font-size:.9375rem;text-decoration:none;border:1px solid color-mix(in srgb,#e5484d 35%,transparent)}
.vc-alert.rain{background:color-mix(in srgb,#2f6fc0 11%,var(--surface));color:#1f4f8f;border-color:color-mix(in srgb,#2f6fc0 35%,transparent)}.vc-alert.rain small{display:block;margin-top:.125rem;font-size:.8125rem;font-weight:700;color:#2f5f9f}
.wx .wet .wetfact{display:block;margin-top:.25rem;font-weight:600;color:var(--ink2)}.wx .wet .wetfact a{color:#1f4f8f;text-decoration:underline;text-underline-offset:2px}
.vcard.rain .vt{color:#1f4f8f}.vcard.rain.warn{border-color:color-mix(in srgb,#2f6fc0 35%,transparent)}
.journey li.jrain .jtips{margin:.375rem 0 .25rem;padding-left:1.125rem;font-size:.8438rem;line-height:1.55;color:var(--ink2)}.journey li.jrain .jtips li{margin:.125rem 0;list-style:disc}
.rainplan{margin:.625rem 0 0;padding:.625rem .75rem;border-radius:.625rem;background:color-mix(in srgb,#2f6fc0 7%,var(--surface));border:1px solid color-mix(in srgb,#2f6fc0 22%,transparent);font-size:.8125rem}
.rainplan>b{display:block;color:#1f4f8f;margin-bottom:.25rem}.rainplan p{margin:.25rem 0}.rainplan strong{color:#1f4f8f}
.indoor{list-style:none;margin:.25rem 0;padding:0;display:flex;flex-wrap:wrap;gap:.375rem}
.indoor li{display:flex;gap:.375rem;align-items:baseline;padding:.25rem .5rem;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:.8125rem}
.indoor li a{color:var(--ink);font-weight:700;text-decoration:none}.indoor li span{font-size:.75rem;color:var(--ink3)}
.wx ul.indoor{display:flex;flex-wrap:wrap;gap:.375rem;margin:.25rem 0}.wx ul.indoor li,.wx ul.indoor li:first-child{display:flex;grid-template-columns:none;padding:.25rem .5rem;border:1px solid var(--line);border-radius:999px}
.journey li.jrain .jin{margin:.375rem 0 0;font-size:.75rem;font-weight:700;color:var(--ink3)}
.two>.main{min-width:0}
.precheck .vgrid,.jvc .vgrid{display:grid;grid-template-columns:1fr;gap:.75rem}
@media(min-width:760px){.precheck .vgrid,.jvc .vgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.jvc{margin:.625rem 0 .25rem}
.journey .jgd{margin:.5rem 0 0;padding:.625rem .875rem;border-radius:.75rem;background:color-mix(in srgb,var(--point) 5%,var(--surface));border:1px solid color-mix(in srgb,var(--point) 18%,transparent)}
.sec.journey .jgd p{margin:0;font-size:.875rem;line-height:1.55;color:var(--ink2)}.sec.journey .jgd p b{margin-right:.375rem;font-size:.8125rem;color:var(--point-ink-on-tint)}
.journey .jgd .src{margin-top:.25rem;font-size:.75rem;color:var(--ink3)}.journey .jgd .src a{color:var(--ink2);text-decoration:underline;text-underline-offset:2px}.vcard[id]{scroll-margin-top:5rem}
.vcard{padding:.875rem 1rem;border-radius:.875rem;background:var(--surface);border:1px solid var(--line);min-width:0}
.vcard.bad{border-color:color-mix(in srgb,#e5484d 45%,transparent);background:color-mix(in srgb,#e5484d 6%,var(--surface))}
.vcard .vt{font-weight:800;font-size:.9375rem;margin-bottom:.5rem;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.vcard .vh{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.375rem}
.vcard p{margin:.375rem 0;font-size:.9063rem;line-height:1.5}
.precheck .vcard p.vsub,.jvc .vcard p.vsub{font-size:.75rem;font-weight:800;color:var(--ink3);margin:.625rem 0 .25rem;letter-spacing:.04em}
.vcard ul{margin:0;padding-left:1.1rem;font-size:.9063rem;line-height:1.5}
.vcard ul li span{display:block;color:var(--ink3);font-size:.8438rem}
.vcard ul li span.vtag{display:inline-block;color:inherit;font-size:.75rem}.vcard ul li span.vtag.ok,.vcard ul li span.vtag.bad{color:#fff}
.vcard ul.vtk{list-style:none;padding:0}
.vcard ul.vtk li{padding:.375rem 0;border-top:1px solid var(--line)}
.vcard ul.vtk li:first-child{border-top:0}
.vcard ul.vtk li b{margin-left:.375rem}
.vtag{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:800;background:var(--line);color:var(--ink)}
.vtag.bad{background:#e5484d;color:#fff}.vtag.warn{background:#f5a524;color:#1a1a1a}.vtag.ok{background:#30a46c;color:#fff}
.vbtn{display:inline-block;padding:.375rem .75rem;border-radius:.5rem;background:var(--point);color:#fff;font-weight:800;text-decoration:none}
/* 여정 체크리스트 — 조건 칩으로 항목을 걸러 본다 */
.journey .jchips{display:flex;flex-wrap:wrap;gap:.375rem .5rem;margin:0 0 .75rem}
.journey .jchips .jg{display:flex;flex-wrap:wrap;gap:.375rem;align-items:center;padding:.25rem .5rem;border-radius:.75rem;background:var(--surface2,var(--surface));border:1px solid var(--line)}
.journey .jchips .jg>span{font-size:.75rem;font-weight:800;color:var(--ink3);margin-right:.125rem}
.journey .jchips button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:.25rem .75rem;font-size:.8438rem;font-weight:700;cursor:pointer;min-height:32px}
.journey .jchips button[aria-pressed="true"]{background:var(--point);border-color:var(--point);color:#fff}
.journey .jtodo{margin:0 0 .875rem;padding:.75rem 1rem;border-radius:.875rem;background:color-mix(in srgb,var(--point) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--point) 35%,transparent)}
.journey .jtodo b{display:inline-block;font-size:.9375rem;margin:0 .5rem .375rem 0}
.journey .jtodo .jwhen{font-size:.75rem;font-weight:700;color:var(--ink3)}
.jteaser{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .625rem;margin:.75rem 0 0;padding:.75rem 1rem;border-radius:.875rem;text-decoration:none;color:var(--ink);background:color-mix(in srgb,var(--point) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--point) 35%,transparent)}
.jteaser b{font-size:.9375rem}.jteaser span{font-size:.875rem;color:var(--ink2)}.jteaser em{margin-left:auto;font-style:normal;font-weight:800;font-size:.8125rem;color:var(--point-ink)}
.journey .jearly{font-size:.6875rem;font-weight:800;color:#fff;background:var(--point);border-radius:999px;padding:.05rem .45rem}
.journey .jmore{margin-top:.5rem;border:0;background:none;color:var(--point-ink);font-weight:800;font-size:.8125rem;cursor:pointer;padding:.25rem 0}
.journey ol.jst{list-style:none;margin:0;padding:0;counter-reset:js}
.journey ol.jst>li{position:relative;padding:.625rem 0 .625rem 2.125rem;border-top:1px solid var(--line)}
.journey ol.jst>li:first-child{border-top:0}
.journey ol.jst>li::before{counter-increment:js;content:counter(js);position:absolute;left:0;top:.75rem;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--line);color:var(--ink);font-size:.75rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.journey ol.jst>li>b{display:block;font-size:.9375rem;margin-bottom:.25rem}
.journey ul.ji{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}
.journey ul.ji li{display:flex;flex-wrap:wrap;gap:.25rem .5rem;align-items:baseline;font-size:.9063rem;line-height:1.5}
.journey ul.ji li[hidden]{display:none}
.journey .jm{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:4.25rem;padding:.0625rem .5rem;border-radius:999px;font-size:.75rem;font-weight:800;line-height:1.5;white-space:nowrap}
.journey .jm.ok{background:var(--ok-fill);color:var(--on-ok)}.journey .jm.q{background:var(--p-color-tone-soon-tint);color:var(--warn-ink);box-shadow:inset 0 0 0 1px var(--p-color-tone-soon-mid)}.journey .jm.i{background:var(--sunken);color:var(--ink2)}
.journey ul.ji>li{display:grid;grid-template-columns:auto 1fr;column-gap:.625rem;row-gap:.125rem;align-items:baseline;padding:.375rem 0;border-top:1px dashed var(--line)}
.journey ul.ji>li:first-child{border-top:0}
.journey ul.ji>li>.jq{font-weight:700;color:var(--ink)}.journey ul.ji>li>.ja{grid-column:2;color:var(--ink2);font-size:.875rem}
.journey ul.ji>li>.jtips,.journey ul.ji>li>.jc,.journey ul.ji>li>.jin,.journey ul.ji>li>ul{grid-column:2}
.journey .jq .jk{margin-left:.375rem;vertical-align:.0625rem}
.journey .jgo{display:inline-flex;align-items:center;min-height:1.75rem;color:var(--point-ink);font-weight:700;text-decoration:none}.journey .jgo:hover{text-decoration:underline}
.journey ol.jst>li>b .jsh{margin-left:.5rem;font-size:.8125rem;font-weight:600;color:var(--ink3)}
@media(max-width:640px){.journey ol.jst>li>b .jsh{display:none}}
.journey .jc{color:var(--ink3);font-size:.8438rem}
.journey .jk{font-size:.6875rem;font-weight:800;color:var(--ink3);border:1px solid var(--line);border-radius:999px;padding:0 .375rem}
.journey .jsum{margin:.75rem 0 0;font-size:.8438rem;color:var(--ink3)}
.journey .jline{position:relative;margin:.375rem 0 0;padding-left:.875rem;font-size:.875rem;color:var(--ink)}.journey .jline::before{content:"";position:absolute;left:0;top:.6em;width:.375rem;height:.375rem;border-radius:50%;background:var(--point)}
.vsrc{display:inline-block;margin:.5rem .75rem 0 0;font-size:.75rem;color:var(--ink3)}
.vsplit{font-size:.75rem;font-weight:800;padding:.125rem .5rem;border-radius:999px;background:color-mix(in srgb,var(--point) 15%,transparent);color:var(--point-deep)}
.vcard.sched{margin-top:.75rem}
.vtw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.vtab{width:100%;border-collapse:collapse;font-size:.875rem}
.vtab th{text-align:left;font-size:.75rem;color:var(--ink3);font-weight:800;padding:.375rem .5rem;border-bottom:1px solid var(--line)}
.vtab td{padding:.5rem;border-bottom:1px solid var(--line);vertical-align:top}
.vtab td.d{white-space:nowrap;font-weight:700}.vtab td.t{white-space:nowrap;color:var(--ink3)}
.vtab .pl{display:inline-block;padding:.0625rem .5rem;border-radius:.375rem;font-size:.8125rem;font-weight:700}
.pl.p0{background:#e6f0ff;color:#1e4fb5}.pl.p1{background:#e8f7ee;color:#1d7a46}.pl.p2{background:#fff1e0;color:#a85a00}.pl.p3{background:#f6e8ff;color:#7a2fb5}.pl.p4{background:#ffe8ec;color:#b42a45}.pl.p5{background:#e8f6f7;color:#1b7078}
@media(max-width:600px){.vtab thead{display:none}.vtab,.vtab tbody,.vtab tr,.vtab td{display:block;width:auto}.vtab tr{padding:.5rem 0;border-bottom:1px solid var(--line)}.vtab td{border:0;padding:.125rem 0}.vtab td.d,.vtab td.t{display:inline-block;margin-right:.5rem}.vtab td.t:empty{display:none}}
.glance{margin:0 0 1rem;padding:1rem 1.125rem;border-radius:1rem;background:var(--surface);box-shadow:var(--shadow-card)}
.glance .ch{font-size:.75rem;font-weight:800;letter-spacing:.06em;color:var(--point-deep);margin-bottom:.375rem}
.glance ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:0}
@media(min-width:760px){.glance ul{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem}}
.glance li{display:grid;grid-template-columns:4.25rem 1fr;gap:.5rem;align-items:baseline;padding:.5rem 0;border-top:1px solid var(--line);min-width:0}
.glance li b{font-size:.8125rem;color:var(--ink3);font-weight:700}
.glance li a,.glance li span{font-size:.9375rem;line-height:1.45;color:var(--ink);min-width:0;overflow-wrap:anywhere}
.glance li a{text-decoration:none;border-bottom:1px dashed color-mix(in srgb,var(--point) 45%,transparent)}
.dnav{position:sticky;top:0;z-index:20;display:flex;gap:.375rem;overflow-x:auto;scrollbar-width:none;padding:.5rem 0;margin:0 0 1rem;background:var(--bg,#fff);border-bottom:1px solid var(--line)}
.dnav::-webkit-scrollbar{display:none}
.dnav a{flex:0 0 auto;font-size:.875rem;font-weight:700;padding:.4rem .85rem;border-radius:999px;background:var(--sunken);color:var(--ink2);text-decoration:none;white-space:nowrap}
.dnav a.on{background:var(--point);color:#fff}
main .sec,main details.sec,.wx{scroll-margin-top:3.75rem}
.morebtn{margin:.5rem 0 0;border:0;background:var(--sunken);color:var(--ink2);font-weight:700;font-size:.8125rem;padding:.45rem .9rem;border-radius:999px;cursor:pointer}
.totop{position:fixed;right:1rem;bottom:1rem;z-index:30;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;text-decoration:none;opacity:0;pointer-events:none;transition:opacity .2s;box-shadow:0 6px 18px rgb(0 0 0 / .2)}
.totop.show{opacity:.85;pointer-events:auto}
.pyear{position:absolute;left:.5rem;bottom:.5rem;z-index:2;background:rgb(20 18 16 / .78);color:#fff;font-size:.75rem;font-weight:700;padding:.2rem .6rem;border-radius:999px;letter-spacing:.01em}
.crumb{padding:0 0 .75rem}
.fb{display:flex;gap:.5rem;margin:.375rem 0 .25rem}
.fb button{appearance:none;border:0;background:var(--sunken);color:var(--ink2);border-radius:999px;padding:.35rem .75rem;font:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;min-height:36px}
.fb button:active{transform:scale(.97)}
.fbthanks{font-size:.8125rem;color:var(--ok)}
button.btn{cursor:pointer;font-family:inherit}
.dhead{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start;margin-bottom:1rem}
@media(min-width:64rem){.dhead{grid-template-columns:7fr 5fr;gap:3rem}}
.dhead>div:first-child{background:transparent;border:0;padding:0}
.dhead>div:first-child::before{content:"";display:block;width:1.5rem;height:2px;background:var(--point);margin-bottom:.875rem}
.dhead h1{font-size:clamp(1.75rem,1.2rem + 2.4vw,2.625rem);line-height:1.28;letter-spacing:-.025em;margin:.25rem 0 .75rem;font-weight:700;text-wrap:balance}
.dhead .lead{color:var(--ink2);margin:0 0 .875rem;font-size:1.0625rem}
.band{position:relative;aspect-ratio:21/9;overflow:hidden;background:var(--sunken);border:0;border-radius:24px;margin:1rem 0;box-shadow:var(--shadow-card)}
.band img{width:100%;height:100%;object-fit:cover;display:block}
.band .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:3rem;font-weight:800;color:var(--ink3)}
.posterrow{display:grid;grid-template-columns:1fr;gap:1rem;margin:1rem 0}
@media(min-width:640px){.posterrow{grid-template-columns:minmax(220px,300px) 1fr}}
.posterrow .poster{aspect-ratio:1/1.414;overflow:hidden;background:var(--sunken);border:0;border-radius:16px;box-shadow:var(--shadow-card)}
.posterrow .poster img{width:100%;height:100%;object-fit:contain;display:block}
.posterrow .photo{overflow:hidden;background:var(--sunken);border:0;border-radius:24px;min-height:200px;box-shadow:var(--shadow-card)}
.posterrow .photo img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:640px){.posterrow .photo{display:none}}
.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;background:transparent;border:0;margin:0}
.fact{background:var(--surface);border:0;border-radius:12px;padding:.75rem .875rem;box-shadow:var(--shadow-card)}
.fact .k{font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.fact .v{margin-top:.25rem;font-weight:600;overflow-wrap:anywhere;font-size:.9375rem}
.actions{display:flex;gap:.625rem;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;min-height:48px;padding:0 1.375rem;border-radius:12px;box-shadow:inset 0 0 0 1px var(--ink);background:var(--surface);font-size:.9375rem;font-weight:600;color:var(--ink);transition:transform .13s var(--ease)}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--point-deep);color:#fff;box-shadow:none}
.btn.primary:active{background:var(--point-press)}
.notice{background:var(--ink);color:#fff;border:0;border-radius:12px;padding:.75rem 1rem;font-size:.9375rem;margin:.875rem 0}
.notice.end{background:var(--sunken);color:var(--ink2)}
.alert{background:#fde8e2;border:0;border-radius:12px;padding:.75rem 1rem;margin:.625rem 0;font-size:.9375rem}
.alert .d{font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#a8321f;margin-right:.625rem}
.alert a{color:#a8321f;font-weight:600;text-decoration:underline}
.two{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}
@media(min-width:64rem){.two{grid-template-columns:1fr 20rem;gap:3rem}}
.desc{font-size:1.0625rem;line-height:1.75;margin:0 0 .5rem;color:var(--ink);max-width:40rem}
.side{background:var(--surface);border:0;border-radius:16px;padding:1.125rem 1.25rem;font-size:.875rem;color:var(--ink2);position:sticky;top:1rem;box-shadow:var(--shadow-card)}
.side .k{font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);margin:.75rem 0 .25rem}
.side .k:first-child{margin-top:0}
.side a{color:var(--ink);font-weight:500}
.gsec{display:grid;grid-template-columns:1fr;gap:.375rem;padding:1rem 1.125rem;background:var(--surface);border:0;border-radius:12px;margin:.5rem 0;box-shadow:var(--shadow-card)}
@media(min-width:640px){.gsec{grid-template-columns:7rem 1fr;gap:1rem}}
.gsec .no{font-size:.75rem;font-weight:800;color:var(--point-ink);font-variant-numeric:tabular-nums}
.gsec .no b{display:block;font-size:1rem;color:var(--ink);margin-top:.125rem;font-weight:700}
.gsec p{margin:0;font-size:.9375rem;line-height:1.7}
.ev{font-size:.75rem;color:var(--ink3);margin-top:.5rem}
.ev a{color:var(--ink2);text-decoration:underline}
.evlist{display:grid;grid-template-columns:1fr;gap:.5rem;margin:.375rem 0;padding:0}
@media(min-width:640px){.evlist{grid-template-columns:repeat(2,1fr)}}
.evlist li{list-style:none;background:var(--surface);border:0;border-radius:12px;padding:.75rem .875rem;font-size:.9375rem;box-shadow:var(--shadow-card)}
.evlist li a{text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
ul.program{columns:2;column-gap:1.75rem;padding-left:1.1em;margin:.5rem 0;font-size:.9375rem;color:var(--ink2)}
ul.program li{break-inside:avoid;margin:.2em 0}
.pickpage .item{display:grid;grid-template-columns:2.75rem 1fr;gap:1rem;padding:1rem 1.125rem;background:var(--surface);border:0;border-radius:16px;margin:.625rem 0;align-items:start;box-shadow:var(--shadow-card)}
@media(min-width:760px){.pickpage .item{grid-template-columns:3.5rem 1fr 13rem}}
.pickpage .item .rk{font-size:2rem;font-weight:800;color:var(--point-ink);line-height:1;font-variant-numeric:tabular-nums}
.pickpage .item .rk.dt{font-size:1rem;white-space:nowrap}
.pickpage .item h3{font-size:1.25rem;margin:.25rem 0 .375rem;font-weight:700}
.pickpage .item p{margin:0;color:var(--ink2);font-size:.9375rem}
.pickpage .item .media{aspect-ratio:1/1.414;overflow:hidden;background:var(--sunken);border-radius:12px;display:block}
@media(max-width:760px){.pickpage .item .media{grid-column:2}}
.pickpage .item .media img{width:100%;height:100%;object-fit:contain;display:block}
@media(max-width:640px){ul.program{columns:1}.facts{grid-template-columns:1fr}.dhead h1{font-size:1.75rem}}

.bk-risk{margin:.75rem 0 0;max-width:46rem;padding:.6rem .9rem;border-radius:14px;background:rgb(255 255 255 / .14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgb(255 255 255 / .28);color:#fff;font-size:.9375rem;line-height:1.5;font-weight:600;text-shadow:0 1px 12px rgb(0 0 0 / .35)}
.bk-risk::before{content:"안전 안내";display:block;font-size:.6875rem;letter-spacing:.12em;font-weight:700;color:rgb(255 255 255 / .75);margin-bottom:.2rem}
.bk-pair{margin:.6rem 0 0;font-size:.9375rem;color:rgb(255 255 255 / .9);text-shadow:0 1px 12px rgb(0 0 0 / .35)}.bk-pair a{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:.15em}
/* 버킷 축제 상세 v3(2026-10-01 회장 「디자인 수준을 매우 높게」): 표지(사진 전면) → 숫자 띠 → 가운데 읽기 칸 + 오른쪽 따라오는 목차 */
main.wrap:has(.bk-cover){padding-top:1rem}
.bk-cover{position:relative;isolation:isolate;overflow:hidden;border-radius:28px;color:#fff;background:#1b1714;margin:.25rem 0 0;min-height:30rem;display:grid;align-items:end}
.bk-cover .bg{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center;transform:scale(1.02)}
.bk-cover::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgb(18 14 12 / .15) 0%,rgb(18 14 12 / .35) 40%,rgb(18 14 12 / .88) 100%)}
.bk-cover-in{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:end;padding:4.5rem 1.25rem 1.5rem}
@media(min-width:900px){.bk-cover{min-height:38rem}.bk-cover-in{grid-template-columns:minmax(0,1fr) 15.5rem;padding:7rem 3rem 2.75rem;gap:3rem}}
.bk-kicker{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-size:.8125rem;font-weight:700;letter-spacing:.02em;color:rgb(255 255 255 / .86)}
.bk-kicker a{color:#fff;text-decoration:none;background:var(--point);padding:.25rem .65rem;border-radius:999px}
.bk-kicker .tag{border:1px solid rgb(255 255 255 / .45);padding:.2rem .6rem;border-radius:999px;font-size:.75rem}
.bk-cover h1{font-size:clamp(2.5rem,6vw,4.5rem);line-height:1.04;letter-spacing:-.035em;margin:.875rem 0 .25rem;font-weight:800;text-wrap:balance;text-shadow:0 2px 24px rgb(0 0 0 / .35)}
.bk-en{font-size:clamp(1rem,1.6vw,1.25rem);color:rgb(255 255 255 / .8);font-style:italic;margin:0 0 1.25rem;letter-spacing:.01em}
.bk-hook{font-size:clamp(1.0625rem,1.7vw,1.3125rem);line-height:1.65;font-weight:500;margin:0 0 1.75rem;max-width:40rem;color:rgb(255 255 255 / .94);text-wrap:pretty;word-break:keep-all}
.bk-hook .cites a{background:rgb(255 255 255 / .2);color:#fff}
.bk-facts{display:grid;grid-template-columns:1fr;gap:.5rem;max-width:46rem}@media(min-width:640px){.bk-facts{grid-template-columns:repeat(3,minmax(0,1fr))}}
.bk-facts div{background:rgb(255 255 255 / .12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgb(255 255 255 / .18);border-radius:14px;padding:.7rem .9rem}
.bk-facts b{display:block;font-size:.6875rem;color:rgb(255 255 255 / .7);margin-bottom:.2rem;letter-spacing:.12em;font-weight:700}
.bk-facts span{font-size:.9375rem;line-height:1.45;font-weight:600;color:#fff;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.bk-poster{position:relative;border-radius:16px;overflow:hidden;aspect-ratio:1/1.414;background:#1d1b19;box-shadow:0 24px 48px -12px rgb(0 0 0 / .6),0 0 0 1px rgb(255 255 255 / .12);max-width:15.5rem;width:44%;justify-self:start}
@media(min-width:900px){.bk-poster{width:100%;justify-self:end;transform:rotate(1.5deg)}}
.bk-poster img{width:100%;height:100%;object-fit:contain;display:block}.bk-poster .namecard{width:100%;height:100%;border-radius:0}
.bk-credit{position:absolute;right:1rem;top:.875rem;font-size:.6875rem;color:rgb(255 255 255 / .8);background:rgb(0 0 0 / .35);padding:.2rem .6rem;border-radius:999px;max-width:70%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-credit a{color:inherit;text-decoration:none}
.bk-nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:1.25rem 0 0;background:var(--surface);border-radius:22px;box-shadow:var(--shadow-card);overflow:hidden}
@media(min-width:760px){.bk-nums{grid-template-columns:repeat(var(--n,5),minmax(0,1fr))}}
.bk-nums div{padding:1.25rem 1.25rem 1.125rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
@media(min-width:760px){.bk-nums div{border-bottom:0}.bk-nums div:last-child{border-right:0}}
.bk-nums b{display:block;font-size:clamp(1.5rem,2.6vw,2rem);letter-spacing:-.03em;line-height:1.1;color:var(--point-deep);font-weight:800}
.bk-nums span{display:block;font-size:.8125rem;line-height:1.5;color:var(--ink2);margin-top:.375rem;word-break:keep-all}.bk-nums span.cites{display:inline;margin:0}
.bk-layout{display:block;margin-top:2.5rem}
@media(min-width:1024px){.bk-layout{display:grid;grid-template-columns:minmax(0,44rem) 15rem;gap:4.5rem;justify-content:center}}
.bk-rail{display:contents}
@media(min-width:1024px){.bk-rail{display:block;grid-column:2;grid-row:1}.bk-rail-in{position:sticky;top:7rem}}   /* 경로 줄(2.35rem)+목차 띠(약 3.6rem) 아래에 붙는다 — 이전 1.5rem 은 띠 뒤에 가려 「언제」가 안 보였다(회장 2026-11-04) */
.bk-main{grid-column:1;grid-row:1;min-width:0}
.bk-nav{position:sticky;top:0;z-index:20;display:flex;gap:.375rem;overflow-x:auto;padding:.625rem 0;margin:1.25rem 0 .5rem;background:var(--paper,#fff);border-bottom:1px solid var(--line);scrollbar-width:none}
.bk-nav::-webkit-scrollbar{display:none}
.bk-nav a{flex:0 0 auto;font-size:.875rem;font-weight:700;padding:.4rem .8rem;border-radius:999px;background:var(--sunken);color:var(--ink2);text-decoration:none}
.bk-nav a.on{background:var(--ink);color:#fff}
.bk-quick{display:none}
@media(min-width:1024px){.bk-quick{display:block;margin-top:0;background:var(--sunken);border-radius:16px;padding:1rem 1.125rem;font-size:.8125rem;line-height:1.55;color:var(--ink2)}
.bk-quick b{display:block;font-size:.6875rem;letter-spacing:.12em;color:var(--ink3);margin:.625rem 0 .125rem}.bk-quick b:first-child{margin-top:0}
.bk-quick a.btn-o{display:block;margin-top:.875rem;text-align:center;background:var(--ink);color:#fff;border-radius:999px;padding:.55rem .75rem;font-weight:700;text-decoration:none}}
.bk-ch{margin:0;padding:2.75rem 0 .5rem;scroll-margin-top:4rem;border-top:1px solid var(--line)}
.bk-ch.first{border-top:0;padding-top:.25rem}
@media(min-width:1024px){.bk-ch{scroll-margin-top:1.5rem}}
.bk-ch .no{display:flex;align-items:baseline;gap:.625rem;font-size:.75rem;font-weight:800;letter-spacing:.16em;color:var(--point-ink)}
.bk-ch .no i{font-style:normal;font-size:2rem;letter-spacing:-.02em;line-height:1;color:transparent;-webkit-text-stroke:1.25px var(--point)}
.bk-ch h2{font-size:clamp(1.5rem,2.6vw,2rem);letter-spacing:-.025em;line-height:1.25;margin:.375rem 0 1.25rem;text-wrap:balance}
.bk-ch p{font-size:1.0625rem;line-height:1.85;margin:0 0 1.125rem;color:var(--ink);text-wrap:pretty;word-break:keep-all}
.bk-ch#why>p:first-of-type{font-size:1.1875rem;line-height:1.8;font-weight:500}
.bk-ch#why>p:first-of-type::first-letter{float:left;font-size:3.4rem;line-height:.95;font-weight:800;margin:.3rem .5rem 0 0;color:var(--point-deep)}
.cites{white-space:nowrap;margin-left:.2rem}
.cites a{display:inline-block;min-width:1.05rem;height:1.05rem;line-height:1.05rem;padding:0 .25rem;border-radius:999px;background:var(--sunken);color:var(--ink3);font-size:.625rem;font-weight:700;text-align:center;text-decoration:none;vertical-align:.2em;margin-left:.125rem}.cites a{box-sizing:content-box;border:3px solid transparent;background-clip:padding-box;margin:-3px -1px}
.cites a:hover{background:var(--point);color:#fff}
.bk-tl{list-style:none;margin:0;padding:0 0 0 1.5rem;border-left:2px solid color-mix(in srgb,var(--point) 30%,transparent)}
.bk-tl li{position:relative;padding:0 0 1.5rem .5rem}.bk-tl li::before{content:"";position:absolute;left:-2.06rem;top:.3rem;width:.875rem;height:.875rem;border-radius:50%;background:var(--surface);border:3px solid var(--point)}
.bk-tl b{display:block;font-size:.8125rem;letter-spacing:.04em;color:var(--point-deep);margin-bottom:.25rem}.bk-tl span{font-size:1rem;line-height:1.75;word-break:keep-all;overflow-wrap:anywhere}
.bk-hl{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:640px){.bk-hl{grid-template-columns:repeat(2,minmax(0,1fr))}}
.bk-hl article{background:var(--surface);border-radius:18px;padding:1.25rem 1.375rem;box-shadow:var(--shadow-card);display:flex;flex-direction:column}
.bk-hl h3{font-size:1.125rem;line-height:1.4;margin:0 0 .625rem;letter-spacing:-.015em}.bk-hl p{font-size:.9375rem;line-height:1.75;margin:0 0 .625rem;word-break:keep-all}
.bk-hl .why{border-left:3px solid var(--point);padding-left:.75rem;color:var(--ink2)}
.bk-hl .tip{margin-top:auto;background:var(--sunken);border-radius:12px;padding:.625rem .8rem;font-size:.875rem}.bk-hl .tip b{color:var(--point-deep);margin-right:.35rem}
.bk-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.bk-list li{position:relative;padding-left:1.75rem;font-size:1rem;line-height:1.75;word-break:keep-all}.bk-list li::before{content:"";position:absolute;left:.25rem;top:.62rem;width:.5rem;height:.5rem;border-radius:2px;background:var(--point);transform:rotate(45deg)}
.bk-note{font-size:.9375rem;line-height:1.65;color:var(--ink2);background:var(--sunken);border-radius:14px;padding:.875rem 1.125rem;margin:1.25rem 0 0}
.bk-src{font-size:.8125rem;color:var(--ink3);margin:3.5rem auto 0;border-top:1px solid var(--line);padding-top:1.25rem;max-width:63.5rem}
.bk-vids{display:grid;grid-template-columns:1fr;gap:1rem}@media(min-width:640px){.bk-vids{grid-template-columns:repeat(2,minmax(0,1fr))}.bk-vids .bk-vid:first-child{grid-column:1/-1}}
.bk-vid{margin:0}.bk-vid .yt,.bk-vid iframe{position:relative;display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:16px;overflow:hidden;padding:0;cursor:pointer;background:#000}
.bk-vid .yt img{width:100%;height:100%;object-fit:cover;display:block;opacity:.9;transition:opacity .2s}.bk-vid .yt:hover img{opacity:1}
.bk-vid .play{position:absolute;inset:0;margin:auto;width:3.5rem;height:3.5rem;border-radius:50%;background:rgb(255 255 255 / .92);color:var(--point-deep);display:flex;align-items:center;justify-content:center;font-size:1.25rem;box-shadow:0 8px 24px rgb(0 0 0 / .3)}
.bk-vid figcaption{margin-top:.5rem}.bk-vid figcaption b{display:block;font-size:.9375rem;line-height:1.45}.bk-vid figcaption span{font-size:.75rem;color:var(--ink3)}
.bk-note-s{font-size:.75rem;color:var(--ink3);margin-top:.75rem}.bk-mc{margin:.5rem 0 0}.bk-mc a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--fs-small);font-weight:700;color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.bk-mom{list-style:none;margin:0;padding:0;display:grid;gap:.875rem;counter-reset:m}
.bk-mom li{position:relative;padding:1rem 1.125rem 1rem 3.75rem;background:var(--surface);border-radius:16px;box-shadow:var(--shadow-card);counter-increment:m}
.bk-mom li::before{content:counter(m,decimal-leading-zero);position:absolute;left:1.125rem;top:1rem;font-weight:800;font-size:1.125rem;color:var(--point-ink);letter-spacing:-.02em}
.bk-mom b{display:block;font-size:1.0625rem;margin-bottom:.25rem}.bk-mom span{font-size:.9375rem;line-height:1.75;word-break:keep-all}
.bk-gal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}
.bk-gal figure{margin:0;position:relative;overflow:hidden;border-radius:14px}.bk-gal figure:first-child{grid-column:1/-1}
.bk-gal img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;border-radius:14px;background:var(--sunken)}.bk-gal figure:first-child img{aspect-ratio:16/9}
.bk-gal figcaption{font-size:.75rem;color:var(--ink2);line-height:1.5;padding:.5rem .125rem .25rem}.bk-gal figcaption a{color:var(--ink3);text-decoration:none}
.bk-plan{list-style:none;margin:0;padding:0;counter-reset:s}
.bk-plan li{display:grid;grid-template-columns:8.5rem 1fr;gap:1rem;padding:.875rem 0;border-top:1px solid var(--line)}
.bk-plan li:first-child{border-top:0}
.bk-plan li b{font-size:.875rem;color:var(--point-deep)}.bk-plan li span{font-size:1rem;line-height:1.75;word-break:keep-all}
.bk-go li{grid-template-columns:2rem 1fr;counter-increment:s}.bk-go li::before{content:counter(s);width:1.625rem;height:1.625rem;border-radius:50%;background:var(--ink);color:#fff;font-size:.75rem;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:.1rem}
@media(max-width:560px){.bk-plan li{grid-template-columns:1fr;gap:.25rem}.bk-go li{grid-template-columns:2rem 1fr}}
.bk-sub{font-size:1.125rem;margin:2rem 0 .875rem;letter-spacing:-.01em}
.bk-fly{background:linear-gradient(135deg,#1f2a44,#2d3f66);color:#fff;border-radius:20px;padding:1.25rem 1.375rem 1rem;margin:0 0 1.75rem;box-shadow:var(--shadow-card)}
.bk-fly-h{font-size:.6875rem;font-weight:800;letter-spacing:.16em;color:rgb(255 255 255 / .65);margin-bottom:.75rem}
.bk-fly-route{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;margin-bottom:1rem}
.bk-fly-route div:last-child{text-align:right}.bk-fly-route b{display:block;font-size:clamp(1.75rem,4vw,2.25rem);letter-spacing:.02em;line-height:1}
.bk-fly-route span{display:block;font-size:.8125rem;color:rgb(255 255 255 / .75);margin-top:.25rem}
.bk-fly-route i{font-style:normal;font-size:1.25rem;color:#ffd166;border-top:2px dashed rgb(255 255 255 / .35);padding:0 .5rem;line-height:0;display:flex;align-items:center;min-width:4rem;justify-content:center}
.bk-fly ul{list-style:none;margin:0;padding:.75rem 0 0;border-top:1px solid rgb(255 255 255 / .15);display:grid;gap:.5rem}
.bk-fly li{display:grid;grid-template-columns:6.5rem 1fr;gap:.75rem;font-size:.9375rem;line-height:1.55}.bk-fly li b{color:#ffd166;font-size:.8125rem}
@media(max-width:560px){.bk-fly li{grid-template-columns:1fr;gap:.125rem}}
.bk-ch .bk-fly-s{font-size:.75rem;color:rgb(255 255 255 / .6);margin:.875rem 0 0;line-height:1.55}.bk-fly-s a{color:rgb(255 255 255 / .85)}
.bk-near{display:grid;grid-template-columns:1fr;gap:.875rem}@media(min-width:640px){.bk-near{grid-template-columns:repeat(2,minmax(0,1fr))}}
.bk-near article{border:1px solid var(--line);border-radius:16px;padding:1.125rem 1.25rem;background:var(--surface)}.bk-near h3{font-size:1rem;margin:0 0 .375rem}.bk-near p{font-size:.9375rem;line-height:1.75;margin:0;word-break:keep-all}
.bk-faq details{border-top:1px solid var(--line);padding:1rem 0}.bk-faq details:first-child{border-top:0}
.bk-faq summary{font-weight:700;cursor:pointer;font-size:1.0625rem;list-style:none;display:flex;gap:.75rem;align-items:baseline}.bk-faq summary::-webkit-details-marker{display:none}
.bk-faq summary::before{content:"Q";color:var(--point-ink);font-weight:800}
.bk-faq p{margin:.625rem 0 0 1.6rem;font-size:.9375rem;line-height:1.75;color:var(--ink2);word-break:keep-all}
.bk-src ol{padding-left:1.25rem;margin:.5rem 0;columns:2 22rem;column-gap:2rem}.bk-src li{margin:.25rem 0;scroll-margin-top:4rem;break-inside:avoid}
.bk-src li:target{color:var(--ink);background:color-mix(in srgb,var(--point) 12%,transparent);border-radius:6px}
/* 「○○축제, 제대로 즐기는 법」 — 고페스타 가디언즈 코너(회장 2026-11-02 시안 승인 · 2026-11-03 공통 묶음으로 이전)
   원고(pipeline/copy/enjoy/*.html) 안에 있던 스타일을 그대로 옮김 · 허브 토큰(var)만 · 하드코딩 색 0 · 축제 상세 묶음에만 들어간다.
   색 띠·빨강 정리는 site/unslop_detail.css(뒤에 붙음)가 덮는다. */
.enjoy{margin:1.25rem 0;padding:1.125rem 1.125rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card)}
.enjoy-hd{display:flex;gap:.75rem;align-items:flex-start}
.enjoy-av{flex:0 0 auto;width:2.75rem;height:2.75rem;border-radius:var(--p-radius-pill);background:var(--soft);color:var(--point-ink-on-tint);display:grid;place-items:center}
.enjoy-av svg{width:1.5rem;height:1.5rem}
.enjoy-kick{font-size:var(--fs-small);color:var(--point-ink-on-tint);font-weight:800;margin:0}
.enjoy h2{font-size:var(--fs-h3);font-weight:800;line-height:1.35;margin:.125rem 0 .25rem}
.enjoy-hi{font-size:var(--fs-small);line-height:1.7;color:var(--ink);margin:.5rem 0 0}
.enjoy-toc{display:flex;flex-wrap:wrap;gap:.375rem;margin:.875rem 0 .25rem;padding:0;list-style:none}
.enjoy-toc a{display:inline-flex;align-items:center;gap:.25rem;min-height:var(--p-target-min);padding:0 .75rem;border:1px solid var(--line);border-radius:var(--p-radius-pill);font-size:var(--fs-small);color:var(--ink);text-decoration:none;background:var(--paper)}
.enjoy-toc a b{color:var(--point-ink-on-tint)}
.enjoy-ch{border-top:1px solid var(--line);padding:1rem 0 .25rem;scroll-margin-top:5rem}
.enjoy-ch h3{display:flex;gap:.5rem;align-items:baseline;font-size:var(--fs-body);font-weight:800;line-height:1.4;margin:0 0 .5rem}
.enjoy-ch h3 span{flex:0 0 auto;font-size:var(--fs-small);color:var(--on-point);background:var(--point);border-radius:var(--p-radius-pill);min-width:1.5rem;height:1.5rem;display:inline-grid;place-items:center}
.enjoy-ch p{font-size:var(--fs-small);line-height:1.75;color:var(--ink);margin:0 0 .5rem}
.enjoy-ch ul{margin:0 0 .5rem;padding-left:1.1rem}
.enjoy-ch li{font-size:var(--fs-small);line-height:1.7;color:var(--ink);margin:.25rem 0}
.enjoy-ch .tip{background:var(--soft);border-radius:var(--r-md);padding:.625rem .75rem;margin:.5rem 0}
.enjoy-src{font-size:var(--fs-caption,var(--p-type-size-caption));color:var(--ink3);margin:.25rem 0 0}
.enjoy-src a{color:var(--ink3)}
.enjoy-more>summary{list-style:none;cursor:pointer;display:flex;justify-content:center;align-items:center;gap:.375rem;min-height:var(--p-target-min);margin:.75rem 0 0;border:1px solid var(--point);border-radius:var(--p-radius-pill);color:var(--point-ink-on-tint);font-weight:800;font-size:var(--fs-small)}
.enjoy-more>summary::-webkit-details-marker{display:none}
.enjoy-more[open]>summary{display:none}
.enjoy-end{font-size:var(--fs-small);color:var(--ink2);line-height:1.7;border-top:1px solid var(--line);margin:.75rem 0 0;padding-top:.75rem}
.enjoy-past{font-size:var(--fs-small);line-height:1.6;color:var(--ink2);background:var(--sunken);border-radius:var(--r-md);padding:.5rem .75rem;margin:0 0 .75rem}
/* gofesta 디자인 체계 v1 (2026-09-28 · 회장 지시: 저시력자 글자 크기 · 애플 수석디자이너 관점의 일관성 · 내용·구성은 불변)
   모든 페이지 CSS 뒤에 붙어 표현만 덮어쓴다. 원칙: 글자 최소 13px · 본문 17px · 버튼 3등급(채움·연한 채움·텍스트)만 · 테두리 버튼 없음
   · 모서리 토큰 3단(10/14/20) · 그림자 1종 · 강조색 1개 · 8px 격자 · 브라우저 기본 폼 스타일 제거. */

/* ---- 토큰: 허브 site/design_tokens.css 가 정본(hub-a-2026-10-07) ---- */
body{background:var(--surface)}
.nav{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
.match .sel,.match .need,.fb button,.tag.end{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
.match{background:var(--surface)}
.mapbox path,.wmap path{fill:var(--map-land);stroke:var(--surface)}   /* 지도 면은 토큰과 무관하게 연회색 고정 — 흰 배경 전환으로 지도가 사라졌던 문제(2026-09-29) */
.mapbox path:hover{fill:var(--map-land-hover)}.wmap path.has{fill:#a3b889}.wmap path.has:hover{fill:#46602f}
.mapbox path[aria-pressed="true"],.wmap path[aria-pressed="true"]{fill:var(--point);stroke:var(--point-deep)}
.coverrow .visitc{font-size:var(--fs-body);font-weight:400;color:var(--ink3)}
.coverrow .cover b,.coverrow .visitc b{color:var(--point-deep);font-weight:800;font-variant-numeric:tabular-nums}
.top,.secnav{background:var(--surface)}
.searchbar{background:var(--surface);border-bottom:1px solid var(--line)}

html{font-size:17px}
body{line-height:1.6}

/* ---- 글자 위계: 12px 이하 금지 · 캡션은 13px ---- */
.mono,.hint,.card .sub,.card .facts dt,.card .facts dd,.rb .src,.tag,.tile .l,.tile .ch .hint,.tiles .ch .hint,.check .stat,.stat .mono,.fh-meta,
.fh-line .vdate,.owner .mono,.side .k,.side .v,.intro .ch,.check .ch,.sessions .ch,.corner li span,.evbox li span.s,.evbox .h,.dday,.stat .mono,
.pick .mono,.pick ol li .why,.pick ol li .rk,.row .m,.crow .m,.sres .m,.sfilter button,.index button .n,.adlabel,.adnote,.litenote,.fact .k,.gsec .no,.ev,
.entry .mono,.rankcard .why,.mapbox text,.cal .day .n,.pager .info,.month,.stat .mono,.fb button,.fbthanks,.cform label .opt,.cform .agree,.cmsg,.wintro li,.wprep,
.visitc,.search .mono,.card .litenote,.row .d::before,.alert .d,.grp .gl,.mrow .ok,.mrow .miss,.mrow .rate,.bcard .m,.bcard .why,.bh .mono,.entry ol li .why,.card .dday,.card .evbox .h,.card .evbox .h a,.card .evbox li span.s,.card .evbox li a.more-ev,.card .tag,.rows li .kd,.lk a,.ext,.wsel,.crow .tg .mono{font-size:var(--fs-caption)}
.card .t,.rankcard .t,.row .t,.crow .t,.sres .t,.evbox li b,.pick ol li .nm,.tile b,.corner li b{font-size:var(--fs-body)}
.card .facts dd,.card .facts div,.rb .bd,.rb .hd,.rows li,.main .sec p,.intro p,.check dd,.gsec p,.evlist li,.desc,.lead,.hero .lead,.dhead .lead,.cover,.sessions li,.side{font-size:var(--fs-body)}
.intro p.lead,.main .sec p.lead{font-size:var(--fs-lead)}
.hero h1,.dhead h1,.fh h1{font-size:var(--fs-h1);font-weight:800;letter-spacing:-.03em;line-height:1.2}
.sh h2,.main .sec h2,details.fold summary h2,.corner .ch,.tiles .ch{font-size:var(--fs-h2);letter-spacing:-.02em}
.tiles .ch{font-size:var(--fs-h3);text-transform:none;letter-spacing:-.01em;color:var(--ink)}
.intro .ch,.check .ch,.sessions .ch,.side .k,.fact .k{font-size:var(--fs-caption);letter-spacing:.02em;text-transform:none;font-weight:700;color:var(--ink3)}
.card .facts dt{text-transform:none;letter-spacing:0}
.card .facts dd{font-size:var(--fs-caption)}   /* 회장 2026-09-29: 카드 안 장소·요금·시간·문의 내용은 항목명과 같은 크기 */
.nav a{font-size:var(--fs-small)}
@media(max-width:640px){.nav a{font-size:.75rem}}   /* 하단 5탭은 아이콘 위 라벨 — iOS 탭바 관례(12.75px) */
.aux a{font-size:var(--fs-small)}
.search input{font-size:var(--fs-body)}
.search .qbtn{font-size:var(--fs-small);min-height:40px;padding:0 1rem}

/* ---- 버튼 체계: 채움(주) · 연한 채움(보조) · 텍스트(3순위). 테두리 없음 · 높이 50 · 모서리 14 ---- */
button,input,select,textarea{font:inherit;color:inherit}
button{appearance:none;-webkit-appearance:none;border:0;background:none;padding:0;margin:0;cursor:pointer}
.btn,button.btn,a.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:50px;padding:0 1.25rem;border:0;border-radius:var(--r-md);
  font-size:var(--fs-body);font-weight:700;letter-spacing:-.01em;box-shadow:none;background:var(--soft);color:var(--ink);transition:transform .12s var(--ease),background .12s var(--ease)}
.btn:active{transform:scale(.97);background:var(--soft-press)}
.btn.primary{background:var(--fill);color:var(--on-point)}.btn.primary:active{background:var(--fill-press)}
.btn.share{background:var(--soft);color:var(--ink)}
.btn.share::before{content:"";width:18px;height:18px;flex:0 0 auto;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7'/%3E%3Cpath d='M16 6l-4-4-4 4'/%3E%3Cpath d='M12 2v13'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12v7a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1v-7'/%3E%3Cpath d='M16 6l-4-4-4 4'/%3E%3Cpath d='M12 2v13'/%3E%3C/svg%3E") center/contain no-repeat}
.actions{gap:.5rem}
@media(max-width:640px){.actions{display:grid;grid-template-columns:1fr 1fr}.actions .btn{padding:0 .625rem;font-size:var(--fs-small);white-space:nowrap}.actions .btn.share::before{display:none}}
.links a,.more,.feature .txt .go,.pick .more,.cform button[type=submit],button.go{min-height:50px;border:0;border-radius:var(--r-md);box-shadow:none;background:var(--soft);color:var(--ink);font-size:var(--fs-body);font-weight:700;padding:0 1.25rem;display:inline-flex;align-items:center;justify-content:center}
.cform button[type=submit],button.go{background:var(--fill);color:var(--on-point)}
.fb button{background:var(--sunken);color:var(--ink2);border-radius:999px;padding:.4rem .9rem;min-height:40px;font-weight:600}
.pager button{border:0;box-shadow:none;background:var(--surface);color:var(--ink2);font-size:var(--fs-small);min-width:46px;height:46px;border-radius:var(--r-sm)}
.pager button[aria-current="page"]{background:var(--ink);color:var(--on-point)}
.index button,.sfilter button{border:0;box-shadow:none;background:var(--surface);color:var(--ink2);font-size:var(--fs-small);min-height:42px;border-radius:999px}
.index button[aria-pressed="true"],.sfilter button[aria-pressed="true"]{background:var(--ink);color:var(--on-point)}
#dchips button{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line)}
#dchips button[aria-pressed="true"]{background:var(--fill);box-shadow:none;color:var(--on-point)}
.cform .kind span{box-shadow:none;background:var(--surface);border:1.5px solid var(--line);min-height:46px;font-size:var(--fs-small)}
.cform .kind input:checked+span{background:var(--ink);border-color:var(--ink);color:var(--on-point)}
.cform input[type=text],.cform input[type=email],.cform input[type=tel],.cform textarea,input[type=password]{border:1.5px solid var(--line);box-shadow:none;border-radius:var(--r-md);min-height:50px;font-size:var(--fs-body)}
.cform input:focus,.cform textarea:focus{border-color:var(--ink);box-shadow:none;outline:0}

/* ---- 태그·배지: 한 모양 ---- */
.tag{font-size:var(--fs-caption);font-weight:700;padding:.25rem .7rem;border-radius:999px;border:0;line-height:1.3}
.tag.live{background:var(--fill);color:var(--on-point)}.tag.ok{background:#e5efe8;color:var(--ok)}.tag.chk{background:#f8edd3;color:#7d5209}.tag.warn{background:#f9e3de;color:#8a2a1a}.tag.end{background:var(--sunken);color:var(--ink3)}
.dday{font-weight:800}

/* ---- 카드·박스: 모서리·그림자 토큰 ---- */
.card .body,.card .media,.card .ph,.intro,.check,.sessions,.tile,details.fold,.corner li a,.side,.owner,.pick,.crow,.sres a,.entry,.feature,.mapbox,.cal,.wintro,.gsec,.evlist li,.fact,.main .sec,.ad-card a,.ad-top a{border-radius:var(--r-lg);box-shadow:var(--shadow-card)}
.card .media,.card .ph,.card .body{border-radius:var(--r-md)}
.tile{border-radius:var(--r-md)}
.corner{border-radius:var(--r-lg)}.corner li a{border-radius:var(--r-sm);box-shadow:none}
.evbox,.check .stat,.notice,.alert,.house,.sharemsg{border-radius:var(--r-sm)}
.tile .n{font-size:var(--fs-caption);min-width:1.75rem;height:1.75rem}
.tile svg{width:26px;height:26px}
.tile{padding:1rem 1rem .875rem;min-height:7.25rem;gap:.2rem}
details.fold summary{padding:1.125rem 0;min-height:60px}
details.fold{padding:0 1.25rem}
.main .sec,.intro,.check{padding:1.25rem 1.375rem}
.fh-line{gap:.75rem}
.fh-line .per{font-size:var(--fs-lead);font-weight:700}
.rows li{padding:.75rem 0}
.rows li .kd{font-size:var(--fs-caption)}

/* ---- 상단 바 ---- */
.brand{font-size:1.625rem}
.nav .home,a.home{width:46px;height:46px}
.nav a{min-height:46px}

/* ---- 저시력: 대비·포커스·터치 ---- */
.mono,.hint,.card .sub,.tile .l,.card .facts dt{color:var(--ink3)}

a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--fill);outline-offset:3px;border-radius:var(--r-sm)}

/* 주제별 박스(회장 2026-09-29 · 참고 g81 「김해를 ○○다」): 5색 면(16px) 위에 항목마다 흰 미니 카드(12px·옅은 그림자) · 제목 앞 상단 메뉴 아이콘 */
.entry{background:var(--tone-tint);border:0;border-radius:16px;padding:1.125rem 1rem 1rem;box-shadow:none}
.entry>.eh>.mono{color:var(--tone);font-weight:600}
.entry>.eh>h3{display:flex;align-items:center;gap:.5rem;margin:.25rem 0 .75rem}
.entry>.eh>h3 svg{width:22px;height:22px;flex:0 0 auto;color:var(--tone)}
.entry ol{display:flex;flex-direction:column;gap:.5rem;padding:0}
.entry ol li{background:var(--surface);border-radius:12px;box-shadow:0 1px 2px rgb(43 39 35 / .04),0 6px 20px rgb(43 39 35 / .05);padding:0;border-top:0}
.entry ol li a{padding:.625rem .75rem;margin:0;border-radius:12px;min-height:2.75rem}
.entry .more{display:flex;justify-content:center;margin:.75rem 0 0;background:transparent;box-shadow:none;padding-left:0;color:var(--tone);font-size:var(--fs-small)}   /* 가운데 정렬·글자 축소(회장 2026-09-29) */   /* 「순위 전체」는 박스 배경색과 같게(회장 2026-09-29) — 항목 카드와 구분은 얇은 선으로 */
/* TOP 10: 머리(주차·제목)는 진한 고급 회색 면 · 「이번 주 가볼 만한 국내」(첫 박스)는 전체를 그 회색으로 */
/* TOP 10(회장 2026-09-29): 타이틀 회색 박스 철회 — 흰 카드 안에 제목만, 강조는 글자로 */
.pick .head .mono{color:var(--tone);font-weight:700}
.pick .more{align-self:center;background:transparent;box-shadow:none;border:0;padding-left:0;padding-right:0;color:var(--point-deep);font-size:var(--fs-small)}   /* 가운데 정렬·글자 축소(회장 2026-09-29) */   /* 회장 2026-09-29: TOP 10 「자세히 보기 →」 외곽선·배경 없음 */
.pick h3{font-weight:800}
/* 홈 검색창: 제목·규모 문장 아래 */
/* 홈 상단: 제목 위 「—」 장식 삭제(회장) · 검색창은 일반 블록 흐름 + 아래 여백으로 히어로와 절대 겹치지 않게 */
.hhead::before{display:none}
.hhead{margin-top:0}
.searchbar.home{background:transparent!important;border:0!important;box-shadow:none!important;padding:0;width:100%;height:auto!important;margin:.25rem 0 .875rem;position:static;display:block}
.searchbar.home .wrap{background:transparent}
.searchbar.home .search{margin:0 auto}
body[data-page="home"] .hero.hero-swap{margin-top:1.75rem!important;clear:both}
.searchbar.home .wrap{padding:0;width:100%}
.searchbar.home .search{background:var(--surface);border:1.5px solid var(--line);box-shadow:none;max-width:40rem}
.coverrow{display:flex;justify-content:center;align-items:baseline;gap:.4rem;flex-wrap:wrap;margin:0 0 .5rem}   /* 회장 2026-09-29: [누적방문자]와 문장 사이 간격 좁게 */
.coverrow .cover{margin:0}
.coverrow .cover,.coverrow .visitc{font-size:var(--fs-small)}   /* 회장 2026-09-29: 규모 문장 줄은 1~2pt 작게(17→15px) */
/* 조건검색 박스 머리의 규모 한 줄(회장 2026-09-29) */
.match .scope{display:flex;flex-wrap:wrap;justify-content:center;text-align:center;align-items:baseline;gap:.4rem;margin:-.25rem 0 .125rem;padding:0 0 .625rem;border-bottom:1px solid var(--line);font-size:var(--fs-caption);color:var(--ink3)}
.match .scope .cover,.match .scope .visitc{font-size:var(--fs-caption);font-weight:400;color:var(--ink3);margin:0;max-width:none;text-align:left;line-height:1.5}
.match .scope b{color:var(--point-deep);font-weight:800;font-variant-numeric:tabular-nums}

/* 기간·지역 선택 패널 v2(회장 2026-10-01 「상단 메뉴 아래 기간·지역 선택 영역을 고급스럽게」) — 이름표 + 세그먼트(기간) + 격자(지역) */
.fpanel{margin:1.25rem 0 1.75rem;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:.25rem 1.25rem;box-shadow:0 1px 2px rgb(43 39 35 / .04),0 12px 32px -20px rgb(43 39 35 / .22)}
.frow{display:grid;grid-template-columns:4rem minmax(0,1fr);align-items:center;gap:1.25rem;padding:.875rem 0}
.frow+.frow{border-top:1px solid var(--line)}
.flab{font-size:.6875rem;font-weight:800;letter-spacing:.16em;color:var(--ink3);display:flex;align-items:center;gap:.5rem}
.flab::before{content:"";width:.375rem;height:.375rem;border-radius:50%;background:var(--point)}
.fpanel .index{margin:0;padding:0;background:none;border-radius:0;box-shadow:none}
.fpanel .index button{box-shadow:none;transition:background .15s ease,color .15s ease,box-shadow .15s ease}
.fpanel #dchips{display:inline-flex;flex-wrap:nowrap;gap:2px;padding:4px;background:color-mix(in srgb,var(--ink) 7%,var(--surface));border-radius:14px;justify-self:start;max-width:100%}
.fpanel #dchips button{flex:0 0 auto;justify-content:center;align-items:center;background:transparent;box-shadow:none;border-radius:10px;min-height:38px;padding:.45rem 1.125rem;color:var(--ink2);font-weight:600;font-size:.875rem}
.fpanel #dchips button:hover{color:var(--ink)}
.fpanel #dchips button[aria-pressed="true"]{background:var(--surface);color:var(--ink);font-weight:800;box-shadow:0 1px 2px rgb(43 39 35 / .08),0 6px 14px -6px rgb(43 39 35 / .28)}
/* 지역 한 줄(회장 2026-10-02 「지역이 두 줄로 공간을 고정 차지하는 건 낭비 — PC 에서 한 줄로」): 격자(칸 최소 5.5rem → 한 줄 11개) 대신 글자 크기 칩을 한 줄로 · 남는 폭은 고르게 나눔 · 좁은 PC 는 꺾지 않고 가로 밀기 */
.fpanel #chips{display:flex;flex-wrap:nowrap;gap:2px;overflow-x:auto;scrollbar-width:thin}
.fpanel #chips button{flex:1 0 auto;display:flex;justify-content:center;align-items:baseline;gap:.25rem;white-space:nowrap;background:transparent;border-radius:10px;min-height:38px;padding:.4rem .3rem;color:var(--ink);font-weight:600;font-size:.8125rem}
.fpanel #chips button:hover{background:color-mix(in srgb,var(--ink) 6%,var(--surface))}
.fpanel #chips button .n{background:none;padding:0;font-size:.6875rem;font-weight:600;color:var(--ink3);font-variant-numeric:tabular-nums}
.fpanel #chips button[aria-pressed="true"]{background:var(--ink);color:var(--on-point)}
.fpanel #chips button[aria-pressed="true"] .n{background:none;color:rgb(255 255 255 / .72)}
.fpanel #chips button:first-child{font-weight:800}
@media(max-width:640px){
.fpanel{margin:1rem 0 1.25rem;padding:.25rem 0;border-radius:18px}
.frow{grid-template-columns:1fr;gap:.625rem;padding:.75rem 0}
.flab{padding:0 1rem}
.fpanel #dchips{display:flex;margin:0 1rem;justify-self:stretch}
.fpanel #dchips button{flex:1 1 0;padding:.45rem .25rem;font-size:.8125rem;white-space:nowrap}
.fpanel #chips{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:.375rem;padding:0 1rem;margin:0;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
.fpanel #chips::-webkit-scrollbar{display:none}
.fpanel #chips button{flex:0 0 auto;background:color-mix(in srgb,var(--ink) 6%,var(--surface))}
}

/* 테마 축제 박스 통일(회장 2026-10-01 「첫 줄이 1줄·2줄로 달라 레이아웃이 어긋난다」): 머리 기준 1줄 · 축제 줄 = 이름 1줄 + 설명 1줄 고정 높이 */
.pick .head{min-width:0}
.pick .head .mono{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.picks:not(.home10) .pick ol li{align-items:start}
.picks:not(.home10) .pick ol li .rk{line-height:1.5rem}
.picks:not(.home10) .pick ol li .nm{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5rem}
.picks:not(.home10) .pick ol li .why{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25rem;height:1.25rem}
.picks.home10 .pick .head{min-height:0}   /* 머리 기준이 한 줄이 되어 두 줄 자리 확보 불필요(2026-10-01) */
/* 테마 박스 머리 두 줄 고정(회장 2026-10-01 「진행 중이거나 30일 안… / 곧 열리는 순은 다음 줄로」): 1줄 기준 · 2줄 순서, 각 줄은 넘치면 말줄임 */
.pick .head{display:flex;flex-direction:column;align-items:stretch;gap:.125rem}
.pick .head .mono.ord{font-weight:500;color:var(--ink3)}
.pick .head .mono.ord:empty::before{content:"\00a0"}
/* 이름표 제거(회장 2026-10-01): 행은 버튼만 */
.frow{grid-template-columns:minmax(0,1fr)}
@media(max-width:640px){.fpanel #dchips{margin:0 1rem}}

/* ---- 결함 수정 B5~B8 (hub-b-2026-10-07, 근거 허브 ---- */
/* B5 가로 스크롤: 달력 그리드 칸의 min-width:auto 가 지도 상자를 밀어냈다 · 긴 축제명(keep-all)이 카드 밖으로 나갔다 */
.calwrap>div{min-width:0}
.card .t{overflow-wrap:anywhere}
/* B6 글자 바닥 12px: 실측 11.69px(.6875rem) 였던 라벨·배지 → 12.75px */
.lcard .tx .m .tag,.spot .tp b,.spot .cw b,.spot .ss,.dtop .poster .cap,.fpanel #chips button .n,.index button .n,.flab,.card .facts dt,.row .d::before,.crow .d::before,.fact .k,.side .k,.alert .d,.rows .kd,.bcard .m,.bcard .why,.bh .mono,.journey .jearly,.journey .jk{font-size:.75rem}
/* B7 탭 타깃 24px: 이벤트 상자 링크(22px)·갱신 기준 링크(21px) */
.evbox .h a{display:inline-flex;align-items:center;min-height:24px}
.check .stat a.upd{display:inline-block;min-height:24px;line-height:24px}
/* B8 포커스 표시: outline:0 이던 검색 입력·선택 상자. 비활성 페이지 버튼은 투명도 대신 색으로(대비 1.77:1 → 6.4:1) */
.search input:focus-visible{outline:2px solid var(--fill);outline-offset:2px;border-radius:4px}
.match .sel select:focus-visible{outline:2px solid var(--fill);outline-offset:2px}
.pager button:disabled{opacity:1;color:var(--ink3)}

/* ── 모바일 시안 C (디자인 허브 hub-c-2026-10-07 · 회장 확정 2026-10-07) ──────────────────────
   폭 640px 이하만 바뀐다. PC 에서는 줄바꿈·탭 줄·접기 버튼을 숨기는 규칙만 작동한다.
   선택자 앞 `html body` = 이 층이 ds 뒤에 오는 페이지별 <style> 에도 이기게(교훈 2026-10-07).
   색·크기는 토큰만(하드코딩 색 0). 원본: 허브 */
.mbr,.hseg,.needtg{display:none}
.hempty{margin:0;color:var(--ink3);font-size:var(--fs-small)}
.hempty a{color:var(--point-ink);font-weight:600}
@media(max-width:640px){
  /* 1 머리말(모든 페이지): 1줄 로고+일정·테마·버킷은 흘러가고, 2줄 주제 메뉴 5칸만 고정 */
  html body{--navh:57px;--row1h:52px}
  html body .top{position:sticky;top:calc(-1 * var(--row1h));z-index:30;padding:0;background:var(--surface);border-bottom:1px solid var(--line)}
  html body .top .wrap{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"brand aux" "nav nav";align-items:center;column-gap:10px;row-gap:0;padding:0 16px}
  html body .top .brand{grid-area:brand;height:var(--row1h);align-items:center;white-space:nowrap;flex:none}
  html body .top .navwrap{display:contents}
  html body .top .home{display:none}
  html body .top .aux{grid-area:aux;width:auto;min-width:0;justify-self:end;justify-content:flex-end;flex-wrap:nowrap;gap:0;margin:0}
  html body .top .aux a{flex:none;white-space:nowrap;padding:0 .5rem;min-height:44px;font-size:var(--fs-caption);color:var(--ink2)}
  html body .top .nav{grid-area:nav;display:grid;grid-template-columns:repeat(5,minmax(0,64px));justify-content:center;column-gap:6px;height:var(--navh);background:transparent;box-shadow:none;border-radius:0;padding:0;margin:0;overflow:visible;max-width:none;width:100%}
  html body .top .nav a{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:44px;height:100%;padding:0;border-radius:0;background:transparent;box-shadow:none;font-size:.75rem;font-weight:600;color:var(--ink2);letter-spacing:-.01em;white-space:nowrap;min-width:0}
  html body .top .nav a svg{width:22px;height:22px;color:var(--ink2)}
  html body .top .nav a[aria-current="page"],html body .top .nav a[aria-current="page"] svg{color:var(--point-deep);background:transparent;box-shadow:none}
  /* 좁은 폰: 로고와 일정·테마·버킷이 한 줄에 들어가게 단계적으로 줄인다(줄바꿈·넘침 0 — 회장 2026-10-08) */
  @media(max-width:399px){html body .top .aux a{padding:0 .3125rem;gap:.1875rem}html body .top .aux a svg{width:14px;height:14px}html body .top .brand{font-size:1.375rem}html body .top .wrap{column-gap:6px}}
  @media(max-width:359px){html body .top .aux a svg{display:none}html body .top .aux a{padding:0 .375rem}html body .top .brand{font-size:1.25rem}html body .top .nav{column-gap:2px}}
  @media(max-width:329px){html body .top .aux a{padding:0 .25rem;font-size:.75rem}html body .top .brand{font-size:1.125rem}}
  /* 다른 페이지에서 화면 위에 붙던 바는 메뉴 줄 밑으로 */
  html body .dnav,html body .secnav,html body .bk-nav{top:var(--navh)}

  /* 2 홈 첫 화면 */
  html body .mbr{display:inline}
  html body .hhead{white-space:normal;text-align:center;font-size:var(--fs-h2);line-height:1.35;margin:1.25rem 0 .375rem}
  html body .hlead{text-align:center;white-space:nowrap;font-size:var(--fs-small);color:var(--ink2);margin:0 0 1.25rem}
  @media(max-width:359px){html body .hlead{font-size:.875rem}}
  @media(max-width:329px){html body .hlead{white-space:normal}}
  html body .searchbar.home{margin:0 0 .75rem}
  html body .searchbar.home .search{border:1.5px solid var(--ink);border-radius:var(--r-md);min-height:52px;padding:0 .375rem 0 1rem}
  html body .searchbar.home .search input{font-size:var(--fs-body)}
  html body .searchbar.home .search .qbtn{min-height:40px;padding:0 1rem;border-radius:var(--r-sm);font-size:var(--fs-small)}
  html body .hero-swap .board{display:none}
  html body .match{display:grid;grid-template-columns:1fr 1fr;gap:.875rem .5rem;padding:1rem;border-radius:var(--r-lg);background:var(--paper-warm,var(--surface));box-shadow:inset 0 0 0 1px var(--line)}
  html body .match>*{grid-column:1/-1}
  html body .match>.grp:has(.sel){grid-column:auto;padding:0;min-height:0;flex-direction:column;align-items:stretch;gap:0}
  html body .match>.grp:has(.sel) .gl{position:static;height:auto;width:auto;font-size:.75rem;padding:0 0 .25rem .25rem}
  html body .match .sel{min-height:56px;padding:0 2.5rem 0 .875rem;border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line2,var(--line));font-size:var(--fs-body)}
  html body .match .grp{padding-left:2.75rem}
  html body .match .need{min-height:36px;padding:0 .75rem;font-size:var(--fs-caption)}
  html body .needtg{display:none}
  html.cjs body .needtg{display:flex;align-items:center;gap:.375rem;width:100%;min-height:44px;padding:0;border:0;background:transparent;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink2);cursor:pointer;text-align:left}
  html.cjs body .needtg::after{content:"";margin-left:auto;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .2s var(--ease)}
  html.cjs body .needtg[aria-expanded="true"]::after{transform:rotate(-135deg) translateY(-2px)}
  html.cjs body .needtg .n{font-size:.75rem;color:var(--ink3);box-shadow:inset 0 0 0 1px var(--line);border-radius:999px;padding:0 .4375rem;background:var(--surface)}
  html.cjs body .needg:not(.open){display:none}
  html body .match .grp.act{margin-top:0;padding-top:0;padding-left:0;border-top:0}
  html body .match .mbtn{min-height:52px;background:var(--fill);color:var(--on-point);box-shadow:none;font-weight:700;font-size:var(--fs-body);border-radius:var(--r-md)}

  /* 3 탭: 오늘의 축제 / NOW 이벤트 / 테마 축제 (자바스크립트가 있을 때만) */
  html body .htabs{display:flex;flex-direction:column}
  html body .htabs>.hentries{display:none}
  html.cjs body .hseg{display:flex;justify-content:space-between;align-items:stretch;gap:0;position:sticky;top:var(--navh);z-index:20;order:0;margin:2rem -16px 1rem;padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line)}
  html.cjs body .hseg button{min-height:44px;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:transparent;font:inherit;font-size:var(--fs-caption);font-weight:600;color:var(--ink3);cursor:pointer;white-space:nowrap;padding:0 .125rem;min-width:0;flex:0 0 auto}
  @media(max-width:359px){html.cjs body .hseg button{font-size:.75rem;letter-spacing:-.02em}}
  html.cjs body .hseg button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink);font-weight:800}
  html.cjs body .htabs>#now{order:1}
  html.cjs body .htabs>#events{order:2}
  html.cjs body .htabs>#trend{order:3}
  html.cjs body .htabs>#picks{order:4}
  html.cjs body .htabs>.adsec,html.cjs body .htabs>aside{order:4}
  html.cjs body .htabs>section[id]{margin-top:0}
  html.cjs body .htabs[data-active="now"]>#events,html.cjs body .htabs[data-active="now"]>#trend,html.cjs body .htabs[data-active="now"]>#picks,
  html.cjs body .htabs[data-active="events"]>#now,html.cjs body .htabs[data-active="events"]>#trend,html.cjs body .htabs[data-active="events"]>#picks,
  html.cjs body .htabs[data-active="trend"]>#now,html.cjs body .htabs[data-active="trend"]>#events,html.cjs body .htabs[data-active="trend"]>#picks,
  html.cjs body .htabs[data-active="picks"]>#now,html.cjs body .htabs[data-active="picks"]>#events,html.cjs body .htabs[data-active="picks"]>#trend{display:none}
  /* 트렌드 패널(hub-col-2026-10-09): 탭 안에서는 머리 제목이 숨으므로 서명 한 줄만 남는다 · 카드 4장은 2×2(column.css .home4) */
  html.cjs body .htabs>#trend>.sh .n{display:block;color:var(--ink3);font-size:var(--fs-caption);margin:0 0 .5rem}
  html.cjs body .htabs>section[id]>.sh h2,html.cjs body .htabs>section[id]>.sh::before{display:none}
  html.cjs body .htabs>section[id]>.sh{margin:0 0 .25rem}
  html.cjs body .htabs>section[id]>.sh .n{margin-left:0}

  /* 3-1 오늘의 축제 · NOW 이벤트: 첫 1곳(오늘)은 크게, 나머지는 한 줄 */
  html body .htabs .grid{display:block}
  html body .htabs .grid .card{--pw:64px;display:grid;grid-template-columns:64px minmax(0,1fr);gap:.875rem;padding:.875rem 0;border-top:1px solid var(--line)}
  html body .htabs .grid .card:first-child{border-top:0}
  html body .htabs .grid .card .media,html body .htabs .grid .card .ph,html body .htabs .grid .card .namecard{width:64px;height:64px;border-radius:var(--r-md);box-shadow:none}
  html body .htabs .grid .card .media img{object-fit:cover;object-position:top}
  html body .htabs .grid .card .body{background:transparent;box-shadow:none;padding:0;border-radius:0}
  html body .htabs .grid .card .info{display:grid;gap:1px;padding:0}
  html body .htabs .grid .card .meta{display:flex;justify-content:space-between;gap:.5rem;order:2}
  html body .htabs .grid .card .t{order:1;font-size:var(--fs-body);line-height:1.4;font-weight:700}
  html body .htabs .grid .card .sub{order:3}
  html body .htabs .grid .card .facts{order:4;display:block;margin:.125rem 0 0;padding:0;border:0;font-size:var(--fs-caption);line-height:1.5}
  html body .htabs .grid .card .facts div,html body .htabs .grid .card .facts dd{display:inline;padding:0;border:0;margin:0}
  html body .htabs .grid .card .facts [data-k="시간"]::before{content:" · ";color:var(--ink3)}
  html body .htabs .grid .card .facts dt{display:none}
  html body .htabs .grid .card .facts dd{margin:0;color:var(--ink2)}
  html body .htabs .grid .card .facts [data-k="장소"],html body .htabs .grid .card .facts [data-k="문의"],html body .htabs .grid .card .facts [data-k="출처"]{display:none}
  html body .htabs .grid .card .litenote,html body .htabs .grid .card .evbox{display:none}
  html body .htabs #events .grid .card .why{order:4;font-size:var(--fs-caption);color:var(--tone);font-weight:600}
  html body .htabs #events .grid .card .facts{display:none}
  /* 오늘의 축제 첫 카드: 크게 */
  html body .htabs #now .grid .card:first-child{display:block;padding:0 0 .5rem;border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px var(--line);overflow:hidden;margin-bottom:.25rem}
  html body .htabs #now .grid .card:first-child .media,html body .htabs #now .grid .card:first-child .ph,html body .htabs #now .grid .card:first-child .namecard{width:100%;height:auto;aspect-ratio:4/3;border-radius:0}
  html body .htabs #now .grid .card:first-child .body{padding:.875rem 1rem .5rem}
  html body .htabs #now .grid .card:first-child .t{font-size:var(--fs-h3)}
  html body .htabs #now .grid .card:first-child .facts div{display:grid;gap:0}
  html body .htabs #now .grid .card:first-child .facts dd{display:block}
  html body .htabs #now .grid .card:first-child .facts{display:grid;grid-template-columns:1fr 1fr;gap:.5rem .75rem;margin-top:.5rem}
  html body .htabs #now .grid .card:first-child .facts dt{display:block;font-size:.75rem}
  html body .htabs #now .grid .card:first-child .facts [data-k="시간"]::before{content:none}
  html body .htabs #now .grid .card:first-child .facts dd{font-size:var(--fs-small);font-weight:600;color:var(--ink)}
  html body .htabs #now .grid .card:first-child .facts [data-k="장소"]{display:block;grid-column:1/-1}
  html body .htabs .more{margin-top:1rem}

  /* 3-2 테마 축제: 접는 목록(첫 목록만 펼침) · 목록당 6곳 */
  html body .htabs #picks .picks{display:block}
  html body .htabs #picks .pick{background:transparent;box-shadow:none;border-radius:0;padding:0;border-bottom:1px solid var(--line)}
  html.cjs body .htabs #picks .pick h3{position:relative;margin:0;padding:1rem 2rem .25rem 0;cursor:pointer;font-size:var(--fs-body)}
  html.cjs body .htabs #picks .pick h3::after{content:"";position:absolute;right:.5rem;top:1.375rem;width:8px;height:8px;border-right:1.5px solid var(--ink3);border-bottom:1.5px solid var(--ink3);transform:rotate(45deg)}
  html.cjs body .htabs #picks .pick.open h3::after{transform:rotate(-135deg);top:1.625rem}
  html body .htabs #picks .pick .head{order:2}
  html body .htabs #picks .pick{display:flex;flex-direction:column;padding-bottom:.75rem}
  html body .htabs #picks .pick h3{order:1}
  html body .htabs #picks .pick ol{order:3}
  html body .htabs #picks .pick .more{order:4}
  html body .htabs #picks .pick ol li:nth-child(n+7){display:none}
  html.cjs body .htabs #picks .pick:not(.open) ol,html.cjs body .htabs #picks .pick:not(.open) .more{display:none}
  html.cjs body .htabs #picks .pick .head .ord{display:none}
  html body .htabs #picks>.more{display:none}

  /* 4 버킷 축제 2×2: 포스터 + 나라·도시 + 축제명 */
  html body #world .lgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem .75rem}
  html body #world .lgrid>.lcard:not([hidden]):nth-child(n+5){display:none}
  html body #world .lcard .media{aspect-ratio:3/4}
  html body #world .lcard .media img{object-fit:cover;object-position:top}
  html body #world .lcard .hk,html body #world .lcard .m{display:none}
  html body #world .lcard b{font-size:var(--fs-small);line-height:1.4}
  html body #world>.sh .n{display:none}
}

/* ── 모바일 홈 외 페이지 1차 P5·P6·P8 (디자인 허브 hub-d-2026-10-08 · 회장 「권장순서 1번 진행해」 2026-10-08) ──
   폭 640px 이하만. P5 메뉴 5종·오늘의 축제 = 시안 C 한 줄 목록 · P6 축제 찾기 20곳씩·코드 숨김 · P8 테마·버킷 머리 설명 2줄·잘림 없앰.
   색·크기는 토큰만. 원본: 허브 */
.leadmore,.smore{display:none}
@media(max-width:640px){
  /* P5 한 줄 목록(메뉴 5종 · /now/) */
  html body .mrows .grid{display:block}
  html body .mrows .grid .card{--pw:64px;display:grid;grid-template-columns:64px minmax(0,1fr);gap:.875rem;padding:.875rem 0;border-top:1px solid var(--line)}
  html body .mrows .grid .card:first-child{border-top:0}
  html body .mrows .grid .card .media,html body .mrows .grid .card .ph,html body .mrows .grid .card>.namecard,html body .mrows .grid .card .media-link>.namecard{width:64px;height:64px;border-radius:var(--r-md);box-shadow:none;overflow:hidden}
  html body .mrows .grid .card .namecard{font-size:.75rem}
  html body .mrows .grid .card .media img{object-fit:cover;object-position:top}
  html body .mrows .grid .card .body{background:transparent;box-shadow:none;padding:0;border-radius:0;display:grid;grid-template-columns:minmax(0,1fr);gap:.375rem;min-width:0}
  html body .mrows .grid .card .evbox li .s{white-space:normal;overflow:visible;text-overflow:clip;color:var(--ink3)}
  html body .mrows .grid .card .info{display:grid;gap:1px;padding:0}
  html body .mrows .grid .card .meta{display:flex;justify-content:space-between;gap:.5rem;order:2}
  html body .mrows .grid .card .t{order:1;font-size:var(--fs-body);line-height:1.4;font-weight:700}
  html body .mrows .grid .card .sub{order:3}
  html body .mrows .grid .card .why{order:4;font-size:var(--fs-caption);color:var(--tone);font-weight:600}
  html body .mrows .grid .card .facts{order:5;display:block;margin:.125rem 0 0;padding:0;border:0;font-size:var(--fs-caption);line-height:1.5}
  html body .mrows .grid .card .facts div,html body .mrows .grid .card .facts dd{display:inline;padding:0;border:0;margin:0}
  html body .mrows .grid .card .facts dt{display:none}
  html body .mrows .grid .card .facts dd{color:var(--ink2)}
  html body .mrows .grid .card .facts [data-k="시간"]::before{content:" · ";color:var(--ink3)}
  html body .mrows .grid .card .facts [data-k="장소"],html body .mrows .grid .card .facts [data-k="문의"],html body .mrows .grid .card .facts [data-k="출처"]{display:none}
  html body .mrows .grid .rankcard .facts{display:none}
  html body .mrows .grid .card .litenote{display:none}
  /* 포스터 없는 축제의 글자 포스터: 64px 칸에서는 이름만 */
  html body :is(.mrows,.htabs) .grid .card:not(:first-child) .typo,html body .mrows .grid .card .typo{display:flex;align-items:center;justify-content:center;padding:.25rem;text-align:center}
  html body :is(.mrows,.htabs) .grid .card .typo::before,html body :is(.mrows,.htabs) .grid .card .typo::after{display:none}
  html body :is(.mrows,.htabs) .grid .card .typo .tp-k,html body :is(.mrows,.htabs) .grid .card .typo .tp-d,html body :is(.mrows,.htabs) .grid .card .typo .tp-m{display:none}
  html body :is(.mrows,.htabs) .grid .card .typo .tp-n{position:static;font-size:.75rem;line-height:1.25;font-weight:700;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:0;word-break:keep-all}
  /* 이벤트·안내 상자는 첫 1개만, 상자 없이 한 줄 */
  html body .mrows .grid .card .evbox{background:transparent;box-shadow:none;border:0;padding:0;margin:0;border-radius:0}
  html body .mrows .grid .card .evbox .h{display:none}
  html body .mrows .grid .card .evbox ul{margin:0;padding:0}
  html body .mrows .grid .card .evbox li{border:0;padding:0;margin:0}
  html body .mrows .grid .card .evbox li:nth-child(n+2){display:none}
  html body .mrows .grid .card .evbox li a,html body .mrows .grid .card .evbox li .row{display:flex;gap:.375rem;align-items:center;padding:0;min-height:32px;background:transparent;box-shadow:none;font-size:var(--fs-caption);color:var(--ink2)}
  html body .mrows .grid .card .evbox li b{font-size:var(--fs-caption);font-weight:600;white-space:normal;overflow:visible;text-overflow:clip}
  html body .mrows .grid .card .evbox li .dot{display:none}

  /* P6 축제 찾기: 내부 코드 숨김(회장 2026-10-03 「고객에게 불필요」) · 20곳씩 */
  html body .sres .fc{display:none}
  html body .smore{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;margin:.75rem 0 0;border:0;border-radius:var(--r-md);background:var(--soft);color:var(--ink);font:inherit;font-size:var(--fs-small);font-weight:600;cursor:pointer}
  html body .smore[hidden]{display:none}

  /* P8 테마·버킷: 머리 설명 2줄 + 더 읽기 · 목록 설명·축제명 자르지 않음 */
  html body .dhead .lead.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  html body .leadmore{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:transparent;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--point-ink);cursor:pointer}
  html body .leadmore[hidden]{display:none}
  html body .picks:not(.home10) .pick ol li .why,html body .picks:not(.home10) .pick ol li .nm{white-space:normal;overflow:visible;text-overflow:clip;height:auto}
  html body .pick .head .mono{white-space:normal;overflow:visible;text-overflow:clip}
  html body .lcard .tx b{white-space:normal;overflow:visible;text-overflow:clip}
}

/* ── 모바일 축제 상세 시안 A 정돈형 (디자인 허브 hub-e-2026-10-08 · 회장 「A안이 좋아」 2026-10-08) ──
   폭 640px 이하 · 모든 상세(실험 표본 14곳 포함 — 회장 2026-10-08 hub-g). 「한눈에 보기」가 없는 표본은 「출발 전 확인」 표를 남긴다. 내용 HTML 은 지우지 않고 숨기거나 접기만.
   원본: 허브 */
.fthumb,.emore,.dmore{display:none}
@media(max-width:640px){
  /* P2 포스터: 제목 옆 작은 그림, 아래 큰 포스터는 숨김 */
  html body[data-page="festival"] .fh:has(.fthumb){display:grid;grid-template-columns:88px minmax(0,1fr);column-gap:14px;align-items:start}
  html body[data-page="festival"] .fh:has(.fthumb)>*{grid-column:2;min-width:0}
  html body[data-page="festival"] .fh .fthumb{display:block;grid-column:1;grid-row:1/span 4;width:88px;height:124px;object-fit:cover;object-position:top;border-radius:var(--r-md);box-shadow:0 0 0 1px var(--line);margin-top:2px}
  html body[data-page="festival"] .fh:has(.fthumb)>.actions,html body[data-page="festival"] .fh:has(.fthumb)>.sharemsg,html body[data-page="festival"] .fh:has(.fthumb)>.house{grid-column:1/-1}
  html body[data-page="festival"] .fh h1{font-size:var(--fs-h2);line-height:1.3}
  html body[data-page="festival"] .fh:has(.fthumb)~.dtop .poster{display:none}

  /* P1 같은 정보 한 번만: 한눈에 보기(표) 하나 + 비 예보 알림 + 일정 확인 상태 */
  html body[data-page="festival"]:has(.glance) .check>.ch,html body[data-page="festival"]:has(.glance) .check>dl{display:none}
  html body[data-page="festival"]:has(.glance) .check{padding-top:.75rem;padding-bottom:.75rem}
  html body[data-page="festival"] .check .stat{margin:0}
  html body[data-page="festival"] .glance>dl>dd>.cl.clamp4,html body[data-page="festival"] .check>dl dd>.cl.clamp4{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  html body[data-page="festival"] .emore{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:none;font:inherit;font-size:var(--fs-caption);font-weight:600;color:var(--point-ink);cursor:pointer}

  /* 날씨: 10일 가로 넘김 */
  html body[data-page="festival"] #weather>ul{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:4px 16px 6px;scroll-snap-type:x proximity}
  html body[data-page="festival"] #weather>ul::-webkit-scrollbar{display:none}
  html body[data-page="festival"] #weather>ul>li{flex:0 0 108px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;border:0;border-radius:var(--r-md);background:var(--sunken,var(--surface));box-shadow:inset 0 0 0 1px var(--line);scroll-snap-align:start;font-size:var(--fs-caption)}
  html body[data-page="festival"] #weather>ul>li .half{display:flex;flex-wrap:wrap;gap:0 4px;align-items:baseline;width:100%}
  html body[data-page="festival"] #weather>ul>li .half i{font-style:normal;color:var(--ink3);font-size:.75rem}

  /* P3 여정 체크리스트: 단계는 접고 제목 옆에 확인 수 */
  html body[data-page="festival"] ol.jst>li.jcol>:not(b){display:none}
  html body[data-page="festival"] ol.jst>li>b[role="button"]{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}
  html body[data-page="festival"] ol.jst>li>b[role="button"]::after{content:"";margin-left:auto;width:8px;height:8px;border-right:1.5px solid var(--ink3);border-bottom:1.5px solid var(--ink3);transform:rotate(45deg) translateY(-2px)}
  html body[data-page="festival"] ol.jst>li:not(.jcol)>b[role="button"]::after{transform:rotate(-135deg) translateY(-2px)}
  html body[data-page="festival"] ol.jst .jcnt{font-size:.75rem;font-weight:600;color:var(--ink3)}
  html body[data-page="festival"] ol.jst .jcnt .q{color:var(--point-ink)}

  /* P4 목록 3개씩 + 더 보기 */
  html body[data-page="festival"] .sec ul.rows>li[data-hm]{display:none}
  html body[data-page="festival"] .dmore{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;margin:6px 0 0;border:0;border-radius:var(--r-md);background:var(--soft);font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink);cursor:pointer}
  html body[data-page="festival"] .sec ul.rows li .rb{min-width:0}
  html body[data-page="festival"] .sec ul.rows li .hd a,html body[data-page="festival"] .sec ul.rows li .bd{overflow-wrap:anywhere}

  /* 목록 줄: 이름표(kd)는 제목 위 칩으로, 글은 전체 폭 */
  html body[data-page="festival"] .sec ul.rows>li{display:block}
  html body[data-page="festival"] .sec ul.rows>li>.kd{display:inline-block;max-width:100%;white-space:normal;margin:0 0 4px;line-height:1.35}
  html body[data-page="festival"] .sec ul.rows>li>.rb{width:100%}
  /* 포스터 없는 축제의 큰 글자 카드는 숨김 */
  html body[data-page="festival"] .dtop .poster:has(.namecard){display:none}
  /* 소개(표본): 첫 문단만 + 더 읽기 */
  html body[data-page="festival"] #intro.icol>p:not(:first-of-type){display:none}
  html body[data-page="festival"] .imore{display:inline-flex;align-items:center;min-height:44px;padding:0;border:0;background:none;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--point-ink);cursor:pointer}
  /* 즐기는 법: 항목 접기 */
  html body[data-page="festival"] ol.guide>li.gcol>:not(.gh){display:none}
  html body[data-page="festival"] ol.guide>li>.gh[role="button"]{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}
  html body[data-page="festival"] ol.guide>li>.gh[role="button"]::after{content:"";margin-left:auto;width:8px;height:8px;border-right:1.5px solid var(--ink3);border-bottom:1.5px solid var(--ink3);transform:rotate(45deg) translateY(-2px)}
  html body[data-page="festival"] ol.guide>li:not(.gcol)>.gh[role="button"]::after{transform:rotate(-135deg) translateY(-2px)}
}

/* ── 모바일 2차 P7·P9·P10 + 광고 가로 스크롤 0 (디자인 허브 hub-f-2026-10-08 · 회장 「순서대로 진행해. 광고 배너는 좌우로 스크롤 없이」) ──
   광고 칸 세로 쌓기는 폭 900px 이하(지금 가로 넘김이 생기는 범위 그대로), 나머지는 640px 이하만.
   원본: 허브 */
.maptg{display:none}
/* 광고: 홈 가운데 3칸 — 좌우 넘김 없이 세로로 쌓는다(세 칸 모두 보임 · 노출 집계 그대로) */
@media(max-width:900px){
  html body .ad-trio:not(.ad-side){grid-template-columns:minmax(0,1fr);grid-auto-flow:row;grid-auto-columns:auto;overflow:visible;scroll-snap-type:none;gap:.5rem;padding-bottom:0}
}
@media(max-width:640px){
  html body .ad-trio:not(.ad-side) a{height:auto;min-height:88px;padding:.625rem 2.75rem .625rem .875rem}
  html body .ad-trio:not(.ad-side) a.tv0 .tthumb{height:68px}
  html body .ad-trio:not(.ad-side) a.tv2 .adt{align-items:flex-start}
  html body .ad-trio:not(.ad-side) a.tv2 .chips{justify-content:flex-start}
  html body .ad-trio:not(.ad-side) a.tv2 .chips i.more{display:block;min-height:0;margin:0;padding:.12rem .25rem;border-radius:0;font-size:.75rem;font-weight:600}
  html body section.adsec{margin-top:1.5rem}

  /* P9 상단 광고 띠(홈 외): 얇게 — 포스터 작게, 제목·일정 두 줄, 버튼은 작은 원 */
  html body:not([data-page="home"]) .ad-top a{min-height:0;gap:.625rem;padding:.5rem 2.75rem .5rem .625rem;border-radius:var(--r-md)}
  html body:not([data-page="home"]) .ad-top .thumb{height:56px}
  html body:not([data-page="home"]) .ad-top .adt{gap:0}
  html body:not([data-page="home"]) .ad-top .adt b{font-size:var(--fs-small);white-space:normal;line-height:1.35}
  html body:not([data-page="home"]) .ad-top .adt span{font-size:.75rem;line-height:1.4}
  html body:not([data-page="home"]) .ad-top .adt .s{display:none}
  html body:not([data-page="home"]) .ad-top .adlabel{top:.375rem;right:.5rem;font-size:.75rem;padding:0 .375rem}
  html body:not([data-page="home"]) .ad-top .adcta{position:absolute;right:.5rem;bottom:.5rem;width:30px;height:30px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.875rem}
  html body:not([data-page="home"]) .ad-top .adcta .w{display:none}
  html body:not([data-page="home"]) main.wrap>aside.ad-top{margin-bottom:1rem}

  /* P7 축제 일정: 달력 칸이 좁은 폭에서 넘치지 않게 · 지도는 접기(아래 지역 칩으로 같은 선택) */
  html body .cal{padding:.75rem .625rem .875rem}
  html body .cal .days{gap:3px}
  html body .cal .day{min-height:0}
  html body[data-page="calendar"] .calwrap>div:first-child:has(.mapbox):not(.mapopen){display:none}
  html body[data-page="calendar"] .maptg{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:44px;margin:0 0 .75rem;padding:0 1rem;border:0;border-radius:var(--r-md);background:var(--soft);font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink);cursor:pointer}
  html body[data-page="calendar"] .maptg::after{content:"";width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
  html body[data-page="calendar"] .maptg[aria-expanded="true"]::after{transform:rotate(-135deg) translateY(-2px)}

  /* P10 바닥글: 여백 줄이고 모음 링크는 작은 칩으로(줄바꿈, 가로 넘김 없음) */
  html body footer{margin-top:2.5rem;padding:1.25rem 1rem 2rem;gap:.5rem;line-height:1.6}
  html body footer .links{gap:6px;margin:.375rem 0 0!important}
  html body footer .links a{min-height:36px;padding:0 .75rem;border-radius:999px;font-size:var(--fs-caption);font-weight:600}
}

/* ── 디자인 허브 hub-g-2026-10-08 (회장 「1번부터 4번까지 진행」) ──────────────────────────
   1 태블릿(641~1023px) 상단 광고: 출연진 칸이 27~82px 로 좁아져 세로로 쌓이며 173~237px 이 되던 것 → 출연진 숨김(PC 1024px 이상 그대로)
   3 누르는 칸 44px: 축제 일정 날짜 칸 · 바닥글 모음 링크(모바일)
   4 광고 버튼 「공식 홈페이지」: 브랜드 주황 바탕 그대로, 글자를 큰 글자 기준(19px 굵게)으로 — APCA Lc 53.3 ≥ 큰 글자 45(본문 15px 은 60 필요)
   원본: 허브 */
@media(min-width:641px) and (max-width:1023px){
  html body .ad-top .lineup{display:none}
}
@media(min-width:641px){
  html body .ad-top .adcta{font-size:1.1875rem;font-weight:800}
}
@media(max-width:640px){
  html body .cal .day{min-height:44px}
  html body footer .links a{min-height:44px}
}

/* ── 축제 상세 개편 CSS 층 (디자인 허브 hub-h-2026-10-09 · 회장 「오늘 마무리」 2026-10-09) ──────────────────
   모든 폭. render.py 가 ds 층 끝(hub_g.css 뒤)에 붙인다(apply-h.py). `html body` 접두 = 페이지별 <style> 보다 뒤에서 이긴다.
   토큰만(hex 0). 각 절 머리의 R번호 = audits/gofesta/2026-10-09/detail-ux/REPORT.md 개편안.
   새 토큰 --warn-ink·--info-ink·--ad-surface·--ad-line 은 허브에서 추가·빌드(2026-10-09) → sync-spoke 로 site/design_tokens.css 갱신 뒤 적용. */

/* R12 탭 타깃·작은 글자·대비 회귀 */
html body .rows .hd a{display:inline-block;min-height:24px;padding:.125rem 0;line-height:1.35}
html body a.vsrc,html body .vsrc{display:inline-flex;align-items:center;min-height:24px;font-size:var(--fs-caption)}
html body .rows .hd .ext,html body .rows .lk a .ext,html body .ext{font-size:.75rem}
html body .wx .w.sun{color:var(--warn-ink)}
html body .wx .w.rain,html body .wx .w.snow{color:var(--info-ink)}
html body .journey .jk,html body .journey .jearly,html body .fact .k,html body .alert .d{font-size:.75rem}
html body .indoor li a,html body .wx ul.indoor li a{display:inline-flex;align-items:center;min-height:24px}   /* 비 오는 날 실내 명소 칩 링크 22px → 24px */

/* R1 첫 화면 요약 카드 — 고정 5행(갈 수 있나·어떻게 가나·뭘 하나·조심·문의) · 행마다 섹션 점프 · 없는 정보는 「확인 중」 */
html body .gnotice{display:flex;gap:.5rem;align-items:baseline;margin:0 0 .5rem;padding:.5rem .75rem;border-radius:var(--r-sm);background:var(--soft);color:var(--ink);font-size:var(--fs-caption);line-height:1.45}
html body .gnotice b{flex:0 0 auto;color:var(--point-ink-on-tint)}
html body .gnotice a{color:inherit;text-decoration:underline;text-underline-offset:2px;min-height:24px;display:inline-block}
html body .glance ul.g5{display:grid;grid-template-columns:1fr;gap:0}
html body .glance ul.g5 li{display:grid;grid-template-columns:5.25rem minmax(0,1fr);gap:.5rem;align-items:start;padding:.5rem 0;border-top:1px solid var(--line);min-width:0;min-height:44px}
html body .glance ul.g5 li:first-child{border-top:0}
html body .glance ul.g5 li>b{display:flex;align-items:center;gap:.375rem;font-size:var(--fs-caption);font-weight:800;color:var(--ink2);padding-top:.1rem}
html body .glance ul.g5 li>b svg{width:16px;height:16px;flex:0 0 auto;color:var(--point-deep)}
html body .glance ul.g5 .gv{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .5rem;min-width:0;font-size:var(--fs-small);line-height:1.45;color:var(--ink)}
html body .glance ul.g5 .gv>a{color:var(--ink);text-decoration:none;border-bottom:1px dashed color-mix(in srgb,var(--point) 45%,transparent);min-height:24px;display:inline;overflow-wrap:anywhere}
html body .glance ul.g5 .gv>a.go{display:inline-flex;align-items:center;min-height:24px;font-weight:700;color:var(--point-ink);border:0;white-space:nowrap}
html body .glance ul.g5 .gv .chk{color:var(--ink3);font-weight:600}
html body .glance ul.g5 .gv .tag{font-size:.75rem;padding:.15rem .55rem;line-height:1.25}
html body .glance ul.g5 .gsub{flex-basis:100%;font-size:var(--fs-caption);color:var(--ink3);line-height:1.45;margin-top:.125rem}
html body .glance ul.g5 .gsub a{color:var(--ink2);text-decoration:underline;text-underline-offset:2px;display:inline-block;min-height:24px}
html body .glance ul.g5 .gsub.ok{color:var(--ok)}html body .glance ul.g5 .gsub.warn{color:var(--warn-ink)}
html body .glance .cond{display:flex;flex-wrap:wrap;gap:.25rem .375rem}
html body .glance .cond a,html body .glance .cond span{display:inline-flex;align-items:center;gap:.25rem;min-height:28px;padding:0 .55rem;border-radius:999px;font-size:.75rem;font-weight:700;text-decoration:none;color:var(--ink2);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
html body .glance .cond .ok{color:var(--ok);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 45%,transparent)}
html body .glance .cond .ok::before{content:"✓";font-weight:900}
html body .glance .cond .q{color:var(--ink3)}
html body .glance .cond .q::before{content:"?";font-weight:900}
html body .glance .stat{margin:.625rem 0 0;font-size:var(--fs-caption);color:var(--ink2);line-height:1.55;padding:.5rem .75rem;border-radius:var(--r-sm);background:var(--soft)}
html body .glance .stat.ok{color:var(--ok)}html body .glance .stat.warn{color:var(--warn-ink)}html body .glance .stat.end{color:var(--ink3)}
html body .glance .stat.alert{color:var(--danger)}html body .glance .stat.alert b{margin-right:.375rem}
html body .glance .stat a{color:inherit;text-decoration:underline;text-underline-offset:2px;display:inline-block;min-height:24px}
@media(min-width:760px){html body .glance ul.g5{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem}html body .glance ul.g5 li:nth-child(2){border-top:0}html body .glance ul.g5 li:last-child{grid-column:1/-1}}
html body .jteaser{display:none}   /* R9 「지금 할 일」 티저는 요약 ④행 보조문으로 */

/* R3 「내 조건」 칩 — 요약 아래 한 줄(가로 넘김) · 선택 → 해당 항목 강조·앞 정렬 · 비해당은 제목만 · 정보 없으면 「확인 중」 */
html body .cond-bar{display:flex;gap:.375rem;overflow-x:auto;scrollbar-width:none;margin:0 -16px .75rem;padding:.125rem 16px .25rem;-webkit-overflow-scrolling:touch}
html body .cond-bar::-webkit-scrollbar{display:none}
html body .cond-bar .jg{display:contents}
html body .cond-bar .jg>span{display:none}
html body .cond-bar button{flex:0 0 auto;display:inline-flex;align-items:center;gap:.25rem;min-height:36px;padding:0 .75rem;border-radius:999px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);font:inherit;font-size:var(--fs-caption);font-weight:700;color:var(--ink2);cursor:pointer;white-space:nowrap}
html body .cond-bar button[aria-pressed="true"]{background:var(--ink);color:var(--on-point);box-shadow:none}
html body .cond-bar button.nodata[aria-pressed="true"]::after{content:"· 아직 몰라요";font-weight:600;opacity:.8;font-size:.75rem}
html body .cond-hint{margin:0 0 .375rem;font-size:var(--fs-caption);line-height:1.5;color:var(--ink2)}
html body .cond-bar .cl{flex:0 0 auto;display:inline-flex;align-items:center;font-size:var(--fs-caption);font-weight:800;color:var(--ink3);margin-right:.125rem}
@media(min-width:641px){html body .cond-bar{margin-left:0;margin-right:0;padding-left:0;padding-right:0;flex-wrap:wrap}}
html body .rows li.con{background:var(--soft);margin:0 -.5rem;padding-left:.5rem;padding-right:.5rem;border-radius:var(--r-sm);border-top-color:transparent}
html body .rows li.con+li{border-top-color:transparent}
html body .rows li.dim .bd,html body .rows li.dim .lk{display:none}
html body .rows li.dim{opacity:.7}

/* R4 목차 띠 — 요약 카드 바로 아래 · 묶음 4개 + 「더」 · 왼쪽 「↑요약」 · 모바일은 아이콘+짧은 글자 */
html body .dnav{display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:none;padding:.375rem 0;margin:0 0 1rem;background:var(--surface);border-bottom:1px solid var(--line)}
html body .dnav a{flex:0 0 auto;display:inline-flex;align-items:center;gap:.3rem;min-height:40px;padding:0 .8rem;border-radius:999px;font-size:var(--fs-caption);font-weight:700;background:var(--surface);color:var(--ink2);box-shadow:inset 0 0 0 1px var(--line);text-decoration:none;white-space:nowrap}
html body .dnav a svg{width:16px;height:16px;flex:0 0 auto}
html body .dnav a .s{display:none}
html body .dnav a.on{background:var(--ink);color:var(--on-point);box-shadow:none}
html body .dnav a.up{background:transparent;box-shadow:none;color:var(--ink3);padding-left:.25rem}
html body .dnav a.up::before{content:"↑";font-weight:900;margin-right:.1rem}
@media(max-width:640px){
  html body .dnav{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px;gap:.2rem}
  html body .dnav a{padding:0 .6rem;min-height:44px}
  html body .dnav a .l{display:none}html body .dnav a .s{display:inline}
  html body .dnav a.up .s{display:inline}
}
html body main .grp{scroll-margin-top:7.25rem}
html body main .sec,html body main details.sec,html body .wx{scroll-margin-top:7.25rem}
@media(max-width:640px){html body main .grp,html body main .sec,html body main details.sec,html body .wx{scroll-margin-top:7.5rem}}

/* R2 묶음 4개(가는 길·할 것·조심할 것·머무름) 펼침 · 소개·문의·즐기는 법·개최일·프로그램 접힘(제목+첫 줄) · 목록은 3개 + 더 보기(DETAIL_UX_JS) */
html body .grp{margin:0 0 1.5rem}
html body .grp>.grph{display:flex;align-items:center;gap:.5rem;margin:0 0 .625rem;padding:0 .125rem;font-size:var(--fs-h3);font-weight:800;letter-spacing:-.02em;color:var(--ink)}
html body .grp>.grph svg{width:22px;height:22px;color:var(--point-deep);flex:0 0 auto}
html body .grp>.grph .q{font-size:var(--fs-caption);font-weight:600;color:var(--ink3);letter-spacing:0;margin-left:.25rem}
html body .grp>.sec:last-child,html body .grp>details.sec:last-child{margin-bottom:0}
html body .grp#more>.grph{font-size:var(--fs-small);color:var(--ink3)}
html body details.fold summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:.625rem;padding:.875rem 0;min-height:52px}
html body details.fold summary::-webkit-details-marker{display:none}
html body details.fold summary h2{margin:0;font-size:var(--fs-body);display:flex;align-items:baseline;gap:.5rem}
html body details.fold summary .pv{font-size:var(--fs-caption);color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
html body details.fold[open] summary .pv{display:none}
html body details.fold .chev{width:10px;height:10px;border-right:2px solid var(--ink3);border-bottom:2px solid var(--ink3);transform:rotate(45deg) translateY(-2px);transition:transform .15s var(--ease)}
html body details.fold[open] .chev{transform:rotate(-135deg) translateY(2px)}
html body details.fold{padding:0 1.25rem;margin:0 0 .75rem}
html body details.fold[open]{padding-bottom:1rem}
@media(max-width:640px){html body details.fold summary{grid-template-columns:minmax(0,1fr) auto}html body details.fold summary .pv{grid-column:1;grid-row:2}html body details.fold summary .chev{grid-row:1/span 2}}
html body .morebtn,html body .dmore{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;margin:.5rem 0 0;border:0;border-radius:var(--r-md);background:var(--soft);font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink);cursor:pointer}
html body .rows>li.srcsum{display:block;grid-template-columns:none;padding:.5rem 0 0;margin-top:.25rem;border-top:1px dashed var(--line);font-size:var(--fs-caption);color:var(--ink3);line-height:1.5}
html body .rows>li.srcsum a{color:inherit;text-decoration:underline;text-underline-offset:2px;display:inline-block;min-height:24px}

/* R9 개최일(「더」 묶음 안 접힘) 목록 */
html body ul.sesslist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}
html body ul.sesslist li{display:flex;gap:.625rem;align-items:center;flex-wrap:wrap;font-size:var(--fs-small)}html body ul.sesslist li.past{color:var(--ink3)}html body ul.sesslist li span{color:var(--ink2);font-size:var(--fs-caption)}

/* R6 「할 것」 하위 탭(즐길거리·전후 들를 곳·걷기) — DETAIL_UX_JS 가 h3.subh 를 탭으로 바꾼다(자바스크립트 없으면 h3 그대로) */
html body #program .subtabs{display:flex;gap:.25rem;overflow-x:auto;scrollbar-width:none;margin:0 0 .5rem;border-bottom:1px solid var(--line)}
html body #program .subtabs button{flex:0 0 auto;min-height:44px;padding:0 .75rem;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:transparent;font:inherit;font-size:var(--fs-small);font-weight:600;color:var(--ink3);cursor:pointer;white-space:nowrap}
html body #program .subtabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink);font-weight:800}
html body #program .subtabs button .n{font-size:.75rem;color:var(--ink3);margin-left:.25rem}
html body #program [data-subpanel][hidden]{display:none}
html body #program [data-subpanel] h3.subh{display:none}
html body #program [data-subpanel] p.hint{margin:0 0 .5rem}
/* R6 선정 이유 배지(제목 옆 「고페스타 선정」 + 팝오버 1줄) — 배지 문구에 편집 기준 미노출 */
html body .fh .pickb{position:relative;display:inline-flex;align-items:center;min-height:28px;padding:0 .6rem;border-radius:999px;background:var(--soft);color:var(--point-ink-on-tint);font-size:.75rem;font-weight:800;border:0;cursor:pointer;font-family:inherit}
html body .fh .pickb .pop{display:none;position:absolute;left:0;top:calc(100% + 6px);z-index:5;min-width:14rem;max-width:min(80vw,22rem);padding:.5rem .75rem;border-radius:var(--r-sm);background:var(--ink);color:var(--on-point);font-size:var(--fs-caption);font-weight:500;line-height:1.45;text-align:left;white-space:normal}
html body .fh .pickb[aria-expanded="true"] .pop,html body .fh .pickb:hover .pop{display:block}

/* R8 출처·메타 축소 — 항목 ↗만 · 섹션 끝 1줄 집계(위 .srcsum) · 제목 줄 배지 1개 + 툴팁 · 피드백은 섹션 끝 작은 글자 1개 + 페이지 끝 1곳 */
html body .rows .rb .src{display:none}
html body .fh-line .vdate.one{display:inline-flex;align-items:center;min-height:24px;gap:.25rem;border-bottom:1px dotted var(--ink3);cursor:help}
html body .fb.mini{justify-content:flex-end;margin:.25rem 0 0}
html body .fb.mini button{min-height:32px;padding:0 .5rem;background:transparent;box-shadow:none;color:var(--ink3);font-size:.75rem;font-weight:600;text-decoration:underline;text-underline-offset:2px}
html body .fb.page{justify-content:center;gap:.75rem;margin:1.5rem 0 .5rem}
html body .fb.page .q{flex-basis:100%;text-align:center;font-size:var(--fs-caption);color:var(--ink3);margin-bottom:.125rem}

/* R10 빈 섹션·저정보 — 포스터 없으면 96px 이니셜 · 「확인되지 않았습니다」 소제목 대신 섹션 끝 1줄 */
@media(min-width:640px){html body .dtop:has(.poster .namecard){grid-template-columns:96px minmax(0,1fr);gap:1rem}}
html body .dtop .poster:has(.namecard){aspect-ratio:1;width:96px;height:96px;border-radius:var(--r-md)}
html body .dtop .poster:has(.namecard) .namecard span{font-size:1.5rem;-webkit-line-clamp:2}
html body .sec p.chkline{margin:.625rem 0 0;padding:.5rem .75rem;border-radius:var(--r-sm);background:var(--soft);font-size:var(--fs-caption);color:var(--ink2);line-height:1.5}
html body .sec p.chkline b{color:var(--ink3);font-weight:700;margin-right:.375rem}

/* R13 여정 체크리스트 — D-day 기준 「지금 단계」 1개만 펼침 · 접힌 단계는 첫 항목 1줄 미리보기 · 칩은 R3 으로 이동 */
html body .journey .jchips{display:none}
html body .journey ol.jst[data-staged]>li>b{display:flex;align-items:center;gap:.5rem;min-height:44px;margin:0;cursor:pointer;padding-right:1.25rem;position:relative}
html body .journey ol.jst[data-staged]>li>b::after{content:"";position:absolute;right:.25rem;top:50%;width:8px;height:8px;border-right:1.5px solid var(--ink3);border-bottom:1.5px solid var(--ink3);transform:translateY(-70%) rotate(45deg)}
html body .journey ol.jst[data-staged]>li.open>b::after{transform:translateY(-30%) rotate(-135deg)}
html body .journey ol.jst[data-staged]>li>b .jnowtag{font-size:.75rem;font-weight:800;color:var(--on-point);background:var(--fill);border-radius:999px;padding:.05rem .5rem}
html body .journey ol.jst[data-staged]>li:not(.open)>*:not(b):not(.jpv){display:none}
html body .journey ol.jst[data-staged]>li>.jpv{display:block;font-size:var(--fs-caption);color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 0 .25rem}
html body .journey ol.jst[data-staged]>li.open>.jpv{display:none}
html body .journey ol.jst[data-staged]>li.open{background:var(--soft);margin:0 -.75rem;padding-left:2.875rem;padding-right:.75rem;border-radius:var(--r-sm);border-top-color:transparent}
html body .journey ol.jst[data-staged]>li.open::before{left:.75rem}
html body .journey ol.jst[data-staged]>li.open+li{border-top-color:transparent}
html body .journey .jsum{font-size:var(--fs-caption)}

/* ── 모바일 축제 상세 하단 바 + 헤더 로고 줄만 고정 (디자인 허브 hub-h-2026-10-09 · R7·R4 · 회장 확정 조건 2026-10-09) ──
   폭 640px 이하 · 상세(data-page="festival") 만. 토큰만(hex 0). 원본: 허브
   R7: 하단 고정 바 52px + safe-area · 버튼 3개(가는 길·일정 알림·공유 — 공식 사이트는 「가는 길」 안) · 스크롤 300px 뒤 표시 · 입력 포커스·광고가 보일 때 숨김
       · 흰 바탕·얇은 윗선 · 바 안에 「광고」 요소 없음 · 첫 화면 버튼 2행(.fh .actions)·본문 끝 공식 홈페이지 상자(.sidebox)·「↑」(.totop) 는 모바일에서 숨김(↑요약은 목차 띠 안).
   R4: 상단 메뉴 헤더는 로고 줄(52px)만 고정 — 메뉴 줄은 페이지 위에 겹쳐 있다가 스크롤하면 사라진다(자리 이동 없음). 고정 영역 110+55=165 → 52+56=108px. */
.mbar,.mbar-pop,.mbar-msg{display:none}
@media(max-width:640px){
  /* R4 헤더: 로고 줄만 고정 */
  html body[data-page="festival"] .top{top:0;overflow:visible}
  html body[data-page="festival"] .top .wrap{grid-template-areas:"brand aux";grid-template-rows:var(--row1h)}
  html body[data-page="festival"] .top .nav{position:absolute;left:0;right:0;top:var(--row1h);padding:0 16px;background:var(--surface);border-bottom:1px solid var(--line);transition:opacity .15s var(--ease),transform .15s var(--ease)}
  html body[data-page="festival"] .top.scrolled .nav{opacity:0;pointer-events:none;transform:translateY(-6px)}
  html body[data-page="festival"] .top+main.wrap{margin-top:var(--navh)}
  html body[data-page="festival"] .dnav{top:var(--row1h)}
  /* R7 첫 화면 버튼 2행·본문 끝 상자·↑ 숨김 */
  html body[data-page="festival"] .fh .actions,html body[data-page="festival"] .sidebox,html body[data-page="festival"] .totop{display:none}
  html body[data-page="festival"] .fh:has(.fthumb)>.sharemsg{grid-column:1/-1}
  html body[data-page="festival"].mbar-on{padding-bottom:calc(52px + env(safe-area-inset-bottom,0px))}
  html body[data-page="festival"] .mbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0 0 env(safe-area-inset-bottom,0px);background:var(--surface);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .2s var(--ease)}
  html body[data-page="festival"] .mbar.show{transform:none}
  html body[data-page="festival"] .mbar>button,html body[data-page="festival"] .mbar>a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:52px;min-height:52px;border:0;background:transparent;font:inherit;font-size:.75rem;font-weight:700;color:var(--ink2);text-decoration:none;cursor:pointer;min-width:0}
  html body[data-page="festival"] .mbar>button svg,html body[data-page="festival"] .mbar>a svg{width:22px;height:22px;color:var(--ink)}
  html body[data-page="festival"] .mbar>button[aria-expanded="true"]{color:var(--point-ink)}
  html body[data-page="festival"] .mbar>button[aria-expanded="true"] svg{color:var(--point-deep)}
  html body[data-page="festival"] .mbar-pop{position:fixed;left:12px;right:12px;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:41;display:none;flex-direction:column;gap:.25rem;padding:.5rem;border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-card),0 0 0 1px var(--line)}
  html body[data-page="festival"] .mbar-pop.show{display:flex}
  html body[data-page="festival"] .mbar-pop a{display:flex;align-items:center;gap:.625rem;min-height:48px;padding:0 .75rem;border-radius:var(--r-sm);font-size:var(--fs-small);font-weight:700;color:var(--ink);text-decoration:none;background:var(--soft)}
  html body[data-page="festival"] .mbar-pop a svg{width:20px;height:20px;color:var(--point-deep);flex:0 0 auto}
  html body[data-page="festival"] .mbar-pop a span{font-size:var(--fs-caption);font-weight:500;color:var(--ink3);margin-left:auto;white-space:nowrap}
  html body[data-page="festival"] .mbar-msg{position:fixed;left:12px;right:12px;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:41;display:none;padding:.625rem .875rem;border-radius:var(--r-sm);background:var(--ink);color:var(--on-point);font-size:var(--fs-caption);font-weight:600;line-height:1.4}
  html body[data-page="festival"] .mbar-msg.show{display:block}
}

/* ── 축제 상세 2차 개편 CSS 층 (디자인 허브 hub-i-2026-10-29 · 회장 「위 내용 모두를 수정하자」 2026-10-29) ─────────────
   모든 폭. render.py 가 ds 층 맨 끝(mobile_g.css 뒤)에 붙인다(apply-i.py). 토큰만(hex 0). 근거·전후 = audits/gofesta/2026-10-29/detail-ux2/REPORT.md
   글자 체계(F1~F4): 크기 4단 = 제목(fs-h2·fs-h3) · 항목 제목 fs-body · 본문 fs-small · 보조 fs-caption(이보다 작은 글자 없음)
                     회색 2단 = 본문·제목 --ink · 보조 --ink2 (--ink3 글자 없앰) · 굵기 3단 = 400 · 700 · 800(제목만)
   `body[...]:not(#_)` = ID 한 단 무게 — 층마다 쌓인 `.main .sec h3.subh .hint`·`#program .rows.plist2 .pm` 같은 규칙을 한 번에 이기게(!important 없이). */

/* F1 보조 글자 = fs-caption(13.8px) · --ink2 — 12.75px·11.7px 글자를 없앤다 */
html body[data-page="festival"]:not(#_) main :is(.ch,.hint,.srcsum,.src,.src a,.src span,.fb button,.lk a,.pwho,.jm,.jnowtag,.jwhen,.pickb,.vdate,.fh-meta,.gsub,.tag,.jk,.jpv,.cap,.half i,.half .rn,.note,.grph .q,.cl){font-size:var(--fs-caption);letter-spacing:0}
html body[data-page="festival"]:not(#_) main :is(.hint,.srcsum,.src,.jsum,.note,.grph .q,.fh-meta,.jpv,.fb button,.half i,.half .rn){color:var(--ink2);font-weight:400}
html body[data-page="festival"]:not(#_) main .ch{color:var(--ink2);font-weight:700}
html body[data-page="festival"]:not(#_) main :is(.glance,.focus,.wx)>.ch{color:var(--point-ink);font-weight:800}
html body[data-page="festival"]:not(#_) main .rows li .kd{font-size:var(--fs-caption);font-weight:700}
html body[data-page="festival"]:not(#_) .gfcrumb .sep{font-size:var(--fs-caption)}

/* F2 본문 = fs-small(15.9px) · --ink · 400 · 줄 간격 1.65 — 체크리스트 답(14.9px)·목록 설명(18px)·소개(18px)를 한 크기로 */
html body[data-page="festival"]:not(#_) main :is(.intro p,.rb .bd,.ja,.jgd p,.jline,.care li span,.care .lead,.verdict span,.chkline,.ptips p,.jaskbox p,.cond-hint,.morestay){font-size:var(--fs-small);line-height:1.65;color:var(--ink);font-weight:400}
html body[data-page="festival"]:not(#_) main .rb .pm{font-size:var(--fs-small);font-weight:700;color:var(--ink2)}
html body[data-page="festival"]:not(#_) main .gv{font-size:var(--fs-small)}
html body[data-page="festival"]:not(#_) main .gv .chk{font-size:var(--fs-caption);font-weight:400;color:var(--ink2)}

/* F3 항목 제목 = fs-body(18px) · 700 · --ink — 체크리스트 질문(15.4px)·단계 이름(15.9px)·목록 제목(18px 600)을 한 단으로 */
html body[data-page="festival"]:not(#_) main :is(.rb .hd,.rb .hd a,.rb .hd span,ol.jst>li>b,.jtodo>b,.focus li b,.side-sum .nm){font-size:var(--fs-body);font-weight:700;line-height:1.45;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .journey .jq{font-size:var(--fs-small);font-weight:700;line-height:1.5;color:var(--ink)}   /* 체크리스트 질문 = 본문 굵게(질문·답이 한 쌍 · 18px 이면 줄이 넘쳐 길어진다) */
html body[data-page="festival"]:not(#_) main .care li b{font-size:var(--fs-small);font-weight:800}
html body[data-page="festival"]:not(#_) main .sec h3.subh,html body[data-page="festival"]:not(#_) main h3.subh2{font-size:var(--fs-body);font-weight:800;color:var(--ink);line-height:1.4}
html body[data-page="festival"]:not(#_) main .sec h3.subh .hint{display:block;margin-top:.125rem}

/* F4 제목 = 묶음 fs-h2 > 안쪽 fs-h3 (뒤집혀 있던 21.25 < 25.5 바로잡기) · h1 은 fs-h1 */
html body[data-page="festival"]:not(#_) main .fh h1{font-size:var(--fs-h1);font-weight:800;line-height:1.2}
html body[data-page="festival"]:not(#_) main .grp>h2.grph{font-size:var(--fs-h2);font-weight:800;line-height:1.3;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}
html body[data-page="festival"]:not(#_) main .grp>h2.grph .n{font-size:var(--fs-small);font-weight:700;color:var(--ink2)}
html body[data-page="festival"]:not(#_) main .grp>h2.grph .q{flex-basis:100%}
html body[data-page="festival"]:not(#_) main .grp .sec>h2,html body[data-page="festival"]:not(#_) main .care>h2{font-size:var(--fs-h3);font-weight:800;line-height:1.35}
html body[data-page="festival"]:not(#_) main .grp .sec>h2 .n{font-size:var(--fs-small);color:var(--ink2)}

/* 6 「내 조건」(고르는 칩)과 목차 띠(이동)를 다르게: 목차는 밑줄 탭 */
html body .dnav a{border-radius:0;box-shadow:none;background:transparent;color:var(--ink2);border-bottom:2px solid transparent;min-height:var(--p-target-min)}
html body .dnav a.on{background:transparent;color:var(--ink);border-bottom-color:var(--point-ink);box-shadow:none}
html body .dnav a.up{min-height:var(--p-target-min)}
html body .cond-bar button{box-shadow:inset 0 0 0 1.5px var(--ink2);color:var(--ink);min-height:var(--p-target-min)}
html body .cond-hint{font-weight:700}

/* 7 요약 카드 「누구와 가나요」 = 누르는 버튼 */
html body .glance .cond button{display:inline-flex;align-items:center;gap:.25rem;min-height:36px;padding:0 .7rem;border:0;border-radius:999px;font:inherit;font-size:var(--fs-caption);font-weight:700;cursor:pointer;background:var(--surface);color:var(--ink2);box-shadow:inset 0 0 0 1px var(--line)}
html body .glance .cond button.ok{color:var(--ok);box-shadow:inset 0 0 0 1px var(--ok)}
html body .glance .cond button.ok::before{content:"✓";font-weight:900}
html body .glance .cond button.q::before{content:"?";font-weight:900}
html body .glance .cond button:hover{background:var(--soft)}

/* 3 「아직 모르는 것」 물어볼 곳 상자 */
html body .jaskbox{margin:0 0 1rem;padding:.875rem 1rem;border-radius:var(--r-md);background:var(--soft)}
html body .jaskbox p{margin:0 0 .625rem}
html body .jabs{display:flex;flex-wrap:wrap;gap:.5rem}
html body .jab{display:inline-flex;align-items:center;min-height:var(--p-target-min);padding:0 1rem;border-radius:999px;background:var(--surface);color:var(--ink);font-weight:700;text-decoration:none;box-shadow:inset 0 0 0 1px var(--line)}
html body .jab.tel{background:var(--ink);color:var(--on-point);box-shadow:none}

/* 9 「다녀온 사람들이 많이 궁금해한 것」 = 바로가기 줄 */
html body .focus ol{list-style:none;margin:.5rem 0 .25rem;padding:0;display:grid;gap:.5rem}
html body .focus li a{display:flex;align-items:center;gap:.5rem;min-height:var(--p-target-min);padding:.5rem .875rem;border-radius:var(--r-md);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);text-decoration:none;color:var(--ink)}
html body .focus li a span{flex:1 1 auto;font-size:var(--fs-caption);color:var(--ink2)}
html body .focus li a i{font-style:normal;font-weight:800;color:var(--point-ink)}

/* 2 휴대폰 첫 화면 「공식 사이트」 버튼 · PC 는 버튼 줄이 있어 숨김 */
html body .mofficial{display:none}
@media(max-width:640px){html body .mofficial{display:inline-flex;align-items:center;justify-content:center;min-height:var(--p-target-min);margin:.5rem 0 0;padding:0 1.25rem;border-radius:999px;background:var(--point-ink);color:var(--on-point);font-weight:800;text-decoration:none}}

/* 15 숙소 더 찾기 · 11 이벤트 참여 방법 */
html body .morestay{margin:.5rem 0 0}
html body .morestay a,html body main .rb .lk a{display:inline-flex;align-items:center;min-height:var(--p-target-min);font-weight:700}

/* 12 손가락으로 누르는 곳 44px — 독립 버튼은 높이, 글 속 출처 링크는 누르는 영역만 넓힌다 */
html body[data-page="festival"]:not(#_) main :is(.fb button,.morebtn,.subtabs button,.jgo,.gv a){min-height:var(--p-target-min)}
html body[data-page="festival"]:not(#_) main .fb button{padding:0 .875rem}
html body[data-page="festival"]:not(#_) main :is(.src a,.srcsum a,.gsub a){display:inline-block;padding:.75rem 0;margin:-.75rem 0}
html body[data-page="festival"]:not(#_) main .gv a,html body[data-page="festival"]:not(#_) main .jgo{display:inline-flex;align-items:center}

/* 1 휴대폰: 제목 → 광고 → 한눈에 보기 → 내 조건 → 목차 → 소개(전부) → 본문 (소개는 줄이지 않고 자리만 · 회장 2026-10-28 「소개 전부」 유지) */
@media(max-width:640px){
  html body[data-page="festival"]:not(#_) main.wrap{display:flex;flex-direction:column}
  html body[data-page="festival"]:not(#_) main.wrap>.dtop,html body[data-page="festival"]:not(#_) main.wrap>.dtop>.dmain{display:contents}
  html body[data-page="festival"]:not(#_) main.wrap>aside.ad-top{order:1;margin-top:.75rem}
  html body[data-page="festival"]:not(#_) main.wrap>.dtop~*{order:2}
  html body[data-page="festival"]:not(#_) main.wrap>.dtop .intro,html body[data-page="festival"]:not(#_) main.wrap>.ad-moved{order:3}
  html body[data-page="festival"]:not(#_) main.wrap>.two,html body[data-page="festival"]:not(#_) main.wrap>.two~*{order:4}
  html body[data-page="festival"]:not(#_) main.wrap>.dtop .intro{margin:1rem 0}
}

/* 16 PC 옆 칸: 광고 아래 따라 내려오는 요약 */
html body .side-sum{display:none}
@media(min-width:1024px){
  html body .side-sum{display:block;position:sticky;top:calc(var(--navh,64px) + 1rem);margin-top:1rem;padding:1rem 1.125rem;border-radius:var(--r-lg);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
  html body .side-sum dl{display:grid;grid-template-columns:auto 1fr;gap:.375rem .75rem;margin:.625rem 0 .75rem;font-size:var(--fs-small)}
  html body .side-sum dt{color:var(--ink2);font-weight:700}
  html body .side-sum dd{margin:0;color:var(--ink)}
  html body .side-sum .up{font-size:var(--fs-caption);font-weight:700;color:var(--point-ink);text-decoration:none}
}

/* F 보정 — 즐길거리(#program) 칸의 ID 규칙·남은 흐린 회색(--ink3)·500/600 굵기 */
html body[data-page="festival"]:not(#_) #program .rows.plist2 :is(.pm,.bd,.bd.px){font-size:var(--fs-small);font-weight:400;color:var(--ink)}
html body[data-page="festival"]:not(#_) #program .rows.plist2 .pm{font-weight:700;color:var(--ink2)}
html body[data-page="festival"]:not(#_) #program .rows.plist2 .pwho{font-size:var(--fs-caption)}
html body[data-page="festival"]:not(#_) main :is(.jgd b,.ta,.ptips b,.care li b){font-size:var(--fs-small)}
html body[data-page="festival"]:not(#_) main :is(.jab,.mofficial){font-size:var(--fs-small)}
html body[data-page="festival"]:not(#_) main h3.subh{font-size:var(--fs-body);font-weight:800;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .sec p:not([class]){font-size:var(--fs-small);line-height:1.65}
html body[data-page="festival"]:not(#_) main :is(.chk,.gv .chk,.fb .q,.cond button.q,.chkline b,.cl,.jwhen,.vdate,.subtabs button,.gv .tag:not(.live),.src a,.gsub,.dnav .s,.half i,.ext){color:var(--ink2)}
html body[data-page="festival"]:not(#_) .gfcrumb .cur{color:var(--ink2)}
html body[data-page="festival"]:not(#_) main :is(.vdate,.chk,.gv .chk){font-weight:400}
html body[data-page="festival"]:not(#_) main :is(.subtabs button,.morebtn){font-weight:700}
html body[data-page="festival"]:not(#_) main :is(.gv .tag,.jnowtag,.lk .ext){font-size:var(--fs-caption)}
html body[data-page="festival"]:not(#_) main :is(.wx li>b,#program .subtabs button .n){font-size:var(--fs-small)}
html body[data-page="festival"]:not(#_) main #program .subtabs button .n{font-size:var(--fs-caption)}
html body[data-page="festival"]:not(#_) main .fh-line .tag{color:var(--ink2)}
html body[data-page="festival"] .gfcrumb a{display:inline-flex;align-items:center;min-width:var(--p-target-floor);min-height:var(--p-target-floor);padding:.25rem .125rem}
html body .side-sum dd a{display:inline-flex;align-items:center;min-height:var(--p-target-floor)}

/* 3-2 체크리스트 한 줄 = 질문(줄 전체) + 답 줄(앞에 작은 꼬리표) — 꼬리표 칸(약 105px)이 화면 반을 비우던 2칸 격자를 없앤다(회장 2026-10-29 휴대폰 화면) */
html body[data-page="festival"]:not(#_) main .journey ul.ji>li{display:block;padding:.625rem 0}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.jq{display:block}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.ja{display:block;margin-top:.25rem;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.ja>.jm{display:inline-flex;align-items:center;vertical-align:.0625rem;margin-right:.375rem;padding:.0625rem .5rem;min-height:0;line-height:1.4;font-size:var(--fs-caption);white-space:nowrap}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li.jrain>.ja{margin-bottom:.25rem}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.ja .jgo{display:inline;min-height:0;padding:.75rem 0;margin:-.75rem 0}
/* 3-3 휴대폰: 단계 번호만큼(약 50px) 안쪽 글 전체를 들여 쓰던 것 → 번호는 제목 줄에만, 질문·답·안내 상자는 단계 폭 전체 */
@media(max-width:640px){
  html body[data-page="festival"]:not(#_) main .journey ol.jst[data-staged]>li.open{padding-left:.75rem}
  html body[data-page="festival"]:not(#_) main .journey ol.jst[data-staged]>li>b{padding-left:2.125rem}
  html body[data-page="festival"]:not(#_) main .journey ol.jst[data-staged]>li.open::before{left:.75rem;top:1.125rem}
}
/* 3-4 「알아 두면 좋아요」(비 오는 날) 줄: 요령 목록·실내 명소·안내도 글자 체계로(13.5px 흐린 회색 → 본문) · 들여쓰기 최소 */
html body[data-page="festival"]:not(#_) main .journey li.jrain .jtips{padding-left:1.125rem;margin:.375rem 0 .25rem;font-size:var(--fs-small);line-height:1.65;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .journey li.jrain :is(.jin,.jc){display:block;font-size:var(--fs-caption);color:var(--ink2)}
html body[data-page="festival"]:not(#_) main .journey li.jrain .jin{font-weight:700;margin-top:.5rem}
html body[data-page="festival"]:not(#_) main .journey li.jrain .jtips>li{list-style:disc;margin:.25rem 0}
html body[data-page="festival"]:not(#_) main .journey li.jrain .jtips>li::marker{color:var(--ink2)}
/* hub-j-2026-10-31 · 축제 상세 「미리 알면 덜 고생해요」·방문객 반응 버튼·다녀온 뒤 단계 고르기 (blueprint/44 F·H)
   방향: clean-minimal-beige-light-mode — 따뜻한 모래색 겹 · 얇은 선 · 절제된 강조색 · 진한 그림자 없음. 색·반경·그림자는 토큰(var)만. 아이콘 Lucide(ISC). */
html body[data-page="festival"]:not(#_) main .tipsbox{display:grid;gap:.875rem;padding:0;background:none;border:0;box-shadow:none}
html body[data-page="festival"]:not(#_) main .tb-card{background:var(--p-color-paper-warm);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.25rem 1.125rem 1rem;position:relative;overflow:hidden}
html body[data-page="festival"]:not(#_) main .tb-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--point);opacity:.85}
html body[data-page="festival"]:not(#_) main .tb-good{background:var(--soft)}html body[data-page="festival"]:not(#_) main .tb-good::before{background:var(--ok)}
html body[data-page="festival"]:not(#_) main .tb-eye{margin:0 0 .25rem;font-size:var(--fs-caption);font-weight:600;letter-spacing:.02em;color:var(--ink3)}
html body[data-page="festival"]:not(#_) main .tb-h{margin:0 0 .875rem;font-size:var(--fs-h3);font-weight:700;line-height:1.35;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .tb-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;counter-reset:tb}
html body[data-page="festival"]:not(#_) main .tb-item{position:relative;padding:.875rem .875rem .75rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}
html body[data-page="festival"]:not(#_) main .tb-tag{display:inline-flex;align-items:center;height:1.5rem;padding:0 .625rem;margin-bottom:.5rem;border-radius:var(--p-radius-pill);background:var(--p-color-sand-200);color:var(--ink2);font-size:var(--fs-caption);font-weight:600}
html body[data-page="festival"]:not(#_) main .tb-scene{margin:0;font-size:var(--fs-body);font-weight:600;line-height:1.6;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .tb-fix{display:grid;grid-template-columns:auto 1fr;gap:.5rem;align-items:baseline;margin-top:.625rem;padding:.625rem .75rem;background:var(--p-color-sand-100);border-radius:var(--r-sm);border-left:3px solid var(--ok)}
html body[data-page="festival"]:not(#_) main .tb-fixl{font-size:var(--fs-caption);font-weight:700;color:var(--ok);white-space:nowrap}
html body[data-page="festival"]:not(#_) main .tb-fix p{margin:0;font-size:var(--fs-small);line-height:1.55;color:var(--ink2)}
html body[data-page="festival"]:not(#_) main .tb-meta{display:flex;align-items:center;gap:.375rem;margin:.5rem 0 0;font-size:var(--fs-caption);color:var(--ink3)}
html body[data-page="festival"]:not(#_) main .tb-dot{width:.375rem;height:.375rem;border-radius:50%;background:var(--ink3);opacity:.6}
html body[data-page="festival"]:not(#_) main .tb-good .tb-list{gap:.5rem}
html body[data-page="festival"]:not(#_) main .tb-good-item{padding:.25rem 0 .25rem .875rem;border-left:2px solid var(--line)}
html body[data-page="festival"]:not(#_) main .tb-good-item .tb-scene{font-weight:500;font-size:var(--fs-lead)}
html body[data-page="festival"]:not(#_) main .tb-note{margin:0 .25rem;font-size:var(--fs-caption);color:var(--ink3)}
/* 방문객 반응(질문마다) — 답 아래 작은 글자 버튼 · 아이콘 = 글자 크기(1em) · 묻는 문장 없음(회장 2026-10-31 「공간을 효율적으로」) */
html body[data-page="festival"]:not(#_) main .qfb{display:flex;flex-wrap:wrap;gap:.375rem;margin-top:.375rem}
html body[data-page="festival"]:not(#_) main .qfb-b{display:inline-flex;align-items:center;gap:.25rem;min-height:1.75rem;padding:0 .5rem;border:1px solid var(--line);border-radius:var(--p-radius-pill);background:var(--surface);color:var(--ink3);font:inherit;font-size:var(--fs-caption);line-height:1;cursor:pointer;transition:color var(--p-motion-duration-fast) var(--ease),border-color var(--p-motion-duration-fast) var(--ease),background var(--p-motion-duration-fast) var(--ease)}
html body[data-page="festival"]:not(#_) main .qfb-b svg{width:1em;height:1em;flex:none}
html body[data-page="festival"]:not(#_) main .qfb-b.up:hover,html body[data-page="festival"]:not(#_) main .qfb-b.up:focus-visible{color:var(--ok);border-color:var(--ok)}
html body[data-page="festival"]:not(#_) main .qfb-b.down:hover,html body[data-page="festival"]:not(#_) main .qfb-b.down:focus-visible{color:var(--ink);border-color:var(--ink3)}
/* 두 번째부터: 손 아이콘만 · 답 오른쪽 한 줄(꼬리표 · 답 · 아이콘) · 아이콘 = 글자 크기 */
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.ja.jq-inline{display:flex;align-items:flex-start;gap:.375rem}
html body[data-page="festival"]:not(#_) main .ja.jq-inline>.jm{flex:none}
html body[data-page="festival"]:not(#_) main .ja.jq-inline>.jat{flex:1;min-width:0}
html body[data-page="festival"]:not(#_) main .qfb.mini{display:inline-flex;flex:none;gap:.125rem;margin:0 0 0 auto}
html body[data-page="festival"]:not(#_) main .qfb-i{display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:var(--p-radius-pill);background:none;color:var(--ink3);font-size:var(--fs-small);cursor:pointer;transition:color var(--p-motion-duration-fast) var(--ease),background var(--p-motion-duration-fast) var(--ease)}
html body[data-page="festival"]:not(#_) main .qfb-i svg{width:1em;height:1em}
html body[data-page="festival"]:not(#_) main .qfb-i{position:relative}html body[data-page="festival"]:not(#_) main .qfb-i::before{content:"";position:absolute;inset:-.4375rem -.125rem}   /* 보이는 크기는 글자만 · 누르는 자리는 44px(손가락) */
html body[data-page="festival"]:not(#_) main .qfb-i.up:hover,html body[data-page="festival"]:not(#_) main .qfb-i.up:focus-visible{color:var(--ok);background:var(--p-color-sand-100)}
html body[data-page="festival"]:not(#_) main .qfb-i.down:hover,html body[data-page="festival"]:not(#_) main .qfb-i.down:focus-visible{color:var(--ink);background:var(--p-color-sand-100)}
html body[data-page="festival"]:not(#_) main .qfb.mini .fbthanks{font-size:var(--fs-caption);color:var(--ok);white-space:nowrap}
html body[data-page="festival"]:not(#_) main .qfb .fbthanks{font-size:var(--fs-caption);color:var(--ok)}
/* 다녀온 뒤 — 가장 힘들었던 일 하나 고르기(문장 버튼 · 중학생 수준) */
html body[data-page="festival"]:not(#_) main .jafter{margin-top:1rem;padding:1rem 1rem .875rem;background:var(--p-color-paper-warm);border:1px solid var(--line);border-radius:var(--r-lg)}
html body[data-page="festival"]:not(#_) main .ja-eye{margin:0;font-size:var(--fs-caption);font-weight:600;color:var(--ink3)}
html body[data-page="festival"]:not(#_) main .ja-q{margin:.125rem 0 .75rem;font-size:var(--fs-body);font-weight:700;color:var(--ink)}
html body[data-page="festival"]:not(#_) main .ja-grid{display:grid;grid-template-columns:1fr;gap:.375rem}
html body[data-page="festival"]:not(#_) main .ja-grid button{min-height:var(--p-target-min);padding:.375rem .75rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-small);text-align:left;cursor:pointer}
html body[data-page="festival"]:not(#_) main .ja-grid button:last-child{color:var(--ink2)}
html body[data-page="festival"]:not(#_) main .ja-grid button:hover,html body[data-page="festival"]:not(#_) main .ja-grid button:focus-visible{border-color:var(--point);background:var(--soft)}
html body[data-page="festival"]:not(#_) main .ja-f{margin:.625rem 0 0;font-size:var(--fs-caption);color:var(--ink3)}
@media (min-width:768px){html body[data-page="festival"]:not(#_) main .ja-grid{grid-template-columns:repeat(2,minmax(0,1fr))}html body[data-page="festival"]:not(#_) main .tipsbox{grid-template-columns:3fr 2fr;align-items:start}html body[data-page="festival"]:not(#_) main .tb-note{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){html body[data-page="festival"]:not(#_) main :is(.qfb-b,.qfb-i){transition:none}}
/* 회장 2026-10-31 「박스 한쪽 테두리 색선은 촌스럽다」 — 카드 위 색 띠 · 피하는 법 왼쪽 선 · 좋아한 것 왼쪽 선 제거 */
html body[data-page="festival"]:not(#_) main .tb-card::before{display:none}
html body[data-page="festival"]:not(#_) main .tb-fix{border-left:0}
html body[data-page="festival"]:not(#_) main .tb-good-item{border-left:0;padding-left:0}
/* 회장 2026-10-31: 첫 질문 글자 버튼도 아이콘과 같은 자리(답 오른쪽) · 칸별 「정보가 맞아요 / 정보가 달라요」(모든 칸 글자) · 페이지 끝 「알려 주기」 한 줄 */
html body[data-page="festival"]:not(#_) main .qfb.mini.lab{gap:.25rem}
html body[data-page="festival"]:not(#_) main .qfb.mini.lab .qfb-i{width:auto;padding:0 .5rem;gap:.25rem;display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--surface);font-size:var(--fs-caption);color:var(--ink3);white-space:nowrap}
html body[data-page="festival"]:not(#_) main .qfb.mini.lab .qfb-i svg{width:1em;height:1em;font-size:var(--fs-small)}
html body[data-page="festival"]:not(#_) main .sfb{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.375rem;margin-top:.75rem}
html body[data-page="festival"]:not(#_) main .sfb-b{display:inline-flex;align-items:center;gap:.25rem;min-height:1.75rem;padding:0 .625rem;border:1px solid var(--line);border-radius:var(--p-radius-pill);background:var(--surface);color:var(--ink3);font:inherit;font-size:var(--fs-caption);line-height:1;cursor:pointer;position:relative;transition:color var(--p-motion-duration-fast) var(--ease),border-color var(--p-motion-duration-fast) var(--ease)}
html body[data-page="festival"]:not(#_) main .sfb-b::before{content:"";position:absolute;inset:-.5rem 0}
html body[data-page="festival"]:not(#_) main .sfb-b svg{width:1em;height:1em;flex:none}
html body[data-page="festival"]:not(#_) main .sfb-b.up:hover,html body[data-page="festival"]:not(#_) main .sfb-b.up:focus-visible{color:var(--ok);border-color:var(--ok)}
html body[data-page="festival"]:not(#_) main .sfb-b.down:hover,html body[data-page="festival"]:not(#_) main .sfb-b.down:focus-visible{color:var(--ink);border-color:var(--ink3)}
html body[data-page="festival"]:not(#_) main .sfb .fbthanks{font-size:var(--fs-caption);color:var(--ok)}
@media (min-width:768px){html body[data-page="festival"]:not(#_) main section.sec:has(>.sfb){position:relative}html body[data-page="festival"]:not(#_) main section.sec>.sfb{position:absolute;top:1rem;right:1rem;margin:0}html body[data-page="festival"]:not(#_) main section.sec:has(>.sfb)>h2{padding-right:16rem}}
html body[data-page="festival"]:not(#_) main .fixask{margin:1.5rem 0 .5rem;font-size:var(--fs-small);color:var(--ink2);text-align:center}
html body[data-page="festival"]:not(#_) main .fixask a{font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:.2em}
html body[data-page="festival"]:not(#_) main .journey ul.ji>li>.ja.jq-inline:has(.qfb.lab){flex-wrap:wrap}
html body[data-page="festival"]:not(#_) main .ja.jq-inline:has(.qfb.lab)>.jat{flex:1 1 7rem}
html body[data-page="festival"]:not(#_) main .qfb.mini.lab{margin-left:auto}
/* 버킷·히든 고도화(blueprint/49 · 회장 2026-11-04) — ③ 가기 쉬운 정도 · ② 나에게 맞는 축제 찾기 · ① 국내에서 미리 맛보기 · ⑨ 한 번 떠나서 두 곳 · ⑧ 지금 지구 어딘가에서
   허브 토큰(var)만 · 하드코딩 색 0 · 버킷·히든 목록/개요/상세에만 붙는다(css_after). 글자 12px 미만 금지(언슬롭 2026-11-02). */

/* ③ 등급 칩 — 쉬움 · 보통 · 도전 */
.ez{display:inline-flex;align-items:center;gap:.25rem;padding:.0625rem .5rem;border-radius:var(--p-radius-pill);font-size:var(--fs-caption);font-weight:800;line-height:1.5;white-space:nowrap;vertical-align:middle}
.ez.easy{background:var(--ok-fill);color:var(--on-ok)}
.ez.mid{background:var(--soft);color:var(--point-ink-on-tint)}
.ez.hard{background:var(--ink);color:var(--paper)}

/* ② 나에게 맞는 축제 찾기 */
.wfind .wfit{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;margin-top:.625rem;padding-top:.625rem;border-top:1px solid var(--line)}
.wfind .wfit .wfl{flex:0 0 100%;font-size:var(--fs-small);font-weight:800;color:var(--ink)}
.wfind .wfit .index{flex:0 1 auto;margin:0;min-width:0;flex-wrap:wrap;overflow:visible;max-width:100%}
.wfind .wfnote{flex:0 0 100%;margin:0;font-size:var(--fs-caption);line-height:1.5;color:var(--ink3)}

/* ③ 상세 표지 한 줄 + 「가는 길」 장 상자 */
.bk-ease{margin:.625rem 0 0;display:flex;flex-wrap:wrap;gap:.375rem .625rem;align-items:center;font-size:var(--fs-small);font-weight:600}
.bk-ease .ezl{opacity:.85}
.bk-ezbox{margin:0 0 1.25rem;padding:1rem 1.125rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.bk-ezbox .hd{display:flex;align-items:center;gap:.5rem;font-weight:800;color:var(--ink)}
.bk-ezbox ul{margin:.5rem 0 .25rem;padding-left:1.125rem;line-height:1.7}
.bk-ezbox .s{margin:.25rem 0 0;font-size:var(--fs-caption);line-height:1.5;color:var(--ink3)}

/* ① 국내에서 미리 맛보기 · ⑨ 한 번 떠나서 두 곳 — 같은 카드 문법 */
.bk-pairs{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:.75rem;margin:.75rem 0 0;padding:0;list-style:none}
.bk-pairs a{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:.75rem;align-items:center;min-height:var(--p-target-min);padding:.625rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);text-decoration:none;box-shadow:var(--shadow-card)}
.bk-pairs a:hover{border-color:var(--point)}
.bk-pairs a:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.bk-pairs .ph{width:4.5rem;aspect-ratio:1/1.3;border-radius:var(--r-sm);overflow:hidden;background:var(--sunken);display:grid;place-items:center;font-weight:800;color:var(--ink3)}
.bk-pairs .ph img{width:100%;height:100%;object-fit:contain;display:block}
.bk-pairs .tx{display:flex;flex-direction:column;gap:.125rem;min-width:0}
.bk-pairs b{font-size:var(--fs-body);line-height:1.35;word-break:keep-all}
.bk-pairs .m{font-size:var(--fs-small);color:var(--ink2)}
.bk-pairs .th{font-size:var(--fs-caption);font-weight:700;color:var(--point-ink-on-tint)}
.bk-pairs-note{margin:.625rem 0 0;font-size:var(--fs-caption);line-height:1.5;color:var(--ink3)}

/* ⑧ 지금 지구 어딘가에서 · ⑨ 한 번 떠나서 두 곳 — 이미지 무대 카드(회장 2026-11-08 「프리미엄급」 · 허브 audits/gofesta/2026-11-08/world-premium)
   방향 image-first-grid-layout(메뉴 B 매거진과 같은 계열): 이미지가 카드의 무대 · 장 머리 굵은 선 · 글은 무대 아래(휴대폰은 옆)에 붙인다 · 강조색 1개.
   공식 포스터·변경금지 사진은 자르지 않는다(contain + 모래색 여백) · 자르기가 허용된 대표 사진만 칸을 채운다(.photo). 토큰만 · 12px 미만 0. */
.wnow,.wcourse{margin:2rem 0 1.5rem;padding-top:1rem;border-top:2px solid var(--ink)}
.wnow h2,.wcourse h2{margin:0 0 .375rem;font-size:var(--fs-h2);line-height:1.25;letter-spacing:-.03em;word-break:keep-all}
.wnow .lead,.wcourse .lead{margin:0 0 1rem;max-width:44rem;font-size:var(--fs-small);line-height:1.6;color:var(--ink2);word-break:keep-all}

/* 이미지 무대(⑧⑨ 공통) */
.wm{position:relative;display:block;overflow:hidden;border-radius:var(--r-sm);background:var(--p-color-sand-100);aspect-ratio:3/4}
.wm img{display:block;width:100%;height:100%;box-sizing:border-box;padding:.375rem;object-fit:contain}
.wm.photo img{padding:0;object-fit:cover}
.wm.none{display:grid;place-items:center;background:var(--p-color-tone-world-tint)}
.wm.none::before{content:"";position:absolute;inset:.375rem;border:1px solid color-mix(in srgb,var(--p-color-tone-world-ink) 24%,transparent);border-radius:calc(var(--r-sm) - 4px)}
.wm .wmc{position:relative;padding:0 .625rem;font-size:var(--fs-small);font-weight:800;line-height:1.3;color:var(--p-color-tone-world-ink);text-align:center;word-break:keep-all}
.wm .pyear{left:.375rem;bottom:.375rem;padding:.125rem .5rem;font-size:.75rem}
.wm .pyear .pl{display:none}.wm .pyear .pls{display:inline}
.wnow .ic,.wcourse .ic{flex:0 0 auto;width:1em;height:1em}

/* ⑧ 카드 — 휴대폰: 무대 왼쪽 · 글 오른쪽 / 641px 이상: 무대 위 · 글 아래 */
.wnow ol{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;margin:0;padding:0;list-style:none}
.wnow li a{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:.875rem;align-items:start;min-height:var(--p-target-min);padding:.625rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color var(--p-motion-duration-fast) var(--p-motion-ease),box-shadow var(--p-motion-duration-fast) var(--p-motion-ease)}
.wnow li a:hover{border-color:var(--ink3);box-shadow:var(--shadow-card)}
.wnow li a:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.wnow .wt{display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:.125rem 0}
.wnow .st{display:block;font-size:var(--fs-caption);font-weight:800;line-height:1.45;color:var(--point-ink-on-tint);word-break:keep-all}
.wnow .st .sq{font-weight:600;color:var(--ink3)}
.wnow li.on .st{color:var(--ok)}
.wnow li.on .st::before{content:"";display:inline-block;width:.5rem;height:.5rem;margin-right:.375rem;border-radius:var(--p-radius-pill);background:var(--ok-fill);vertical-align:.08em}
.wnow b{font-size:var(--fs-lead);line-height:1.3;letter-spacing:-.02em;word-break:keep-all}
.wnow .m{font-size:var(--fs-small);line-height:1.45;color:var(--ink2);word-break:keep-all}
.wnow .wf{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem .625rem;margin-top:.375rem;padding-top:.5rem;border-top:1px solid var(--line)}
.wnow .wf:not(:has(.lt:not(:empty))):not(:has(.vd)){display:none}
.wnow .wclk{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--fs-small);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.wnow .wclk:has(.lt:empty){display:none}
.wnow .wclk .ic{color:var(--ink3)}
.wnow .vd{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;border-radius:var(--p-radius-pill);background:var(--soft);color:var(--point-ink-on-tint);font-size:var(--fs-caption);font-weight:800}
.wnow .vd .ic{width:.75em;height:.75em}
.wnow .none{margin:0;font-size:var(--fs-small);color:var(--ink3)}
@media(min-width:641px){
  .wnow ol{grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:1rem}
  .wnow li{display:flex}
  .wnow li a{flex:1;grid-template-columns:none;grid-template-rows:auto 1fr;gap:.75rem;padding:.5rem .5rem .875rem}
  .wnow .wm{aspect-ratio:4/3}
  .wnow .wt{align-self:stretch;padding:0 .375rem}
  .wnow .wf{margin-top:auto}
}
@media(min-width:1024px){.wnow ol{grid-template-columns:repeat(4,minmax(0,1fr))}}
.bmap .pin.live circle{stroke:var(--ok-fill);stroke-width:3}
@media (prefers-reduced-motion:no-preference){.wnow li.on .st::before{animation:wnowp 2s var(--p-motion-ease,ease-in-out) infinite}@keyframes wnowp{50%{opacity:.35}}}

/* ⑨ 한 번 떠나서 두 곳 — 짝 카드: 두 무대 + 가운데 「+」 · 아래 거리 한 줄 */
.wcourse ol{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));gap:1rem;margin:0;padding:0;list-style:none}
.wcourse li{display:flex;flex-direction:column;gap:.625rem;padding:.75rem .75rem .875rem;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-card)}
.wcourse .mo{padding:0 .125rem;font-size:var(--fs-caption);font-weight:800;color:var(--point-ink-on-tint)}
.wcourse .two{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.wcourse .two a{display:flex;flex-direction:column;gap:.125rem;min-width:0;min-height:var(--p-target-min);border-radius:var(--r-sm);color:var(--ink);text-decoration:none}
.wcourse .two a:hover b{text-decoration:underline;text-underline-offset:.2em}
.wcourse .two a:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.wcourse .wm{aspect-ratio:1/1;margin-bottom:.5rem}
.wcourse .plus{position:absolute;top:0;left:50%;z-index:2;display:grid;place-items:center;width:2rem;height:2rem;margin-top:calc((100% - .5rem) * .25);transform:translate(-50%,-50%);border-radius:var(--p-radius-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-body);font-weight:800;line-height:1;box-shadow:0 0 0 1px var(--line),var(--shadow-card)}
.wcourse .tg{font-size:.75rem;font-weight:800;letter-spacing:.04em;color:var(--ink3)}
.wcourse .two b{font-size:var(--fs-body);line-height:1.3;letter-spacing:-.02em;word-break:keep-all}
.wcourse .pl{font-size:var(--fs-caption);line-height:1.45;color:var(--ink2);word-break:keep-all}
.wcourse .km{display:flex;align-items:center;gap:.375rem;margin-top:auto;padding:.625rem .125rem 0;border-top:1px dashed var(--line);font-size:var(--fs-small);color:var(--ink2)}
.wcourse .km .ic{width:1.125rem;height:1.125rem;color:var(--ink3)}
.wcourse details{margin:1rem 0 0}
.wcourse summary{display:inline-flex;align-items:center;min-height:var(--p-target-min);padding:0 1.125rem;border:1px solid var(--line);border-radius:var(--p-radius-pill);background:var(--surface);font-size:var(--fs-small);font-weight:700;color:var(--ink);cursor:pointer}
.wcourse summary:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.wcourse details ol{margin-top:1rem}
.wcourse .note{margin:.75rem 0 0;font-size:var(--fs-caption);line-height:1.5;color:var(--ink3)}
/* unslop.patch.css — gofesta 언슬롭 패치(메뉴 35, 2026-11-01 회장 승인 범위: 외관 1~5·7~11 + 기존 결함)
   허브 작성 · gofesta 토큰(--ink·--ink2·--ink3·--point·--surface·--line·--soft·--fill) 변수만 · 색 리터럴 0.
   모든 페이지의 맨 뒤에 붙인다. `html body:not(#ux)` 접두 = ID 한 단 무게(덮어쓰기 층 8겹을 !important 없이 이기기, lessons 2026-10-29).
   마크업 변경은 REPORT.md 「마크업 변경 목록」(render.py 쪽) — 화살표 빼기·날씨 질문·달력 data-lv·인라인 색·바로가기·favicon. */

/* ── 1·2 빨강은 「지금 갈 수 있는 것」에만 — 숫자·머리점·순위·보조 링크는 글자색으로 ── */
html body:not(#ux) .hhead em { color: var(--ink); }                          /* 2 홈 제목 「133곳」 */
html body:not(#ux) .cover b { color: var(--ink); }                           /* 필터 「2,554곳 · 1,658곳」 */
html body:not(#ux) ul.evl li::before { background: var(--ink3); color: var(--ink3); }   /* 이벤트 카드 머리점 */
html body:not(#ux) .rk { color: var(--ink2); }                                /* 순위 01~05 */
html body:not(#ux) a.more { color: var(--ink2); }                             /* 「순위 전체 →」(절 머리 링크 — 화살표 유지) */
html body:not(#ux) .dhead h1 em { color: var(--ink); }                        /* 달력 「315」(인라인 색은 마크업에서 뺌) */
html body:not(#ux) .side-sum a.up { color: var(--ink2); }                     /* 상세 「한눈에 보기로 ↑」 */
html body:not(#ux) nav.tvintro > a > span { color: var(--ink2); }             /* TV 주제 카드 「40곳 보기」 */

/* ── 3·4 제목 위 빨간 막대·키커 ── */
html body:not(#ux) .hhead::before,
html body:not(#ux) .hero > div::before,
html body:not(#ux) .sh.hsh.hl::before,
html body:not(#ux) .dhead > div::before { display: none; }
html body[data-page]:not(#ux) main :is(.glance, .focus, .wx) > .ch { color: var(--ink); font-size: var(--fs-small); font-weight: 700; letter-spacing: 0; }   /* 상세 「한눈에 보기」 등 상자 머리 = 상자 제목(gofesta 의 :not(#_) 규칙보다 한 단 무겁게) */

/* ── 5 절 아이콘은 한 색 ── */
html body:not(#ux) .sh > svg,
html body:not(#ux) h2.grph > svg,
html body:not(#ux) section.glance svg { color: var(--ink2); stroke: currentColor; }

/* ── 7 문장·카드 속 링크: 화살표는 마크업에서 빼고 밑줄로 링크임을 보인다 ── */
html body:not(#ux) a.vfest,
html body:not(#ux) a.upd,
html body:not(#ux) .gsub a { color: var(--ink2); text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 3px; }
html body:not(#ux) a.vfest:hover,
html body:not(#ux) a.upd:hover,
html body:not(#ux) .gsub a:hover { color: var(--ink); text-decoration-color: currentColor; }

/* ── 8 상세 버튼: 주행동은 「공식 사이트」 하나 ── */
html body:not(#ux) .actions .btn.gold { background: var(--soft); color: var(--ink); border-color: var(--soft); }
html body:not(#ux) .actions .btn.gold:hover { background: var(--soft-press); }

/* ── 9 「아직 몰라요」 — 알약 대신 흐린 글자(묶음 머리 「아직 모르는 것 N가지」가 이미 있다) ── */
html body:not(#ux) .jm.q { background: transparent; color: var(--ink3); padding-inline: 0; border-color: transparent; font-weight: 400; }

/* ── 10 달력: 축제 수 단계 색(data-lv 1~5, 마크업에서 붙임) · 선택한 날만 빨강 ── */
html body:not(#ux) .day.has:not([aria-pressed="true"]) { background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
html body:not(#ux) .day.has:not([aria-pressed="true"]) .n { color: var(--ink2); }
html body:not(#ux) .day.has[data-lv="1"]:not([aria-pressed="true"]) { background: color-mix(in srgb, var(--point) 5%, var(--surface)); }
html body:not(#ux) .day.has[data-lv="2"]:not([aria-pressed="true"]) { background: color-mix(in srgb, var(--point) 10%, var(--surface)); }
html body:not(#ux) .day.has[data-lv="3"]:not([aria-pressed="true"]) { background: color-mix(in srgb, var(--point) 17%, var(--surface)); }
html body:not(#ux) .day.has[data-lv="4"]:not([aria-pressed="true"]) { background: color-mix(in srgb, var(--point) 25%, var(--surface)); }
html body:not(#ux) .day.has[data-lv="5"]:not([aria-pressed="true"]) { background: color-mix(in srgb, var(--point) 34%, var(--surface)); }
html body:not(#ux) .day.has[data-lv="4"]:not([aria-pressed="true"]) .n,
html body:not(#ux) .day.has[data-lv="5"]:not([aria-pressed="true"]) .n { color: var(--ink); }

/* ── 11 간격: 1rem = 17px 체계는 유지(홀수 17·51·85 는 rem 체계의 결과). 일회 값만 ── */
html body:not(#ux) .nav { padding: 4px; }

/* ── 기존 결함 ── */
html body:not(#ux) a.vfest { display: inline-flex; align-items: center; min-height: 24px; }   /* 링크 높이 22 → 24(치명) */
html body:not(#ux) .dday,
html body:not(#ux) .brand-tag,
html body:not(#ux) .vplay,
html body:not(#ux) .gfcrumb .sep { font-size: 12px; }                         /* 12px 미만 글자 */
html body:not(#ux) .ux-skip { position: absolute; left: -9999px; top: 8px; z-index: 100; display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: var(--r-sm); background: var(--surface); color: var(--ink); box-shadow: var(--shadow-card); }
html body:not(#ux) .ux-skip:focus { left: 16px; }
/* gofesta 상세 쪽 언슬롭 2차(구성·일관성) — 2026-11-02 회장 승인 범위 12가지 · 방향 「잘 만든 여행 안내 책자」
   토큰 변수만(hex 0) · 선택자 머리 html body[data-page="festival"]:not(#ux):not(#_) main — 기존 :not(#_) 규칙보다 한 단 무겁게.
   상자 체계 3가지: ① 기본 = 흰 면 + 카드 그림자(테 없음) ② 보조 = 옅은 면(--soft) 테 없음 ③ 강조 = 「제대로 즐기는 법」 하나 — 색 띠 없이 제목 크기로만(회장 2026-11-02).
   빨강 = 「지금 갈 수 있는 것」(공식 사이트·D-day·진행 중·지금 단계·통제 있음)에만. */

/* 9 · 위쪽 칸(소개·제대로 즐기는 법·한눈에 보기)은 전체 폭, 그 아래만 본문+옆칸 — 두 구역으로 일관.
   해설 글줄 46rem 제한은 뺐다(회장 2026-11-02 「빈 공간이 너무 많아 안 좋아 보인다」) — 글은 상자 폭을 채운다 */

/* 1 · 상자 체계 — 기본(흰 면 + 그림자) */
html body[data-page="festival"]:not(#ux):not(#_) main .care { border: 0; border-radius: var(--r-lg); box-shadow: var(--shadow-card) }
html body[data-page="festival"]:not(#ux):not(#_) .side .sidebox { border: 0; box-shadow: var(--shadow-card) }
/* 1 · 「제대로 즐기는 법」 — 기본 카드와 같은 모양(색 테 없음) */
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy { border: 0; border-radius: var(--r-lg); box-shadow: var(--shadow-card) }   /* 색 띠 없음(회장 2026-11-02 「빨간 윗줄은 AI 티」) — 강조는 제목 크기로만 */
/* 1 · 보조(옅은 면, 테 없음) */
html body[data-page="festival"]:not(#ux):not(#_) main .journey .jtodo { background: var(--soft); border: 0; border-radius: var(--r-md) }
html body[data-page="festival"]:not(#ux):not(#_) main .jaskbox { background: var(--soft); border: 0 }

/* 11 · 상자 안 상자 → 선으로 나눔(2겹까지) */
html body[data-page="festival"]:not(#ux):not(#_) main .journey .jgd { background: none; border: 0; border-left: 2px solid var(--line); border-radius: 0; padding: .25rem 0 .25rem .75rem; margin-top: .625rem }
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vgrid { gap: 0 }
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard,
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard:is(.warn, .bad, .ok, .rain) { background: none; border: 0; border-top: 1px solid var(--line); border-radius: 0; padding: .75rem 0 .25rem }

/* 2 · 빨강 정리 — 라벨·번호·점·글 링크는 글자색 */
html body[data-page="festival"]:not(#ux):not(#_) main .care li b,
html body[data-page="festival"]:not(#ux):not(#_) main .sec.journey .jgd p b,
html body[data-page="festival"]:not(#ux):not(#_) main .relcol b { color: var(--ink) }
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy-kick { color: var(--ink2) }
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy-toc a b { color: var(--ink2) }
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy-ch h3 span { background: none; box-shadow: inset 0 0 0 1.5px var(--ink); color: var(--ink) }
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy-av { background: var(--soft); color: var(--ink2) }
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy-more > summary { border-color: var(--ink); color: var(--ink) }
html body[data-page="festival"]:not(#ux):not(#_) main .journey .jline::before { background: var(--ink3) }
html body[data-page="festival"]:not(#ux):not(#_) main .grp > .grph svg { color: var(--ink2) }
html body[data-page="festival"]:not(#ux):not(#_) main .focus li a i { color: var(--ink3) }
html body[data-page="festival"]:not(#ux):not(#_) main ol.jst .jcnt .q { color: var(--ink2) }
/* 2·3 · 글 속 링크 = 글자색 + 밑줄(대비 통과) */
html body[data-page="festival"]:not(#ux):not(#_) main .journey .jgo { color: var(--ink); font-weight: 600; text-decoration: underline; text-decoration-color: var(--ink3); text-underline-offset: 3px }
/* 12 · 한눈에 보기 — 링크인 값만 얇은 실선 밑줄(점선·빨강 점선 없앰) */
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv > a { border-bottom: 0; text-decoration: underline; text-decoration-color: var(--line); text-decoration-thickness: 1px; text-underline-offset: 4px }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv > a.go { text-decoration: none; color: var(--point-ink) }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv > a.go:not([href*="#vc-"]) { color: var(--ink); text-decoration: underline; text-decoration-color: var(--ink3); text-underline-offset: 4px }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv .gsub a { border-bottom: 0; text-decoration: none }

/* 7 · 「확인됨」 칠한 초록 알약 46번 → 칠 없는 작은 초록 글(점 하나 + 글). 맨 위 안내문(.hint) 속 범례는 그대로 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm.ok,
html body[data-page="festival"]:not(#ux):not(#_) main .journey ul.ji .jm.ok { background: none; box-shadow: none; color: var(--ok); min-width: 0; padding: 0; font-weight: 700; gap: .25rem }
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm.ok::before,
html body[data-page="festival"]:not(#ux):not(#_) main .journey ul.ji .jm.ok::before { content: ""; width: .4375rem; height: .4375rem; border-radius: 50%; background: var(--ok) }
/* 「아직 몰라요」는 정보라 글은 남기되 칠한 알약 → 테두리만 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm.q { background: none; box-shadow: inset 0 0 0 1px var(--line); color: var(--ink2) }

/* 8 · 맞아요/달라요 — 질문별 유지, 흐리게(테 없음·작게) */
html body[data-page="festival"]:not(#ux):not(#_) main .qfb.mini .qfb-b { border-color: transparent; background: none; color: var(--ink3); opacity: .7 }
html body[data-page="festival"]:not(#ux):not(#_) main .qfb.mini .qfb-b:is(:hover, :focus-visible) { opacity: 1 }

/* 10 · 제목 두 단: 묶음 제목(아이콘 + h2 크기) · 상자 제목(아이콘 없음 + h3 크기). 상자 부제는 한 크기 */
html body[data-page="festival"]:not(#ux):not(#_) main :is(.glance, .focus, .wx) > .ch,
html body[data-page="festival"]:not(#ux):not(#_) main .care > h2,
html body[data-page="festival"]:not(#ux):not(#_) main .enjoy h2 { font-size: var(--fs-h3); font-weight: 800; line-height: 1.35; color: var(--ink); letter-spacing: 0; margin-bottom: .5rem }
html body[data-page="festival"]:not(#ux):not(#_) main :is(.care .lead, .grp > .grph .q) { font-size: var(--fs-small); color: var(--ink2) }

/* 6 · 이모지 대신 넣은 선 아이콘(마크업 변경) */
html body[data-page="festival"]:not(#ux):not(#_) .ux-ic { display: inline-block; width: 1.05em; height: 1.05em; vertical-align: -.15em; margin-right: .3em; flex: none }

/* 1 · (회장 2026-11-02 「가기 전에 상자와 바로 위 상자의 가로 크기를 같게」) 펼친 단계 상자(ol.jst>li.open · 양옆 −.75rem)와
   그 위 옅은 면 상자(지금 꼭 볼 3가지·아직 모르는 것)의 가로 끝을 맞춘다 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.jtodo, .jaskbox) { margin-left: -.75rem; margin-right: -.75rem; padding-left: .75rem; padding-right: .75rem }

/* ── 정렬·글자 체계(회장 2026-11-02 「확인됨·원번호·한눈에 보기가 어긋남 · 글자 크기가 제각각」) ──
   글자 크기 = 토큰 5단만: --fs-caption(출처·보조) · --fs-small(상자 안 글·표시) · --fs-body(항목 제목) · --fs-h3(상자 제목) · --fs-h2(묶음 제목) (+ 축제 이름 h1)
   굵기 = 3단만: 400 글 · 700 강조 · 800 제목. 표시(확인됨·아직 몰라요)는 옆 글과 같은 크기·같은 기준선 */

/* 확인됨·아직 몰라요 — 옆 글과 같은 크기, 같은 글자 바닥선 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm,
html body[data-page="festival"]:not(#ux):not(#_) main .journey ul.ji .jm { display: inline; font-size: var(--fs-small); line-height: inherit; vertical-align: baseline; min-width: 0; margin: 0 .375rem 0 0 }
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm.q,
html body[data-page="festival"]:not(#ux):not(#_) main .journey ul.ji .jm.q { padding: .0625rem .5rem; border-radius: var(--p-radius-pill); font-weight: 400 }
html body[data-page="festival"]:not(#ux):not(#_) main .journey :is(.ja, .jat) .jm.ok::before,
html body[data-page="festival"]:not(#ux):not(#_) main .journey ul.ji .jm.ok::before { display: inline-block; vertical-align: .15em; margin-right: .3125rem }

/* 여정 체크리스트 원번호 — 단계 제목 글줄 가운데(제목 줄 높이 44px 의 가운데) · 숫자 크기 토큰 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey ol.jst[data-staged] > li::before { top: calc(.625rem + 22px - .75rem); font-size: var(--fs-caption); line-height: 1.5rem }

/* 한눈에 보기 — 항목 이름과 내용 같은 크기, 같은 기준선 */
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 > li { align-items: baseline; grid-template-columns: 6.25rem minmax(0, 1fr) }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 > li > b { display: block; font-size: var(--fs-small); font-weight: 700; color: var(--ink2) }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 > li > b svg { display: inline-block; width: 1em; height: 1em; vertical-align: -.125em; margin-right: .3125rem }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv { align-items: baseline }
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv > a,
html body[data-page="festival"]:not(#ux):not(#_) main .glance ul.g5 .gv > a.go { display: inline; min-height: 0; padding-block: .25rem }

/* 체계 밖 크기 정리 */
html body[data-page="festival"]:not(#ux):not(#_) main .focus li a i,
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard .vh b,
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard ul li,
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard ul li b { font-size: var(--fs-small) }
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard ul li span,
html body[data-page="festival"]:not(#ux):not(#_) main .jvc .vcard :is(p.vsub, .vtag),
html body[data-page="festival"]:not(#ux):not(#_) main .fh-line .dday { font-size: var(--fs-caption) }
html body[data-page="festival"]:not(#ux):not(#_) main .fh-line .per { font-size: var(--fs-h3) }
html body[data-page="festival"]:not(#ux):not(#_) .side .sidebox .go { font-size: var(--fs-small) }
/* 굵기 3단 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey .jgo,
html body[data-page="festival"]:not(#ux):not(#_) main :is(.cap, .ftag) { font-weight: 700 }
html body[data-page="festival"]:not(#ux):not(#_) main :is(ol.jst > li > b .jsh, dd a, .fixask a) { font-weight: 400 }
/* 맞았어요/달라요 — 답 첫 줄 가운데에(버튼 높이 29~30px · 글줄 약 26px → 위로 2px) · 회장 2026-11-02 「같이 맞춰」 */
html body[data-page="festival"]:not(#ux):not(#_) main .journey .ja > .qfb.mini { align-self: flex-start; margin-top: -.125rem }

.btn.my{display:inline-flex;align-items:center;gap:.35rem}.btn.my svg{flex:0 0 auto}
.btn.my.mmy{display:flex;width:100%;justify-content:center;min-height:48px;margin:.5rem 0 0;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-weight:800;cursor:pointer}
.btn.my[aria-pressed="true"]{color:var(--point-deep);border-color:var(--point)}.btn.my[aria-pressed="true"] svg{fill:currentColor}
.mymsg{font-size:var(--fs-small);color:var(--ink2);margin:.5rem 0 0}
.myrow{margin:1rem auto .5rem}.myrow .myhead{display:flex;align-items:center;gap:.5rem;margin:0 0 .5rem}
.myrow .myhead a{white-space:nowrap;margin-left:auto;font-size:var(--fs-small);font-weight:700;color:var(--point-ink);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.mytabs{display:flex;gap:.375rem}.mytabs button{white-space:nowrap;appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink2);border-radius:999px;padding:.3rem .75rem;font:inherit;font-size:var(--fs-small);font-weight:700;min-height:36px;cursor:pointer}
.mytabs button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.mywrap{position:relative}
.myarr{position:absolute;top:calc(7.5rem * 1.414 / 2);transform:translateY(-50%);z-index:2;width:44px;height:44px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-card);display:none;align-items:center;justify-content:center;cursor:pointer;padding:0}
.myarr.prev{left:-.5rem}.myarr.next{right:-.5rem}.myarr.next svg{transform:scaleX(-1)}.myarr:hover{color:var(--point-deep);border-color:var(--point)}
@media (hover:hover) and (pointer:fine){.myarr:not([hidden]){display:flex}}   /* 마우스 쓰는 화면만 · 휴대폰은 손가락으로 밀기 */
.mystrip::-webkit-scrollbar{display:none}
.mystrip{scrollbar-width:none;display:flex;align-items:flex-start;gap:.75rem;overflow-x:auto;padding:.125rem .125rem .5rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.mycard{position:relative;flex:0 0 7.5rem;scroll-snap-align:start;display:flex;flex-direction:column;gap:.35rem;text-decoration:none;color:inherit;min-width:0}
.mycw{position:relative;flex:0 0 7.5rem;scroll-snap-align:start;min-width:0}.mycw .mycard{width:100%}   /* 빼기 단추를 카드(링크) 밖에 두려고 감싼다(링크 안 단추 금지) */
.myx{position:absolute;top:.3rem;right:.3rem;z-index:1;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:999px;background:color-mix(in srgb,var(--paper) 72%,transparent);color:var(--ink3);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 0 0 1px color-mix(in srgb,var(--ink) 8%,transparent)}   /* 흐리고 작게(회장 2026-11-14) — 누르는 자리 28px */
.myx svg{width:11px;height:11px}.myx:hover{background:var(--paper);color:var(--ink)}.myx:focus-visible{outline:2px solid var(--point);outline-offset:2px}
.myund{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:.25rem 0 .5rem;font-size:var(--fs-small);color:var(--ink2)}
.myund button{appearance:none;border:0;background:none;padding:0 .25rem;min-height:44px;font:inherit;font-weight:800;color:var(--point-ink);text-decoration:underline;text-underline-offset:.2em;cursor:pointer}
.mycard img,.mycard .ph{width:100%;aspect-ratio:1/1.414;object-fit:cover;border-radius:var(--r-md);border:1px solid var(--line);background:var(--sunken);display:block}
.mycard .mk{position:absolute;top:.375rem;left:.375rem;width:1.75rem;height:1.75rem;border-radius:999px;background:var(--surface);color:var(--point-deep);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-card)}.mycard .mk svg{width:14px;height:14px;fill:currentColor}
.mytabs{overflow-x:auto;scrollbar-width:none}.mytabs::-webkit-scrollbar{display:none}
.mycard .ph{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.5rem;color:var(--ink3)}
.mycard b{font-size:var(--fs-small);line-height:1.35;word-break:keep-all;overflow-wrap:anywhere}   /* 축제 이름은 자르지 않는다(회장 2026-11-05) */
.mycard span{font-size:var(--fs-caption);color:var(--ink3)}.mycard .live{color:var(--point-deep);font-weight:800}
.mynear{display:inline-flex;align-items:center;gap:.35rem;margin:.25rem 0 0;font-size:var(--fs-small);font-weight:700;color:var(--point-ink);text-decoration:none;min-height:44px}
.mypage .lead{max-width:44rem}.mylist{display:grid;gap:.75rem;margin:.75rem 0 1.5rem}
.myitem{display:grid;grid-template-columns:4.5rem 1fr auto;gap:.875rem;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:.75rem;box-shadow:var(--shadow-card);min-width:0}
.myitem img,.myitem .ph{width:4.5rem;aspect-ratio:1/1.414;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--sunken);display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--ink3)}
.myitem a.t{font-weight:800;color:inherit;text-decoration:none;line-height:1.35}.myitem .m{font-size:var(--fs-small);color:var(--ink2);margin-top:.2rem}
.myitem .chg{margin-top:.35rem;font-size:var(--fs-small);font-weight:700;color:var(--point-deep)}
.myitem .rm{appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink2);border-radius:999px;padding:.35rem .75rem;font:inherit;font-size:var(--fs-caption);min-height:40px;cursor:pointer}
.mypage .sh{display:flex;align-items:center;gap:.5rem}.mypage .sh .rm.all{margin-left:auto}
.myempty{background:var(--sunken);border-radius:var(--r-md);padding:1.25rem;line-height:1.7;color:var(--ink2)}
.myempty a{font-weight:700;color:var(--point-ink)}
.myapp{margin:2rem 0 0;padding:1rem 1.125rem;border:1px dashed var(--line);border-radius:var(--r-md);line-height:1.7;color:var(--ink2);font-size:var(--fs-small)}
.myapp button{appearance:none;border:0;background:var(--ink);color:var(--paper);border-radius:var(--r-md);padding:.6rem 1rem;font:inherit;font-weight:800;min-height:44px;cursor:pointer;margin-top:.5rem}
.nearbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1rem 0}
.nearbar .go{appearance:none;border:0;background:var(--ink);color:var(--paper);border-radius:var(--r-md);padding:.7rem 1.1rem;font:inherit;font-weight:800;min-height:48px;cursor:pointer}
.nearmsg{font-size:var(--fs-small);color:var(--ink2);margin:.25rem 0 1rem}
.myitem .km{font-weight:800;font-size:var(--fs-small);white-space:nowrap;color:var(--ink)}
.vtips{margin:2rem 0 0}.vtips:empty{display:none}.vtips h2{font-size:1.125rem;margin:0 0 .75rem}.vtips ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.vtips li{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:.75rem 1rem}.vtips li p{margin:0;line-height:1.6}.vtips li span{font-size:var(--fs-caption);color:var(--ink3)}
.vtips .vnote{font-size:var(--fs-caption);color:var(--ink3);margin:.5rem 0 0}
.vform{margin:1rem 0 0;background:var(--sunken);border-radius:var(--r-md);padding:1rem}.vform .vq{margin:0 0 .5rem;line-height:1.6}
.vform textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;padding:.625rem .75rem;resize:vertical;min-height:4rem}
.vform .vrow{display:flex;align-items:center;justify-content:space-between;margin:.5rem 0 0}.vform .vn{font-size:var(--fs-caption);color:var(--ink3)}
.vform button{appearance:none;border:0;background:var(--ink);color:var(--paper);border-radius:var(--r-md);padding:.55rem 1.1rem;font:inherit;font-weight:800;min-height:44px;cursor:pointer}
.vform .vmsg{margin:.5rem 0 0;font-size:var(--fs-small);color:var(--ink2)}.vform .vf{margin:.25rem 0 0;font-size:var(--fs-caption);color:var(--ink3)}
@media(max-width:640px){.top .aux a.mylink{display:none}}   /* 휴대폰 머리글은 자리가 없다 — 홈 한 줄·상세에서 들어간다 */
@media(max-width:480px){.myitem{grid-template-columns:3.75rem 1fr}.myitem img,.myitem .ph{width:3.75rem}.myitem .rm,.myitem .km{grid-column:2;justify-self:start}}

.ad{margin:0 0 1.25rem}   /* hub-b-2026-10-07 · hub-b2-2026-10-07 */
.ad a{display:flex;text-decoration:none;color:inherit;transition:transform .13s var(--ease)}
.ad a:active{transform:scale(.985)}
.adlabel{display:inline-block;font-size:.8125rem;font-weight:700;line-height:1.4;padding:.05rem .45rem;border-radius:6px;background:var(--sunken);color:var(--ink2);letter-spacing:.02em;flex:0 0 auto}
.adcta{font-weight:700;white-space:nowrap}
.ad-top a{position:relative;align-items:center;gap:1.25rem;min-height:112px;background:#e3e3e8;color:var(--ink);border-radius:20px;padding:.875rem 1.25rem .875rem 1.5rem;box-shadow:0 0 0 1px #d0d0d6}   /* 회장 2026-09-29: 흰 배경에서 검정 띠 대신 회색 면(B2) */
.ad-top .adlabel{position:absolute;top:.625rem;left:.75rem;background:#fff;color:var(--ink2)}
.ad-top .logo{height:34px;width:auto;flex:0 0 auto;margin-top:.5rem;filter:invert(1)}
.ad-top .adt{display:flex;flex-direction:column;gap:.125rem;min-width:0;flex:0 1 auto;line-height:1.35}
.ad-top .adt b{font-size:1.3125rem;letter-spacing:-.02em;white-space:nowrap}
.ad-top .adt span{font-size:.875rem;color:var(--ink2)}
.ad-top .adt .s{font-size:.8125rem;color:color-mix(in srgb,var(--adac) 60%,#000)}
.ad-top .lineup{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:.375rem;padding-left:1.5rem;border-left:1px solid #d0d0d6}
.ad-top .lineup .k{font-size:.8125rem;font-weight:700;letter-spacing:.04em;color:var(--ink3)}
.ad-top .lineup ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem .3rem}
.ad-top .lineup li.more{display:none;background:transparent;color:var(--ink3)}
.ad-top .lineup li{font-size:.8125rem;font-weight:600;padding:.15rem .55rem;border-radius:999px;background:#fff;white-space:nowrap}
.ad-top .thumb{height:92px;width:auto;border-radius:6px;flex:0 0 auto;transform:rotate(3deg);box-shadow:0 6px 16px rgb(0 0 0 / .45)}
.ad-top .adcta{background:var(--adac);color:#12100f;border-radius:999px;padding:.625rem 1.125rem;font-size:.9375rem;flex:0 0 auto}
@media(max-width:1100px){.ad-top .logo{display:none}.ad-top .adlabel{left:auto;right:.75rem}}
.ad-top a.has-art{padding-right:0;overflow:hidden;background:var(--adbg);color:rgb(255 255 255);box-shadow:none}
.ad-top a.has-art .adt{flex:1 1 auto}
.ad-top a.has-art .adt span{color:rgb(255 255 255 / .82)}
.ad-top a.has-art .adt .s{color:var(--adac)}
.ad-top a.has-art .adlabel{left:auto;right:.75rem;z-index:1;background:rgb(255 255 255 / .9);color:rgb(18 16 15)}
.ad-top a.has-art .adcta{margin-left:auto;position:relative;z-index:1}
.ad-top .art{position:relative;flex:0 0 34%;align-self:stretch;margin:-.875rem 0;overflow:hidden}
.ad-top .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;-webkit-mask-image:linear-gradient(90deg,transparent 0,rgb(0 0 0) 30%);mask-image:linear-gradient(90deg,transparent 0,rgb(0 0 0) 30%)}
@media(min-width:641px){.ad-top a.has-art .thumb{display:none}}
@media(max-width:900px){.ad-top .art{flex-basis:30%}}
@media(max-width:1180px){.ad-top .lineup ul li:nth-child(n+5):not(.more){display:none}.ad-top .lineup li.more{display:inline-block}}
@media(max-width:640px){.ad-top a{min-height:104px;gap:.75rem;padding:.75rem .875rem .75rem .75rem}.ad-top .adlabel{top:.5rem;left:auto;right:.625rem}.ad-top .thumb{order:-1;height:80px;transform:none}.ad-top .lineup{display:none}.ad-top .adt{flex:1 1 auto}.ad-top .adt b{font-size:1.0625rem;white-space:normal}.ad-top .adt span{font-size:.8125rem}.ad-top .adt .s{display:none}.ad-top .adcta{padding:.5rem .75rem}.ad-top .adcta .w{display:none}.ad-top .art{display:none}.ad-top a.has-art{padding-right:.875rem}}
.ad-card a{flex-direction:column;background:var(--surface);border-radius:20px;overflow:hidden;box-shadow:var(--shadow-card)}
.ad-card img{width:100%;height:auto;aspect-ratio:1200/630;object-fit:cover;display:block;background:var(--sunken)}
.ad-card .adbody{display:flex;flex-direction:column;gap:.3rem;padding:.875rem 1rem 1rem}
.ad-card .adbody b{font-size:1.0625rem;letter-spacing:-.015em;line-height:1.35}
.ad-card .adbody .l{font-size:.875rem;color:var(--ink2)}
.ad-card .adbody .s{font-size:.8125rem;color:var(--ink3)}
.ad-card .adcta{align-self:flex-start;margin-top:.375rem;background:var(--adbg);color:#fff;border-radius:12px;padding:.5rem .875rem;font-size:.875rem}
@media(min-width:760px){.ad-wide a{flex-direction:row;align-items:stretch}.ad-wide img{width:56%;flex:0 0 56%}.ad-wide .adbody{justify-content:center;padding:1.25rem 1.5rem}.ad-wide .adbody b{font-size:1.375rem}}
section.adsec{margin-top:2rem}
.ad-trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.ad-trio>div{min-width:0}
.ad-trio a{position:relative;height:122px;align-items:center;gap:.875rem;border-radius:20px;padding:.75rem 1rem;overflow:hidden;box-sizing:border-box}
.ad-trio .adlabel{position:absolute;top:.5rem;right:.625rem;font-size:.75rem}
.ad-trio .adt{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1 1 auto}
.ad-trio .adt b{font-size:1rem;line-height:1.3;letter-spacing:-.015em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ad-trio .adt .l,.ad-trio .adt .s{font-size:.8125rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ad-trio .adcta{position:absolute;right:.625rem;bottom:.625rem;width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.9375rem;font-weight:800}
.ad-trio a{padding-right:2.75rem}
.ad-trio a.tv0{background:var(--adbg);color:#fff}
.ad-trio a.tv0 .tthumb{height:92px;width:auto;border-radius:5px;transform:rotate(-3deg);box-shadow:0 6px 14px rgb(0 0 0 / .5);flex:0 0 auto}
.ad-trio a.tv0 .l{color:rgb(255 255 255 / .8)}
.ad-trio a.tv0 .adlabel{background:rgb(255 255 255 / .15);color:#fff}
.ad-trio a.tv0 .adcta{background:var(--adac);color:#12100f}
.ad-trio a.tv1{background:linear-gradient(120deg,var(--adac),color-mix(in srgb,var(--adac) 70%,#ffcf4a));color:#12100f}
.ad-trio a.tv1 .tlogo{height:30px;width:auto;align-self:flex-start;filter:brightness(0)}
.ad-trio a.tv1 .s{font-size:.9375rem;font-weight:800;line-height:1.35}
.ad-trio a.tv1 .adlabel{background:rgb(255 255 255 / .55);color:#12100f}
.ad-trio a.tv1 .adcta{background:#12100f;color:#fff}
.ad-trio a.tv2{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line,#e2e2e6),inset 5px 0 0 var(--adac)}
.ad-trio a.tv2 .k{font-size:.75rem;font-weight:800;letter-spacing:.06em;color:color-mix(in srgb,var(--adac) 60%,#000)}
.ad-trio a.tv2 .chips{display:flex;flex-wrap:nowrap;gap:.25rem;overflow:hidden}
.ad-trio a.tv2 .chips i{font-style:normal;font-size:.75rem;font-weight:600;padding:.12rem .5rem;border-radius:999px;background:var(--sunken);white-space:nowrap}
.ad-trio a.tv2 .chips i.more{background:transparent;color:var(--ink3)}
.ad-trio a.tv2 b{font-size:.875rem}
.ad-trio a.tv2 .adlabel{background:var(--sunken);color:var(--ink2)}
.ad-trio a.tv2 .adcta{background:var(--adbg);color:#fff}
@media(max-width:900px){.ad-trio{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:85%;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.25rem}
 .ad-trio>div{scroll-snap-align:start}.ad-trio a{height:114px}}
.ad-strip a{position:relative;align-items:center;gap:1.5rem;min-height:132px;background:linear-gradient(115deg,var(--adbg) 0%,var(--adbg) 55%,color-mix(in srgb,var(--adbg) 82%,var(--adac)) 100%);color:#fff;border-radius:20px;padding:.75rem 1.5rem .75rem 1.75rem;overflow:hidden;box-shadow:0 10px 28px rgb(0 0 0 / .18)}
.ad-strip a::before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--adac)}
.ad-strip .adlabel{position:absolute;top:.625rem;right:.75rem;font-size:.75rem;background:rgb(255 255 255 / .14);color:#fff}
.ad-strip .sthumb{height:124px;width:auto;border-radius:6px;flex:0 0 auto;display:block;transform:rotate(-3deg);box-shadow:0 8px 20px rgb(0 0 0 / .5);margin:.25rem 0}
.ad-strip .sthumb.sq{width:124px;object-fit:cover}
.ad-strip .adt{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1 1 auto}
.ad-strip .adt b{font-size:1.375rem;letter-spacing:-.02em;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-strip .adt .l{font-size:.9375rem;color:rgb(255 255 255 / .82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-strip .adt .s{font-size:.875rem;font-weight:700;color:var(--adac)}
.ad-strip .slu{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.25rem;max-height:1.75rem;overflow:hidden}
.ad-strip .slu i{font-style:normal;font-size:.75rem;font-weight:600;padding:.15rem .55rem;border-radius:999px;background:rgb(255 255 255 / .12);color:#fff;white-space:nowrap}
.ad-strip .slu i.more{background:transparent;color:rgb(255 255 255 / .7)}
.ad-strip .adcta{background:var(--adac);color:#12100f;border-radius:999px;padding:.75rem 1.25rem;font-size:.9375rem;font-weight:800;flex:0 0 auto;margin-right:1.5rem}
@media(max-width:900px){.ad-strip .slu{display:none}}
@media(max-width:640px){.ad-strip a{gap:.875rem;min-height:112px;padding:.625rem .875rem .625rem 1rem;border-radius:16px}.ad-strip .sthumb{height:96px}.ad-strip .sthumb.sq{width:96px}.ad-strip .adt b{font-size:1rem}.ad-strip .adt .l{font-size:.8125rem}.ad-strip .adt .s{font-size:.75rem}.ad-strip .adcta{display:none}.ad-strip .adlabel{top:.5rem;right:.5rem}}
.side .ad{margin:0}
.ad-side{grid-template-columns:none!important;grid-auto-flow:row!important;grid-auto-columns:auto!important;overflow:visible!important;gap:.75rem}
.ad-side a{height:122px!important}
.ad-moved{margin:1rem 0 1.25rem}
section.adlist{margin:1.5rem 0 0}
.adnote{grid-column:1/-1;font-size:.75rem;color:var(--ink3)}
/* 빈 광고 자리(회장 2026-10-10): 캠페인이 없어도 위치·크기를 예약해 빈 여백으로 둔다 — 자리별 높이는 blueprint/24 실측 */
.ad.ad-empty{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}
.ad-top.ad-empty{min-height:122px}.ad-trio.ad-empty{min-height:122px}.ad-card.ad-empty{min-height:96px}
@media(max-width:640px){.ad-top.ad-empty{min-height:74px}.ad-trio.ad-empty{min-height:89px}}
/* ── 광고 자리 시각 분리 (허브 hub-h-2026-10-09 · R5) — ads/inject.py CSS 상수 끝(.adnote 줄 뒤)에 덧붙인다. 뒤에 오므로 같은 선택자를 덮어쓴다.
   원칙(진단 R5·방향 orange-clean-paper-saas 「면의 온도」): 정보 = 흰 카드 20px · 광고 = --ad-surface 톤 면 + 8px 모서리 + 1px 점선(--ad-line).
   「광고」 라벨 ≥12.75px(.75rem→.8125rem) · 좌상단 고정 · 불투명. 본문 중간(.ad-wide)은 띠형 ≤120px. 토큰만(hex 0).
   토큰 --ad-surface·--ad-line 은 허브 tokens/gofesta.tokens.json 에 추가·빌드됨(2026-10-09) → gofesta 는 허브 토큰 site/design_tokens.css 동기화 뒤 적용. */
.ad-card a,.ad-top a,.ad-trio a,.ad-strip a{border-radius:8px!important;box-shadow:none!important;outline:1px dashed var(--ad-line);outline-offset:-1px}
.ad-card a{background:var(--ad-surface)}
.ad-card img{border-radius:6px 6px 0 0}
.adlabel,.ad-top .adlabel,.ad-trio .adlabel,.ad-strip .adlabel,.ad-card .adbody .adlabel{position:absolute;top:.5rem;left:.5rem;right:auto;z-index:2;font-size:var(--fs-caption);font-weight:800;line-height:1.3;padding:.1rem .5rem;border-radius:6px;background:var(--surface);color:var(--ink);opacity:1;box-shadow:0 0 0 1px var(--ad-line)}
.ad-card a{position:relative}
.ad-card .adbody{padding-top:1rem}
.ad-card .adbody>span:first-child{display:none}   /* 라벨은 카드 좌상단(위 규칙)으로 — 본문 안 중복 라벨 숨김 */
.ad-card a::before{content:"광고";position:absolute;top:.5rem;left:.5rem;z-index:2;font-size:var(--fs-caption);font-weight:800;line-height:1.3;padding:.1rem .5rem;border-radius:6px;background:var(--surface);color:var(--ink);box-shadow:0 0 0 1px var(--ad-line)}
@media(max-width:1100px){.ad-top .adlabel{left:.5rem;right:auto}}
@media(max-width:640px){.ad-top .adlabel{left:.5rem;right:auto;top:.5rem}.ad-strip .adlabel{left:.5rem;right:auto}}
html body .ad-top a:not(.has-art) .adlabel,html body .ad-strip a .adlabel{right:auto;width:auto}   /* 모바일 홈 외 페이지에서 left+right 가 함께 걸려 「광고」 라벨이 가로로 늘던 것(회장 2026-10-09 · 연어 배너) */
/* 본문 중간 광고(M1·B1 = .ad-card.ad-wide): 카드형 금지 → 띠형 ≤120px · 그림은 왼쪽 30% · 글은 제목+한 줄만 */
.ad-card.ad-wide a{flex-direction:row;align-items:center;max-height:120px;min-height:0;overflow:hidden;padding:0}
.ad-card.ad-wide img{width:30%;flex:0 0 30%;height:120px;aspect-ratio:auto;object-fit:cover;border-radius:6px 0 0 6px}
.ad-card.ad-wide .adbody{justify-content:center;padding:.75rem 1rem .75rem 1rem;gap:.15rem;min-width:0}
.ad-card.ad-wide .adbody b{font-size:var(--fs-small);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ad-card.ad-wide .adbody .l{font-size:var(--fs-caption);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-card.ad-wide .adbody .s{display:none}
.ad-card.ad-wide .adcta{margin-top:.25rem;padding:.3rem .625rem;font-size:var(--fs-caption);border-radius:6px}
@media(min-width:760px){.ad-wide a{flex-direction:row}.ad-wide img{width:30%;flex:0 0 30%}.ad-wide .adbody{padding:.75rem 1.25rem}.ad-wide .adbody b{font-size:var(--fs-body)}}
@media(max-width:640px){.ad-card.ad-wide a{max-height:112px}.ad-card.ad-wide img{height:112px}.ad-card.ad-wide .adcta{display:none}}
/* 모바일 옆칸 이동 광고(.ad-moved): 요약↔목차 사이가 아니라 「할 것」 묶음 뒤 1 · 바닥글 위 1(inject.py JS 교체 · PATCHES R5-③) */
.ad-moved{margin:1rem 0 1.25rem}
.ad-moved.ad-foot{margin:1.5rem 0 .5rem}
