/* ─────────────────────────────────────────────
   테마 2 · 칠판 (Chalk Night)
   색: 잉크그린 블랙 바탕 + 분필 크림 + 초크 레몬 액센트(강조 전용) + 민트 보조
   서체: Black Han Sans(제목, 초굵은 고딕) / 나눔명조(본문) / IBM Plex Mono(라벨·숫자)
   리듬: 전폭 밴드 교대 + 상단 티커 + 중앙 정렬 대형 수치
   ───────────────────────────────────────────── */

:root {
  --bg:      #0E1512;
  --bg-2:    #16201C;
  --bg-3:    #1D2925;
  --light:   #E7E3D7;   /* 밴드 반전용 밝은 바탕 */
  --chalk:   #E9E7DE;
  --chalk-2: #A7B3AB;
  --chalk-3: #808E86;   /* 메타·출처. #16201C 위에서 4.88:1 (AA) */
  --lemon:   #EDE04C;   /* 액센트: CTA·강조·현재상태 전용 */
  --mint:    #79D3B0;   /* 보조: 출처·부가정보 */
  --line:    #2C3A34;
  --ink-2:   #556359;   /* 밝은 밴드의 메타 텍스트. #E7E3D7 위에서 4.88:1 (AA) */

  --display: "Black Han Sans", "Pretendard", sans-serif;
  --serif: "Nanum Myeongjo", serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --ease: cubic-bezier(.2, .8, .25, 1);
}

