/*
  지몽 "밤의 서고" 테마. 한국어 지몽 화면(랜딩·입력·예고·리포트·공유)과 ko 사전에만 링크해요.
  세계: 등불 하나 켠 밤의 서고. 먹빛 바탕, 한지 미색 글씨, 빛바랜 금분 강조 하나, 명조.
  링크 순서: /styles/tokens.css → /styles/base.css → /styles/theme-ko.css → 화면 CSS(/src/*.css, /src/landing-ko.css).
  tokens.css와의 관계: 이 파일은 tokens.css의 같은 이름 변수를 :root에서 덮어쓸 뿐이고 tokens.css·base.css는 한 글자도 바꾸지 않아요
  (다른 로케일과 classic 화면은 이 파일을 링크하지 않아 그대로예요). tokens.css 머리의 "웹폰트는 쓰지 않아요"는 그 파일 혼자 쓰일 때의 말이고,
  이 테마가 얹히면 명조 한 family(Noto Serif KR 500, /fonts/ 자체 호스팅)를 써요.
  색은 6자리 hex로 써요 (tests/theme-ko.test.js가 읽고 대비를 재요). 글씨 짝은 모두 7:1 이상, 경계와 그림은 3:1 이상.
  구역(뒤 과제는 자기 구역 끝에만 덧붙여요):
    ==== tokens ====   색·서체 토큰 덮어쓰기
    ==== fonts ====    @font-face (scripts/fonts-ko.mjs가 써 넣어요. 손으로 고치지 않아요)
    ==== base ====     base.css 공용 요소의 테마 손질
    ==== landing ====  Task 4
    ==== intake ====   Task 5
    ==== reading ====  Task 6 (예고·리포트·문답)
    ==== share ====    Task 6 (공유 화면)
    ==== library ====  Task 7 (사전·글 겉모습)
*/

/* ==== tokens ==== */
/* 색·서체 토큰 덮어쓰기 */
:root {
  /* 테마가 새로 두는 이름 */
  --color-paper: #f1e9d8;       /* 한지 미색. 먹빛 바탕 위 14.83:1 */
  --color-gold: #d6ba78;        /* 빛바랜 금분. 강조는 이것 하나. 먹빛 바탕 위 글씨로도 9.52:1 */
  --color-gold-ink: #15171d;    /* 금분 위 글씨 9.52:1 */

  /* 색: 바탕과 글씨 */
  --color-bg: #15171d;          /* 먹빛 바탕 */
  --color-surface: #1e212a;     /* 상자(카드, 입력칸, 칩). 미색 글씨 13.31:1 */
  --color-raised: #242833;      /* 상자 위에 올린 판. 미색 글씨 12.19:1 */
  --color-wash: #1a1d25;        /* 구역을 나누는 옅은 띠 */
  --color-ink: #f1e9d8;         /* 글씨 (한지 미색) */
  --color-muted: #cfc6b4;       /* 보조 글씨. 바탕 10.57:1, 상자 9.49:1, 올린 판 8.69:1. 흐리게 쓰지 않아요 */
  --color-line: #2f3340;        /* 아주 옅은 나눔선 (글씨에는 쓰지 않아요) */
  --color-line-strong: #8a8273; /* 꼭 보여야 하는 경계. 바탕 4.71:1, 상자 4.23:1 */
  --color-veil: #2a2e3a;        /* 비활성 버튼, 누르는 중인 요소. 보조 글씨 7.99:1 */
  --color-lock-from: #2a2e3a;   /* 가려진 줄 바탕의 어두운 쪽 */
  --color-lock-to: #3a3f4e;     /* 가려진 줄 바탕의 밝은 쪽. 그 위 금분 자물쇠 5.57:1 */
  --color-wash-indigo: #1b1e2b; /* 구역 띠: 쪽빛이 도는 먹 (사주, 리포트 차례) */
  --color-wash-warm: #211f19;   /* 구역 띠: 등불빛이 도는 먹 (이어지는 말, 핵심 문장) */
  --color-tier-mint: #8cc4b0;   /* 티어 점·그림 선 (글씨에는 쓰지 않아요) */
  --color-tier-amber: #dcae58;
  --color-tier-indigo: #9aa5e6;

  /* 색: 강조는 금분 하나. 누르는 것, 고른 것, 진행 막대 */
  --color-accent: #d6ba78;      /* 금분. 바탕 9.52:1, 상자 8.54:1, 올린 판 7.82:1, 가림 7.19:1 */
  --color-accent-ink: #15171d;  /* 금분 위 먹 글씨 9.52:1 */
  --color-accent-press: #e0c68a;/* 누르는 중. 어두운 바탕에서는 한 단계 밝아져요 (먹 글씨 10.76:1, 고른 칩 바탕 위 글씨로 9.25:1) */
  --color-accent-soft: #26251c; /* 고른 칩·고른 요금 바탕. 금분 글씨 8.18:1 */
  --color-notice: #1e212a;      /* 차분한 안내 바탕 */
  --color-selection: #453c28;   /* 글자를 고를 때. 미색 글씨 9.01:1 */

  /* 색: 머리 색면. 결과 화면의 요약 카드와 사전 머리 */
  --color-field: #1e212a;
  --color-field-ink: #f1e9d8;   /* 13.31:1 */
  --color-field-muted: #cfc6b4; /* 9.49:1 */

  /* 색: 상징 그림. 그림은 밝은 종이 위에 그린 것이라, 그림 칸을 장부에 붙인 한지 쪽지로 두고(밝기만 낮춤) 물감은 그대로 써요.
     그림은 글씨가 아니에요 (7:1 대상 아님). 가린 이름의 칸만 종이 대신 먹 바탕이에요 (아래 base 구역) */
  --icon-indigo: #4252c4;
  --icon-navy: #26318a;
  --icon-coral: #f07a5f;
  --icon-amber: #f6b743;
  --icon-mint: #3fb495;
  --icon-sky: #8fb4f5;
  --icon-pale: #dfe4fb;
  --icon-cream: #fff4dd;
  --icon-white: #ffffff;
  --icon-ink: #2a2f45;
  --tile-indigo: #d9dbe6;
  --tile-amber: #e8dcc0;
  --tile-mint: #d3e0d6;
  --tile-coral: #e8d5cd;
  --tile-sky: #d5dce8;

  /* 서체: 지몽의 말과 본문은 명조, 기능 문구(버튼·입력칸·도움말·오류·고지)는 시스템 고딕.
     일반 serif는 맨 뒤에 둬요 (앞에 두면 뒤 이름이 죽어요). iOS에는 한글 명조 시스템 서체가 없어, 웹폰트가 오기 전에는 고딕으로 보여요.
     서체 조각은 한글만 담아 한자(글의 豚 같은)는 대체 서체로 그려요. 고딕보다 먼저 명조로 내려가게 macOS 이름(AppleMyungjo),
     CJK 명조(Noto Serif CJK KR, Source Han Serif K), iOS·macOS의 Hiragino Mincho ProN(한글은 없어 한글은 그다음으로 넘어가요)을 둬요 */
  --font-serif: "Noto Serif KR", "AppleMyungjo", "Apple Myungjo", "Nanum Myeongjo", "Batang", "바탕", "Noto Serif CJK KR", "Source Han Serif K", "Hiragino Mincho ProN", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", serif;
  --font-ui: "Apple SD Gothic Neo", "Noto Sans KR", "Noto Sans CJK KR", "Malgun Gothic", "맑은 고딕", system-ui, -apple-system, sans-serif;
  --font-body: var(--font-serif);
  --font-display: var(--font-serif);
  --font-numeric: var(--font-ui);
  --weight-serif: 500;          /* 명조는 실은 굵기 하나(500). 제목은 합성 굵기 없이 이 굵기로 */
  --tracking-display: -0.02em;
  --tracking-body: 0em;

  /* 그림자: 먹빛 위에서는 색 그림자 대신 어둠 */
  --shadow-raise: 0 2px 6px #0000004d, 0 8px 20px #00000066;
  --shadow-card: 0 1px 3px #00000040, 0 8px 28px #00000059;
  --shadow-float: 0 -8px 24px #00000066;
  --shadow-soft: 0 1px 2px #00000033, 0 6px 18px #00000040;
  --shadow-hero: 0 2px 4px #00000040, 0 16px 40px #00000073;

  color-scheme: dark;
}

/* 언어 고르기 판 머리: 공용 13px는 먹빛에서 작아요 */
.locale-switcher-heading {
  font-size: var(--text-small);
  letter-spacing: 0;
}

