/*
 자동 생성 파일 — 직접 고치지 말고 src/css/ 의 조각 파일을 고친 뒤 `node build-src.js` 를 실행하세요.
 구성(조각 파일 → 내용):
   src/css/00-base.css — 기본 규칙(레이아웃, 오버레이, 버튼)
   src/css/01-fonts.css — 글꼴(Noto Sans KR 700·900, Fredoka) — 앱 안에 넣은 파일. tools/get_fonts.py 로 만든다
   src/css/10-icons-intro-start.css — 아이콘, 인트로, 시작 화면
   src/css/20-guide-ranking.css — 도감·랭킹 화면(배경 장식 포함)
   src/css/30-gameover-revive.css — 게임오버·부활 카운트다운
   src/css/40-ranking-list-account.css — 랭킹 목록, 계정 영역
   src/css/50-ads-compact.css — 광고 오버레이, 작은 화면 보정
   src/css/60-title-touch.css — 시작 화면 제목, 터치 방향 버튼
   src/css/70-tutorial-progress-settings.css — 튜토리얼, 기록(출석체크·업적·통계), 설정 화면
   src/css/80-design-system-v2.css — 디자인 시스템 v2(색·버튼·리본·패널) — 마지막에 덧씌움
   src/css/90-charselect.css — 캐릭터 고르기 화면(물쫀득이 / 불쫀득이) — Penpot 시안 "1-1/1-2 캐릭터 고르기"(사용 가능/잠김, EN 포함)대로
 */
/* ## 기본 규칙(레이아웃, 오버레이, 버튼) */
* {
  box-sizing: border-box;
}

/* 브랜드 컬러 토큰 — 화면 곳곳에 리터럴 hex로 흩어져 있던 값들 중
   반복적으로 쓰이는(3회 이상) 색만 모았다. 화면별로 한 번씩만 쓰이는
   고유 포인트 컬러(랭킹 뒤로가기 파랑, 이름변경 보라 등)는 그 자체로
   의미가 명확해 변수화하지 않는다 */
:root {
  --color-accent: #facc15;
  --color-on-accent: #422006;
  --color-bg: #0f172a;
  --color-text-light: #f8fafc;
  --color-outline-dark: #1e3a5f;
  --glow-inner: #fff7b0;
  --glow-outer: #eab308;
  --glow-text: #fef9c3;
  /* 브라우저 기본 ease/ease-in-out은 펀치가 약해서 의도된 느낌이 덜 산다 —
     진입/피드백용 강한 ease-out과, 화면 위에서 모양이 바뀌는(morph)
     전환용 ease-in-out을 커스텀 커브로 정의 */
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
}

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  background: var(--color-bg);
  overflow: hidden;
  font-family: "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  /* #game-container is letterboxed to a fixed 9:16 box below — center it in
     whatever leftover space the browser window has on either axis */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 세로 방향 고정용 안내 오버레이 — 이 게임은 위에서 아래로 떨어지는
   구조라 세로 전용으로 설계됨. PWA/TWA로 설치된 상태면 manifest.json의
   orientation 필드가 OS 차원에서 회전 자체를 막아주지만, 일반 브라우저
   탭에서는 그게 안 통하므로 여기서 직접 가로 모드를 가로막는다.
   (max-height: 500px)로 태블릿 가로모드나 데스크톱 가로 창은 건드리지
   않고, (pointer: coarse)로 마우스 쓰는 데스크톱은 아예 대상에서 제외 —
   실제 손가락으로 쥐는 작은 화면 기기가 가로로 눕혀졌을 때만 뜬다. */
#rotate-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--color-bg);
  color: var(--color-text-light);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  text-align: center;
  padding: 24px;
}

#rotate-overlay p {
  margin: 0;
  font-size: 1.1rem;
  font-weight: bold;
}

.rotate-overlay-icon {
  font-size: 3rem;
  animation: rotate-hint 1.6s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  .rotate-overlay-icon {
    animation: none;
  }
}

@keyframes rotate-hint {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(-90deg); }
}

@media (orientation: landscape) and (max-height: 500px) and (pointer: coarse) {
  #rotate-overlay {
    display: flex;
  }
}

/* 태블릿(--ui-s > 1): 폰 폭으로 짠 상자를 --ui-s배 확대한다(가운데 기준이라 화면 가운데에 그대로 놓이고, 보이는 크기는 예전과 같다). 폰은 transform이 없다 */
html.ui-zoom #game-container { transform: scale(var(--ui-s)); }
#game-container {
  position: relative;
  /* fixed 9:16 letterbox: pick whichever of width/height the viewport
     constrains first, then cap the other via the same ratio computed from
     it — this always lands on an exact 9:16 box, pillarboxed (bars left/
     right) on a wide window or letterboxed (bars top/bottom) on a
     taller-than-9:16 one, with html/body's flex centering + background
     (see above) filling the bars */
  width: calc(100vw / var(--ui-s, 1));
  height: calc(100vh / var(--ui-s, 1));
  max-width: calc(100vh * 9 / 16 / var(--ui-s, 1));
  /* 요즘 폰은 9:19.5~9:21 처럼 더 길다 — 9:16 상자에 가두면 위아래가 크게 비므로 9:20까지는 화면을 꽉 채운다
     (게임 화면 크기는 실제 영역을 따라 정해지고, 오버레이도 container query라 길이에 맞춰 줄어든다) */
  max-height: calc(100vw * 20 / 9 / var(--ui-s, 1));
  /* 모바일 브라우저는 주소창이 보이고 숨겨짐에 따라 100vh가 달라진다 — 지원하는 곳은 실제로 보이는 높이(dvh)를 쓴다 */
  height: calc(100dvh / var(--ui-s, 1));
  max-width: calc(100dvh * 9 / 16 / var(--ui-s, 1));
  margin: 0 auto;
  /* 노치(카메라 구멍)가 있는 폰: 위쪽 안전 영역만큼 비워 점수·생명 표시가 가려지지 않게 한다(없는 기기는 0) */
  padding-top: max(env(safe-area-inset-top, 0px), var(--safe-area-inset-top, 0px));
  padding-bottom: env(safe-area-inset-bottom, 0px);
  display: flex;
  flex-direction: column;
  background: var(--color-bg);
  /* #play-area already clips its own overflow, but #gameover-screen's
     wide spotlight-beam div (width up to 560px, centered via
     translateX(-50%)) is a sibling outside #play-area with no clipping
     ancestor of its own — it was overflowing past this container's edge
     and widening the page's scrollable area, which on mobile showed up as
     the whole layout shifted right with a horizontal scrollbar. clipping
     here (once, at the top-level fixed-width wrapper) covers every
     current and future overlay instead of adding overflow-x:hidden to
     each one individually */
  overflow: hidden;
}

#play-area {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  /* 오버레이가 화면 크기(cqw/cqh)에 맞춰 스스로 줄어들 수 있게 한다 */
  container-type: size;
  background: var(--color-bg); /* 소수 픽셀 틈이 생겨도 밝은 선으로 보이지 않게 게임 바탕과 같은 어두운 색 */
}

#game-canvas {
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
}

/* 화면 전환(시작↔랭킹↔도감↔설정↔일시정지↔게임오버)이 전부 .hidden
   토글(display:none↔flex)이라 지금까지 전환 애니메이션이 전혀 없었다.
   display:none→flex로 바뀌는 순간 CSS 애니메이션은 항상 처음부터
   다시 재생되므로(전환과 달리 keyframes는 display:none 상태에서 멈춰
   있다가 보이는 순간 재시작한다), 이 한 곳만 고치면 game.js의 67곳
   .hidden 토글 전부에 자동으로 적용된다 */
@keyframes overlay-in {
  from {
    opacity: 0;
    transform: scale(0.97);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  /* 내용이 화면보다 길어지면 그냥 center로는 위쪽이 화면 밖으로 잘려
     스크롤로도 못 올라간다(제목이 잘리던 원인) — safe center는 넘칠 땐
     위에서부터 시작해 끝까지 스크롤되게 한다. 미지원 브라우저는 위의
     center 선언이 그대로 쓰인다 */
  justify-content: safe center;
  gap: 12px;
  padding: 24px;
  text-align: center;
  background: rgba(15, 23, 42, 0.72);
  color: var(--color-text-light);
  overflow-y: auto;
  /* #game-container/#play-area의 overflow:hidden이 게임오버 스포트라이트
     빔(폭 560px까지, translateX(-50%)로 일부러 화면 밖까지 넓게 퍼짐)
     같은 요소를 막아주는 유일한 방어선이었다 — 화면(.overlay) 자신에게도
     같은 클리핑을 한 겹 더 둬서, 상위 컨테이너 쪽에 문제가 생겨도 최소한
     이 화면 자체는 가로로 넘치지 않는다 */
  overflow-x: hidden;
  animation: overlay-in 200ms var(--ease-out);
}

@media (prefers-reduced-motion: reduce) {
  .overlay,
  .ad-overlay {
    animation: none;
  }
}

.overlay h1 {
  margin: 0 0 8px;
  font-size: 2rem;
  font-family: 'Noto Sans KR', "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
}

.overlay p {
  margin: 0;
  line-height: 1.5;
}

.overlay button {
  /* was 16px — .overlay's own flex `gap: 12px` already spaces every
     sibling, so this margin used to stack on top of that and eat into the
     9:16 letterbox's now-tighter vertical budget (see #game-container's
     max-height). trimmed rather than removed so a lone button right after
     a paragraph still gets a little breathing room */
  margin-top: 6px;
  padding: 12px 32px;
  font-size: 1.1rem;
  font-weight: bold;
  border: none;
  border-radius: 999px;
  background: var(--color-accent);
  color: var(--color-on-accent);
  cursor: pointer;
  touch-action: manipulation;
  transition: transform 120ms var(--ease-out);
}

.overlay button:active {
  transform: scale(0.96);
}

/* 핵심 CTA(게임 시작/다시하기/계속하기/메인으로/광고보고 부활하기)만
   골라 이름입력창 버튼과 같은 "젤리 버튼" 촉각 피드백을 준다 — 두꺼운
   아래쪽 테두리가 눌리는 순간 납작해지는 느낌. 아이콘/탭/소형 버튼 등
   나머지는 기존의 단순 scale 피드백을 그대로 유지한다 */
#start-button,
#restart-button,
#resume-button,
#gameover-menu-button,
#register-score-button,
#continue-ad-button {
  border: 2px solid #b45309;
  box-shadow: 0 4px 0 #b45309;
  transition: transform 120ms var(--ease-out), box-shadow 120ms var(--ease-out);
}

/* longest label of any CTA (📺 + "광고보고 부활하기") — the base 32px side
   padding wrapped it to 2 lines on a narrow 9:16-letterboxed phone, which
   on top of every other element's own height pushed the gameover screen
   past its available height into a scrollbar (see .overlay overflow-y) */
#gameover-screen #continue-ad-button {
  padding-left: 16px;
  padding-right: 16px;
  font-size: clamp(0.78rem, calc(4.3 * var(--ui-vw, 1vw)), 1rem);
  /* 한글 폰트가 넓게 렌더링되는 폰에서 마지막 글자("기")만 다음 줄로 떨어지지 않게 */
  white-space: nowrap;
}

#start-button:active,
#restart-button:active,
#resume-button:active,
#gameover-menu-button:active,
#register-score-button:active,
#continue-ad-button:active {
  transform: translateY(4px);
  box-shadow: 0 0 0 #b45309;
}

/* game.js가 실제로 여러 버튼에 disabled를 거는데(점수 등록 확인/광고보고
   부활하기/이름 변경 저장 등) 지금까지 스타일이 없어서 눌러도 되는
   버튼처럼 보였다 */
.overlay button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

#continue-ad-button:disabled {
  box-shadow: none;
}

.overlay button.secondary-button {
  background: rgba(255, 255, 255, 0.14);
  color: var(--color-text-light);
  border: 1.5px solid rgba(255, 255, 255, 0.4);
}

.overlay button.small-button {
  margin-top: 0;
  padding: 8px 16px;
  font-size: 0.85rem;
  background: rgba(255, 255, 255, 0.14);
  color: var(--color-text-light);
  border: 1.5px solid rgba(255, 255, 255, 0.4);
}

.overlay button.back-button {
  background: rgba(255, 255, 255, 0.14);
  color: var(--color-text-light);
  border: 1.5px solid rgba(255, 255, 255, 0.4);
}

/* wins over the plain .back-button color above so the neon glow shows */
.overlay button.back-button.neon-sign-text {
  color: var(--glow-text);
  animation: neon-flicker 1.8s infinite;
}

.menu-row {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  width: 100%;
  max-width: 320px;
}

/* 게임오버 화면에서 다시하기/메인으로 버튼 자리를 대신 차지하는 이름
   입력 폼 — 같은 폭 제약으로 자리를 바꿔도 레이아웃이 흔들리지 않는다 */
#gameover-register-form {
  margin-top: 8px;
  max-width: 320px;
}

.menu-row button {
  flex: 1;
  margin-top: 0;
  /* two buttons share the row, so the base 32px side padding leaves too
     little room for their text (다시하기/메인으로) once the 9:16 letterbox
     narrows the window — that wrapped to 2 lines and pushed the row taller
     than it needed to be, per user report */
  padding-left: 12px;
  padding-right: 12px;
}

.high-score {
  color: var(--color-accent);
  font-weight: bold;
}

.final-score {
  font-size: 1.4rem;
  font-weight: bold;
}

.new-best {
  color: #4ade80;
  font-weight: bold;
}

.hint-text {
  font-size: 0.85rem;
  color: #cbd5e1;
}

/* ## 글꼴(Noto Sans KR 700·900, Fredoka) — 앱 안에 넣은 파일. tools/get_fonts.py 로 만든다 */
@font-face { font-family: 'Fredoka'; font-style: normal; font-weight: 400 700; font-display: swap; src: url('assets/font/fredoka-001.woff2') format('woff2'); unicode-range: U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }
@font-face { font-family: 'Fredoka'; font-style: normal; font-weight: 400 700; font-display: swap; src: url('assets/font/fredoka-002.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Fredoka'; font-style: normal; font-weight: 400 700; font-display: swap; src: url('assets/font/fredoka-003.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-001.woff2') format('woff2'); unicode-range: U+f9ca-fa0b, U+ff03-ff05, U+ff07, U+ff0a-ff0b, U+ff0d-ff19, U+ff1b, U+ff1d, U+ff20-ff5b, U+ff5d, U+ffe0-ffe3, U+ffe5-ffe6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-002.woff2') format('woff2'); unicode-range: U+f92f-f980, U+f982-f9c9; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-003.woff2') format('woff2'); unicode-range: U+d723-d728, U+d72a-d733, U+d735-d748, U+d74a-d74f, U+d752-d753, U+d755-d757, U+d75a-d75f, U+d762-d764, U+d766-d768, U+d76a-d76b, U+d76d-d76f, U+d771-d787, U+d789-d78b, U+d78d-d78f, U+d791-d797, U+d79a, U+d79c, U+d79e-d7a3, U+f900-f909, U+f90b-f92e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-004.woff2') format('woff2'); unicode-range: U+d679-d68b, U+d68e-d69e, U+d6a0, U+d6a2-d6a7, U+d6a9-d6c3, U+d6c6-d6c7, U+d6c9-d6cb, U+d6cd-d6d3, U+d6d5-d6d6, U+d6d8-d6e3, U+d6e5-d6e7, U+d6e9-d6fb, U+d6fd-d717, U+d719-d71f, U+d721-d722; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-005.woff2') format('woff2'); unicode-range: U+d5bc-d5c7, U+d5ca-d5cb, U+d5cd-d5cf, U+d5d1-d5d7, U+d5d9-d5da, U+d5dc, U+d5de-d5e3, U+d5e6-d5e7, U+d5e9-d5eb, U+d5ed-d5f6, U+d5f8, U+d5fa-d5ff, U+d602-d603, U+d605-d607, U+d609-d60f, U+d612-d613, U+d616-d61b, U+d61d-d637, U+d63a-d63b, U+d63d-d63f, U+d641-d647, U+d64a-d64c, U+d64e-d653, U+d656-d657, U+d659-d65b, U+d65d-d666, U+d668, U+d66a-d678; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-006.woff2') format('woff2'); unicode-range: U+d507, U+d509-d50b, U+d50d-d513, U+d515-d53b, U+d53e-d53f, U+d541-d543, U+d545-d54c, U+d54e, U+d550, U+d552-d557, U+d55a-d55b, U+d55d-d55f, U+d561-d564, U+d566-d567, U+d56a, U+d56c, U+d56e-d573, U+d576-d577, U+d579-d583, U+d585-d586, U+d58a-d5a4, U+d5a6-d5bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-007.woff2') format('woff2'); unicode-range: U+d464-d477, U+d47a-d47b, U+d47d-d47f, U+d481-d487, U+d489-d48a, U+d48c, U+d48e-d4e7, U+d4e9-d503, U+d505-d506; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-008.woff2') format('woff2'); unicode-range: U+d3bf-d3c7, U+d3ca-d3cf, U+d3d1-d3eb, U+d3ee-d3ef, U+d3f1-d3f3, U+d3f5-d3fb, U+d3fd-d400, U+d402-d45b, U+d45d-d463; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-009.woff2') format('woff2'); unicode-range: U+d2ff, U+d302-d304, U+d306-d30b, U+d30f, U+d311-d313, U+d315-d31b, U+d31e, U+d322-d324, U+d326-d327, U+d32a-d32b, U+d32d-d32f, U+d331-d337, U+d339-d33c, U+d33e-d37b, U+d37e-d37f, U+d381-d383, U+d385-d38b, U+d38e-d390, U+d392-d397, U+d39a-d39b, U+d39d-d39f, U+d3a1-d3a7, U+d3a9-d3aa, U+d3ac, U+d3ae-d3b3, U+d3b5-d3b7, U+d3b9-d3bb, U+d3bd-d3be; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-010.woff2') format('woff2'); unicode-range: U+d257-d27f, U+d281-d29b, U+d29d-d29f, U+d2a1-d2ab, U+d2ad-d2b7, U+d2ba-d2bb, U+d2bd-d2bf, U+d2c1-d2c7, U+d2c9-d2ef, U+d2f2-d2f3, U+d2f5-d2f7, U+d2f9-d2fe; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-011.woff2') format('woff2'); unicode-range: U+d1b4, U+d1b6-d1f3, U+d1f5-d22b, U+d22e-d22f, U+d231-d233, U+d235-d23b, U+d23d-d240, U+d242-d256; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-012.woff2') format('woff2'); unicode-range: U+d105-d12f, U+d132-d133, U+d135-d137, U+d139-d13f, U+d141-d142, U+d144, U+d146-d14b, U+d14e-d14f, U+d151-d153, U+d155-d15b, U+d15e-d187, U+d189-d19f, U+d1a2-d1a3, U+d1a5-d1a7, U+d1a9-d1af, U+d1b2-d1b3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-013.woff2') format('woff2'); unicode-range: U+d04b-d04f, U+d051-d057, U+d059-d06b, U+d06d-d06f, U+d071-d073, U+d075-d07b, U+d07e-d0a3, U+d0a6-d0a7, U+d0a9-d0ab, U+d0ad-d0b3, U+d0b6, U+d0b8, U+d0ba-d0bf, U+d0c2-d0c3, U+d0c5-d0c7, U+d0c9-d0cf, U+d0d2, U+d0d6-d0db, U+d0de-d0df, U+d0e1-d0e3, U+d0e5-d0eb, U+d0ee-d0f0, U+d0f2-d104; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-014.woff2') format('woff2'); unicode-range: U+cfa2-cfc3, U+cfc5-cfdf, U+cfe2-cfe3, U+cfe5-cfe7, U+cfe9-cff4, U+cff6-cffb, U+cffd-cfff, U+d001-d003, U+d005-d017, U+d019-d033, U+d036-d037, U+d039-d03b, U+d03d-d04a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-015.woff2') format('woff2'); unicode-range: U+cef0-cef3, U+cef6, U+cef9-ceff, U+cf01-cf03, U+cf05-cf07, U+cf09-cf0f, U+cf11-cf12, U+cf14-cf1b, U+cf1d-cf1f, U+cf21-cf2f, U+cf31-cf53, U+cf56-cf57, U+cf59-cf5b, U+cf5d-cf63, U+cf66, U+cf68, U+cf6a-cf6f, U+cf71-cf84, U+cf86-cf8b, U+cf8d-cfa1; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-016.woff2') format('woff2'); unicode-range: U+ce3c-ce57, U+ce5a-ce5b, U+ce5d-ce5f, U+ce61-ce67, U+ce6a, U+ce6c, U+ce6e-ce73, U+ce76-ce77, U+ce79-ce7b, U+ce7d-ce83, U+ce85-ce88, U+ce8a-ce8f, U+ce91-ce93, U+ce95-ce97, U+ce99-ce9f, U+cea2, U+cea4-ceab, U+cead-cee3, U+cee6-cee7, U+cee9-ceeb, U+ceed-ceef; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-017.woff2') format('woff2'); unicode-range: U+cd92-cd93, U+cd96-cd97, U+cd99-cd9b, U+cd9d-cda3, U+cda6-cda8, U+cdaa-cdaf, U+cdb1-cdc3, U+cdc5-cdcb, U+cdcd-cde7, U+cde9-ce03, U+ce05-ce1f, U+ce22-ce34, U+ce36-ce3b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-018.woff2') format('woff2'); unicode-range: U+ccef-cd07, U+cd0a-cd0b, U+cd0d-cd1a, U+cd1c, U+cd1e-cd2b, U+cd2d-cd5b, U+cd5d-cd77, U+cd79-cd91; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-019.woff2') format('woff2'); unicode-range: U+cc3f-cc43, U+cc46-cc47, U+cc49-cc4b, U+cc4d-cc53, U+cc55-cc58, U+cc5a-cc5f, U+cc61-cc97, U+cc9a-cc9b, U+cc9d-cc9f, U+cca1-cca7, U+ccaa, U+ccac, U+ccae-ccb3, U+ccb6-ccb7, U+ccb9-ccbb, U+ccbd-cccf, U+ccd1-cce3, U+cce5-ccee; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-020.woff2') format('woff2'); unicode-range: U+cb91-cbd3, U+cbd5-cbe3, U+cbe5-cc0b, U+cc0e-cc0f, U+cc11-cc13, U+cc15-cc1b, U+cc1d-cc20, U+cc23-cc27, U+cc2a-cc2b, U+cc2d, U+cc2f, U+cc31-cc37, U+cc3a, U+cc3c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-021.woff2') format('woff2'); unicode-range: U+caf4-cb47, U+cb4a-cb90; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-022.woff2') format('woff2'); unicode-range: U+ca4a-ca4b, U+ca4e-ca4f, U+ca51-ca53, U+ca55-ca5b, U+ca5d-ca60, U+ca62-ca83, U+ca85-cabb, U+cabe-cabf, U+cac1-cac3, U+cac5-cacb, U+cacd-cad0, U+cad2, U+cad4-cad8, U+cada-caf3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-023.woff2') format('woff2'); unicode-range: U+c996-c997, U+c99a-c99c, U+c99e-c9bf, U+c9c2-c9c3, U+c9c5-c9c7, U+c9c9-c9cf, U+c9d2, U+c9d4, U+c9d7-c9d8, U+c9db, U+c9de-c9df, U+c9e1-c9e3, U+c9e5-c9e6, U+c9e8-c9eb, U+c9ee-c9f0, U+c9f2-c9f7, U+c9f9-ca0b, U+ca0d-ca28, U+ca2a-ca49; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-024.woff2') format('woff2'); unicode-range: U+c8e9-c8f4, U+c8f6-c8fb, U+c8fe-c8ff, U+c901-c903, U+c905-c90b, U+c90e-c910, U+c912-c917, U+c919-c92b, U+c92d-c94f, U+c951-c953, U+c955-c96b, U+c96d-c973, U+c975-c987, U+c98a-c98b, U+c98d-c98f, U+c991-c995; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-025.woff2') format('woff2'); unicode-range: U+c841-c84b, U+c84d-c86f, U+c872-c873, U+c875-c877, U+c879-c87f, U+c882-c884, U+c887-c88a, U+c88d-c8c3, U+c8c5-c8df, U+c8e1-c8e8; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-026.woff2') format('woff2'); unicode-range: U+c779-c77b, U+c77e-c782, U+c786, U+c78b, U+c78d, U+c78f, U+c792-c793, U+c795, U+c797, U+c799-c79f, U+c7a2, U+c7a7-c7ab, U+c7ae-c7bb, U+c7bd-c7c0, U+c7c2-c7c7, U+c7c9-c7dc, U+c7de-c7ff, U+c802-c803, U+c805-c807, U+c809, U+c80b-c80f, U+c812, U+c814, U+c817-c81b, U+c81e-c81f, U+c821-c823, U+c825-c82e, U+c830-c837, U+c839-c83b, U+c83d-c840; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-027.woff2') format('woff2'); unicode-range: U+c6bb-c6bf, U+c6c2, U+c6c4, U+c6c6-c6cb, U+c6ce-c6cf, U+c6d1-c6d3, U+c6d5-c6db, U+c6dd-c6df, U+c6e1-c6e7, U+c6e9-c6eb, U+c6ed-c6ef, U+c6f1-c6f8, U+c6fa-c703, U+c705-c707, U+c709-c70b, U+c70d-c716, U+c718, U+c71a-c71f, U+c722-c723, U+c725-c727, U+c729-c734, U+c736-c73b, U+c73e-c73f, U+c741-c743, U+c745-c74b, U+c74e-c750, U+c752-c757, U+c759-c773, U+c776-c777; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-028.woff2') format('woff2'); unicode-range: U+c5f5-c5fb, U+c5fe, U+c602-c605, U+c607, U+c609-c60f, U+c611-c61a, U+c61c-c623, U+c626-c627, U+c629-c62b, U+c62d, U+c62f-c632, U+c636, U+c638, U+c63a-c63f, U+c642-c643, U+c645-c647, U+c649-c652, U+c656-c65b, U+c65d-c65f, U+c661-c663, U+c665-c677, U+c679-c67b, U+c67d-c693, U+c696-c697, U+c699-c69b, U+c69d-c6a3, U+c6a6, U+c6a8, U+c6aa-c6af, U+c6b2-c6b3, U+c6b5-c6b7, U+c6b9-c6ba; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-029.woff2') format('woff2'); unicode-range: U+c517-c527, U+c52a-c52b, U+c52d-c52f, U+c531-c538, U+c53a, U+c53c, U+c53e-c543, U+c546-c547, U+c54b, U+c54d-c552, U+c556, U+c55a-c55b, U+c55d, U+c55f, U+c562-c563, U+c565-c567, U+c569-c56f, U+c572, U+c574, U+c576-c57b, U+c57e-c57f, U+c581-c583, U+c585-c586, U+c588-c58b, U+c58e, U+c590, U+c592-c596, U+c599-c5b3, U+c5b6-c5b7, U+c5ba, U+c5be-c5c3, U+c5ca-c5cb, U+c5cd, U+c5cf, U+c5d2-c5d3, U+c5d5-c5d7, U+c5d9-c5df, U+c5e1-c5e2, U+c5e4, U+c5e6-c5eb, U+c5ef, U+c5f1-c5f3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-030.woff2') format('woff2'); unicode-range: U+c475-c4ef, U+c4f2-c4f3, U+c4f5-c4f7, U+c4f9-c4ff, U+c502-c50b, U+c50d-c516; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-031.woff2') format('woff2'); unicode-range: U+c3d0-c3d7, U+c3da-c3db, U+c3dd-c3de, U+c3e1-c3ec, U+c3ee-c3f3, U+c3f5-c42b, U+c42d-c463, U+c466-c474; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-032.woff2') format('woff2'); unicode-range: U+c32b-c367, U+c36a-c36b, U+c36d-c36f, U+c371-c377, U+c37a-c37b, U+c37e-c383, U+c385-c387, U+c389-c3cf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-033.woff2') format('woff2'); unicode-range: U+c26a-c26b, U+c26d-c26f, U+c271-c273, U+c275-c27b, U+c27e-c287, U+c289-c28f, U+c291-c297, U+c299-c29a, U+c29c-c2a3, U+c2a5-c2a7, U+c2a9-c2ab, U+c2ad-c2b3, U+c2b6, U+c2b8, U+c2ba-c2bb, U+c2bd-c2db, U+c2de-c2df, U+c2e1-c2e2, U+c2e5-c2ea, U+c2ee, U+c2f0, U+c2f2-c2f5, U+c2f7, U+c2fa-c2fb, U+c2fd-c2ff, U+c301-c307, U+c309-c30c, U+c30e-c312, U+c315-c323, U+c325-c328, U+c32a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-034.woff2') format('woff2'); unicode-range: U+c1bc-c1c3, U+c1c5-c1df, U+c1e1-c1fb, U+c1fd-c203, U+c205-c20c, U+c20e, U+c210-c217, U+c21a-c21b, U+c21d-c21e, U+c221-c227, U+c229-c22a, U+c22c, U+c22e, U+c230, U+c233-c24f, U+c251-c257, U+c259-c269; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-035.woff2') format('woff2'); unicode-range: U+c101-c11b, U+c11f, U+c121-c123, U+c125-c12b, U+c12e, U+c132-c137, U+c13a-c13b, U+c13d-c13f, U+c141-c147, U+c14a, U+c14c-c153, U+c155-c157, U+c159-c15b, U+c15d-c166, U+c169-c16f, U+c171-c177, U+c179-c18b, U+c18e-c18f, U+c191-c193, U+c195-c19b, U+c19d-c19e, U+c1a0, U+c1a2-c1a4, U+c1a6-c1bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-036.woff2') format('woff2'); unicode-range: U+c049-c057, U+c059-c05b, U+c05d-c05f, U+c061-c067, U+c069-c08f, U+c091-c0ab, U+c0ae-c0af, U+c0b1-c0b3, U+c0b5, U+c0b7-c0bb, U+c0be, U+c0c2-c0c7, U+c0ca-c0cb, U+c0cd-c0cf, U+c0d1-c0d7, U+c0d9-c0da, U+c0dc, U+c0de-c0e3, U+c0e5-c0eb, U+c0ed-c0f3, U+c0f6, U+c0f8, U+c0fa-c0ff; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-037.woff2') format('woff2'); unicode-range: U+bfa7-bfaf, U+bfb1-bfc4, U+bfc6-bfcb, U+bfce-bfcf, U+bfd1-bfd3, U+bfd5-bfdb, U+bfdd-c048; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-038.woff2') format('woff2'); unicode-range: U+bf07, U+bf09-bf3f, U+bf41-bf4f, U+bf52-bf54, U+bf56-bfa6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-039.woff2') format('woff2'); unicode-range: U+be56, U+be58, U+be5c-be5f, U+be62-be63, U+be65-be67, U+be69-be74, U+be76-be7b, U+be7e-be7f, U+be81-be8e, U+be90, U+be92-bea7, U+bea9-becf, U+bed2-bed3, U+bed5-bed6, U+bed9-bee3, U+bee6-bf06; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-040.woff2') format('woff2'); unicode-range: U+bdb0-bdd3, U+bdd5-bdef, U+bdf1-be0b, U+be0d-be0f, U+be11-be13, U+be15-be43, U+be46-be47, U+be49-be4b, U+be4d-be53; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-041.woff2') format('woff2'); unicode-range: U+bd03, U+bd06, U+bd08, U+bd0a-bd0f, U+bd11-bd22, U+bd25-bd47, U+bd49-bd58, U+bd5a-bd7f, U+bd82-bd83, U+bd85-bd87, U+bd8a-bd8f, U+bd91-bd92, U+bd94, U+bd96-bd98, U+bd9a-bdaf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-042.woff2') format('woff2'); unicode-range: U+bc4e-bc83, U+bc86-bc87, U+bc89-bc8b, U+bc8d-bc93, U+bc96, U+bc98, U+bc9b-bc9f, U+bca2-bca3, U+bca5-bca7, U+bca9-bcb2, U+bcb4-bcbb, U+bcbe-bcbf, U+bcc1-bcc3, U+bcc5-bccc, U+bcce-bcd0, U+bcd2-bcd4, U+bcd6-bcf3, U+bcf7, U+bcf9-bcfb, U+bcfd-bd02; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-043.woff2') format('woff2'); unicode-range: U+bb90-bba3, U+bba5-bbab, U+bbad-bbbf, U+bbc1-bbf7, U+bbfa-bbfb, U+bbfd-bbfe, U+bc01-bc07, U+bc09-bc0a, U+bc0e, U+bc10, U+bc12-bc13, U+bc17, U+bc19-bc1a, U+bc1e, U+bc20-bc23, U+bc26, U+bc28, U+bc2a-bc2c, U+bc2e-bc2f, U+bc32-bc33, U+bc35-bc37, U+bc39-bc3f, U+bc41-bc42, U+bc44, U+bc46-bc48, U+bc4a-bc4d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-044.woff2') format('woff2'); unicode-range: U+bae6-bafb, U+bafd-bb17, U+bb19-bb33, U+bb37, U+bb39-bb3a, U+bb3d-bb43, U+bb45-bb46, U+bb48, U+bb4a-bb4f, U+bb51-bb53, U+bb55-bb57, U+bb59-bb62, U+bb64-bb8f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-045.woff2') format('woff2'); unicode-range: U+ba30-ba37, U+ba3a-ba3b, U+ba3d-ba3f, U+ba41-ba47, U+ba49-ba4a, U+ba4c, U+ba4e-ba53, U+ba56-ba57, U+ba59-ba5b, U+ba5d-ba63, U+ba65-ba66, U+ba68-ba6f, U+ba71-ba73, U+ba75-ba77, U+ba79-ba84, U+ba86, U+ba88-baa7, U+baaa, U+baad-baaf, U+bab1-bab7, U+baba, U+babc, U+babe-bae5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-046.woff2') format('woff2'); unicode-range: U+b96e-b973, U+b976-b977, U+b979-b97b, U+b97d-b983, U+b986, U+b988, U+b98a-b98d, U+b98f-b9ab, U+b9ae-b9af, U+b9b1-b9b3, U+b9b5-b9bb, U+b9be, U+b9c0, U+b9c2-b9c7, U+b9ca-b9cb, U+b9cd, U+b9d2-b9d7, U+b9da, U+b9dc, U+b9df-b9e0, U+b9e2, U+b9e6-b9e7, U+b9e9-b9f3, U+b9f6, U+b9f8, U+b9fb-ba2f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-047.woff2') format('woff2'); unicode-range: U+b8bf-b8cb, U+b8cd-b8e0, U+b8e2-b8e7, U+b8ea-b8eb, U+b8ed-b8ef, U+b8f1-b8f7, U+b8fa, U+b8fc, U+b8fe-b903, U+b905-b917, U+b919-b91f, U+b921-b93b, U+b93d-b957, U+b95a-b95b, U+b95d-b95f, U+b961-b967, U+b969-b96c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-048.woff2') format('woff2'); unicode-range: U+b80d-b80f, U+b811-b817, U+b81a, U+b81c-b823, U+b826-b827, U+b829-b82b, U+b82d-b833, U+b836, U+b83a-b83f, U+b841-b85b, U+b85e-b85f, U+b861-b863, U+b865-b86b, U+b86e, U+b870, U+b872-b8af, U+b8b1-b8be; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-049.woff2') format('woff2'); unicode-range: U+b74d-b75f, U+b761-b763, U+b765-b774, U+b776-b77b, U+b77e-b77f, U+b781-b783, U+b785-b78b, U+b78e, U+b792-b796, U+b79a-b79b, U+b79d-b7a7, U+b7aa, U+b7ae-b7b3, U+b7b6-b7c8, U+b7ca-b7eb, U+b7ee-b7ef, U+b7f1-b7f3, U+b7f5-b7fb, U+b7fe, U+b802-b806, U+b80a-b80b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-050.woff2') format('woff2'); unicode-range: U+b6a7-b6aa, U+b6ac-b6b0, U+b6b2-b6ef, U+b6f1-b727, U+b72a-b72b, U+b72d-b72e, U+b731-b737, U+b739-b73a, U+b73c-b743, U+b745-b74c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-051.woff2') format('woff2'); unicode-range: U+b605-b60f, U+b612-b617, U+b619-b624, U+b626-b69b, U+b69e-b6a3, U+b6a5-b6a6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-052.woff2') format('woff2'); unicode-range: U+b55f, U+b562-b583, U+b585-b59f, U+b5a2-b5a3, U+b5a5-b5a7, U+b5a9-b5b2, U+b5b5-b5ba, U+b5bd-b604; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-053.woff2') format('woff2'); unicode-range: U+b4a5-b4b6, U+b4b8-b4bf, U+b4c1-b4c7, U+b4c9-b4db, U+b4de-b4df, U+b4e1-b4e2, U+b4e5-b4eb, U+b4ee, U+b4f0, U+b4f2-b513, U+b516-b517, U+b519-b51a, U+b51d-b523, U+b526, U+b528, U+b52b-b52f, U+b532-b533, U+b535-b537, U+b539-b53f, U+b541-b544, U+b546-b54b, U+b54d-b54f, U+b551-b55b, U+b55d-b55e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-054.woff2') format('woff2'); unicode-range: U+b3f8-b3fb, U+b3fd-b40f, U+b411-b417, U+b419-b41b, U+b41d-b41f, U+b421-b427, U+b42a-b42b, U+b42d-b44f, U+b452-b453, U+b455-b457, U+b459-b45f, U+b462-b464, U+b466-b46b, U+b46d-b47f, U+b481-b4a3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-055.woff2') format('woff2'); unicode-range: U+b342-b353, U+b356-b357, U+b359-b35b, U+b35d-b35e, U+b360-b363, U+b366, U+b368, U+b36a-b36d, U+b36f, U+b372-b373, U+b375-b377, U+b379-b37f, U+b381-b382, U+b384, U+b386-b38b, U+b38d-b3c3, U+b3c6-b3c7, U+b3c9-b3ca, U+b3cd-b3d3, U+b3d6, U+b3d8, U+b3da-b3f7; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-056.woff2') format('woff2'); unicode-range: U+b27c-b283, U+b285-b28f, U+b292-b293, U+b295-b297, U+b29a-b29f, U+b2a1-b2a4, U+b2a7-b2a9, U+b2ab, U+b2ad-b2c7, U+b2ca-b2cb, U+b2cd-b2cf, U+b2d1-b2d7, U+b2da, U+b2dc, U+b2de-b2e3, U+b2e7, U+b2e9-b2ea, U+b2ef-b2f3, U+b2f6, U+b2f8, U+b2fa-b2fb, U+b2fd-b2fe, U+b302-b303, U+b305-b307, U+b309-b30f, U+b312, U+b316-b31b, U+b31d-b341; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-057.woff2') format('woff2'); unicode-range: U+b1d6-b1e7, U+b1e9-b1fc, U+b1fe-b203, U+b206-b207, U+b209-b20b, U+b20d-b213, U+b216-b21f, U+b221-b257, U+b259-b273, U+b275-b27b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-058.woff2') format('woff2'); unicode-range: U+b120-b122, U+b126-b127, U+b129-b12b, U+b12d-b133, U+b136, U+b138, U+b13a-b13f, U+b142-b143, U+b145-b14f, U+b151-b153, U+b156-b157, U+b159-b177, U+b17a-b17b, U+b17d-b17f, U+b181-b187, U+b189-b18c, U+b18e-b191, U+b195-b1a7, U+b1a9-b1cb, U+b1cd-b1d5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-059.woff2') format('woff2'); unicode-range: U+b05f-b07b, U+b07e-b07f, U+b081-b083, U+b085-b08b, U+b08d-b097, U+b09b, U+b09d-b09f, U+b0a2-b0a7, U+b0aa, U+b0b0, U+b0b2, U+b0b6-b0b7, U+b0b9-b0bb, U+b0bd-b0c3, U+b0c6-b0c7, U+b0ca-b0cf, U+b0d1-b0df, U+b0e1-b0e4, U+b0e6-b107, U+b10a-b10b, U+b10d-b10f, U+b111-b112, U+b114-b117, U+b119-b11a, U+b11c-b11f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-060.woff2') format('woff2'); unicode-range: U+afac-afb7, U+afba-afbb, U+afbd-afbf, U+afc1-afc6, U+afca-afcc, U+afce-afd3, U+afd5-afe7, U+afe9-afef, U+aff1-b00b, U+b00d-b00f, U+b011-b013, U+b015-b01b, U+b01d-b027, U+b029-b043, U+b045-b047, U+b049, U+b04b, U+b04d-b052, U+b055-b056, U+b058-b05c, U+b05e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-061.woff2') format('woff2'); unicode-range: U+af03-af07, U+af09-af2b, U+af2e-af33, U+af35-af3b, U+af3e-af40, U+af44-af47, U+af4a-af5c, U+af5e-af63, U+af65-af7f, U+af81-afab; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-062.woff2') format('woff2'); unicode-range: U+ae56-ae5b, U+ae5e-ae60, U+ae62-ae64, U+ae66-ae67, U+ae69-ae6b, U+ae6d-ae83, U+ae85-aebb, U+aebf, U+aec1-aec3, U+aec5-aecb, U+aece, U+aed0, U+aed2-aed7, U+aed9-aef3, U+aef5-af02; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-063.woff2') format('woff2'); unicode-range: U+ad9c-ada3, U+ada5-adbf, U+adc1-adc3, U+adc5-adc7, U+adc9-add2, U+add4-addb, U+addd-addf, U+ade1-ade3, U+ade5-adf7, U+adfa-adfb, U+adfd-adff, U+ae02-ae07, U+ae0a, U+ae0c, U+ae0e-ae13, U+ae15-ae2f, U+ae31-ae33, U+ae35-ae37, U+ae39-ae3f, U+ae42, U+ae44, U+ae46-ae49, U+ae4b, U+ae4f, U+ae51-ae53, U+ae55; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-064.woff2') format('woff2'); unicode-range: U+ace2-ace3, U+ace5-ace6, U+ace9-acef, U+acf2, U+acf4, U+acf7-acfb, U+acfe-acff, U+ad01-ad03, U+ad05-ad0b, U+ad0d-ad10, U+ad12-ad1b, U+ad1d-ad33, U+ad35-ad48, U+ad4a-ad4f, U+ad51-ad6b, U+ad6e-ad6f, U+ad71-ad72, U+ad77-ad7c, U+ad7e, U+ad80, U+ad82-ad87, U+ad89-ad8b, U+ad8d-ad8f, U+ad91-ad9b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-065.woff2') format('woff2'); unicode-range: U+ac25-ac2c, U+ac2e, U+ac30, U+ac32-ac37, U+ac39-ac3f, U+ac41-ac4c, U+ac4e-ac6f, U+ac72-ac73, U+ac75-ac76, U+ac79-ac7f, U+ac82, U+ac84-ac88, U+ac8a-ac8b, U+ac8d-ac8f, U+ac91-ac93, U+ac95-ac9b, U+ac9d-ac9e, U+aca1-aca7, U+acab, U+acad-acaf, U+acb1-acb7, U+acba-acbb, U+acbe-acc0, U+acc2-acc3, U+acc5-acdf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-066.woff2') format('woff2'); unicode-range: U+99df, U+99ed, U+99f1, U+99ff, U+9a01, U+9a08, U+9a0e-9a0f, U+9a19, U+9a2b, U+9a30, U+9a36-9a37, U+9a40, U+9a43, U+9a45, U+9a4d, U+9a55, U+9a57, U+9a5a-9a5b, U+9a5f, U+9a62, U+9a65, U+9a69-9a6a, U+9aa8, U+9ab8, U+9ad3, U+9ae5, U+9aee, U+9b1a, U+9b27, U+9b2a, U+9b31, U+9b3c, U+9b41-9b45, U+9b4f, U+9b54, U+9b5a, U+9b6f, U+9b8e, U+9b91, U+9b9f, U+9bab, U+9bae, U+9bc9, U+9bd6, U+9be4, U+9be8, U+9c0d, U+9c10, U+9c12, U+9c15, U+9c25, U+9c32, U+9c3b, U+9c47, U+9c49, U+9c57, U+9ce5, U+9ce7, U+9ce9, U+9cf3-9cf4, U+9cf6, U+9d09, U+9d1b, U+9d26, U+9d28, U+9d3b, U+9d51, U+9d5d, U+9d60-9d61, U+9d6c, U+9d72, U+9da9, U+9daf, U+9db4, U+9dc4, U+9dd7, U+9df2, U+9df8-9dfa, U+9e1a, U+9e1e, U+9e75, U+9e79, U+9e7d, U+9e7f, U+9e92-9e93, U+9e97, U+9e9d, U+9e9f, U+9ea5, U+9eb4-9eb5, U+9ebb, U+9ebe, U+9ec3, U+9ecd-9ece, U+9ed4, U+9ed8, U+9edb-9edc, U+9ede, U+9ee8, U+9ef4, U+9f07-9f08, U+9f0e, U+9f13, U+9f20, U+9f3b, U+9f4a-9f4b, U+9f4e, U+9f52, U+9f5f, U+9f61, U+9f67, U+9f6a, U+9f6c, U+9f77, U+9f8d, U+9f90, U+9f95, U+9f9c, U+ac02-ac03, U+ac05-ac06, U+ac09-ac0f, U+ac17-ac18, U+ac1b, U+ac1e-ac1f, U+ac21-ac23; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-067.woff2') format('woff2'); unicode-range: U+96a7-96a8, U+96aa, U+96b1, U+96b7, U+96bb, U+96c0-96c1, U+96c4-96c5, U+96c7, U+96c9, U+96cb-96ce, U+96d5-96d6, U+96d9, U+96db-96dc, U+96e2-96e3, U+96e8-96ea, U+96ef-96f0, U+96f2, U+96f6-96f7, U+96f9, U+96fb, U+9700, U+9706-9707, U+9711, U+9713, U+9716, U+9719, U+971c, U+971e, U+9727, U+9730, U+9732, U+9739, U+973d, U+9742, U+9744, U+9748, U+9756, U+975c, U+9761, U+9769, U+976d, U+9774, U+9777, U+977a, U+978b, U+978d, U+978f, U+97a0, U+97a8, U+97ab, U+97ad, U+97c6, U+97cb, U+97dc, U+97f6, U+97fb, U+97ff-9803, U+9805-9806, U+9808, U+980a, U+980c, U+9810-9813, U+9817-9818, U+982d, U+9830, U+9838-9839, U+983b, U+9846, U+984c-984e, U+9854, U+9858, U+985a, U+985e, U+9865, U+9867, U+986b, U+986f, U+98af, U+98b1, U+98c4, U+98c7, U+98db-98dc, U+98e1-98e2, U+98ed-98ef, U+98f4, U+98fc-98fe, U+9903, U+9909-990a, U+990c, U+9910, U+9913, U+9918, U+991e, U+9920, U+9928, U+9945, U+9949, U+994b-994d, U+9951-9952, U+9954, U+9957, U+9996, U+999d, U+99a5, U+99a8, U+99ac-99ae, U+99b1, U+99b3-99b4, U+99b9, U+99c1, U+99d0-99d2, U+99d5, U+99d9, U+99dd; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-068.woff2') format('woff2'); unicode-range: U+920d, U+9210-9212, U+9217, U+921e, U+9234, U+923a, U+923f-9240, U+9245, U+9249, U+9257, U+925b, U+925e, U+9262, U+9264-9266, U+9283, U+9285, U+9291, U+9293, U+9296, U+9298, U+929c, U+92b3, U+92b6-92b7, U+92b9, U+92cc, U+92cf, U+92d2, U+92e4, U+92ea, U+92f8, U+92fc, U+9304, U+9310, U+9318, U+931a, U+931e-9322, U+9324, U+9326, U+9328, U+932b, U+932e-932f, U+9348, U+934a-934b, U+934d, U+9354, U+935b, U+936e, U+9375, U+937c, U+937e, U+938c, U+9394, U+9396, U+939a, U+93a3, U+93a7, U+93ac-93ad, U+93b0, U+93c3, U+93d1, U+93de, U+93e1, U+93e4, U+93f6, U+9404, U+9418, U+9425, U+942b, U+9435, U+9438, U+9444, U+9451-9452, U+945b, U+947d, U+947f, U+9583, U+9589, U+958f, U+9591-9592, U+9594, U+9598, U+95a3-95a5, U+95a8, U+95ad, U+95b1, U+95bb-95bc, U+95c7, U+95ca, U+95d4-95d6, U+95dc, U+95e1-95e2, U+961c, U+9621, U+962a, U+962e, U+9632, U+963b, U+963f-9640, U+9642, U+9644, U+964b-964d, U+9650, U+965b-965f, U+9662-9664, U+966a, U+9670, U+9673, U+9675-9678, U+967d, U+9685-9686, U+968a-968b, U+968d-968e, U+9694-9695, U+9698-9699, U+969b-969c, U+96a3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-069.woff2') format('woff2'); unicode-range: U+8fa8, U+8fad, U+8faf-8fb2, U+8fc2, U+8fc5, U+8fce, U+8fd4, U+8fe6, U+8fea-8feb, U+8fed, U+8ff0, U+8ff2, U+8ff7, U+8ff9, U+8ffd, U+9000-9003, U+9005-9006, U+9008, U+900b, U+900d, U+900f-9011, U+9014-9015, U+9017, U+9019, U+901d-9023, U+902e, U+9031-9032, U+9035, U+9038, U+903c, U+903e, U+9041-9042, U+9047, U+904a-904b, U+904d-904e, U+9050-9051, U+9054-9055, U+9059, U+905c-905e, U+9060-9061, U+9063, U+9069, U+906d-906f, U+9072, U+9075, U+9077-9078, U+907a, U+907c-907d, U+907f-9084, U+9087-9088, U+908a, U+908f, U+9091, U+9095, U+9099, U+90a2-90a3, U+90a6, U+90a8, U+90aa, U+90af-90b1, U+90b5, U+90b8, U+90c1, U+90ca, U+90de, U+90e1, U+90ed, U+90f5, U+9102, U+9112, U+9115, U+9119, U+9127, U+912d, U+9132, U+9149-914e, U+9152, U+9162, U+9169-916a, U+916c, U+9175, U+9177-9178, U+9187, U+9189, U+918b, U+918d, U+9192, U+919c, U+91ab-91ac, U+91ae-91af, U+91b1, U+91b4-91b5, U+91c0, U+91c7, U+91c9, U+91cb, U+91cf-91d0, U+91d7-91d8, U+91dc-91dd, U+91e3, U+91e7, U+91ea, U+91f5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-070.woff2') format('woff2'); unicode-range: U+8c6a-8c6b, U+8c79-8c7a, U+8c82, U+8c8a, U+8c8c, U+8c9d-8c9e, U+8ca0-8ca2, U+8ca7-8cac, U+8caf-8cb0, U+8cb3-8cb4, U+8cb6-8cb8, U+8cbb-8cbd, U+8cbf-8cc4, U+8cc7-8cc8, U+8cca, U+8cd1, U+8cd3, U+8cda, U+8cdc, U+8cde, U+8ce0, U+8ce2-8ce4, U+8ce6, U+8cea, U+8ced, U+8cf4, U+8cfb-8cfd, U+8d04-8d05, U+8d07-8d08, U+8d0a, U+8d0d, U+8d13, U+8d16, U+8d64, U+8d66, U+8d6b, U+8d70, U+8d73-8d74, U+8d77, U+8d85, U+8d8a, U+8d99, U+8da3, U+8da8, U+8db3, U+8dba, U+8dbe, U+8dc6, U+8dcb-8dcc, U+8dcf, U+8ddb, U+8ddd, U+8de1, U+8de3, U+8de8, U+8df3, U+8e0a, U+8e0f-8e10, U+8e1e, U+8e2a, U+8e30, U+8e35, U+8e42, U+8e44, U+8e47-8e4a, U+8e59, U+8e5f-8e60, U+8e74, U+8e76, U+8e81, U+8e87, U+8e8a, U+8e8d, U+8eaa-8eac, U+8ec0, U+8ecb-8ecc, U+8ed2, U+8edf, U+8eeb, U+8ef8, U+8efb, U+8efe, U+8f03, U+8f05, U+8f09, U+8f12-8f15, U+8f1b-8f1f, U+8f26-8f27, U+8f29-8f2a, U+8f2f, U+8f33, U+8f38-8f39, U+8f3b, U+8f3e-8f3f, U+8f44-8f45, U+8f49, U+8f4d-8f4e, U+8f5d, U+8f5f, U+8f62, U+8f9b-8f9c, U+8fa3, U+8fa6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-071.woff2') format('woff2'); unicode-range: U+8941, U+8944, U+895f, U+8964, U+896a, U+8972, U+8981, U+8983, U+8986-8987, U+898f, U+8993, U+8996, U+89a1, U+89a9-89aa, U+89b2, U+89ba, U+89bd, U+89c0, U+89d2, U+89e3, U+89f4, U+89f8, U+8a02-8a03, U+8a08, U+8a0a, U+8a0c, U+8a0e, U+8a13, U+8a16-8a17, U+8a1b, U+8a1d, U+8a1f, U+8a23, U+8a25, U+8a2a, U+8a2d, U+8a31, U+8a34, U+8a36, U+8a3a-8a3b, U+8a50, U+8a54-8a55, U+8a5b, U+8a5e, U+8a60, U+8a62-8a63, U+8a66, U+8a6d-8a6e, U+8a70, U+8a72-8a73, U+8a75, U+8a79, U+8a85, U+8a87, U+8a8c-8a8d, U+8a93, U+8a95, U+8a98, U+8aa0-8aa1, U+8aa3-8aa6, U+8aa8, U+8aaa, U+8ab0, U+8ab2, U+8ab9, U+8abc, U+8abe-8abf, U+8ac2, U+8ac4, U+8ac7, U+8acb, U+8acd, U+8acf, U+8ad2, U+8ad6, U+8adb-8adc, U+8ae1, U+8ae6-8ae7, U+8aea-8aeb, U+8aed-8aee, U+8af1, U+8af6-8af8, U+8afa, U+8afe, U+8b00-8b02, U+8b04, U+8b0e, U+8b10, U+8b14, U+8b16-8b17, U+8b19-8b1b, U+8b1d, U+8b20, U+8b28, U+8b2b-8b2c, U+8b33, U+8b39, U+8b41, U+8b49, U+8b4e-8b4f, U+8b58, U+8b5a, U+8b5c, U+8b66, U+8b6c, U+8b6f-8b70, U+8b74, U+8b77, U+8b7d, U+8b80, U+8b8a, U+8b90, U+8b92-8b93, U+8b96, U+8b9a, U+8c37, U+8c3f, U+8c41, U+8c46, U+8c48, U+8c4a, U+8c4c, U+8c55, U+8c5a, U+8c61; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-072.woff2') format('woff2'); unicode-range: U+858f, U+8591, U+8594, U+859b, U+85a6, U+85a8-85aa, U+85af-85b0, U+85ba, U+85c1, U+85c9, U+85cd-85cf, U+85d5, U+85dc-85dd, U+85e4-85e5, U+85e9-85ea, U+85f7, U+85fa-85fb, U+85ff, U+8602, U+8606-8607, U+860a, U+8616-8617, U+861a, U+862d, U+863f, U+864e, U+8650, U+8654-8655, U+865b-865c, U+865e-865f, U+8667, U+8679, U+868a, U+868c, U+8693, U+86a3-86a4, U+86a9, U+86c7, U+86cb, U+86d4, U+86d9, U+86db, U+86df, U+86e4, U+86ed, U+86fe, U+8700, U+8702-8703, U+8708, U+8718, U+871a, U+871c, U+874e, U+8755, U+8757, U+875f, U+8766, U+8768, U+8774, U+8776, U+8778, U+8782, U+878d, U+879f, U+87a2, U+87b3, U+87ba, U+87c4, U+87e0, U+87ec, U+87ef, U+87f2, U+87f9, U+87fb, U+87fe, U+8805, U+881f, U+8822-8823, U+8831, U+8836, U+883b, U+8840, U+8846, U+884d, U+8852-8853, U+8857, U+8859, U+885b, U+885d, U+8861-8863, U+8868, U+886b, U+8870, U+8872, U+8877, U+887e-887f, U+8881-8882, U+8888, U+888b, U+888d, U+8892, U+8896-8897, U+889e, U+88ab, U+88b4, U+88c1-88c2, U+88cf, U+88d4-88d5, U+88d9, U+88dc-88dd, U+88df, U+88e1, U+88e8, U+88f3-88f5, U+88f8, U+88fd, U+8907, U+8910, U+8912-8913, U+8918-8919, U+8925, U+892a, U+8936, U+8938, U+893b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-073.woff2') format('woff2'); unicode-range: U+82a6, U+82a9, U+82ac-82af, U+82b3, U+82b7-82b9, U+82bb-82bd, U+82bf, U+82d1-82d2, U+82d4-82d5, U+82d7, U+82db, U+82de-82df, U+82e1, U+82e5-82e7, U+82fd-82fe, U+8301-8305, U+8309, U+8317, U+8328, U+832b, U+832f, U+8331, U+8334-8336, U+8338-8339, U+8340, U+8347, U+8349-834a, U+834f, U+8351-8352, U+8373, U+8377, U+837b, U+8389-838a, U+838e, U+8396, U+8398, U+839e, U+83a2, U+83a9-83ab, U+83bd, U+83c1, U+83c5, U+83c9-83ca, U+83cc, U+83d3, U+83d6, U+83dc, U+83e9, U+83eb, U+83ef-83f2, U+83f4, U+83f9, U+83fd, U+8403-8404, U+840a, U+840c-840e, U+8429, U+842c, U+8431, U+8438, U+843d, U+8449, U+8457, U+845b, U+8461, U+8463, U+8466, U+846b-846c, U+846f, U+8475, U+847a, U+8490, U+8494, U+8499, U+849c, U+84a1, U+84b2, U+84b8, U+84bb-84bc, U+84bf-84c0, U+84c2, U+84c4, U+84c6, U+84c9, U+84cb, U+84cd, U+84d1, U+84da, U+84ec, U+84ee, U+84f4, U+84fc, U+8511, U+8513-8514, U+8517-8518, U+851a, U+851e, U+8521, U+8523, U+8525, U+852c-852d, U+852f, U+853d, U+853f, U+8541, U+8543, U+8549, U+854e, U+8553, U+8559, U+8563, U+8568-856a, U+856d, U+8584, U+8587; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-074.woff2') format('woff2'); unicode-range: U+8033, U+8036, U+803d, U+803f, U+8043, U+8046, U+804a, U+8056, U+8058, U+805a, U+805e, U+806f-8070, U+8072-8073, U+8077, U+807d-807f, U+8084-8087, U+8089, U+808b-808c, U+8096, U+809b, U+809d, U+80a1-80a2, U+80a5, U+80a9-80aa, U+80af, U+80b1-80b2, U+80b4, U+80ba, U+80c3-80c4, U+80cc, U+80ce, U+80da-80db, U+80de, U+80e1, U+80e4-80e5, U+80f1, U+80f4, U+80f8, U+80fd, U+8102, U+8105-8108, U+810a, U+8118, U+811a-811b, U+8123, U+8129, U+812b, U+812f, U+8139, U+813e, U+814b, U+814e, U+8150-8151, U+8154-8155, U+8165-8166, U+816b, U+8170-8171, U+8178-817a, U+817f-8180, U+8188, U+818a, U+818f, U+819a, U+819c-819d, U+81a0, U+81a3, U+81a8, U+81b3, U+81b5, U+81ba, U+81bd-81c0, U+81c2, U+81c6, U+81cd, U+81d8, U+81df, U+81e3, U+81e5, U+81e7-81e8, U+81ed, U+81f3-81f4, U+81fa-81fc, U+81fe, U+8205, U+8208, U+820a, U+820c-820d, U+8212, U+821b-821c, U+821e-821f, U+8221, U+822a-822c, U+8235-8237, U+8239, U+8240, U+8245, U+8247, U+8259, U+8264, U+8266, U+826e-826f, U+8271, U+8276, U+8278, U+827e, U+828b, U+828d-828e, U+8292, U+8299-829a, U+829d, U+829f, U+82a5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-075.woff2') format('woff2'); unicode-range: U+7d2f-7d30, U+7d33, U+7d35, U+7d39-7d3a, U+7d42-7d46, U+7d50, U+7d5e, U+7d61-7d62, U+7d66, U+7d68, U+7d6a, U+7d6e, U+7d71-7d73, U+7d76, U+7d79, U+7d7f, U+7d8e-7d8f, U+7d93, U+7d9c, U+7da0, U+7da2, U+7dac-7dad, U+7db1-7db2, U+7db4-7db5, U+7db8, U+7dba-7dbb, U+7dbd-7dbf, U+7dc7, U+7dca-7dcb, U+7dd6, U+7dd8, U+7dda, U+7ddd-7dde, U+7de0-7de1, U+7de3, U+7de8-7de9, U+7dec, U+7def, U+7df4, U+7dfb, U+7e09-7e0a, U+7e15, U+7e1b, U+7e1d-7e1f, U+7e21, U+7e23, U+7e2b, U+7e2e-7e2f, U+7e31, U+7e37, U+7e3d-7e3e, U+7e43, U+7e46-7e47, U+7e52, U+7e54-7e55, U+7e5e, U+7e61, U+7e69-7e6b, U+7e6d, U+7e70, U+7e79, U+7e7c, U+7e82, U+7e8c, U+7e8f, U+7e93, U+7e96, U+7e98, U+7e9b-7e9c, U+7f36, U+7f38, U+7f3a, U+7f4c, U+7f50, U+7f54-7f55, U+7f6a-7f6b, U+7f6e, U+7f70, U+7f72, U+7f75, U+7f77, U+7f79, U+7f85, U+7f88, U+7f8a, U+7f8c, U+7f94, U+7f9a, U+7f9e, U+7fa4, U+7fa8-7fa9, U+7fb2, U+7fb8-7fb9, U+7fbd, U+7fc1, U+7fc5, U+7fca, U+7fcc, U+7fce, U+7fd2, U+7fd4-7fd5, U+7fdf-7fe1, U+7fe9, U+7feb, U+7ff0, U+7ff9, U+7ffc, U+8000-8001, U+8003, U+8006, U+8009, U+800c, U+8010, U+8015, U+8017-8018, U+802d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-076.woff2') format('woff2'); unicode-range: U+7a49, U+7a4d-7a4e, U+7a57, U+7a61-7a62, U+7a69, U+7a6b, U+7a70, U+7a74, U+7a76, U+7a79, U+7a7d, U+7a7f, U+7a81, U+7a84, U+7a88, U+7a92-7a93, U+7a95, U+7a98, U+7a9f, U+7aa9-7aaa, U+7aae-7aaf, U+7aba, U+7ac4-7ac5, U+7ac7, U+7aca, U+7ad7, U+7ad9, U+7add, U+7adf-7ae0, U+7ae3, U+7ae5, U+7aea, U+7aed, U+7aef, U+7af6, U+7af9-7afa, U+7aff, U+7b0f, U+7b11, U+7b19, U+7b1b, U+7b1e, U+7b20, U+7b26, U+7b2d, U+7b39, U+7b46, U+7b49, U+7b4b-7b4d, U+7b4f-7b52, U+7b54, U+7b56, U+7b60, U+7b6c, U+7b6e, U+7b75, U+7b7d, U+7b87, U+7b8b, U+7b8f, U+7b94-7b95, U+7b97, U+7b9a, U+7b9d, U+7ba1, U+7bad, U+7bb1, U+7bb4, U+7bb8, U+7bc0-7bc1, U+7bc4, U+7bc6-7bc7, U+7bc9, U+7bd2, U+7be0, U+7be4, U+7be9, U+7c07, U+7c12, U+7c1e, U+7c21, U+7c27, U+7c2a-7c2b, U+7c3d-7c3f, U+7c43, U+7c4c-7c4d, U+7c60, U+7c64, U+7c6c, U+7c73, U+7c83, U+7c89, U+7c92, U+7c95, U+7c97-7c98, U+7c9f, U+7ca5, U+7ca7, U+7cae, U+7cb1-7cb3, U+7cb9, U+7cbe, U+7cca, U+7cd6, U+7cde-7ce0, U+7ce7, U+7cfb, U+7cfe, U+7d00, U+7d02, U+7d04-7d08, U+7d0a-7d0b, U+7d0d, U+7d10, U+7d14, U+7d17-7d1b, U+7d20-7d21, U+7d2b-7d2c, U+7d2e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-077.woff2') format('woff2'); unicode-range: U+7704, U+7708-7709, U+770b, U+771e, U+7720, U+7729, U+7737-7738, U+773a, U+773c, U+7740, U+774d, U+775b, U+7761, U+7763, U+7766, U+776b, U+7779, U+777e-777f, U+778b, U+7791, U+779e, U+77a5, U+77ac-77ad, U+77b0, U+77b3, U+77bb-77bc, U+77bf, U+77d7, U+77db-77dc, U+77e2-77e3, U+77e9, U+77ed-77ef, U+7802, U+7812, U+7825-7827, U+782c, U+7832, U+7834, U+7845, U+784f, U+785d, U+786b-786c, U+786f, U+787c, U+7881, U+7887, U+788c-788e, U+7891, U+7897, U+78a3, U+78a7, U+78a9, U+78ba-78bc, U+78c1, U+78c5, U+78ca-78cb, U+78ce, U+78d0, U+78e8, U+78ec, U+78ef, U+78f5, U+78fb, U+7901, U+790e, U+7916, U+792a-792c, U+793a, U+7940-7941, U+7947-7949, U+7950, U+7956-7957, U+795a-795d, U+7960, U+7965, U+7968, U+796d, U+797a, U+797f, U+7981, U+798d-798e, U+7991, U+79a6-79a7, U+79aa, U+79ae, U+79b1, U+79b3, U+79b9, U+79bd-79c1, U+79c9-79cb, U+79d2, U+79d5, U+79d8, U+79df, U+79e4, U+79e6-79e7, U+79e9, U+79fb, U+7a00, U+7a05, U+7a08, U+7a0b, U+7a0d, U+7a14, U+7a17, U+7a19-7a1a, U+7a1c, U+7a1f-7a20, U+7a2e, U+7a31, U+7a36-7a37, U+7a3b-7a3d, U+7a3f-7a40, U+7a46; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-078.woff2') format('woff2'); unicode-range: U+7482-7483, U+7487, U+7489, U+748b, U+7498, U+749c, U+749e-749f, U+74a1, U+74a3, U+74a5, U+74a7-74a8, U+74aa, U+74b0, U+74b2, U+74b5, U+74b9, U+74bd, U+74bf, U+74c6, U+74ca, U+74cf, U+74d4, U+74d8, U+74da, U+74dc, U+74e0, U+74e2-74e3, U+74e6, U+74ee, U+74f7, U+7501, U+7504, U+7511, U+7515, U+7518, U+751a-751b, U+7523, U+7525-7526, U+752b-752c, U+7531, U+7533, U+7538, U+753a, U+7547, U+754c, U+754f, U+7551, U+7553-7554, U+7559, U+755b-755d, U+7562, U+7565-7566, U+756a, U+756f-7570, U+7575-7576, U+7578, U+757a, U+757f, U+7586-7587, U+758a-758b, U+758e-758f, U+7591, U+759d, U+75a5, U+75ab, U+75b1-75b3, U+75b5, U+75b8-75b9, U+75bc-75be, U+75c2, U+75c5, U+75c7, U+75cd, U+75d2, U+75d4-75d5, U+75d8-75d9, U+75db, U+75e2, U+75f0, U+75f2, U+75f4, U+75fa, U+75fc, U+7600, U+760d, U+7619, U+761f-7622, U+7624, U+7626, U+763b, U+7642, U+764c, U+764e, U+7652, U+7656, U+7661, U+7664, U+7669, U+766c, U+7670, U+7672, U+7678, U+7686-7687, U+768e, U+7690, U+7693, U+76ae, U+76ba, U+76bf, U+76c2-76c3, U+76c6, U+76c8, U+76ca, U+76d2, U+76d6, U+76db-76dc, U+76de-76df, U+76e1, U+76e3-76e4, U+76e7, U+76f2, U+76fc, U+76fe, U+7701; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-079.woff2') format('woff2'); unicode-range: U+7230, U+7232, U+7235, U+723a-723b, U+723d-723e, U+7240, U+7246-7248, U+724c, U+7252, U+7258-7259, U+725b, U+725d, U+725f, U+7261-7262, U+7267, U+7272, U+727d, U+7280-7281, U+72a2, U+72a7, U+72ac, U+72af, U+72c0, U+72c2, U+72c4, U+72ce, U+72d0, U+72d7, U+72d9, U+72e1, U+72e9, U+72f8-72f9, U+72fc-72fd, U+730a, U+7316, U+731b-731d, U+7325, U+7329-732b, U+7336-7337, U+733e-733f, U+7344-7345, U+7350, U+7352, U+7357, U+7368, U+736a, U+7370, U+7372, U+7375, U+7378, U+737a-737b, U+7384, U+7386-7387, U+7389, U+738e, U+7394, U+7396-7398, U+739f, U+73a7, U+73a9, U+73ad, U+73b2-73b3, U+73b9, U+73c0, U+73c2, U+73c9-73ca, U+73cc-73cd, U+73cf, U+73d6, U+73d9, U+73dd-73de, U+73e0, U+73e3-73e6, U+73e9-73ea, U+73ed, U+73f7, U+73f9, U+73fd-73fe, U+7401, U+7403, U+7405, U+7407, U+7409, U+7413, U+741b, U+7420-7422, U+7425-7426, U+7428, U+742a-742c, U+742e-7430, U+7433-7436, U+7438, U+743a, U+743f-7441, U+7443-7444, U+744b, U+7455, U+7457, U+7459-745c, U+745e-7460, U+7462, U+7464-7465, U+7468-746a, U+746f, U+747e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-080.woff2') format('woff2'); unicode-range: U+6f8d-6f8e, U+6f90, U+6f94, U+6f97, U+6fa3-6fa4, U+6fa7, U+6fae-6faf, U+6fb1, U+6fb3, U+6fb9, U+6fbe, U+6fc0-6fc3, U+6fca, U+6fd5, U+6fda, U+6fdf-6fe1, U+6fe4, U+6fe9, U+6feb-6fec, U+6fef, U+6ff1, U+6ffe, U+7001, U+7005-7006, U+7009, U+700b, U+700f, U+7011, U+7015, U+7018, U+701a-701f, U+7023, U+7027-7028, U+702f, U+7037, U+703e, U+704c, U+7050-7051, U+7058, U+705d, U+7070, U+7078, U+707c-707d, U+7085, U+708a, U+708e, U+7092, U+7098-709a, U+70a1, U+70a4, U+70ab-70ad, U+70af, U+70b3, U+70b7-70b9, U+70c8, U+70cb, U+70cf, U+70d8-70d9, U+70dd, U+70df, U+70f1, U+70f9, U+70fd, U+7104, U+7109, U+710c, U+7119-711a, U+711e, U+7126, U+7130, U+7136, U+7147, U+7149-714a, U+714c, U+714e, U+7150, U+7156, U+7159, U+715c, U+715e, U+7164-7167, U+7169, U+716c, U+716e, U+717d, U+7184, U+7189-718a, U+718f, U+7192, U+7194, U+7199, U+719f, U+71a2, U+71ac, U+71b1, U+71b9-71ba, U+71be, U+71c1, U+71c3, U+71c8-71c9, U+71ce, U+71d0, U+71d2, U+71d4-71d5, U+71df, U+71e5-71e7, U+71ed-71ee, U+71fb-71fc, U+71fe-7200, U+7206, U+7210, U+721b, U+722a, U+722c-722d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-081.woff2') format('woff2'); unicode-range: U+6d5a, U+6d5c, U+6d63, U+6d66, U+6d69-6d6a, U+6d6c, U+6d6e, U+6d74, U+6d78-6d79, U+6d7f, U+6d85, U+6d87-6d89, U+6d8c-6d8e, U+6d91, U+6d93, U+6d95, U+6daf, U+6db2, U+6db5, U+6dc0, U+6dc3-6dc7, U+6dcb, U+6dcf, U+6dd1, U+6dd8-6dda, U+6dde, U+6de1, U+6de8, U+6dea-6deb, U+6dee, U+6df1, U+6df3, U+6df5, U+6df7-6dfb, U+6e17, U+6e19-6e1b, U+6e1f-6e21, U+6e23-6e26, U+6e2b-6e2d, U+6e32, U+6e34, U+6e36, U+6e38, U+6e3a, U+6e3c-6e3e, U+6e43-6e44, U+6e4a, U+6e4d, U+6e56, U+6e58, U+6e5b-6e5c, U+6e5e-6e5f, U+6e67, U+6e6b, U+6e6e-6e6f, U+6e72-6e73, U+6e7a, U+6e90, U+6e96, U+6e9c-6e9d, U+6e9f, U+6ea2, U+6ea5, U+6eaa-6eab, U+6eaf, U+6eb1, U+6eb6, U+6eba, U+6ec2, U+6ec4-6ec5, U+6ec9, U+6ecb-6ecc, U+6ece, U+6ed1, U+6ed3-6ed4, U+6eef, U+6ef4, U+6ef8, U+6efe-6eff, U+6f01-6f02, U+6f06, U+6f0f, U+6f11, U+6f14-6f15, U+6f20, U+6f22-6f23, U+6f2b-6f2c, U+6f31-6f32, U+6f38, U+6f3f, U+6f41, U+6f51, U+6f54, U+6f57-6f58, U+6f5a-6f5b, U+6f5e-6f5f, U+6f62, U+6f64, U+6f6d-6f6e, U+6f70, U+6f7a, U+6f7c-6f7e, U+6f81, U+6f84, U+6f88; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-082.woff2') format('woff2'); unicode-range: U+6ada-6adb, U+6af6, U+6afb, U+6b04, U+6b0a, U+6b0c, U+6b12, U+6b16, U+6b20-6b21, U+6b23, U+6b32, U+6b3a, U+6b3d-6b3e, U+6b46-6b47, U+6b4e, U+6b50, U+6b5f, U+6b61-6b62, U+6b64-6b66, U+6b6a, U+6b72, U+6b77-6b78, U+6b7b, U+6b7f, U+6b83-6b84, U+6b86, U+6b89-6b8a, U+6b96, U+6b98, U+6b9e, U+6bae-6baf, U+6bb2, U+6bb5, U+6bb7, U+6bba, U+6bbc, U+6bbf, U+6bc1, U+6bc5-6bc6, U+6bcb, U+6bcf, U+6bd2-6bd3, U+6bd6-6bd8, U+6bdb, U+6beb-6bec, U+6c08, U+6c0f, U+6c13, U+6c23, U+6c37-6c38, U+6c3e, U+6c40-6c42, U+6c4e, U+6c50, U+6c55, U+6c57, U+6c5a, U+6c5d-6c60, U+6c68, U+6c6a, U+6c6d, U+6c70, U+6c72, U+6c76, U+6c7a, U+6c7d-6c7e, U+6c81-6c83, U+6c85-6c88, U+6c8c, U+6c90, U+6c92-6c96, U+6c99-6c9b, U+6cab, U+6cae, U+6cb3, U+6cb8-6cb9, U+6cbb-6cbf, U+6cc1-6cc2, U+6cc4, U+6cc9-6cca, U+6ccc, U+6cd3, U+6cd7, U+6cdb, U+6ce1-6ce3, U+6ce5, U+6ce8, U+6ceb, U+6cee-6cf0, U+6cf3, U+6d0b-6d0c, U+6d11, U+6d17, U+6d19, U+6d1b, U+6d1e, U+6d25, U+6d27, U+6d29, U+6d32, U+6d35-6d36, U+6d38-6d39, U+6d3b, U+6d3d-6d3e, U+6d41, U+6d59; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-083.woff2') format('woff2'); unicode-range: U+67f0-67f1, U+67f3-67f6, U+67fb, U+67fe, U+6812-6813, U+6816-6817, U+6821-6822, U+682f, U+6838-6839, U+683d, U+6840-6843, U+6848, U+684e, U+6850-6851, U+6853-6854, U+686d, U+6876, U+687f, U+6881, U+6885, U+688f, U+6893-6894, U+6897, U+689d, U+689f, U+68a1-68a2, U+68a7-68a8, U+68ad, U+68af-68b1, U+68b3, U+68b5-68b6, U+68c4-68c5, U+68c9, U+68cb, U+68cd, U+68d2, U+68d5, U+68d7-68d8, U+68da, U+68df-68e0, U+68e7-68e8, U+68ee, U+68f2, U+68f9-68fa, U+6900, U+6905, U+690d-690e, U+6912, U+6927, U+6930, U+693d, U+693f, U+694a, U+6953-6955, U+6957, U+6959-695a, U+695e, U+6960-6963, U+6968, U+696b, U+696d-696f, U+6975, U+6977-6979, U+6995, U+699b-699c, U+69a5, U+69a7, U+69ae, U+69b4, U+69bb, U+69c1, U+69c3, U+69cb-69cd, U+69d0, U+69e8, U+69ea, U+69fb, U+69fd, U+69ff, U+6a02, U+6a0a, U+6a11, U+6a13, U+6a17, U+6a19, U+6a1e-6a1f, U+6a21, U+6a23, U+6a35, U+6a38-6a3a, U+6a3d, U+6a44, U+6a48, U+6a4b, U+6a52-6a53, U+6a58-6a59, U+6a5f, U+6a61, U+6a6b, U+6a80, U+6a84, U+6a89, U+6a8d-6a8e, U+6a97, U+6a9c, U+6aa3, U+6ab3, U+6abb, U+6ac2-6ac3, U+6ad3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-084.woff2') format('woff2'); unicode-range: U+6607, U+6609-660a, U+660c, U+660f-6611, U+6613-6615, U+661e, U+6620, U+6627-6628, U+662d, U+6630-6631, U+6634, U+6636, U+663a-663b, U+6641, U+6643-6644, U+6649, U+664b, U+664f, U+6659, U+665b, U+665d-665f, U+6664-6669, U+666b, U+666e-666f, U+6673-6674, U+6676-6678, U+6684, U+6687-6689, U+668e, U+6690-6691, U+6696-6698, U+669d, U+66a0, U+66a2, U+66ab, U+66ae, U+66b2-66b4, U+66b9, U+66bb, U+66be, U+66c4, U+66c6-66c7, U+66c9, U+66d6, U+66d9, U+66dc-66dd, U+66e0, U+66e6, U+66f0, U+66f2-66f4, U+66f7, U+66f9-66fa, U+66fc, U+66fe-66ff, U+6703, U+670b, U+670d, U+6714-6715, U+6717, U+671b, U+671d-671f, U+6726-6727, U+672a-672b, U+672d-672e, U+6731, U+6736, U+673a, U+673d, U+6746, U+6749, U+674e-6751, U+6753, U+6756, U+675c, U+675e-675f, U+676d, U+676f-6770, U+6773, U+6775, U+6777, U+677b, U+677e-677f, U+6787, U+6789, U+678b, U+678f-6790, U+6793, U+6795, U+679a, U+679d, U+67af-67b0, U+67b3, U+67b6-67b8, U+67be, U+67c4, U+67cf-67d4, U+67da, U+67dd, U+67e9, U+67ec, U+67ef; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-085.woff2') format('woff2'); unicode-range: U+6392, U+6396, U+6398, U+639b, U+63a0-63a2, U+63a5, U+63a7-63aa, U+63c0, U+63c4, U+63c6, U+63cf, U+63d6, U+63da-63db, U+63e1, U+63ed-63ee, U+63f4, U+63f6-63f7, U+640d, U+640f, U+6414, U+6416-6417, U+641c, U+6422, U+642c-642d, U+643a, U+643e, U+6458, U+6460, U+6469, U+646f, U+6478-647a, U+6488, U+6491-6493, U+649a, U+649e, U+64a4-64a5, U+64ab, U+64ad-64ae, U+64b0, U+64b2, U+64bb, U+64c1, U+64c4-64c5, U+64c7, U+64ca, U+64cd-64ce, U+64d2, U+64d4, U+64d8, U+64da, U+64e1-64e2, U+64e5-64e7, U+64ec, U+64f2, U+64f4, U+64fa, U+64fe, U+6500, U+6504, U+6518, U+651d, U+6523, U+652a-652c, U+652f, U+6536-6539, U+653b, U+653e, U+6548, U+654d-654f, U+6551, U+6556-6557, U+655e, U+6562-6563, U+6566, U+656c-656d, U+6572, U+6574-6575, U+6577-6578, U+657e, U+6582-6583, U+6585, U+658c, U+6590-6591, U+6597, U+6599, U+659b-659c, U+659f, U+65a1, U+65a4-65a5, U+65a7, U+65ab-65ac, U+65af, U+65b7, U+65bc-65bd, U+65c1, U+65c5, U+65cb-65cc, U+65cf, U+65d2, U+65d7, U+65e0, U+65e3, U+65e6, U+65e8-65e9, U+65ec-65ed, U+65f1, U+65f4, U+65fa-65fd, U+65ff, U+6606; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-086.woff2') format('woff2'); unicode-range: U+614c, U+6153, U+6155, U+6158-6159, U+615d, U+615f, U+6162-6164, U+6167-6168, U+616b, U+616e, U+6170, U+6176-6177, U+617d-617e, U+6181-6182, U+618a, U+618e, U+6190-6191, U+6194, U+6198-619a, U+61a4, U+61a7, U+61a9, U+61ab-61ac, U+61ae, U+61b2, U+61b6, U+61ba, U+61be, U+61c3, U+61c7-61cb, U+61e6, U+61f2, U+61f6-61f8, U+61fa, U+61fc, U+61ff-6200, U+6207-6208, U+620a, U+620c-620e, U+6212, U+6216, U+621a, U+621f, U+6221, U+622a, U+622e, U+6230-6231, U+6234, U+6236, U+623e-623f, U+6241, U+6247-6249, U+624d, U+6253, U+6258, U+626e, U+6271, U+6276, U+6279, U+627c, U+627f-6280, U+6284, U+6289-628a, U+6291-6292, U+6295, U+6297-6298, U+629b, U+62ab, U+62b1, U+62b5, U+62b9, U+62bc-62bd, U+62c2, U+62c7-62c9, U+62cc-62cd, U+62cf-62d0, U+62d2-62d4, U+62d6-62d9, U+62db-62dc, U+62ec-62ef, U+62f1, U+62f3, U+62f7, U+62fe-62ff, U+6301, U+6307, U+6309, U+6311, U+632b, U+632f, U+633a-633b, U+633d-633e, U+6349, U+634c, U+634f-6350, U+6355, U+6367-6368, U+636e, U+6372, U+6377, U+637a-637b, U+637f, U+6383, U+6388-6389, U+638c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-087.woff2') format('woff2'); unicode-range: U+5f11, U+5f13-5f15, U+5f17-5f18, U+5f1b, U+5f1f, U+5f26-5f27, U+5f29, U+5f31, U+5f35, U+5f3a, U+5f3c, U+5f48, U+5f4a, U+5f4c, U+5f4e, U+5f56-5f57, U+5f59, U+5f5b, U+5f62, U+5f66-5f67, U+5f69-5f6d, U+5f70-5f71, U+5f77, U+5f79, U+5f7c, U+5f7f-5f81, U+5f85, U+5f87, U+5f8a-5f8b, U+5f90-5f92, U+5f98-5f99, U+5f9e, U+5fa0-5fa1, U+5fa8-5faa, U+5fae, U+5fb5, U+5fb9, U+5fbd, U+5fc5, U+5fcc-5fcd, U+5fd6-5fd9, U+5fe0, U+5feb, U+5ff5, U+5ffd, U+5fff, U+600f, U+6012, U+6016, U+601c, U+6020-6021, U+6025, U+6028, U+602a, U+602f, U+6041-6043, U+604d, U+6050, U+6052, U+6055, U+6059, U+605d, U+6062-6065, U+6068-606a, U+606c-606d, U+606f-6070, U+6085, U+6089, U+608c-608d, U+6094, U+6096, U+609a-609b, U+609f-60a0, U+60a3-60a4, U+60a7, U+60b0, U+60b2-60b4, U+60b6, U+60b8, U+60bc-60bd, U+60c7, U+60d1, U+60da, U+60dc, U+60df-60e1, U+60f0-60f1, U+60f6, U+60f9-60fb, U+6101, U+6106, U+6108-6109, U+610d-610e, U+6115, U+611a, U+6127, U+6130, U+6134, U+6137, U+613c, U+613e-613f, U+6142, U+6144, U+6147-6148, U+614a-614b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-088.woff2') format('woff2'); unicode-range: U+5c40, U+5c45-5c46, U+5c48, U+5c4b, U+5c4d-5c4e, U+5c51, U+5c5b, U+5c60, U+5c62, U+5c64-5c65, U+5c6c, U+5c6f, U+5c79, U+5c90-5c91, U+5ca1, U+5ca9, U+5cab-5cac, U+5cb1, U+5cb3, U+5cb5, U+5cb7-5cb8, U+5cba, U+5cbe, U+5cc0, U+5cd9, U+5ce0, U+5ce8, U+5cef-5cf0, U+5cf4, U+5cf6, U+5cfb, U+5cfd, U+5d07, U+5d0d-5d0e, U+5d11, U+5d14, U+5d16-5d17, U+5d19, U+5d27, U+5d29, U+5d4b-5d4c, U+5d50, U+5d69, U+5d6c, U+5d6f, U+5d87, U+5d8b, U+5d9d, U+5da0, U+5da2, U+5daa, U+5db8, U+5dba, U+5dbc-5dbd, U+5dcd, U+5dd2, U+5dd6, U+5de1-5de2, U+5de5-5de8, U+5deb, U+5dee, U+5df1-5df4, U+5df7, U+5dfd-5dfe, U+5e03, U+5e06, U+5e11, U+5e16, U+5e19, U+5e1b, U+5e1d, U+5e25, U+5e2b, U+5e2d, U+5e33, U+5e36, U+5e38, U+5e3d, U+5e3f-5e40, U+5e44-5e45, U+5e47, U+5e4c, U+5e55, U+5e5f, U+5e61-5e63, U+5e72, U+5e77-5e79, U+5e7b-5e7e, U+5e84, U+5e87, U+5e8a, U+5e8f, U+5e95, U+5e97, U+5e9a, U+5e9c, U+5ea0, U+5ea7, U+5eab, U+5ead, U+5eb5-5eb8, U+5ebe, U+5ec2, U+5ec8-5eca, U+5ed0, U+5ed3, U+5ed6, U+5eda-5edb, U+5edf-5ee0, U+5ee2-5ee3, U+5eec, U+5ef3, U+5ef6-5ef7, U+5efa-5efb, U+5f01, U+5f04, U+5f0a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-089.woff2') format('woff2'); unicode-range: U+59be, U+59c3, U+59c6, U+59c9, U+59cb, U+59d0-59d1, U+59d3-59d4, U+59d9-59da, U+59dc-59dd, U+59e6, U+59e8, U+59ea, U+59ec, U+59ee, U+59f8, U+59fb, U+59ff, U+5a01, U+5a03, U+5a11, U+5a18, U+5a1b-5a1c, U+5a1f-5a20, U+5a25, U+5a29, U+5a36, U+5a3c, U+5a41, U+5a46, U+5a49, U+5a5a, U+5a62, U+5a66, U+5a92, U+5a9a-5a9b, U+5aa4, U+5ac1-5ac2, U+5ac4, U+5ac9, U+5acc, U+5ae1, U+5ae6, U+5ae9, U+5b05, U+5b09, U+5b0b-5b0c, U+5b16, U+5b2a, U+5b40, U+5b43, U+5b51, U+5b54-5b55, U+5b58, U+5b5a, U+5b5c-5b5d, U+5b5f, U+5b63-5b64, U+5b69, U+5b6b, U+5b70-5b71, U+5b75, U+5b7a, U+5b7c, U+5b85, U+5b87-5b88, U+5b8b, U+5b8f, U+5b93, U+5b95-5b99, U+5b9b-5b9c, U+5ba2-5ba6, U+5bac, U+5bae, U+5bb0, U+5bb3-5bb5, U+5bb8-5bb9, U+5bbf-5bc0, U+5bc2-5bc7, U+5bcc, U+5bd0, U+5bd2-5bd4, U+5bd7, U+5bde-5bdf, U+5be1-5be2, U+5be4-5be9, U+5beb-5bec, U+5bee-5bef, U+5bf5-5bf6, U+5bf8, U+5bfa, U+5c01, U+5c04, U+5c07-5c0b, U+5c0d-5c0e, U+5c16, U+5c19, U+5c24, U+5c28, U+5c31, U+5c38-5c3c, U+5c3e-5c3f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-090.woff2') format('woff2'); unicode-range: U+5703-5704, U+5708, U+570d, U+5712-5713, U+5716, U+5718, U+572d, U+573b, U+5740, U+5742, U+5747, U+574a, U+574d-574e, U+5750-5751, U+5761, U+5764, U+5766, U+576a, U+576e, U+5770, U+5775, U+577c, U+5782, U+5788, U+578b, U+5793, U+57a0, U+57a2-57a3, U+57c3, U+57c7-57c8, U+57cb, U+57df-57e0, U+57f0, U+57f4, U+57f7, U+57f9-57fa, U+57fc, U+5800, U+5802, U+5805-5806, U+5808-580a, U+581e, U+5821, U+5824, U+5827, U+582a, U+582f-5831, U+5835, U+583a, U+584a-584b, U+584f, U+5851, U+5854, U+5857-5858, U+585a, U+585e, U+5861-5862, U+5864, U+5875, U+5879, U+587c, U+587e, U+5883, U+5885, U+5889, U+5893, U+589c, U+589e-589f, U+58a8-58a9, U+58ae, U+58b3, U+58ba-58bb, U+58be, U+58c1, U+58c5, U+58c7, U+58ce, U+58d1, U+58d3, U+58d5, U+58d8-58d9, U+58de-58df, U+58e4, U+58ec, U+58ef, U+58f9-58fb, U+58fd, U+590f, U+5914-5915, U+5919, U+5922, U+592d-592e, U+5931, U+5937, U+593e, U+5944, U+5947-5949, U+594e-5951, U+5954-5955, U+5957, U+595a, U+5960, U+5962, U+5967, U+596a-596e, U+5974, U+5978, U+5982-5984, U+598a, U+5993, U+5996-5997, U+5999, U+59a5, U+59a8, U+59ac, U+59b9, U+59bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-091.woff2') format('woff2'); unicode-range: U+539a, U+53a0, U+53a5-53a6, U+53ad, U+53bb, U+53c3, U+53c8-53cb, U+53cd, U+53d4, U+53d6-53d7, U+53db, U+53e1-53e3, U+53e5, U+53e9-53ed, U+53f1, U+53f3, U+53f8, U+5403-5404, U+540a, U+540e-5411, U+541b, U+541d, U+541f-5420, U+5426, U+5429, U+542b, U+5433, U+5438-5439, U+543b-543c, U+543e, U+5442, U+5448, U+544a, U+5451, U+5468, U+546a, U+5471, U+5473, U+5475, U+547b-547d, U+5480, U+5486, U+548e, U+5490, U+54a4, U+54a8, U+54ab-54ac, U+54b3, U+54b8, U+54bd, U+54c0, U+54c4, U+54c8-54c9, U+54e1, U+54e5, U+54e8, U+54ed-54ee, U+54f2, U+54fa, U+5504, U+5506-5507, U+550e, U+5510, U+551c, U+552f, U+5531, U+5535, U+553e, U+5544, U+5546, U+554f, U+5553, U+5556, U+555e, U+5563, U+557c, U+5580, U+5584, U+5586-5587, U+5589-558a, U+5598-559a, U+559c-559d, U+55a7, U+55a9-55ac, U+55ae, U+55c5, U+55c7, U+55d4, U+55da, U+55dc, U+55df, U+55e3-55e4, U+55fd-55fe, U+5606, U+5609, U+5614, U+5617, U+562f, U+5632, U+5634, U+5636, U+5653, U+5668, U+566b, U+5674, U+5686, U+56a5, U+56ac, U+56ae, U+56b4, U+56bc, U+56ca, U+56cd, U+56d1, U+56da-56db, U+56de, U+56e0, U+56f0, U+56f9-56fa; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-092.woff2') format('woff2'); unicode-range: U+516e, U+5175-5178, U+517c, U+5180, U+5186, U+518a, U+518d, U+5192, U+5195, U+5197, U+51a0, U+51a5, U+51aa, U+51ac, U+51b6-51b7, U+51bd, U+51c4, U+51c6, U+51c9, U+51cb-51cd, U+51dc-51de, U+51e1, U+51f0-51f1, U+51f6, U+51f8-51f9, U+51fd, U+5200, U+5203, U+5207-5208, U+520a, U+520e, U+5211, U+5217, U+521d, U+5224-5225, U+522a, U+522e, U+5230, U+5236-523b, U+5243, U+5247, U+524a-524c, U+5254, U+5256, U+525b, U+525d, U+5261, U+5269-526a, U+526f, U+5272, U+5275, U+527d, U+527f, U+5283, U+5287-5289, U+528d, U+5291-5292, U+529f, U+52a3-52a4, U+52a9-52ab, U+52be, U+52c1, U+52c3, U+52c5, U+52c7, U+52c9, U+52cd, U+52d2, U+52d6, U+52d8-52d9, U+52db, U+52dd-52df, U+52e2-52e4, U+52f3, U+52f5, U+52f8, U+52fa-52fb, U+52fe-52ff, U+5305, U+5308, U+530d, U+530f-5310, U+5315, U+5319, U+5320-5321, U+5323, U+532a, U+532f, U+5339, U+533f-5341, U+5343-5344, U+5347-534a, U+534d, U+5351-5354, U+535a, U+535c, U+535e, U+5360, U+5366, U+5368, U+536f-5371, U+5374-5375, U+5377, U+537d, U+537f, U+5384, U+5393, U+5398; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-093.woff2') format('woff2'); unicode-range: U+4f43, U+4f46-4f48, U+4f4d-4f51, U+4f55, U+4f59-4f5a, U+4f69, U+4f6f-4f70, U+4f73, U+4f76, U+4f7a, U+4f7e-4f7f, U+4f81, U+4f83-4f84, U+4f86, U+4f88, U+4f8a-4f8b, U+4f8d, U+4f8f, U+4f91, U+4f96, U+4f98, U+4f9b, U+4f9d, U+4fae-4faf, U+4fb5-4fb6, U+4fbf, U+4fc2-4fc4, U+4fc9-4fca, U+4fce, U+4fd1, U+4fd3-4fd4, U+4fd7, U+4fda, U+4fdf-4fe0, U+4fee-4fef, U+4ff1, U+4ff3, U+4ff5, U+4ff8, U+4ffa, U+5002, U+5006, U+5009, U+500b, U+500d, U+5011-5012, U+5016, U+5019-501a, U+501c, U+501e-501f, U+5021, U+5023-5024, U+5026-5028, U+502a-502d, U+503b, U+5043, U+5047-5049, U+504f, U+5055, U+505a, U+505c, U+5065, U+5074-5076, U+5078, U+5080, U+5085, U+508d, U+5091, U+5098-5099, U+50ac-50ad, U+50b2-50b3, U+50b5, U+50b7, U+50be, U+50c5, U+50c9-50ca, U+50d1, U+50d5-50d6, U+50da, U+50de, U+50e5, U+50e7, U+50ed, U+50f9, U+50fb, U+50ff-5101, U+5104, U+5106, U+5109, U+5112, U+511f, U+5121, U+512a, U+5132, U+5137, U+513a, U+513c, U+5140-5141, U+5143-5148, U+514b-514e, U+5152, U+515c, U+5162, U+5169-516b, U+516d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-094.woff2') format('woff2'); unicode-range: U+338c-339c, U+339f-33a0, U+33a2-33cb, U+33cf-33d0, U+33d3, U+33d6, U+33d8, U+33db-33dd, U+4e01, U+4e03, U+4e07-4e08, U+4e11, U+4e14-4e15, U+4e18-4e19, U+4e1e, U+4e32, U+4e38-4e39, U+4e42-4e43, U+4e45, U+4e4d-4e4f, U+4e56, U+4e58-4e59, U+4e5d-4e5e, U+4e6b, U+4e6d, U+4e73, U+4e76-4e77, U+4e7e, U+4e82, U+4e86, U+4e88, U+4e8e, U+4e90-4e92, U+4e94-4e95, U+4e98, U+4e9b, U+4e9e, U+4ea1-4ea2, U+4ea4-4ea6, U+4ea8, U+4eab, U+4ead-4eae, U+4eb6, U+4ec0-4ec1, U+4ec4, U+4ec7, U+4ecb, U+4ecd, U+4ed4-4ed5, U+4ed7-4ed9, U+4edd, U+4edf, U+4ee4, U+4ef0, U+4ef2, U+4ef6-4ef7, U+4efb, U+4f01, U+4f09, U+4f0b, U+4f0d-4f11, U+4f2f, U+4f34, U+4f36, U+4f38, U+4f3a, U+4f3c-4f3d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-095.woff2') format('woff2'); unicode-range: U+3136, U+3138, U+313a-3140, U+3143-3144, U+3150, U+3152, U+3154-3156, U+3158-315b, U+315d-315f, U+3162, U+3164-318c, U+318e, U+3200-321b, U+3231, U+3239, U+3251-325a, U+3260-327b, U+327e-327f, U+328a-3290, U+3294, U+329e, U+32a5, U+3380-3384, U+3388-338b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-096.woff2') format('woff2'); unicode-range: U+2f7d, U+2f7f-2f8b, U+2f8e-2f90, U+2f92-2f97, U+2f99-2fa0, U+2fa2-2fa3, U+2fa5-2fa9, U+2fac-2fb1, U+2fb3-2fbc, U+2fc1-2fca, U+2fcd-2fd4, U+3003, U+3012-3019, U+301c, U+301e-3020, U+3036, U+3041, U+3043, U+3045, U+3047, U+3049, U+304e, U+3050, U+3052, U+3056, U+305a, U+305c, U+305e, U+3062, U+3065, U+306c, U+3070-307d, U+3080, U+3085, U+3087, U+308e, U+3090-3091, U+30a1, U+30a5, U+30a9, U+30ae, U+30b1-30b2, U+30b4, U+30b6, U+30bc-30be, U+30c2, U+30c5, U+30cc, U+30d2, U+30d4, U+30d8-30dd, U+30e4, U+30e6, U+30e8, U+30ee, U+30f0-30f2, U+30f4-30f6, U+3133, U+3135; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-097.woff2') format('woff2'); unicode-range: U+2541-254b, U+25a4-25a9, U+25b1, U+25b5, U+25b9, U+25bf, U+25c1, U+25c3, U+25c9-25ca, U+25cc, U+25ce, U+25d0-25d1, U+25e6, U+25ef, U+260f, U+261d, U+261f, U+262f, U+2660, U+2664, U+2667-2669, U+266d, U+266f, U+2716, U+271a, U+273d, U+2756, U+2776-277f, U+278a-2793, U+2963, U+2965, U+2ac5-2ac6, U+2acb-2acc, U+2f00, U+2f04, U+2f06, U+2f08, U+2f0a-2f0b, U+2f11-2f12, U+2f14, U+2f17-2f18, U+2f1c-2f1d, U+2f1f-2f20, U+2f23-2f26, U+2f28-2f29, U+2f2b, U+2f2d, U+2f2f-2f32, U+2f38, U+2f3c-2f40, U+2f42-2f4c, U+2f4f-2f52, U+2f54-2f58, U+2f5a-2f66, U+2f69-2f70, U+2f72-2f76, U+2f78, U+2f7a-2f7c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-098.woff2') format('woff2'); unicode-range: U+2479-2487, U+249c-24d1, U+24d3-24d7, U+24d9-24e9, U+24eb-24f4, U+2500-2501, U+2503, U+250c-2513, U+2515-2516, U+2518-2540; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-099.woff2') format('woff2'); unicode-range: U+215b-215e, U+2162-2169, U+2170-2179, U+2195-2199, U+21b0-21b4, U+21bc, U+21c0, U+21c4-21c5, U+21cd, U+21cf-21d4, U+21e0-21e3, U+21e6-21e9, U+2200, U+2202-2203, U+2206-2209, U+220b-220c, U+220f, U+2211, U+2213, U+221a, U+221d-2220, U+2222, U+2225-2227, U+2229-222c, U+222e, U+2234-2237, U+223d, U+2243, U+2245, U+2248, U+2250-2253, U+225a, U+2260-2262, U+2264-2267, U+226a-226b, U+226e-2273, U+2276-2277, U+2279-227b, U+2280-2287, U+228a-228b, U+2295-2297, U+22a3-22a5, U+22bb-22bc, U+22ce-22cf, U+22da-22db, U+22ee-22ef, U+2306, U+2312, U+2314, U+2467-2478; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-100.woff2') format('woff2'); unicode-range: U+81-82, U+84, U+a2-a5, U+a7-a8, U+aa, U+ac-ad, U+b1-b3, U+b6, U+b8-ba, U+bc-be, U+c0, U+c2, U+c6-cb, U+ce-d0, U+d4, U+d8-d9, U+db-dc, U+de-df, U+e6, U+eb, U+ee-f0, U+f4, U+f7-f9, U+fb, U+fe-ff, U+111, U+126-127, U+132-133, U+138, U+13f-142, U+149-14b, U+152-153, U+166-167, U+2bc, U+2c7, U+2d0, U+2d8-2d9, U+2db-2dd, U+391-394, U+396-3a1, U+3a3-3a9, U+3b2-3b6, U+3b8, U+3bc, U+3be-3c1, U+3c3-3c9, U+2010, U+2015-2016, U+2018-2019, U+201b, U+201f-2021, U+2025, U+2030, U+2033-2036, U+203c, U+203e, U+2042, U+2074, U+207a-207f, U+2081-2084, U+2109, U+2113, U+2116, U+2121, U+2126, U+212b, U+2153-2154; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-101.woff2') format('woff2'); unicode-range: U+e8, U+2da, U+2160, U+2194, U+3054, U+3058, U+306d, U+3086, U+308d, U+30ac, U+30bb, U+30c4, U+30cd-30ce, U+30e2, U+3132, U+3146, U+3149, U+339d, U+4e3b, U+4f0a, U+4fdd, U+4fe1, U+5409, U+540c, U+5834, U+592a-592b, U+5b9a, U+5dde, U+5e0c, U+5e73, U+5f0f, U+60f3, U+653f, U+661f, U+662f, U+667a, U+683c, U+6b4c, U+6c11, U+767c, U+76ee, U+76f4, U+77f3, U+79d1, U+7a7a, U+7b2c, U+7d22, U+8207, U+8a00, U+8a71, U+9280, U+9580, U+958b, U+96c6, U+9762, U+98df, U+9ed1, U+ac2d, U+adc8, U+add3, U+af48, U+b014, U+b134-b135, U+b158, U+b2aa, U+b35f, U+b6a4, U+b9cf, U+bb63, U+bd23, U+be91, U+c29b, U+c3f4, U+c42c, U+c55c, U+c573, U+c58f, U+c78c, U+c7dd, U+c8f5, U+cad1, U+cc48, U+cf10, U+cf20, U+d03c, U+d07d, U+d2a0, U+d30e, U+d38d, U+d3a8, U+d3c8, U+d5e5, U+d5f9, U+d6e4, U+f90a, U+ff02, U+ff1c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-102.woff2') format('woff2'); unicode-range: U+3b1, U+2466, U+25a1, U+25a3, U+261c, U+3008-3009, U+305b, U+305d, U+3069, U+30a7, U+30ba, U+30cf, U+30ef, U+3151, U+3157, U+4e4b, U+4e5f, U+4e8c, U+4eca, U+4ed6, U+4f5b, U+50cf, U+5149, U+5165, U+5171, U+5229, U+529b, U+5316, U+539f, U+53f2, U+571f, U+5728, U+58eb, U+591c, U+5b78, U+5c11, U+5c55, U+5ddd, U+5e02, U+5fb7, U+60c5, U+610f, U+611f, U+6625, U+66f8, U+6797, U+679c, U+682a, U+6d2a, U+706b, U+7406, U+767b, U+76f8, U+77e5, U+7acb, U+898b, U+8a69, U+8def, U+8fd1, U+901a, U+90e8, U+91cd, U+975e, U+ae14, U+ae6c, U+aec0, U+afc7, U+afc9, U+b01c, U+b028, U+b308, U+b311, U+b314, U+b31c, U+b524, U+b560, U+b764, U+b920, U+b9e3, U+bd48, U+be7d, U+c0db, U+c231, U+c270, U+c2e3, U+c37d, U+c3ed, U+c530, U+c6a5, U+c6dc, U+c7a4, U+c954, U+c974, U+d000, U+d565, U+d667, U+d6c5, U+d79d, U+ff1e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-103.woff2') format('woff2'); unicode-range: U+131, U+2032, U+2465, U+2642, U+3048, U+3051, U+3083-3084, U+308f, U+30c0, U+30d1, U+30d3, U+30d6, U+30df, U+30e7, U+3153, U+4e16, U+4e8b, U+4ee5, U+5206, U+52a0, U+52d5, U+53e4, U+53ef, U+54c1, U+57ce, U+597d, U+5b8c, U+5ea6, U+5f8c, U+5f97, U+6210, U+6240, U+624b, U+6728, U+6bd4, U+7236, U+7269, U+7279, U+738b, U+7528, U+7530, U+767e, U+798f, U+8005, U+8a18, U+90fd, U+91cc, U+9577, U+9593, U+98a8, U+ac20, U+acf6, U+ad90, U+af5d, U+af80, U+afcd, U+aff0, U+b0a1, U+b0b5, U+b1fd, U+b2fc, U+b380, U+b51b, U+b584, U+b5b3, U+b8fd, U+b93c, U+b9f4, U+bb44, U+bc08, U+bc27, U+bc49, U+be55, U+be64, U+bfb0, U+bfc5, U+c178, U+c21f, U+c314, U+c4f1, U+c58d, U+c664, U+c698, U+c6a7, U+c6c1, U+c9ed, U+cac0, U+cacc, U+cad9, U+ccb5, U+cdcc, U+d0e4, U+d143, U+d320, U+d330, U+d54d, U+ff06, U+ff1f, U+ff5e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-104.woff2') format('woff2'); unicode-range: U+b4, U+20a9, U+20ac, U+2190, U+24d8, U+2502, U+2514, U+2592, U+25c7-25c8, U+2663, U+3060, U+3064, U+3081, U+3088, U+30a3, U+30a6, U+30aa, U+30b5, U+30c7, U+30ca-30cb, U+30d0, U+30e3, U+30e5, U+339e, U+4e09, U+4eac, U+4f5c, U+5167-5168, U+516c, U+51fa, U+5408, U+540d, U+591a, U+5b57, U+6211, U+65b9, U+660e, U+6642, U+6700, U+6b63, U+6e2f, U+7063, U+7532, U+793e, U+81ea, U+8272, U+82b1, U+897f, U+8eca, U+91ce, U+ac38, U+ad76, U+ae84, U+aecc, U+b07d, U+b0b1, U+b215, U+b2a0, U+b310, U+b3d7, U+b52a, U+b618, U+b775, U+b797, U+bcd5, U+bd59, U+be80, U+bea8, U+bed1, U+bee4-bee5, U+c060, U+c2ef, U+c329, U+c3dc, U+c597, U+c5bd, U+c5e5, U+c69c, U+c9d6, U+ca29, U+ca5c, U+ca84, U+cc39, U+cc3b, U+ce89, U+cee5, U+cf65, U+cf85, U+d058, U+d145, U+d22d, U+d325, U+d37d, U+d3ad, U+d769, U+ff0c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-105.woff2') format('woff2'); unicode-range: U+2161, U+2228, U+2299, U+2464, U+2517, U+2640, U+3042, U+304a, U+3053, U+3061, U+307f, U+3082, U+308c, U+3092, U+30a8, U+30ab, U+30ad, U+30b0, U+30b3, U+30b7, U+30c1, U+30c6, U+30c9, U+30d5, U+30d7, U+30de, U+30e0-30e1, U+30ec-30ed, U+4e0b, U+4e0d, U+4ee3, U+53f0, U+548c, U+5b89, U+5bb6, U+5c0f, U+611b, U+6771, U+6aa2, U+6bcd, U+6c34, U+6cd5, U+6d77, U+767d, U+795e, U+8ecd, U+9999, U+9ad8, U+ac07, U+ac1a, U+ac40, U+ad0c, U+ad88, U+ada4, U+ae01, U+ae65, U+aebd, U+aec4, U+afe8, U+b139, U+b205, U+b383, U+b38c, U+b42c, U+b461, U+b55c, U+b78f, U+b8fb, U+b9f7, U+bafc, U+bc99, U+bed8, U+bfcd, U+c0bf, U+c0f9, U+c167, U+c204, U+c20f, U+c22f, U+c258, U+c298, U+c2bc, U+c388, U+c501, U+c50c, U+c5b9, U+c5ce, U+c641, U+c648, U+c73d, U+ca50, U+ca61, U+cc4c, U+ceac, U+d0d4, U+d5f7, U+d6d7, U+ff1a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-106.woff2') format('woff2'); unicode-range: U+2103, U+2463, U+25c6, U+25cb, U+266c, U+3001, U+300a, U+3046, U+304c-304d, U+304f, U+3055, U+3059, U+3063, U+3066-3068, U+306f, U+3089, U+30b8, U+30bf, U+314f, U+4e0a, U+570b, U+5730, U+5916, U+5929, U+5c71, U+5e74, U+5fc3, U+601d, U+6027, U+63d0, U+6709, U+6734, U+751f, U+7684, U+82f1, U+9053, U+91d1, U+97f3, U+ac2f, U+ac4d, U+adc4, U+ade4, U+ae41, U+ae4d-ae4e, U+aed1, U+afb9, U+b0e0, U+b299, U+b365, U+b46c, U+b480, U+b4c8, U+b7b4, U+b819, U+b918, U+baab, U+bab9, U+be8f, U+bed7, U+c0ec, U+c19f, U+c1a5, U+c3d9, U+c464, U+c53d, U+c553, U+c570, U+c5cc, U+c633, U+c6a4, U+c7a3, U+c7a6, U+c886, U+c9d9-c9da, U+c9ec, U+ca0c, U+cc21, U+cd1b, U+cd78, U+cdc4, U+cef8, U+cfe4, U+d0a5, U+d0b5, U+d0ec, U+d15d, U+d188, U+d23c, U+d2ac, U+d729, U+d79b, U+ff01, U+ff08-ff09, U+ff5c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-107.woff2') format('woff2'); unicode-range: U+2039-203a, U+223c, U+25b3, U+25b7, U+25bd, U+25cf, U+266a, U+3002, U+300b, U+304b, U+3057, U+305f, U+306a-306b, U+307e, U+308a-308b, U+3093, U+30a2, U+30af, U+30b9, U+30c3, U+30c8, U+30e9-30eb, U+33a1, U+4e00, U+524d, U+5357, U+5b50, U+7121, U+884c, U+9751, U+ac94, U+aebe, U+aecd, U+af08, U+af41, U+af49, U+b010, U+b053, U+b109, U+b11b, U+b128, U+b154, U+b291, U+b2e6, U+b301, U+b385, U+b525, U+b5b4, U+b729, U+b72f, U+b738, U+b7ff, U+b837, U+b975, U+ba67, U+bb47, U+bc1f, U+bd90, U+bfd4, U+c27c, U+c324, U+c379, U+c3e0, U+c465, U+c53b, U+c58c, U+c610, U+c653, U+c6cd, U+c813, U+c82f, U+c999, U+c9e0, U+cac4, U+cad3, U+cbd4, U+cc10, U+cc22, U+ccb8, U+ccbc, U+cda5, U+ce84, U+cea3, U+cf67, U+cfe1, U+d241, U+d30d, U+d31c, U+d391, U+d401, U+d479, U+d5c9, U+d5db, U+d649, U+d6d4; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-108.woff2') format('woff2'); unicode-range: U+b0, U+e9, U+2193, U+2462, U+260e, U+261e, U+300e-300f, U+3044, U+30a4, U+30fb-30fc, U+314d, U+5973, U+6545, U+6708, U+7537, U+ac89, U+ac9c, U+acc1, U+ad04, U+ad75, U+ad7d, U+ae45, U+ae61, U+af42, U+b0ab, U+b0af, U+b0b3, U+b12c, U+b194, U+b1a8, U+b220, U+b258, U+b284, U+b2ff, U+b315, U+b371, U+b3d4-b3d5, U+b460, U+b527, U+b534, U+b810, U+b818, U+b98e, U+ba55, U+bbac, U+bc0b, U+bc40, U+bca1, U+bccd, U+bd93, U+be54, U+be5a, U+bf08, U+bf50, U+bf55, U+bfdc, U+c0c0, U+c0d0, U+c0f4, U+c100, U+c11e, U+c170, U+c20d, U+c274, U+c290, U+c308, U+c369, U+c539, U+c587, U+c5ff, U+c6ec, U+c70c, U+c7ad, U+c7c8, U+c83c, U+c881, U+cb48, U+cc60, U+ce69, U+ce6b, U+ce75, U+cf04, U+cf08, U+cf55, U+cf70, U+cffc, U+d0b7, U+d1a8, U+d2c8, U+d384, U+d47c, U+d48b, U+d5dd, U+d5e8, U+d720, U+d759, U+f981; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-109.woff2') format('woff2'); unicode-range: U+e0, U+e2, U+395, U+3b7, U+3ba, U+2460-2461, U+25a0, U+3010-3011, U+306e, U+30f3, U+314a, U+314c, U+5927, U+65b0, U+7e41, U+97d3, U+9ad4, U+ad49, U+ae0b, U+ae0d, U+ae43, U+ae5d, U+aecf, U+af3c, U+af64, U+afd4, U+b080, U+b084, U+b0c5, U+b10c, U+b1e8, U+b2ac, U+b36e, U+b451, U+b515, U+b540, U+b561, U+b6ab, U+b6b1, U+b72c, U+b730, U+b744, U+b800, U+b8ec, U+b8f0, U+b904, U+b968, U+b96d, U+b987, U+b9d9, U+bb36, U+bb49, U+bc2d, U+bc43, U+bcf6, U+bd89, U+be57, U+be61, U+bed4, U+c090, U+c130, U+c148, U+c19c, U+c2f9, U+c36c, U+c37c, U+c384, U+c3df, U+c575, U+c584, U+c660, U+c719, U+c816, U+ca4d, U+ca54, U+cabc, U+cb49, U+cc14, U+cff5, U+d004, U+d038, U+d0b4, U+d0d3, U+d0e0, U+d0ed, U+d131, U+d1b0, U+d31f, U+d33d, U+d3a0, U+d3ab, U+d514, U+d584, U+d6a1, U+d6cc, U+d749, U+d760, U+d799; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-110.woff2') format('woff2'); unicode-range: U+24, U+60, U+3b9, U+3bb, U+3bd, U+2191, U+2606, U+300c-300d, U+3131, U+3134, U+3139, U+3141-3142, U+3148, U+3161, U+3163, U+321c, U+4eba, U+5317, U+ac31, U+ac77, U+ac9f, U+acb9, U+acf0-acf1, U+acfd, U+ad73, U+af3d, U+b00c, U+b04a, U+b057, U+b0c4, U+b188, U+b1cc, U+b214, U+b2db, U+b2ee, U+b304, U+b4ed, U+b518, U+b5bc, U+b625, U+b69c-b69d, U+b7ac, U+b801, U+b86c, U+b959, U+b95c, U+b985, U+ba48, U+bb58, U+bc0c, U+bc38, U+bc85, U+bc9a, U+bf40, U+c068, U+c0bd, U+c0cc, U+c12f, U+c149, U+c1e0, U+c22b, U+c22d, U+c250, U+c2fc, U+c300, U+c313, U+c370, U+c3d8, U+c557, U+c580, U+c5e3, U+c62e, U+c634, U+c6f0, U+c74d, U+c783, U+c78e, U+c796, U+c7bc, U+c92c, U+ca4c, U+cc1c, U+cc54, U+cc59, U+ce04, U+cf30, U+cfc4, U+d140, U+d321, U+d38c, U+d399, U+d54f, U+d587, U+d5d0, U+d6e8, U+d770; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-111.woff2') format('woff2'); unicode-range: U+d7, U+ea, U+fc, U+2192, U+25bc, U+3000, U+3137, U+3145, U+315c, U+7f8e, U+ac13, U+ac71, U+ac90, U+acb8, U+ace7, U+ad7f, U+ae50, U+aef4, U+af34, U+afbc, U+b048, U+b09a, U+b0ad, U+b0bc, U+b113, U+b125, U+b141, U+b20c, U+b2d9, U+b2ed, U+b367, U+b369, U+b374, U+b3cb, U+b4ec, U+b611, U+b760, U+b81b, U+b834, U+b8b0, U+b8e1, U+b989, U+b9d1, U+b9e1, U+b9fa, U+ba4d, U+ba78, U+bb35, U+bb54, U+bbf9, U+bc11, U+bcb3, U+bd05, U+bd95, U+bdd4, U+be10, U+bed0, U+bf51, U+c0d8, U+c232, U+c2b7, U+c2eb, U+c378, U+c500, U+c52c, U+c549, U+c568, U+c598, U+c5c9, U+c61b, U+c639, U+c67c, U+c717, U+c78a, U+c80a, U+c90c-c90d, U+c950, U+c9e7, U+cbe4, U+cca9, U+cce4, U+cdb0, U+ce78, U+ce94, U+ce98, U+cf8c, U+d018, U+d034, U+d0f1, U+d1b1, U+d280, U+d2f8, U+d338, U+d380, U+d3b4, U+d610, U+d69f, U+d6fc, U+d758; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-112.woff2') format('woff2'); unicode-range: U+e7, U+2022, U+203b, U+25c0, U+2605, U+2661, U+3147, U+318d, U+672c, U+8a9e, U+acaa, U+acbc, U+ad1c, U+ae4a, U+ae5c, U+b044, U+b054, U+b0c8-b0c9, U+b2a6, U+b2d0, U+b35c, U+b364, U+b428, U+b454, U+b465, U+b4b7, U+b4e3, U+b51c, U+b5a1, U+b784, U+b790, U+b7ab, U+b7f4, U+b82c, U+b835, U+b8e9, U+b8f8, U+b9d8, U+b9f9, U+ba5c, U+ba64, U+babd, U+bb18, U+bb3b, U+bbff, U+bc0d, U+bc45, U+bc97, U+bcbc, U+be45, U+be75, U+be7c, U+bfcc, U+c0b6, U+c0f7, U+c14b, U+c2b4, U+c30d, U+c4f8, U+c5bb, U+c5d1, U+c5e0, U+c5ee, U+c5fd, U+c606, U+c6c5, U+c6e0, U+c708, U+c81d, U+c820, U+c824, U+c878, U+c918, U+c96c, U+c9e4, U+c9f1, U+cc2e, U+cd09, U+cea1, U+cef5, U+cef7, U+cf64, U+cf69, U+cfe8, U+d035, U+d0ac, U+d230, U+d234, U+d2f4, U+d31d, U+d575, U+d578, U+d608, U+d614, U+d718, U+d751, U+d761, U+d78c, U+d790; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-113.woff2') format('woff2'); unicode-range: U+2665, U+3160, U+4e2d, U+6587, U+65e5, U+ac12, U+ac14, U+ac16, U+ac81, U+ad34, U+ade0, U+ae54, U+aebc, U+af2c, U+afc0, U+afc8, U+b04c, U+b08c, U+b099, U+b0a9, U+b0ac, U+b0ae, U+b0b8, U+b123, U+b179, U+b2e5, U+b2f7, U+b4c0, U+b531, U+b538, U+b545, U+b550, U+b5a8, U+b6f0, U+b728, U+b73b, U+b7ad, U+b7ed, U+b809, U+b864, U+b86d, U+b871, U+b9bf, U+b9f5, U+ba40, U+ba4b, U+ba58, U+ba87, U+baac, U+bbc0, U+bc16, U+bc34, U+bd07, U+bd99, U+be59, U+bfd0, U+c058, U+c0e4, U+c0f5, U+c12d, U+c139, U+c228, U+c529, U+c5c7, U+c635, U+c637, U+c735, U+c77d, U+c787, U+c789, U+c8c4, U+c989, U+c98c, U+c9d0, U+c9d3, U+cc0c, U+cc99, U+cd0c, U+cd2c, U+cd98, U+cda4, U+ce59, U+ce60, U+ce6d, U+cea0, U+d0d0-d0d1, U+d0d5, U+d14d, U+d1a4, U+d29c, U+d2f1, U+d301, U+d39c, U+d3bc, U+d4e8, U+d540, U+d5ec, U+d640, U+d750; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-114.woff2') format('woff2'); unicode-range: U+5e, U+25b2, U+25b6, U+314e, U+ac24, U+ace1, U+ace4, U+ae68, U+af2d, U+b0d0, U+b0e5, U+b150, U+b155, U+b193, U+b2c9, U+b2dd, U+b3c8, U+b3fc, U+b410, U+b458, U+b4dd, U+b5a0, U+b5a4, U+b5bb, U+b7b5, U+b838, U+b840, U+b86f, U+b8f9, U+b960, U+b9e5, U+bab8, U+bb50, U+bc1d, U+bc24-bc25, U+bca8, U+bcbd, U+bd04, U+bd10, U+bd24, U+be48, U+be5b, U+be68, U+c05c, U+c12c, U+c140, U+c15c, U+c168, U+c194, U+c219, U+c27d, U+c2a8, U+c2f1, U+c2f8, U+c368, U+c554-c555, U+c559, U+c564, U+c5d8, U+c5fc, U+c625, U+c65c, U+c6b1, U+c728, U+c794, U+c84c, U+c88c, U+c8e0, U+c8fd, U+c998, U+c9dd, U+cc0d, U+cc30, U+ceec, U+cf13, U+cf1c, U+cf5c, U+d050, U+d07c, U+d0a8, U+d134, U+d138, U+d154, U+d1f4, U+d2bc, U+d329, U+d32c, U+d3d0, U+d3f4, U+d3fc, U+d56b, U+d5cc, U+d600-d601, U+d639, U+d6c8, U+d754, U+d765; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-115.woff2') format('woff2'); unicode-range: U+3c-3d, U+2026, U+24d2, U+314b, U+ac11, U+acf3, U+ad74, U+ad81, U+adf9, U+ae34, U+af43, U+afb8, U+b05d, U+b07c, U+b110, U+b118, U+b17c, U+b180, U+b18d, U+b192, U+b2cc, U+b355, U+b378, U+b4a4, U+b4ef, U+b78d, U+b799, U+b7a9, U+b7fd, U+b807, U+b80c, U+b839, U+b9b4, U+b9db, U+ba3c, U+bab0, U+bba4, U+bc94, U+be4c, U+c154, U+c1c4, U+c26c, U+c2ac, U+c2ed, U+c4f4, U+c55e, U+c561, U+c571, U+c5b5, U+c5c4, U+c654-c655, U+c695, U+c6e8, U+c6f9, U+c724, U+c751, U+c775, U+c7a0, U+c7c1, U+c874, U+c880, U+c9d5, U+c9f8, U+cabd, U+cc29, U+cc2c, U+cca8, U+ccab, U+ccd0, U+ce21, U+ce35, U+ce7c, U+ce90, U+cee8, U+cef4, U+cfe0, U+d070, U+d0b9, U+d0c1, U+d0c4, U+d0c8, U+d15c, U+d1a1, U+d2c0, U+d300, U+d314, U+d3ed, U+d478, U+d480, U+d48d, U+d508, U+d53d, U+d5e4, U+d611, U+d61c, U+d68d, U+d6a8, U+d798; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-116.woff2') format('woff2'); unicode-range: U+23, U+25, U+5f, U+a9, U+ac08, U+ac78, U+aca8, U+acac, U+ace8, U+ad70, U+adc0, U+addc, U+b137, U+b140, U+b208, U+b290, U+b2f5, U+b3c5, U+b3cc, U+b420, U+b429, U+b529, U+b530, U+b77d, U+b79c, U+b7a8, U+b7c9, U+b7f0, U+b7fc, U+b828, U+b860, U+b9ad, U+b9c1, U+b9c9, U+b9dd-b9de, U+b9e8, U+ba38-ba39, U+babb, U+bc00, U+bc8c, U+bca0, U+bca4, U+bcd1, U+bcfc, U+bd09, U+bdf0, U+be60, U+c0ad, U+c0b4, U+c0bc, U+c190, U+c1fc, U+c220, U+c288, U+c2b9, U+c2f6, U+c528, U+c545, U+c558, U+c5bc, U+c5d4, U+c600, U+c644, U+c6c0, U+c6c3, U+c721, U+c798, U+c7a1, U+c811, U+c838, U+c871, U+c904, U+c990, U+c9dc, U+cc38, U+cc44, U+cca0, U+cd1d, U+cd95, U+cda9, U+ce5c, U+cf00, U+cf58, U+d150, U+d22c, U+d305, U+d328, U+d37c, U+d3f0, U+d551, U+d5a5, U+d5c8, U+d5d8, U+d63c, U+d64d, U+d669, U+d734, U+d76c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-117.woff2') format('woff2'); unicode-range: U+26, U+2b, U+3e, U+40, U+7e, U+ac01, U+ac19, U+ac1d, U+aca0, U+aca9, U+acb0, U+ad8c, U+ae09, U+ae38, U+ae40, U+aed8, U+b09c, U+b0a0, U+b108, U+b204, U+b298, U+b2d8, U+b2eb-b2ec, U+b2f4, U+b313, U+b358, U+b450, U+b4e0, U+b54c, U+b610, U+b780, U+b78c, U+b791, U+b8e8, U+b958, U+b974, U+b984, U+b9b0, U+b9bc-b9bd, U+b9ce, U+ba70, U+bbfc, U+bc0f, U+bc15, U+bc1b, U+bc31, U+bc95, U+bcc0, U+bcc4, U+bd81, U+bd88, U+c0c8, U+c11d, U+c13c, U+c158, U+c18d, U+c1a1, U+c21c, U+c4f0, U+c54a, U+c560, U+c5b8, U+c5c8, U+c5f4, U+c628, U+c62c, U+c678, U+c6cc, U+c808, U+c810, U+c885, U+c88b, U+c900, U+c988, U+c99d, U+c9c8, U+cc3d-cc3e, U+cc45, U+cd08, U+ce20, U+cee4, U+d074, U+d0a4, U+d0dd, U+d2b9, U+d3b8, U+d3c9, U+d488, U+d544, U+d559, U+d56d, U+d588, U+d615, U+d648, U+d655, U+d658, U+d65c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-118.woff2') format('woff2'); unicode-range: U+d, U+48, U+7c, U+ac10, U+ac15, U+ac74, U+ac80, U+ac83, U+acc4, U+ad11, U+ad50, U+ad6d, U+adfc, U+ae00, U+ae08, U+ae4c, U+b0a8, U+b124, U+b144, U+b178, U+b274, U+b2a5, U+b2e8, U+b2f9, U+b354, U+b370, U+b418, U+b41c, U+b4f1, U+b514, U+b798, U+b808, U+b824-b825, U+b8cc, U+b978, U+b9d0, U+b9e4, U+baa9, U+bb3c, U+bc18, U+bc1c, U+bc30, U+bc84, U+bcf5, U+bcf8, U+bd84, U+be0c, U+be14, U+c0b0, U+c0c9, U+c0dd, U+c124, U+c2dd, U+c2e4, U+c2ec, U+c54c, U+c57c-c57d, U+c591, U+c5c5-c5c6, U+c5ed, U+c608, U+c640, U+c6b8, U+c6d4, U+c784, U+c7ac, U+c800-c801, U+c9c1, U+c9d1, U+cc28, U+cc98, U+cc9c, U+ccad, U+cd5c, U+cd94, U+cd9c, U+cde8, U+ce68, U+cf54, U+d0dc, U+d14c, U+d1a0, U+d1b5, U+d2f0, U+d30c, U+d310, U+d398, U+d45c, U+d50c, U+d53c, U+d560, U+d568, U+d589, U+d604, U+d6c4, U+d788; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-119.woff2') format('woff2'); unicode-range: U+39, U+49, U+4d-4e, U+a0, U+ac04, U+ac1c, U+ac70, U+ac8c, U+acbd, U+acf5, U+acfc, U+ad00, U+ad6c, U+adf8, U+b098, U+b0b4, U+b294, U+b2c8, U+b300, U+b3c4, U+b3d9, U+b4dc, U+b4e4, U+b77c, U+b7ec, U+b85d, U+b97c, U+b9c8, U+b9cc, U+ba54, U+ba74, U+ba85, U+baa8, U+bb34, U+bb38, U+bbf8, U+bc14, U+bc29, U+bc88, U+bcf4, U+bd80, U+be44, U+c0c1, U+c11c, U+c120, U+c131, U+c138, U+c18c, U+c218, U+c2b5, U+c2e0, U+c544, U+c548, U+c5b4, U+c5d0, U+c5ec, U+c5f0, U+c601, U+c624, U+c694, U+c6a9, U+c6b0, U+c6b4, U+c6d0, U+c704, U+c720, U+c73c, U+c740, U+c744, U+c74c, U+c758, U+c77c, U+c785, U+c788, U+c790-c791, U+c7a5, U+c804, U+c815, U+c81c, U+c870, U+c8fc, U+c911, U+c9c4, U+ccb4, U+ce58, U+ce74, U+d06c, U+d0c0, U+d130, U+d2b8, U+d3ec, U+d504, U+d55c, U+d569, U+d574, U+d638, U+d654, U+d68c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-120.woff2') format('woff2'); unicode-range: U+20-22, U+27-2a, U+2c-38, U+3a-3b, U+3f, U+41-47, U+4a-4c, U+4f-5d, U+61-7b, U+7d, U+a1, U+ab, U+ae, U+b7, U+bb, U+bf, U+2013-2014, U+201c-201d, U+2122, U+ac00, U+ace0, U+ae30, U+b2e4, U+b85c, U+b9ac, U+c0ac, U+c2a4, U+c2dc, U+c774, U+c778, U+c9c0, U+d558; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-121.woff2') format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-122.woff2') format('woff2'); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-123.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 700; font-display: swap; src: url('assets/font/noto-kr-124.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-125.woff2') format('woff2'); unicode-range: U+f9ca-fa0b, U+ff03-ff05, U+ff07, U+ff0a-ff0b, U+ff0d-ff19, U+ff1b, U+ff1d, U+ff20-ff5b, U+ff5d, U+ffe0-ffe3, U+ffe5-ffe6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-126.woff2') format('woff2'); unicode-range: U+f92f-f980, U+f982-f9c9; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-127.woff2') format('woff2'); unicode-range: U+d723-d728, U+d72a-d733, U+d735-d748, U+d74a-d74f, U+d752-d753, U+d755-d757, U+d75a-d75f, U+d762-d764, U+d766-d768, U+d76a-d76b, U+d76d-d76f, U+d771-d787, U+d789-d78b, U+d78d-d78f, U+d791-d797, U+d79a, U+d79c, U+d79e-d7a3, U+f900-f909, U+f90b-f92e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-128.woff2') format('woff2'); unicode-range: U+d679-d68b, U+d68e-d69e, U+d6a0, U+d6a2-d6a7, U+d6a9-d6c3, U+d6c6-d6c7, U+d6c9-d6cb, U+d6cd-d6d3, U+d6d5-d6d6, U+d6d8-d6e3, U+d6e5-d6e7, U+d6e9-d6fb, U+d6fd-d717, U+d719-d71f, U+d721-d722; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-129.woff2') format('woff2'); unicode-range: U+d5bc-d5c7, U+d5ca-d5cb, U+d5cd-d5cf, U+d5d1-d5d7, U+d5d9-d5da, U+d5dc, U+d5de-d5e3, U+d5e6-d5e7, U+d5e9-d5eb, U+d5ed-d5f6, U+d5f8, U+d5fa-d5ff, U+d602-d603, U+d605-d607, U+d609-d60f, U+d612-d613, U+d616-d61b, U+d61d-d637, U+d63a-d63b, U+d63d-d63f, U+d641-d647, U+d64a-d64c, U+d64e-d653, U+d656-d657, U+d659-d65b, U+d65d-d666, U+d668, U+d66a-d678; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-130.woff2') format('woff2'); unicode-range: U+d507, U+d509-d50b, U+d50d-d513, U+d515-d53b, U+d53e-d53f, U+d541-d543, U+d545-d54c, U+d54e, U+d550, U+d552-d557, U+d55a-d55b, U+d55d-d55f, U+d561-d564, U+d566-d567, U+d56a, U+d56c, U+d56e-d573, U+d576-d577, U+d579-d583, U+d585-d586, U+d58a-d5a4, U+d5a6-d5bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-131.woff2') format('woff2'); unicode-range: U+d464-d477, U+d47a-d47b, U+d47d-d47f, U+d481-d487, U+d489-d48a, U+d48c, U+d48e-d4e7, U+d4e9-d503, U+d505-d506; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-132.woff2') format('woff2'); unicode-range: U+d3bf-d3c7, U+d3ca-d3cf, U+d3d1-d3eb, U+d3ee-d3ef, U+d3f1-d3f3, U+d3f5-d3fb, U+d3fd-d400, U+d402-d45b, U+d45d-d463; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-133.woff2') format('woff2'); unicode-range: U+d2ff, U+d302-d304, U+d306-d30b, U+d30f, U+d311-d313, U+d315-d31b, U+d31e, U+d322-d324, U+d326-d327, U+d32a-d32b, U+d32d-d32f, U+d331-d337, U+d339-d33c, U+d33e-d37b, U+d37e-d37f, U+d381-d383, U+d385-d38b, U+d38e-d390, U+d392-d397, U+d39a-d39b, U+d39d-d39f, U+d3a1-d3a7, U+d3a9-d3aa, U+d3ac, U+d3ae-d3b3, U+d3b5-d3b7, U+d3b9-d3bb, U+d3bd-d3be; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-134.woff2') format('woff2'); unicode-range: U+d257-d27f, U+d281-d29b, U+d29d-d29f, U+d2a1-d2ab, U+d2ad-d2b7, U+d2ba-d2bb, U+d2bd-d2bf, U+d2c1-d2c7, U+d2c9-d2ef, U+d2f2-d2f3, U+d2f5-d2f7, U+d2f9-d2fe; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-135.woff2') format('woff2'); unicode-range: U+d1b4, U+d1b6-d1f3, U+d1f5-d22b, U+d22e-d22f, U+d231-d233, U+d235-d23b, U+d23d-d240, U+d242-d256; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-136.woff2') format('woff2'); unicode-range: U+d105-d12f, U+d132-d133, U+d135-d137, U+d139-d13f, U+d141-d142, U+d144, U+d146-d14b, U+d14e-d14f, U+d151-d153, U+d155-d15b, U+d15e-d187, U+d189-d19f, U+d1a2-d1a3, U+d1a5-d1a7, U+d1a9-d1af, U+d1b2-d1b3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-137.woff2') format('woff2'); unicode-range: U+d04b-d04f, U+d051-d057, U+d059-d06b, U+d06d-d06f, U+d071-d073, U+d075-d07b, U+d07e-d0a3, U+d0a6-d0a7, U+d0a9-d0ab, U+d0ad-d0b3, U+d0b6, U+d0b8, U+d0ba-d0bf, U+d0c2-d0c3, U+d0c5-d0c7, U+d0c9-d0cf, U+d0d2, U+d0d6-d0db, U+d0de-d0df, U+d0e1-d0e3, U+d0e5-d0eb, U+d0ee-d0f0, U+d0f2-d104; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-138.woff2') format('woff2'); unicode-range: U+cfa2-cfc3, U+cfc5-cfdf, U+cfe2-cfe3, U+cfe5-cfe7, U+cfe9-cff4, U+cff6-cffb, U+cffd-cfff, U+d001-d003, U+d005-d017, U+d019-d033, U+d036-d037, U+d039-d03b, U+d03d-d04a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-139.woff2') format('woff2'); unicode-range: U+cef0-cef3, U+cef6, U+cef9-ceff, U+cf01-cf03, U+cf05-cf07, U+cf09-cf0f, U+cf11-cf12, U+cf14-cf1b, U+cf1d-cf1f, U+cf21-cf2f, U+cf31-cf53, U+cf56-cf57, U+cf59-cf5b, U+cf5d-cf63, U+cf66, U+cf68, U+cf6a-cf6f, U+cf71-cf84, U+cf86-cf8b, U+cf8d-cfa1; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-140.woff2') format('woff2'); unicode-range: U+ce3c-ce57, U+ce5a-ce5b, U+ce5d-ce5f, U+ce61-ce67, U+ce6a, U+ce6c, U+ce6e-ce73, U+ce76-ce77, U+ce79-ce7b, U+ce7d-ce83, U+ce85-ce88, U+ce8a-ce8f, U+ce91-ce93, U+ce95-ce97, U+ce99-ce9f, U+cea2, U+cea4-ceab, U+cead-cee3, U+cee6-cee7, U+cee9-ceeb, U+ceed-ceef; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-141.woff2') format('woff2'); unicode-range: U+cd92-cd93, U+cd96-cd97, U+cd99-cd9b, U+cd9d-cda3, U+cda6-cda8, U+cdaa-cdaf, U+cdb1-cdc3, U+cdc5-cdcb, U+cdcd-cde7, U+cde9-ce03, U+ce05-ce1f, U+ce22-ce34, U+ce36-ce3b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-142.woff2') format('woff2'); unicode-range: U+ccef-cd07, U+cd0a-cd0b, U+cd0d-cd1a, U+cd1c, U+cd1e-cd2b, U+cd2d-cd5b, U+cd5d-cd77, U+cd79-cd91; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-143.woff2') format('woff2'); unicode-range: U+cc3f-cc43, U+cc46-cc47, U+cc49-cc4b, U+cc4d-cc53, U+cc55-cc58, U+cc5a-cc5f, U+cc61-cc97, U+cc9a-cc9b, U+cc9d-cc9f, U+cca1-cca7, U+ccaa, U+ccac, U+ccae-ccb3, U+ccb6-ccb7, U+ccb9-ccbb, U+ccbd-cccf, U+ccd1-cce3, U+cce5-ccee; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-144.woff2') format('woff2'); unicode-range: U+cb91-cbd3, U+cbd5-cbe3, U+cbe5-cc0b, U+cc0e-cc0f, U+cc11-cc13, U+cc15-cc1b, U+cc1d-cc20, U+cc23-cc27, U+cc2a-cc2b, U+cc2d, U+cc2f, U+cc31-cc37, U+cc3a, U+cc3c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-145.woff2') format('woff2'); unicode-range: U+caf4-cb47, U+cb4a-cb90; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-146.woff2') format('woff2'); unicode-range: U+ca4a-ca4b, U+ca4e-ca4f, U+ca51-ca53, U+ca55-ca5b, U+ca5d-ca60, U+ca62-ca83, U+ca85-cabb, U+cabe-cabf, U+cac1-cac3, U+cac5-cacb, U+cacd-cad0, U+cad2, U+cad4-cad8, U+cada-caf3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-147.woff2') format('woff2'); unicode-range: U+c996-c997, U+c99a-c99c, U+c99e-c9bf, U+c9c2-c9c3, U+c9c5-c9c7, U+c9c9-c9cf, U+c9d2, U+c9d4, U+c9d7-c9d8, U+c9db, U+c9de-c9df, U+c9e1-c9e3, U+c9e5-c9e6, U+c9e8-c9eb, U+c9ee-c9f0, U+c9f2-c9f7, U+c9f9-ca0b, U+ca0d-ca28, U+ca2a-ca49; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-148.woff2') format('woff2'); unicode-range: U+c8e9-c8f4, U+c8f6-c8fb, U+c8fe-c8ff, U+c901-c903, U+c905-c90b, U+c90e-c910, U+c912-c917, U+c919-c92b, U+c92d-c94f, U+c951-c953, U+c955-c96b, U+c96d-c973, U+c975-c987, U+c98a-c98b, U+c98d-c98f, U+c991-c995; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-149.woff2') format('woff2'); unicode-range: U+c841-c84b, U+c84d-c86f, U+c872-c873, U+c875-c877, U+c879-c87f, U+c882-c884, U+c887-c88a, U+c88d-c8c3, U+c8c5-c8df, U+c8e1-c8e8; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-150.woff2') format('woff2'); unicode-range: U+c779-c77b, U+c77e-c782, U+c786, U+c78b, U+c78d, U+c78f, U+c792-c793, U+c795, U+c797, U+c799-c79f, U+c7a2, U+c7a7-c7ab, U+c7ae-c7bb, U+c7bd-c7c0, U+c7c2-c7c7, U+c7c9-c7dc, U+c7de-c7ff, U+c802-c803, U+c805-c807, U+c809, U+c80b-c80f, U+c812, U+c814, U+c817-c81b, U+c81e-c81f, U+c821-c823, U+c825-c82e, U+c830-c837, U+c839-c83b, U+c83d-c840; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-151.woff2') format('woff2'); unicode-range: U+c6bb-c6bf, U+c6c2, U+c6c4, U+c6c6-c6cb, U+c6ce-c6cf, U+c6d1-c6d3, U+c6d5-c6db, U+c6dd-c6df, U+c6e1-c6e7, U+c6e9-c6eb, U+c6ed-c6ef, U+c6f1-c6f8, U+c6fa-c703, U+c705-c707, U+c709-c70b, U+c70d-c716, U+c718, U+c71a-c71f, U+c722-c723, U+c725-c727, U+c729-c734, U+c736-c73b, U+c73e-c73f, U+c741-c743, U+c745-c74b, U+c74e-c750, U+c752-c757, U+c759-c773, U+c776-c777; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-152.woff2') format('woff2'); unicode-range: U+c5f5-c5fb, U+c5fe, U+c602-c605, U+c607, U+c609-c60f, U+c611-c61a, U+c61c-c623, U+c626-c627, U+c629-c62b, U+c62d, U+c62f-c632, U+c636, U+c638, U+c63a-c63f, U+c642-c643, U+c645-c647, U+c649-c652, U+c656-c65b, U+c65d-c65f, U+c661-c663, U+c665-c677, U+c679-c67b, U+c67d-c693, U+c696-c697, U+c699-c69b, U+c69d-c6a3, U+c6a6, U+c6a8, U+c6aa-c6af, U+c6b2-c6b3, U+c6b5-c6b7, U+c6b9-c6ba; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-153.woff2') format('woff2'); unicode-range: U+c517-c527, U+c52a-c52b, U+c52d-c52f, U+c531-c538, U+c53a, U+c53c, U+c53e-c543, U+c546-c547, U+c54b, U+c54d-c552, U+c556, U+c55a-c55b, U+c55d, U+c55f, U+c562-c563, U+c565-c567, U+c569-c56f, U+c572, U+c574, U+c576-c57b, U+c57e-c57f, U+c581-c583, U+c585-c586, U+c588-c58b, U+c58e, U+c590, U+c592-c596, U+c599-c5b3, U+c5b6-c5b7, U+c5ba, U+c5be-c5c3, U+c5ca-c5cb, U+c5cd, U+c5cf, U+c5d2-c5d3, U+c5d5-c5d7, U+c5d9-c5df, U+c5e1-c5e2, U+c5e4, U+c5e6-c5eb, U+c5ef, U+c5f1-c5f3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-154.woff2') format('woff2'); unicode-range: U+c475-c4ef, U+c4f2-c4f3, U+c4f5-c4f7, U+c4f9-c4ff, U+c502-c50b, U+c50d-c516; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-155.woff2') format('woff2'); unicode-range: U+c3d0-c3d7, U+c3da-c3db, U+c3dd-c3de, U+c3e1-c3ec, U+c3ee-c3f3, U+c3f5-c42b, U+c42d-c463, U+c466-c474; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-156.woff2') format('woff2'); unicode-range: U+c32b-c367, U+c36a-c36b, U+c36d-c36f, U+c371-c377, U+c37a-c37b, U+c37e-c383, U+c385-c387, U+c389-c3cf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-157.woff2') format('woff2'); unicode-range: U+c26a-c26b, U+c26d-c26f, U+c271-c273, U+c275-c27b, U+c27e-c287, U+c289-c28f, U+c291-c297, U+c299-c29a, U+c29c-c2a3, U+c2a5-c2a7, U+c2a9-c2ab, U+c2ad-c2b3, U+c2b6, U+c2b8, U+c2ba-c2bb, U+c2bd-c2db, U+c2de-c2df, U+c2e1-c2e2, U+c2e5-c2ea, U+c2ee, U+c2f0, U+c2f2-c2f5, U+c2f7, U+c2fa-c2fb, U+c2fd-c2ff, U+c301-c307, U+c309-c30c, U+c30e-c312, U+c315-c323, U+c325-c328, U+c32a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-158.woff2') format('woff2'); unicode-range: U+c1bc-c1c3, U+c1c5-c1df, U+c1e1-c1fb, U+c1fd-c203, U+c205-c20c, U+c20e, U+c210-c217, U+c21a-c21b, U+c21d-c21e, U+c221-c227, U+c229-c22a, U+c22c, U+c22e, U+c230, U+c233-c24f, U+c251-c257, U+c259-c269; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-159.woff2') format('woff2'); unicode-range: U+c101-c11b, U+c11f, U+c121-c123, U+c125-c12b, U+c12e, U+c132-c137, U+c13a-c13b, U+c13d-c13f, U+c141-c147, U+c14a, U+c14c-c153, U+c155-c157, U+c159-c15b, U+c15d-c166, U+c169-c16f, U+c171-c177, U+c179-c18b, U+c18e-c18f, U+c191-c193, U+c195-c19b, U+c19d-c19e, U+c1a0, U+c1a2-c1a4, U+c1a6-c1bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-160.woff2') format('woff2'); unicode-range: U+c049-c057, U+c059-c05b, U+c05d-c05f, U+c061-c067, U+c069-c08f, U+c091-c0ab, U+c0ae-c0af, U+c0b1-c0b3, U+c0b5, U+c0b7-c0bb, U+c0be, U+c0c2-c0c7, U+c0ca-c0cb, U+c0cd-c0cf, U+c0d1-c0d7, U+c0d9-c0da, U+c0dc, U+c0de-c0e3, U+c0e5-c0eb, U+c0ed-c0f3, U+c0f6, U+c0f8, U+c0fa-c0ff; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-161.woff2') format('woff2'); unicode-range: U+bfa7-bfaf, U+bfb1-bfc4, U+bfc6-bfcb, U+bfce-bfcf, U+bfd1-bfd3, U+bfd5-bfdb, U+bfdd-c048; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-162.woff2') format('woff2'); unicode-range: U+bf07, U+bf09-bf3f, U+bf41-bf4f, U+bf52-bf54, U+bf56-bfa6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-163.woff2') format('woff2'); unicode-range: U+be56, U+be58, U+be5c-be5f, U+be62-be63, U+be65-be67, U+be69-be74, U+be76-be7b, U+be7e-be7f, U+be81-be8e, U+be90, U+be92-bea7, U+bea9-becf, U+bed2-bed3, U+bed5-bed6, U+bed9-bee3, U+bee6-bf06; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-164.woff2') format('woff2'); unicode-range: U+bdb0-bdd3, U+bdd5-bdef, U+bdf1-be0b, U+be0d-be0f, U+be11-be13, U+be15-be43, U+be46-be47, U+be49-be4b, U+be4d-be53; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-165.woff2') format('woff2'); unicode-range: U+bd03, U+bd06, U+bd08, U+bd0a-bd0f, U+bd11-bd22, U+bd25-bd47, U+bd49-bd58, U+bd5a-bd7f, U+bd82-bd83, U+bd85-bd87, U+bd8a-bd8f, U+bd91-bd92, U+bd94, U+bd96-bd98, U+bd9a-bdaf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-166.woff2') format('woff2'); unicode-range: U+bc4e-bc83, U+bc86-bc87, U+bc89-bc8b, U+bc8d-bc93, U+bc96, U+bc98, U+bc9b-bc9f, U+bca2-bca3, U+bca5-bca7, U+bca9-bcb2, U+bcb4-bcbb, U+bcbe-bcbf, U+bcc1-bcc3, U+bcc5-bccc, U+bcce-bcd0, U+bcd2-bcd4, U+bcd6-bcf3, U+bcf7, U+bcf9-bcfb, U+bcfd-bd02; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-167.woff2') format('woff2'); unicode-range: U+bb90-bba3, U+bba5-bbab, U+bbad-bbbf, U+bbc1-bbf7, U+bbfa-bbfb, U+bbfd-bbfe, U+bc01-bc07, U+bc09-bc0a, U+bc0e, U+bc10, U+bc12-bc13, U+bc17, U+bc19-bc1a, U+bc1e, U+bc20-bc23, U+bc26, U+bc28, U+bc2a-bc2c, U+bc2e-bc2f, U+bc32-bc33, U+bc35-bc37, U+bc39-bc3f, U+bc41-bc42, U+bc44, U+bc46-bc48, U+bc4a-bc4d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-168.woff2') format('woff2'); unicode-range: U+bae6-bafb, U+bafd-bb17, U+bb19-bb33, U+bb37, U+bb39-bb3a, U+bb3d-bb43, U+bb45-bb46, U+bb48, U+bb4a-bb4f, U+bb51-bb53, U+bb55-bb57, U+bb59-bb62, U+bb64-bb8f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-169.woff2') format('woff2'); unicode-range: U+ba30-ba37, U+ba3a-ba3b, U+ba3d-ba3f, U+ba41-ba47, U+ba49-ba4a, U+ba4c, U+ba4e-ba53, U+ba56-ba57, U+ba59-ba5b, U+ba5d-ba63, U+ba65-ba66, U+ba68-ba6f, U+ba71-ba73, U+ba75-ba77, U+ba79-ba84, U+ba86, U+ba88-baa7, U+baaa, U+baad-baaf, U+bab1-bab7, U+baba, U+babc, U+babe-bae5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-170.woff2') format('woff2'); unicode-range: U+b96e-b973, U+b976-b977, U+b979-b97b, U+b97d-b983, U+b986, U+b988, U+b98a-b98d, U+b98f-b9ab, U+b9ae-b9af, U+b9b1-b9b3, U+b9b5-b9bb, U+b9be, U+b9c0, U+b9c2-b9c7, U+b9ca-b9cb, U+b9cd, U+b9d2-b9d7, U+b9da, U+b9dc, U+b9df-b9e0, U+b9e2, U+b9e6-b9e7, U+b9e9-b9f3, U+b9f6, U+b9f8, U+b9fb-ba2f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-171.woff2') format('woff2'); unicode-range: U+b8bf-b8cb, U+b8cd-b8e0, U+b8e2-b8e7, U+b8ea-b8eb, U+b8ed-b8ef, U+b8f1-b8f7, U+b8fa, U+b8fc, U+b8fe-b903, U+b905-b917, U+b919-b91f, U+b921-b93b, U+b93d-b957, U+b95a-b95b, U+b95d-b95f, U+b961-b967, U+b969-b96c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-172.woff2') format('woff2'); unicode-range: U+b80d-b80f, U+b811-b817, U+b81a, U+b81c-b823, U+b826-b827, U+b829-b82b, U+b82d-b833, U+b836, U+b83a-b83f, U+b841-b85b, U+b85e-b85f, U+b861-b863, U+b865-b86b, U+b86e, U+b870, U+b872-b8af, U+b8b1-b8be; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-173.woff2') format('woff2'); unicode-range: U+b74d-b75f, U+b761-b763, U+b765-b774, U+b776-b77b, U+b77e-b77f, U+b781-b783, U+b785-b78b, U+b78e, U+b792-b796, U+b79a-b79b, U+b79d-b7a7, U+b7aa, U+b7ae-b7b3, U+b7b6-b7c8, U+b7ca-b7eb, U+b7ee-b7ef, U+b7f1-b7f3, U+b7f5-b7fb, U+b7fe, U+b802-b806, U+b80a-b80b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-174.woff2') format('woff2'); unicode-range: U+b6a7-b6aa, U+b6ac-b6b0, U+b6b2-b6ef, U+b6f1-b727, U+b72a-b72b, U+b72d-b72e, U+b731-b737, U+b739-b73a, U+b73c-b743, U+b745-b74c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-175.woff2') format('woff2'); unicode-range: U+b605-b60f, U+b612-b617, U+b619-b624, U+b626-b69b, U+b69e-b6a3, U+b6a5-b6a6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-176.woff2') format('woff2'); unicode-range: U+b55f, U+b562-b583, U+b585-b59f, U+b5a2-b5a3, U+b5a5-b5a7, U+b5a9-b5b2, U+b5b5-b5ba, U+b5bd-b604; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-177.woff2') format('woff2'); unicode-range: U+b4a5-b4b6, U+b4b8-b4bf, U+b4c1-b4c7, U+b4c9-b4db, U+b4de-b4df, U+b4e1-b4e2, U+b4e5-b4eb, U+b4ee, U+b4f0, U+b4f2-b513, U+b516-b517, U+b519-b51a, U+b51d-b523, U+b526, U+b528, U+b52b-b52f, U+b532-b533, U+b535-b537, U+b539-b53f, U+b541-b544, U+b546-b54b, U+b54d-b54f, U+b551-b55b, U+b55d-b55e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-178.woff2') format('woff2'); unicode-range: U+b3f8-b3fb, U+b3fd-b40f, U+b411-b417, U+b419-b41b, U+b41d-b41f, U+b421-b427, U+b42a-b42b, U+b42d-b44f, U+b452-b453, U+b455-b457, U+b459-b45f, U+b462-b464, U+b466-b46b, U+b46d-b47f, U+b481-b4a3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-179.woff2') format('woff2'); unicode-range: U+b342-b353, U+b356-b357, U+b359-b35b, U+b35d-b35e, U+b360-b363, U+b366, U+b368, U+b36a-b36d, U+b36f, U+b372-b373, U+b375-b377, U+b379-b37f, U+b381-b382, U+b384, U+b386-b38b, U+b38d-b3c3, U+b3c6-b3c7, U+b3c9-b3ca, U+b3cd-b3d3, U+b3d6, U+b3d8, U+b3da-b3f7; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-180.woff2') format('woff2'); unicode-range: U+b27c-b283, U+b285-b28f, U+b292-b293, U+b295-b297, U+b29a-b29f, U+b2a1-b2a4, U+b2a7-b2a9, U+b2ab, U+b2ad-b2c7, U+b2ca-b2cb, U+b2cd-b2cf, U+b2d1-b2d7, U+b2da, U+b2dc, U+b2de-b2e3, U+b2e7, U+b2e9-b2ea, U+b2ef-b2f3, U+b2f6, U+b2f8, U+b2fa-b2fb, U+b2fd-b2fe, U+b302-b303, U+b305-b307, U+b309-b30f, U+b312, U+b316-b31b, U+b31d-b341; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-181.woff2') format('woff2'); unicode-range: U+b1d6-b1e7, U+b1e9-b1fc, U+b1fe-b203, U+b206-b207, U+b209-b20b, U+b20d-b213, U+b216-b21f, U+b221-b257, U+b259-b273, U+b275-b27b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-182.woff2') format('woff2'); unicode-range: U+b120-b122, U+b126-b127, U+b129-b12b, U+b12d-b133, U+b136, U+b138, U+b13a-b13f, U+b142-b143, U+b145-b14f, U+b151-b153, U+b156-b157, U+b159-b177, U+b17a-b17b, U+b17d-b17f, U+b181-b187, U+b189-b18c, U+b18e-b191, U+b195-b1a7, U+b1a9-b1cb, U+b1cd-b1d5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-183.woff2') format('woff2'); unicode-range: U+b05f-b07b, U+b07e-b07f, U+b081-b083, U+b085-b08b, U+b08d-b097, U+b09b, U+b09d-b09f, U+b0a2-b0a7, U+b0aa, U+b0b0, U+b0b2, U+b0b6-b0b7, U+b0b9-b0bb, U+b0bd-b0c3, U+b0c6-b0c7, U+b0ca-b0cf, U+b0d1-b0df, U+b0e1-b0e4, U+b0e6-b107, U+b10a-b10b, U+b10d-b10f, U+b111-b112, U+b114-b117, U+b119-b11a, U+b11c-b11f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-184.woff2') format('woff2'); unicode-range: U+afac-afb7, U+afba-afbb, U+afbd-afbf, U+afc1-afc6, U+afca-afcc, U+afce-afd3, U+afd5-afe7, U+afe9-afef, U+aff1-b00b, U+b00d-b00f, U+b011-b013, U+b015-b01b, U+b01d-b027, U+b029-b043, U+b045-b047, U+b049, U+b04b, U+b04d-b052, U+b055-b056, U+b058-b05c, U+b05e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-185.woff2') format('woff2'); unicode-range: U+af03-af07, U+af09-af2b, U+af2e-af33, U+af35-af3b, U+af3e-af40, U+af44-af47, U+af4a-af5c, U+af5e-af63, U+af65-af7f, U+af81-afab; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-186.woff2') format('woff2'); unicode-range: U+ae56-ae5b, U+ae5e-ae60, U+ae62-ae64, U+ae66-ae67, U+ae69-ae6b, U+ae6d-ae83, U+ae85-aebb, U+aebf, U+aec1-aec3, U+aec5-aecb, U+aece, U+aed0, U+aed2-aed7, U+aed9-aef3, U+aef5-af02; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-187.woff2') format('woff2'); unicode-range: U+ad9c-ada3, U+ada5-adbf, U+adc1-adc3, U+adc5-adc7, U+adc9-add2, U+add4-addb, U+addd-addf, U+ade1-ade3, U+ade5-adf7, U+adfa-adfb, U+adfd-adff, U+ae02-ae07, U+ae0a, U+ae0c, U+ae0e-ae13, U+ae15-ae2f, U+ae31-ae33, U+ae35-ae37, U+ae39-ae3f, U+ae42, U+ae44, U+ae46-ae49, U+ae4b, U+ae4f, U+ae51-ae53, U+ae55; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-188.woff2') format('woff2'); unicode-range: U+ace2-ace3, U+ace5-ace6, U+ace9-acef, U+acf2, U+acf4, U+acf7-acfb, U+acfe-acff, U+ad01-ad03, U+ad05-ad0b, U+ad0d-ad10, U+ad12-ad1b, U+ad1d-ad33, U+ad35-ad48, U+ad4a-ad4f, U+ad51-ad6b, U+ad6e-ad6f, U+ad71-ad72, U+ad77-ad7c, U+ad7e, U+ad80, U+ad82-ad87, U+ad89-ad8b, U+ad8d-ad8f, U+ad91-ad9b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-189.woff2') format('woff2'); unicode-range: U+ac25-ac2c, U+ac2e, U+ac30, U+ac32-ac37, U+ac39-ac3f, U+ac41-ac4c, U+ac4e-ac6f, U+ac72-ac73, U+ac75-ac76, U+ac79-ac7f, U+ac82, U+ac84-ac88, U+ac8a-ac8b, U+ac8d-ac8f, U+ac91-ac93, U+ac95-ac9b, U+ac9d-ac9e, U+aca1-aca7, U+acab, U+acad-acaf, U+acb1-acb7, U+acba-acbb, U+acbe-acc0, U+acc2-acc3, U+acc5-acdf; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-190.woff2') format('woff2'); unicode-range: U+99df, U+99ed, U+99f1, U+99ff, U+9a01, U+9a08, U+9a0e-9a0f, U+9a19, U+9a2b, U+9a30, U+9a36-9a37, U+9a40, U+9a43, U+9a45, U+9a4d, U+9a55, U+9a57, U+9a5a-9a5b, U+9a5f, U+9a62, U+9a65, U+9a69-9a6a, U+9aa8, U+9ab8, U+9ad3, U+9ae5, U+9aee, U+9b1a, U+9b27, U+9b2a, U+9b31, U+9b3c, U+9b41-9b45, U+9b4f, U+9b54, U+9b5a, U+9b6f, U+9b8e, U+9b91, U+9b9f, U+9bab, U+9bae, U+9bc9, U+9bd6, U+9be4, U+9be8, U+9c0d, U+9c10, U+9c12, U+9c15, U+9c25, U+9c32, U+9c3b, U+9c47, U+9c49, U+9c57, U+9ce5, U+9ce7, U+9ce9, U+9cf3-9cf4, U+9cf6, U+9d09, U+9d1b, U+9d26, U+9d28, U+9d3b, U+9d51, U+9d5d, U+9d60-9d61, U+9d6c, U+9d72, U+9da9, U+9daf, U+9db4, U+9dc4, U+9dd7, U+9df2, U+9df8-9dfa, U+9e1a, U+9e1e, U+9e75, U+9e79, U+9e7d, U+9e7f, U+9e92-9e93, U+9e97, U+9e9d, U+9e9f, U+9ea5, U+9eb4-9eb5, U+9ebb, U+9ebe, U+9ec3, U+9ecd-9ece, U+9ed4, U+9ed8, U+9edb-9edc, U+9ede, U+9ee8, U+9ef4, U+9f07-9f08, U+9f0e, U+9f13, U+9f20, U+9f3b, U+9f4a-9f4b, U+9f4e, U+9f52, U+9f5f, U+9f61, U+9f67, U+9f6a, U+9f6c, U+9f77, U+9f8d, U+9f90, U+9f95, U+9f9c, U+ac02-ac03, U+ac05-ac06, U+ac09-ac0f, U+ac17-ac18, U+ac1b, U+ac1e-ac1f, U+ac21-ac23; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-191.woff2') format('woff2'); unicode-range: U+96a7-96a8, U+96aa, U+96b1, U+96b7, U+96bb, U+96c0-96c1, U+96c4-96c5, U+96c7, U+96c9, U+96cb-96ce, U+96d5-96d6, U+96d9, U+96db-96dc, U+96e2-96e3, U+96e8-96ea, U+96ef-96f0, U+96f2, U+96f6-96f7, U+96f9, U+96fb, U+9700, U+9706-9707, U+9711, U+9713, U+9716, U+9719, U+971c, U+971e, U+9727, U+9730, U+9732, U+9739, U+973d, U+9742, U+9744, U+9748, U+9756, U+975c, U+9761, U+9769, U+976d, U+9774, U+9777, U+977a, U+978b, U+978d, U+978f, U+97a0, U+97a8, U+97ab, U+97ad, U+97c6, U+97cb, U+97dc, U+97f6, U+97fb, U+97ff-9803, U+9805-9806, U+9808, U+980a, U+980c, U+9810-9813, U+9817-9818, U+982d, U+9830, U+9838-9839, U+983b, U+9846, U+984c-984e, U+9854, U+9858, U+985a, U+985e, U+9865, U+9867, U+986b, U+986f, U+98af, U+98b1, U+98c4, U+98c7, U+98db-98dc, U+98e1-98e2, U+98ed-98ef, U+98f4, U+98fc-98fe, U+9903, U+9909-990a, U+990c, U+9910, U+9913, U+9918, U+991e, U+9920, U+9928, U+9945, U+9949, U+994b-994d, U+9951-9952, U+9954, U+9957, U+9996, U+999d, U+99a5, U+99a8, U+99ac-99ae, U+99b1, U+99b3-99b4, U+99b9, U+99c1, U+99d0-99d2, U+99d5, U+99d9, U+99dd; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-192.woff2') format('woff2'); unicode-range: U+920d, U+9210-9212, U+9217, U+921e, U+9234, U+923a, U+923f-9240, U+9245, U+9249, U+9257, U+925b, U+925e, U+9262, U+9264-9266, U+9283, U+9285, U+9291, U+9293, U+9296, U+9298, U+929c, U+92b3, U+92b6-92b7, U+92b9, U+92cc, U+92cf, U+92d2, U+92e4, U+92ea, U+92f8, U+92fc, U+9304, U+9310, U+9318, U+931a, U+931e-9322, U+9324, U+9326, U+9328, U+932b, U+932e-932f, U+9348, U+934a-934b, U+934d, U+9354, U+935b, U+936e, U+9375, U+937c, U+937e, U+938c, U+9394, U+9396, U+939a, U+93a3, U+93a7, U+93ac-93ad, U+93b0, U+93c3, U+93d1, U+93de, U+93e1, U+93e4, U+93f6, U+9404, U+9418, U+9425, U+942b, U+9435, U+9438, U+9444, U+9451-9452, U+945b, U+947d, U+947f, U+9583, U+9589, U+958f, U+9591-9592, U+9594, U+9598, U+95a3-95a5, U+95a8, U+95ad, U+95b1, U+95bb-95bc, U+95c7, U+95ca, U+95d4-95d6, U+95dc, U+95e1-95e2, U+961c, U+9621, U+962a, U+962e, U+9632, U+963b, U+963f-9640, U+9642, U+9644, U+964b-964d, U+9650, U+965b-965f, U+9662-9664, U+966a, U+9670, U+9673, U+9675-9678, U+967d, U+9685-9686, U+968a-968b, U+968d-968e, U+9694-9695, U+9698-9699, U+969b-969c, U+96a3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-193.woff2') format('woff2'); unicode-range: U+8fa8, U+8fad, U+8faf-8fb2, U+8fc2, U+8fc5, U+8fce, U+8fd4, U+8fe6, U+8fea-8feb, U+8fed, U+8ff0, U+8ff2, U+8ff7, U+8ff9, U+8ffd, U+9000-9003, U+9005-9006, U+9008, U+900b, U+900d, U+900f-9011, U+9014-9015, U+9017, U+9019, U+901d-9023, U+902e, U+9031-9032, U+9035, U+9038, U+903c, U+903e, U+9041-9042, U+9047, U+904a-904b, U+904d-904e, U+9050-9051, U+9054-9055, U+9059, U+905c-905e, U+9060-9061, U+9063, U+9069, U+906d-906f, U+9072, U+9075, U+9077-9078, U+907a, U+907c-907d, U+907f-9084, U+9087-9088, U+908a, U+908f, U+9091, U+9095, U+9099, U+90a2-90a3, U+90a6, U+90a8, U+90aa, U+90af-90b1, U+90b5, U+90b8, U+90c1, U+90ca, U+90de, U+90e1, U+90ed, U+90f5, U+9102, U+9112, U+9115, U+9119, U+9127, U+912d, U+9132, U+9149-914e, U+9152, U+9162, U+9169-916a, U+916c, U+9175, U+9177-9178, U+9187, U+9189, U+918b, U+918d, U+9192, U+919c, U+91ab-91ac, U+91ae-91af, U+91b1, U+91b4-91b5, U+91c0, U+91c7, U+91c9, U+91cb, U+91cf-91d0, U+91d7-91d8, U+91dc-91dd, U+91e3, U+91e7, U+91ea, U+91f5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-194.woff2') format('woff2'); unicode-range: U+8c6a-8c6b, U+8c79-8c7a, U+8c82, U+8c8a, U+8c8c, U+8c9d-8c9e, U+8ca0-8ca2, U+8ca7-8cac, U+8caf-8cb0, U+8cb3-8cb4, U+8cb6-8cb8, U+8cbb-8cbd, U+8cbf-8cc4, U+8cc7-8cc8, U+8cca, U+8cd1, U+8cd3, U+8cda, U+8cdc, U+8cde, U+8ce0, U+8ce2-8ce4, U+8ce6, U+8cea, U+8ced, U+8cf4, U+8cfb-8cfd, U+8d04-8d05, U+8d07-8d08, U+8d0a, U+8d0d, U+8d13, U+8d16, U+8d64, U+8d66, U+8d6b, U+8d70, U+8d73-8d74, U+8d77, U+8d85, U+8d8a, U+8d99, U+8da3, U+8da8, U+8db3, U+8dba, U+8dbe, U+8dc6, U+8dcb-8dcc, U+8dcf, U+8ddb, U+8ddd, U+8de1, U+8de3, U+8de8, U+8df3, U+8e0a, U+8e0f-8e10, U+8e1e, U+8e2a, U+8e30, U+8e35, U+8e42, U+8e44, U+8e47-8e4a, U+8e59, U+8e5f-8e60, U+8e74, U+8e76, U+8e81, U+8e87, U+8e8a, U+8e8d, U+8eaa-8eac, U+8ec0, U+8ecb-8ecc, U+8ed2, U+8edf, U+8eeb, U+8ef8, U+8efb, U+8efe, U+8f03, U+8f05, U+8f09, U+8f12-8f15, U+8f1b-8f1f, U+8f26-8f27, U+8f29-8f2a, U+8f2f, U+8f33, U+8f38-8f39, U+8f3b, U+8f3e-8f3f, U+8f44-8f45, U+8f49, U+8f4d-8f4e, U+8f5d, U+8f5f, U+8f62, U+8f9b-8f9c, U+8fa3, U+8fa6; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-195.woff2') format('woff2'); unicode-range: U+8941, U+8944, U+895f, U+8964, U+896a, U+8972, U+8981, U+8983, U+8986-8987, U+898f, U+8993, U+8996, U+89a1, U+89a9-89aa, U+89b2, U+89ba, U+89bd, U+89c0, U+89d2, U+89e3, U+89f4, U+89f8, U+8a02-8a03, U+8a08, U+8a0a, U+8a0c, U+8a0e, U+8a13, U+8a16-8a17, U+8a1b, U+8a1d, U+8a1f, U+8a23, U+8a25, U+8a2a, U+8a2d, U+8a31, U+8a34, U+8a36, U+8a3a-8a3b, U+8a50, U+8a54-8a55, U+8a5b, U+8a5e, U+8a60, U+8a62-8a63, U+8a66, U+8a6d-8a6e, U+8a70, U+8a72-8a73, U+8a75, U+8a79, U+8a85, U+8a87, U+8a8c-8a8d, U+8a93, U+8a95, U+8a98, U+8aa0-8aa1, U+8aa3-8aa6, U+8aa8, U+8aaa, U+8ab0, U+8ab2, U+8ab9, U+8abc, U+8abe-8abf, U+8ac2, U+8ac4, U+8ac7, U+8acb, U+8acd, U+8acf, U+8ad2, U+8ad6, U+8adb-8adc, U+8ae1, U+8ae6-8ae7, U+8aea-8aeb, U+8aed-8aee, U+8af1, U+8af6-8af8, U+8afa, U+8afe, U+8b00-8b02, U+8b04, U+8b0e, U+8b10, U+8b14, U+8b16-8b17, U+8b19-8b1b, U+8b1d, U+8b20, U+8b28, U+8b2b-8b2c, U+8b33, U+8b39, U+8b41, U+8b49, U+8b4e-8b4f, U+8b58, U+8b5a, U+8b5c, U+8b66, U+8b6c, U+8b6f-8b70, U+8b74, U+8b77, U+8b7d, U+8b80, U+8b8a, U+8b90, U+8b92-8b93, U+8b96, U+8b9a, U+8c37, U+8c3f, U+8c41, U+8c46, U+8c48, U+8c4a, U+8c4c, U+8c55, U+8c5a, U+8c61; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-196.woff2') format('woff2'); unicode-range: U+858f, U+8591, U+8594, U+859b, U+85a6, U+85a8-85aa, U+85af-85b0, U+85ba, U+85c1, U+85c9, U+85cd-85cf, U+85d5, U+85dc-85dd, U+85e4-85e5, U+85e9-85ea, U+85f7, U+85fa-85fb, U+85ff, U+8602, U+8606-8607, U+860a, U+8616-8617, U+861a, U+862d, U+863f, U+864e, U+8650, U+8654-8655, U+865b-865c, U+865e-865f, U+8667, U+8679, U+868a, U+868c, U+8693, U+86a3-86a4, U+86a9, U+86c7, U+86cb, U+86d4, U+86d9, U+86db, U+86df, U+86e4, U+86ed, U+86fe, U+8700, U+8702-8703, U+8708, U+8718, U+871a, U+871c, U+874e, U+8755, U+8757, U+875f, U+8766, U+8768, U+8774, U+8776, U+8778, U+8782, U+878d, U+879f, U+87a2, U+87b3, U+87ba, U+87c4, U+87e0, U+87ec, U+87ef, U+87f2, U+87f9, U+87fb, U+87fe, U+8805, U+881f, U+8822-8823, U+8831, U+8836, U+883b, U+8840, U+8846, U+884d, U+8852-8853, U+8857, U+8859, U+885b, U+885d, U+8861-8863, U+8868, U+886b, U+8870, U+8872, U+8877, U+887e-887f, U+8881-8882, U+8888, U+888b, U+888d, U+8892, U+8896-8897, U+889e, U+88ab, U+88b4, U+88c1-88c2, U+88cf, U+88d4-88d5, U+88d9, U+88dc-88dd, U+88df, U+88e1, U+88e8, U+88f3-88f5, U+88f8, U+88fd, U+8907, U+8910, U+8912-8913, U+8918-8919, U+8925, U+892a, U+8936, U+8938, U+893b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-197.woff2') format('woff2'); unicode-range: U+82a6, U+82a9, U+82ac-82af, U+82b3, U+82b7-82b9, U+82bb-82bd, U+82bf, U+82d1-82d2, U+82d4-82d5, U+82d7, U+82db, U+82de-82df, U+82e1, U+82e5-82e7, U+82fd-82fe, U+8301-8305, U+8309, U+8317, U+8328, U+832b, U+832f, U+8331, U+8334-8336, U+8338-8339, U+8340, U+8347, U+8349-834a, U+834f, U+8351-8352, U+8373, U+8377, U+837b, U+8389-838a, U+838e, U+8396, U+8398, U+839e, U+83a2, U+83a9-83ab, U+83bd, U+83c1, U+83c5, U+83c9-83ca, U+83cc, U+83d3, U+83d6, U+83dc, U+83e9, U+83eb, U+83ef-83f2, U+83f4, U+83f9, U+83fd, U+8403-8404, U+840a, U+840c-840e, U+8429, U+842c, U+8431, U+8438, U+843d, U+8449, U+8457, U+845b, U+8461, U+8463, U+8466, U+846b-846c, U+846f, U+8475, U+847a, U+8490, U+8494, U+8499, U+849c, U+84a1, U+84b2, U+84b8, U+84bb-84bc, U+84bf-84c0, U+84c2, U+84c4, U+84c6, U+84c9, U+84cb, U+84cd, U+84d1, U+84da, U+84ec, U+84ee, U+84f4, U+84fc, U+8511, U+8513-8514, U+8517-8518, U+851a, U+851e, U+8521, U+8523, U+8525, U+852c-852d, U+852f, U+853d, U+853f, U+8541, U+8543, U+8549, U+854e, U+8553, U+8559, U+8563, U+8568-856a, U+856d, U+8584, U+8587; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-198.woff2') format('woff2'); unicode-range: U+8033, U+8036, U+803d, U+803f, U+8043, U+8046, U+804a, U+8056, U+8058, U+805a, U+805e, U+806f-8070, U+8072-8073, U+8077, U+807d-807f, U+8084-8087, U+8089, U+808b-808c, U+8096, U+809b, U+809d, U+80a1-80a2, U+80a5, U+80a9-80aa, U+80af, U+80b1-80b2, U+80b4, U+80ba, U+80c3-80c4, U+80cc, U+80ce, U+80da-80db, U+80de, U+80e1, U+80e4-80e5, U+80f1, U+80f4, U+80f8, U+80fd, U+8102, U+8105-8108, U+810a, U+8118, U+811a-811b, U+8123, U+8129, U+812b, U+812f, U+8139, U+813e, U+814b, U+814e, U+8150-8151, U+8154-8155, U+8165-8166, U+816b, U+8170-8171, U+8178-817a, U+817f-8180, U+8188, U+818a, U+818f, U+819a, U+819c-819d, U+81a0, U+81a3, U+81a8, U+81b3, U+81b5, U+81ba, U+81bd-81c0, U+81c2, U+81c6, U+81cd, U+81d8, U+81df, U+81e3, U+81e5, U+81e7-81e8, U+81ed, U+81f3-81f4, U+81fa-81fc, U+81fe, U+8205, U+8208, U+820a, U+820c-820d, U+8212, U+821b-821c, U+821e-821f, U+8221, U+822a-822c, U+8235-8237, U+8239, U+8240, U+8245, U+8247, U+8259, U+8264, U+8266, U+826e-826f, U+8271, U+8276, U+8278, U+827e, U+828b, U+828d-828e, U+8292, U+8299-829a, U+829d, U+829f, U+82a5; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-199.woff2') format('woff2'); unicode-range: U+7d2f-7d30, U+7d33, U+7d35, U+7d39-7d3a, U+7d42-7d46, U+7d50, U+7d5e, U+7d61-7d62, U+7d66, U+7d68, U+7d6a, U+7d6e, U+7d71-7d73, U+7d76, U+7d79, U+7d7f, U+7d8e-7d8f, U+7d93, U+7d9c, U+7da0, U+7da2, U+7dac-7dad, U+7db1-7db2, U+7db4-7db5, U+7db8, U+7dba-7dbb, U+7dbd-7dbf, U+7dc7, U+7dca-7dcb, U+7dd6, U+7dd8, U+7dda, U+7ddd-7dde, U+7de0-7de1, U+7de3, U+7de8-7de9, U+7dec, U+7def, U+7df4, U+7dfb, U+7e09-7e0a, U+7e15, U+7e1b, U+7e1d-7e1f, U+7e21, U+7e23, U+7e2b, U+7e2e-7e2f, U+7e31, U+7e37, U+7e3d-7e3e, U+7e43, U+7e46-7e47, U+7e52, U+7e54-7e55, U+7e5e, U+7e61, U+7e69-7e6b, U+7e6d, U+7e70, U+7e79, U+7e7c, U+7e82, U+7e8c, U+7e8f, U+7e93, U+7e96, U+7e98, U+7e9b-7e9c, U+7f36, U+7f38, U+7f3a, U+7f4c, U+7f50, U+7f54-7f55, U+7f6a-7f6b, U+7f6e, U+7f70, U+7f72, U+7f75, U+7f77, U+7f79, U+7f85, U+7f88, U+7f8a, U+7f8c, U+7f94, U+7f9a, U+7f9e, U+7fa4, U+7fa8-7fa9, U+7fb2, U+7fb8-7fb9, U+7fbd, U+7fc1, U+7fc5, U+7fca, U+7fcc, U+7fce, U+7fd2, U+7fd4-7fd5, U+7fdf-7fe1, U+7fe9, U+7feb, U+7ff0, U+7ff9, U+7ffc, U+8000-8001, U+8003, U+8006, U+8009, U+800c, U+8010, U+8015, U+8017-8018, U+802d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-200.woff2') format('woff2'); unicode-range: U+7a49, U+7a4d-7a4e, U+7a57, U+7a61-7a62, U+7a69, U+7a6b, U+7a70, U+7a74, U+7a76, U+7a79, U+7a7d, U+7a7f, U+7a81, U+7a84, U+7a88, U+7a92-7a93, U+7a95, U+7a98, U+7a9f, U+7aa9-7aaa, U+7aae-7aaf, U+7aba, U+7ac4-7ac5, U+7ac7, U+7aca, U+7ad7, U+7ad9, U+7add, U+7adf-7ae0, U+7ae3, U+7ae5, U+7aea, U+7aed, U+7aef, U+7af6, U+7af9-7afa, U+7aff, U+7b0f, U+7b11, U+7b19, U+7b1b, U+7b1e, U+7b20, U+7b26, U+7b2d, U+7b39, U+7b46, U+7b49, U+7b4b-7b4d, U+7b4f-7b52, U+7b54, U+7b56, U+7b60, U+7b6c, U+7b6e, U+7b75, U+7b7d, U+7b87, U+7b8b, U+7b8f, U+7b94-7b95, U+7b97, U+7b9a, U+7b9d, U+7ba1, U+7bad, U+7bb1, U+7bb4, U+7bb8, U+7bc0-7bc1, U+7bc4, U+7bc6-7bc7, U+7bc9, U+7bd2, U+7be0, U+7be4, U+7be9, U+7c07, U+7c12, U+7c1e, U+7c21, U+7c27, U+7c2a-7c2b, U+7c3d-7c3f, U+7c43, U+7c4c-7c4d, U+7c60, U+7c64, U+7c6c, U+7c73, U+7c83, U+7c89, U+7c92, U+7c95, U+7c97-7c98, U+7c9f, U+7ca5, U+7ca7, U+7cae, U+7cb1-7cb3, U+7cb9, U+7cbe, U+7cca, U+7cd6, U+7cde-7ce0, U+7ce7, U+7cfb, U+7cfe, U+7d00, U+7d02, U+7d04-7d08, U+7d0a-7d0b, U+7d0d, U+7d10, U+7d14, U+7d17-7d1b, U+7d20-7d21, U+7d2b-7d2c, U+7d2e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-201.woff2') format('woff2'); unicode-range: U+7704, U+7708-7709, U+770b, U+771e, U+7720, U+7729, U+7737-7738, U+773a, U+773c, U+7740, U+774d, U+775b, U+7761, U+7763, U+7766, U+776b, U+7779, U+777e-777f, U+778b, U+7791, U+779e, U+77a5, U+77ac-77ad, U+77b0, U+77b3, U+77bb-77bc, U+77bf, U+77d7, U+77db-77dc, U+77e2-77e3, U+77e9, U+77ed-77ef, U+7802, U+7812, U+7825-7827, U+782c, U+7832, U+7834, U+7845, U+784f, U+785d, U+786b-786c, U+786f, U+787c, U+7881, U+7887, U+788c-788e, U+7891, U+7897, U+78a3, U+78a7, U+78a9, U+78ba-78bc, U+78c1, U+78c5, U+78ca-78cb, U+78ce, U+78d0, U+78e8, U+78ec, U+78ef, U+78f5, U+78fb, U+7901, U+790e, U+7916, U+792a-792c, U+793a, U+7940-7941, U+7947-7949, U+7950, U+7956-7957, U+795a-795d, U+7960, U+7965, U+7968, U+796d, U+797a, U+797f, U+7981, U+798d-798e, U+7991, U+79a6-79a7, U+79aa, U+79ae, U+79b1, U+79b3, U+79b9, U+79bd-79c1, U+79c9-79cb, U+79d2, U+79d5, U+79d8, U+79df, U+79e4, U+79e6-79e7, U+79e9, U+79fb, U+7a00, U+7a05, U+7a08, U+7a0b, U+7a0d, U+7a14, U+7a17, U+7a19-7a1a, U+7a1c, U+7a1f-7a20, U+7a2e, U+7a31, U+7a36-7a37, U+7a3b-7a3d, U+7a3f-7a40, U+7a46; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-202.woff2') format('woff2'); unicode-range: U+7482-7483, U+7487, U+7489, U+748b, U+7498, U+749c, U+749e-749f, U+74a1, U+74a3, U+74a5, U+74a7-74a8, U+74aa, U+74b0, U+74b2, U+74b5, U+74b9, U+74bd, U+74bf, U+74c6, U+74ca, U+74cf, U+74d4, U+74d8, U+74da, U+74dc, U+74e0, U+74e2-74e3, U+74e6, U+74ee, U+74f7, U+7501, U+7504, U+7511, U+7515, U+7518, U+751a-751b, U+7523, U+7525-7526, U+752b-752c, U+7531, U+7533, U+7538, U+753a, U+7547, U+754c, U+754f, U+7551, U+7553-7554, U+7559, U+755b-755d, U+7562, U+7565-7566, U+756a, U+756f-7570, U+7575-7576, U+7578, U+757a, U+757f, U+7586-7587, U+758a-758b, U+758e-758f, U+7591, U+759d, U+75a5, U+75ab, U+75b1-75b3, U+75b5, U+75b8-75b9, U+75bc-75be, U+75c2, U+75c5, U+75c7, U+75cd, U+75d2, U+75d4-75d5, U+75d8-75d9, U+75db, U+75e2, U+75f0, U+75f2, U+75f4, U+75fa, U+75fc, U+7600, U+760d, U+7619, U+761f-7622, U+7624, U+7626, U+763b, U+7642, U+764c, U+764e, U+7652, U+7656, U+7661, U+7664, U+7669, U+766c, U+7670, U+7672, U+7678, U+7686-7687, U+768e, U+7690, U+7693, U+76ae, U+76ba, U+76bf, U+76c2-76c3, U+76c6, U+76c8, U+76ca, U+76d2, U+76d6, U+76db-76dc, U+76de-76df, U+76e1, U+76e3-76e4, U+76e7, U+76f2, U+76fc, U+76fe, U+7701; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-203.woff2') format('woff2'); unicode-range: U+7230, U+7232, U+7235, U+723a-723b, U+723d-723e, U+7240, U+7246-7248, U+724c, U+7252, U+7258-7259, U+725b, U+725d, U+725f, U+7261-7262, U+7267, U+7272, U+727d, U+7280-7281, U+72a2, U+72a7, U+72ac, U+72af, U+72c0, U+72c2, U+72c4, U+72ce, U+72d0, U+72d7, U+72d9, U+72e1, U+72e9, U+72f8-72f9, U+72fc-72fd, U+730a, U+7316, U+731b-731d, U+7325, U+7329-732b, U+7336-7337, U+733e-733f, U+7344-7345, U+7350, U+7352, U+7357, U+7368, U+736a, U+7370, U+7372, U+7375, U+7378, U+737a-737b, U+7384, U+7386-7387, U+7389, U+738e, U+7394, U+7396-7398, U+739f, U+73a7, U+73a9, U+73ad, U+73b2-73b3, U+73b9, U+73c0, U+73c2, U+73c9-73ca, U+73cc-73cd, U+73cf, U+73d6, U+73d9, U+73dd-73de, U+73e0, U+73e3-73e6, U+73e9-73ea, U+73ed, U+73f7, U+73f9, U+73fd-73fe, U+7401, U+7403, U+7405, U+7407, U+7409, U+7413, U+741b, U+7420-7422, U+7425-7426, U+7428, U+742a-742c, U+742e-7430, U+7433-7436, U+7438, U+743a, U+743f-7441, U+7443-7444, U+744b, U+7455, U+7457, U+7459-745c, U+745e-7460, U+7462, U+7464-7465, U+7468-746a, U+746f, U+747e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-204.woff2') format('woff2'); unicode-range: U+6f8d-6f8e, U+6f90, U+6f94, U+6f97, U+6fa3-6fa4, U+6fa7, U+6fae-6faf, U+6fb1, U+6fb3, U+6fb9, U+6fbe, U+6fc0-6fc3, U+6fca, U+6fd5, U+6fda, U+6fdf-6fe1, U+6fe4, U+6fe9, U+6feb-6fec, U+6fef, U+6ff1, U+6ffe, U+7001, U+7005-7006, U+7009, U+700b, U+700f, U+7011, U+7015, U+7018, U+701a-701f, U+7023, U+7027-7028, U+702f, U+7037, U+703e, U+704c, U+7050-7051, U+7058, U+705d, U+7070, U+7078, U+707c-707d, U+7085, U+708a, U+708e, U+7092, U+7098-709a, U+70a1, U+70a4, U+70ab-70ad, U+70af, U+70b3, U+70b7-70b9, U+70c8, U+70cb, U+70cf, U+70d8-70d9, U+70dd, U+70df, U+70f1, U+70f9, U+70fd, U+7104, U+7109, U+710c, U+7119-711a, U+711e, U+7126, U+7130, U+7136, U+7147, U+7149-714a, U+714c, U+714e, U+7150, U+7156, U+7159, U+715c, U+715e, U+7164-7167, U+7169, U+716c, U+716e, U+717d, U+7184, U+7189-718a, U+718f, U+7192, U+7194, U+7199, U+719f, U+71a2, U+71ac, U+71b1, U+71b9-71ba, U+71be, U+71c1, U+71c3, U+71c8-71c9, U+71ce, U+71d0, U+71d2, U+71d4-71d5, U+71df, U+71e5-71e7, U+71ed-71ee, U+71fb-71fc, U+71fe-7200, U+7206, U+7210, U+721b, U+722a, U+722c-722d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-205.woff2') format('woff2'); unicode-range: U+6d5a, U+6d5c, U+6d63, U+6d66, U+6d69-6d6a, U+6d6c, U+6d6e, U+6d74, U+6d78-6d79, U+6d7f, U+6d85, U+6d87-6d89, U+6d8c-6d8e, U+6d91, U+6d93, U+6d95, U+6daf, U+6db2, U+6db5, U+6dc0, U+6dc3-6dc7, U+6dcb, U+6dcf, U+6dd1, U+6dd8-6dda, U+6dde, U+6de1, U+6de8, U+6dea-6deb, U+6dee, U+6df1, U+6df3, U+6df5, U+6df7-6dfb, U+6e17, U+6e19-6e1b, U+6e1f-6e21, U+6e23-6e26, U+6e2b-6e2d, U+6e32, U+6e34, U+6e36, U+6e38, U+6e3a, U+6e3c-6e3e, U+6e43-6e44, U+6e4a, U+6e4d, U+6e56, U+6e58, U+6e5b-6e5c, U+6e5e-6e5f, U+6e67, U+6e6b, U+6e6e-6e6f, U+6e72-6e73, U+6e7a, U+6e90, U+6e96, U+6e9c-6e9d, U+6e9f, U+6ea2, U+6ea5, U+6eaa-6eab, U+6eaf, U+6eb1, U+6eb6, U+6eba, U+6ec2, U+6ec4-6ec5, U+6ec9, U+6ecb-6ecc, U+6ece, U+6ed1, U+6ed3-6ed4, U+6eef, U+6ef4, U+6ef8, U+6efe-6eff, U+6f01-6f02, U+6f06, U+6f0f, U+6f11, U+6f14-6f15, U+6f20, U+6f22-6f23, U+6f2b-6f2c, U+6f31-6f32, U+6f38, U+6f3f, U+6f41, U+6f51, U+6f54, U+6f57-6f58, U+6f5a-6f5b, U+6f5e-6f5f, U+6f62, U+6f64, U+6f6d-6f6e, U+6f70, U+6f7a, U+6f7c-6f7e, U+6f81, U+6f84, U+6f88; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-206.woff2') format('woff2'); unicode-range: U+6ada-6adb, U+6af6, U+6afb, U+6b04, U+6b0a, U+6b0c, U+6b12, U+6b16, U+6b20-6b21, U+6b23, U+6b32, U+6b3a, U+6b3d-6b3e, U+6b46-6b47, U+6b4e, U+6b50, U+6b5f, U+6b61-6b62, U+6b64-6b66, U+6b6a, U+6b72, U+6b77-6b78, U+6b7b, U+6b7f, U+6b83-6b84, U+6b86, U+6b89-6b8a, U+6b96, U+6b98, U+6b9e, U+6bae-6baf, U+6bb2, U+6bb5, U+6bb7, U+6bba, U+6bbc, U+6bbf, U+6bc1, U+6bc5-6bc6, U+6bcb, U+6bcf, U+6bd2-6bd3, U+6bd6-6bd8, U+6bdb, U+6beb-6bec, U+6c08, U+6c0f, U+6c13, U+6c23, U+6c37-6c38, U+6c3e, U+6c40-6c42, U+6c4e, U+6c50, U+6c55, U+6c57, U+6c5a, U+6c5d-6c60, U+6c68, U+6c6a, U+6c6d, U+6c70, U+6c72, U+6c76, U+6c7a, U+6c7d-6c7e, U+6c81-6c83, U+6c85-6c88, U+6c8c, U+6c90, U+6c92-6c96, U+6c99-6c9b, U+6cab, U+6cae, U+6cb3, U+6cb8-6cb9, U+6cbb-6cbf, U+6cc1-6cc2, U+6cc4, U+6cc9-6cca, U+6ccc, U+6cd3, U+6cd7, U+6cdb, U+6ce1-6ce3, U+6ce5, U+6ce8, U+6ceb, U+6cee-6cf0, U+6cf3, U+6d0b-6d0c, U+6d11, U+6d17, U+6d19, U+6d1b, U+6d1e, U+6d25, U+6d27, U+6d29, U+6d32, U+6d35-6d36, U+6d38-6d39, U+6d3b, U+6d3d-6d3e, U+6d41, U+6d59; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-207.woff2') format('woff2'); unicode-range: U+67f0-67f1, U+67f3-67f6, U+67fb, U+67fe, U+6812-6813, U+6816-6817, U+6821-6822, U+682f, U+6838-6839, U+683d, U+6840-6843, U+6848, U+684e, U+6850-6851, U+6853-6854, U+686d, U+6876, U+687f, U+6881, U+6885, U+688f, U+6893-6894, U+6897, U+689d, U+689f, U+68a1-68a2, U+68a7-68a8, U+68ad, U+68af-68b1, U+68b3, U+68b5-68b6, U+68c4-68c5, U+68c9, U+68cb, U+68cd, U+68d2, U+68d5, U+68d7-68d8, U+68da, U+68df-68e0, U+68e7-68e8, U+68ee, U+68f2, U+68f9-68fa, U+6900, U+6905, U+690d-690e, U+6912, U+6927, U+6930, U+693d, U+693f, U+694a, U+6953-6955, U+6957, U+6959-695a, U+695e, U+6960-6963, U+6968, U+696b, U+696d-696f, U+6975, U+6977-6979, U+6995, U+699b-699c, U+69a5, U+69a7, U+69ae, U+69b4, U+69bb, U+69c1, U+69c3, U+69cb-69cd, U+69d0, U+69e8, U+69ea, U+69fb, U+69fd, U+69ff, U+6a02, U+6a0a, U+6a11, U+6a13, U+6a17, U+6a19, U+6a1e-6a1f, U+6a21, U+6a23, U+6a35, U+6a38-6a3a, U+6a3d, U+6a44, U+6a48, U+6a4b, U+6a52-6a53, U+6a58-6a59, U+6a5f, U+6a61, U+6a6b, U+6a80, U+6a84, U+6a89, U+6a8d-6a8e, U+6a97, U+6a9c, U+6aa3, U+6ab3, U+6abb, U+6ac2-6ac3, U+6ad3; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-208.woff2') format('woff2'); unicode-range: U+6607, U+6609-660a, U+660c, U+660f-6611, U+6613-6615, U+661e, U+6620, U+6627-6628, U+662d, U+6630-6631, U+6634, U+6636, U+663a-663b, U+6641, U+6643-6644, U+6649, U+664b, U+664f, U+6659, U+665b, U+665d-665f, U+6664-6669, U+666b, U+666e-666f, U+6673-6674, U+6676-6678, U+6684, U+6687-6689, U+668e, U+6690-6691, U+6696-6698, U+669d, U+66a0, U+66a2, U+66ab, U+66ae, U+66b2-66b4, U+66b9, U+66bb, U+66be, U+66c4, U+66c6-66c7, U+66c9, U+66d6, U+66d9, U+66dc-66dd, U+66e0, U+66e6, U+66f0, U+66f2-66f4, U+66f7, U+66f9-66fa, U+66fc, U+66fe-66ff, U+6703, U+670b, U+670d, U+6714-6715, U+6717, U+671b, U+671d-671f, U+6726-6727, U+672a-672b, U+672d-672e, U+6731, U+6736, U+673a, U+673d, U+6746, U+6749, U+674e-6751, U+6753, U+6756, U+675c, U+675e-675f, U+676d, U+676f-6770, U+6773, U+6775, U+6777, U+677b, U+677e-677f, U+6787, U+6789, U+678b, U+678f-6790, U+6793, U+6795, U+679a, U+679d, U+67af-67b0, U+67b3, U+67b6-67b8, U+67be, U+67c4, U+67cf-67d4, U+67da, U+67dd, U+67e9, U+67ec, U+67ef; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-209.woff2') format('woff2'); unicode-range: U+6392, U+6396, U+6398, U+639b, U+63a0-63a2, U+63a5, U+63a7-63aa, U+63c0, U+63c4, U+63c6, U+63cf, U+63d6, U+63da-63db, U+63e1, U+63ed-63ee, U+63f4, U+63f6-63f7, U+640d, U+640f, U+6414, U+6416-6417, U+641c, U+6422, U+642c-642d, U+643a, U+643e, U+6458, U+6460, U+6469, U+646f, U+6478-647a, U+6488, U+6491-6493, U+649a, U+649e, U+64a4-64a5, U+64ab, U+64ad-64ae, U+64b0, U+64b2, U+64bb, U+64c1, U+64c4-64c5, U+64c7, U+64ca, U+64cd-64ce, U+64d2, U+64d4, U+64d8, U+64da, U+64e1-64e2, U+64e5-64e7, U+64ec, U+64f2, U+64f4, U+64fa, U+64fe, U+6500, U+6504, U+6518, U+651d, U+6523, U+652a-652c, U+652f, U+6536-6539, U+653b, U+653e, U+6548, U+654d-654f, U+6551, U+6556-6557, U+655e, U+6562-6563, U+6566, U+656c-656d, U+6572, U+6574-6575, U+6577-6578, U+657e, U+6582-6583, U+6585, U+658c, U+6590-6591, U+6597, U+6599, U+659b-659c, U+659f, U+65a1, U+65a4-65a5, U+65a7, U+65ab-65ac, U+65af, U+65b7, U+65bc-65bd, U+65c1, U+65c5, U+65cb-65cc, U+65cf, U+65d2, U+65d7, U+65e0, U+65e3, U+65e6, U+65e8-65e9, U+65ec-65ed, U+65f1, U+65f4, U+65fa-65fd, U+65ff, U+6606; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-210.woff2') format('woff2'); unicode-range: U+614c, U+6153, U+6155, U+6158-6159, U+615d, U+615f, U+6162-6164, U+6167-6168, U+616b, U+616e, U+6170, U+6176-6177, U+617d-617e, U+6181-6182, U+618a, U+618e, U+6190-6191, U+6194, U+6198-619a, U+61a4, U+61a7, U+61a9, U+61ab-61ac, U+61ae, U+61b2, U+61b6, U+61ba, U+61be, U+61c3, U+61c7-61cb, U+61e6, U+61f2, U+61f6-61f8, U+61fa, U+61fc, U+61ff-6200, U+6207-6208, U+620a, U+620c-620e, U+6212, U+6216, U+621a, U+621f, U+6221, U+622a, U+622e, U+6230-6231, U+6234, U+6236, U+623e-623f, U+6241, U+6247-6249, U+624d, U+6253, U+6258, U+626e, U+6271, U+6276, U+6279, U+627c, U+627f-6280, U+6284, U+6289-628a, U+6291-6292, U+6295, U+6297-6298, U+629b, U+62ab, U+62b1, U+62b5, U+62b9, U+62bc-62bd, U+62c2, U+62c7-62c9, U+62cc-62cd, U+62cf-62d0, U+62d2-62d4, U+62d6-62d9, U+62db-62dc, U+62ec-62ef, U+62f1, U+62f3, U+62f7, U+62fe-62ff, U+6301, U+6307, U+6309, U+6311, U+632b, U+632f, U+633a-633b, U+633d-633e, U+6349, U+634c, U+634f-6350, U+6355, U+6367-6368, U+636e, U+6372, U+6377, U+637a-637b, U+637f, U+6383, U+6388-6389, U+638c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-211.woff2') format('woff2'); unicode-range: U+5f11, U+5f13-5f15, U+5f17-5f18, U+5f1b, U+5f1f, U+5f26-5f27, U+5f29, U+5f31, U+5f35, U+5f3a, U+5f3c, U+5f48, U+5f4a, U+5f4c, U+5f4e, U+5f56-5f57, U+5f59, U+5f5b, U+5f62, U+5f66-5f67, U+5f69-5f6d, U+5f70-5f71, U+5f77, U+5f79, U+5f7c, U+5f7f-5f81, U+5f85, U+5f87, U+5f8a-5f8b, U+5f90-5f92, U+5f98-5f99, U+5f9e, U+5fa0-5fa1, U+5fa8-5faa, U+5fae, U+5fb5, U+5fb9, U+5fbd, U+5fc5, U+5fcc-5fcd, U+5fd6-5fd9, U+5fe0, U+5feb, U+5ff5, U+5ffd, U+5fff, U+600f, U+6012, U+6016, U+601c, U+6020-6021, U+6025, U+6028, U+602a, U+602f, U+6041-6043, U+604d, U+6050, U+6052, U+6055, U+6059, U+605d, U+6062-6065, U+6068-606a, U+606c-606d, U+606f-6070, U+6085, U+6089, U+608c-608d, U+6094, U+6096, U+609a-609b, U+609f-60a0, U+60a3-60a4, U+60a7, U+60b0, U+60b2-60b4, U+60b6, U+60b8, U+60bc-60bd, U+60c7, U+60d1, U+60da, U+60dc, U+60df-60e1, U+60f0-60f1, U+60f6, U+60f9-60fb, U+6101, U+6106, U+6108-6109, U+610d-610e, U+6115, U+611a, U+6127, U+6130, U+6134, U+6137, U+613c, U+613e-613f, U+6142, U+6144, U+6147-6148, U+614a-614b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-212.woff2') format('woff2'); unicode-range: U+5c40, U+5c45-5c46, U+5c48, U+5c4b, U+5c4d-5c4e, U+5c51, U+5c5b, U+5c60, U+5c62, U+5c64-5c65, U+5c6c, U+5c6f, U+5c79, U+5c90-5c91, U+5ca1, U+5ca9, U+5cab-5cac, U+5cb1, U+5cb3, U+5cb5, U+5cb7-5cb8, U+5cba, U+5cbe, U+5cc0, U+5cd9, U+5ce0, U+5ce8, U+5cef-5cf0, U+5cf4, U+5cf6, U+5cfb, U+5cfd, U+5d07, U+5d0d-5d0e, U+5d11, U+5d14, U+5d16-5d17, U+5d19, U+5d27, U+5d29, U+5d4b-5d4c, U+5d50, U+5d69, U+5d6c, U+5d6f, U+5d87, U+5d8b, U+5d9d, U+5da0, U+5da2, U+5daa, U+5db8, U+5dba, U+5dbc-5dbd, U+5dcd, U+5dd2, U+5dd6, U+5de1-5de2, U+5de5-5de8, U+5deb, U+5dee, U+5df1-5df4, U+5df7, U+5dfd-5dfe, U+5e03, U+5e06, U+5e11, U+5e16, U+5e19, U+5e1b, U+5e1d, U+5e25, U+5e2b, U+5e2d, U+5e33, U+5e36, U+5e38, U+5e3d, U+5e3f-5e40, U+5e44-5e45, U+5e47, U+5e4c, U+5e55, U+5e5f, U+5e61-5e63, U+5e72, U+5e77-5e79, U+5e7b-5e7e, U+5e84, U+5e87, U+5e8a, U+5e8f, U+5e95, U+5e97, U+5e9a, U+5e9c, U+5ea0, U+5ea7, U+5eab, U+5ead, U+5eb5-5eb8, U+5ebe, U+5ec2, U+5ec8-5eca, U+5ed0, U+5ed3, U+5ed6, U+5eda-5edb, U+5edf-5ee0, U+5ee2-5ee3, U+5eec, U+5ef3, U+5ef6-5ef7, U+5efa-5efb, U+5f01, U+5f04, U+5f0a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-213.woff2') format('woff2'); unicode-range: U+59be, U+59c3, U+59c6, U+59c9, U+59cb, U+59d0-59d1, U+59d3-59d4, U+59d9-59da, U+59dc-59dd, U+59e6, U+59e8, U+59ea, U+59ec, U+59ee, U+59f8, U+59fb, U+59ff, U+5a01, U+5a03, U+5a11, U+5a18, U+5a1b-5a1c, U+5a1f-5a20, U+5a25, U+5a29, U+5a36, U+5a3c, U+5a41, U+5a46, U+5a49, U+5a5a, U+5a62, U+5a66, U+5a92, U+5a9a-5a9b, U+5aa4, U+5ac1-5ac2, U+5ac4, U+5ac9, U+5acc, U+5ae1, U+5ae6, U+5ae9, U+5b05, U+5b09, U+5b0b-5b0c, U+5b16, U+5b2a, U+5b40, U+5b43, U+5b51, U+5b54-5b55, U+5b58, U+5b5a, U+5b5c-5b5d, U+5b5f, U+5b63-5b64, U+5b69, U+5b6b, U+5b70-5b71, U+5b75, U+5b7a, U+5b7c, U+5b85, U+5b87-5b88, U+5b8b, U+5b8f, U+5b93, U+5b95-5b99, U+5b9b-5b9c, U+5ba2-5ba6, U+5bac, U+5bae, U+5bb0, U+5bb3-5bb5, U+5bb8-5bb9, U+5bbf-5bc0, U+5bc2-5bc7, U+5bcc, U+5bd0, U+5bd2-5bd4, U+5bd7, U+5bde-5bdf, U+5be1-5be2, U+5be4-5be9, U+5beb-5bec, U+5bee-5bef, U+5bf5-5bf6, U+5bf8, U+5bfa, U+5c01, U+5c04, U+5c07-5c0b, U+5c0d-5c0e, U+5c16, U+5c19, U+5c24, U+5c28, U+5c31, U+5c38-5c3c, U+5c3e-5c3f; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-214.woff2') format('woff2'); unicode-range: U+5703-5704, U+5708, U+570d, U+5712-5713, U+5716, U+5718, U+572d, U+573b, U+5740, U+5742, U+5747, U+574a, U+574d-574e, U+5750-5751, U+5761, U+5764, U+5766, U+576a, U+576e, U+5770, U+5775, U+577c, U+5782, U+5788, U+578b, U+5793, U+57a0, U+57a2-57a3, U+57c3, U+57c7-57c8, U+57cb, U+57df-57e0, U+57f0, U+57f4, U+57f7, U+57f9-57fa, U+57fc, U+5800, U+5802, U+5805-5806, U+5808-580a, U+581e, U+5821, U+5824, U+5827, U+582a, U+582f-5831, U+5835, U+583a, U+584a-584b, U+584f, U+5851, U+5854, U+5857-5858, U+585a, U+585e, U+5861-5862, U+5864, U+5875, U+5879, U+587c, U+587e, U+5883, U+5885, U+5889, U+5893, U+589c, U+589e-589f, U+58a8-58a9, U+58ae, U+58b3, U+58ba-58bb, U+58be, U+58c1, U+58c5, U+58c7, U+58ce, U+58d1, U+58d3, U+58d5, U+58d8-58d9, U+58de-58df, U+58e4, U+58ec, U+58ef, U+58f9-58fb, U+58fd, U+590f, U+5914-5915, U+5919, U+5922, U+592d-592e, U+5931, U+5937, U+593e, U+5944, U+5947-5949, U+594e-5951, U+5954-5955, U+5957, U+595a, U+5960, U+5962, U+5967, U+596a-596e, U+5974, U+5978, U+5982-5984, U+598a, U+5993, U+5996-5997, U+5999, U+59a5, U+59a8, U+59ac, U+59b9, U+59bb; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-215.woff2') format('woff2'); unicode-range: U+539a, U+53a0, U+53a5-53a6, U+53ad, U+53bb, U+53c3, U+53c8-53cb, U+53cd, U+53d4, U+53d6-53d7, U+53db, U+53e1-53e3, U+53e5, U+53e9-53ed, U+53f1, U+53f3, U+53f8, U+5403-5404, U+540a, U+540e-5411, U+541b, U+541d, U+541f-5420, U+5426, U+5429, U+542b, U+5433, U+5438-5439, U+543b-543c, U+543e, U+5442, U+5448, U+544a, U+5451, U+5468, U+546a, U+5471, U+5473, U+5475, U+547b-547d, U+5480, U+5486, U+548e, U+5490, U+54a4, U+54a8, U+54ab-54ac, U+54b3, U+54b8, U+54bd, U+54c0, U+54c4, U+54c8-54c9, U+54e1, U+54e5, U+54e8, U+54ed-54ee, U+54f2, U+54fa, U+5504, U+5506-5507, U+550e, U+5510, U+551c, U+552f, U+5531, U+5535, U+553e, U+5544, U+5546, U+554f, U+5553, U+5556, U+555e, U+5563, U+557c, U+5580, U+5584, U+5586-5587, U+5589-558a, U+5598-559a, U+559c-559d, U+55a7, U+55a9-55ac, U+55ae, U+55c5, U+55c7, U+55d4, U+55da, U+55dc, U+55df, U+55e3-55e4, U+55fd-55fe, U+5606, U+5609, U+5614, U+5617, U+562f, U+5632, U+5634, U+5636, U+5653, U+5668, U+566b, U+5674, U+5686, U+56a5, U+56ac, U+56ae, U+56b4, U+56bc, U+56ca, U+56cd, U+56d1, U+56da-56db, U+56de, U+56e0, U+56f0, U+56f9-56fa; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-216.woff2') format('woff2'); unicode-range: U+516e, U+5175-5178, U+517c, U+5180, U+5186, U+518a, U+518d, U+5192, U+5195, U+5197, U+51a0, U+51a5, U+51aa, U+51ac, U+51b6-51b7, U+51bd, U+51c4, U+51c6, U+51c9, U+51cb-51cd, U+51dc-51de, U+51e1, U+51f0-51f1, U+51f6, U+51f8-51f9, U+51fd, U+5200, U+5203, U+5207-5208, U+520a, U+520e, U+5211, U+5217, U+521d, U+5224-5225, U+522a, U+522e, U+5230, U+5236-523b, U+5243, U+5247, U+524a-524c, U+5254, U+5256, U+525b, U+525d, U+5261, U+5269-526a, U+526f, U+5272, U+5275, U+527d, U+527f, U+5283, U+5287-5289, U+528d, U+5291-5292, U+529f, U+52a3-52a4, U+52a9-52ab, U+52be, U+52c1, U+52c3, U+52c5, U+52c7, U+52c9, U+52cd, U+52d2, U+52d6, U+52d8-52d9, U+52db, U+52dd-52df, U+52e2-52e4, U+52f3, U+52f5, U+52f8, U+52fa-52fb, U+52fe-52ff, U+5305, U+5308, U+530d, U+530f-5310, U+5315, U+5319, U+5320-5321, U+5323, U+532a, U+532f, U+5339, U+533f-5341, U+5343-5344, U+5347-534a, U+534d, U+5351-5354, U+535a, U+535c, U+535e, U+5360, U+5366, U+5368, U+536f-5371, U+5374-5375, U+5377, U+537d, U+537f, U+5384, U+5393, U+5398; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-217.woff2') format('woff2'); unicode-range: U+4f43, U+4f46-4f48, U+4f4d-4f51, U+4f55, U+4f59-4f5a, U+4f69, U+4f6f-4f70, U+4f73, U+4f76, U+4f7a, U+4f7e-4f7f, U+4f81, U+4f83-4f84, U+4f86, U+4f88, U+4f8a-4f8b, U+4f8d, U+4f8f, U+4f91, U+4f96, U+4f98, U+4f9b, U+4f9d, U+4fae-4faf, U+4fb5-4fb6, U+4fbf, U+4fc2-4fc4, U+4fc9-4fca, U+4fce, U+4fd1, U+4fd3-4fd4, U+4fd7, U+4fda, U+4fdf-4fe0, U+4fee-4fef, U+4ff1, U+4ff3, U+4ff5, U+4ff8, U+4ffa, U+5002, U+5006, U+5009, U+500b, U+500d, U+5011-5012, U+5016, U+5019-501a, U+501c, U+501e-501f, U+5021, U+5023-5024, U+5026-5028, U+502a-502d, U+503b, U+5043, U+5047-5049, U+504f, U+5055, U+505a, U+505c, U+5065, U+5074-5076, U+5078, U+5080, U+5085, U+508d, U+5091, U+5098-5099, U+50ac-50ad, U+50b2-50b3, U+50b5, U+50b7, U+50be, U+50c5, U+50c9-50ca, U+50d1, U+50d5-50d6, U+50da, U+50de, U+50e5, U+50e7, U+50ed, U+50f9, U+50fb, U+50ff-5101, U+5104, U+5106, U+5109, U+5112, U+511f, U+5121, U+512a, U+5132, U+5137, U+513a, U+513c, U+5140-5141, U+5143-5148, U+514b-514e, U+5152, U+515c, U+5162, U+5169-516b, U+516d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-218.woff2') format('woff2'); unicode-range: U+338c-339c, U+339f-33a0, U+33a2-33cb, U+33cf-33d0, U+33d3, U+33d6, U+33d8, U+33db-33dd, U+4e01, U+4e03, U+4e07-4e08, U+4e11, U+4e14-4e15, U+4e18-4e19, U+4e1e, U+4e32, U+4e38-4e39, U+4e42-4e43, U+4e45, U+4e4d-4e4f, U+4e56, U+4e58-4e59, U+4e5d-4e5e, U+4e6b, U+4e6d, U+4e73, U+4e76-4e77, U+4e7e, U+4e82, U+4e86, U+4e88, U+4e8e, U+4e90-4e92, U+4e94-4e95, U+4e98, U+4e9b, U+4e9e, U+4ea1-4ea2, U+4ea4-4ea6, U+4ea8, U+4eab, U+4ead-4eae, U+4eb6, U+4ec0-4ec1, U+4ec4, U+4ec7, U+4ecb, U+4ecd, U+4ed4-4ed5, U+4ed7-4ed9, U+4edd, U+4edf, U+4ee4, U+4ef0, U+4ef2, U+4ef6-4ef7, U+4efb, U+4f01, U+4f09, U+4f0b, U+4f0d-4f11, U+4f2f, U+4f34, U+4f36, U+4f38, U+4f3a, U+4f3c-4f3d; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-219.woff2') format('woff2'); unicode-range: U+3136, U+3138, U+313a-3140, U+3143-3144, U+3150, U+3152, U+3154-3156, U+3158-315b, U+315d-315f, U+3162, U+3164-318c, U+318e, U+3200-321b, U+3231, U+3239, U+3251-325a, U+3260-327b, U+327e-327f, U+328a-3290, U+3294, U+329e, U+32a5, U+3380-3384, U+3388-338b; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-220.woff2') format('woff2'); unicode-range: U+2f7d, U+2f7f-2f8b, U+2f8e-2f90, U+2f92-2f97, U+2f99-2fa0, U+2fa2-2fa3, U+2fa5-2fa9, U+2fac-2fb1, U+2fb3-2fbc, U+2fc1-2fca, U+2fcd-2fd4, U+3003, U+3012-3019, U+301c, U+301e-3020, U+3036, U+3041, U+3043, U+3045, U+3047, U+3049, U+304e, U+3050, U+3052, U+3056, U+305a, U+305c, U+305e, U+3062, U+3065, U+306c, U+3070-307d, U+3080, U+3085, U+3087, U+308e, U+3090-3091, U+30a1, U+30a5, U+30a9, U+30ae, U+30b1-30b2, U+30b4, U+30b6, U+30bc-30be, U+30c2, U+30c5, U+30cc, U+30d2, U+30d4, U+30d8-30dd, U+30e4, U+30e6, U+30e8, U+30ee, U+30f0-30f2, U+30f4-30f6, U+3133, U+3135; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-221.woff2') format('woff2'); unicode-range: U+2541-254b, U+25a4-25a9, U+25b1, U+25b5, U+25b9, U+25bf, U+25c1, U+25c3, U+25c9-25ca, U+25cc, U+25ce, U+25d0-25d1, U+25e6, U+25ef, U+260f, U+261d, U+261f, U+262f, U+2660, U+2664, U+2667-2669, U+266d, U+266f, U+2716, U+271a, U+273d, U+2756, U+2776-277f, U+278a-2793, U+2963, U+2965, U+2ac5-2ac6, U+2acb-2acc, U+2f00, U+2f04, U+2f06, U+2f08, U+2f0a-2f0b, U+2f11-2f12, U+2f14, U+2f17-2f18, U+2f1c-2f1d, U+2f1f-2f20, U+2f23-2f26, U+2f28-2f29, U+2f2b, U+2f2d, U+2f2f-2f32, U+2f38, U+2f3c-2f40, U+2f42-2f4c, U+2f4f-2f52, U+2f54-2f58, U+2f5a-2f66, U+2f69-2f70, U+2f72-2f76, U+2f78, U+2f7a-2f7c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-222.woff2') format('woff2'); unicode-range: U+2479-2487, U+249c-24d1, U+24d3-24d7, U+24d9-24e9, U+24eb-24f4, U+2500-2501, U+2503, U+250c-2513, U+2515-2516, U+2518-2540; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-223.woff2') format('woff2'); unicode-range: U+215b-215e, U+2162-2169, U+2170-2179, U+2195-2199, U+21b0-21b4, U+21bc, U+21c0, U+21c4-21c5, U+21cd, U+21cf-21d4, U+21e0-21e3, U+21e6-21e9, U+2200, U+2202-2203, U+2206-2209, U+220b-220c, U+220f, U+2211, U+2213, U+221a, U+221d-2220, U+2222, U+2225-2227, U+2229-222c, U+222e, U+2234-2237, U+223d, U+2243, U+2245, U+2248, U+2250-2253, U+225a, U+2260-2262, U+2264-2267, U+226a-226b, U+226e-2273, U+2276-2277, U+2279-227b, U+2280-2287, U+228a-228b, U+2295-2297, U+22a3-22a5, U+22bb-22bc, U+22ce-22cf, U+22da-22db, U+22ee-22ef, U+2306, U+2312, U+2314, U+2467-2478; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-224.woff2') format('woff2'); unicode-range: U+81-82, U+84, U+a2-a5, U+a7-a8, U+aa, U+ac-ad, U+b1-b3, U+b6, U+b8-ba, U+bc-be, U+c0, U+c2, U+c6-cb, U+ce-d0, U+d4, U+d8-d9, U+db-dc, U+de-df, U+e6, U+eb, U+ee-f0, U+f4, U+f7-f9, U+fb, U+fe-ff, U+111, U+126-127, U+132-133, U+138, U+13f-142, U+149-14b, U+152-153, U+166-167, U+2bc, U+2c7, U+2d0, U+2d8-2d9, U+2db-2dd, U+391-394, U+396-3a1, U+3a3-3a9, U+3b2-3b6, U+3b8, U+3bc, U+3be-3c1, U+3c3-3c9, U+2010, U+2015-2016, U+2018-2019, U+201b, U+201f-2021, U+2025, U+2030, U+2033-2036, U+203c, U+203e, U+2042, U+2074, U+207a-207f, U+2081-2084, U+2109, U+2113, U+2116, U+2121, U+2126, U+212b, U+2153-2154; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-225.woff2') format('woff2'); unicode-range: U+e8, U+2da, U+2160, U+2194, U+3054, U+3058, U+306d, U+3086, U+308d, U+30ac, U+30bb, U+30c4, U+30cd-30ce, U+30e2, U+3132, U+3146, U+3149, U+339d, U+4e3b, U+4f0a, U+4fdd, U+4fe1, U+5409, U+540c, U+5834, U+592a-592b, U+5b9a, U+5dde, U+5e0c, U+5e73, U+5f0f, U+60f3, U+653f, U+661f, U+662f, U+667a, U+683c, U+6b4c, U+6c11, U+767c, U+76ee, U+76f4, U+77f3, U+79d1, U+7a7a, U+7b2c, U+7d22, U+8207, U+8a00, U+8a71, U+9280, U+9580, U+958b, U+96c6, U+9762, U+98df, U+9ed1, U+ac2d, U+adc8, U+add3, U+af48, U+b014, U+b134-b135, U+b158, U+b2aa, U+b35f, U+b6a4, U+b9cf, U+bb63, U+bd23, U+be91, U+c29b, U+c3f4, U+c42c, U+c55c, U+c573, U+c58f, U+c78c, U+c7dd, U+c8f5, U+cad1, U+cc48, U+cf10, U+cf20, U+d03c, U+d07d, U+d2a0, U+d30e, U+d38d, U+d3a8, U+d3c8, U+d5e5, U+d5f9, U+d6e4, U+f90a, U+ff02, U+ff1c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-226.woff2') format('woff2'); unicode-range: U+3b1, U+2466, U+25a1, U+25a3, U+261c, U+3008-3009, U+305b, U+305d, U+3069, U+30a7, U+30ba, U+30cf, U+30ef, U+3151, U+3157, U+4e4b, U+4e5f, U+4e8c, U+4eca, U+4ed6, U+4f5b, U+50cf, U+5149, U+5165, U+5171, U+5229, U+529b, U+5316, U+539f, U+53f2, U+571f, U+5728, U+58eb, U+591c, U+5b78, U+5c11, U+5c55, U+5ddd, U+5e02, U+5fb7, U+60c5, U+610f, U+611f, U+6625, U+66f8, U+6797, U+679c, U+682a, U+6d2a, U+706b, U+7406, U+767b, U+76f8, U+77e5, U+7acb, U+898b, U+8a69, U+8def, U+8fd1, U+901a, U+90e8, U+91cd, U+975e, U+ae14, U+ae6c, U+aec0, U+afc7, U+afc9, U+b01c, U+b028, U+b308, U+b311, U+b314, U+b31c, U+b524, U+b560, U+b764, U+b920, U+b9e3, U+bd48, U+be7d, U+c0db, U+c231, U+c270, U+c2e3, U+c37d, U+c3ed, U+c530, U+c6a5, U+c6dc, U+c7a4, U+c954, U+c974, U+d000, U+d565, U+d667, U+d6c5, U+d79d, U+ff1e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-227.woff2') format('woff2'); unicode-range: U+131, U+2032, U+2465, U+2642, U+3048, U+3051, U+3083-3084, U+308f, U+30c0, U+30d1, U+30d3, U+30d6, U+30df, U+30e7, U+3153, U+4e16, U+4e8b, U+4ee5, U+5206, U+52a0, U+52d5, U+53e4, U+53ef, U+54c1, U+57ce, U+597d, U+5b8c, U+5ea6, U+5f8c, U+5f97, U+6210, U+6240, U+624b, U+6728, U+6bd4, U+7236, U+7269, U+7279, U+738b, U+7528, U+7530, U+767e, U+798f, U+8005, U+8a18, U+90fd, U+91cc, U+9577, U+9593, U+98a8, U+ac20, U+acf6, U+ad90, U+af5d, U+af80, U+afcd, U+aff0, U+b0a1, U+b0b5, U+b1fd, U+b2fc, U+b380, U+b51b, U+b584, U+b5b3, U+b8fd, U+b93c, U+b9f4, U+bb44, U+bc08, U+bc27, U+bc49, U+be55, U+be64, U+bfb0, U+bfc5, U+c178, U+c21f, U+c314, U+c4f1, U+c58d, U+c664, U+c698, U+c6a7, U+c6c1, U+c9ed, U+cac0, U+cacc, U+cad9, U+ccb5, U+cdcc, U+d0e4, U+d143, U+d320, U+d330, U+d54d, U+ff06, U+ff1f, U+ff5e; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-228.woff2') format('woff2'); unicode-range: U+b4, U+20a9, U+20ac, U+2190, U+24d8, U+2502, U+2514, U+2592, U+25c7-25c8, U+2663, U+3060, U+3064, U+3081, U+3088, U+30a3, U+30a6, U+30aa, U+30b5, U+30c7, U+30ca-30cb, U+30d0, U+30e3, U+30e5, U+339e, U+4e09, U+4eac, U+4f5c, U+5167-5168, U+516c, U+51fa, U+5408, U+540d, U+591a, U+5b57, U+6211, U+65b9, U+660e, U+6642, U+6700, U+6b63, U+6e2f, U+7063, U+7532, U+793e, U+81ea, U+8272, U+82b1, U+897f, U+8eca, U+91ce, U+ac38, U+ad76, U+ae84, U+aecc, U+b07d, U+b0b1, U+b215, U+b2a0, U+b310, U+b3d7, U+b52a, U+b618, U+b775, U+b797, U+bcd5, U+bd59, U+be80, U+bea8, U+bed1, U+bee4-bee5, U+c060, U+c2ef, U+c329, U+c3dc, U+c597, U+c5bd, U+c5e5, U+c69c, U+c9d6, U+ca29, U+ca5c, U+ca84, U+cc39, U+cc3b, U+ce89, U+cee5, U+cf65, U+cf85, U+d058, U+d145, U+d22d, U+d325, U+d37d, U+d3ad, U+d769, U+ff0c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-229.woff2') format('woff2'); unicode-range: U+2161, U+2228, U+2299, U+2464, U+2517, U+2640, U+3042, U+304a, U+3053, U+3061, U+307f, U+3082, U+308c, U+3092, U+30a8, U+30ab, U+30ad, U+30b0, U+30b3, U+30b7, U+30c1, U+30c6, U+30c9, U+30d5, U+30d7, U+30de, U+30e0-30e1, U+30ec-30ed, U+4e0b, U+4e0d, U+4ee3, U+53f0, U+548c, U+5b89, U+5bb6, U+5c0f, U+611b, U+6771, U+6aa2, U+6bcd, U+6c34, U+6cd5, U+6d77, U+767d, U+795e, U+8ecd, U+9999, U+9ad8, U+ac07, U+ac1a, U+ac40, U+ad0c, U+ad88, U+ada4, U+ae01, U+ae65, U+aebd, U+aec4, U+afe8, U+b139, U+b205, U+b383, U+b38c, U+b42c, U+b461, U+b55c, U+b78f, U+b8fb, U+b9f7, U+bafc, U+bc99, U+bed8, U+bfcd, U+c0bf, U+c0f9, U+c167, U+c204, U+c20f, U+c22f, U+c258, U+c298, U+c2bc, U+c388, U+c501, U+c50c, U+c5b9, U+c5ce, U+c641, U+c648, U+c73d, U+ca50, U+ca61, U+cc4c, U+ceac, U+d0d4, U+d5f7, U+d6d7, U+ff1a; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-230.woff2') format('woff2'); unicode-range: U+2103, U+2463, U+25c6, U+25cb, U+266c, U+3001, U+300a, U+3046, U+304c-304d, U+304f, U+3055, U+3059, U+3063, U+3066-3068, U+306f, U+3089, U+30b8, U+30bf, U+314f, U+4e0a, U+570b, U+5730, U+5916, U+5929, U+5c71, U+5e74, U+5fc3, U+601d, U+6027, U+63d0, U+6709, U+6734, U+751f, U+7684, U+82f1, U+9053, U+91d1, U+97f3, U+ac2f, U+ac4d, U+adc4, U+ade4, U+ae41, U+ae4d-ae4e, U+aed1, U+afb9, U+b0e0, U+b299, U+b365, U+b46c, U+b480, U+b4c8, U+b7b4, U+b819, U+b918, U+baab, U+bab9, U+be8f, U+bed7, U+c0ec, U+c19f, U+c1a5, U+c3d9, U+c464, U+c53d, U+c553, U+c570, U+c5cc, U+c633, U+c6a4, U+c7a3, U+c7a6, U+c886, U+c9d9-c9da, U+c9ec, U+ca0c, U+cc21, U+cd1b, U+cd78, U+cdc4, U+cef8, U+cfe4, U+d0a5, U+d0b5, U+d0ec, U+d15d, U+d188, U+d23c, U+d2ac, U+d729, U+d79b, U+ff01, U+ff08-ff09, U+ff5c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-231.woff2') format('woff2'); unicode-range: U+2039-203a, U+223c, U+25b3, U+25b7, U+25bd, U+25cf, U+266a, U+3002, U+300b, U+304b, U+3057, U+305f, U+306a-306b, U+307e, U+308a-308b, U+3093, U+30a2, U+30af, U+30b9, U+30c3, U+30c8, U+30e9-30eb, U+33a1, U+4e00, U+524d, U+5357, U+5b50, U+7121, U+884c, U+9751, U+ac94, U+aebe, U+aecd, U+af08, U+af41, U+af49, U+b010, U+b053, U+b109, U+b11b, U+b128, U+b154, U+b291, U+b2e6, U+b301, U+b385, U+b525, U+b5b4, U+b729, U+b72f, U+b738, U+b7ff, U+b837, U+b975, U+ba67, U+bb47, U+bc1f, U+bd90, U+bfd4, U+c27c, U+c324, U+c379, U+c3e0, U+c465, U+c53b, U+c58c, U+c610, U+c653, U+c6cd, U+c813, U+c82f, U+c999, U+c9e0, U+cac4, U+cad3, U+cbd4, U+cc10, U+cc22, U+ccb8, U+ccbc, U+cda5, U+ce84, U+cea3, U+cf67, U+cfe1, U+d241, U+d30d, U+d31c, U+d391, U+d401, U+d479, U+d5c9, U+d5db, U+d649, U+d6d4; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-232.woff2') format('woff2'); unicode-range: U+b0, U+e9, U+2193, U+2462, U+260e, U+261e, U+300e-300f, U+3044, U+30a4, U+30fb-30fc, U+314d, U+5973, U+6545, U+6708, U+7537, U+ac89, U+ac9c, U+acc1, U+ad04, U+ad75, U+ad7d, U+ae45, U+ae61, U+af42, U+b0ab, U+b0af, U+b0b3, U+b12c, U+b194, U+b1a8, U+b220, U+b258, U+b284, U+b2ff, U+b315, U+b371, U+b3d4-b3d5, U+b460, U+b527, U+b534, U+b810, U+b818, U+b98e, U+ba55, U+bbac, U+bc0b, U+bc40, U+bca1, U+bccd, U+bd93, U+be54, U+be5a, U+bf08, U+bf50, U+bf55, U+bfdc, U+c0c0, U+c0d0, U+c0f4, U+c100, U+c11e, U+c170, U+c20d, U+c274, U+c290, U+c308, U+c369, U+c539, U+c587, U+c5ff, U+c6ec, U+c70c, U+c7ad, U+c7c8, U+c83c, U+c881, U+cb48, U+cc60, U+ce69, U+ce6b, U+ce75, U+cf04, U+cf08, U+cf55, U+cf70, U+cffc, U+d0b7, U+d1a8, U+d2c8, U+d384, U+d47c, U+d48b, U+d5dd, U+d5e8, U+d720, U+d759, U+f981; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-233.woff2') format('woff2'); unicode-range: U+e0, U+e2, U+395, U+3b7, U+3ba, U+2460-2461, U+25a0, U+3010-3011, U+306e, U+30f3, U+314a, U+314c, U+5927, U+65b0, U+7e41, U+97d3, U+9ad4, U+ad49, U+ae0b, U+ae0d, U+ae43, U+ae5d, U+aecf, U+af3c, U+af64, U+afd4, U+b080, U+b084, U+b0c5, U+b10c, U+b1e8, U+b2ac, U+b36e, U+b451, U+b515, U+b540, U+b561, U+b6ab, U+b6b1, U+b72c, U+b730, U+b744, U+b800, U+b8ec, U+b8f0, U+b904, U+b968, U+b96d, U+b987, U+b9d9, U+bb36, U+bb49, U+bc2d, U+bc43, U+bcf6, U+bd89, U+be57, U+be61, U+bed4, U+c090, U+c130, U+c148, U+c19c, U+c2f9, U+c36c, U+c37c, U+c384, U+c3df, U+c575, U+c584, U+c660, U+c719, U+c816, U+ca4d, U+ca54, U+cabc, U+cb49, U+cc14, U+cff5, U+d004, U+d038, U+d0b4, U+d0d3, U+d0e0, U+d0ed, U+d131, U+d1b0, U+d31f, U+d33d, U+d3a0, U+d3ab, U+d514, U+d584, U+d6a1, U+d6cc, U+d749, U+d760, U+d799; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-234.woff2') format('woff2'); unicode-range: U+24, U+60, U+3b9, U+3bb, U+3bd, U+2191, U+2606, U+300c-300d, U+3131, U+3134, U+3139, U+3141-3142, U+3148, U+3161, U+3163, U+321c, U+4eba, U+5317, U+ac31, U+ac77, U+ac9f, U+acb9, U+acf0-acf1, U+acfd, U+ad73, U+af3d, U+b00c, U+b04a, U+b057, U+b0c4, U+b188, U+b1cc, U+b214, U+b2db, U+b2ee, U+b304, U+b4ed, U+b518, U+b5bc, U+b625, U+b69c-b69d, U+b7ac, U+b801, U+b86c, U+b959, U+b95c, U+b985, U+ba48, U+bb58, U+bc0c, U+bc38, U+bc85, U+bc9a, U+bf40, U+c068, U+c0bd, U+c0cc, U+c12f, U+c149, U+c1e0, U+c22b, U+c22d, U+c250, U+c2fc, U+c300, U+c313, U+c370, U+c3d8, U+c557, U+c580, U+c5e3, U+c62e, U+c634, U+c6f0, U+c74d, U+c783, U+c78e, U+c796, U+c7bc, U+c92c, U+ca4c, U+cc1c, U+cc54, U+cc59, U+ce04, U+cf30, U+cfc4, U+d140, U+d321, U+d38c, U+d399, U+d54f, U+d587, U+d5d0, U+d6e8, U+d770; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-235.woff2') format('woff2'); unicode-range: U+d7, U+ea, U+fc, U+2192, U+25bc, U+3000, U+3137, U+3145, U+315c, U+7f8e, U+ac13, U+ac71, U+ac90, U+acb8, U+ace7, U+ad7f, U+ae50, U+aef4, U+af34, U+afbc, U+b048, U+b09a, U+b0ad, U+b0bc, U+b113, U+b125, U+b141, U+b20c, U+b2d9, U+b2ed, U+b367, U+b369, U+b374, U+b3cb, U+b4ec, U+b611, U+b760, U+b81b, U+b834, U+b8b0, U+b8e1, U+b989, U+b9d1, U+b9e1, U+b9fa, U+ba4d, U+ba78, U+bb35, U+bb54, U+bbf9, U+bc11, U+bcb3, U+bd05, U+bd95, U+bdd4, U+be10, U+bed0, U+bf51, U+c0d8, U+c232, U+c2b7, U+c2eb, U+c378, U+c500, U+c52c, U+c549, U+c568, U+c598, U+c5c9, U+c61b, U+c639, U+c67c, U+c717, U+c78a, U+c80a, U+c90c-c90d, U+c950, U+c9e7, U+cbe4, U+cca9, U+cce4, U+cdb0, U+ce78, U+ce94, U+ce98, U+cf8c, U+d018, U+d034, U+d0f1, U+d1b1, U+d280, U+d2f8, U+d338, U+d380, U+d3b4, U+d610, U+d69f, U+d6fc, U+d758; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-236.woff2') format('woff2'); unicode-range: U+e7, U+2022, U+203b, U+25c0, U+2605, U+2661, U+3147, U+318d, U+672c, U+8a9e, U+acaa, U+acbc, U+ad1c, U+ae4a, U+ae5c, U+b044, U+b054, U+b0c8-b0c9, U+b2a6, U+b2d0, U+b35c, U+b364, U+b428, U+b454, U+b465, U+b4b7, U+b4e3, U+b51c, U+b5a1, U+b784, U+b790, U+b7ab, U+b7f4, U+b82c, U+b835, U+b8e9, U+b8f8, U+b9d8, U+b9f9, U+ba5c, U+ba64, U+babd, U+bb18, U+bb3b, U+bbff, U+bc0d, U+bc45, U+bc97, U+bcbc, U+be45, U+be75, U+be7c, U+bfcc, U+c0b6, U+c0f7, U+c14b, U+c2b4, U+c30d, U+c4f8, U+c5bb, U+c5d1, U+c5e0, U+c5ee, U+c5fd, U+c606, U+c6c5, U+c6e0, U+c708, U+c81d, U+c820, U+c824, U+c878, U+c918, U+c96c, U+c9e4, U+c9f1, U+cc2e, U+cd09, U+cea1, U+cef5, U+cef7, U+cf64, U+cf69, U+cfe8, U+d035, U+d0ac, U+d230, U+d234, U+d2f4, U+d31d, U+d575, U+d578, U+d608, U+d614, U+d718, U+d751, U+d761, U+d78c, U+d790; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-237.woff2') format('woff2'); unicode-range: U+2665, U+3160, U+4e2d, U+6587, U+65e5, U+ac12, U+ac14, U+ac16, U+ac81, U+ad34, U+ade0, U+ae54, U+aebc, U+af2c, U+afc0, U+afc8, U+b04c, U+b08c, U+b099, U+b0a9, U+b0ac, U+b0ae, U+b0b8, U+b123, U+b179, U+b2e5, U+b2f7, U+b4c0, U+b531, U+b538, U+b545, U+b550, U+b5a8, U+b6f0, U+b728, U+b73b, U+b7ad, U+b7ed, U+b809, U+b864, U+b86d, U+b871, U+b9bf, U+b9f5, U+ba40, U+ba4b, U+ba58, U+ba87, U+baac, U+bbc0, U+bc16, U+bc34, U+bd07, U+bd99, U+be59, U+bfd0, U+c058, U+c0e4, U+c0f5, U+c12d, U+c139, U+c228, U+c529, U+c5c7, U+c635, U+c637, U+c735, U+c77d, U+c787, U+c789, U+c8c4, U+c989, U+c98c, U+c9d0, U+c9d3, U+cc0c, U+cc99, U+cd0c, U+cd2c, U+cd98, U+cda4, U+ce59, U+ce60, U+ce6d, U+cea0, U+d0d0-d0d1, U+d0d5, U+d14d, U+d1a4, U+d29c, U+d2f1, U+d301, U+d39c, U+d3bc, U+d4e8, U+d540, U+d5ec, U+d640, U+d750; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-238.woff2') format('woff2'); unicode-range: U+5e, U+25b2, U+25b6, U+314e, U+ac24, U+ace1, U+ace4, U+ae68, U+af2d, U+b0d0, U+b0e5, U+b150, U+b155, U+b193, U+b2c9, U+b2dd, U+b3c8, U+b3fc, U+b410, U+b458, U+b4dd, U+b5a0, U+b5a4, U+b5bb, U+b7b5, U+b838, U+b840, U+b86f, U+b8f9, U+b960, U+b9e5, U+bab8, U+bb50, U+bc1d, U+bc24-bc25, U+bca8, U+bcbd, U+bd04, U+bd10, U+bd24, U+be48, U+be5b, U+be68, U+c05c, U+c12c, U+c140, U+c15c, U+c168, U+c194, U+c219, U+c27d, U+c2a8, U+c2f1, U+c2f8, U+c368, U+c554-c555, U+c559, U+c564, U+c5d8, U+c5fc, U+c625, U+c65c, U+c6b1, U+c728, U+c794, U+c84c, U+c88c, U+c8e0, U+c8fd, U+c998, U+c9dd, U+cc0d, U+cc30, U+ceec, U+cf13, U+cf1c, U+cf5c, U+d050, U+d07c, U+d0a8, U+d134, U+d138, U+d154, U+d1f4, U+d2bc, U+d329, U+d32c, U+d3d0, U+d3f4, U+d3fc, U+d56b, U+d5cc, U+d600-d601, U+d639, U+d6c8, U+d754, U+d765; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-239.woff2') format('woff2'); unicode-range: U+3c-3d, U+2026, U+24d2, U+314b, U+ac11, U+acf3, U+ad74, U+ad81, U+adf9, U+ae34, U+af43, U+afb8, U+b05d, U+b07c, U+b110, U+b118, U+b17c, U+b180, U+b18d, U+b192, U+b2cc, U+b355, U+b378, U+b4a4, U+b4ef, U+b78d, U+b799, U+b7a9, U+b7fd, U+b807, U+b80c, U+b839, U+b9b4, U+b9db, U+ba3c, U+bab0, U+bba4, U+bc94, U+be4c, U+c154, U+c1c4, U+c26c, U+c2ac, U+c2ed, U+c4f4, U+c55e, U+c561, U+c571, U+c5b5, U+c5c4, U+c654-c655, U+c695, U+c6e8, U+c6f9, U+c724, U+c751, U+c775, U+c7a0, U+c7c1, U+c874, U+c880, U+c9d5, U+c9f8, U+cabd, U+cc29, U+cc2c, U+cca8, U+ccab, U+ccd0, U+ce21, U+ce35, U+ce7c, U+ce90, U+cee8, U+cef4, U+cfe0, U+d070, U+d0b9, U+d0c1, U+d0c4, U+d0c8, U+d15c, U+d1a1, U+d2c0, U+d300, U+d314, U+d3ed, U+d478, U+d480, U+d48d, U+d508, U+d53d, U+d5e4, U+d611, U+d61c, U+d68d, U+d6a8, U+d798; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-240.woff2') format('woff2'); unicode-range: U+23, U+25, U+5f, U+a9, U+ac08, U+ac78, U+aca8, U+acac, U+ace8, U+ad70, U+adc0, U+addc, U+b137, U+b140, U+b208, U+b290, U+b2f5, U+b3c5, U+b3cc, U+b420, U+b429, U+b529, U+b530, U+b77d, U+b79c, U+b7a8, U+b7c9, U+b7f0, U+b7fc, U+b828, U+b860, U+b9ad, U+b9c1, U+b9c9, U+b9dd-b9de, U+b9e8, U+ba38-ba39, U+babb, U+bc00, U+bc8c, U+bca0, U+bca4, U+bcd1, U+bcfc, U+bd09, U+bdf0, U+be60, U+c0ad, U+c0b4, U+c0bc, U+c190, U+c1fc, U+c220, U+c288, U+c2b9, U+c2f6, U+c528, U+c545, U+c558, U+c5bc, U+c5d4, U+c600, U+c644, U+c6c0, U+c6c3, U+c721, U+c798, U+c7a1, U+c811, U+c838, U+c871, U+c904, U+c990, U+c9dc, U+cc38, U+cc44, U+cca0, U+cd1d, U+cd95, U+cda9, U+ce5c, U+cf00, U+cf58, U+d150, U+d22c, U+d305, U+d328, U+d37c, U+d3f0, U+d551, U+d5a5, U+d5c8, U+d5d8, U+d63c, U+d64d, U+d669, U+d734, U+d76c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-241.woff2') format('woff2'); unicode-range: U+26, U+2b, U+3e, U+40, U+7e, U+ac01, U+ac19, U+ac1d, U+aca0, U+aca9, U+acb0, U+ad8c, U+ae09, U+ae38, U+ae40, U+aed8, U+b09c, U+b0a0, U+b108, U+b204, U+b298, U+b2d8, U+b2eb-b2ec, U+b2f4, U+b313, U+b358, U+b450, U+b4e0, U+b54c, U+b610, U+b780, U+b78c, U+b791, U+b8e8, U+b958, U+b974, U+b984, U+b9b0, U+b9bc-b9bd, U+b9ce, U+ba70, U+bbfc, U+bc0f, U+bc15, U+bc1b, U+bc31, U+bc95, U+bcc0, U+bcc4, U+bd81, U+bd88, U+c0c8, U+c11d, U+c13c, U+c158, U+c18d, U+c1a1, U+c21c, U+c4f0, U+c54a, U+c560, U+c5b8, U+c5c8, U+c5f4, U+c628, U+c62c, U+c678, U+c6cc, U+c808, U+c810, U+c885, U+c88b, U+c900, U+c988, U+c99d, U+c9c8, U+cc3d-cc3e, U+cc45, U+cd08, U+ce20, U+cee4, U+d074, U+d0a4, U+d0dd, U+d2b9, U+d3b8, U+d3c9, U+d488, U+d544, U+d559, U+d56d, U+d588, U+d615, U+d648, U+d655, U+d658, U+d65c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-242.woff2') format('woff2'); unicode-range: U+d, U+48, U+7c, U+ac10, U+ac15, U+ac74, U+ac80, U+ac83, U+acc4, U+ad11, U+ad50, U+ad6d, U+adfc, U+ae00, U+ae08, U+ae4c, U+b0a8, U+b124, U+b144, U+b178, U+b274, U+b2a5, U+b2e8, U+b2f9, U+b354, U+b370, U+b418, U+b41c, U+b4f1, U+b514, U+b798, U+b808, U+b824-b825, U+b8cc, U+b978, U+b9d0, U+b9e4, U+baa9, U+bb3c, U+bc18, U+bc1c, U+bc30, U+bc84, U+bcf5, U+bcf8, U+bd84, U+be0c, U+be14, U+c0b0, U+c0c9, U+c0dd, U+c124, U+c2dd, U+c2e4, U+c2ec, U+c54c, U+c57c-c57d, U+c591, U+c5c5-c5c6, U+c5ed, U+c608, U+c640, U+c6b8, U+c6d4, U+c784, U+c7ac, U+c800-c801, U+c9c1, U+c9d1, U+cc28, U+cc98, U+cc9c, U+ccad, U+cd5c, U+cd94, U+cd9c, U+cde8, U+ce68, U+cf54, U+d0dc, U+d14c, U+d1a0, U+d1b5, U+d2f0, U+d30c, U+d310, U+d398, U+d45c, U+d50c, U+d53c, U+d560, U+d568, U+d589, U+d604, U+d6c4, U+d788; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-243.woff2') format('woff2'); unicode-range: U+39, U+49, U+4d-4e, U+a0, U+ac04, U+ac1c, U+ac70, U+ac8c, U+acbd, U+acf5, U+acfc, U+ad00, U+ad6c, U+adf8, U+b098, U+b0b4, U+b294, U+b2c8, U+b300, U+b3c4, U+b3d9, U+b4dc, U+b4e4, U+b77c, U+b7ec, U+b85d, U+b97c, U+b9c8, U+b9cc, U+ba54, U+ba74, U+ba85, U+baa8, U+bb34, U+bb38, U+bbf8, U+bc14, U+bc29, U+bc88, U+bcf4, U+bd80, U+be44, U+c0c1, U+c11c, U+c120, U+c131, U+c138, U+c18c, U+c218, U+c2b5, U+c2e0, U+c544, U+c548, U+c5b4, U+c5d0, U+c5ec, U+c5f0, U+c601, U+c624, U+c694, U+c6a9, U+c6b0, U+c6b4, U+c6d0, U+c704, U+c720, U+c73c, U+c740, U+c744, U+c74c, U+c758, U+c77c, U+c785, U+c788, U+c790-c791, U+c7a5, U+c804, U+c815, U+c81c, U+c870, U+c8fc, U+c911, U+c9c4, U+ccb4, U+ce58, U+ce74, U+d06c, U+d0c0, U+d130, U+d2b8, U+d3ec, U+d504, U+d55c, U+d569, U+d574, U+d638, U+d654, U+d68c; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-244.woff2') format('woff2'); unicode-range: U+20-22, U+27-2a, U+2c-38, U+3a-3b, U+3f, U+41-47, U+4a-4c, U+4f-5d, U+61-7b, U+7d, U+a1, U+ab, U+ae, U+b7, U+bb, U+bf, U+2013-2014, U+201c-201d, U+2122, U+ac00, U+ace0, U+ae30, U+b2e4, U+b85c, U+b9ac, U+c0ac, U+c2a4, U+c2dc, U+c774, U+c778, U+c9c0, U+d558; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-245.woff2') format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-246.woff2') format('woff2'); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-247.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Noto Sans KR'; font-style: normal; font-weight: 900; font-display: swap; src: url('assets/font/noto-kr-248.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
/* ## 아이콘, 인트로, 시작 화면 */
/* --- icon / pause button --- */
.icon-button {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.85);
  color: #1f2937;
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
  transition: transform 120ms var(--ease-out);
}

.icon-button:active {
  transform: translateX(-50%) scale(0.94);
}

/* --- intro screen: the one-time company intro video, shown full-bleed
   before the real start screen the very first time the game is ever
   launched (see game.js's INTRO_SEEN_KEY) --- */
.intro-screen {
  padding: 0;
  gap: 0;
  background: #000;
  overflow: hidden;
}

/* 인트로 재생 중에는 하단 컨트롤 자리(숨겨진 조이스틱 영역)도 영상과 같은 검정 */
#game-container:has(#intro-screen:not(.hidden)),
#game-container:has(#intro-screen:not(.hidden)) #play-area,
#game-container:has(#intro-screen:not(.hidden)) #ad-banner {
  background: #000;
  border-top-color: #000;
}
#game-container:has(#intro-screen:not(.hidden)) #game-canvas {
  visibility: hidden;
}

#intro-video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
  background: #000;
}

/* --- start screen: game.js draws the backdrop straight onto game-canvas
   (drawStartScene(), while game.phase==='start') behind this overlay, so
   this just needs to stay transparent and lay out real buttons in normal
   flex flow — same pattern every other screen (gameover/ranking/settings)
   already uses. no video, no positioning math, no watchdog needed. --- */
.start-art-overlay {
  background: transparent;
  /* .start-deco의 음수 z-index가 이 화면 안에서만 "콘텐츠 뒤"가 되도록
     스태킹 컨텍스트를 명시적으로 만든다(.ranking-art-overlay와 동일).
     이게 없으면 장식들이 화면 밖으로 빠져나가 불투명한 배경 캔버스
     뒤로 숨는다 — 진입 애니메이션(overlay-in)이 도는 동안만 임시로
     컨텍스트가 생겨서 그때만 우연히 보였다 */
  z-index: 0;
  /* 내용이 넘쳐 스크롤바가 생기면 버튼이 화면 아래에 붙는다 — 크기를 높이 기준으로 맞추고 스크롤은 막는다 */
  overflow-y: hidden;
}

/* .secondary-button's translucent white was designed for the dark navy
   .overlay background — against this screen's bright bathroom photo
   instead, that reads as barely-there. a solid dark pill keeps it legible
   and still reads as secondary next to the yellow "게임 시작" pill */
#start-screen .menu-row button {
  background: rgba(15, 23, 42, 0.82);
  color: var(--color-text-light);
  border: 1.5px solid rgba(255, 255, 255, 0.25);
}

/* 시작화면 배경에 떠다니는 아이템 장식들 — .ranking-deco와 같은 패턴
   (음수 z-index로 캐릭터/제목/버튼 등 실제 콘텐츠보다 항상 뒤에 그려짐).
   캐릭터/제목/버튼이 차지하는 화면 중앙 세로 줄(대략
   x:28%~71%)은 피해서 양옆 여백 기둥에 세 개씩, 메뉴 버튼 아래 남는
   하단 띠에 나머지 세 개를 깔았다 */
.start-deco {
  position: absolute;
  z-index: -1;
  pointer-events: none;
  user-select: none;
  /* 입체감: 가까운 것(near)은 크고 그림자가 깊고 진폭이 크게, 먼 것(far)은
     작고 그림자가 얕고 진폭이 작게 — 크기만 다르면 그냥 크기가 다른
     스티커로 보이지만 그림자·움직임 폭까지 같이 달라야 앞뒤 거리로 읽힌다.
     흐림/투명도는 쓰지 않고 모두 또렷하게 둔다. 값은 아래
     깊이 그룹에서 지정 */
  filter: drop-shadow(0 var(--sy, 4px) var(--sb, 10px) rgba(0, 0, 0, var(--sa, 0.35)));
  /* 아이템마다 고유한 기울기(--tilt)를 중심 기준으로 틀어 놓고, 떠다니는
     애니메이션도 그 기울기를 기준으로 흔들린다 — 다 똑바로 서 있으면
     격자에 세워 둔 것처럼 뻣뻣해 보인다. 모션 줄이기 설정에서도 기울기는
     남도록 정적 transform도 같이 둔다 */
  transform: rotate(var(--tilt, 0deg));
  animation: start-deco-float 3.2s ease-in-out infinite;
}

@keyframes start-deco-float {
  0%, 100% { transform: translateY(0) rotate(var(--tilt, 0deg)); }
  50% { transform: translateY(var(--bob, -8%)) rotate(calc(var(--tilt, 0deg) + 4deg)); }
}

/* 깊이 그룹 — near / mid / far */
.start-deco-ice, .start-deco-ufo, .start-deco-palm, .start-deco-poop, .start-deco-trident {
  --sy: 9px; --sb: 16px; --sa: 0.45; --bob: -10%;
}
.start-deco-tp, .start-deco-rainbow, .start-deco-goldpoop {
  --sy: 4px; --sb: 10px; --sa: 0.35; --bob: -8%;
}
.start-deco-fly, .start-deco-gem {
  --sy: 2px; --sb: 5px; --sa: 0.2; --bob: -5%;
}

/* 크기·위치도 깊이에 맞춰: 가까운 건 크게 화면 가장자리에 걸쳐 잘리게,
   먼 건 작게 안쪽으로 */
.start-deco-ice      { left: -8%; top: 10%; width: 24%; --tilt: -16deg; animation-duration: 3.2s; animation-delay: 0s; }
.start-deco-fly      { left: 1%;  top: 72%; width: 13%; --tilt: 14deg;  animation-duration: 4.9s; animation-delay: -1.1s; }
.start-deco-tp       { left: -4%; top: 64%; width: 18%; --tilt: -11deg; animation-duration: 3.7s; animation-delay: -2.3s; }
.start-deco-trident  { left: -5%; top: 30%; width: 30%; --tilt: 14deg;  animation-duration: 5.2s; animation-delay: -1.4s; }
.start-deco-rainbow  { left: 78%; top: 12%; width: 16%; --tilt: 15deg;  animation-duration: 3.6s; animation-delay: -0.6s; }
.start-deco-ufo      { left: 78%; top: 68%; width: 22%; --tilt: -12deg; animation-duration: 3.3s; animation-delay: -1.8s; }
.start-deco-gem      { left: 22%; top: 57%; width: 10%; --tilt: -19deg; animation-duration: 4.7s; animation-delay: -2.6s; }
.start-deco-palm     { left: 53%; top: 42%; width: 66%; --tilt: 10deg;  animation-duration: 3.4s; animation-delay: -2s; }
/* 거대형 똥 두 마리 — 황금똥은 화면 위쪽(윗부분은 화면 밖으로 살짝 잘림,
   위쪽으로 넘치는 건 스크롤 영역이 안 늘어나서 안전), 기본똥은 아래쪽.
   아래로 삐져나가면 .overlay(overflow-y:auto)에 스크롤바가 생기므로 기울어진
   모서리까지 감안해 아래 끝을 100%보다 여유 있게 잡았다. 캐릭터/제목과는
   겹치지 않고 버튼 뒤로만 깔린다 */
.start-deco-goldpoop { left: 22%; top: 31%; width: 56%; --tilt: -7deg; animation-duration: 4.2s; animation-delay: -1.5s; } /* 화면 가운데에 떠 있는 거대 황금똥 */
.start-deco-poop     { left: 17%; top: 66%;  width: 66%; --tilt: 6deg;  animation-duration: 3.8s; animation-delay: -0.3s; }

@media (prefers-reduced-motion: reduce) {
  .start-deco {
    animation: none;
  }
}

.overlay button.corner-icon-button {
  position: absolute;
  top: 10px;
  margin-top: 0;
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.85);
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
  z-index: 5;
}

.overlay button.corner-icon-button:active {
  transform: scale(0.92);
}

/* 시작 화면 모서리 아이콘: 왼쪽 위에 스피커·물음표·트로피(왼쪽부터), 오른쪽 위에 국기.
   눈에 보이는 크기를 비슷하게 맞춘다 — 그림 3개는 42px 안에, 국기는 가로 44px(가로로 긴 그림이라) */
.start-icon-lang { right: 10px; padding: 0; }
/* 현재 언어의 국기만 보이고, 누르면 다른 언어로 바뀐다 */
.start-icon-lang img { display: block; width: 44px; height: 30px; margin: auto; border-radius: 3px; pointer-events: none; }
.start-icon-lang .f-en, html[lang="en"] .start-icon-lang .f-ko { display: none; }
html[lang="en"] .start-icon-lang .f-en { display: block; }
.start-icon-sound { left: 10px; padding: 0; }
.overlay button.start-icon-records { left: 106px; background: none; box-shadow: none; }
.start-icon-records img { display: block; width: 42px; height: 42px; object-fit: contain; margin: auto; pointer-events: none; }
.start-icon-records.has-badge::after {
  content: "";
  position: absolute;
  top: 1px;
  right: 1px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #ef4444;
  border: 2px solid #fff;
}
.overlay button.start-icon-help { left: 58px; background: none; box-shadow: none; }
.start-icon-help img { display: block; width: 42px; height: 42px; object-fit: contain; margin: auto; pointer-events: none; }
/* 언어·소리 아이콘: 이미지 자체가 둥근 링이라 흰 배경 없이 그대로 보여준다 */
.overlay button.start-icon-lang, .overlay button.start-icon-sound { background: none; box-shadow: none; }
.start-icon-sound img { display: block; width: 42px; height: 42px; object-fit: contain; margin: auto; pointer-events: none; }

/* 시작 화면 무대(물쫀득이·정령·큰 슬라임을 그리는 캔버스): 장식(.start-deco) 위, 제목·버튼 아래 */
.start-stage { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.start-room { flex: 1 1 0; min-height: 0; width: 100%; } /* 제목과 시작 버튼 사이 빈 자리(캐릭터가 서는 곳) */
/* ## 도감·랭킹 화면(배경 장식 포함) */
/* --- 도감(guide) screen --- */
.guide-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 4px;
}

.overlay button.guide-tab-button {
  margin-top: 0;
  padding: 8px 18px;
  font-size: 0.9rem;
  font-weight: bold;
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--color-text-light);
  cursor: pointer;
}

.overlay button.guide-tab-button.active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}

.guide-list {
  list-style: none;
  padding: 0;
  margin: 0;
  width: 100%;
  max-width: 320px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
}

.guide-group-title {
  margin: 8px 0 -2px;
  padding-left: 4px;
  font-size: 0.8rem;
  font-weight: bold;
  letter-spacing: 0.04em;
  color: #1E3FA0; /* 도감 배경이 밝아서 흰 글씨는 안 보인다 — 게임 파란색에 흰 테두리 */
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.9), 0 0 4px rgba(255, 255, 255, 0.8);
}
.guide-group-title:first-child {
  margin-top: 0;
}

.guide-entry {
  display: flex;
  align-items: center;
  gap: 12px;
  background: rgba(255, 255, 255, 0.94);
  border-radius: 10px;
  padding: 8px 12px;
  text-align: left;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

.guide-thumb {
  width: 44px;
  height: 44px;
  object-fit: contain;
  flex: none;
}

/* 특정 아이콘만 그림 자체가 작게 그려져 있어서 유독 작아 보일 때 쓰는
   보정용 클래스 (예: 여래신장/무지개 여래신장). width/height로 박스 자체를
   키우면 그 줄만 .guide-entry 높이가 늘어나서 다른 줄과 줄 간격이
   어긋나므로, 반드시 transform: scale로 그림만 시각적으로 확대한다 — 박스
   크기(44px)는 그대로 유지되어 줄 간격에 영향을 주지 않는다. 앞으로 도감에
   항목/아이콘이 추가될 때도 이 규칙만 지키면 줄 간격이 자동으로 맞는다. */
.guide-thumb-lg {
  transform: scale(1.18);
}
/* 삼지창(가늘고 긴 그림)은 44px 정사각 칸에 contain으로 넣으면 한 축이 많이 남아
   작아 보여서, 기본 크기보다 조금 더 키운다 */
.guide-thumb-xl {
  transform: scale(1.3);
}
/* 황금 여래신장은 그림이 작아 보여 더 크게(10/16 사용자 요청). 칸(약 99px)보다 작게 확대한다 */
.guide-thumb-xxl {
  transform: scale(1.7);
}

.guide-entry-text {
  min-width: 0;
}

.guide-entry-name {
  font-weight: bold;
  font-size: 0.92rem;
  margin-bottom: 2px;
  color: #1e293b;
}

.guide-entry-desc {
  font-size: 0.8rem;
  color: #475569;
  line-height: 1.4;
}

/* --- ranking screen: same bathroom illustration as the rest of the game,
   with a few of the item icons floating around it as decoration. the
   background sits on a ::before instead of directly on the element so it
   can be blurred (for readability) without blurring the real content
   painted on top of it --- */
.ranking-art-overlay {
  background: var(--color-bg);
  /* establishes a stacking context so the ::before's negative z-index
     below only buries it under this element's own children, rather than
     under every other position:static sibling (title, hint text, etc.)
     in the wider document */
  z-index: 0;
}

.ranking-art-overlay::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  /* 미리 흐리게 구운 그림(실시간 filter: blur는 처음 만들 때 GPU가 100ms쯤 멈췄다) */
  background: url('assets/bg/clean-bathroom-blur.webp') center / cover no-repeat;
}

.ranking-deco {
  position: absolute;
  /* positioned elements paint above static in-flow content by default even
     without an explicit z-index, which is what let these float on top of
     the title/buttons/list text; pinning them negative keeps them behind
     every real (static) content element no matter how the layout shifts */
  z-index: -1;
  pointer-events: none;
  user-select: none;
  filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.35));
  animation: ranking-deco-float 3.2s ease-in-out infinite;
}

/* a different duration/delay per item so they drift out of sync with each
   other instead of bobbing up and down together like one rigid grid */
.ranking-deco-rainbow { left: 4%;  top: 3%;  width: 15%; animation-duration: 3.4s; animation-delay: 0s; }
.ranking-deco-tp      { left: -3%; top: 24%; width: 16%; animation-duration: 3s;   animation-delay: -1.4s; }
.ranking-deco-ice     { left: 79%; top: 40%; width: 15%; animation-duration: 3.7s; animation-delay: -2.1s; }
.ranking-deco-gem     { left: 2%;  top: 68%; width: 17%; animation-duration: 3.3s; animation-delay: -0.9s; }
.ranking-deco-palm    { left: 72%; top: 68%; width: 30%; animation-duration: 4s;   animation-delay: -1.7s; } /* 게임오버 화면: 물쫀득이 대신 무지개 여래신장 */
.ranking-deco-flame   { left: 81%; top: 3%;  width: 15%; animation-duration: 3.8s; animation-delay: -1.1s; } /* 게임오버 화면 오른쪽 위 빈자리: 불꽃 물방울(왼쪽 위 무지개 물방울과 좌우 대칭) */
.ranking-deco-fire    { left: 79%; top: 4%;  width: 13%; animation-duration: 3.6s; animation-delay: -0.4s; } /* 랭킹 화면 오른쪽 위: 불알(왼쪽 위 무지개 물방울과 짝) */

@keyframes ranking-deco-float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-8%) rotate(3deg); }
}


/* the neon glow alone reads fine on the dark overlays it was designed for,
   but needs a dark outline to stay legible over the lighter, busier
   bathroom art these three screens show behind it */
#start-screen .neon-sign-text,
#ranking-screen .neon-sign-text,
#gameover-screen .neon-sign-text {
  -webkit-text-stroke: 1.5px var(--color-outline-dark);
  paint-order: stroke fill;
}

#ranking-screen .hint-text,
#gameover-screen .hint-text {
  color: #1e293b;
  font-weight: 600;
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.6);
  padding: 0 8px;
}

/* ## 게임오버·부활 카운트다운 */
/* --- 부활 카운트다운: 9→0으로 내려가는 동안 캐릭터 표정(go1/go2)과 큰
   숫자를 나란히 보여준다. 숫자는 GAME OVER 제목과 같은 네온 글로우 +
   어두운 외곽선(가독성용) 처리를 그대로 가져와 톤을 맞춘다 --- */
.revive-countdown-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  position: relative;
  left: 16px;
}

/* go1 상태는 몸통(go1_body, 머리 위 물방울 5개를 지운 버전)과 그 물방울들
   (go1_drops)을 같은 캔버스 크기로 겹쳐서, 물방울 레이어만 좌우 반전시킬
   수 있게 한다 — 둘 다 원본과 동일한 1386x1086 캔버스라 inset:0으로
   그대로 포개면 픽셀이 맞아떨어진다 */
.revive-countdown-img-wrap {
  position: relative;
  width: calc(75 * var(--ui-vw, 1vw));
  max-width: 288px;
  aspect-ratio: 1386 / 1086;
  /* 숫자 글꼴 자체의 오른쪽 여백(글자 베어링) 때문에 gap:0만으로는 여전히
     눈에 띄게 떨어져 보여서, 그만큼 더 끌어당긴다 */
  margin-left: -64px;
}

/* 00 도달(.blackout) — 제목/숫자는 계속 밝게 보여야 하니 그대로 두고,
   캐릭터(몸통+머리 위 물방울)만 한층 더 어둡게. 숫자는 이 캐릭터
   래퍼(.revive-countdown-img-wrap) 밖의 형제 요소(.revive-countdown-number)라
   같이 어두워지지 않는다. startReviveCountdown()의 tick()이 카운트다운이
   00에 닿는 순간 이 클래스를 붙인다 */
/* 게임오버 캐릭터: 눈물 흘리는 젤리 영상 3종(카운트다운 wait / 부활 live / 시간
   종료 die)을 스프라이트 시트로 재생한다(game.js의 REVIVE_ANIMS). 시트마다
   칸 크기가 달라도 폭(래퍼의 105.2%)과 윗선(top)이 같아서 상태가 바뀌어도
   몸통 위치·크기가 그대로다 — 칸 높이는 시트별 aspect-ratio를 JS가 넣는다.
   재생 중에는 옛 물방울 캐릭터(go1/go2/go3 이미지)를 숨긴다 */
.revive-wait {
  display: none;
  position: absolute;
  left: -0.3%;
  top: 1.9%;
  width: 105.2%;
  aspect-ratio: 394 / 288;
  background: no-repeat;
  filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.35));
  transition: filter 0.4s ease;
  pointer-events: none;
}
.revive-countdown-img-wrap.waiting .revive-wait { display: block; }

.revive-countdown-img-wrap.character-dim .revive-wait {
  filter: drop-shadow(0 4px 10px rgba(0, 0, 0, 0.35)) brightness(0.4) saturate(0.8);
}

.revive-countdown-number {
  /* 캐릭터와의 간격을 좁힌 뒤로 둘이 겹치는 부분이 생겨서, 뒤에 있는
     .revive-countdown-img-wrap(position: relative라 자연스럽게 쌓임 순서상
     위에 옴)에 숫자 끝자리가 가려지지 않도록 명시적으로 앞에 오게 한다 */
  position: relative;
  z-index: 1;
  /* 글자 크기를 rem이 아니라 px로 둔다: 폰의 글꼴 크기 설정이 크면 rem이 같이 커져 숫자가 칸을 넘치고, 두 자리 숫자가 위아래 두 줄로 쌓였다(2026-10-26 사용자 폰 화면) */
  font-size: 104px;
  /* 두 자리가 한 줄에 붙어 있도록: 칸이 모자라면 숫자를 줄이는 대신 옆의 캐릭터 그림이 줄어든다 */
  white-space: nowrap;
  flex: none;
  font-weight: bold;
  line-height: 1;
  color: var(--glow-text);
  -webkit-text-stroke: 1.5px var(--color-outline-dark);
  paint-order: stroke fill;
  text-shadow:
    0 0 4px var(--glow-inner),
    0 0 11px var(--color-accent),
    0 0 19px var(--color-accent),
    0 0 40px var(--glow-outer);
}

/* 영어 글꼴(Fredoka)은 숫자 폭이 제각각(1이 좁다)이라 숫자가 바뀔 때 줄 전체가 좌우로 밀렸다 — 한 자리씩 같은 폭 칸에 가운데 맞춰 넣는다 */
.revive-countdown-number span {
  display: inline-block;
  width: 0.6em;
  text-align: center;
}

.revive-countdown-number.go {
  color: #dcfce7;
  text-shadow:
    0 0 4px #bbf7d0,
    0 0 11px #22c55e,
    0 0 19px #22c55e,
    0 0 40px #15803d;
}

/* --- 부활 카운트다운 스포트라이트: 화면 맨 위에 작은 조명 기구 하나가
   매달려 있고(jm.png, #gameover-spotlight-lamp), 그 아래로 빛줄기가
   화면 바닥까지 은은하게 내려오는(#gameover-spotlight-beam) 분위기
   레이어. 기구는 이미지 그대로 쓰지만, 빛줄기는 이미지를 늘려 쓰는 대신
   순수 CSS 사다리꼴(clip-path polygon) + 세로 그라데이션으로 직접
   그렸다 — 원본 이미지의 빛줄기 부분은 세로로 짧아서, 화면 바닥까지
   닿게 하려면 이미지를 억지로 늘려야 했는데 그러면 결이 뭉개져
   부자연스러웠다. 순수 그라데이션은 높이에 구애받지 않고 자연스럽게
   바닥까지 뻗을 수 있고, 밝기/불투명도도 자유롭게 조절된다.
   mix-blend-mode:screen은 기본적으로 스택 순서와 무관하게 그 아래 전체
   (캐릭터/제목까지)와 섞여버려서, 처음엔 조명 밝은 부분에 캐릭터와
   "GAME OVER", 카운트다운 숫자가 하얗게 묻혀 안 보이는 문제가 있었다 —
   그래서 이 조명 레이어는 어디까지나 배경을 위한 "분위기"일 뿐, 정작
   읽혀야 하는 제목/캐릭터/숫자는 아래에서 h1.neon-sign-text와
   #revive-countdown-row에 이 레이어보다 높은 z-index를 줘서 조명 밝기와
   무관하게 항상 원래 선명도 그대로 보이게 분리했다.
   startReviveCountdown()이 .active를 붙여 켜고, 카운트다운이 00에 닿으면
   .blackout으로 바뀌어 beam(광선)만 사라지고 lamp(기구)는 그대로
   남으며, 어두운 막은 오히려 살짝 더 짙어진다 */
#gameover-spotlight {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: 0;
  background: rgba(6, 8, 20, 0.42);
  transition: opacity 0.7s ease, background 0.9s ease;
}

#gameover-spotlight.active {
  opacity: 1;
}

/* 조명 꺼짐: 광선은 사라지고(아래 #gameover-spotlight-beam 규칙) 기구는
   남은 채로, 어두운 막이 조금 더 짙어진다 — 그래도 완전 암전은 아니고
   배경만 조금 더 어두운 정도 (제목/캐릭터/숫자는 이 레이어보다 z-index가
   높아 영향 없음) */
#gameover-spotlight.blackout {
  background: rgba(6, 8, 20, 0.42);
}

/* 조명 기구(끈+물방울 유리 갓) — 화면 맨 위에 작게. 끈 윗부분은 화면
   밖으로 살짝 밀어 올리고(top 음수), 원본 이미지 위쪽 68.5%(갓+소켓
   테두리, 폭 프로파일로 확인한 경계)만 clip-path로 남겨서 빛줄기 부분은
   여기 포함되지 않는다. 조명이 꺼져도(.blackout) 계속 보인다 */
#gameover-spotlight-lamp {
  position: absolute;
  top: -6%;
  left: 50%;
  width: 60%;
  max-width: 220px;
  transform: translateX(-50%);
  clip-path: inset(0 0 31.5% 0);
  transition: filter 0.4s ease;
}

/* 00 도달 — 캐릭터(.character-dim)와 같은 정도로 조명 기구도 어둡게 */
#gameover-spotlight.blackout #gameover-spotlight-lamp {
  filter: brightness(0.3) saturate(0.7);
}

/* 빛줄기 — 조명 기구 바로 아래부터 화면 바닥까지 닿는 사다리꼴을
   clip-path로 자르고, 그 안을 위(밝음)에서 아래(옅음)로 흐려지는 노란
   그라데이션으로 채운다. 끝까지 완전히 0으로 떨어뜨리지 않고 아주
   옅게 남겨서 "바닥까지 빛이 닿는" 느낌을 유지한다. 전체 밝기는 한 단계
   올렸고, 그 안에서도 기구 바로 아래(그라데이션 시작점)는 가장 밝게
   잡아 "빛이 비추는 자리"가 확실히 도드라지게 했다.
   사다리꼴의 위쪽 변(광원) 폭은 이 요소 자신의 박스(420px, 화면
   너비보다 훨씬 넓다) 기준 %라서, 조명 갓의 실제 렌더링 폭(168px)과
   맞아떨어지는 지점을 따로 계산해야 한다 — 갓의 벌어진 아래쪽 테두리가
   갓 이미지 폭의 약 45.9%였으므로(이전 폭 프로파일 분석), 168px *
   0.459 ≈ 77px가 실제 테두리 폭. 이걸 이 요소의 420px 박스에 대한
   비율로 바꾸면 약 18%(중심 기준 좌우 9%)가 되어 41%~59%로 잡았다 —
   30%~70%(40% 폭)로 뒀을 때는 갓 테두리보다 훨씬 넓게 시작해서 조명과
   광원이 어긋나 보였다 */
#gameover-spotlight-beam {
  position: absolute;
  /* 갓(lamp)은 width:60%+max-width:220px라 화면 폭에 따라 커지다가
     어느 지점부터 멈추는데, 여기 top은 컨테이너 "높이"의 %라서 고정값
     하나로는 화면 폭마다 갓 테두리와 어긋난다 — 그래서 고정값은 JS가
     아직 안 붙었을 때만 쓰이는 대략치일 뿐이고, 실제 값은
     game.js의 alignSpotlightBeam()이 갓의 실측 위치를 보고 매번
     인라인 style로 덮어쓴다 */
  top: 18%;
  left: 50%;
  width: 150%;
  max-width: 560px;
  height: 84%;
  transform: translateX(-50%);
  /* 윗변(41%~59%)은 JS가 붙기 전 대략치 — 실제 폭은 alignSpotlightBeam()이
     갓 입구의 좌우 끝에 맞춰 인라인 clip-path로 덮어쓴다 */
  clip-path: polygon(41% 0%, 59% 0%, 93% 100%, 7% 100%);
  background: linear-gradient(
    to bottom,
    rgba(255, 214, 110, 1) 0%,
    rgba(255, 214, 110, 0.72) 20%,
    rgba(255, 214, 110, 0.46) 45%,
    rgba(255, 214, 110, 0.3) 70%,
    rgba(255, 214, 110, 0.18) 100%
  );
  /* mix-blend-mode: screen은 처음 만들 때 화면 전체를 따로 그려 합성하느라 게임오버가 처음 뜰 때 40ms쯤 더 멈췄다 — 일반 투명 합성으로 둔다 */
  opacity: 0.56;
  transition: opacity 0.5s ease;
}

/* 00 도달 — 조명 자체는 남지만 광선만 꺼진다 */
#gameover-spotlight.blackout #gameover-spotlight-beam {
  opacity: 0;
}

/* 스포트라이트 레이어(z-index:2)보다 위에 고정 — 조명이 꺼지든 켜지든
   점수판과 버튼 줄은 항상 밝고 눌리는 상태로 남는다 */
#gameover-screen .gameover-score-row,
#gameover-screen .menu-row,
#gameover-screen #continue-ad-button,
#gameover-screen #gameover-register-form,
#gameover-screen #gameover-register-error {
  position: relative;
  z-index: 3;
}
#gameover-screen #gameover-register-error {
  margin: 6px 0 0;
  padding: 3px 10px;
  border-radius: 8px;
  background: rgba(15, 23, 42, 0.78);
  text-align: center;
}

/* 제목/캐릭터/카운트다운 숫자도 마찬가지로 스포트라이트 레이어보다 위에
   고정 — 조명은 어디까지나 배경 분위기일 뿐, 정작 읽혀야 하는 이
   셋(GAME OVER, 우는 캐릭터, 숫자)은 조명이 켜져 있든 꺼져 있든 항상
   원래 밝기/선명도 그대로 보인다 */
/* 제목(h1)은 z-index를 주면 자기만의 쌓임 맥락이 생겨 리본 꼬리(::before/::after, z-index:-1)가 판 앞으로 나온다.
   그래서 제목은 z-index 없이 두고, 대신 스포트라이트 레이어를 배경 그림 바로 위(-1, 제목보다 앞서 그려짐)로 보내 제목·캐릭터·숫자가 항상 위에 보이게 한다 */
#gameover-screen h1.neon-sign-text {
  position: relative;
}
#gameover-screen #revive-countdown-row {
  position: relative;
  z-index: 3;
}

/* --- 게임 오버: 랭킹 화면과 같은 목욕탕 아트 배경 위에, 점수 정보를
   랭킹 리스트와 같은 프로스티드 카드에 담아 가독성을 맞춘다 --- */
.gameover-score-row {
  display: flex;
  align-items: stretch;
  gap: 8px;
}

.gameover-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 8px 18px;
  background: rgba(255, 255, 255, 0.55);
  border: 1.5px solid rgba(250, 204, 21, 0.6);
  border-radius: 16px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.25);
  backdrop-filter: blur(3px);
}

/* 점수판 옆에 붙는 등록 버튼 — 다른 오버레이 버튼과 같은 노란 필 스타일을
   쓰되, 가로 폭은 좁게 잡고 세로로 짧은 라벨을 쌓아서 점수판과 높이가
   맞도록 함 */
.overlay button.register-score-button {
  flex: none;
  margin-top: 0;
  padding: 6px 14px;
  font-size: 0.75rem;
  line-height: 1.35;
  white-space: nowrap;
}

.gameover-card .final-score {
  color: var(--color-outline-dark);
  font-size: 1rem;
}

.gameover-card .high-score {
  color: var(--color-outline-dark);
  font-size: 0.8rem;
}

.gameover-card .new-best {
  font-size: 0.8rem;
}

/* 광고보고 부활하기를 누른 뒤(전환 영상·효과음·광고)에는 게임오버 화면의 다른 버튼이 눌리지 않게 한다(lockGameoverButtons) */
#gameover-screen.reviving { pointer-events: none; }
/* ## 랭킹 목록, 계정 영역 */
/* --- ranking list: a frosted card sitting on top of the bathroom art,
   each row its own rounded pill so it reads as a physical stack of tiles
   rather than plain rows on a dark overlay --- */
#ranking-list {
  list-style: none;
  padding: 14px;
  margin: 0;
  width: 100%;
  max-width: 300px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: rgba(255, 255, 255, 0.55);
  border: 1.5px solid rgba(250, 204, 21, 0.6);
  border-radius: 20px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.25);
  backdrop-filter: blur(3px);
}

#ranking-list li {
  display: flex;
  justify-content: space-between;
  background: rgba(255, 255, 255, 0.85);
  padding: 10px 16px;
  border-radius: 999px;
  font-size: 0.95rem;
  font-weight: bold;
  color: var(--color-outline-dark);
  box-shadow: 0 2px 4px rgba(15, 23, 42, 0.12);
}

#ranking-list li.empty {
  justify-content: center;
  color: #64748b;
  background: rgba(255, 255, 255, 0.6);
  box-shadow: none;
}

/* 순위별 배경색 — 1위 빨강, 2위 주황, 3위 노랑, 4위 초록, 5위 파랑 */
#ranking-list li.rank-1 { background: #fca5a5; }
#ranking-list li.rank-2 { background: #fdba74; }
#ranking-list li.rank-3 { background: #fde047; }
#ranking-list li.rank-4 { background: #86efac; }
#ranking-list li.rank-5 { background: #93c5fd; }

/* 내 기록은 순위 색보다 우선해서 금색 강조를 유지한다 (소스 순서상 뒤에 옴) */
#ranking-list li.own {
  background: #fef3c7;
  border: 2px solid var(--color-accent);
  box-shadow: 0 0 10px rgba(250, 204, 21, 0.6);
}
/* 내 기록이 1위여도 배경은 빨강 (금색 테두리·glow는 그대로) */
#ranking-list li.own.rank-1 { background: #fca5a5; }

#ranking-screen button.back-button {
  background: #93c5fd;
  border-color: #60a5fa;
}

.rename-form {
  display: flex;
  gap: 6px;
  align-items: center;
  width: 100%;
}

.rename-form input {
  flex: 1 1 auto;
  min-width: 0;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1.5px solid rgba(255, 255, 255, 0.4);
  background: rgba(255, 255, 255, 0.12);
  color: var(--color-text-light);
  font-size: 0.9rem;
}

.rename-form button {
  flex: 0 0 auto;
  white-space: nowrap;
}

.rename-form input::placeholder {
  color: rgba(248, 250, 252, 0.55);
}

/* "랭킹" 제목과 "뒤로" 버튼은 도감 화면과 같은 글자체(네온 글로우, 깜빡임
   없이 고정)로 통일 — 밝은 배경 위라 읽히도록 앞쪽의
   #ranking-screen .neon-sign-text 어두운 외곽선(text-stroke)도 그대로 쓴다 */
#ranking-screen h1.neon-sign-text,
#ranking-screen button.back-button.neon-sign-text {
  animation: none;
}

/* the 도감 heading and its 뒤로 button keep the shared neon-sign-text
   color/glow, just held static instead of flickering */
#guide-screen h1.neon-sign-text,
#guide-screen button.back-button.neon-sign-text {
  animation: none;
}

#ranking-screen .rename-form input,
#gameover-screen .rename-form input {
  background: #000;
  color: #fff;
  border-color: #000;
}

#ranking-screen .rename-form input::placeholder,
#gameover-screen .rename-form input::placeholder {
  color: rgba(255, 255, 255, 0.55);
}

#ranking-screen .rename-form button,
#gameover-screen .rename-form button {
  background: #000;
  color: #fff;
  border-color: #000;
}

.rename-error {
  margin: 0;
  color: #f87171;
  font-size: 0.82rem;
}

/* --- settings toggles --- */
.toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 220px;
  background: rgba(255, 255, 255, 0.08);
  padding: 10px 16px;
  border-radius: 10px;
  font-size: 0.95rem;
  cursor: pointer;
}

.toggle-row input {
  width: 20px;
  height: 20px;
}


/* 이름은 직접 쓰지 않고 🎲로 뽑는다: 입력칸은 읽기 전용(키보드가 뜨지 않음)이고, 한 줄에 이름, 그 아래 버튼 줄 */
.rename-form { flex-wrap: wrap; }
.rename-form input[readonly] {
  flex: 1 1 100%;
  text-align: center;
  cursor: default;
  caret-color: transparent;
  font-size: 1.05rem;
}
.rename-form input[readonly] ~ button { flex: 1 1 0; min-width: 0; }

/* 게임오버 이름 폼은 아래 버튼 줄 자리를 대신하므로 낮게 만든다(화면 아래가 잘리지 않게) */
#gameover-screen #gameover-register-form { gap: 4px; }
#gameover-screen #gameover-register-form input[readonly] { padding: 5px 8px; font-size: 1rem; }
#gameover-screen #gameover-register-form button { padding-top: 6px; padding-bottom: 6px; font-size: 1rem; margin-top: 0; }

/* 🎲 버튼: 글자(이모지) 대신 버튼 높이를 꽉 채우는 주사위 그림 */
.dice-icon { display: block; height: 1.7rem; width: auto; margin: 0 auto; }
#gameover-screen #gameover-register-form #gameover-reroll-button { padding-top: 2px; padding-bottom: 2px; align-self: stretch; display: flex; align-items: center; justify-content: center; }
/* ## 광고 오버레이, 작은 화면 보정 */
/* --- mock ad overlays --- */
.ad-overlay {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #000;
  animation: overlay-in 200ms var(--ease-out);
}

.ad-box {
  text-align: center;
  color: var(--color-text-light);
}

.ad-label {
  font-size: 1rem;
  color: #94a3b8;
  margin-bottom: 10px;
}
/* the two upper-middle items sit between the corner icons and the box,
   the two lower ones flank the character below it — same spread the
   ranking screen uses, just re-fitted around this screen's own box/button
   positions so nothing touches */


/* same dark outline the ranking screen's title uses, for legibility on
   the lighter background */

/* 건너뛰기/등록 버튼: 이름 입력이라는 이 화면의 핵심 행동을 더 귀엽고
   누르고 싶게 — 두꺼운 하단 테두리로 말랑한 젤리 버튼처럼 보이게 하고,
   누르면 그 테두리만큼 눌리는 촉각 피드백을 준다 */

.neon-sign-text {
  margin: 0 0 4px;
  white-space: nowrap;
  font-family: 'Noto Sans KR', "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  font-size: clamp(0.8rem, calc(5.5 * var(--ui-vw, 1vw)), 1.15rem);
  font-weight: bold;
  letter-spacing: 0.5px;
  color: var(--glow-text);
  animation: neon-flicker 1.8s infinite;
}

@keyframes neon-flicker {
  0%, 3%, 6%, 9%, 12%, 74%, 77%, 100% {
    color: var(--glow-text);
    text-shadow:
      0 0 4px var(--glow-inner),
      0 0 11px var(--color-accent),
      0 0 19px var(--color-accent),
      0 0 40px var(--glow-outer),
      0 0 70px var(--glow-outer);
  }
  4%, 8%, 75%, 76% {
    color: #a16207;
    text-shadow: none;
  }
}

/* 다른 애니메이션(마스코트 bob, 도감/랭킹 장식 float 등)은 전부 감속 모드
   처리가 돼있는데 네온 깜빡임만 빠져있었다 — 1.8초마다 밝기가 훅 꺼졌다
   켜지는 실질적 스트로브라 광과민성 문제가 될 수 있어, 켜진 상태로 고정한다 */
@media (prefers-reduced-motion: reduce) {
  .neon-sign-text {
    animation: none;
    color: var(--glow-text);
    text-shadow:
      0 0 4px var(--glow-inner),
      0 0 11px var(--color-accent),
      0 0 19px var(--color-accent),
      0 0 40px var(--glow-outer),
      0 0 70px var(--glow-outer);
  }
}

.ad-countdown {
  font-size: 3rem;
  font-weight: bold;
  color: var(--color-accent);
}

/* 키보드/게임패드 탐색 시 어느 버튼이 선택됐는지 보이도록 — 마우스/터치
   클릭에서는 뜨지 않고(:focus-visible), 게임 내 모든 버튼(오버레이,
   모바일 십자패드/점프, 일시정지 아이콘)에 공통으로 적용 */
button:focus-visible {
  outline: 3px solid #38bdf8;
  outline-offset: 2px;
}

/* kept last so it always wins over any single-class display rule above,
   regardless of source order (e.g. .overlay, .ad-overlay, .icon-button) */
.hidden {
  display: none !important;
}

/* --- 랭킹 화면 컴팩트 레이아웃 — 9:16 레터박스 안에서 폰이 작을수록
   화면 높이도 줄어든다(오버레이 높이 ≈ 폭×16/9 − 하단 컨트롤 바 89px,
   360px 폭 폰이면 약 566px). 기존 여백/글자 크기로는 제목·안내문·목록·
   뒤로 버튼을 합치면 600px를 넘어 제목과 뒤로 버튼이 잘렸다. 큰 화면에서도
   답답하지 않을 정도로만 각 요소를 줄여 작은 폰에서도 한 화면에 다 보이게 함 --- */
#ranking-screen {
  padding: 12px 20px;
  gap: 8px;
}

#ranking-screen h1.neon-sign-text {
  margin: 0;
}

#ranking-screen .hint-text {
  font-size: 0.78rem;
  line-height: 1.35;
  padding: 0 4px;
}

#ranking-screen #ranking-list {
  padding: 10px;
  gap: 6px;
}

#ranking-screen #ranking-list li {
  padding: 7px 14px;
  font-size: 0.9rem;
}

#ranking-screen button.back-button {
  margin-top: 2px;
  padding: 10px 28px;
}

/* 점수 등록 버튼 — 주변 노란 버튼들 사이에서 눈에 띄도록 초록색으로 바꾸고
   테두리에서 빛이 번져 나오게 한다 */
.overlay button#register-score-button {
  background: linear-gradient(#4ade80, #16a34a);
  color: #fff;
  text-shadow: 0 1px 0 rgba(20, 83, 45, 0.6);
  border-color: #166534;
  box-shadow: 0 4px 0 #166534, 0 0 0 0 rgba(74, 222, 128, 0.7);
  animation: register-glow 1.6s ease-out infinite;
}
.overlay button#register-score-button:active {
  animation: none;
  box-shadow: 0 0 0 #166534;
}
@keyframes register-glow {
  0%   { box-shadow: 0 4px 0 #166534, 0 0 0 0 rgba(74, 222, 128, 0.75); }
  70%  { box-shadow: 0 4px 0 #166534, 0 0 0 12px rgba(74, 222, 128, 0); }
  100% { box-shadow: 0 4px 0 #166534, 0 0 0 0 rgba(74, 222, 128, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .overlay button#register-score-button { animation: none; box-shadow: 0 4px 0 #166534, 0 0 10px rgba(74, 222, 128, 0.8); }
}

/* --- 게임오버 화면: 스크롤 없이 어떤 스마트폰/태블릿 높이에서도 한 화면에
   다 들어오도록, 캐릭터 크기와 여백/버튼 크기를 #play-area 높이(cqh)에
   비례해서 줄인다 (.overlay 기본은 overflow-y:auto라 넘치면 스크롤이 생겼다) --- */
#gameover-screen {
  overflow: hidden;
  padding: clamp(8px, 3cqh, 24px) 16px;
  gap: clamp(3px, 1.4cqh, 12px);
}
#gameover-screen h1.neon-sign-text {
  margin: 0;
  font-size: clamp(1.3rem, 5.6cqh, 2rem);
}
/* 캐릭터를 뺀 나머지(제목+부활 버튼+점수 줄+아래 버튼 줄+간격+여백) 높이가 약 335px이다. 버튼이 커졌는데 이 값이 옛 315px이라
   낮은 화면에서 맨 아래 버튼이 잘렸다 — 값을 고칠 때는 낮은 화면(높이 460~530px)에서 맨 아래 버튼이 보이는지 확인한다 */
#gameover-screen .revive-countdown-img-wrap {
  width: clamp(80px, min(75cqw, (100cqh - 350px) * 1.276), 288px);
  margin-left: calc(clamp(80px, min(75cqw, (100cqh - 350px) * 1.276), 288px) * -0.22);
}
#gameover-screen .revive-countdown-number {
  font-size: clamp(48px, 15cqh, 104px); /* rem 대신 px — 폰 글꼴 크기 설정에 따라 커지지 않게(30-gameover-revive.css 참고) */
}
@container (max-height: 560px) {
  #gameover-screen button { padding-top: 8px; padding-bottom: 8px; font-size: 1rem; margin-top: 2px; }
  #gameover-screen .menu-row { margin-top: 2px; }
  #gameover-screen .gameover-card { padding: 4px 14px; }
  #gameover-screen .register-score-button { padding: 4px 12px; }
}

/* 점수 등록 버튼 — 아케이드 푸시 버튼 모양: 동그란 볼록 돔 + 금속 테두리(베젤) +
   아래로 두툼한 몸통. 누르면 몸통만큼 아래로 눌린다. 빛은 베젤 바깥으로 퍼진다 */
.gameover-score-row { gap: 12px; align-items: center; padding: 10px 0 15px; /* 버튼 테두리(위 6px/아래 11px)가 위아래 버튼을 침범하지 않게 */ }
.overlay button#register-score-button {
  width: 68px;
  height: 68px;
  margin-top: -4px; /* 아래로 두툼한 몸통(+11px) 때문에 겉보기 중심이 내려가는 것을 보정 */
  padding: 0;
  border: none;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 28%, #fecaca 0%, #f87171 30%, #dc2626 68%, #991b1b 100%);
  box-shadow:
    inset 0 -7px 10px rgba(0, 0, 0, 0.28),
    inset 0 5px 8px rgba(255, 255, 255, 0.5),
    0 0 0 4px #cbd5e1,
    0 0 0 6px #64748b,
    0 7px 0 4px #475569,
    0 0 12px 5px rgba(255, 30, 30, 0.8);
  animation: register-glow 1.8s ease-in-out infinite;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: 0.88rem;
  line-height: 1.15;
  text-shadow: 0 1px 0 rgba(127, 29, 29, 0.7);
}
/* 버튼 안: "점수 등록" 글자가 한가운데에 크게 들어간다 */
.overlay button#register-score-button { position: relative; overflow: hidden; }
#register-score-button .reg-text {
  position: relative;
  font-size: 1.22rem;
  font-weight: 900;
  line-height: 1;
  color: #fff;
  -webkit-text-stroke: 2.4px #7f1d1d;
  paint-order: stroke fill;
  text-shadow: 0 2px 0 rgba(127, 29, 29, 0.85);
  text-align: center;
  transform: translate(0.5px, -2px); /* 한글 글자 몸통이 줄 상자보다 약간 아래라, 둥근 돔 한가운데로 올려 맞춘다 */
}
html[lang="en"] #register-score-button .reg-text { font-size: 0.98rem; }
.overlay button#register-score-button:active {
  animation: none;
  transform: translateY(5px);
  box-shadow:
    inset 0 -4px 8px rgba(0, 0, 0, 0.3),
    inset 0 3px 6px rgba(255, 255, 255, 0.4),
    0 0 0 4px #cbd5e1,
    0 0 0 6px #64748b,
    0 2px 0 4px #475569;
}
@keyframes register-glow {
  0%, 100% { box-shadow: inset 0 -7px 10px rgba(0,0,0,0.28), inset 0 5px 8px rgba(255,255,255,0.5), 0 0 0 4px #cbd5e1, 0 0 0 6px #64748b, 0 7px 0 4px #475569, 0 0 4px 1px rgba(255, 30, 30, 0.06); }
  50%      { box-shadow: inset 0 -7px 10px rgba(0,0,0,0.28), inset 0 5px 8px rgba(255,255,255,0.5), 0 0 0 4px #cbd5e1, 0 0 0 6px #64748b, 0 7px 0 4px #475569, 0 0 20px 8px rgba(255, 20, 20, 1); }
}
@media (prefers-reduced-motion: reduce) {
  .overlay button#register-score-button { animation: none; }
}

/* 부활 진행 중에는 아래 버튼을 못 누르게 잠근다: 흐리게 보이고 눌려도 반응하지 않는다(점수 등록 둥근 버튼은 배경이 따로라 따로 지정) */
#gameover-screen #restart-button:disabled, #gameover-screen #gameover-menu-button:disabled, #gameover-screen #register-score-button:disabled {
  opacity: 0.45; filter: grayscale(0.7); pointer-events: none; animation: none;
}
/* ## 시작 화면 제목, 터치 방향 버튼 */
/* --- 시작 화면 타이틀 로고(Poop Dodge): 등장 때 통통 튀며 커졌다가,
   이후 천천히 떠다니고 따뜻한 빛이 숨 쉬듯 맥동한다 --- */
#start-screen h1.start-title {
  margin: 26px 0 -22px;
  position: relative;
  top: clamp(8px, 2.2cqh, 20px); /* 제목을 조금 아래로(10/16) — 아래 요소는 그대로 두려고 margin 대신 top으로 */
  z-index: 1;
  line-height: 0;
  flex: none;
  width: clamp(150px, min(90cqw, 29cqh * 1.4), 290px);
  animation: title-pop 0.9s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
#start-screen h1.start-title img {
  display: block;
  width: 100%;
  height: auto;
  pointer-events: none;
  user-select: none;
  -webkit-user-drag: none;
  animation: title-float 3.4s ease-in-out 0.9s infinite, title-glow 2.4s ease-in-out 0.9s infinite;
}
/* 언어별 로고: html[lang]에 맞는 이미지만 보이고, 효과도 각자 다르다 */
#start-screen h1.start-title img.t-en { display: none; }
html[lang="en"] #start-screen h1.start-title img.t-ko { display: none; }
html[lang="en"] #start-screen h1.start-title img.t-en { display: block; }
/* 한국어: 젤리처럼 말랑하게 출렁 + 붉은/노란 빛 */
#start-screen h1.start-title img.t-ko {
  transform-origin: 50% 90%;
  animation: title-jelly 2.6s ease-in-out 0.9s infinite, title-glow 2.4s ease-in-out 0.9s infinite;
}
/* 영어: 위아래로 떠다니며 숨 쉬듯 살짝 커지고, 붉은 네온 빛이 맥동 */
#start-screen h1.start-title img.t-en {
  animation: title-float 3.4s ease-in-out 0.9s infinite, title-neon 2s ease-in-out 0.9s infinite;
}
@keyframes title-jelly {
  0%, 100% { transform: scale(1, 1); }
  25% { transform: scale(1.05, 0.95); }
  50% { transform: scale(0.97, 1.04) translateY(-4px); }
  75% { transform: scale(1.03, 0.97); }
}
@keyframes title-neon {
  0%, 100% { filter: drop-shadow(0 0 4px rgba(255, 60, 40, 0.4)) drop-shadow(0 3px 3px rgba(40, 0, 0, 0.6)); }
  50% { filter: drop-shadow(0 0 14px rgba(255, 70, 50, 0.95)) drop-shadow(0 3px 3px rgba(40, 0, 0, 0.6)); }
}
@keyframes title-pop {
  0% { opacity: 0; transform: scale(0.4) translateY(-16px); }
  100% { opacity: 1; transform: none; }
}
@keyframes title-float {
  0%, 100% { transform: translateY(0) rotate(-0.6deg); }
  50% { transform: translateY(-5px) rotate(0.6deg); }
}
@keyframes title-glow {
  0%, 100% { filter: drop-shadow(0 0 4px rgba(255, 190, 80, 0.45)) drop-shadow(0 3px 3px rgba(60, 20, 0, 0.5)); }
  50% { filter: drop-shadow(0 0 12px rgba(255, 210, 90, 0.95)) drop-shadow(0 3px 3px rgba(60, 20, 0, 0.5)); }
}
@media (prefers-reduced-motion: reduce) {
  #start-screen h1.start-title,
  #start-screen h1.start-title img,
  #start-screen h1.start-title img.t-ko,
  #start-screen h1.start-title img.t-en { animation: none; }
}

/* 조이스틱 바가 숨겨진 동안 같은 자리(89px)를 차지하는 광고 배너 */
#ad-banner {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 89px;
  background: #0f172a;
  border-top: 1px solid #334155;
  color: #64748b;
  font-size: 0.8rem;
  letter-spacing: 0.2em;
}
/* 인트로 화면에서는 광고 제외 — 높이만 유지하고 내용은 숨김 */
#game-container:has(#intro-screen:not(.hidden)) #ad-banner {
  color: transparent;
}

/* 부활 광고는 버튼 안에서 이미 카운트했으므로 오버레이의 별도 카운트 숫자는 숨긴다 */
#rewarded-ad-countdown {
  display: none;
}

/* --- 터치 방식 컨트롤: #play-area 하단에 겹치는 반투명 버튼. 화면 맨 아래에서 띄워
   놓고, 캐릭터도 그 위로 올라간다(game.js TOUCH_BOTTOM_INSET) --- */
/* 버튼은 게임 컨테이너 밖(화면 전체 기준 고정)에 있다. 게임 화면의 위치·크기는 updateTouchLayout()이
   --game-left / --game-w / --game-bottom / --side 로 알려 준다.
   - 기본(폰): 게임 화면 아래 좌우 끝에 겹쳐 보인다
   - html.tc-outside(태블릿 등 좌우 빈 공간이 넓은 터치 화면): 빈 공간 아래쪽에 큰 버튼으로 나온다 */
:root { --tc-size: calc(62px * var(--ui-s, 1)); --game-left: 0px; --game-w: 100vw; --game-bottom: 0px; --side: 0px; }
#touch-controls[hidden] { display: none; }
#touch-controls {
  position: fixed;
  inset: 0;
  pointer-events: none; /* 버튼 사이 빈 곳은 게임 화면으로 통과 */
  z-index: 2147483000; /* 방향 버튼은 어떤 화면·효과 위에도 가장 위에 보인다(2026-10-26 사용자 요청) */
}
.tc-btn {
  position: absolute;
  width: var(--tc-size);
  height: var(--tc-size);
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, 0.5);
  color: rgba(30, 41, 59, 0.8);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
  font-size: 1.3rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  text-align: center;
  pointer-events: auto;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
}
.tc-btn:active { background: rgba(255, 255, 255, 0.6); transform: scale(0.94); }
#tc-left { left: calc(var(--game-left) + 14px * var(--ui-s, 1)); bottom: calc(var(--game-bottom) + 64px * var(--ui-s, 1) + env(safe-area-inset-bottom, 0px)); }
#tc-right { left: calc(var(--game-left) + var(--game-w) - 14px * var(--ui-s, 1) - var(--tc-size)); bottom: calc(var(--game-bottom) + 64px * var(--ui-s, 1) + env(safe-area-inset-bottom, 0px)); }

/* 태블릿: 게임 화면 좌우 빈 공간 아래쪽에, 엄지가 편하게 닿는 큰 버튼 (빈 공간 폭에 맞춰 62~150px) */
html.tc-outside { --tc-size: clamp(62px, calc(var(--side) - 16px), 150px); }
html.tc-outside #tc-left,
html.tc-outside #tc-right { bottom: calc(max(28px, 7vh) + env(safe-area-inset-bottom, 0px)); font-size: calc(var(--tc-size) * 0.4); }
html.tc-outside #tc-left { left: calc((var(--side) - var(--tc-size)) / 2); }
html.tc-outside #tc-right { left: calc(var(--game-left) + var(--game-w) + (var(--side) - var(--tc-size)) / 2); }
html.tc-outside .tc-btn::before { inset: -12px; } /* 눈에 보이는 크기보다 더 넓은 터치 영역 */

/* 버튼을 정확히 누르지 않아도 되게 눈에 보이는 크기보다 넓은 터치 영역 */
.tc-btn::before {
  content: '';
  position: absolute;
  inset: -4px;
}



/* 시작 화면 맨 아래의 AI 제작 안내(누를 수 없음) — 밝은 배경에서도 읽히게 어두운 알약 위에 쓴다 */
#start-screen .ai-notice {
  position: absolute; left: 50%; bottom: 5px; transform: translateX(-50%); margin: 0; padding: 2px 10px;
  max-width: calc(100% - 16px); box-sizing: border-box; border-radius: 10px; background: rgba(8, 14, 30, 0.62);
  text-align: center; font-size: 10.5px; line-height: 1.35; font-weight: 700; white-space: nowrap;
  color: #fff; pointer-events: none;
}

/* ## 튜토리얼, 기록(출석체크·업적·통계), 설정 화면 */
/* --- 게임 방법(튜토리얼) --- */
.tutorial-overlay {
  background: rgba(15, 23, 42, 0.93);
}
.tutorial-card {
  width: min(100%, 320px);
  min-height: 250px;
  box-sizing: border-box;
  padding: 16px 16px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  background: rgba(255, 255, 255, 0.96);
  color: #1e293b;
  border-radius: 14px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}
.tutorial-card h2 {
  margin: 0;
  font-size: 1.35rem;
}
.tutorial-card p,
.tutorial-card .tut-text {
  margin: 0;
  font-size: 1rem;
  line-height: 1.5;
  word-break: keep-all;
  color: #1e293b;
}
.tutorial-card p small,
.tutorial-card .tut-text small {
  display: inline-block;
  margin-top: 4px;
  font-size: 0.82rem;
  color: #475569;
}
.tutorial-art {
  height: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.tutorial-art img {
  height: 84px;
  width: auto;
  max-width: 96px;
  object-fit: contain;
}
/* '먹기' 쪽 아이템 3개: 여백을 잘라 낸 그림이라 높이만 맞추면 된다. 눈에 보이는 크기(가로x세로의 제곱근)가 같도록 가로로 넓은 황금 티슈만 더 낮게 */
.tutorial-art img.tut-item { height: 84px; max-width: none; }
.tutorial-art img.tut-item-wide { height: 65px; }
.tutorial-art img.tut-bg {
  height: 96px;
  border-radius: 6px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
.tutorial-art .tut-arrow {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: rgba(15, 23, 42, 0.55);
  color: #fff;
  font-size: 1.3rem;
}
.tutorial-art .tut-arrow.pulse {
  animation: tut-pulse 1.1s ease-in-out infinite;
}
.tutorial-art .tut-heart { font-size: 2rem; }
@keyframes tut-pulse {
  50% { transform: scale(1.18); background: rgba(250, 204, 21, 0.85); color: #1e293b; }
}
.tutorial-dots {
  display: flex;
  gap: 8px;
}
.tutorial-dots span {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.35);
}
.tutorial-dots span.on { background: var(--color-accent); }

/* 첫 판 이동 힌트 */
.move-hint {
  position: absolute;
  left: 50%;
  bottom: 96px;
  transform: translateX(-50%);
  padding: 8px 16px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.78);
  color: var(--glow-text);
  font-weight: 700;
  font-size: 0.95rem;
  white-space: nowrap;
  pointer-events: none;
  z-index: 6;
  animation: tut-hint 1.4s ease-in-out infinite;
}
.move-hint.hidden { display: none; }
@keyframes tut-hint {
  50% { opacity: 0.6; }
}
@media (prefers-reduced-motion: reduce) {
  .tutorial-art .tut-arrow.pulse, .move-hint { animation: none; }
}


/* --- 기록(출석체크/업적/통계) 화면 --- */
.overlay button.prog-tab-button {
  margin-top: 0;
  padding: 8px 10px;
  font-size: 0.85rem;
  font-weight: bold;
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--color-text-light);
  cursor: pointer;
}
.overlay button.prog-tab-button.active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}
.prog-body {
  width: 100%;
  max-width: 320px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
  max-height: calc(52 * var(--ui-vh, 1vh));
  text-align: left;
}
.prog-summary {
  text-align: center;
  font-weight: 700;
  color: var(--glow-text);
}
.prog-note {
  margin: 2px 0 0;
  font-size: 0.8rem;
  opacity: 0.75;
  text-align: center;
}
.prog-entry {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.94);
  color: #1e293b;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}
.prog-entry.done { background: #fef9c3; }
.prog-icon { font-size: 1.4rem; flex: none; }
.prog-text { flex: 1; min-width: 0; }
.prog-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; column-gap: 8px; } /* 이름 줄 오른쪽 끝에 진행 숫자 — 숫자 길이가 달라도 설명·막대 폭이 모든 칸에서 같다 */
.prog-name { font-weight: 700; font-size: 0.95rem; min-width: 0; white-space: nowrap; }
.prog-desc { font-size: 0.78rem; color: #475569; }
.prog-bar {
  height: 6px;
  margin-top: 5px;
  border-radius: 3px;
  background: rgba(15, 23, 42, 0.15);
  overflow: hidden;
}
.prog-bar i {
  display: block;
  height: 100%;
  background: #f59e0b;
  border-radius: 3px;
}
.prog-count {
  flex: none;
  margin-left: auto; /* 폭이 모자란 아주 좁은 화면에서는 다음 줄 오른쪽으로 내려간다 */
  white-space: nowrap;
  font-size: 0.74rem;
  font-weight: 700;
  color: #475569;
  font-variant-numeric: tabular-nums;
}
.prog-entry.done .prog-count { color: #15803d; font-size: 1.1rem; }
.prog-stat {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 12px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.94);
  color: #1e293b;
  font-size: 0.92rem;
}
.prog-stat b { font-variant-numeric: tabular-nums; }

/* 달성 알림 — 게임을 가리지 않게 한 줄짜리 작은 알약. 화면 맨 위(HUD 아래)에 잠깐 떴다 사라진다 */
.toast-stack {
  position: absolute;
  top: 56px;
  left: 50%;
  transform: translateX(-50%);
  width: min(92%, 300px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  pointer-events: none;
  z-index: 40;
}
.toast {
  display: flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 2px 10px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.62);
  color: var(--glow-text);
  font-size: 0.7rem;
  line-height: 1.5;
  white-space: nowrap;
  overflow: hidden;
  animation: toast-in 0.2s var(--ease-out), toast-out 0.25s ease-in 2s forwards;
}
.toast-icon { font-size: 0.75rem; }
.toast-text { display: flex; align-items: baseline; gap: 5px; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.toast-text b { font-weight: 700; }
.toast-text small { font-size: 0.7rem; color: #e2e8f0; }
@keyframes toast-in { from { opacity: 0; transform: translateY(-6px); } }
@keyframes toast-out { to { opacity: 0; transform: translateY(-6px); } }
@media (prefers-reduced-motion: reduce) {
  .toast { animation: none; }
}


/* --- 설정 확장: 볼륨 슬라이더 · 언어 · 확인 팝업 --- */
.slider-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 220px;
  box-sizing: border-box;
  padding: 6px 16px 10px;
  margin-top: -6px;
  border-radius: 0 0 10px 10px;
  background: rgba(255, 255, 255, 0.05);
  font-size: 0.82rem;
  color: #cbd5e1;
  text-align: left;
}
.slider-row input[type="range"] {
  width: 100%;
  height: 24px;
  margin: 0;
  accent-color: var(--color-accent);
}
.lang-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 220px;
  box-sizing: border-box;
  padding: 8px 12px 8px 16px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.08);
  font-size: 0.95rem;
}
.lang-row { flex-wrap: wrap; row-gap: 6px; } /* 영어는 'Language'+버튼 둘이 한 줄에 안 들어가서 버튼이 아래 줄로 내려간다 */
.lang-buttons { display: flex; gap: 6px; margin-left: auto; }
.overlay button.lang-btn {
  margin-top: 0;
  padding: 6px 10px;
  font-size: 0.82rem;
  border: 1.5px solid rgba(255, 255, 255, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--color-text-light);
  box-shadow: none;
}
.overlay button.lang-btn.active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-on-accent);
}
.confirm-overlay { background: rgba(2, 6, 23, 0.8); z-index: 60; }
.confirm-card {
  width: min(100%, 300px);
  box-sizing: border-box;
  padding: 20px 18px 16px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.97);
  color: #1e293b;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
}
.confirm-card p {
  margin: 0 0 14px;
  font-size: 1rem;
  line-height: 1.5;
  word-break: keep-all;
  color: #1e293b;
}

/* 설정의 '화면 효과 줄이기'가 켜져 있으면(또는 기기의 모션 줄이기) 움직이는 장식도 멈춘다 */
html.reduce-motion .start-deco,
html.reduce-motion .tutorial-art .tut-arrow.pulse,
html.reduce-motion .move-hint,
html.reduce-motion .toast {
  animation: none;
}

/* 확인 팝업 카드는 흰 바탕이라 보조(취소) 버튼도 어두운 글씨로 */
.overlay .confirm-card button.secondary-button {
  background: #e2e8f0;
  color: #1e293b;
  border-color: #94a3b8;
  box-shadow: none;
}


/* 출석체크 버튼 */
.checkin-btn { align-self: center; margin: 4px 0 6px; }

/* --- 출석체크 탭: 7일 도장판, 출석 버튼, 불쫀득이 스위치, 아래쪽 무대(불쫀득이와 불의 정령이 시작 화면처럼 걷는다) --- */
.attend-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
#progress-screen.attend-tab .prog-body { gap: 6px; }
.attend-pass { align-items: center; }
.attend-note { text-align: left; }
.attend-pass { padding-top: 3px; padding-bottom: 3px; min-height: 40px; box-sizing: border-box; }
.attend-pass > span:first-child { white-space: nowrap; min-width: 0; }
.attend-pass small { display: inline; margin-left: 8px; font-size: 0.74rem; opacity: 0.8; white-space: nowrap; }
.attend-day { display: flex; flex-direction: column; align-items: center; gap: 0; padding: 3px 0; border-radius: 10px; background: rgba(255, 255, 255, 0.14); color: var(--color-text-light, #fff); font-size: 0.78rem; }
.attend-day span { font-size: 1.05rem; line-height: 1.15; }
.attend-day.on { background: rgba(251, 146, 60, 0.35); box-shadow: inset 0 0 0 2px #fb923c; }
.attend-day.last { box-shadow: inset 0 0 0 2px #fbbf24; }
.attend-stage-wrap { position: relative; width: 100%; max-width: 320px; height: 170px; flex: none; }
.attend-stage-wrap.hidden { display: none; }
.attend-stage { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
#progress-screen.attend-tab .prog-body { max-height: none; overflow: visible; }

/* 기록 화면: 탭을 바꿔 내용 높이가 달라져도 "기록" 제목과 탭 줄이 움직이지 않게 위에서부터 쌓는다(기본 .overlay는 가운데 정렬이라 내용 높이에 따라 위아래로 밀렸다).
   뒤로 버튼은 항상 맨 아래, 출석체크 무대가 있으면 무대가 남는 자리를 차지해 버튼 바로 위에 선다 */
#progress-screen.attend-tab .prog-note { font-size: 0.72rem; line-height: 1.3; }
#progress-screen { justify-content: flex-start; padding-top: clamp(14px, calc(3 * var(--ui-vh, 1vh)), 36px); } /* 위쪽 카메라 여백은 게임 화면이 이미 비워 두므로 여기선 조금만 — 길쭉한 폰에서 아래 '뒤로' 버튼이 밀려나던 문제 */
#progress-screen .back-button { margin-top: auto; }
#progress-screen .attend-stage-wrap:not(.hidden) { margin-top: auto; flex: 0 1 auto; min-height: 84px; } /* 작은 화면에서는 무대가 줄어들어 뒤로 버튼이 밀려나지 않게 한다 */
#progress-screen .attend-stage-wrap:not(.hidden) + .back-button { margin-top: 8px; }
/* 좁은 화면에서는 남은 일수를 이름 아래 줄로 내려서 오른쪽 "사용" 스위치와 겹치지 않게 한다 */
@media (max-width: 380px) { .attend-pass > span:first-child { white-space: normal; } .attend-pass small { display: block; margin-left: 0; white-space: normal; } }
/* 영어는 탭 이름이 길어서(Attendance, Achievements…) 한 줄에 다 안 들어간다 — 3칸씩 두 줄로 같은 폭 */
html[lang="en"] #progress-screen .guide-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-flow: row; border-radius: 22px; }
html[lang="en"] #progress-screen button.prog-tab-button { font-size: 0.7rem; letter-spacing: -0.2px; padding-left: 2px; padding-right: 2px; }

/* 설정 화면의 링크 줄(개인정보처리방침): 다른 설정 줄과 같은 판 모양, 오른쪽에 화살표 */
.link-row { display: flex; align-items: center; justify-content: space-between; width: 220px; box-sizing: border-box; padding: 10px 16px; border-radius: 10px; font-size: 0.95rem; color: var(--text-main, #fff); text-decoration: none; cursor: pointer; }
.link-row b { font-size: 1.3rem; line-height: 1; color: var(--text-gold, #ffe680); }
.link-row:active { filter: brightness(0.9); }
.link-row.report-row span { display: block; text-align: left; padding-right: 8px; }
.link-row.report-row small { display: block; margin-top: 2px; font-size: 0.72rem; line-height: 1.25; opacity: 0.8; }
/* ## 디자인 시스템 v2(색·버튼·리본·패널) — 마지막에 덧씌움 */
/* =====================================================================
   디자인 시스템 v2 — Penpot 시안(2026-10-05) 반영
   기존 규칙을 건드리지 않고 마지막에 덧씌운다. 색·모서리·간격은 아래
   토큰(Penpot의 디자인 토큰 이름과 1:1)으로만 쓴다.
   ===================================================================== */
:root {
  --font-display: 'Noto Sans KR', "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
  /* 색 */
  --panel-top: #2b4580;
  --panel-bottom: #101b3a;
  --line-blue: #5b8def;
  --text-main: #ffffff;
  --text-sub: #9fb4e0;
  --text-gold: #ffe680;
  --text-brown: #4a1e02;
  --gold-light: #fff0a0; --gold-mid: #ffc52e; --gold-deep: #f08a00; --gold-edge: #a8480c; --gold-rim: #6e2a05;
  --blue-light: #7fb2ff; --blue-mid: #3f72d0; --blue-deep: #1e3fa0; --blue-edge: #10265f; --blue-rim: #0a1740;
  --green-light: #b8f56b; --green-mid: #52c23a; --green-deep: #22851f; --green-edge: #0f4c14; --green-rim: #0a3410;
  /* 모서리 · 간격 */
  --radius-panel: 24px;
  --space-md: 12px; --space-lg: 16px;
}

/* 글꼴: Noto Sans KR Bold(700)·Black(900) 두 가지만 불러온다. 굵기는 아래 규칙이 정한다(다른 값을 지정해도 소용없다) */
html { font-synthesis: none; }
html, body, button, input, select, textarea, .overlay, .overlay h1, .overlay h2, .neon-sign-text,
.toast, .move-hint, .tutorial-card, .confirm-card { font-family: var(--font-display); }
/* 기본은 Bold(700): 작은 글자를 Black(900)으로 쓰면 획이 뭉쳐 한글이 읽기 어렵다. 제목 리본·큰 버튼·카운트다운 숫자만 Black(900) */
*, *::before, *::after { font-weight: 700 !important; }
.overlay h1, .overlay h2, .neon-sign-text, .revive-countdown-number,
.overlay button:not(.small-button):not(.secondary-button):not(.guide-tab-button):not(.prog-tab-button):not(.lang-btn):not(.checkin-btn) { font-weight: 900 !important; }

/* ---- 버튼: 두께 있는 3D 광택 버튼 (금색이 기본, 보조는 파랑) ---- */
.overlay button {
  background: linear-gradient(180deg, var(--gold-light) 0%, var(--gold-mid) 50%, var(--gold-deep) 100%);
  border: 3px solid var(--gold-rim);
  color: var(--text-brown);
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
  box-shadow: 0 5px 0 var(--gold-edge), 0 10px 14px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.65);
  transition: transform 120ms var(--ease-out), box-shadow 120ms var(--ease-out), filter 120ms var(--ease-out);
}
.overlay button:active {
  transform: translateY(4px);
  box-shadow: 0 1px 0 var(--gold-edge), 0 3px 6px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.4);
  filter: brightness(0.94);
}
#start-button, #restart-button, #resume-button, #gameover-menu-button, #register-score-button, #continue-ad-button {
  border: 3px solid var(--gold-rim);
  box-shadow: 0 5px 0 var(--gold-edge), 0 0 22px rgba(255, 178, 26, 0.55), inset 0 2px 0 rgba(255, 255, 255, 0.65);
}
#start-button:active, #restart-button:active, #resume-button:active, #gameover-menu-button:active, #register-score-button:active, #continue-ad-button:active {
  box-shadow: 0 1px 0 var(--gold-edge), 0 0 12px rgba(255, 178, 26, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.4);
}
.overlay button.secondary-button, .overlay button.small-button, .overlay button.back-button, .overlay button.checkin-btn {
  background: linear-gradient(180deg, var(--blue-light) 0%, var(--blue-mid) 50%, var(--blue-deep) 100%);
  border: 3px solid var(--blue-rim);
  color: var(--text-main);
  text-shadow: 0 2px 0 var(--blue-rim);
  box-shadow: 0 5px 0 var(--blue-edge), 0 10px 14px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.5);
}
.overlay button.secondary-button:active, .overlay button.small-button:active, .overlay button.back-button:active {
  box-shadow: 0 1px 0 var(--blue-edge), 0 3px 6px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.35);
}
.overlay button.back-button.neon-sign-text { color: var(--text-main); animation: none; text-shadow: 0 2px 0 var(--blue-rim); }
.overlay button:disabled {
  background: linear-gradient(180deg, #5c6f99 0%, #33466f 50%, #1b2a4d 100%);
  border-color: #070c1a; color: #c7d2ea; text-shadow: none; opacity: 0.8;
  box-shadow: 0 4px 0 #0b1228, inset 0 2px 0 rgba(255, 255, 255, 0.25);
}
/* 모서리 아이콘 버튼처럼 그림이 주인공인 버튼은 바탕 없이 그림만 */
.overlay button.corner-icon-button, .overlay button.start-icon-records, .overlay button.start-icon-help {
  background: none; border: none; box-shadow: none; text-shadow: none; filter: none;
}
.overlay button.corner-icon-button:active { transform: scale(0.94); box-shadow: none; filter: brightness(0.9); }

/* ---- 탭: 어두운 알약 + 선택은 금색 ---- */
.overlay button.guide-tab-button, .overlay button.prog-tab-button {
  background: linear-gradient(180deg, #22345f, #0e1830);
  border: 2px solid rgba(76, 123, 214, 0.7);
  color: #b9c8ea; text-shadow: none;
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.12);
}
.overlay button.guide-tab-button.active, .overlay button.prog-tab-button.active {
  background: linear-gradient(180deg, var(--gold-light) 0%, var(--gold-mid) 50%, var(--gold-deep) 100%);
  border: 3px solid var(--gold-rim); color: var(--text-brown);
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
  box-shadow: 0 3px 0 var(--gold-edge), inset 0 2px 0 rgba(255, 255, 255, 0.65);
}
.overlay button.lang-btn { background: linear-gradient(180deg, #22345f, #0e1830); border: 2px solid rgba(76, 123, 214, 0.7); color: #b9c8ea; box-shadow: none; text-shadow: none; }
.overlay button.lang-btn.active { background: linear-gradient(180deg, var(--gold-light), var(--gold-mid) 50%, var(--gold-deep)); border: 3px solid var(--gold-rim); color: var(--text-brown); box-shadow: 0 3px 0 var(--gold-edge); }
.guide-tabs { padding: 4px; border-radius: 999px; background: #050a16; border: 2px solid rgba(76, 123, 214, 0.5); }

/* ---- 화면 제목: 금색 리본 ---- */
.overlay h1.neon-sign-text {
  position: relative; isolation: isolate; display: inline-block;
  margin: 4px 30px 12px; padding: 6px 30px;
  font-size: clamp(1.25rem, calc(7.6 * var(--ui-vw, 1vw)), 1.75rem); letter-spacing: 0.5px; white-space: nowrap;
  color: var(--text-brown); text-shadow: 0 1px 0 rgba(255, 255, 255, 0.45);
  background: linear-gradient(180deg, var(--gold-light) 0%, var(--gold-mid) 50%, var(--gold-deep) 100%);
  border: 3px solid var(--gold-rim); border-radius: 12px;
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5), inset 0 3px 0 rgba(255, 255, 255, 0.45);
  animation: none;
}
.overlay h1.neon-sign-text::before, .overlay h1.neon-sign-text::after {
  content: ''; position: absolute; z-index: -1; top: 10px; bottom: -9px; width: 44px;
  background: #b8620e; border: 3px solid var(--gold-rim);
}
.overlay h1.neon-sign-text::before { left: -26px; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 30% 50%); }
.overlay h1.neon-sign-text::after { right: -26px; clip-path: polygon(0 0, 100% 0, 70% 50%, 100% 100%, 0 100%); }
#gameover-screen h1.neon-sign-text { font-size: clamp(1.4rem, calc(8.4 * var(--ui-vw, 1vw)), 1.95rem); }

/* ---- 패널·카드: 네이비 그라디언트 + 이중 테두리 ---- */
.guide-entry, .prog-entry, .prog-stat, .confirm-card, .tutorial-card, .gameover-card, #ranking-list, .toggle-row, .lang-row, .slider-row, .link-row {
  background: linear-gradient(180deg, var(--panel-top), var(--panel-bottom));
  border: 3px solid #060b18;
  box-shadow: inset 0 0 0 2px rgba(91, 141, 239, 0.55), 0 8px 18px rgba(0, 0, 0, 0.5);
  color: var(--text-main);
  backdrop-filter: none;
}
.guide-entry, .prog-entry { border-radius: 16px; }
.confirm-card, .tutorial-card, .gameover-card, #ranking-list { border-radius: var(--radius-panel); }
.guide-entry-name, .prog-name, .tutorial-card h2 { color: var(--text-main); }
.guide-entry-desc, .prog-desc, .tutorial-card p small, .tutorial-card .tut-text small, .prog-count { color: var(--text-sub); }
.confirm-card p, .tutorial-card p, .tutorial-card .tut-text { color: var(--text-main); }
.prog-entry.done { background: linear-gradient(180deg, #4a4a7a, var(--panel-bottom)); border-color: #060b18; box-shadow: inset 0 0 0 2px var(--gold-mid), 0 8px 18px rgba(0, 0, 0, 0.5); }
.prog-entry.done .prog-count { color: var(--green-light); }
.prog-summary, .prog-note { color: var(--text-gold); }
.gameover-card .final-score, .gameover-card .high-score { color: var(--text-main); }
.gameover-card .new-best { color: var(--green-light); }
.overlay .confirm-card button.secondary-button {
  background: linear-gradient(180deg, var(--blue-light) 0%, var(--blue-mid) 50%, var(--blue-deep) 100%);
  color: var(--text-main); border-color: var(--blue-rim);
  box-shadow: 0 5px 0 var(--blue-edge), inset 0 2px 0 rgba(255, 255, 255, 0.5);
}
.tutorial-overlay { background: rgba(10, 18, 38, 0.92); }
.tutorial-dots span { background: #41527f; transition: width 160ms var(--ease-out); }
.tutorial-dots span.on { width: 24px; border-radius: 5px; background: var(--gold-mid); }

/* ---- 랭킹 줄: 어두운 알약, 순위색은 테두리로 ---- */
#ranking-list li { background: linear-gradient(180deg, #22345f, #0e1830); color: var(--text-main); border: 2px solid rgba(76, 123, 214, 0.7); box-shadow: none; }
#ranking-list li.empty { color: var(--text-sub); background: rgba(14, 24, 48, 0.7); }
#ranking-list li.rank-1 { background: linear-gradient(180deg, #22345f, #0e1830); border-color: #fca5a5; }
#ranking-list li.rank-2 { background: linear-gradient(180deg, #22345f, #0e1830); border-color: #fdba74; }
#ranking-list li.rank-3 { background: linear-gradient(180deg, #22345f, #0e1830); border-color: #fde047; }
#ranking-list li.rank-4 { background: linear-gradient(180deg, #22345f, #0e1830); border-color: #86efac; }
#ranking-list li.rank-5 { background: linear-gradient(180deg, #22345f, #0e1830); border-color: #93c5fd; }
#ranking-list li.own, #ranking-list li.own.rank-1 { background: linear-gradient(180deg, #4a4a7a, #101b3a); border: 2px solid var(--gold-mid); box-shadow: 0 0 12px rgba(255, 197, 46, 0.6); }

/* ---- 진행 바(업적): 홈 파인 트랙 + 광택 금색 채움 ---- */
.prog-bar { height: 12px; margin-top: 6px; border-radius: 6px; background: #1a2744; box-shadow: inset 0 0 0 1.5px #050a16; }
.prog-bar i { background: linear-gradient(180deg, var(--gold-light), var(--gold-mid) 50%, var(--gold-deep)); border-radius: 6px; box-shadow: inset 0 3px 0 rgba(255, 255, 255, 0.4); }

/* ---- 설정: 토글 스위치 ---- */
.toggle-row input[type="checkbox"] {
  appearance: none; -webkit-appearance: none; position: relative; flex: none;
  width: 52px; height: 28px; margin: 0; border-radius: 14px; cursor: pointer;
  background: linear-gradient(180deg, #46557a, #1a2542); box-shadow: inset 0 0 0 2px #050a16;
  transition: background 160ms var(--ease-out);
}
.toggle-row input[type="checkbox"]::after {
  content: ''; position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%;
  background: linear-gradient(180deg, #fff, #dde6f5); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  transition: transform 160ms var(--ease-out);
}
.toggle-row input[type="checkbox"]:checked { background: linear-gradient(180deg, var(--green-light), var(--green-mid) 50%, var(--green-deep)); box-shadow: inset 0 0 0 2px #050a16, 0 0 10px rgba(111, 225, 74, 0.45); }
.toggle-row input[type="checkbox"]:checked::after { transform: translateX(24px); }
.slider-row { color: var(--text-sub); }

/* ---- 알림·힌트 ---- */
.toast { background: rgba(10, 18, 38, 0.82); border: 1.5px solid rgba(91, 141, 239, 0.6); color: var(--text-gold); }
.move-hint { background: rgba(10, 18, 38, 0.85); border: 2px solid var(--gold-mid); color: var(--text-gold); }

/* 시작 화면 메뉴 버튼: 밝은 배경 위에서도 보이는 파란 3D 버튼 (v2) */
#start-screen .menu-row button {
  background: linear-gradient(180deg, var(--blue-light) 0%, var(--blue-mid) 50%, var(--blue-deep) 100%);
  color: var(--text-main);
  border: 3px solid var(--blue-rim);
  text-shadow: 0 2px 0 var(--blue-rim);
}

/* 시작 화면 마스코트(물쫀득이): 가로로 넓은 그림이라 폭을 줄여 제목·버튼과 겹치지 않게 */

/* ---- 일시정지 · 방향 버튼: 파란 광택 원형 (v2) ---- */
.icon-button {
  background: linear-gradient(180deg, var(--blue-light) 0%, var(--blue-mid) 50%, var(--blue-deep) 100%);
  border: 3px solid var(--blue-rim);
  color: var(--text-main);
  text-shadow: 0 2px 0 var(--blue-rim);
  box-shadow: 0 4px 0 var(--blue-edge), 0 8px 10px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.5);
}
.icon-button:active { transform: translateX(-50%) translateY(3px); box-shadow: 0 1px 0 var(--blue-edge), inset 0 2px 0 rgba(255, 255, 255, 0.35); }
/* 방향 버튼(2026-10-26 사용자 요청): 원 한쪽이 둥글게 뾰족한 물방울 그림(방향 쪽이 뾰족) + 안쪽 흰 원 속 꺾쇠(‹ ›). Penpot "방향 버튼 (왼쪽·오른쪽) — 물방울 모양", tools/gen_dir_buttons.py가 그림을 만든다.
   누르는 칸(.tc-btn, 62px)은 그대로 두고, 그림 칸(.tc-face)은 그림 비율(240x223)에 맞춰 칸보다 16%(폭)·8%(높이) 크게 잡아 원 부분의 중심이 버튼 한가운데에 오게 한다 — 그림 칸이 버튼보다 커서 뾰족한 끝이 잘리지 않는다(예전엔 버튼 칸 안에만 그려 끝이 잘렸다). 그림 자체도 가장자리에서 6px 여유를 두고 자른다(2026-10-27: 예전 그림은 가장자리에 붙어 있었고 왼쪽 그림은 원 뒤쪽이 7px 잘려 있었다).
   칸 안 위치 비율은 그림을 자른 범위(gen_dir_buttons.py CROP 7,17,238,232)에서 나온다: 원 중심 = 그림 폭의 43.7%(왼쪽 버튼은 56.3%)·높이의 47.0%.
   에너지바가 가득 차면(#touch-controls.energy-ready) 그림이 90° 돌아 뾰족한 끝이 위를 가리키고, 꺾쇠(.tc-chev)가 황금색으로 일정하게 깜박이며, 황금 꺾쇠 잔상(.tc-ghost 3장)이 계속 위로 떠올랐다 사라진다("위로 밀어 올리세요") */
.tc-btn {
  background: transparent;
  border: none;
  color: transparent;
  font-size: 0;
  box-shadow: none;
}
#tc-left { --rot: 90deg; }
#tc-right { --rot: -90deg; }
.tc-face, .tc-ghost {
  position: absolute; top: -0.6%; width: 115.7%; height: 107.7%; pointer-events: none;
  background: no-repeat center / 100% 100%;
  transition: transform 0.28s cubic-bezier(0.3, 1.5, 0.5, 1), filter 0.2s;
}
.tc-chev { position: absolute; inset: 0; pointer-events: none; background: no-repeat center / 100% 100%; }
#tc-right .tc-face, #tc-right .tc-ghost { left: -0.6%; transform-origin: 43.7% 47%; }
#tc-left .tc-face, #tc-left .tc-ghost { left: -15.2%; transform-origin: 56.3% 47%; }
#tc-right .tc-face { background-image: url("assets/ui/btn-dir-right.webp"); }
#tc-left .tc-face { background-image: url("assets/ui/btn-dir-left.webp"); }
#tc-right .tc-chev { background-image: url("assets/ui/btn-chev-right.webp"); }
#tc-left .tc-chev { background-image: url("assets/ui/btn-chev-left.webp"); }
#tc-right .tc-ghost { background-image: url("assets/ui/btn-dir-right.webp"); }
#tc-left .tc-ghost { background-image: url("assets/ui/btn-dir-left.webp"); }
/* 잔상은 버튼 자체(몸통 + 황금 꺾쇠)를 그대로 복사한 것 */
.tc-ghost::after { content: ""; position: absolute; inset: 0; background: no-repeat center / 100% 100%; }
#tc-right .tc-ghost::after { background-image: url("assets/ui/btn-chev-gold-right.webp"); }
#tc-left .tc-ghost::after { background-image: url("assets/ui/btn-chev-gold-left.webp"); }
.tc-ghost { opacity: 0; }
.tc-btn:active { transform: none; }
.tc-btn:active .tc-face { transform: translateY(2px) scale(0.96); filter: brightness(1.12); }
#touch-controls.energy-ready .tc-face { transform: rotate(var(--rot)); filter: drop-shadow(0 0 7px rgba(255, 214, 90, 0.95)); }
#touch-controls.energy-ready .tc-btn:active .tc-face { transform: translateY(2px) rotate(var(--rot)); filter: drop-shadow(0 0 9px rgba(255, 224, 120, 1)) brightness(1.12); }
#touch-controls.energy-ready #tc-right .tc-chev { background-image: url("assets/ui/btn-chev-gold-right.webp"); animation: tc-chev-blink 0.8s ease-in-out infinite; }
#touch-controls.energy-ready #tc-left .tc-chev { background-image: url("assets/ui/btn-chev-gold-left.webp"); animation: tc-chev-blink 0.8s ease-in-out infinite; }
@keyframes tc-chev-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
/* 가득 찼을 때 "위로 밀어 올리세요": 버튼 자체(몸통 + 황금 꺾쇠)를 복사한 잔상 4장이 0.22초 간격으로 버튼에서 위로 길게(약 118px) 솟고, 그 뒤로 황금 빛줄기가 같이 오르며, 버튼 몸통도 위로 톡톡 튄다(2026-10-27 "위로 올려야겠다는 생각이 들 정도로") */
#touch-controls.energy-ready .tc-ghost { filter: drop-shadow(0 0 8px rgba(255, 214, 90, 0.95)) brightness(1.15); animation: tc-ghost-rise 0.88s cubic-bezier(0.2, 0.6, 0.3, 1) infinite; }
#touch-controls.energy-ready .tc-ghost:nth-child(2) { animation-delay: 0.22s; }
#touch-controls.energy-ready .tc-ghost:nth-child(3) { animation-delay: 0.44s; }
#touch-controls.energy-ready .tc-ghost:nth-child(4) { animation-delay: 0.66s; }
@keyframes tc-ghost-rise {
  0% { transform: translateY(0) rotate(var(--rot)) scale(1); opacity: 0.8; }
  60% { opacity: 0.4; }
  100% { transform: translateY(calc(-118px * var(--ui-s, 1))) rotate(var(--rot)) scale(0.82); opacity: 0; }
}
#touch-controls.energy-ready .tc-btn::after {
  content: ''; position: absolute; left: 50%; bottom: 62%; width: 46%; height: 128px; margin-left: -23%;
  background: linear-gradient(to top, rgba(255, 214, 90, 0.7), rgba(255, 214, 90, 0.28) 55%, rgba(255, 214, 90, 0));
  border-radius: 48% 48% 0 0 / 14% 14% 0 0; pointer-events: none; z-index: -1; transform-origin: 50% 100%;
  animation: tc-beam 0.9s ease-out infinite;
}
@keyframes tc-beam { 0% { opacity: 0.95; transform: scaleY(0.35); } 100% { opacity: 0; transform: scaleY(1); } }
#touch-controls.energy-ready .tc-face { animation: tc-face-hop 0.9s ease-in-out 0.3s infinite; }
#touch-controls.energy-ready .tc-btn:active .tc-face { animation: none; }
@keyframes tc-face-hop { 0%, 100% { transform: translateY(0) rotate(var(--rot)); } 35% { transform: translateY(-8px) rotate(var(--rot)); } }
html.reduce-motion #touch-controls.energy-ready .tc-ghost { animation: none; opacity: 0; }
html.reduce-motion #touch-controls.energy-ready .tc-btn::after { animation: none; opacity: 0.6; }
html.reduce-motion #touch-controls.energy-ready .tc-face { animation: none; }
html.reduce-motion #touch-controls.energy-ready .tc-chev { animation: none; }
html.reduce-motion .tc-face { transition: none; }

/* 리본 제목을 조금 납작하게 + 설정 화면은 세로 공간이 빠듯해 간격을 줄인다 (v2) */
.overlay h1.neon-sign-text { margin: 2px 30px 8px; padding: 4px 28px; font-size: clamp(1.15rem, calc(6.6 * var(--ui-vw, 1vw)), 1.55rem); }
#gameover-screen h1.neon-sign-text { font-size: clamp(1.3rem, calc(7.4 * var(--ui-vw, 1vw)), 1.8rem); }
#settings-screen { gap: 7px; padding-top: 14px; padding-bottom: 14px; }
#settings-screen .toggle-row, #settings-screen .link-row { padding: 6px 14px; }
#settings-screen .lang-row { padding: 6px 12px 6px 14px; }
#settings-screen .slider-row { padding: 4px 14px 7px; margin-top: -9px; }
#settings-screen button.back-button { margin-top: 2px; }

/* ---- 리본 제목 꼬리 다듬기 (v2): 가운데 판 뒤에서 살짝 아래로 늘어진 제비꼬리 접힘.
   SVG를 배경으로 깔아 테두리가 잘리지 않고, 제목 길이·글자 크기가 달라도 늘어난다 ---- */
.overlay h1.neon-sign-text { margin: 4px 38px 14px; }
.overlay h1.neon-sign-text::before, .overlay h1.neon-sign-text::after {
  top: 40%; bottom: -14px; width: 58px; border: none; clip-path: none;
  background-color: transparent; background-repeat: no-repeat; background-size: 100% 100%;
}
.overlay h1.neon-sign-text::before {
  left: -34px;
  background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2060%2040'%20preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient%20id='h'%20x1='0'%20y1='0'%20x2='1'%20y2='0'%3E%3Cstop%20offset='0'%20stop-color='%23f9ad2e'/%3E%3Cstop%20offset='0.7'%20stop-color='%23d9780f'/%3E%3Cstop%20offset='1'%20stop-color='%23a85008'/%3E%3C/linearGradient%3E%3ClinearGradient%20id='v'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3E%3Cstop%20offset='0'%20stop-color='%23fff'%20stop-opacity='0.32'/%3E%3Cstop%20offset='0.5'%20stop-color='%23fff'%20stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath%20d='M2%202H60V38H2L22%2020Z'%20fill='url(%23h)'/%3E%3Cpath%20d='M2%202H60V38H2L22%2020Z'%20fill='url(%23v)'/%3E%3Cpath%20d='M46%2038L60%2038L60%2024Z'%20fill='%237a3406'/%3E%3Cpath%20d='M2%202H60V38H2L22%2020Z'%20fill='none'%20stroke='%236e2a05'%20stroke-width='2.5'%20stroke-linejoin='round'%20vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
}
.overlay h1.neon-sign-text::after {
  right: -34px;
  background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2060%2040'%20preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient%20id='h'%20x1='1'%20y1='0'%20x2='0'%20y2='0'%3E%3Cstop%20offset='0'%20stop-color='%23f9ad2e'/%3E%3Cstop%20offset='0.7'%20stop-color='%23d9780f'/%3E%3Cstop%20offset='1'%20stop-color='%23a85008'/%3E%3C/linearGradient%3E%3ClinearGradient%20id='v'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3E%3Cstop%20offset='0'%20stop-color='%23fff'%20stop-opacity='0.32'/%3E%3Cstop%20offset='0.5'%20stop-color='%23fff'%20stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath%20d='M58%202H0V38H58L38%2020Z'%20fill='url(%23h)'/%3E%3Cpath%20d='M58%202H0V38H58L38%2020Z'%20fill='url(%23v)'/%3E%3Cpath%20d='M14%2038L0%2038L0%2024Z'%20fill='%237a3406'/%3E%3Cpath%20d='M58%202H0V38H58L38%2020Z'%20fill='none'%20stroke='%236e2a05'%20stroke-width='2.5'%20stroke-linejoin='round'%20vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
}

/* 리본 꼬리가 가운데 판 "뒤"로 가려면, 제목 자신이 쌓임 맥락(stacking context)을 만들면 안 된다
   (맥락 루트의 배경이 음수 z-index 자식보다 먼저 그려져 꼬리가 판 앞으로 나온다).
   대신 화면(.overlay)이 맥락을 만들어 꼬리가 화면 안에서만 판 뒤로 간다 */
.overlay { isolation: isolate; }
.overlay h1.neon-sign-text { isolation: auto; }

/* ---- 랭킹 줄: 순위가 높을수록 화려하게 (1위 > 2위 > 3위 > 4·5위) ---- */
#ranking-list li { position: relative; overflow: hidden; --rc: #93c5fd; }
#ranking-list li.rank-1 { --rc: #fca5a5; }
#ranking-list li.rank-2 { --rc: #fdba74; }
#ranking-list li.rank-3 { --rc: #fde047; }
#ranking-list li.rank-4 { --rc: #86efac; }
#ranking-list li.rank-5 { --rc: #93c5fd; }
#ranking-list li:not(.empty):not(.own) {
  background: linear-gradient(180deg, #22345f, #0e1830);
  background: linear-gradient(180deg, color-mix(in srgb, var(--rc) 30%, #22345f), color-mix(in srgb, var(--rc) 8%, #0e1830));
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.14);
}
/* 3위: 색 테두리 + 은은한 빛 */
#ranking-list li.rank-3:not(.own) { box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), 0 0 8px color-mix(in srgb, var(--rc) 55%, transparent); }
/* 2위: 겹테두리 + 빛 + 가끔 반짝 */
#ranking-list li.rank-2:not(.own) {
  border-width: 3px;
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.25), 0 0 0 2px #0a1226, 0 0 12px color-mix(in srgb, var(--rc) 65%, transparent);
}
/* 1위: 가장 두꺼운 겹테두리 + 강한 빛 + 계속 반짝이는 광택 + 큰 글씨 */
#ranking-list li.rank-1:not(.own) {
  border-width: 3px;
  background: linear-gradient(180deg, #ffd9a8, #7a4a2a 18%, #3a2230);
  background: linear-gradient(180deg, color-mix(in srgb, var(--rc) 55%, #fff 10%), color-mix(in srgb, var(--rc) 35%, #22345f) 22%, #1a1630);
  border-color: #fff1c2;
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.4), 0 0 0 2px #5b1d1d, 0 0 16px rgba(252, 165, 165, 0.85);
  font-size: 1.04em; text-shadow: 0 2px 0 rgba(0, 0, 0, 0.5);
}
#ranking-list li.rank-1:not(.own)::after,
#ranking-list li.rank-2:not(.own)::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: -40%; width: 30%; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.4), transparent);
  transform: skewX(-18deg); animation: rank-shine 3.2s ease-in-out infinite;
}
#ranking-list li.rank-2:not(.own)::after { animation-delay: 1.4s; opacity: 0.6; }
@keyframes rank-shine { 0%, 55% { left: -40%; } 100% { left: 125%; } }
@media (prefers-reduced-motion: reduce) { #ranking-list li::after { animation: none !important; display: none; } }
html.reduce-motion #ranking-list li::after { animation: none !important; display: none; }

/* 1~3위는 색을 또렷하게(네이비에 섞이면 탁해 보임) */
#ranking-list li.rank-1:not(.own) { background: linear-gradient(180deg, #ff9db0 0%, #d9435f 42%, #5a1634 100%); }
#ranking-list li.rank-2:not(.own) { background: linear-gradient(180deg, #ffd08a 0%, #e0801f 42%, #6a3410 100%); }
#ranking-list li.rank-3:not(.own) { background: linear-gradient(180deg, #fff08a 0%, #d6a514 42%, #5e4608 100%); }
#ranking-list li.rank-1:not(.own), #ranking-list li.rank-2:not(.own), #ranking-list li.rank-3:not(.own) { text-shadow: 0 2px 0 rgba(0, 0, 0, 0.55); }

/* 영어 모드 글꼴: Fredoka (가변 폰트라 600으로 맞춘다. 한글 글자는 뒤의 Noto Sans KR로 대체) */
html[lang="en"] { --font-display: 'Fredoka', 'Noto Sans KR', sans-serif; }
html[lang="en"] *, html[lang="en"] *::before, html[lang="en"] *::after { font-weight: 600 !important; }
/* 일시정지 메뉴 버튼 4개: 글자 길이와 상관없이 같은 크기 */
#pause-screen button { min-width: 11rem; padding-left: 20px; padding-right: 20px; white-space: nowrap; }
/* 설정 화면 버튼: 언어 버튼 둘은 같은 크기, 뒤로 버튼은 일시정지 메뉴 버튼과 같은 크기 */
#settings-screen button.lang-btn { min-width: 4.5rem; padding-left: 8px; padding-right: 8px; white-space: nowrap; }
#settings-screen button.back-button { min-width: 11rem; padding-left: 20px; padding-right: 20px; white-space: nowrap; }
/* 게임오버 화면 버튼(광고보고 부활하기·다시하기·메인으로): 글자 크기·높이는 같고, 글자가 길면 옆으로 늘어난다. 점수등록은 동그란 아이콘 버튼이라 제외 */
#gameover-screen #continue-ad-button, #gameover-screen #restart-button, #gameover-screen #gameover-menu-button { flex: none; box-sizing: border-box; min-width: min(9.5rem, calc(50% - 6px)); height: 3.4rem; padding: 0 18px; font-size: 1.1rem; white-space: nowrap; }
/* 기록 화면: 탭 5개는 같은 폭(가장 긴 글자에 맞춰 함께 늘어남), 뒤로 버튼은 다른 화면과 같은 크기 */
#progress-screen .guide-tabs { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; }
#progress-screen button.prog-tab-button { padding-left: 6px; padding-right: 6px; white-space: nowrap; }
#progress-screen button.back-button { min-width: 11rem; padding-left: 20px; padding-right: 20px; white-space: nowrap; }
/* 도감 화면: 탭 3개는 같은 폭, 뒤로 버튼은 다른 화면과 같은 크기 */
#guide-screen .guide-tabs { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; }
#guide-screen button.guide-tab-button { padding-left: 6px; padding-right: 6px; white-space: nowrap; }
#guide-screen button.back-button { min-width: 11rem; padding-left: 20px; padding-right: 20px; white-space: nowrap; }
/* 랭킹 화면: 뒤로 버튼은 다른 화면과 같은 크기 */
#ranking-screen button.back-button { min-width: 11rem; padding: 12px 20px; white-space: nowrap; }
#ranking-screen .rename-form button { min-width: 5.5rem; font-size: 1.1rem; padding: 12px 10px; white-space: nowrap; }
/* 기록 화면 안쪽 버튼(오늘 출석하기·도전하기)도 같은 크기 */
#progress-screen #prog-body button { min-width: 11rem; padding-left: 20px; padding-right: 20px; white-space: nowrap; }

/* 낮은 화면의 게임오버 줄이기: 위 캐릭터 그림은 JS(fitGameoverScreen)가 줄이고, 그걸로도 모자란 아주 낮은 화면에서는 버튼·여백을 더 줄인다 */
@container (max-height: 560px) {
  #gameover-screen #gameover-register-error { font-size: 0.8rem; margin-top: 2px; padding: 2px 8px; }
}
@container (max-height: 480px) {
  #gameover-screen #continue-ad-button, #gameover-screen #restart-button, #gameover-screen #gameover-menu-button { height: 2.6rem; font-size: 1rem; }
  #gameover-screen .gameover-score-row { padding: 2px 0 8px; }
  #gameover-screen #gameover-register-form input[readonly] { padding: 3px 8px; font-size: 0.95rem; }
  #gameover-screen #gameover-register-form button { padding-top: 3px; padding-bottom: 3px; }
}

/* 연한 바탕 위의 검정 글자에는 그림자를 빼서(번져 보임) 또렷하게 */

/* 아주 작은 화면(게임 영역 높이 약 700px 이하, 예: 360x640 · 320x568 구형 폰): 출석체크 탭의 아래 무대 그림을 빼고 간격을 줄여 '뒤로' 버튼이 항상 보이게 한다 */
@container (max-height: 700px) {
  #progress-screen .attend-stage-wrap { display: none !important; }
  #progress-screen .attend-stage-wrap + .back-button { margin-top: auto; }
}
@container (max-height: 650px) {
  #progress-screen { padding-top: 6px; gap: 6px; }
  #progress-screen.attend-tab .prog-body { gap: 3px; }
  #progress-screen .attend-pass { min-height: 32px; }
  #progress-screen .attend-day { padding: 1px 0; }
  #progress-screen.attend-tab .prog-note { display: none; } /* 출석 보상 설명 4줄은 위 알약에도 나와 있다 */
  #settings-screen { gap: 3px; padding-top: 6px; padding-bottom: 6px; }
  #settings-screen .toggle-row, #settings-screen .link-row, #settings-screen .lang-row { padding-top: 3px; padding-bottom: 3px; }
  #settings-screen .slider-row { padding-bottom: 3px; margin-top: -6px; }
}

/* 게임오버의 "GAME OVER" 판과 그 아래 내용은 카운트다운 중에도, 00이 돼도 제자리에 있는다.
   예전에는 내용을 화면 가운데에 맞춰 놓아서 ① 나타날 때 크기 맞춤·확대 효과로 흔들리고, ② 00에서 부활 버튼이 사라지며 판이 36px 내려가고 나머지는 올라가고,
   ③ 점수 등록 폼을 열고 닫을 때 판이 17px 오르내렸다(폰 실측). 이제 위에서부터 쌓고 판 위치(padding-top)를 화면 높이 비율로 고정한다.
   (앞 파일의 #gameover-screen padding 규칙을 이겨야 해서 마지막 파일에 둔다) */
#gameover-screen {
  justify-content: flex-start;
  padding-top: clamp(8px, calc(17.5 * var(--ui-dvh, 1dvh)), 160px); /* 게임 화면 높이 = 보이는 화면 높이(dvh). 예전 가운데 맞춤 때(약 14.7%)보다 조금 아래 */
  animation: overlay-fade 200ms var(--ease-out); /* 확대(scale) 없이 서서히 나타나기만 한다 */
}
@keyframes overlay-fade { from { opacity: 0; } to { opacity: 1; } }
/* 00이 되거나 광고를 못 봐서 부활 버튼이 닫힐 때도 그 자리는 비워 둔다(display:none이면 아래 내용이 위로 올라온다) */
#gameover-screen #continue-ad-button.revive-gone { visibility: hidden; pointer-events: none; }

/* 시작 화면: 물쫀득이·물의 정령(무대)과 버튼 3개(게임 시작·랭킹·도감)를 위로 올린다. 아래 AI 안내 줄과 간격을 두고, 폰 화면 높이에 비례해 띄운다.
   (무대의 서는 높이는 시작 버튼 위치를 따라 정해지니 같이 올라간다) */
#start-screen { padding-bottom: clamp(48px, calc(9 * var(--ui-dvh, 1dvh)), 110px); }

/* ===== 신기록 연출 ===== */
.gameover-score-row { position: relative; }
.gameover-card { position: relative; }
/* 도장은 점수판 위에 덧씌운다(자리를 차지하지 않아 게임오버 판이 움직이지 않는다) */
.gameover-card .new-best {
  position: absolute; left: -52px; top: -52px; z-index: 2; margin: 0;
  line-height: 0; transform: rotate(-9deg); transform-origin: center;
  filter: drop-shadow(0 4px 5px rgba(0, 0, 0, 0.45));
  animation: stamp-in 0.52s linear both;
}
/* 위에서 크게 내려와(0~38%) 쾅 닿고, 눌렸다가(squash) 튀어 오르며 자리 잡는다 */
@keyframes stamp-in {
  0% { transform: rotate(-24deg) scale(4.6); opacity: 0; animation-timing-function: cubic-bezier(0.55, 0, 0.9, 0.5); }
  12% { opacity: 1; }
  38% { transform: rotate(-9deg) scale(1); opacity: 1; animation-timing-function: ease-out; }
  50% { transform: rotate(-9deg) scale(1.2, 0.8); animation-timing-function: ease-in-out; }
  68% { transform: rotate(-9deg) scale(0.94, 1.06); animation-timing-function: ease-in-out; }
  84% { transform: rotate(-9deg) scale(1.03, 0.98); }
  100% { transform: rotate(-9deg) scale(1); opacity: 1; }
}
/* 도장이 닿을 때 화면(게임 상자 전체)이 쾅 하고 흔들린다 */
#game-container.rec-shake { animation: rec-shake 0.5s linear both; }
@keyframes rec-shake {
  0% { translate: 0 0; } 8% { translate: -9px 7px; } 18% { translate: 8px -8px; } 30% { translate: -6px 5px; } 42% { translate: 5px -4px; }
  56% { translate: -3px 3px; } 70% { translate: 2px -2px; } 85% { translate: -1px 1px; } 100% { translate: 0 0; }
}
/* 충격 파장: 도장 중심에서 퍼지는 금빛 고리 */
.rec-ring { left: -14px; top: -14px; width: 40px; height: 40px; margin: -20px 0 0 -20px; border-radius: 50%; border: 5px solid #ffd54a; box-shadow: 0 0 14px 3px rgba(255, 190, 40, 0.8); font-size: 0; text-shadow: none; animation: rec-ring 0.6s ease-out both !important; }
.rec-ring2 { border-width: 3px; border-color: #fff; box-shadow: 0 0 10px 2px rgba(255, 255, 255, 0.8); }
@keyframes rec-ring { 0% { transform: scale(0.4); opacity: 0.95; } 100% { transform: scale(4.2); opacity: 0; } }
.gameover-card .high-score .prev-best { text-decoration: line-through; opacity: 0.55; }
.gameover-card .high-score .pop { display: inline-block; animation: best-pop 0.5s ease-out; color: #d6201a; font-weight: 900; }
@keyframes best-pop { 0% { transform: scale(0.6); } 55% { transform: scale(1.5); } 100% { transform: scale(1); } }
.rec-sparkle {
  position: absolute; top: -6px; z-index: 3; pointer-events: none; color: #ffd54a; font-size: 14px; line-height: 1;
  text-shadow: 0 0 6px rgba(255, 190, 40, 0.9); opacity: 0;
  animation: rec-fall 1.2s ease-in both;
}
@keyframes rec-fall {
  0% { transform: translate(0, 0) scale(0.6) rotate(0deg); opacity: 0; }
  15% { opacity: 1; }
  100% { transform: translate(var(--dx, 0), 90px) scale(1.1) rotate(180deg); opacity: 0; }
}
/* 신기록이면 점수 등록 버튼에 금색+흰색 이중 테두리(자리를 안 바꾸게 box-shadow 링)와 금빛 광채 */
#gameover-screen #register-score-button.record-glow { animation: rec-pulse 0.7s ease-in-out infinite alternate; box-shadow: 0 0 0 3px #ffd54a, 0 0 0 5.5px #ffffff, 0 0 16px 8px rgba(255, 214, 110, 0.9); }
@keyframes rec-pulse { from { transform: scale(1); } to { transform: scale(1.09); } }
@media (prefers-reduced-motion: reduce) { .gameover-card .new-best, .gameover-card .high-score .pop { animation: none; } .rec-sparkle { display: none; } #game-container.rec-shake { animation: none; } }

/* 신기록 도장 이미지(Penpot에서 만듦): 한글/영문 */
.gameover-card .new-best img { display: block; height: 76px; width: auto; pointer-events: none; }
.gameover-card .new-best.en img { height: 76px; }

/* ===== 플레이 중 순위 달성 알림(5~2위·신기록): 왼쪽 위 '단계' 알약 바로 아래에 작은 글씨만 몇 초 ===== */
#rank-toast { position: absolute; left: 14px; top: 80px; z-index: 6; pointer-events: none; opacity: 0; font-weight: 900; font-size: 14px; line-height: 1; letter-spacing: 0.02em; white-space: nowrap;
  color: var(--rt, #ffd54a); -webkit-text-stroke: 0; text-shadow: 0 0 2px #050a16, 0 0 2px #050a16, 0 1px 3px rgba(5, 10, 22, 0.9), 1px 1px 0 #050a16, -1px 1px 0 #050a16, 1px -1px 0 #050a16, -1px -1px 0 #050a16; }
#rank-toast.gold { font-size: 16px; }
#rank-toast.show { animation: rank-toast 2.6s ease-out both; }
#rank-toast.gold.show { animation-duration: 3.4s; }
#rank-toast.show.still { animation: rank-toast-still 2.6s linear both; }
#rank-toast.gold.show.still { animation-duration: 3.4s; }
/* 왼쪽에서 살짝 밀려 들어와 머물다가 서서히 사라진다 */
@keyframes rank-toast {
  0% { transform: translateX(-14px) scale(1.25); opacity: 0; }
  8% { transform: translateX(0) scale(1); opacity: 1; }
  80% { transform: translateX(0) scale(1); opacity: 1; }
  100% { transform: translateX(0) scale(1); opacity: 0; }
}
@keyframes rank-toast-still { 0% { opacity: 0; } 8% { opacity: 1; } 80% { opacity: 1; } 100% { opacity: 0; } }

/* 신기록 도장 밑 전체 순위 알약 */
.gameover-card .new-best .nb-rank { position: absolute; left: 50%; bottom: 3px; transform: translateX(-50%); padding: 3px 9px; border-radius: 999px; border: 1.5px solid #ffd54a; background: #0c1735; color: #fff; font-weight: 900; font-size: 11px; line-height: 1; letter-spacing: 0.02em; white-space: nowrap; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); }
.gameover-card .new-best .nb-rank.top { background: linear-gradient(#ffe27a, #ffb020); color: #4a2b00; border-color: #fff; }
.gameover-card .new-best .nb-rank[hidden] { display: none; }

/* ===== 도감 캐릭터 영상(95-input-progress.js의 GUIDE_ANIMS): 그림 칸 위에 캔버스를 얹고, 첫 칸이 그려지면 그림은 숨긴다 ===== */
.guide-anim-wrap { position: relative; display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; flex: none; }
.guide-anim-wrap .guide-thumb { width: 56px; height: 56px; }
.guide-anim { display: none; width: 64px; height: 64px; pointer-events: none; }
.guide-anim-wrap.anim .guide-thumb { display: none; }
.guide-anim-wrap.anim .guide-anim { display: block; }

/* ===== 도감 아이템·떨어지는 똥: 제자리에서 둥실 떠 있다(위아래로 살짝 오르내리고 조금 기울어진다) =====
   개별 속성 translate/rotate를 써서 항목마다 있는 transform: scale(보정용 확대)과 겹치지 않고, 그래픽 처리가 알아서 처리한다. 항목마다 주기·시작을 달리해 한꺼번에 움직이지 않게 한다 */
#guide-item-list .guide-thumb, #guide-poop-list .guide-thumb { animation: guide-hover 2.9s ease-in-out infinite; will-change: translate, rotate; }
#guide-item-list .guide-entry:nth-child(3n+2) .guide-thumb, #guide-poop-list .guide-entry:nth-child(3n+2) .guide-thumb { animation-duration: 3.3s; animation-delay: -1.1s; }
#guide-item-list .guide-entry:nth-child(3n) .guide-thumb, #guide-poop-list .guide-entry:nth-child(3n) .guide-thumb { animation-duration: 2.6s; animation-delay: -1.9s; }
#guide-item-list .guide-entry:nth-child(4n+1) .guide-thumb, #guide-poop-list .guide-entry:nth-child(4n+1) .guide-thumb { animation-delay: -0.5s; }
@keyframes guide-hover {
  0%, 100% { translate: 0 3px; rotate: -2.5deg; }
  50% { translate: 0 -3.5px; rotate: 2.5deg; }
}
@media (prefers-reduced-motion: reduce) { #guide-item-list .guide-thumb, #guide-poop-list .guide-thumb { animation: none; } }
html.reduce-motion #guide-item-list .guide-thumb, html.reduce-motion #guide-poop-list .guide-thumb { animation: none; }

/* ===== 한 손 모드: 시작 화면 조이스틱 아이콘(물음표 뒤) + 조작 방식 화면 + 방향 버튼 자리 ===== */
.overlay button.start-icon-hand { left: 106px; background: none; box-shadow: none; border: none; }
.start-icon-hand img { display: block; width: 42px; height: 42px; object-fit: contain; margin: auto; pointer-events: none; }
.overlay button.start-icon-records { left: 154px; }
#hand-screen { gap: 10px; padding-top: 14px; padding-bottom: 14px; }
.hand-hint { margin: 0; max-width: 92%; text-align: center; color: #e2e8f0; font-size: 0.82rem; line-height: 1.4; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
.hand-options { display: flex; gap: 8px; width: 94%; justify-content: center; }
.overlay button.hand-card { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 4px 10px; border-radius: 16px; border: 2px solid rgba(76, 123, 214, 0.7); background: linear-gradient(180deg, #22345f, #0e1830); color: #c7d2ea; box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.12); text-shadow: none; }
.overlay button.hand-card img { width: 100%; max-width: 92px; height: auto; display: block; pointer-events: none; opacity: 0.85; }
.hand-name { font-weight: 900; font-size: 1rem; color: #ffffff; }
.hand-desc { font-size: 0.7rem; line-height: 1.25; color: #9fb0d6; }
.overlay button.hand-card.selected { border-color: #ffd54a; background: linear-gradient(180deg, #3b5aa0, #1a2d5e); box-shadow: 0 0 0 2px rgba(255, 213, 74, 0.55), 0 0 14px rgba(255, 190, 40, 0.5); }
.overlay button.hand-card.selected img { opacity: 1; }
.overlay button.hand-card.selected .hand-name { color: #ffe27a; }
/* 방향 버튼 자리: 왼손 = 둘 다 왼쪽 아래, 오른손 = 둘 다 오른쪽 아래(폰: 게임 화면 아래에 겹침) */
html[data-hand="left"] #tc-right { left: calc(var(--game-left) + 14px * var(--ui-s, 1) + var(--tc-size) + 14px * var(--ui-s, 1)); }
html[data-hand="right"] #tc-left { left: calc(var(--game-left) + var(--game-w) - 14px * var(--ui-s, 1) - var(--tc-size) - 14px * var(--ui-s, 1) - var(--tc-size)); }
/* 태블릿(화면 밖 빈 공간): 고른 쪽 빈 공간에 두 버튼을 나란히 — 크기는 빈 공간 폭의 절반쯤 */
html.tc-outside[data-hand="left"], html.tc-outside[data-hand="right"] { --tc-size: clamp(62px, calc((var(--side) - 36px) / 2), 130px); }
html.tc-outside[data-hand="left"] #tc-left { left: calc((var(--side) - 2 * var(--tc-size) - 14px) / 2); }
html.tc-outside[data-hand="left"] #tc-right { left: calc((var(--side) - 2 * var(--tc-size) - 14px) / 2 + var(--tc-size) + 14px); }
html.tc-outside[data-hand="right"] #tc-left { left: calc(var(--game-left) + var(--game-w) + (var(--side) - 2 * var(--tc-size) - 14px) / 2); }
html.tc-outside[data-hand="right"] #tc-right { left: calc(var(--game-left) + var(--game-w) + (var(--side) - 2 * var(--tc-size) - 14px) / 2 + var(--tc-size) + 14px); }

/* ---- 랭킹 화면(2026-10-11): 도감 화면과 같은 자리에 위에서부터 쌓는다(제목 63px·판 시작 217px — 폰 실측), 줄 색은 1위 빨강·2위 주황·3위 노랑·4위 초록·5위 파랑, 1~3위는 메달 ---- */
#ranking-screen { justify-content: flex-start; padding: 24px 20px; gap: 12px; }
#ranking-screen h1.neon-sign-text { margin: 4px 0 2px; } /* 제목-문구-판 간격을 같게(문구 위 14px, 아래 14px = 여기 2px + 줄 간격 12px) */
#ranking-screen .hint-text { box-sizing: border-box; margin: 0 0 2px; text-align: center; }
#ranking-screen #ranking-list { min-height: 516px; } /* 기록이 5개보다 적어도 판 크기·뒤로 버튼 자리가 변하지 않게 */
#ranking-list li.rank-1:not(.empty), #ranking-list li.rank-1.own { background: linear-gradient(180deg, #ff8f86 0%, #e1342c 42%, #680f12 100%); }
#ranking-list li.rank-2:not(.empty), #ranking-list li.rank-2.own { background: linear-gradient(180deg, #ffcf8a 0%, #f28a1c 42%, #6e3508 100%); }
#ranking-list li.rank-3:not(.empty), #ranking-list li.rank-3.own { background: linear-gradient(180deg, #fff9a8 0%, #f2d21e 42%, #7a6208 100%); }
#ranking-list li.rank-4:not(.empty), #ranking-list li.rank-4.own { background: linear-gradient(180deg, #a2f2b6 0%, #2fad62 42%, #124a2c 100%); }
#ranking-list li.rank-5:not(.empty), #ranking-list li.rank-5.own { background: linear-gradient(180deg, #a6d3ff 0%, #3b84e2 42%, #14336e 100%); }
#ranking-list li.vacant { opacity: 0.5; }
/* 6위 남색·7위 보라(2026-10-11, 랭킹을 7위까지 보이게 하면서 추가) */
#ranking-list li.rank-6 { --rc: #a5b4fc; border-color: #a5b4fc; }
#ranking-list li.rank-7 { --rc: #d8b4fe; border-color: #d8b4fe; }
#ranking-list li.rank-6:not(.empty), #ranking-list li.rank-6.own { background: linear-gradient(180deg, #8a95e6 0%, #2b3a9f 42%, #0c1150 100%); }
#ranking-list li.rank-7:not(.empty), #ranking-list li.rank-7.own { background: linear-gradient(180deg, #dcaeff 0%, #9b47dc 42%, #3e1470 100%); }
#ranking-list li.rank-1:not(.empty), #ranking-list li.rank-2:not(.empty), #ranking-list li.rank-3:not(.empty), #ranking-list li.rank-4:not(.empty), #ranking-list li.rank-5:not(.empty), #ranking-list li.rank-6:not(.empty), #ranking-list li.rank-7:not(.empty) { text-shadow: 0 2px 0 rgba(0, 0, 0, 0.55); }
#ranking-list li.rank-3:not(.empty) { color: #fffbe0; }
.rank-cell { display: flex; align-items: center; gap: 8px; min-width: 0; margin-right: 8px; } /* 오른쪽(점수)과 최소 8px 간격 — 7자리 점수에서 이름과 붙어 보였다 */
.rank-slot { flex: none; width: 2.4rem; display: flex; align-items: center; justify-content: center; }
.rank-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rank-medal { display: block; height: 2.15rem; width: auto; margin: -0.4rem 0; pointer-events: none; user-select: none; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.45)); }

/* ---- 1위 줄 특별 효과(2026-10-11): 금빛 도는 테두리 + 금색 이름·점수 + 왕관·월계수·반짝이. 움직임은 transform/opacity와 작은 영역의 배경 이동뿐 ---- */
@property --ca { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
@keyframes champ-spin { to { --ca: 360deg; } }
@keyframes champ-shine { 0%, 45% { background-position: 160% 0; } 100% { background-position: -60% 0; } }
@keyframes champ-text { 0%, 45% { background-position: 100% 0; } 100% { background-position: 0 0; } }
@keyframes champ-twinkle { 0%, 100% { opacity: 0; transform: scale(0.3) rotate(0deg); } 50% { opacity: 1; transform: scale(1) rotate(45deg); } }
.rank-slot { position: relative; }
#ranking-list li.champion.rank-1:not(.empty) {
  overflow: visible; border: 3px solid transparent;
  background: linear-gradient(180deg, #ff8f86 0%, #e1342c 42%, #680f12 100%) padding-box,
              conic-gradient(from var(--ca), #7a4a00, #ffe27a, #fffbe0, #ffd23c, #b8860b, #7a4a00) border-box;
  box-shadow: 0 0 0 2px #5b1d1d, 0 0 16px rgba(255, 214, 90, 0.9), inset 0 2px 0 rgba(255, 255, 255, 0.4);
  animation: champ-spin 4s linear infinite;
}
#ranking-list li.champion.rank-1:not(.empty)::after {
  left: 0; right: 0; top: 0; bottom: 0; width: auto; transform: none; border-radius: inherit; opacity: 1;
  background: linear-gradient(100deg, transparent 35%, rgba(255, 255, 255, 0.5) 50%, transparent 65%) 160% 0 / 250% 100% no-repeat;
  animation: champ-shine 3.2s ease-in-out infinite;
}
#ranking-list li.champion .rank-name, #ranking-list li.champion > span:last-child {
  background: linear-gradient(100deg, #ffd23c 0%, #fff8c8 16%, #ffd23c 34%, #ffe27a 100%) 100% 0 / 250% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent;
  text-shadow: none; filter: drop-shadow(0 1px 0 rgba(60, 20, 0, 0.95)); animation: champ-text 3.2s ease-in-out infinite;
}
.rank-crown { position: absolute; left: 50%; top: -1.3rem; width: 1.55rem; height: auto; transform: translateX(-50%) rotate(-14deg); pointer-events: none; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.45)); }
.rank-laurel { position: absolute; top: 50%; height: 2.7rem; width: auto; pointer-events: none; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.4)); }
.rank-laurel.rl-left { left: -0.7rem; transform: translateY(-50%); }
.rank-laurel.rl-right { right: -0.7rem; transform: translateY(-50%) scaleX(-1); }
.rank-spark { position: absolute; width: 0.85rem; height: auto; opacity: 0; pointer-events: none; animation: champ-twinkle 2.4s ease-in-out infinite; }
.rank-spark.s1 { top: -6px; left: 26%; }
.rank-spark.s2 { top: 4px; left: 54%; width: 0.65rem; animation-delay: 0.6s; }
.rank-spark.s3 { bottom: -6px; left: 76%; animation-delay: 1.2s; }
.rank-spark.s4 { top: -7px; right: 12%; width: 1rem; animation-delay: 1.8s; }
@media (prefers-reduced-motion: reduce) { #ranking-list li.champion, #ranking-list li.champion::after, #ranking-list li.champion .rank-name, #ranking-list li.champion > span:last-child, .rank-spark { animation: none !important; } .rank-spark { opacity: 0.8; } }
html.reduce-motion #ranking-list li.champion, html.reduce-motion #ranking-list li.champion::after, html.reduce-motion #ranking-list li.champion .rank-name, html.reduce-motion #ranking-list li.champion > span:last-child, html.reduce-motion .rank-spark { animation: none !important; }
html.reduce-motion .rank-spark { opacity: 0.8; }

/* 낮은 화면에서는 10줄이 넘치지 않게 줄 높이·간격·글자·메달을 줄인다(게임 영역 높이 기준: 보통 폰 약 797px은 그대로) */
@container (max-height: 740px) {
  #ranking-screen { padding-bottom: 14px; gap: 8px; } /* 위 여백(24px)은 도감과 같게 둔다 — 줄이면 제목 위치가 도감과 달라진다(tools/layout-check.js가 검사) */
  #ranking-screen h1.neon-sign-text { margin-bottom: 8px; }
  #ranking-screen .hint-text { font-size: 0.72rem; }
  #ranking-screen #ranking-list { padding: 8px; gap: 4px; min-height: 0; }
  #ranking-screen #ranking-list li { padding: 3px 12px; font-size: 0.84rem; }
  .rank-medal { height: 1.8rem; margin: -0.35rem 0; }
  .rank-slot { width: 2.1rem; }
  .rank-laurel { height: 2.2rem; }
  #ranking-screen button.back-button { padding-top: 8px; padding-bottom: 8px; }
}
@container (max-height: 620px) {
  #ranking-screen { padding-bottom: 8px; gap: 6px; }
  #ranking-screen h1.neon-sign-text { margin: 4px 0 10px; } /* 리본 아래 끝자락이 제목 상자 밖으로 늘어져 있어서(약 15px) 간격을 줄이면 안내 문구와 겹친다 — 제목은 줄이지 않는다 */
  #ranking-screen #ranking-list { padding: 6px; gap: 3px; }
  #ranking-screen #ranking-list li { padding: 1px 10px; font-size: 0.78rem; }
  .rank-medal { height: 1.5rem; margin: -0.3rem 0; }
  .rank-laurel { height: 1.9rem; }
  .rank-crown { width: 1.2rem; top: -1rem; }
  #ranking-screen button.back-button { padding-top: 5px; padding-bottom: 5px; }
}

/* 1위 줄은 다른 줄보다 두껍고(세로 여백↑) 글씨·메달·장식이 더 크다(2026-10-11 사용자 요청). 이름이 시작하는 자리는 같게 .rank-slot 폭은 그대로 둔다 */
#ranking-screen #ranking-list li.champion { padding: 11px 12px; font-size: 1rem; } /* 1.12rem이면 이름이 ...으로 잘렸다(폰 실측) — 이름이 끝까지 보이는 한도 */
#ranking-list li.champion .rank-cell { gap: 6px; }
#ranking-list li.champion .rank-medal { height: 2.7rem; margin: -0.55rem 0; }
#ranking-list li.champion .rank-crown { width: 1.85rem; top: -1.5rem; }
#ranking-list li.champion .rank-laurel { height: 3.3rem; }
@container (max-height: 740px) {
  #ranking-screen #ranking-list li.champion { padding: 7px 12px; font-size: 1rem; }
  #ranking-list li.champion .rank-medal { height: 2.2rem; margin: -0.45rem 0; }
  #ranking-list li.champion .rank-crown { width: 1.5rem; top: -1.25rem; }
  #ranking-list li.champion .rank-laurel { height: 2.6rem; }
}
@container (max-height: 620px) {
  #ranking-screen #ranking-list li.champion { padding: 4px 10px; font-size: 0.92rem; }
  #ranking-list li.champion .rank-medal { height: 1.8rem; margin: -0.35rem 0; }
  #ranking-list li.champion .rank-crown { width: 1.25rem; top: -1.05rem; }
  #ranking-list li.champion .rank-laurel { height: 2.1rem; }
}

/* 도감: 탭(캐릭터·아이템·떨어지는 똥)을 바꿔도 제목·탭 줄·판이 같은 자리에 있게 위에서부터 쌓는다(2026-10-12 사용자 요청).
   예전에는 세로 가운데 정렬이라 항목이 적은 "떨어지는 똥" 탭만 판이 아래로 내려가 있었다. 판 높이는 탭마다 달라도 위 시작점은 같다(tools/layout-check.js가 세 탭을 모두 검사) */
#guide-screen { justify-content: flex-start; }
#guide-screen .guide-list { flex: 1 1 0; min-height: 0; } /* 목록 칸은 남은 높이를 모두 차지 — 항목이 적은 탭도 뒤로 버튼이 같은 자리(맨 아래)에 있다. 칸은 투명이라 눈에는 안 보인다 */

/* 게임 방법 1쪽(이동·러쉬): 위아래 두 칸, 칸마다 왼쪽에 영상(캔버스)·오른쪽에 설명(2026-10-12 사용자 요청) */
.tutorial-card.tut-movedash { gap: 8px; padding: 14px 14px 16px; }
.tutorial-card.tut-movedash .tutorial-art { display: none; }
.tutorial-card.tut-movedash .tut-text { display: flex; flex-direction: column; gap: 8px; width: 100%; }
.tut-block { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; }
.tut-vid { flex: none; width: 124px; height: 77.5px; border-radius: 10px; background: rgba(125, 165, 215, 0.16); box-shadow: inset 0 0 0 1px rgba(125, 165, 215, 0.28); }
.tut-block-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tut-block-text b { font-size: 1.1rem; color: var(--gold-mid); }
.tut-block-text span { font-size: 0.86rem; line-height: 1.35; word-break: keep-all; }
.tut-block-text small { margin: 0; font-size: 0.72rem; line-height: 1.3; word-break: keep-all; }
.tut-divider { width: 100%; height: 2px; border-radius: 2px; background: rgba(125, 150, 210, 0.28); }

/* ---- 랭킹 화면: 7위까지 + 아래에 황금 여래신장 소환 랭킹(1~3위) 판 (2026-10-12 사용자 요청) ---- */
#ranking-screen #ranking-list { min-height: 0; } /* 7줄이면 줄 높이로 정해진다(빈 자리는 appendVacantRows가 채운다) */
#palm-rank {
  box-sizing: border-box; width: 100%; max-width: 300px; padding: 7px 10px 9px; display: flex; flex-direction: column; gap: 5px;
  background: linear-gradient(180deg, var(--panel-top), var(--panel-bottom)); border: 3px solid #060b18; border-radius: var(--radius-panel);
  box-shadow: inset 0 0 0 2px rgba(91, 141, 239, 0.55), 0 8px 18px rgba(0, 0, 0, 0.5); color: var(--text-main);
}
.palm-rank-head { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 0.8rem; color: var(--gold-light); text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); }
.palm-rank-head img { height: 1.5rem; width: auto; flex: none; }
#palm-rank-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
#palm-rank-list li {
  position: relative; display: flex; justify-content: space-between; align-items: center; box-sizing: border-box; padding: 3px 12px; border-radius: 999px;
  font-size: 0.84rem; color: #fff; text-shadow: 0 2px 0 rgba(0, 0, 0, 0.55); border: 2px solid rgba(76, 123, 214, 0.7);
  background: linear-gradient(180deg, #22345f, #0e1830); box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2);
}
#palm-rank-list li.rank-1 { background: linear-gradient(180deg, #ff8f86 0%, #e1342c 42%, #680f12 100%); border-color: #fca5a5; }
#palm-rank-list li.rank-2 { background: linear-gradient(180deg, #ffcf8a 0%, #f28a1c 42%, #6e3508 100%); border-color: #fdba74; }
#palm-rank-list li.rank-3 { background: linear-gradient(180deg, #fff9a8 0%, #f2d21e 42%, #7a6208 100%); border-color: #fde047; color: #fffbe0; }
#palm-rank-list li.own { border-color: var(--gold-mid); box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.2), 0 0 10px rgba(255, 197, 46, 0.6); }
#palm-rank-list li.vacant { opacity: 0.5; }
#palm-rank-list .rank-medal { height: 1.7rem; margin: -0.3rem 0; }
#palm-rank-list .rank-cell { gap: 6px; }
#palm-rank-list > li > span:last-child { font-variant-numeric: tabular-nums; }
@container (max-height: 740px) {
  #palm-rank { padding: 5px 8px 7px; gap: 3px; }
  .palm-rank-head { font-size: 0.74rem; }
  .palm-rank-head img { height: 1.25rem; }
  #palm-rank-list { gap: 3px; }
  #palm-rank-list li { padding: 1px 10px; font-size: 0.78rem; }
  #palm-rank-list .rank-medal { height: 1.45rem; }
}
@container (max-height: 620px) {
  #palm-rank { padding: 4px 8px 5px; gap: 2px; }
  .palm-rank-head { font-size: 0.7rem; }
  .palm-rank-head img { height: 1.1rem; }
  #palm-rank-list li { padding: 0 8px; font-size: 0.74rem; }
  #palm-rank-list .rank-medal { height: 1.25rem; margin: -0.25rem 0; }
}

/* 조작 방식 화면 아래의 권장 사양(2026-10-12) */
.hand-spec { box-sizing: border-box; width: 100%; max-width: 320px; padding: 8px 14px 9px; border-radius: 14px; background: rgba(14, 24, 48, 0.78); border: 2px solid rgba(76, 123, 214, 0.55); color: var(--text-main); text-align: left; }
.hand-spec-title { margin-bottom: 3px; font-size: 0.82rem; color: var(--gold-light); text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); }
.hand-spec ul { margin: 0; padding: 0 0 0 1.05rem; font-size: 0.76rem; line-height: 1.45; color: var(--text-sub); }
@container (max-height: 620px) {
  .hand-spec { padding: 5px 12px 6px; }
  .hand-spec-title { font-size: 0.74rem; margin-bottom: 1px; }
  .hand-spec ul { font-size: 0.68rem; line-height: 1.3; }
}
@container (max-height: 620px) {
  #hand-screen { gap: 6px; }
  .overlay button.hand-card img { max-width: 62px; }
}

/* ===== 플레이 중 업적 달성 알림: 왼쪽 위 '단계' 알약 아래(순위 알림 바로 밑)에 이름만 5초 ===== */
#ach-notice { position: absolute; left: 14px; top: 104px; z-index: 6; pointer-events: none; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.ach-notice-item { display: flex; align-items: center; gap: 5px; max-width: calc(70 * var(--ui-vw, 1vw)); padding: 3px 10px 3px 6px; border-radius: 999px; font-weight: 800; font-size: 13px; line-height: 1.2; white-space: nowrap; color: #fff5d1;
  background: rgba(14, 22, 48, 0.78); border: 1.5px solid #f6c445; box-shadow: 0 2px 0 rgba(0, 0, 0, 0.35); animation: ach-notice 5s ease-out both; }
.ach-notice-item i { font-style: normal; font-size: 14px; }
.ach-notice-item span { overflow: hidden; text-overflow: ellipsis; }
.ach-notice-item.still { animation: ach-notice-still 5s linear both; }
@keyframes ach-notice {
  0% { transform: translateX(-16px); opacity: 0; }
  5% { transform: translateX(0); opacity: 1; }
  92% { transform: translateX(0); opacity: 1; }
  100% { transform: translateX(0); opacity: 0; }
}
@keyframes ach-notice-still { 0% { opacity: 0; } 5% { opacity: 1; } 92% { opacity: 1; } 100% { opacity: 0; } }

/* ===== 튜토리얼 '직접 해 보기'(연습) 쪽 + 업적 1번(튜토리얼 모두 보기) 누르기 표시 (2026-10-18) ===== */
.prog-entry[data-ach] { cursor: pointer; }
.prog-entry[data-ach]:active { filter: brightness(1.12); }
.tutorial-card.tut-prac { gap: 8px; padding: 14px 14px 16px; }
.tutorial-card.tut-prac .tutorial-art { display: none; }
.tutorial-card.tut-prac .tut-text { display: flex; flex-direction: column; align-items: center; gap: 8px; width: 100%; }
.tut-prac-text { font-size: 0.92rem; line-height: 1.4; text-align: center; word-break: keep-all; }
.tut-prac-cv { display: block; width: 100%; max-width: 340px; aspect-ratio: 360 / 200; border-radius: 12px; background: rgba(125, 165, 215, 0.16); box-shadow: inset 0 0 0 1px rgba(125, 165, 215, 0.28); touch-action: none; }
.tut-goals { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.tut-goal { padding: 4px 14px; border-radius: 999px; font-size: 0.85rem; font-weight: 800; background: rgba(255, 255, 255, 0.12); border: 2px solid rgba(255, 255, 255, 0.3); transition: background 0.2s, border-color 0.2s; }
.tut-goal.on { background: #2f9e55; border-color: #8ff0a4; }
.tut-pads { display: flex; align-items: center; justify-content: space-between; width: 100%; max-width: 340px; }
.tut-pad { width: 70px; height: 70px; border-radius: 50%; padding: 0; font-size: 1.7rem; line-height: 1; color: #fff; border: 3px solid #0b1636; background: radial-gradient(circle at 35% 28%, #6f9bff, #2a4aa8 72%); box-shadow: 0 4px 0 #0b1636, 0 8px 14px rgba(0, 0, 0, 0.4); touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; }
/* 방향 표시는 글자(◀ ▶)가 아니라 도형으로 그려 버튼 한가운데에 맞춘다(글자는 글꼴 여백 때문에 한쪽으로 치우친다). 삼각형은 무게중심이 밑변 쪽이라 뾰족한 쪽으로 2px 옮겨야 눈에 가운데로 보인다 */
.tut-pad { position: relative; font-size: 0; color: transparent; }
.tut-pad::before { content: ''; position: absolute; inset: 0; margin: auto; width: 24px; height: 28px; background: #3b2300; }
.tut-pad-l::before { clip-path: polygon(100% 0, 0 50%, 100% 100%); transform: translateX(-2px); }
.tut-pad-r::before { clip-path: polygon(0 0, 100% 50%, 0 100%); transform: translateX(2px); }
.tut-pad.down { transform: translateY(3px); filter: brightness(1.25); box-shadow: 0 1px 0 #0b1636; }
.tut-pad-hint { flex: 1; text-align: center; font-size: 0.95rem; font-weight: 800; color: var(--gold-mid); }
.tut-pad-hint.done { color: #7CFF9B; }
/* ## 캐릭터 고르기 화면(물쫀득이 / 불쫀득이) — Penpot 시안 "1-1/1-2 캐릭터 고르기"(사용 가능/잠김, EN 포함)대로 */
/* "게임 시작"을 누르면 뜨는 창. 카드 두 장 중 하나를 골라 시작한다. 색·모서리는 80-design-system-v2의 토큰을 쓴다 */
.charselect-overlay { gap: var(--space-lg); }
.char-cards { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-lg) var(--space-md); width: 100%; max-width: 330px; } /* 2x2: 물·불 / 초록·준비 중(?) */
.overlay button.char-card {
  flex: 1 1 0;
  min-width: 0;
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 26px 8px 12px;
  border-radius: var(--radius-panel);
  background: linear-gradient(180deg, var(--panel-top), var(--panel-bottom));
  border: 3px solid var(--line-blue);
  color: var(--text-main);
  text-shadow: none;
  box-shadow: 0 5px 0 var(--blue-edge), 0 10px 14px rgba(0, 0, 0, 0.4), inset 0 2px 0 rgba(255, 255, 255, 0.18);
  cursor: pointer;
}
.overlay button.char-card:active { transform: translateY(3px); box-shadow: 0 2px 0 var(--blue-edge), inset 0 2px 0 rgba(255, 255, 255, 0.18); }
/* 고른 카드: 금색 테두리 + 빛, 오른쪽 위에 체크 */
.overlay button.char-card.selected {
  border-color: var(--gold-mid);
  box-shadow: 0 5px 0 var(--gold-edge), 0 0 22px rgba(255, 197, 46, 0.65), inset 0 2px 0 rgba(255, 255, 255, 0.28);
  transform: translateY(-2px);
}
.char-card.selected::after {
  content: '✓';
  position: absolute; top: -10px; right: -8px;
  width: 28px; height: 28px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(180deg, var(--green-light), var(--green-mid) 55%, var(--green-deep));
  border: 2px solid var(--green-rim);
  box-shadow: 0 2px 0 var(--green-edge);
  color: #fff; font-size: 1rem; line-height: 1;
}
.char-img-wrap { position: relative; width: 100%; height: 84px; display: flex; align-items: center; justify-content: center; }
.char-img { max-width: 92%; max-height: 100%; object-fit: contain; pointer-events: none; }
.char-card.selected .char-img { animation: char-bob 1.8s ease-in-out infinite; }
@keyframes char-bob { 0%, 100% { transform: translateY(0) scale(1); } 50% { transform: translateY(-4px) scale(1.04, 0.97); } }
.char-name { font-size: 1.35rem; line-height: 1.2; color: var(--text-main); }
.char-sub { font-size: 0.82rem; line-height: 1.2; color: var(--text-sub); min-height: 1em; }
/* 불쫀득이 사용 가능 일수: 캐릭터 위, 카드 윗변에 걸친 금색 알약 */
.char-days {
  position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
  padding: 3px 14px; border-radius: 999px; white-space: nowrap;
  background: linear-gradient(180deg, var(--gold-light) 0%, var(--gold-mid) 50%, var(--gold-deep) 100%);
  border: 2px solid var(--gold-rim);
  box-shadow: 0 2px 0 var(--gold-edge);
  color: var(--text-brown); font-size: 0.95rem; line-height: 1.2; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
  z-index: 1;
}
/* 잠긴 카드(출석체크 전): 자물쇠 표시, 설명은 금색으로 눈에 띄게 */
/* 잠겨도 캐릭터는 원래 색 그대로 보이고, 자물쇠는 그림 왼쪽 위에 작게 붙는다 */
.char-lock { display: none; position: absolute; left: 8px; top: -6px; width: 34px; height: 34px; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, 0.55)); }
.char-card.locked .char-lock { display: block; }
.char-card.locked .char-sub { color: var(--text-gold); }
.char-hint { margin: 0; width: 100%; max-width: 330px; text-align: left; font-size: 0.92rem; line-height: 1.35; color: var(--text-sub); min-height: 2.7em; font-weight: 700; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }
.char-hint span { display: block; }
.char-hint .hint-fire { color: #ffa24d; }    /* 불쫀득이 카드(주황) */
.char-hint .hint-green { color: #8fe276; }   /* 풀쫀득이 카드(초록) */
#charselect-start-button { min-width: 11rem; white-space: nowrap; }
@media (prefers-reduced-motion: reduce) { .char-card.selected .char-img { animation: none; } }

/* 카드 속 캐릭터는 서 있는 모습의 움직이는 webp(tools/gen_card_anims.py)다 — 시트를 풀어 캔버스에 그리면 앱을 켠 직후 풀기 줄에 서서 카드가 멈췄다. 움직임 줄이기에서는 JS가 data-still 정지 그림으로 바꾼다 */
.char-anim { width: 100px; height: auto; max-width: none; max-height: none; animation: none !important; }

/* 풀쫀득이(업적을 모두 달성하면 얻는다): 아직 못 얻었으면 까만 실루엣 + 자물쇠 + 진행 알약(n/14). 카드를 누르면 업적 탭으로 간다 */
/* 못 얻은 풀쫀득이도 원래 색으로 보여 준다(불쫀득이 잠금 카드와 같은 방식: 자물쇠 + 진행 알약). 예전의 까만·회색 실루엣은 사용자 요청(10/13)으로 뺐다 */
#char-card-green.locked .char-sub { color: var(--text-gold); }
.char-days-green { background: linear-gradient(180deg, #d4f7a8 0%, #7fd857 50%, #3fa83a 100%); border-color: #2a8a30; box-shadow: 0 2px 0 #1b6b25; color: #16461c; }
/* 준비 중(?) 카드: 나중에 다른 쫀득이가 들어올 자리. 누르면 안내만 뜬다 */
.char-card-tbd { cursor: default; }
.overlay button.char-card.char-card-tbd { background: linear-gradient(180deg, rgba(60, 76, 118, 0.85), rgba(34, 44, 76, 0.9)); border-style: dashed; }
.char-qmark { font-size: 3.6rem; line-height: 1; font-weight: 900; color: rgba(255, 255, 255, 0.55); text-shadow: 0 3px 0 rgba(0, 0, 0, 0.35); }
.char-card-tbd .char-name { color: rgba(255, 255, 255, 0.7); }

/* 업적 탭 아래 무대: 풀쫀득이가 좌우로 걷는다. 못 얻었으면 까만 실루엣 + 안내 문구 */
.ach-stage-wrap { max-width: 320px; }
/* 설명 글자는 출석체크 탭 설명(.prog-note)과 같은 글꼴·크기·색(금색, 0.72rem, 줄 간격 1.3, 투명도 .75, 일반 굵기) */
/* 글자: 풀쫀득이 카드·설명과 같은 초록색(#8fe276), 크기는 0.72rem에서 0.86rem으로(10/13 사용자 요청) */
.ach-stage-hint { position: absolute; left: 0; right: 0; top: 0; text-align: left; font-size: 0.86rem; line-height: 1.3; font-weight: 700; color: #8fe276; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); pointer-events: none; }
/* 못 얻었어도 풀쫀득이는 원래 색으로 걷는다(위 설명 글자가 얻는 법을 알려 준다) */
#progress-screen.ach-tab .prog-body { max-height: calc(35 * var(--ui-vh, 1vh)); } /* 아래 무대(풀쫀득이)가 줄어들지 않게 목록은 스크롤 */
/* 무대가 보이는 큰 화면(게임 영역 높이 701px 이상)에서는 풀쫀득이 획득 버튼(약 44px + 간격)만큼 목록을 줄인다. 작은 화면은 무대가 숨겨져 자리가 남으니 그대로 둔다 */
@container (min-height: 701px) { #progress-screen.ach-tab .prog-body { max-height: calc(35 * var(--ui-vh, 1vh) - 52px); } }
/* 업적 탭의 "풀쫀득이 획득" 버튼: 잠겨 있을 땐 흐린 남색, 업적을 다 달성하면 초록색으로 켜져 살짝 숨쉬듯 빛나고, 받고 나면 어두운 초록 + 체크 */
#green-claim-button { width: 100%; max-width: 320px; min-height: 44px; margin: 0; padding: 0 16px; border-radius: 999px; font-size: 1.02rem; font-weight: 900; color: rgba(255, 255, 255, 0.55); background: linear-gradient(180deg, rgba(60, 76, 118, 0.85), rgba(34, 44, 76, 0.9)); border: 3px solid #0b1636; box-shadow: 0 4px 0 #0b1636; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); white-space: nowrap; }
#green-claim-button:disabled { cursor: default; opacity: 1; }
#green-claim-button.ready { color: #fff; background: linear-gradient(180deg, #7bf08a, #25b84a 55%, #14892f); border-color: #0a3a14; box-shadow: 0 4px 0 #0a3a14, 0 0 18px rgba(120, 240, 140, 0.65); animation: claim-glow 1.4s ease-in-out infinite; cursor: pointer; }
#green-claim-button.ready:active { transform: translateY(3px); box-shadow: 0 1px 0 #0a3a14; }
#green-claim-button.claimed { color: #b8f5c2; background: linear-gradient(180deg, #2b5a37, #17351f); border-color: #0a1f10; box-shadow: 0 4px 0 #0a1f10; }
@keyframes claim-glow { 0%, 100% { box-shadow: 0 4px 0 #0a3a14, 0 0 10px rgba(120, 240, 140, 0.4); } 50% { box-shadow: 0 4px 0 #0a3a14, 0 0 24px rgba(120, 240, 140, 0.9); } }
html.reduce-motion #green-claim-button.ready { animation: none; }


/* 낮은 화면(폰 360x640, 320x568 등): 카드 4장(2x2)과 시작·뒤로 버튼이 한 화면에 들어가도록 카드 속 그림·글자·간격을 줄인다(제목은 줄이지 않는다) */
@container (max-height: 720px) {
  .charselect-overlay { gap: 8px; }
  .char-cards { gap: 14px 10px; }
  .overlay button.char-card { padding: 20px 6px 8px; gap: 2px; }
  .char-img-wrap { height: 62px; }
  .char-anim { width: 76px; }
  .char-name { font-size: 1.15rem; }
  .char-sub { font-size: 0.74rem; }
  .char-qmark { font-size: 2.8rem; }
  .char-hint { font-size: 0.8rem; line-height: 1.25; min-height: 0; }
  .char-days { top: -11px; padding: 1px 12px; font-size: 0.85rem; }
  .char-lock { width: 28px; height: 28px; top: -4px; }
}
@container (max-height: 610px) {
  .overlay button.char-card { padding: 16px 6px 6px; }
  .char-img-wrap { height: 46px; }
  .char-anim { width: 58px; }
  .char-name { font-size: 1.02rem; }
  .char-qmark { font-size: 2.2rem; }
  #charselect-start-button { height: 2.6rem; }
}


/* 캐릭터 고르기 창은 나타날 때 확대(scale 0.97→1, 일반 .overlay의 overlay-in) 없이 서서히 나타나기만 한다 — 확대되면 카드 4장이 200ms 동안 3% 커지며 위로 움찔 올라와 보였다(폰·미리보기 실측: 카드 폭 97→100px, 위치 -7.6px).
   게임오버 화면과 같은 처리(80-design-system-v2.css의 overlay-fade) */
#charselect-screen { animation: overlay-fade 200ms var(--ease-out); }

/* 불쫀득이를 아직 못 받았을 때 카드 위 진행 알약(출석 연속 일수 n/14): 불쫀득이 주황색 */
.char-days-fire { background: linear-gradient(180deg, #ffd9a8 0%, #ff9d42 50%, #e8641a 100%); border-color: #b8480d; box-shadow: 0 2px 0 #8a3508; color: #4a1c05; }

/* 출석체크 탭의 보상 설명 4줄: 글자를 키우고(0.72rem → 0.86rem) 불쫀득이 색(주황 #ffa24d)으로(10/13 사용자 요청). 업적 탭 풀쫀득이 설명은 같은 크기에 초록 */
#progress-screen.attend-tab .attend-note { font-size: 0.86rem; line-height: 1.3; font-weight: 700; color: #ffa24d; opacity: 1; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); }

/* 캐릭터 선택 확정 연출 — Penpot 시안 3f-1(확인 누름) · 3f-2(선택 캐릭터 강조) · 3f-3(게임으로) */
/* 색은 고른 쫀득이 색(JS가 --fx-* 를 정한다: 물=파랑, 불=주황, 풀=초록). 크기는 시안(폭 390)을 cqw 로 옮긴 값이라 화면 크기에 맞춰 줄어든다 */
.cs-dim, .cs-clip { position: absolute; inset: 0; pointer-events: none; opacity: 0; }
.cs-dim { z-index: 2; background: rgba(0, 0, 0, 0.66); transition: opacity 0.2s ease-out; }
.cs-clip { z-index: 3; overflow: hidden; }
.cs-clip.cs-top { z-index: 6; opacity: 1; }
.cs-clip i { position: absolute; display: block; }
#charselect-screen.pressing { pointer-events: none; }
#charselect-screen.pressing #charselect-start-button { transform: translateY(3px) scale(0.95); transition: transform 0.08s ease-out; }
.cs-ripple { left: var(--bx, 50%); top: var(--by, 70%); width: 56cqw; height: 22cqw; margin: -11cqw 0 0 -28cqw; border-radius: 50%; border: 3px solid var(--fx-ring, #ffd23f); opacity: 0; }
.cs-ripple2 { width: 76cqw; height: 32cqw; margin: -16cqw 0 0 -38cqw; border-width: 2px; }
#charselect-screen.pressing .cs-ripple { animation: cs-ripple 0.55s ease-out both; }
#charselect-screen.pressing .cs-ripple2 { animation: cs-ripple 0.65s ease-out 0.05s both; }
@keyframes cs-ripple { from { opacity: 0.8; transform: scale(0.7); } to { opacity: 0; transform: scale(1.25); } }
/* 고른 카드: 화면 가운데(--cdx/--cdy만큼 이동)로 올라와 114%로 커진다 */
#charselect-screen.confirming .cs-dim { opacity: 1; }
#charselect-screen.confirming .cs-clip { opacity: 1; }
#charselect-screen.confirming button.char-card.selected {
  z-index: 5; transform: translate(var(--cdx, 0), var(--cdy, 0)) scale(1.14);
  transition: transform 0.45s cubic-bezier(0.2, 1.25, 0.35, 1);
  box-shadow: 0 5px 0 var(--gold-edge), 0 0 26px var(--fx-1, rgba(255, 197, 46, 0.65)), inset 0 2px 0 rgba(255, 255, 255, 0.28);
}
.cs-glow { left: var(--cx); top: var(--cy); width: 108cqw; height: 108cqw; margin: -54cqw 0 0 -54cqw; border-radius: 50%; background: radial-gradient(circle, var(--fx-1) 0%, var(--fx-2) 36%, transparent 70%); opacity: 0; }
.cs-rays { position: absolute; left: var(--cx); top: var(--cy); width: 0; height: 0; }
.cs-rays i { left: -2cqw; top: -72cqw; width: 4cqw; height: 144cqw; background: linear-gradient(180deg, transparent, var(--fx-ray) 50%, transparent); transform: rotate(calc(var(--i) * 30deg)); opacity: 0.5; }
.cs-rays i:nth-child(1) { --i: 0; } .cs-rays i:nth-child(2) { --i: 1; } .cs-rays i:nth-child(3) { --i: 2; }
.cs-rays i:nth-child(4) { --i: 3; } .cs-rays i:nth-child(5) { --i: 4; } .cs-rays i:nth-child(6) { --i: 5; }
.cs-ring { left: var(--cx); top: var(--cy); border-radius: 50%; border: 3px solid var(--fx-ring); opacity: 0; }
.cs-ring1 { width: 64cqw; height: 76cqw; margin: -38cqw 0 0 -32cqw; }
.cs-ring2 { width: 85cqw; height: 100cqw; margin: -50cqw 0 0 -42.5cqw; border-width: 2px; }
#charselect-screen.confirming .cs-glow { animation: cs-glow-in 0.4s ease-out both, cs-pulse 1.8s ease-in-out 0.4s infinite alternate; }
#charselect-screen.confirming .cs-rays { animation: cs-rays-in 0.4s ease-out both, cs-spin 12s linear 0.4s infinite; }
#charselect-screen.confirming .cs-ring1 { animation: cs-ring-in 0.45s ease-out both; --o: 0.8; }
#charselect-screen.confirming .cs-ring2 { animation: cs-ring-in 0.55s ease-out 0.05s both; --o: 0.4; }
@keyframes cs-glow-in { from { opacity: 0; transform: scale(0.4); } to { opacity: 0.9; transform: scale(1); } }
@keyframes cs-rays-in { from { opacity: 0; transform: scale(0.5); } to { opacity: 1; transform: scale(1); } }
@keyframes cs-spin { to { transform: rotate(60deg); } }
@keyframes cs-pulse { from { opacity: 0.9; transform: scale(1); } to { opacity: 0.62; transform: scale(1.06); } } /* 효과음이 나는 동안(약 4초) 후광이 숨 쉰다 */
@keyframes cs-tw-loop { from { opacity: 0.95; transform: rotate(45deg) scale(1); } to { opacity: 0.35; transform: rotate(45deg) scale(0.7); } }
@keyframes cs-ring-in { from { opacity: 0; transform: scale(0.6); } to { opacity: var(--o, 0.8); transform: scale(1); } }
.cs-clip .cs-spark, .start-fx .sf-spark { left: calc(var(--cx, var(--px)) + var(--dx) * 1cqw); top: calc(var(--cy, var(--py)) + var(--dy) * 1cqw); width: 3.4cqw; height: 3.4cqw; margin: -1.7cqw 0 0 -1.7cqw; background: var(--fx-spark); box-shadow: 0 0 2.2cqw 0.6cqw var(--fx-1); transform: rotate(45deg) scale(0); opacity: 0; }
#charselect-screen.confirming .cs-spark { animation: cs-twinkle 0.6s ease-out both, cs-tw-loop 1.4s ease-in-out 0.8s infinite alternate; }
#charselect-screen.confirming .cs-spark:nth-of-type(3n+1) { animation-delay: 0.08s, 0.9s; }
#charselect-screen.confirming .cs-spark:nth-of-type(3n+2) { animation-delay: 0.16s, 1s; }
@keyframes cs-twinkle { 0% { opacity: 0; transform: rotate(45deg) scale(0); } 55% { opacity: 1; transform: rotate(45deg) scale(1.25); } 100% { opacity: 0.95; transform: rotate(45deg) scale(1); } }

/* 게임으로: 캐릭터가 서는 자리에서 링 3겹이 퍼지고 빛기둥이 솟는다(게임 화면 위, 눌러도 지나간다) */
.start-fx { position: absolute; inset: 0; z-index: 4; overflow: hidden; pointer-events: none; display: none; }
.start-fx.go { display: block; }
.start-fx i { position: absolute; display: block; left: var(--px); top: var(--py); }
.sf-glow { width: 82cqw; height: 77cqw; margin: -38.5cqw 0 0 -41cqw; border-radius: 50%; background: radial-gradient(circle, var(--fx-1) 0%, var(--fx-2) 40%, transparent 70%); opacity: 0; }
.sf-col { width: 36cqw; height: 133cqw; margin: -133cqw 0 0 -18cqw; background: linear-gradient(0deg, var(--fx-1), var(--fx-2) 50%, transparent); filter: blur(3cqw); transform-origin: 50% 100%; opacity: 0; }
.sf-ring { border-radius: 50%; border: 3px solid var(--fx-ring); opacity: 0; }
.sf-r1 { width: 41cqw; height: 15cqw; margin: -7.5cqw 0 0 -20.5cqw; }
.sf-r2 { width: 67cqw; height: 26cqw; margin: -13cqw 0 0 -33.5cqw; border-width: 2px; }
.sf-r3 { width: 95cqw; height: 36cqw; margin: -18cqw 0 0 -47.5cqw; border-width: 2px; }
.start-fx.go .sf-glow { animation: sf-glow 0.7s ease-out both; }
.start-fx.go .sf-col { animation: sf-col 0.7s ease-out both; }
.start-fx.go .sf-r1 { animation: sf-ring 0.6s ease-out both; }
.start-fx.go .sf-r2 { animation: sf-ring 0.7s ease-out 0.06s both; }
.start-fx.go .sf-r3 { animation: sf-ring 0.8s ease-out 0.12s both; }
.start-fx.go .sf-spark { animation: sf-spark 0.7s ease-out both; }
@keyframes sf-glow { 0% { opacity: 0; transform: scale(0.5); } 30% { opacity: 0.85; } 100% { opacity: 0; transform: scale(1.15); } }
@keyframes sf-col { 0% { opacity: 0; transform: scaleY(0.1); } 35% { opacity: 0.55; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(1.05); } }
@keyframes sf-ring { 0% { opacity: 0.9; transform: scale(0.45); } 100% { opacity: 0; transform: scale(1.2); } }
@keyframes sf-spark { 0% { opacity: 0; transform: rotate(45deg) scale(0); } 40% { opacity: 1; transform: rotate(45deg) scale(1.2); } 100% { opacity: 0; transform: rotate(45deg) scale(0.6) translateY(-3cqw); } }
html.reduce-motion .cs-dim, html.reduce-motion .cs-clip, html.reduce-motion .start-fx { display: none; }