body {
  background: var(--bg);
  color: var(--chalk);
  font-family: var(--serif);
  font-size: 16.5px;
  line-height: 1.85;
}
.wrap { max-width: 76rem; margin: 0 auto; padding: 0 22px; }
.skip { background: var(--lemon); color: #101714; }

/* 포커스 링: 다크 바탕에서 currentColor(회색 메타 텍스트)로는 거의 안 보이므로 액센트로 고정 */
:focus-visible { outline: 2px solid var(--lemon); outline-offset: 3px; }
.band--light :focus-visible, .ticker :focus-visible { outline-color: #16201C; }

.link { color: var(--mint); text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.link:hover { color: var(--lemon); }

.badge {
  display: inline-block; font-family: var(--mono); font-size: 11px; letter-spacing: .04em;
  padding: 1px 8px; border: 1px solid var(--mint); color: var(--mint); border-radius: 2px;
  white-space: nowrap; line-height: 1.7;
}
.badge--mini { font-size: 10px; padding: 0 6px; }
.pending { font-family: var(--mono); font-size: 13px; color: var(--lemon); }

/* ── 티커 ─────────────────────────────── */
.ticker {
  background: var(--lemon); color: #101714;
  overflow: hidden; border-bottom: 2px solid #101714;
}
.ticker__track { display: flex; width: max-content; animation: roll 34s linear infinite; }
.ticker__set {
  display: flex; align-items: center; gap: 18px; padding: 7px 18px 8px;
  font-family: var(--mono); font-size: 12.5px; letter-spacing: .03em; white-space: nowrap;
}
.ticker__set .dot { opacity: .72; }
@keyframes roll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.ticker:hover .ticker__track,
.ticker.is-paused .ticker__track { animation-play-state: paused; }
.ticker { position: relative; }
.ticker__vp { overflow: hidden; }
.ticker__btn {
  position: absolute; right: 0; top: 0; bottom: 0;
  padding: 0 14px; font-family: var(--mono); font-size: 11px; letter-spacing: .08em;
  background: #101714; color: var(--lemon);
}
.ticker__btn:hover { background: #22302A; }
.ticker__btn:focus-visible { outline-offset: -4px; outline-color: var(--lemon); }

/* ── 상단 바 ──────────────────────────── */
.topbar { position: sticky; top: 0; z-index: 30; background: var(--bg); border-bottom: 1px solid var(--line); }
.topbar__in { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; padding-top: 12px; padding-bottom: 12px; }
.brand { display: flex; align-items: center; gap: 9px; color: var(--lemon); }
.brand__text { font-family: var(--display); font-size: 18px; color: var(--chalk); letter-spacing: .01em; }
.topnav { display: none; margin-left: auto; gap: 20px; font-family: var(--mono); font-size: 12.5px; color: var(--chalk-2); }
@media (min-width: 900px) { .topnav { display: flex; } }
.topnav a { position: relative; padding: 3px 0; }
.topnav a::after {
  content: ""; position: absolute; left: -2px; right: -2px; bottom: 0; height: 7px;
  background: var(--lemon); z-index: -1; transform: scaleX(0); transform-origin: left;
  transition: transform .3s var(--ease);
}
.topnav a:hover { color: var(--chalk); }
.topnav a:hover::after { transform: scaleX(1); }
.dday { margin-left: auto; display: flex; align-items: baseline; gap: 8px; }
@media (min-width: 900px) { .dday { margin-left: 0; } }
.dday__label { font-family: var(--mono); font-size: 11.5px; color: var(--chalk-3); }
.dday__num { font-family: var(--display); font-size: 19px; color: var(--lemon); letter-spacing: .02em; }

/* ── 등장 ─────────────────────────────────────────────
   전역 fade-up을 걸지 않는다. 등장 모션은 "칠판에 한 줄씩 쓴다"는 의도가
   있는 두 곳(히어로 도입부, 각 밴드 머리글)에만 붙인다.
   나머지 구역의 모션은 밑줄 스와이프 / 카운트업 / 분필선 긋기 / 점선 행진이 담당한다. */
[data-reveal] { opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
[data-reveal].is-in { opacity: 1; transform: none; }

/* ── 히어로 ───────────────────────────── */
.hero { padding: 72px 0 0; text-align: center; }
.eyebrow { font-family: var(--mono); font-size: 12px; letter-spacing: .16em; color: var(--mint); margin-bottom: 22px; }
.hero__h1 {
  font-family: var(--display); font-weight: 400;
  font-size: clamp(2.3rem, 8.4vw, 5.4rem);
  line-height: 1.16; letter-spacing: -.015em;
}
/* 형광펜처럼 글자 몸통을 덮으면 크림 글자 위 레몬(1.1:1)이 되어 못 읽는다.
   글자 아래에 분필을 긋는 방식으로 바꾼다 — 판독성 손실 0, 스와이프는 그대로.
   ::after(절대배치)로 그리면 좁은 화면에서 문구가 두 줄로 끊길 때 밑줄이 한 점으로
   찌그러진다. 배경으로 그려 box-decoration-break로 줄마다 이어지게 한다. */
.hl {
  color: var(--chalk); padding: 0 .04em .06em;
  background-color: transparent;   /* <mark>의 UA 기본 노란 배경을 지운다 */
  background-image: linear-gradient(var(--lemon), var(--lemon));
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0 .085em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
  transition: background-size .8s var(--ease) .45s;
}
.hero__h1.is-in .hl { background-size: 100% .085em; }
.hero__src { font-family: var(--mono); font-size: 12px; color: var(--chalk-3); margin-top: 18px; }

.cta { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 32px 0 10px; }
.btn {
  display: inline-flex; align-items: baseline; gap: 10px;
  font-family: var(--mono); font-size: 13px; letter-spacing: .04em;
  padding: 15px 26px; border: 2px solid var(--lemon); border-radius: 0;
  transition: background .25s var(--ease), color .25s var(--ease), transform .25s var(--ease);
}
.btn b { font-family: var(--display); font-size: 19px; font-weight: 400; letter-spacing: 0; }
.btn--solid { background: var(--lemon); color: #101714; }
.btn--solid:hover, .btn--solid:focus-visible { background: transparent; color: var(--lemon); transform: translateY(-3px); }
.btn--solid:active { transform: translateY(0); }
/* disabled 대신 aria-disabled — 초점이 가고 설명(cta__note)이 읽힌다 */
.btn--ghost { border-color: var(--line); border-style: dashed; color: var(--chalk-3); }
.btn--ghost[aria-disabled="true"] { cursor: not-allowed; }
.btn--ghost b { color: var(--chalk-2); }
.cta__note { font-size: 13px; color: var(--chalk-3); font-family: var(--mono); }

/* ── 사진 자리 ─────────────────────────────────────────
   비어 있는 사각형이 아니라 "촬영 지시서가 붙은 자리"로 보이게 한다.
   안쪽 파선 프레임 = 트리밍 가이드, 모서리 4개의 분필 자국 = 크롭 마크. */
.photo__ph {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
  min-height: 250px; border: 1px solid var(--line);
  background-color: var(--bg-2);
  background-image: repeating-linear-gradient(-45deg, transparent 0 10px, rgba(233,231,222,.05) 10px 11px);
}
.photo__ph::before {
  content: ""; position: absolute; inset: 14px; pointer-events: none;
  background:
    linear-gradient(var(--chalk-3), var(--chalk-3)) 0 0 / 22px 1px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 0 0 / 1px 22px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 100% 0 / 22px 1px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 100% 0 / 1px 22px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 0 100% / 22px 1px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 0 100% / 1px 22px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 100% 100% / 22px 1px no-repeat,
    linear-gradient(var(--chalk-3), var(--chalk-3)) 100% 100% / 1px 22px no-repeat;
  opacity: .55;
}
.photo--band { margin-top: 64px; }
.photo--band .photo__ph { min-height: clamp(190px, 25vw, 306px); border-left: 0; border-right: 0; }
.photo__tag { font-family: var(--mono); font-size: 11px; letter-spacing: .16em; color: var(--lemon); border: 1px solid var(--lemon); padding: 3px 10px; }
.photo__desc { font-family: var(--mono); font-size: 12px; color: var(--chalk-3); text-align: center; padding: 0 16px; }
.photo__cap {
  max-width: 76rem; margin: 14px auto 0; padding: 0 22px;
  font-family: var(--mono); font-size: 11.5px; color: var(--chalk-3); text-align: center;
}

/* ── 밴드 공통 ────────────────────────── */
/* 밴드 리듬: 어둠(기본) → 밝음 → 어둠 → 더 어둠(수치) → 어둠 → 밝음 → 어둠.
   상하 여백도 밴드 성격에 따라 다르게 준다(수치 밴드는 더 넉넉히). */
.band { padding: 90px 0; border-top: 1px solid var(--line); }
.band--light { background: var(--light); color: #16201C; border-top: 0; padding: 100px 0; }
.band--light .band__no { color: var(--ink-2); }
.band--light .band__lead, .band--light .band__foot { color: #3E4A43; }
.band--light .badge { border-color: #3A574A; color: #24382E; }
.band--light .link { color: #1B4436; }
.band--light .link:hover { color: #16201C; background: var(--lemon); }
.band--accent { background: #090E0C; border-top-color: #090E0C; padding: 104px 0 96px; }
.band__head { max-width: 44rem; margin: 0 auto 46px; text-align: center; }
.band__no { font-family: var(--mono); font-size: 12px; letter-spacing: .24em; color: var(--mint); margin-bottom: 12px; }
.band__h2 { font-family: var(--display); font-weight: 400; font-size: clamp(1.7rem, 4.6vw, 2.9rem); line-height: 1.3; letter-spacing: -.01em; }
.band__h2 em {
  font-style: normal; color: var(--lemon); position: relative; display: inline-block;
  isolation: isolate;   /* 없으면 밝은 밴드의 z-index:-1 하이라이트가 섹션 배경 뒤로 깔려 사라진다 */
}
.band__h2 em::after {
  content: ""; position: absolute; left: -.06em; right: -.06em; bottom: .04em; height: .1em;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform .7s var(--ease) .15s;
}
.band__h2.is-drawn em::after { transform: scaleX(1); }
/* 밝은 밴드에서는 잉크 글자 + 레몬 형광펜(잉크 위 레몬 = 12:1) */
.band--light .band__h2 em { color: #16201C; }
.band--light .band__h2 em::after { height: .36em; bottom: 0; background: var(--lemon); z-index: -1; }
.band__lead { margin-top: 14px; font-size: 15px; color: var(--chalk-2); }
.band__foot { margin-top: 24px; font-family: var(--mono); font-size: 12px; color: var(--chalk-3); text-align: center; }

/* ── 01 카드 ──────────────────────────── */
.cards { display: grid; gap: 18px; }
@media (min-width: 840px) { .cards { grid-template-columns: repeat(3, 1fr); } }
/* 카드 등장 = fade-up이 아니라 상단 분필선을 왼쪽에서 오른쪽으로 긋는다(판서 동작). */
.card {
  position: relative;
  padding: 34px 24px 34px; background: var(--bg-2);
  border: 1px solid var(--line); border-top: 0;
  transition: transform .3s var(--ease), background .3s var(--ease);
}
.card::before {
  content: ""; position: absolute; left: -1px; right: -1px; top: 0; height: 4px;
  background: var(--lemon); transform: scaleX(0); transform-origin: left;
  transition: transform .55s var(--ease);
}
.cards.is-drawn .card::before { transform: scaleX(1); }
.cards.is-drawn .card:nth-child(2)::before { transition-delay: .16s; }
.cards.is-drawn .card:nth-child(3)::before { transition-delay: .32s; }
.card:hover { transform: translateY(-5px); background: var(--bg-3); }
.card--pending::before {
  background: repeating-linear-gradient(90deg, var(--chalk-3) 0 7px, transparent 7px 14px);
}
.card__no { font-family: var(--mono); font-size: 11.5px; letter-spacing: .2em; color: var(--chalk-3); margin-bottom: 10px; }
.card__name { font-family: var(--display); font-weight: 400; font-size: 1.7rem; margin-bottom: 12px; }
.card__desc { font-size: 15.5px; color: var(--chalk-2); }
.card__src { margin-top: 14px; font-family: var(--mono); font-size: 11.5px; color: var(--chalk-3); }

/* ── 02 판서 ──────────────────────────── */
.board { display: grid; gap: 0; border: 2px solid #16201C; background: #F0EDE3; }
.board__col { padding: 34px 28px 38px; }
.board__col--b { background: #16201C; color: var(--chalk); }
.board__kind { font-family: var(--mono); font-size: 11.5px; letter-spacing: .2em; margin-bottom: 8px; color: var(--ink-2); }
.board__col--b .board__kind { color: var(--mint); }
.board__name { font-family: var(--display); font-weight: 400; font-size: 1.9rem; margin-bottom: 22px; }
.board__col--b .board__name { color: var(--lemon); }
.board__list li { padding: 11px 0; border-top: 1px solid rgba(22,32,28,.22); font-size: 15px; }
.board__col--b .board__list li { border-color: var(--line); }
.board__list b { display: block; font-family: var(--mono); font-size: 11px; letter-spacing: .12em; font-weight: 400; color: var(--ink-2); }
.board__col--b .board__list b { color: var(--chalk-3); }
/* 커넥터 칸이 오른쪽 다크 칸과 같은 색이면 두 칸이 하나로 붙어 좌우 대칭이 무너진다.
   한 단계 더 어둡게 두고 양옆에 경계를 세워 "사이 통로"로 읽히게 한다. */
.board__link {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
  padding: 24px 16px; background: var(--bg); color: var(--mint);
  border-top: 2px solid #16201C; border-bottom: 2px solid #16201C;
}
.board__svg { width: 120px; height: 40px; }
.board__path { stroke-dasharray: 6 6; animation: march 1.4s linear infinite; }
@keyframes march { to { stroke-dashoffset: -24; } }
.board__caption { font-family: var(--mono); font-size: 11.5px; letter-spacing: .08em; text-align: center; line-height: 1.6; }
@media (min-width: 860px) {
  .board { grid-template-columns: 1fr 176px 1fr; }
  .board__link { border-top: 0; border-bottom: 0; border-left: 2px solid #16201C; border-right: 2px solid #16201C; }
}

/* ── 03 원장 ──────────────────────────── */
.teacher { display: grid; gap: 34px; max-width: 62rem; margin: 0 auto; }
@media (min-width: 880px) { .teacher { grid-template-columns: 320px minmax(0, 1fr); gap: 50px; align-items: start; } }
.photo--portrait .photo__ph { min-height: 360px; }
.teacher__role { font-family: var(--mono); font-size: 12px; letter-spacing: .2em; color: var(--mint); }
.teacher__name { font-family: var(--display); font-weight: 400; font-size: 2.6rem; margin-bottom: 22px; }
.quote { padding: 24px 26px; background: var(--bg-2); border-left: 4px solid var(--lemon); margin-bottom: 28px; }
.quote p { font-family: var(--display); font-weight: 400; font-size: clamp(1.2rem, 3vw, 1.7rem); line-height: 1.45; }
.quote cite { display: block; margin-top: 10px; font-family: var(--mono); font-size: 11.5px; font-style: normal; color: var(--chalk-3); }
.spec { border-top: 1px solid var(--line); margin-bottom: 24px; }
.spec > div { display: grid; grid-template-columns: 96px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.spec dt { font-family: var(--mono); font-size: 12px; letter-spacing: .08em; color: var(--chalk-3); }
.spec--wide > div { grid-template-columns: 76px 1fr; }
.teacher__note { max-width: 40rem; font-size: 15px; color: var(--chalk-2); margin-bottom: 14px; }
.teacher__flag { max-width: 40rem; font-size: 13.5px; color: var(--chalk-3); }

/* ── 04 수치 ──────────────────────────── */
/* 2단 위계: 대표 지표 2개는 크게, 모집단·보조 지표 2개는 한 단계 작게.
   네 칸을 같은 크기로 두면 "후기 7건"이 평점과 같은 무게로 읽혀 오히려 빈약해 보인다. */
.stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px; background: var(--line); }
.stat { background: #141D19; text-align: center; }
.stat--lead { padding: 46px 18px 38px; }
.stat--sub  { padding: 30px 18px 26px; background: #101815; }
.stat__num { font-family: var(--display); font-weight: 400; line-height: 1; color: var(--lemon); }
.stat--lead .stat__num { font-size: clamp(3rem, 11vw, 5.4rem); letter-spacing: -.02em; }
.stat--sub  .stat__num { font-size: clamp(1.9rem, 6vw, 2.7rem); color: var(--chalk); }
.stat__unit { font-family: var(--mono); font-size: 12.5px; color: var(--chalk-3); margin-top: 6px; }
.stat__label { font-size: 13.5px; color: var(--chalk-2); margin-top: 10px; }
.stat--sub .stat__label { font-size: 12.5px; }
.stats__src { text-align: center; font-family: var(--mono); font-size: 11.5px; color: var(--chalk-3); margin-top: 16px; }
.tags { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 28px; }
.tags li { font-family: var(--mono); font-size: 12px; border: 1px solid var(--line); padding: 6px 14px; color: var(--chalk-2); }
.slot { margin: 32px auto 0; max-width: 46rem; padding: 26px 24px; border: 2px dashed var(--chalk-3); text-align: center; }
.slot__title { font-family: var(--display); font-weight: 400; font-size: 1.25rem; color: var(--chalk-2); }
.slot__desc { margin-top: 10px; font-size: 14px; color: var(--chalk-3); }

/* ── 05 표 ────────────────────────────── */
.tablewrap { overflow-x: auto; max-width: 52rem; margin: 0 auto; }
.fee { min-width: 480px; font-size: 15.5px; }
.fee th, .fee td { padding: 15px 16px; text-align: left; border-bottom: 1px solid var(--line); }
.fee th:first-child { width: 46%; }
.fee thead th { font-family: var(--mono); font-size: 11.5px; letter-spacing: .14em; color: var(--chalk-3); font-weight: 400; border-bottom: 2px solid var(--lemon); }
/* 숫자열은 오른쪽 정렬이므로 머리글도 같은 축에 세운다 */
.fee thead th:not(:first-child) { text-align: right; }
.fee tbody th { font-weight: 400; }
.fee tbody td { font-family: var(--mono); text-align: right; color: var(--chalk-2); }
.fee tbody td:last-child { color: var(--lemon); font-weight: 600; }
.fee tbody tr { transition: background .2s var(--ease); }
.fee tbody tr:hover { background: var(--bg-2); }

/* ── 06 소식 ──────────────────────────── */
.news { max-width: 58rem; margin: 0 auto; border-top: 2px solid #16201C; }
.news__item { padding: 22px 0; border-bottom: 1px solid rgba(22,32,28,.24); }
.news__date { font-family: var(--mono); font-size: 12px; letter-spacing: .08em; color: var(--ink-2); }
.news__title { font-family: var(--display); font-weight: 400; font-size: clamp(1.05rem, 2.4vw, 1.35rem); line-height: 1.5; margin: 6px 0 4px; }
.news__from { font-family: var(--mono); font-size: 11.5px; color: var(--ink-2); }
/* 자리표시 항목: 투명도를 낮춰 지우는 대신 파선 테두리 + 한 단계 작은 조판으로
   "아직 안 들어온 칸"임을 밝힌다(opacity로 죽이면 대비비가 함께 무너진다). */
.news__item--slot {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px;
  padding: 13px 0 13px 16px; border-left: 2px dashed rgba(22,32,28,.32);
}
.news__item--slot .news__title {
  font-family: var(--serif); font-size: 15px; line-height: 1.6; color: #3E4A43; margin: 0;
}
.news__item--slot .news__date { order: -1; }

/* ── 07 오시는 길 ─────────────────────── */
.visit { display: grid; gap: 32px; }
@media (min-width: 880px) { .visit { grid-template-columns: 1fr 1fr; gap: 46px; align-items: start; } }

/* ── 푸터 ─────────────────────────────── */
.foot { padding: 50px 0 64px; background: var(--bg-2); border-top: 1px solid var(--line); }
.foot__brand { font-family: var(--display); font-weight: 400; font-size: 1.3rem; }
.foot__addr { font-size: 14px; color: var(--chalk-2); margin-top: 8px; }
.foot__links { display: flex; gap: 20px; margin: 18px 0 22px; font-family: var(--mono); font-size: 13px; }
.foot__note { font-size: 12.5px; color: var(--chalk-3); max-width: 44rem; }
.foot__theme { margin-top: 18px; font-family: var(--mono); font-size: 11.5px; color: var(--chalk-3); }

/* 좁은 화면 헤더.
   1) "미확인" 배지는 어떤 화면에서도 숨기지 않는다 — 지우면 확인되지 않은 날짜에서
      계산한 숫자만 남는다. 대신 수식어("2027학년도", "시행일")만 접는다.
   2) 900px 미만에서 메뉴가 통째로 사라져 7개 섹션으로 갈 방법이 없었다.
      드로어(JS) 대신 가로로 미는 분필 트레이 한 줄로 항상 노출한다. */
.dday { flex-wrap: wrap; row-gap: 2px; min-width: 0; }
@media (max-width: 899px) {
  .wide-only { display: none; }
  .topbar__in { padding: 10px 0 0; column-gap: 10px; }
  .brand__text { font-size: 16px; }
  .dday { margin-left: auto; }
  .dday__label { font-size: 10.5px; }
  .dday__num { font-size: 16px; }
  .topnav {
    display: flex; order: 3; width: 100%; margin: 10px -22px 0; padding: 0 22px;
    gap: 0; overflow-x: auto; overscroll-behavior-x: contain;
    border-top: 1px solid var(--line); scrollbar-width: none;
  }
  .topnav::-webkit-scrollbar { display: none; }
  .topnav a { flex: 0 0 auto; padding: 11px 13px; font-size: 12.5px; }
  .topnav a + a { border-left: 1px solid var(--line); }
  .topnav a:first-child { padding-left: 0; }
  .topnav a::after { bottom: 6px; }
}
/* 고정 헤더에 앵커 대상이 가리지 않도록 */
section[id] { scroll-margin-top: 118px; }
@media (min-width: 900px) { section[id] { scroll-margin-top: 84px; } }

/* ── 모션 최소화 대응 ─────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }
  .ticker__track { animation: none; transform: none; }
  .ticker__set:nth-child(2) { display: none; }
  .board__path { animation: none; }
  [data-reveal] { opacity: 1; transform: none; }
  .hl { background-size: 100% .085em !important; }
  .band__h2 em::after,
  .card::before { transform: scaleX(1) !important; }
}
.reduce-motion .ticker__track { animation: none; }
.reduce-motion .ticker__set:nth-child(2) { display: none; }