/* ==== fonts ==== */
/* @font-face. scripts/fonts-ko.mjs가 아래 두 표시 사이를 통째로 다시 써요 */
/* FONTS:START */
@font-face{font-family:"Noto Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-2-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-3-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-4-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-5-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-6-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-7-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-8-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-9-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-10-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-11-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-12-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-13-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-14-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-15-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-16-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-17-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-18-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-19-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-20-500-normal.woff2) format("woff2");unicode-range:U+caf4-cb47,U+cb4a-cb90}
@font-face{font-family:"Noto Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-21-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-22-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-23-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-24-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-25-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-26-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-27-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-28-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-29-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-30-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-31-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-32-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-33-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-34-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-35-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-36-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-37-500-normal.woff2) format("woff2");unicode-range:U+bf07,U+bf09-bf3f,U+bf41-bf4f,U+bf52-bf54,U+bf56-bfa6}
@font-face{font-family:"Noto Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-38-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-39-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-40-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-41-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-42-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-43-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-44-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-45-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-46-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-47-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-48-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-49-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-50-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-51-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-52-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-53-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-54-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-55-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-56-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-57-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-58-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-59-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-60-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-61-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-62-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-63-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-64-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-65-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-70-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-87-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-89-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-91-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-92-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-94-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-95-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-99-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-100-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-101-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-102-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-103-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-104-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-105-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-106-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-107-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-108-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-109-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-110-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-111-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-112-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-113-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-114-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-115-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-116-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-117-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-118-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-119-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-latin-ext-500-normal.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 Serif KR";font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-serif-kr/noto-serif-kr-latin-500-normal.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}
/* FONTS:END */

/* ==== base ==== */
/* base.css 공용 요소의 테마 손질 */
html {
  scrollbar-color: var(--color-line-strong) var(--color-bg);
}

body {
  font-family: var(--font-serif);
}

/* 제목: 합성 굵기 대신 명조의 실은 굵기로. 크기와 여백이 위계를 맡아요 */
h1,
h2,
h3 {
  font-weight: var(--weight-serif);
}

/* 기능 문구는 시스템 고딕: 버튼, 입력칸, 칩, 도움말, 오류, 안내, AI 고지, 바닥 */
.button,
.field,
.textarea,
.chip,
.hint,
.error,
.notice,
.ai-label,
.ai-footer,
.site-footer,
.locale-switcher-button,
.locale-switcher-menu {
  font-family: var(--font-ui);
}

/* 으뜸 버튼: 금분 바탕에 먹 글씨 (9.52:1). 누르거나 올리면 한 단계 밝은 금분 (10.76:1) */
.button-primary {
  background: var(--color-gold);
  color: var(--color-gold-ink);
}

/* 입력칸: 먹빛 바탕에서 칸이 어디인지 보이게 경계를 둬요. 초점은 금분, 틀린 칸은 미색 점선 (base.css 규칙이 이겨요) */
.field,
.textarea {
  border-color: var(--color-line-strong);
}

/* 초점 링과 글자 고르기 */
:focus-visible {
  outline-color: var(--color-gold);
}

::selection {
  background: var(--color-selection);
  color: var(--color-paper);
}

/* AI 결과물 표시와 고지: 숨기거나 흐리게 하지 않아요 (보조 글씨 색 그대로, 바탕 10.57:1) */
.ai-label,
.ai-footer {
  color: var(--color-muted);
  opacity: 1;
  visibility: visible;
}

/* 가린 이름의 칸: 종이 쪽지 대신 먹 바탕에 금분 자물쇠 (7.19:1) */
.sym-tile-locked {
  background: var(--color-veil);
}

/* 언어 고르기 판: 바탕과 같은 먹빛이면 묻히므로 한 단 올려요 */
.locale-switcher-menu {
  background: var(--color-raised);
  box-shadow: var(--shadow-card), 0 0 0 var(--hairline) var(--color-line-strong);
}

.locale-switcher-menu a:hover,
.locale-switcher-menu a:focus-visible {
  background: var(--color-veil);
}

/* ==== landing ==== */
/* Task 4: 새 지몽 랜딩에서 공용 요소에 얹는 것 (레이아웃은 src/landing-ko.css) */

/* ==== intake ==== */
/* Task 5: 입력(꿈 → 생년월일 → 고민)·대기 화면 */
/* src/intake.css·birth-date-picker.css는 이 파일 뒤에 실려요. 그 규칙을 덮는 곳은 .intake나 body를 앞에 붙여 한 단 더 구체적으로 써요.
   생년월일 고르기 판(dialog)은 body 바로 아래에 붙으므로 .intake 밖이에요. */

/* 서체: 명조는 지몽의 말(질문 제목, 그 아래 한 줄, 해몽 예시 글)에만. 도움말·칸·버튼·고르기 판은 시스템 고딕 */
.intake {
  font-family: var(--font-ui);
}

.intake h1,
.intake .intake-voice,
.intake .sample-text {
  font-family: var(--font-serif);
}

.intake .sub-row,
.intake .choice,
.intake .birthday-trigger,
.intake select,
body dialog.birthday-sheet,
body .birthday-sheet button,
body .birthday-manual input,
body .birthday-manual [data-era] {
  font-family: var(--font-ui);
}

/* 한글 낱말이 줄 끝에서 쪼개지지 않게 */
.intake h1,
.intake .intake-voice,
.intake .lead {
  word-break: keep-all;
  text-wrap: pretty;
}

/* 지몽의 한 줄: 제목을 이어 말하는 목소리. 제목보다 작고 도움말보다 또렷하게, 한지 미색 그대로 (바탕 14.83:1) */
.intake .intake-voice {
  margin: 0 0 var(--space-4);
  font-size: var(--text-lead);
  line-height: var(--line-body);
  color: var(--color-ink);
}

/* 진행 막대의 빈 길: 바탕과 같은 상자색이면 묻히므로 나눔선 색으로 */
.intake .intake-count::before {
  background: var(--color-line);
}

/* 누르는 칸의 경계: 먹빛 위에서 상자가 묻히지 않게 (바탕 4.71:1). 고른 칸의 금분 테두리는 intake.css 규칙이 이겨요 */
.intake .chip:not([aria-pressed="true"]),
.intake .choice:not([aria-pressed="true"]),
.intake .calendar label,
.intake .birthday-trigger,
.intake .consent {
  border-color: var(--color-line-strong);
}

/* 답한 칸의 접힌 줄은 조용한 나눔선만 */
.intake .sub-row {
  border-color: var(--color-line);
}

/* 꿈·고민·이름 칸의 초점: 금분 3px 고리 (base.css는 칸의 초점 고리를 끄고 테두리만 바꿔요) */
.intake .textarea:focus-visible,
.intake .field:focus-visible {
  outline: var(--focus-width) solid var(--color-gold);
  outline-offset: var(--hairline);
}

/* 다른 나라 입력(시각·태어난 곳 고르기). ko 화면에는 나오지 않지만 테마가 얹히면 같은 서체·크기 */
.intake select {
  font-size: var(--text-body);
}

/* 오류 느낌표: intake.css의 그림은 먹색 동그라미라 먹빛 위에서 사라져요. 한지 미색 동그라미에 먹빛 느낌표로 다시 그려요 */
.intake .error:not(:empty)::before {
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 73%, var(--color-bg) 1.6px, transparent 2.1px),
    linear-gradient(var(--color-bg), var(--color-bg)) 50% 6px / 3px 8px no-repeat,
    var(--color-paper);
}

/* 할인 전 값(줄 그음): 금분 버튼 위에서는 먹 글씨 (9.52:1). 닫힌 버튼에서는 intake.css 규칙이 이겨요 */
.intake .cta-price del {
  color: var(--color-gold-ink);
}

/* 아래에 붙은 버튼 띠: 먹빛 위에서는 그림자가 안 보이므로 위쪽에 나눔선 */
.intake .intake-cta {
  border-top: var(--hairline) solid var(--color-line);
}

/* 생년월일 고르기 판: 바탕보다 한 단 올린 판, 위 가장자리에 경계. 뒤 화면은 검게 가라앉혀요 (흐림 정도는 birth-date-picker.css 그대로) */
body dialog.birthday-sheet {
  background: var(--color-raised);
  border-top: var(--hairline) solid var(--color-line-strong);
  box-shadow: var(--shadow-hero);
}

body .birthday-sheet::backdrop {
  background: #000000;
}

body .birthday-option[aria-selected="true"] {
  background: var(--color-veil);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

body .birthday-sheet [data-date-mode] {
  border: var(--hairline) solid var(--color-line-strong);
}

body .birthday-manual input {
  border-color: var(--color-line-strong);
}

/* 판 제목("생년월일")은 기능 문구라 고딕 (base.css가 h2에 제목 서체를 줘요) */
body .birthday-sheet h2 {
  font-family: var(--font-ui);
}

/* 대기 화면의 달: 칸 없이 금분 선으로 그린 달 하나 (선 그림 규칙은 reading 구역 끝 "상징 그림") */

/* 오류 줄: 아래에 붙은 버튼(과 아래 띠의 쿠폰 줄) 밑에 깔리지 않게, 화면 안으로 끌어올 때 그만큼 띄워요 (src/intake.js showError, ko만) */
.intake .error {
  scroll-margin-top: var(--space-5);
  scroll-margin-bottom: calc(var(--button-height) + var(--sticky-gap) * 2 + var(--space-7) + var(--safe-bottom));
}

/* 고르기 판의 두 버튼: 직접 입력일 때 "돌려서 고르기" 옆에서는 "이 날짜로 정하기 →"가 390px에서 두 줄로 접혀요.
   글자를 줄이지 않고, 한 줄에 둘이 안 들어가면 주 버튼이 아래 줄을 통째로 써요 (높이 60px 그대로) */
body .birthday-sheet-actions {
  flex-wrap: wrap;
}

body .birthday-sheet [data-date-mode],
body .birthday-sheet [data-date-confirm] {
  flex: 1 0 auto;
  white-space: nowrap;
}

body .birthday-sheet [data-date-confirm] {
  max-width: none;
}

/* 1단계 고정 띠 (2026-10-12 소유자 승인): 칩 하나로 끝낼 수 있게 '다음'이 늘 엄지 아래에 있어요. 2·3단계와 달리 꿈 칸에 적는 동안에도 숨기지 않고,
   키보드가 올라오면 intake.js가 root에 둔 --kb(보이는 화면 바닥까지의 거리)만큼 띠만 올려요. 띠 자신만 움직여 단계(section)는 기준 상자가 되지 않아요 */
.intake .intake-cta-dream {
  transform: translateY(calc(var(--kb, 0px) * -1));
}

/* 꿈 칸에 적는 동안 칸이 고정 띠(그리고 그 위 키보드) 밑에 깔리지 않게, 칸을 화면에 끌어올 때 띠 높이만큼 띄워요 */
.intake [data-step="dream"] .textarea {
  scroll-margin-bottom: calc(var(--button-height) + var(--space-3) * 2 + var(--space-4) + var(--safe-bottom));
}

/* 띠가 칸이나 오류 줄을 가리지 않게 1단계 끝에 띠보다 넉넉한 자리 (2·3단계와 같은 값) */
.intake [data-step="dream"] {
  padding-bottom: calc(var(--button-height) + var(--space-9) + var(--safe-bottom));
}

/* 지몽의 얼굴 (2026-10-12 소유자 요청): 단계 제목 옆에서 듣고 있는 지몽. 장부의 말하는 이 칸처럼 둥근 테 안에 금분 실선 하나.
   휴대폰 80px로 제목 왼쪽에 띄워 높이를 늘리지 않고, 칩·칸은 그림 아래에서 시작해요 */
.intake .intake-face {
  float: left;
  width: 80px;
  height: 80px;
  margin: var(--space-1) var(--space-4) var(--space-3) 0;
  border-radius: 50%;
  object-fit: cover;
  object-position: 50% 30%;
  box-shadow: 0 0 0 var(--hairline) var(--color-gold), 0 0 0 var(--space-1) var(--color-bg), 0 0 0 calc(var(--space-1) + var(--hairline)) var(--color-line);
}

.intake .intake-face ~ :is(.chips, .subs, .hint, .textarea) {
  clear: both;
}

/* 제목과 지몽의 한 줄, 설명은 그림 오른쪽의 한 단으로 (그림 아래로 글이 비뚤게 흘러들지 않고, 제목 초점 테도 제목만 둘러요) */
.intake .intake-face ~ :is(h1, .intake-voice, .lead) {
  display: flow-root;
}

@media (min-width: 960px) {
  .intake .intake-face {
    width: 112px;
    height: 112px;
    margin-right: var(--space-5);
  }
}

/* ==== reading ==== */
/* Task 6: 예고·리포트·문답 (지몽의 꿈 장부) */
/* src/reading-page.css는 이 파일 뒤에 실려요. 그 규칙을 덮는 곳은 .reading(예고·리포트 main과 공유 main 모두)을 앞에 붙여 한 단 더 구체적으로 써요.
   장부 한 장: 머리 색면과 지몽의 답 말풍선은 한지 미색 종이에 먹 글씨. 나머지는 먹빛 그대로. */
.reading {
  --color-ledger: #ece3cf;           /* 장부 종이 */
  --color-ledger-ink: #1b1c21;       /* 종이 위 먹 글씨 13.3:1 */
  --color-ledger-muted: #4a4335;     /* 종이 위 보조 글씨 7.7:1 */
  --color-ledger-line: #7d6f52;      /* 종이 위 테두리 선 (글씨 아님) 3.9:1 */
  --color-ink-blot: #0b0c0f;         /* 먹빛 위 가린 말: 더 진한 먹 번짐. 금분 자물쇠 10.6:1 */
  --color-ink-blot-edge: #262932;    /* 번짐 가장자리 */
  --color-ledger-blot: #26272d;      /* 종이 위 가린 말: 먹 번짐. 금분 자물쇠 7.9:1 */
  --color-ledger-blot-edge: #4a463d; /* 종이 위 번짐 가장자리 */
}

/* 문패: 남빛 칸 대신 지몽 인장(知夢) 그림 (랜딩 .jm .brand와 같은 그림) */
.reading .reading-brand a {
  color: var(--color-gold);
  font-weight: var(--weight-serif);
}

.reading .reading-brand a::before {
  background: url("/images/jimong/seal.webp") center / contain no-repeat;
}

/* 장부 이름: 등불 아래 펼친 장부 그림 띠, 그 아래 금분 명조 이름과 금분 한 줄. 그림 위에는 글씨를 두지 않아요 */
.reading .ledger-title {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  column-gap: var(--space-3);
  max-width: none;
  margin: 0 0 var(--space-4);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-title);
  font-weight: var(--weight-serif);
  line-height: var(--line-tight);
  letter-spacing: 0.04em;
}

.reading .ledger-title::before {
  content: "";
  grid-column: 1 / -1;
  aspect-ratio: 16 / 5;
  margin: 0 0 var(--space-4);
  border-radius: var(--radius);
  background: var(--color-surface) url("/images/jimong/ledger.webp") center 56% / cover no-repeat;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line);
}

.reading .ledger-title::after {
  content: "";
  height: var(--hairline);
  background: var(--color-gold);
}

/* 머리 색면을 장부 한 장으로: 한지 미색 종이에 먹 글씨, 안쪽에 가는 괘선 하나 */
.reading .reading-hero {
  --color-field: var(--color-ledger);
  --color-field-ink: var(--color-ledger-ink);
  --color-field-muted: var(--color-ledger-muted);
  color: var(--color-ledger-ink);
  outline: var(--hairline) solid var(--color-ledger-line);
  outline-offset: calc(var(--space-2) * -1);
}

.reading .reading-hero h1,
.reading .reading-hero a,
.reading .reading-hero strong {
  color: var(--color-ledger-ink);
}

.reading .reading-tone {
  font-family: var(--font-ui);
}

/* 가린 말: 남빛 막대 대신 먹 번짐. ○와 aria-hidden, 옆의 "가린 말"은 그대로예요 */
.reading .veil {
  background: radial-gradient(120% 160% at 35% 50%, var(--color-ink-blot) 0 52%, var(--color-ink-blot-edge) 100%);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-ink-blot-edge);
  border-radius: 40% 55% 45% 60% / 60% 45% 55% 40%;
}

.reading .veil::before {
  background: var(--color-gold);
}

.reading .reading-hero .veil {
  background: radial-gradient(120% 160% at 35% 50%, var(--color-ledger-blot) 0 52%, var(--color-ledger-blot-edge) 100%);
  box-shadow: none;
}

.reading .ledger-veil-note {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  max-width: none;
  margin: calc(var(--space-1) * -1) 0 var(--space-5);
  color: var(--color-muted);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  line-height: var(--line-body);
}

/* 장 머리: 옅은 그림 칸 대신 올린 판에 금분 선 한 줄, 장 그림은 금분 선 */
.reading .chapter-head {
  background: var(--color-raised);
  border-bottom: var(--hairline) solid var(--color-gold);
}

.reading .chapter-icon,
.reading .toc-icon,
.reading .overview-icon {
  background: transparent;
  color: var(--color-gold);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

.reading .tier-tag {
  background: var(--color-veil);
  color: var(--color-ink);
  font-family: var(--font-ui);
}

/* 기능 문구는 시스템 고딕: 가격·요금 칸·비교 표·동의·시계·장 넘기기·차례·문답 칸의 버튼과 횟수 */
.reading .reading-offer,
.reading .tier,
.reading .tier-table,
.reading .consent,
.reading .offer-line,
.reading .pager,
.reading .chapter-nav,
.reading .report-overview,
.reading .report-meta,
.reading .toc-divider,
.reading .dialogue-more,
.reading .dialogue-remaining,
.reading .share-box,
.reading .report-end,
.reading .upgrade,
.reading .packs {
  font-family: var(--font-ui);
}

.reading .reading-offer h2,
.reading .report-end h3,
.reading .upgrade h2 {
  font-family: var(--font-serif);
}

.reading .offer-pct {
  color: var(--color-gold);
}

/* 문답: 지몽의 답은 장부 종이(명조), 손님의 물음은 먹빛 판(고딕) */
.reading .turn-a {
  background: var(--color-ledger);
  color: var(--color-ledger-ink);
  font-family: var(--font-serif);
  box-shadow: var(--shadow-soft), inset 0 0 0 var(--hairline) var(--color-ledger-line);
}

.reading .turn-q {
  background: var(--color-bg);
  color: var(--color-ink);
  font-family: var(--font-ui);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.reading .dialogue-examples .chip {
  border: var(--hairline) solid var(--color-line-strong);
}

/* 109 안내: 화면에서 가장 먼저 보이게. 종이 칸에 먹 글씨, 금분 테두리, 한 단 큰 굵은 글 */
.reading .notice[role="alert"] {
  background: var(--color-ledger);
  color: var(--color-ledger-ink);
  border: var(--border-width) solid var(--color-gold);
  box-shadow: 0 0 0 var(--space-1) var(--color-bg), 0 0 0 calc(var(--space-1) + var(--hairline)) var(--color-gold);
  font-size: var(--text-lead);
  font-weight: var(--weight-bold);
}

/* 오류 느낌표: reading-page.css의 data URI는 먹색이라 사라져요. 미색 동그라미에 먹 막대와 점 (intake 구역과 같은 그림) */
body .reading .error:not(:empty)::before {
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 73%, var(--color-bg) 1.6px, transparent 2.1px),
    linear-gradient(var(--color-bg), var(--color-bg)) 50% 6px / 3px 8px no-repeat,
    var(--color-paper);
}

/* 아래 고정 버튼 띠: 먹빛 위에서는 그림자가 안 보이므로 위쪽에 나눔선 */
.reading .sticky-cta,
.reading .pager {
  border-top: var(--hairline) solid var(--color-line);
}

/* 상징 그림 (지몽 다듬기 1): 파스텔 물감 그림과 밝은 칸 대신 먹·금분 선 그림. 그림 파일(shared/symbol-art.js)은 그대로이고 칠하는 법만 바꿔요.
   ko 사전은 이 파일을 같이 쓰지만 그대로 두려고 :root가 아니라 지몽 화면(.reading 예고·리포트·공유·대기, .intake 대기) 안에서만 바꿔요.
   먹빛 판 위에서는 금분 선(바탕 9.52:1), 장부 종이(머리 카드) 위에서는 먹 선(13.3:1). 칸은 물감 바탕 없이 가는 테두리 하나. 가린 이름의 자물쇠 칸은 그대로 */
.reading .sym-tile:not(.sym-tile-locked),
.intake .sym-tile:not(.sym-tile-locked) {
  --mark: var(--color-gold);
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.reading .reading-hero .sym-tile:not(.sym-tile-locked) {
  --mark: var(--color-ledger-ink);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-ledger-line);
}

.reading .sym :is(.in, .nv, .co, .am, .mi, .sk, .pa, .cr, .wh),
.intake .sym :is(.in, .nv, .co, .am, .mi, .sk, .pa, .cr, .wh) {
  fill: none;
  stroke: var(--mark);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.reading .sym :is(.s, .sw, .s-thick),
.intake .sym :is(.s, .sw, .s-thick) {
  stroke: var(--mark);
  stroke-width: 1.75;
}

.reading .sym .s-thick,
.intake .sym .s-thick {
  stroke-width: 3;
}

/* 눈동자 같은 먹 점은 선 색으로 채워요 */
.reading .sym .ik,
.intake .sym .ik {
  fill: var(--mark);
  stroke: none;
}

/* 대기 화면: 칸 없이 달 선 그림 하나, 궤도의 세 점도 금분 */
.reading .wait-moon:not(.sym-tile-locked),
.intake .wait-moon:not(.sym-tile-locked) {
  box-shadow: none;
}

.reading .wait-orbit span,
.intake .wait-orbit span {
  background: var(--color-gold);
}

/* 사주 기둥 칸 (2026-10-12 대비 결함 고침): 밝은 물감 칸 위 미색 글씨가 1.1:1로 거의 안 보였어요. 장부 괘선처럼 먹 칸에 금분 실선, 미색 글씨 (13.31:1).
   기운은 칸 글("큰 쇠")이 말하므로 아래 물감 선도 금분 하나로. reading-page.css의 .pillar-cell[data-element](뒤에 실림)를 이기려고 한 단 더 구체적으로 써요 */
.reading .pillar-cell,
.reading .pillar-cell[data-element] {
  background: var(--color-surface);
  color: var(--color-ink);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

/* 장부의 남은 장 (2026-10-12 소유자 승인): 결제 영역을 SaaS 가격표 대신 장부의 남은 장으로. 모양·서체·색만 바꾸고
   청약철회 동의, 가격, 부가세 표기, 버튼 크기(60px)는 그대로예요. 금분 말고 다른 색(산호 맥박 점, 흰 알약, 물감 티어 점)은 쓰지 않아요 */

/* 제목: 지몽 인장 하나와 명조 하오체 물음, 아래 금분 실선 */
.reading .reading-offer h2 {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding-bottom: var(--space-4);
  border-bottom: var(--hairline) solid var(--color-gold);
  word-break: keep-all;
}

.reading .reading-offer h2::before {
  content: "";
  flex: none;
  width: var(--space-7);
  height: var(--space-7);
  background: url("/images/jimong/seal.webp") center / contain no-repeat;
}

/* 남은 시간 띠: 먹 바탕에 가는 괘선, 시계는 금분 가는 테, 점은 금분 (움직임은 reading-page.css의 reduce 규칙이 멈춰요) */
.reading .offer-line {
  background: var(--color-surface);
  color: var(--color-ink);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.reading .offer-timer {
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

.reading .offer-timer [data-timer] {
  color: var(--color-gold);
}

.reading .offer-dot {
  background: var(--color-gold);
}

.reading .offer-line.is-expired {
  box-shadow: none;
}

/* 요금 칸: 장부 줄처럼 모서리를 줄이고 가는 테. 이름과 부제는 지몽의 말이라 명조, 가격은 고딕 숫자 그대로 */
.reading .tier {
  border-radius: var(--radius-small);
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.reading .tier[aria-checked="true"] {
  background: var(--color-accent-soft);
  box-shadow: none;
}

.reading .tier-name {
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.reading .tier-note {
  display: block;
  margin-top: var(--space-1);
  color: var(--color-ink);
  font-family: var(--font-serif);
  font-size: var(--text-small);
  font-weight: var(--weight-serif);
  line-height: var(--line-body);
  word-break: keep-all;
}

.reading .tier-covers,
.reading .tier-price,
.reading .tier-regular {
  font-family: var(--font-ui);
}

/* 비교 표: 둥근 상자와 체크 그림 대신 장부 괘선. 위아래 금분 실선, 줄 사이 가는 선, 포함은 금분 점, 아니면 먹 줄표 */
.reading .tier-compare-title {
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.reading .tier-table {
  border: 0;
  border-radius: 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
}

.reading .tier-table thead th {
  background: transparent;
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.reading .tier-table .is-full {
  background: var(--color-wash-warm);
}

.reading .tier-check .glyph {
  display: none;
}

.reading .tier-check::before {
  content: "";
  display: block;
  width: var(--space-3);
  height: var(--space-3);
  margin: 0 auto;
  border-radius: 50%;
  background: var(--color-gold);
}

@media (forced-colors: active) {
  .reading .tier-check::before {
    background: CanvasText;
  }
}


/* 동의 전 결제 버튼: 꺼진 회색 판 대신 금분 테 (금분 글씨 9.52:1). 동의하면 금분 판이 돼요 */
.reading .reading-offer [data-pay]:disabled {
  background: transparent;
  color: var(--color-gold);
  box-shadow: inset 0 0 0 var(--border-width) var(--color-gold);
}

/* 티어 점: 물감 세 색 대신 금분 하나로 빈·반·찬 점 (색만으로 나누지 않아요) */
.reading .tier-tag[data-tile="mint"]::before {
  background: transparent;
  box-shadow: inset 0 0 0 calc(var(--hairline) * 1.5) var(--color-gold);
}

.reading .tier-tag[data-tile="amber"]::before {
  background: linear-gradient(90deg, var(--color-gold) 50%, transparent 50%);
  box-shadow: inset 0 0 0 calc(var(--hairline) * 1.5) var(--color-gold);
}

.reading .tier-tag[data-tile="indigo"]::before {
  background: var(--color-gold);
}

/* 머리 카드(장부 한 장) 오른쪽 위의 옅은 달 고리 두 개는 예전 세계의 장식이라 지워요. 안쪽 괘선 하나만 남겨요 */
.reading .reading-hero::before,
.reading .reading-hero::after {
  content: none;
}

/* 대기 화면 세 곳 (입력 뒤, 리포트 쓰는 중, 결제 확인, 2026-10-12): 달 아이콘·점선 궤도·회색 체크리스트·뼈대 대신
   장부 앞의 지몽 그림과 인장, 금분 괘선의 장부 줄. 지난 줄은 금분 점, 지금 줄은 금분 테 점과 금분 밑줄이 차올라요. 움직임 줄이기면 멈춰요 */
.wait-art.wait-art-jimong {
  width: auto;
  height: min(36vh, 360px);
  height: min(36svh, 360px);
  aspect-ratio: 4 / 5;
  margin: 0 auto var(--space-5);
}

.wait-portrait {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 30%;
  border-radius: var(--radius-small);
  box-shadow: 0 0 0 var(--hairline) var(--color-gold), 0 0 0 var(--space-1) var(--color-bg), 0 0 0 calc(var(--space-1) + var(--hairline)) var(--color-line);
}

.wait-seal {
  position: absolute;
  right: calc(var(--space-3) * -1);
  bottom: calc(var(--space-3) * -1);
  width: var(--space-7);
  height: var(--space-7);
  background: url("/images/jimong/seal.webp") center / contain no-repeat;
}

.reading .wait-title,
.intake [data-step="waiting"] > h1 {
  word-break: keep-all;
  text-wrap: balance;
}

.reading .wait-list,
.intake .wait-steps {
  background: transparent;
  border-radius: 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  font-family: var(--font-serif);
}

.reading .wait-list li + li,
.intake .wait-steps li + li {
  border-top-color: var(--color-line);
}

.reading .wait-list .is-done .wait-dot {
  background: var(--color-gold);
}

.reading .wait-list .is-active .wait-dot {
  background: transparent;
  box-shadow: inset 0 0 0 var(--border-width) var(--color-gold);
}

.reading .wait-list .is-active,
.intake .wait-steps li.is-active {
  font-weight: var(--weight-serif);
}

/* 뼈대(회색 반짝임)는 SaaS 로더라 지몽 화면에서는 두지 않아요 */
.reading .wait-screen .skeleton,
.intake [data-step="waiting"] > .skeleton {
  display: none;
}

@media (prefers-reduced-motion: no-preference) {
  .wait-art-jimong .wait-portrait {
    animation: wait-breathe 3.2s var(--ease-out) infinite alternate;
  }
}

/* 지몽 대기 화면 (2026-10-12 소유자 방향): 화면을 채우는 그림 위에 지몽의 말. 휴대폰은 그림이 바탕 전체, 넓은 화면은 왼쪽 반이 그림, 오른쪽 반이 글.
   그림은 먹빛으로 눌러(위 68%, 아래 88%) 미색 글씨가 어디서나 7:1을 넘어요. 그림 판은 fixed 형제 요소라 단계(section)에 transform을 걸지 않아요 */
.jm-wait-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background: var(--color-bg);
  pointer-events: none;
}

.jm-wait-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 100%;
}

/* wait.webp는 위 삼분의 일이 어두운 밤하늘이라 글은 위에 두고, 아래(책상·등불)로 갈수록 그림이 드러나요. 글이 걸치는 곳은 먹빛 78% 이상 */
.jm-wait-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #15171dd9 0%, #15171dc7 50%, #15171d59 78%, #15171d26 100%);
}

/* 금분이 천천히 떠오르는 층 (2026-10-14 대기 화면 시안). 글 아래, 그림 위 */
.jm-wait-bg::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(1.5px 1.5px at 18% 72%, #d6ba78cc, transparent),
    radial-gradient(1px 1px at 42% 88%, #d6ba78b3, transparent),
    radial-gradient(2px 2px at 63% 66%, #d6ba7899, transparent),
    radial-gradient(1px 1px at 81% 82%, #d6ba78cc, transparent),
    radial-gradient(1.5px 1.5px at 30% 94%, #d6ba7880, transparent),
    radial-gradient(1px 1px at 72% 96%, #d6ba78b3, transparent);
  opacity: 0;
  pointer-events: none;
}

.jm-wait.wait-screen,
.intake [data-step="waiting"].jm-wait {
  justify-content: flex-start;
  padding-top: var(--space-6);
  text-align: left;
  align-items: stretch;
}

.jm-wait .wait-art,
.jm-wait > .skeleton,
.jm-wait .skeleton {
  display: none;
}

.jm-wait .wait-title,
.intake [data-step="waiting"].jm-wait > h1 {
  margin: 0 0 var(--space-3);
  font-family: var(--font-serif);
  font-size: var(--text-h1);
  line-height: var(--line-heading);
  text-align: left;
  word-break: keep-all;
  text-wrap: balance;
}

.jm-wait .wait-lead {
  margin: 0 0 var(--space-6);
  color: var(--color-ink);
  font-family: var(--font-serif);
}

/* 손님의 네 기둥: 장부 칸 넷, 금분 실선. 시를 모르면 비운 먹 칸 */
.jm-pillars {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-2);
  max-width: var(--measure);
  margin: 0 0 var(--space-6);
  padding: 0;
  list-style: none;
  text-align: center;
}

.jm-pillar-label {
  display: block;
  margin: 0 0 var(--space-2);
  color: var(--color-muted);
  font-family: var(--font-serif);
  font-size: var(--text-small);
}

.jm-pillar-cell {
  display: grid;
  align-content: center;
  gap: var(--space-1);
  min-height: calc(var(--space-9) + var(--space-5));
  padding: var(--space-3) var(--space-1);
  background: #15171dcc;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: clamp(32px, 4vw, 44px);
  line-height: var(--line-tight);
  word-break: keep-all;
}

.jm-pillar-cell.is-blank {
  background: #0b0c0fcc;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

/* 한자가 아니라 쉬운 말("큰 쇠")로 온 기둥은 한 단 작게 (줄이 쪼개지지 않게) */
.jm-pillar-cell.is-plain {
  font-size: var(--text-lead);
}

/* 모르는 시: 빈 상자가 아니라 흐린 "모름" 한 자리 (보조 미색, 먹 칸 위 10:1 이상) */
.jm-pillar-unknown {
  color: var(--color-muted);
  font-size: var(--text-small);
}

/* 지몽의 한 줄과 가는 금분 진행 선 (지난 단계만큼 차요) */
.jm-wait-progress {
  max-width: var(--measure);
  margin: 0 0 var(--space-5);
}

.jm-wait-line {
  margin: 0 0 var(--space-3);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  line-height: var(--line-heading);
  word-break: keep-all;
}

.jm-wait-rule {
  display: block;
  height: var(--hairline);
  background: var(--color-line-strong);
}

.jm-wait-rule > span {
  display: block;
  width: 34%;
  height: 100%;
  background: var(--color-gold);
  box-shadow: 0 0 0 var(--hairline) var(--color-gold);
}

.jm-wait-rule[data-at="2"] > span { width: 67%; }
.jm-wait-rule[data-at="3"] > span { width: 92%; }

/* 해몽 예시·후기: 둥근 상자 대신 장부 한 장 (위아래 금분 실선) */
.intake .jm-wait [data-samples].card,
.intake .jm-wait .wait-steps.sr-only + .card {
  margin-top: 0;
}

/* 대기 무대에는 바닥글·오늘 해몽 줄·결제 취소 줄을 두지 않아요 (잠깐 머무는 화면). 예고가 그려지면 다시 보여요 */
body:has(.jm-wait-bg:not([hidden])) :is(.site-footer-wrap, .site-footer, .ai-footer),
.intake:has([data-step="waiting"].jm-wait:not([hidden])) :is([data-today], [data-checkout-note]),
.intake:has([data-step="waiting"].jm-wait:not([hidden])) + .site-footer-wrap {
  display: none;
}

/* 휴대폰·태블릿: 그림 판은 화면에 붙어 있고(fixed) 글은 그 위로 흘러요. 무대 높이를 억지로 채우지 않아 글이 짧으면 페이지도 한 화면 안이에요 */
.jm-wait.wait-screen,
.intake [data-step="waiting"].jm-wait:not([hidden]) {
  min-height: 0;
}

/* 화면 낭독기용 단계 목록이 자리(바깥 여백)를 차지하지 않게 */
.jm-wait .wait-steps.sr-only,
.jm-wait .wait-list.sr-only {
  margin: 0;
  padding: 0;
}

.intake .jm-wait [data-samples].card {
  border-radius: 0;
  background: #15171dcc;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  box-shadow: none;
}

.jm-wait .wait-chapters {
  background: #15171dcc;
}

/* 그림 판 위에 글과 머리(문패·언어 단추)를 올려요 */
.jm-wait > :not(.jm-wait-bg),
body:has(.jm-wait-bg:not([hidden])) :is(.reading-head, .locale-bar, .site-footer-wrap) {
  position: relative;
  z-index: 1;
}

@media (prefers-reduced-motion: no-preference) {
  .jm-wait-bg img {
    animation: jm-ink-in 1.6s var(--ease-out) both, jm-ken-burns 32s ease-in-out 1.6s infinite alternate;
  }

  .jm-wait-rule > span {
    transition: width 1.2s var(--ease-out);
  }

  .jm-wait-bg::before {
    animation: jm-gold-dust 9s ease-in-out infinite;
  }

  /* 네 기둥이 한 칸씩 켜진다 */
  .jm-wait .jm-pillars > li {
    animation: jm-ink-in 0.9s var(--ease-out) both;
  }

  .jm-wait .jm-pillars > li:nth-child(2) { animation-delay: 0.5s; }
  .jm-wait .jm-pillars > li:nth-child(3) { animation-delay: 1s; }
  .jm-wait .jm-pillars > li:nth-child(4) { animation-delay: 1.5s; }
}

@keyframes jm-gold-dust {
  0% { opacity: 0; transform: translateY(2%); }
  40% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-6%); }
}

@keyframes jm-ink-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes jm-ken-burns {
  from { transform: scale(1); }
  to { transform: scale(1.08) translate(-1%, 1%); }
}

@media (min-width: 960px) {
  .jm-wait-bg {
    right: 50%;
  }

  .jm-wait-bg::after {
    background: linear-gradient(90deg, #15171d33 0%, #15171d66 70%, #15171d 100%);
  }

  /* 넓은 화면: 대기 화면은 한 화면짜리 무대. 왼쪽 반은 그림, 오른쪽 반이 글 칸이고 그 칸만 안에서 스크롤해요 (페이지는 넘어가지 않아요) */
  .jm-wait.wait-screen,
  .intake [data-step="waiting"].jm-wait:not([hidden]) {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 1;
    width: 50vw;
    min-height: 0;
    margin: 0;
    padding: var(--space-8) max(var(--space-8), calc(50vw - 600px)) var(--space-8) var(--space-8);
    overflow-y: auto;
    overscroll-behavior: contain;
    justify-content: safe center;
  }

  body:has(.jm-wait-bg:not([hidden])) .reading-head {
    display: none;
  }
}

/* 법적 동의 칸 (2026-10-12 소유자 결정: 말투 예외): 지몽의 말이 아니라 평범한 기계적 체크 문구(합니다체). 작고 조용하게:
   고딕 16px, 보조 미색(바탕 10.57:1), 상자 없이 위쪽 가는 선 하나, 체크 상자는 작게 두되 누르는 곳은 48px 이상(칸 전체가 label) */
.intake .consent,
.reading .consent,
.intake .consent:has(input:checked),
.reading .consent:has(input:checked) {
  min-height: var(--tap-min);
  padding-top: var(--space-3);
  padding-bottom: var(--space-3);
  border: 0;
  border-top: var(--hairline) solid var(--color-line);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--color-muted);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  line-height: var(--line-body);
}

.intake .consent input[type="checkbox"],
.reading .consent input[type="checkbox"] {
  top: calc(var(--space-3) + (var(--text-small) * var(--line-body) - var(--space-5)) / 2);
  accent-color: var(--color-gold);
}

.intake .consent a,
.reading .consent a {
  color: var(--color-muted);
}

/* 오늘 풀어 드린 꿈으로 가는 줄 (ko): 올리브 둥근 상자와 달 동그라미 대신 장부의 가는 금분 줄 하나에 명조 글, 오른쪽 꺾쇠. 누르는 곳 60px 그대로 */
.intake .today-card {
  min-height: var(--button-height);
  padding: var(--space-3) 0;
  border-radius: 0;
  background: transparent;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.intake .today-icon {
  display: none;
}

.intake .today-chevron {
  color: var(--color-gold);
}

.intake .today-card:active {
  background: var(--color-accent-soft);
}

/* 대기 화면(ko /r)에서는 언어 단추를 두지 않아요 (흐름 안 화면, 2026-10-12 소유자 요청). 입력 화면(/ko/app)은 마크업에서 뺐어요 */
body:has(.jm-wait) .locale-bar {
  display: none;
}

/* 지몽 예고 (2026-10-12 Batch D): 카드·알약·물감 칸 없이 장부의 장. 큰 지몽 그림으로 열고, 장마다 금분 인장 한자 하나와 「」 명조 제목, 산문.
   걸림은 흐린 꿈 그림(또는 먹 번짐 그림)을 오래된 판처럼 크게, 그 아래 찢은 한지 띠에 가린 말과 인장. 차례는 묶음마다 인장 한자와 번호 줄 */
.jm-preview-head .jm-plate {
  margin: 0 calc(var(--gutter) * -1) var(--space-5);
}

.jm-plate img,
.jm-hook-plate img,
.jm-volumes {
  display: block;
  width: 100%;
  height: auto;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line);
}

.jm-plate img {
  aspect-ratio: 4 / 5;
  object-fit: cover;
  -webkit-mask-image: linear-gradient(to bottom, black 80%, transparent);
  mask-image: linear-gradient(to bottom, black 80%, transparent);
}

.jm-preview-title {
  margin: 0 0 var(--space-3);
  font-family: var(--font-serif);
  font-size: var(--text-h1);
  line-height: var(--line-heading);
  word-break: keep-all;
}

.jm-birth-line {
  margin: 0 0 var(--space-2);
  color: var(--color-muted);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  font-variant-numeric: tabular-nums;
}

.jm-dream-line {
  margin: 0 0 var(--space-5);
  color: var(--color-muted);
  font-family: var(--font-serif);
  word-break: keep-all;
}

/* 예고 머리는 지몽 그림이 열어요. 장부 이름 위의 장부 그림 띠는 겹치므로 빼요 */
.reading .jm-preview-head .ledger-title::before {
  content: none;
}

.reading .jm-gist {
  margin: 0 0 var(--space-5);
  padding: var(--space-4) 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  line-height: var(--line-heading);
}

/* 장: 상자 없이 큰 인장 한자, 「」 제목 */
.reading .jm-chapter {
  margin: var(--space-8) 0 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.reading .jm-chapter .jm-glyph {
  display: grid;
  place-items: center;
  width: calc(var(--space-8) + var(--space-3));
  height: calc(var(--space-8) + var(--space-3));
  margin: 0 0 var(--space-4);
  border: var(--border-width) solid var(--color-gold);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: calc(var(--text-h1) * 1.5);
  line-height: 1;
}

.reading .jm-chapter h2 {
  margin: 0 0 var(--space-4);
  font-family: var(--font-serif);
  font-size: var(--text-h2);
  word-break: keep-all;
}

.reading .jm-chapter p,
.reading .jm-chapter dd {
  font-family: var(--font-serif);
  font-size: var(--text-body);
  line-height: var(--line-body);
  word-break: keep-all;
}

.reading .jm-chapter .yours-verdict {
  background: transparent;
  padding: 0;
  font-size: var(--text-lead);
  color: var(--color-paper);
}

.jm-symbols {
  margin: 0;
}

.jm-symbols > div {
  padding: var(--space-4) 0;
  border-top: var(--hairline) solid var(--color-line);
}

.jm-symbols dt {
  margin: 0 0 var(--space-2);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
}

.jm-symbols dd {
  margin: 0;
}

.jm-counts {
  color: var(--color-muted);
}

/* 예고의 네 기둥: 한지 장부 칸 (대기 화면의 먹 칸과 같은 자리, 종이 위 먹 글씨 13.3:1) */
.reading .jm-chapter .jm-pillars {
  margin: var(--space-4) 0 var(--space-5);
}

/* 2026-10-13: 크림색 칸 대신 대기 화면과 같은 먹 칸에 큰 한자(금분 실선), 쉬운 말은 칸 아래 작게. 한자가 없을 때만(옛 해몽) 쉬운 말을 칸 안에 */
.reading .jm-chapter .jm-pillar-cell.is-plain {
  font-size: var(--text-lead);
}

.jm-pillar-caption {
  display: block;
  margin-top: var(--space-2);
  color: var(--color-muted);
  font-family: var(--font-serif);
  font-size: var(--text-small);
  line-height: var(--line-tight);
  word-break: keep-all;
}

.reading .jm-chapter .jm-pillar-cell.is-blank {
  background: var(--color-ink-blot);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

/* 걸림 (2026-10-13 두 판, sizhu 참고): 앞장이 끝나는 조용한 한 줄과 실선 → 큰 제목(걸려만 금분) → 금분 한 줄(ask) → 짧은 두 문장 → 그림을 여는 말 + 그림 → 찢은 띠 → 금분 왼줄 */
.jm-hook {
  margin: var(--space-7) 0 var(--space-6);
}

.jm-hook-close {
  margin: 0;
  padding-bottom: var(--space-6);
  border-bottom: var(--hairline) solid color-mix(in srgb, var(--color-gold) 45%, transparent);
  color: var(--color-muted);
  font-family: var(--font-serif);
  font-size: var(--text-small);
  line-height: var(--line-body);
  text-align: center;
  word-break: keep-all;
}

.reading .jm-hook-head {
  margin: var(--space-8) 0 var(--space-6);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: clamp(26px, 2.4vw + 17px, 40px);
  font-weight: 500;
  line-height: 1.3;
  letter-spacing: -0.01em;
  text-align: center;
  word-break: keep-all;
}

.jm-hook-head em {
  color: var(--color-gold);
  font-style: normal;
}

/* 걸림의 강한 한 줄 (2026-10-14): 큰 제목 바로 아래, 매듭을 먼저 던진다 */
.jm-hook-reveal {
  margin: calc(var(--space-6) * -1 + var(--space-2)) 0 var(--space-6);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: clamp(21px, 1vw + 17px, 26px);
  line-height: 1.5;
  text-align: center;
  word-break: keep-all;
  text-wrap: balance;
}

/* 세 단락 풀이 (2026-10-14): 夢의 꿈 해석, 性의 까닭, 兆의 고민. 금줄 단락으로 모델의 풀이를 표시 */
.reading :is(.dream-reading, .saju-why, .yours-weave) {
  margin: var(--space-5) 0 0;
  padding-left: var(--space-4);
  box-shadow: inset var(--hairline) 0 0 var(--color-gold);
  color: var(--color-paper);
  font-family: var(--font-serif);
  line-height: var(--line-body);
  word-break: keep-all;
}

.jm-hook-ask {
  margin: 0 0 var(--space-4);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-title);
  line-height: var(--line-heading);
  word-break: keep-all;
}

.jm-hook-turn p {
  margin: 0 0 var(--space-4);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: clamp(21px, 1vw + 17px, 25px);
  line-height: 1.6;
  word-break: keep-all;
}

.jm-hook-lead {
  margin: 0 0 var(--space-2);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-title);
  line-height: var(--line-heading);
}

/* 그림을 여는 말은 그림 바로 위에 붙어 그림의 머리말로 읽힌다 */
.jm-hook-scene {
  margin: var(--space-8) 0 0;
}

.jm-hook-scene .jm-hook-say {
  margin: 0 auto var(--space-4);
  max-width: 480px;
  color: var(--color-paper);
  font-size: var(--text-title);
  line-height: var(--line-heading);
  text-align: center;
  word-break: keep-all;
}

.jm-hook-say {
  margin: 0 0 var(--space-5);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
}

.jm-hook-bar {
  margin: 0 0 var(--space-3);
  padding-left: var(--space-4);
  border-left: var(--border-width) solid color-mix(in srgb, var(--color-gold) 60%, transparent);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  line-height: var(--line-body);
  word-break: keep-all;
}

/* 한 박자씩 떠오른다: JS가 관찰자를 걸었을 때(is-staged)만, 움직임 줄이기가 아닐 때만. 스크립트가 없으면 다 보인다. */
@media (prefers-reduced-motion: no-preference) {
  .jm-hook.is-staged [data-step] {
    transition:
      opacity calc(var(--duration-settle) * 2) var(--ease-out),
      transform calc(var(--duration-settle) * 2) var(--ease-out);
  }

  .jm-hook.is-staged [data-step]:not(.is-seen) {
    opacity: 0;
    transform: translateY(var(--space-3));
  }

  .jm-hook.is-staged [data-step="2"] {
    transition-delay: var(--duration-settle);
  }

  .jm-hook.is-staged [data-step="3"] {
    transition-delay: calc(var(--duration-settle) * 2);
  }
}

.jm-hook-plate {
  position: relative;
  max-width: 320px;
  margin: 0 auto;
  padding: var(--space-2);
  background: #0b0c0f;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-ledger-line);
  overflow: hidden;
}

.jm-hook-plate.is-dream img {
  aspect-ratio: 2 / 3;
  width: 100%;
  height: auto;
  object-fit: cover;
  filter: blur(12px) sepia(0.5) brightness(0.9) contrast(1.05);
  transform: scale(1.12);
}

.jm-hook-plate.is-ink img {
  aspect-ratio: 1 / 1;
  object-fit: cover;
  filter: brightness(0.85);
}

.jm-hook-plate::after {
  content: "";
  position: absolute;
  inset: 0;
  box-shadow: inset 0 0 48px 12px #0b0c0f;
  pointer-events: none;
}

/* 걸림 그림의 금분 표시 (2026-10-14): '그대가 깬 뒤' 이어진 장면 위 세 자리. 그림 구도(server/dream-image.js SCENE)와 맞춰 가운데·왼쪽 위·아래 */
.jm-hook-wake {
  margin: 0 0 var(--space-3);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  line-height: var(--line-body);
  text-align: center;
  word-break: keep-all;
  text-wrap: balance;
}

.jm-hook-wake b {
  color: var(--color-gold);
  font-weight: inherit;
}

.jm-hook-stamp {
  position: absolute;
  top: var(--space-4);
  left: var(--space-4);
  z-index: 2;
  padding: var(--space-1) var(--space-2);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
  background: #0b0c0fb3;
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-small);
}

.jm-pin {
  position: absolute;
  z-index: 2;
  display: grid;
  justify-items: center;
  gap: var(--space-1);
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--color-paper);
  font: inherit;
  cursor: pointer;
  transform: translate(-50%, -22px);
}

.jm-pin::before {
  content: "";
  width: 14px;
  height: 14px;
  margin-top: 15px;
  border-radius: 50%;
  background: var(--color-gold);
  box-shadow: 0 0 0 3px #0b0c0f99, 0 0 12px 2px #d6ba7899;
}

.jm-pin[data-pin="hidden"] { left: 50%; top: 58%; }
.jm-pin[data-pin="when"] { left: 26%; top: 18%; }
.jm-pin[data-pin="next"] { left: 50%; top: 76%; }

.jm-pin-label {
  padding: 0 var(--space-1);
  background: #0b0c0fb3;
  font-family: var(--font-serif);
  font-size: var(--text-small);
  white-space: nowrap;
}

.jm-pin[aria-pressed="true"]::before {
  background: var(--color-paper);
}

.jm-pin:focus-visible {
  outline: 2px solid var(--color-gold);
  outline-offset: 2px;
}

.jm-pin-tip {
  position: absolute;
  left: var(--space-3);
  right: var(--space-3);
  /* 아래 찢은 띠(.jm-strip)가 그림 끝을 덮으므로 그 위에 띄운다 */
  bottom: calc(var(--space-6) + var(--space-3));
  z-index: 3;
  display: grid;
  gap: var(--space-1);
  margin: 0;
  padding: var(--space-3);
  background: #0b0c0f;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
  color: var(--color-paper);
  font-family: var(--font-serif);
  line-height: var(--line-body);
  word-break: keep-all;
}

.jm-pin-tip small {
  color: var(--color-gold);
  font-size: var(--text-small);
}

@media (prefers-reduced-motion: no-preference) {
  .jm-pin::after {
    content: "";
    position: absolute;
    top: 15px;
    left: 50%;
    width: 14px;
    height: 14px;
    margin-left: -7px;
    border-radius: 50%;
    box-shadow: 0 0 0 1px var(--color-gold);
    animation: jm-pin-ring 2.4s var(--ease-out) infinite;
    pointer-events: none;
  }

  .jm-pin[data-pin="when"]::after { animation-delay: 0.8s; }
  .jm-pin[data-pin="next"]::after { animation-delay: 1.6s; }
}

@keyframes jm-pin-ring {
  from { opacity: 1; transform: scale(1); }
  to { opacity: 0; transform: scale(3); }
}

.jm-hook-wait {
  position: absolute;
  left: 0;
  right: 0;
  top: var(--space-4);
  z-index: 1;
  margin: 0;
  color: var(--color-paper);
  font-family: var(--font-serif);
  text-align: center;
}

.jm-strip {
  position: relative;
  max-width: 440px;
  margin: calc(var(--space-6) * -1) auto var(--space-5);
  padding: var(--space-4) calc(var(--space-7) + var(--space-3)) var(--space-4) var(--space-5);
  background: var(--color-ledger);
  color: var(--color-ledger-ink);
  clip-path: polygon(0 6%, 4% 0, 18% 5%, 33% 1%, 52% 6%, 70% 0, 86% 5%, 100% 2%, 98% 52%, 100% 96%, 82% 100%, 64% 95%, 45% 100%, 27% 96%, 10% 100%, 0 94%, 2% 48%);
  transform: rotate(-1.5deg);
  z-index: 1;
}

.jm-strip p {
  margin: 0;
  font-family: var(--font-serif);
  font-size: var(--text-body);
  line-height: var(--line-body);
  word-break: keep-all;
}

.jm-strip .veil:not(.is-blur) {
  background: radial-gradient(120% 160% at 35% 50%, var(--color-ledger-blot) 0 52%, var(--color-ledger-blot-edge) 100%);
  box-shadow: none;
}

.jm-strip-seal {
  position: absolute;
  right: var(--space-3);
  top: 50%;
  width: var(--space-7);
  height: var(--space-7);
  margin-top: calc(var(--space-7) / -2);
  background: url("/images/jimong/seal.webp") center / contain no-repeat;
}

.jm-hook-after {
  margin: 0;
  color: var(--color-ink);
  font-family: var(--font-serif);
  word-break: keep-all;
}

/* 장부의 남은 장 (차례) */
.reading .jm-toc {
  background: transparent;
  padding: 0;
  box-shadow: none;
}

.jm-volumes {
  margin: 0 0 var(--space-5);
  border-radius: var(--radius-small);
}

.reading .jm-toc h2 {
  font-family: var(--font-serif);
}

.reading .jm-toc ol {
  padding: 0;
}

/* 묶음 카드 (2026-10-13, sizhu 참고): 먹빛 카드, 왼쪽 가장자리에 금분 점선 제본 줄, 머리에 인장·묶음 이름·물음·장 수 */
.jm-books {
  display: grid;
  gap: var(--space-6);
}

.jm-book {
  position: relative;
  padding: var(--space-5) var(--space-3) var(--space-2) var(--space-5);
  background: linear-gradient(180deg, var(--color-wash-warm), var(--color-bg));
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.jm-book::before {
  content: "";
  position: absolute;
  top: var(--space-3);
  bottom: var(--space-3);
  left: var(--space-2);
  border-left: var(--border-width) dashed color-mix(in srgb, var(--color-gold) 45%, transparent);
}

.reading .jm-book .jm-bundle {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: end;
  gap: var(--space-3);
  margin: 0 0 var(--space-1);
  padding: 0 0 var(--space-4);
  border-bottom: var(--hairline) solid var(--color-line-strong);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.reading .jm-bundle::before,
.reading .jm-bundle::after {
  content: none;
}

.reading .jm-bundle span {
  padding: 0;
  border-radius: 0;
  background: transparent;
}

.reading .jm-bundle .jm-bundle-seal {
  display: grid;
  padding: 0;
  place-items: center;
  align-self: center;
  width: var(--space-7);
  height: var(--space-7);
  border-radius: var(--radius-small);
  background: var(--color-gold);
  color: var(--color-gold-ink);
  font-size: var(--text-h2);
  line-height: 1;
  transform: rotate(-3deg);
}

.jm-bundle-name small {
  display: block;
  color: var(--color-gold);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  font-weight: var(--weight-bold);
}

.jm-bundle-name strong {
  display: block;
  color: var(--color-paper);
  font-size: var(--text-title);
  font-weight: 500;
  line-height: var(--line-heading);
  word-break: keep-all;
}

.jm-bundle-count {
  color: var(--color-muted);
  font-size: var(--text-small);
  white-space: nowrap;
}

.reading .jm-book ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

.reading .jm-toc-row {
  display: grid;
  grid-template-columns: var(--space-5) 1fr;
  align-items: start;
  gap: var(--space-2);
  margin: 0;
  padding: var(--space-4) var(--space-1) var(--space-4) var(--space-2);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  border-bottom: var(--hairline) solid var(--color-line);
}

.reading .jm-toc-row:last-child {
  border-bottom: 0;
}

.reading .jm-toc-row.is-hooked {
  background: linear-gradient(90deg, color-mix(in srgb, var(--color-gold) 12%, transparent), transparent);
  box-shadow: inset var(--border-width) 0 0 var(--color-gold);
}

.jm-toc-tag {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 0 var(--space-2);
  border: var(--hairline) solid var(--color-gold);
  border-radius: var(--radius-small);
  color: var(--color-gold);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  font-weight: var(--weight-bold);
  line-height: 1.6;
  vertical-align: 0.15em;
  white-space: nowrap;
}

.reading .jm-toc-row .toc-body p {
  margin: var(--space-1) 0 0;
  color: color-mix(in srgb, var(--color-gold) 70%, var(--color-paper));
  font-size: var(--text-body);
  line-height: var(--line-body);
  word-break: keep-all;
}

/* 흐린 가림: 같은 길이의 뜻 없는 글자를 흐리게. 막대·자물쇠 없이 글 사이에 번진 먹처럼 */
.reading .veil.is-blur {
  display: inline;
  margin: 0;
  padding: 0;
  background: none;
  box-shadow: none;
  border-radius: 0;
  color: inherit;
  filter: blur(5px);
  white-space: normal;
}

.reading .veil.is-blur::before {
  content: none;
}

.jm-toc-num {
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  font-variant-numeric: tabular-nums;
}

.reading .jm-toc-row .toc-title {
  font-family: var(--font-serif);
  font-size: var(--text-title);
  font-weight: var(--weight-serif);
}

.reading .jm-toc .toc-extra {
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  border-bottom: var(--hairline) solid var(--color-line);
}

@media (min-width: 960px) {
  .jm-preview-head .jm-plate {
    max-width: 400px;
    margin: 0 auto var(--space-6);
  }
}

/* 시스템·이용 상태·쿠폰 문구 (2026-10-12 소유자 규칙: 평이체): 지몽의 말이 아니라 작고 조용한 고딕 줄. 쿠폰 알약도 테 없는 작은 글로 */
.intake .free-badge,
.intake .cta-note,
.intake .notice[data-checkout-note],
.reading .repurchase .hint {
  background: transparent;
  box-shadow: none;
  border: 0;
  color: var(--color-muted);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  font-weight: var(--weight-regular);
}

.intake .notice[data-checkout-note] {
  padding: var(--space-2) 0;
  border-top: var(--hairline) solid var(--color-line);
}

/* ==== share ==== */
/* Task 6: 공유 화면 (ko/s) */
/* 공유 화면은 .reading main이라 위 reading 구역 규칙(장부 종이 머리, 먹 번짐, 고딕 기능 문구)을 그대로 받아요. 여기에는 공유 화면에만 있는 칸 */
.share-page .share-cta {
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

.share-page .share-cta .button {
  font-family: var(--font-ui);
}

/* 지몽 공유 (2026-10-13 소유자 요청 "공유링크도 새로 리뉴얼한 디자인에 다 맞춰서"): 프리뷰·리포트 공유를 주인 예고와 같은 장부 조각으로.
   프리뷰 공유는 주인 예고의 장·걸림·차례 규칙을 그대로 받아요. 여기에는 리포트 공유 머리·장, 걸림 없는 공유의 그림, 끝의 권유만 */
/* 걸림 없는 공유(걸림 전의 예고)도 흐린 꿈 그림은 장 다음에 */
.jm-share-scene {
  margin-top: var(--space-8);
}

/* 리포트 공유 머리: 장부 종이 판 대신 먹빛 위에 바로 (예고 머리와 같은 결) */
.reading .jm-report-head .reading-hero {
  padding: 0;
  overflow: visible;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  outline: none;
  color: var(--color-paper);
}

.reading .jm-report-head .reading-hero::before,
.reading .jm-report-head .reading-hero::after {
  content: none;
}

.reading .jm-report-head .reading-hero h1 {
  color: var(--color-paper);
}

/* 넓은 화면: 왼쪽 글, 오른쪽 세로 그림 (reading-page.css의 두 칸 그대로), 종이 판의 안쪽 여백만 뺀다 */
@media (min-width: 960px) {
  .reading .jm-report-head.share-hero.has-image .reading-hero {
    grid-template-rows: auto auto auto minmax(0, 1fr);
    padding: 0;
  }

  .reading .jm-report-head.share-hero .dream-image.is-sharp {
    grid-row: 1 / span 4;
  }
}

.jm-report-kind {
  margin: 0 0 var(--space-3);
  color: var(--color-gold);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  letter-spacing: 0.04em;
}

.reading .jm-report-head .dream-image.is-sharp img {
  border-radius: var(--radius-small);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line);
}

.reading .jm-report-head .dream-image.is-sharp figcaption {
  color: var(--color-muted);
}

/* 본책 차례: 예고의 묶음 카드, 장 이름은 그 장으로 가는 링크 */
.reading .jm-report-toc {
  margin: var(--space-7) 0 0;
}

.reading .jm-report-toc h2 {
  margin: 0 0 var(--space-5);
  font-family: var(--font-serif);
  font-size: var(--text-h2);
}

.reading .jm-report-toc .toc-title a {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: color-mix(in srgb, var(--color-gold) 45%, transparent);
  text-underline-offset: 0.2em;
}

.reading .jm-report-toc .toc-title a:hover {
  color: var(--color-gold);
}

/* 본책의 장: 상자 없이 한자 숫자 인장, 작은 "N장", 「」 제목. 핵심은 금분 왼줄, 소제목은 금분 명조 */
.reading .jm-share-report .chapters {
  margin-top: var(--space-4);
}

.reading .chapter.jm-paid {
  overflow: visible;
  scroll-margin-top: var(--space-6);
}

.reading .chapter.jm-paid > * {
  margin-right: 0;
  margin-left: 0;
}

.reading .jm-paid .jm-paid-num {
  margin: 0 0 var(--space-1);
  color: var(--color-gold);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  letter-spacing: 0.04em;
}

.reading .jm-paid h3 {
  margin: 0 0 var(--space-5);
  font-family: var(--font-serif);
  font-size: var(--text-h2);
  font-weight: var(--weight-serif);
  line-height: var(--line-heading);
  word-break: keep-all;
}

.reading .jm-paid .chapter-key {
  margin: 0 0 var(--space-6);
  padding: var(--space-1) 0 var(--space-1) var(--space-5);
  border-left: var(--border-width) solid var(--color-gold);
  border-radius: 0;
  background: transparent;
}

.reading .jm-paid .chapter-key-label {
  color: var(--color-gold);
  font-family: var(--font-ui);
}

.reading .jm-paid .chapter-key-label::before {
  content: none;
}

.reading .jm-paid .chapter-key-text {
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  line-height: var(--line-body);
  word-break: keep-all;
}

.reading .jm-paid .share-chapter-sub {
  margin: var(--space-6) 0 var(--space-3);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  font-weight: var(--weight-serif);
}

/* 끝의 권유: 상자 대신 장부의 끝장. 위아래 금분 실선, 가운데 인장 한자 하나, 지몽의 물음, 버튼 하나 */
.share-page .share-cta.jm-share-cta {
  margin-top: var(--space-8);
  padding: var(--space-7) 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.jm-share-cta .jm-glyph,
.reading .jm-end .jm-glyph {
  display: grid;
  place-items: center;
  width: calc(var(--space-8) + var(--space-3));
  height: calc(var(--space-8) + var(--space-3));
  margin: 0 auto var(--space-5);
  border: var(--border-width) solid var(--color-gold);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: calc(var(--text-h1) * 1.5);
  line-height: 1;
}

.jm-share-cta h2 {
  font-family: var(--font-serif);
  word-break: keep-all;
}

.jm-share-cta p:not(.jm-glyph) {
  color: var(--color-muted);
  font-family: var(--font-serif);
  word-break: keep-all;
}

/* 지몽 본책 (주인 리포트, 2026-10-13 소유자 요청: 주인 리포트가 리포트 공유보다 예스러워 보였다). 머리·차례·장은 위의 리포트 공유 규칙을 그대로 받고,
   여기에는 주인만의 칸(본책 줄·차례의 상태 표·장 막대·넘기기 막대·쓰는 중 머리·잠긴 장·리포트 끝·문답·업그레이드)을 장부 결로 맞추는 것만 */
.reading .jm-report .jm-report-meta {
  display: block;
  margin: 0;
}

.reading .jm-report-meta .jm-report-kind {
  margin-bottom: var(--space-3);
}

.reading .jm-report-meta .report-title {
  margin: 0;
  font-size: inherit;
}

.reading .jm-report-meta .report-count,
.reading .jm-report-meta .report-verdict {
  display: inline;
  min-height: 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
  font-size: inherit;
  font-weight: inherit;
}

.reading .jm-report-meta .report-verdict {
  display: block;
  margin: 0 0 var(--space-4);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: var(--text-small);
}

.reading .jm-report-meta .report-verdict-label {
  color: var(--color-muted);
}

.reading .jm-report-head .report-care {
  margin: 0;
}

.reading .jm-report > .share-box {
  margin-top: var(--space-6);
}

/* 차례: 한눈에 보기 칸(reading-page.css .report-overview a)을 걷고 공유 차례의 밑줄 링크로 */
.reading .jm-report-toc .toc-title a {
  position: static;
  display: inline;
  height: auto;
  min-height: 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
  transform: none;
}

.reading .jm-report-toc .jm-toc-row.is-locked .toc-title a {
  color: var(--color-muted);
}

.jm-toc-tag .glyph,
.jm-toc-num .glyph,
.jm-locked-mark .glyph {
  display: inline-block;
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
}

.jm-locked-mark {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

.jm-toc-tag.is-locked {
  padding: 0;
  border: 0;
  color: var(--color-muted);
}

.jm-toc-tag.is-queued {
  border-color: var(--color-line-strong);
  color: var(--color-muted);
}

.reading .jm-toc-ask .toc-title {
  font-size: var(--text-body);
}

@media (min-width: 960px) {
  /* 넓은 화면: 한 장·반 권 묶음은 나란히, 긴 온 권 묶음은 한 줄 전체로 */
  .reading .jm-report .jm-books {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }

  .reading .jm-report .jm-book:last-child:nth-child(odd) {
    grid-column: 1 / -1;
  }
}

/* 장 막대: 알약 대신 장부의 차례 줄. 지금 장은 금분 왼줄과 금분 글 */
.reading .jm-report .chapter-nav a {
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--color-muted);
  font-family: var(--font-serif);
}

.reading .jm-report .chapter-nav-num {
  background: transparent;
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-weight: var(--weight-serif);
}

.reading .jm-report .chapter-nav a[aria-current="true"] {
  background: transparent;
  box-shadow: inset 0 calc(var(--border-width) * -1) 0 var(--color-gold);
  color: var(--color-paper);
}

.reading .jm-report .chapter-nav a[aria-current="true"] .chapter-nav-num {
  background: transparent;
  color: var(--color-gold);
}

@media (min-width: 960px) {
  .reading .jm-report .chapter-nav {
    padding: var(--space-3) 0;
    border-radius: 0;
    background: transparent;
    box-shadow: inset var(--hairline) 0 0 var(--color-line-strong);
  }

  .reading .jm-report .chapter-nav a[aria-current="true"] {
    box-shadow: inset var(--border-width) 0 0 var(--color-gold);
  }
}

@media (hover: hover) {
  .reading .jm-report .chapter-nav a:not([aria-current="true"]):hover {
    background: transparent;
    color: var(--color-gold);
  }
}

/* 넘기기 막대: 먹빛 띠, 이전은 금분 테 버튼 */
.is-report:has(.jm-report) .pager-step.is-prev {
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

.is-report:has(.jm-report) .pager-count {
  font-family: var(--font-serif);
}

/* 쓰는 중 머리: 상자 대신 금분 왼줄 한 줄과 명조 안내. 초안 장은 장 번호 옆 작은 금분 표 */
.reading .jm-report .report-live {
  margin: var(--space-6) 0;
  padding: var(--space-1) 0 var(--space-1) var(--space-5);
  border-radius: 0;
  background: transparent;
  box-shadow: inset var(--border-width) 0 0 var(--color-gold);
}

.reading .jm-report .report-live-line {
  color: var(--color-paper);
  font-family: var(--font-ui);
}

.reading .jm-report .report-live-note {
  font-family: var(--font-serif);
}

.reading .jm-paid[data-draft] .jm-paid-num::after {
  content: "초안";
  margin-left: var(--space-2);
  padding: 0 var(--space-2);
  border: var(--hairline) solid var(--color-gold);
  border-radius: var(--radius-small);
  font-weight: var(--weight-bold);
}

/* 쓰는 중인 장과 잠긴 장: 같은 인장, 점선 테와 흐린 글씨. 잠긴 장의 예고는 차례처럼 흐린 글자 */
.reading .jm-paid.chapter-pending .jm-glyph,
.reading .jm-paid.chapter-locked .jm-glyph {
  border-style: dashed;
  border-color: var(--color-line-strong);
  color: var(--color-muted);
}

.reading .jm-paid.chapter-pending .chapter-pending-line {
  margin: 0;
  font-family: var(--font-serif);
}

.reading .jm-paid.chapter-locked > p {
  margin: 0 0 var(--space-4);
}

.reading .jm-paid.chapter-locked .chapter-locked-teaser {
  color: color-mix(in srgb, var(--color-gold) 70%, var(--color-paper));
  font-size: var(--text-lead);
}

.reading .jm-paid .chapter-sub {
  margin: var(--space-6) 0 var(--space-3);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
  font-weight: var(--weight-serif);
}

/* 후기: 리포트 끝의 금분 실선 바로 아래라 판·그림자 없이 */
.reading .jm-report .review-box {
  padding-right: 0;
  padding-left: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

/* 리포트 끝: 공유 끝장과 같은 결 (금분 실선, 인장 한자, 버튼) */
.reading .report-end.jm-end {
  margin: var(--space-8) 0 var(--space-6);
  padding: var(--space-7) 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-bottom: var(--hairline) solid var(--color-gold);
  border-radius: 0;
  background: transparent;
}

.reading .jm-end h3 {
  font-family: var(--font-serif);
  word-break: keep-all;
}

.reading .jm-end > p:not(.jm-glyph) {
  color: var(--color-muted);
  font-family: var(--font-serif);
  word-break: keep-all;
}

/* 문답·업그레이드·후기: 회색 판 대신 금분 실선 위의 장부 한 쪽 */
.reading .jm-report .dialogue,
.is-report:has(.jm-report) .upgrade.card {
  padding-right: 0;
  padding-left: 0;
  border-top: var(--hairline) solid var(--color-gold);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.reading .jm-report .dialogue h2,
.is-report:has(.jm-report) .upgrade.card h2 {
  font-family: var(--font-serif);
}

/* 테마 링크만 건 기능 화면(내 해몽 다시 찾기, 이용약관, 개인정보처리방침): 본문은 시스템 고딕, 제목만 명조 */
.find,
.legal {
  font-family: var(--font-ui);
}

.find h1,
.legal h1,
.legal h2 {
  font-family: var(--font-serif);
}

/* ==== library ==== */
/* Task 7: ko 사전·꿈 이야기 글의 겉모습 */
/* 이 파일은 library.css·blog.css보다 먼저 실려요. 그 규칙을 덮는 곳은 .library-page(사전·글 main)를 앞에 붙여 한 단 더 구체적으로 써요.
   main 밖에 있는 아래 고정 버튼 띠만 body를 붙여요. 색은 토큰이 이미 먹빛으로 바꿔 두었고, 여기에는 모양·서체·대비만 둬요.
   글자는 문자열을 바꾸지 않아요 (제목·설명·JSON-LD·<article> 본문 불변, scripts/check-rebrand-scope.mjs). */

/* 머리: 지몽 인장 문패 (랜딩 .jm .brand와 같은 그림), 사전 링크는 가는 테두리를 두른 먹빛 알약 */
.library-page .library-brand {
  color: var(--color-gold);
  font-weight: var(--weight-serif);
}

.library-page .brand-mark {
  background: url("/images/jimong/seal.webp") center / contain no-repeat;
}

.library-page .brand-mark-bg,
.library-page .brand-mark-line {
  display: none;
}

.library-page .library-top-link,
.library-page .locale-switcher-button {
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
  font-family: var(--font-ui);
}

/* 기능 문구는 시스템 고딕: 검색칸, 묶음 바로가기, 결 배지, 권유 카드의 도움말, 날짜, 바닥 */
.library-page .search input,
.library-page .hub-jump a,
.library-page .tone,
.library-page .library-cta .hint,
.library-page .blog-kicker a,
.library-page .blog-meta,
.library-footer {
  font-family: var(--font-ui);
}

/* 명조 이름과 제목: 합성 굵기 대신 실은 굵기(500) */
.library-page .hub-text strong,
.library-page .hub-list li a > strong,
.library-page .library-cta .lead,
.library-page .blog-list strong {
  font-weight: var(--weight-serif);
}

/* 묶음 바로가기와 비슷한 꿈 알약: 먹빛 바탕에 가는 테두리 (색 대신 모양으로 누르는 곳임을 보여요) */
.library-page .hub-jump a,
.library-page .library-related li a {
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

/* 상징 그림 (지몽 다듬기 1과 같은 처리): 파스텔 물감 칠과 밝은 칸 대신 금분 선 그림. 그림 파일(shared/symbol-art.js)은 그대로예요.
   칸은 물감 바탕 없이 가는 테두리 하나 (넓은 화면 격자의 올린 판 바탕도 지워요). 금분 선은 바탕 9.52:1, 상자 8.54:1 */
.library-page .sym-tile:not(.sym-tile-locked),
.library-page .hub-group .hub-list .sym-tile:not(.sym-tile-locked) {
  --mark: var(--color-gold);
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

.library-page .sym :is(.in, .nv, .co, .am, .mi, .sk, .pa, .cr, .wh) {
  fill: none;
  stroke: var(--mark);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.library-page .sym :is(.s, .sw, .s-thick) {
  stroke: var(--mark);
  stroke-width: 1.75;
}

.library-page .sym .s-thick {
  stroke-width: 3;
}

.library-page .sym .ik {
  fill: var(--mark);
  stroke: none;
}

/* 상황별 풀이 카드와 풀이 카드: 먹빛 상자에 가는 괘선 하나. 해 볼 일 위 나눔선도 보이게 */
.library-page .library-variants .card,
.library-page .library-reading,
.library-page .library-none {
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line);
}

.library-page .advice {
  border-top-color: var(--color-line);
}

/* 결 배지: 상자 위에서도 바탕 위에서도 보조 글씨 대비 9.49:1 이상, 가는 테두리로 배지 모양 */
.library-page .tone {
  background: transparent;
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
  color: var(--color-muted);
  font-weight: var(--weight-regular);
}

/* 본문 링크: 금분 글씨에 밑줄을 그대로 둬요 (색만으로 링크를 나누지 않아요) */
.library-page .library-body a,
.library-page .library-summary a,
.library-page .blog-body a {
  text-decoration-line: underline;
  text-decoration-thickness: var(--hairline);
  text-underline-offset: 0.2em;
}

/* 풀이 권유 카드: 등불빛 먹 띠에 금분 괘선, 버튼은 금분 바탕 먹 글씨 (9.52:1, 높이 60px) */
.library-page .library-cta.card {
  background: var(--color-wash-warm);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
}

.library-page .library-cta.card .button-primary {
  background: var(--color-gold);
  color: var(--color-gold-ink);
}

.library-page .library-cta .hint,
.library-page .library-cta .blog-cta-sub {
  color: var(--color-muted);
}

/* 아래에 붙은 버튼 띠: 먹빛 위에서는 그림자가 안 보이므로 위쪽에 나눔선 */
body .library-cta-bar {
  border-top: var(--hairline) solid var(--color-line);
  box-shadow: none;
}

/* 바닥: AI 표시와 링크, 사업자 정보 모두 보조 글씨 (바탕 10.57:1). 흐리게 하지 않아요 */
.library-footer,
.library-footer .library-ai-note,
.library-footer .library-business,
.library-footer a {
  color: var(--color-muted);
  opacity: 1;
}

/* 꿈 이야기: 글 머리의 "꿈 이야기" 링크는 목록으로 돌아가는 조용한 길잡이, 글 목록 나눔선과 사전 바로가기 상자 */
.library-page .blog-kicker a {
  font-weight: var(--weight-regular);
}

.library-page .blog-library-link a {
  box-shadow: inset 0 0 0 var(--hairline) var(--color-line-strong);
}

/* 하단 고정 띠 안의 동의 칸 (2026-10-13): 띠가 이미 위쪽 선을 가지므로 칸의 선은 뺀다 */
/* 2026-10-13 소유자 요청: 띠 안에서 너무 커서 몰입이 깨지므로 훨씬 작게 (13px 글, 14px 상자). 16px 하한의 유일한 예외 (tests/theme-ko.test.js). 누르는 곳은 칸 전체 label이라 그대로 넓다 */
.reading .sticky-consent,
.reading .sticky-consent:has(input:checked) {
  min-height: 0;
  max-width: var(--measure);
  margin-bottom: var(--space-2);
  padding: var(--space-1) 0 var(--space-1) calc(14px + var(--space-2));
  border-top: 0;
  font-size: 13px;
  line-height: 1.5;
  letter-spacing: 0;
}

.reading .sticky-consent input[type="checkbox"] {
  left: 0;
  top: calc(var(--space-1) + (13px * 1.5 - 14px) / 2);
  width: 14px;
  height: 14px;
}

/* 지몽 예고의 다섯 기운 오각형 (2026-10-13 소유자 요청으로 되살림): 카드 없이 먹빛 위 금분 선. 기운별 물감 점·글자 색 대신 금분 하나 */
.jm-chapter .radar {
  margin: var(--space-4) 0;
  padding: 0;
  background: transparent;
}

.jm-chapter .radar-shape {
  fill: color-mix(in srgb, var(--color-gold) 16%, transparent);
  stroke: var(--color-gold);
}

.jm-chapter .radar-dot,
.jm-chapter .radar-dot.is-none {
  fill: var(--color-bg);
  stroke: var(--color-gold);
}

.jm-chapter .radar-dot:not(.is-none) {
  fill: var(--color-gold);
}

.jm-chapter .radar-label {
  fill: var(--color-muted);
  font-family: var(--font-serif);
}

.jm-chapter .radar-label.is-most {
  fill: var(--color-ink);
}

.jm-chapter .radar-key {
  fill: var(--color-gold);
}

.jm-chapter .radar-label.is-none .radar-key {
  fill: var(--color-line-strong);
}

/* 예고 끝: 여기까지 오신 길 (2026-10-13). 지나온 네 단계는 금분 표, 남은 장 수는 금분 글씨. 들인 수고를 보여 주되 사실만 */
.jm-toc-yours {
  margin: 0 0 var(--space-4);
  color: var(--color-muted);
}

.jm-progress {
  max-width: var(--measure);
  margin: var(--space-6) 0;
  padding: var(--space-4) 0;
  border-top: var(--hairline) solid var(--color-line-strong);
  border-bottom: var(--hairline) solid var(--color-line-strong);
}

.jm-progress-title {
  margin: 0 0 var(--space-3);
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-lead);
}

.jm-progress ol {
  display: grid;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.jm-progress li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--color-muted);
  font-family: var(--font-serif);
}

.jm-progress li span {
  display: inline-flex;
  width: var(--space-5);
  height: var(--space-5);
  color: var(--color-gold);
}

.jm-progress li span svg {
  width: 100%;
  height: 100%;
}

.jm-progress .is-left {
  padding-left: calc(var(--space-5) + var(--space-2));
  color: var(--color-gold);
  font-size: var(--text-lead);
}

/* 적용된 재구매 쿠폰 (2026-10-13 소유자 요청: 너무 티가 안 났다): 금분 점선 테의 쿠폰 띠, 왼쪽에 큰 금분 할인율. 할인은 파는 말이라 조용한 시스템 줄에서 뺐다 */
.reading .coupon-line {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: 0 0 var(--space-4);
  padding: var(--space-3) var(--space-4);
  border: var(--border-width) dashed var(--color-gold);
  border-radius: var(--radius-small);
  background: color-mix(in srgb, var(--color-gold) 10%, transparent);
  color: var(--color-ink);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  line-height: var(--line-tight);
}

.reading .coupon-line .coupon-pct {
  flex: none;
  color: var(--color-gold);
  font-family: var(--font-serif);
  font-size: var(--text-h2);
  line-height: 1;
}

.reading .coupon-line strong {
  color: var(--color-gold);
}


.reading .sticky-offer s {
  color: var(--color-muted);
  font-weight: var(--weight-regular);
}

.reading .sticky-offer strong {
  font-size: var(--text-body);
}

.reading .sticky-offer {
  color: var(--color-gold);
  font-family: var(--font-ui);
}

/* 지몽이 덜어 준 복채 (2026-10-13, sizhu 참고): 칸마다 줄 그은 정가 → 할인율 → 지금 값. 고른 칸의 할인율은 크게, 금분 빛을 둘러 */
.reading .tier-regular {
  grid-row: 1;
}

.reading .tier:has(.tier-regular) .tier-price {
  grid-row: 2;
}

.reading .tier-pct,
.reading .sum-pct {
  display: inline-block;
  margin: var(--space-1) 0;
  padding: 0 var(--space-2);
  border-radius: var(--radius-small);
  background: var(--color-gold);
  color: var(--color-gold-ink);
  font-family: var(--font-ui);
  font-size: var(--text-small);
  font-weight: var(--weight-bold);
  line-height: 1.6;
}

.reading .tier[aria-checked="true"] .tier-pct {
  padding: var(--space-1) var(--space-3);
  font-size: var(--text-lead);
  box-shadow: 0 0 var(--space-4) color-mix(in srgb, var(--color-gold) 55%, transparent);
}

.jm-grant {
  margin: var(--space-6) 0 var(--space-4);
  padding-left: var(--space-4);
  border-left: var(--border-width) solid var(--color-gold);
}

.jm-grant-head {
  margin: 0 0 var(--space-2);
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: clamp(22px, 1.2vw + 17px, 28px);
  line-height: var(--line-heading);
  word-break: keep-all;
}

.jm-grant-why {
  margin: 0;
  color: var(--color-ink);
  font-family: var(--font-serif);
  font-size: var(--text-body);
  line-height: var(--line-body);
  word-break: keep-all;
}

.reading .offer-sum {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1) var(--space-3);
  margin: 0 0 var(--space-7);
  font-family: var(--font-ui);
  font-variant-numeric: tabular-nums;
}

.reading .offer-sum s {
  color: var(--color-muted);
  font-size: var(--text-lead);
}

.reading .offer-sum strong {
  flex-basis: 100%;
  color: var(--color-paper);
  font-family: var(--font-serif);
  font-size: clamp(32px, 2vw + 24px, 44px);
  font-weight: 500;
  line-height: 1.2;
}

/* 가격 사다리: 좁은 칸에서는 지나간 값을 위에서 아래로 쌓는다 (정가, 쿠폰 전 할인가). 숫자 중간에서 줄이 바뀌지 않게 */
.reading .tier-regular {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  white-space: nowrap;
}

.reading .tier-regular .trail-arrow {
  display: none;
}

/* 예고 차례: 걸린 장 묶음 카드 아래 결제 칸으로 내려가는 단추, 결제 칸 묶음의 "걸린 장 들어 있음" (2026-10-14 시안) */
.jm-book-cta {
  margin: var(--space-3) 0 var(--space-6);
}

.jm-book-cta .button {
  width: 100%;
}

.tier-hooked {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 0 var(--space-2);
  box-shadow: inset 0 0 0 var(--hairline) var(--color-gold);
  color: var(--color-gold);
  font-size: var(--text-small);
  font-weight: 500;
  vertical-align: middle;
}

/* 입력 장면 칩 (2026-10-14 시안): 꿈 칩을 고르면 그 꿈의 장면을 묻는다 */
.scene-chips {
  margin: var(--space-4) 0 0;
}

.scene-q {
  margin: 0 0 var(--space-2);
  color: var(--color-gold);
  font-family: var(--font-serif);
  word-break: keep-all;
}

.ask-chips {
  margin-bottom: var(--space-3);
}

/* 세 단락 풀이의 강조 구절 (2026-10-14 소유자 "해석에서 중요한 부분은 다 강조") */
.reading :is(.dream-reading, .saju-why, .yours-weave) strong {
  color: var(--color-gold);
  font-weight: 700;
}

/* 사주 칸을 별자리 판처럼 (2026-10-14 소유자 "훨씬 신비하게"): 네 기둥은 금빛 이중 테와 번지는 빛, 다섯 기운은 밤하늘의 별 다섯 */
.reading .jm-chapter .jm-pillar-label {
  color: var(--color-gold);
  letter-spacing: 0.2em;
}

.reading .jm-chapter .jm-pillar-cell:not(.is-blank) {
  background:
    radial-gradient(1px 1px at 22% 18%, #d6ba7899, transparent),
    radial-gradient(1px 1px at 78% 30%, #d6ba7866, transparent),
    radial-gradient(1px 1px at 30% 84%, #d6ba7880, transparent),
    radial-gradient(120% 90% at 50% 0%, #2a2934 0%, #121318 72%);
  box-shadow:
    inset 0 0 0 var(--hairline) var(--color-gold),
    inset 0 0 0 4px #121318,
    inset 0 0 0 5px #d6ba7840,
    0 0 22px -8px #d6ba7899;
  color: #f6ead0;
  text-shadow: 0 0 14px #d6ba7880;
}

.reading .jm-chapter .jm-pillar-cell.is-blank {
  background:
    radial-gradient(80% 60% at 50% 40%, #d6ba7814, transparent 70%),
    #0b0c10;
  box-shadow: inset 0 0 0 var(--hairline) #d6ba7840;
  color: var(--color-muted);
}

.reading .jm-chapter .radar {
  position: relative;
  padding: var(--space-4) 0;
  background:
    radial-gradient(1px 1px at 8% 22%, #d6ba78aa, transparent),
    radial-gradient(1px 1px at 18% 78%, #d6ba7866, transparent),
    radial-gradient(1.5px 1.5px at 88% 16%, #d6ba7899, transparent),
    radial-gradient(1px 1px at 93% 70%, #d6ba7880, transparent),
    radial-gradient(1px 1px at 40% 8%, #d6ba7866, transparent),
    radial-gradient(1px 1px at 64% 94%, #d6ba7880, transparent),
    radial-gradient(closest-side at 50% 52%, #262634aa, transparent);
}

/* 가운데 희미한 五行: 그림 뒤에 깔리는 표지 (글은 aria-label이 읽는다) */
.reading .jm-chapter .radar::before {
  content: "五行";
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #d6ba7812;
  font-family: var(--font-serif);
  font-size: 56px;
  letter-spacing: 0.3em;
  pointer-events: none;
}

.reading .jm-chapter .radar svg {
  position: relative;
  filter: drop-shadow(0 0 6px #d6ba7859);
}

.reading .jm-chapter .radar-ring {
  stroke: #d6ba782e;
  stroke-dasharray: 1 4;
}

.reading .jm-chapter .radar-ring.is-outer {
  stroke: #d6ba7866;
  stroke-dasharray: none;
}

.reading .jm-chapter .radar-axis {
  stroke: #d6ba7824;
}

.reading .jm-chapter .radar-shape {
  fill: #d6ba781f;
  stroke: var(--color-gold);
  stroke-width: 1.2;
}

.reading .jm-chapter .radar-dot:not(.is-none) {
  fill: #f6ead0;
  stroke: var(--color-gold);
  stroke-width: 2;
}

.reading .jm-chapter .radar-dot.is-none {
  fill: transparent;
  stroke: #d6ba7866;
  stroke-dasharray: 2 2;
}

@media (prefers-reduced-motion: no-preference) {
  .reading .jm-chapter .radar-dot:not(.is-none) {
    animation: jm-twinkle 3.2s ease-in-out infinite;
  }

  .reading .jm-chapter .radar-dot:nth-of-type(2) { animation-delay: 0.6s; }
  .reading .jm-chapter .radar-dot:nth-of-type(3) { animation-delay: 1.2s; }
  .reading .jm-chapter .radar-dot:nth-of-type(4) { animation-delay: 1.8s; }
  .reading .jm-chapter .radar-dot:nth-of-type(5) { animation-delay: 2.4s; }

  .reading .jm-chapter .jm-pillar-cell:not(.is-blank) {
    animation: jm-pillar-glow 5s ease-in-out infinite alternate;
  }
}

/* 반짝임은 흐리게(opacity) 하지 않고 별빛 색을 바꾼다 (테마 규칙: opacity로 흐리게 하지 않는다) */
@keyframes jm-twinkle {
  0%, 100% { fill: #f6ead0; }
  50% { fill: var(--color-gold); }
}

@keyframes jm-pillar-glow {
  from { text-shadow: 0 0 10px #d6ba7866; }
  to { text-shadow: 0 0 20px #d6ba78b3; }
}

/* 붓글씨 한자 (2026-10-14 소유자 "한자들도 border 없이 필기체로"): Yuji Boku(OFL, public/fonts/jimong-brush/OFL.txt)에서 화면에 쓰는 한자만 잘라 담은 한 장.
   담은 글자: 장 표지(夢性象兆), 묶음 인장(意時行卷), 천간·지지, 年月日, 五, 知, 一~十. 다시 만들 때: python3 -m fontTools.subset YujiBoku-Regular.ttf --text=… --flavor=woff2 */
@font-face {
  font-family: "Jimong Brush";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/jimong-brush/jimong-brush.woff2) format("woff2");
}

:root {
  --font-brush: "Jimong Brush", var(--font-serif);
}

/* 장 표지·끝 인장: 테두리 없이 금빛 붓글씨 한 자 */
.reading .jm-chapter .jm-glyph,
.jm-share-cta .jm-glyph,
.reading .jm-end .jm-glyph {
  width: auto;
  height: auto;
  border: 0;
  color: var(--color-gold);
  font-family: var(--font-brush);
  font-size: calc(var(--text-h1) * 2);
  line-height: 1;
  text-shadow: 0 0 18px #d6ba7859;
}

.reading .jm-chapter .jm-glyph {
  justify-items: start;
  margin: 0 0 var(--space-2);
}

/* 묶음 인장도 금 판 없이 붓글씨 */
.reading .jm-bundle .jm-bundle-seal {
  border-radius: 0;
  background: none;
  color: var(--color-gold);
  font-family: var(--font-brush);
  font-size: calc(var(--text-h2) * 1.6);
  text-shadow: 0 0 12px #d6ba7859;
  transform: none;
}

/* 네 기둥의 한자도 붓글씨 */
.jm-pillar-cell:not(.is-plain):not(.is-blank) {
  font-family: var(--font-brush);
}

/* 예고 머리 (2026-10-14 소유자 "비매력적"): 가운데 정렬, 장부 이름 양옆에 금분 줄, 제목 뒤 희미한 붓글씨 夢, 사주 한자 한 줄, 생년월일은 작게 */
.reading .jm-preview-head .ledger-title {
  grid-template-columns: 1fr auto 1fr;
  margin-top: var(--space-5);
  font-size: var(--text-small);
  letter-spacing: 0.3em;
  text-align: center;
}

.reading .jm-preview-head .ledger-title::before {
  content: "";
  grid-column: auto;
  aspect-ratio: auto;
  height: var(--hairline);
  margin: 0;
  border-radius: 0;
  background: linear-gradient(90deg, transparent, var(--color-gold));
  box-shadow: none;
}

.reading .jm-preview-head .ledger-title::after {
  background: linear-gradient(90deg, var(--color-gold), transparent);
}

.reading .jm-preview-head .jm-preview-title {
  position: relative;
  isolation: isolate;
  margin: var(--space-6) 0 var(--space-4);
  font-size: calc(var(--text-h1) * 1.15);
  text-align: center;
}

.reading .jm-preview-head .jm-preview-title::before {
  content: "夢";
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: -1;
  color: #d6ba7817;
  font-family: var(--font-brush);
  font-size: 150px;
  line-height: 1;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.jm-head-pillars {
  margin: 0 0 var(--space-2);
  color: var(--color-gold);
  font-family: var(--font-brush);
  font-size: var(--text-title);
  letter-spacing: 0.12em;
  text-align: center;
  text-shadow: 0 0 14px #d6ba7859;
}

.jm-head-pillars span {
  color: var(--color-muted);
}

.reading .jm-preview-head .jm-birth-line {
  margin-bottom: var(--space-6);
  letter-spacing: 0.04em;
  text-align: center;
}

/* 예고 네 기둥: 테두리 없이 붓글씨 한자만 떠 있게 (2026-10-14 소유자 "한자들도 border 없이") */
.reading .jm-chapter .jm-pillar-cell:not(.is-blank),
.reading .jm-chapter .jm-pillar-cell.is-blank {
  background: none;
  box-shadow: none;
}

.reading .jm-chapter .jm-pillar-cell:not(.is-plain):not(.is-blank) {
  font-size: clamp(40px, 5vw, 52px);
}

.reading .jm-chapter .jm-pillar-cell.is-blank {
  color: #d6ba7859;
}

.reading .jm-chapter .radar::before {
  font-family: var(--font-brush);
  font-size: 72px;
  letter-spacing: 0.15em;
}
