diff --git a/B01_Dashboard/B01_Dashboard_UI_Style_Shell.css b/B01_Dashboard/B01_Dashboard_UI_Style_Shell.css index 52ed0b1a3..d519e1dda 100644 --- a/B01_Dashboard/B01_Dashboard_UI_Style_Shell.css +++ b/B01_Dashboard/B01_Dashboard_UI_Style_Shell.css @@ -1,31 +1,22 @@ -/* 대시보드 셸(546) — 색 · 간격은 .b01-shell 안 변수만(프로젝트 화면 영향 0) · 간격 = 4 의 배수 */ +/* 대시보드 셸(546) — 색 · 둥글기 = 공통 값(ui_template_theme.css)의 별칭 · 간격 = 4 의 배수 */ .b01-shell { - --b01-accent: #1f7a4d; - --b01-accent-soft: #eaf5ee; - --b01-accent-text: #ffffff; - --b01-bg: #f6f7f9; - --b01-card: #ffffff; - --b01-line: #e6e8ec; - --b01-text: #1f2328; - --b01-muted: #6b7280; - --b01-hover: #f3f4f6; - --b01-alert: #e5484d; - --b01-radius: 10px; + --b01-accent: var(--color-accent); + --b01-accent-soft: var(--color-accent-soft); + --b01-accent-text: var(--color-primary-text); + --b01-bg: var(--color-bg); + --b01-card: var(--color-surface-raised); + --b01-line: var(--color-border); + --b01-text: var(--color-text); + --b01-muted: var(--color-text-muted); + --b01-hover: var(--color-hover); + --b01-alert: var(--color-danger-fill); + --b01-radius: var(--radius-cards); --b01-head-h: 48px; --b01-nav-w: 210px; --b01-rail-w: 56px; - /* 옛 구역 부품(공용 카드 · 표 · 단추)도 셸 색을 따름 — 셸 안에서만 */ - --color-bg: var(--b01-bg); - --color-surface: var(--b01-card); - --color-surface-raised: var(--b01-card); - --color-border: var(--b01-line); - --color-primary: var(--b01-accent); - --color-primary-text: var(--b01-accent-text); - --color-text: var(--b01-text); - --color-text-body: var(--b01-text); - --color-text-secondary: var(--b01-muted); - --color-text-muted: var(--b01-muted); + /* 셸 안 판 바탕 = 카드 흰색 */ + --color-surface: var(--color-surface-raised); min-height: 100dvh; display: grid; @@ -34,19 +25,6 @@ color: var(--b01-text); } -:root[data-theme="dark"] .b01-shell { - --b01-accent: #3fae75; - --b01-accent-soft: #173326; - --b01-accent-text: #0e1512; - --b01-bg: #121417; - --b01-card: #1b1e23; - --b01-line: #2c3038; - --b01-text: #e6e8eb; - --b01-muted: #9aa1ab; - --b01-hover: #242830; - --b01-alert: #f06b6f; -} - /* 옛 ☰ 서랍 · 떠 있는 단추 — 대시보드에선 걷음(왼쪽 메뉴 · 사용자 메뉴가 맡음) */ html:has(.b01-shell) .app-header { display: none; diff --git a/resources/tester/test_546_b01_shell.py b/resources/tester/test_546_b01_shell.py index 9f509ecd9..b1f2d3512 100644 --- a/resources/tester/test_546_b01_shell.py +++ b/resources/tester/test_546_b01_shell.py @@ -102,9 +102,11 @@ def test_셸_한_벌(): assert "setDrawerSteps" not in src and "attachCollapsible" not in src, name assert len(src.splitlines()) <= 700, name css = _text(B01 / "B01_Dashboard_UI_Style_Shell.css") - # 색 변수는 셸 안에서만 — :root 에 안 둠 - assert "--b01-accent: #1f7a4d;" in css and not re.search(r"^:root\s*\{", css, re.M) - assert ':root[data-theme="dark"] .b01-shell {' in css + # 색 값은 공통 값 한 벌(theme.css 밝음 · 어두움) — 셸은 별칭만 · :root · 어두움 블록 안 둠 + theme = _text(ROOT / "ui_template" / "ui_template_theme.css") + assert "--color-accent: #1f7a4d;" in theme and "--color-accent: #3fae75;" in theme + assert "--b01-accent: var(--color-accent);" in css and not re.search(r"^:root", css, re.M) + assert not re.search(r"--b01-[a-z-]+:\s*#", css) icons = _text(ROOT / "ui_template" / "ui_template_icons.ts") assert "MIT License" in icons and "Paweł Kuna" in icons diff --git a/resources/tester/test_551_1_theme_tokens.py b/resources/tester/test_551_1_theme_tokens.py new file mode 100644 index 000000000..483e1a507 --- /dev/null +++ b/resources/tester/test_551_1_theme_tokens.py @@ -0,0 +1,43 @@ +"""551-1 공통 값 한 벌 · 글꼴 파일 실음 — 지킴 시험.""" + +import re +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +UI = ROOT / "ui_template" +THEME = (UI / "ui_template_theme.css").read_text(encoding="utf-8") +FONTS = UI / "fonts" + + +def test_글꼴_한_토큰_실은_파일(): + assert THEME.lstrip().startswith("/*") and '@import url("./fonts/noto_sans_kr.css");' in THEME + assert THEME.index("@import") < THEME.index(":root {") # @import 는 규칙보다 앞 + assert '--font-ui: "Noto Sans KR",' in THEME + assert "--font-body: var(--font-ui);" in THEME and "--font-display: var(--font-ui);" in THEME + for name in ("Inter", "Britti", "Pretendard", "Plus Jakarta"): + assert name not in THEME, name + css = (FONTS / "noto_sans_kr.css").read_text(encoding="utf-8") + files = re.findall(r'url\("\./(noto-sans-kr-\d+\.woff2)"\)', css) + assert files and len(files) == css.count("@font-face") + for f in files: + assert (FONTS / f).stat().st_size > 1000, f + assert css.count('font-family: "Noto Sans KR";') == len(files) + assert css.count("unicode-range:") == len(files) + assert "SIL OPEN FONT LICENSE Version 1.1" in (FONTS / "OFL.txt").read_text(encoding="utf-8") + assert len(css.splitlines()) <= 700 + + +def test_옛_보라_이름은_별칭(): + root = THEME[THEME.index(":root {") :] + root = root[: root.index("\n}\n")] + for old, new in ( + ("deep-iris", "text"), + ("plum-velvet", "text"), + ("royal-amethyst", "accent"), + ("mist-violet", "accent-soft"), + ): + assert f"--color-{old}: var(--color-{new});" in root, old + assert "--color-accent: #1f7a4d;" in root and "--color-danger: #c0392b;" in root + assert "--color-danger-fill: #e5484d;" in root + dark = THEME[THEME.index(':root[data-theme="dark"]') :] + assert "deep-iris" not in dark and "royal-amethyst" not in dark # 어두움도 별칭으로 따라옴 diff --git a/ui_template/fonts/OFL.txt b/ui_template/fonts/OFL.txt new file mode 100644 index 000000000..477ab2d47 --- /dev/null +++ b/ui_template/fonts/OFL.txt @@ -0,0 +1,95 @@ +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. + +Noto Sans KR — subset into unicode-range slices (noto-sans-kr-*.woff2) for web embedding. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) and the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/ui_template/fonts/noto-sans-kr-00.woff2 b/ui_template/fonts/noto-sans-kr-00.woff2 new file mode 100644 index 000000000..e30f74693 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-00.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-01.woff2 b/ui_template/fonts/noto-sans-kr-01.woff2 new file mode 100644 index 000000000..409244fca Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-01.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-02.woff2 b/ui_template/fonts/noto-sans-kr-02.woff2 new file mode 100644 index 000000000..f421f8dd3 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-02.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-03.woff2 b/ui_template/fonts/noto-sans-kr-03.woff2 new file mode 100644 index 000000000..427b63149 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-03.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-04.woff2 b/ui_template/fonts/noto-sans-kr-04.woff2 new file mode 100644 index 000000000..9889ae07a Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-04.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-05.woff2 b/ui_template/fonts/noto-sans-kr-05.woff2 new file mode 100644 index 000000000..c13b619a0 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-05.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-06.woff2 b/ui_template/fonts/noto-sans-kr-06.woff2 new file mode 100644 index 000000000..63a429116 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-06.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-07.woff2 b/ui_template/fonts/noto-sans-kr-07.woff2 new file mode 100644 index 000000000..263c2c8ec Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-07.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-08.woff2 b/ui_template/fonts/noto-sans-kr-08.woff2 new file mode 100644 index 000000000..9e12e8b3b Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-08.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-09.woff2 b/ui_template/fonts/noto-sans-kr-09.woff2 new file mode 100644 index 000000000..03bae3db6 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-09.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-10.woff2 b/ui_template/fonts/noto-sans-kr-10.woff2 new file mode 100644 index 000000000..666f17433 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-10.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-11.woff2 b/ui_template/fonts/noto-sans-kr-11.woff2 new file mode 100644 index 000000000..9999ae774 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-11.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-12.woff2 b/ui_template/fonts/noto-sans-kr-12.woff2 new file mode 100644 index 000000000..eb291a673 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-12.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-13.woff2 b/ui_template/fonts/noto-sans-kr-13.woff2 new file mode 100644 index 000000000..bb7ed446a Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-13.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-14.woff2 b/ui_template/fonts/noto-sans-kr-14.woff2 new file mode 100644 index 000000000..24fc4fa50 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-14.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-15.woff2 b/ui_template/fonts/noto-sans-kr-15.woff2 new file mode 100644 index 000000000..12daa5e84 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-15.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-16.woff2 b/ui_template/fonts/noto-sans-kr-16.woff2 new file mode 100644 index 000000000..bbd3add28 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-16.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-17.woff2 b/ui_template/fonts/noto-sans-kr-17.woff2 new file mode 100644 index 000000000..56c555717 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-17.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-18.woff2 b/ui_template/fonts/noto-sans-kr-18.woff2 new file mode 100644 index 000000000..8ae558cf6 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-18.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-19.woff2 b/ui_template/fonts/noto-sans-kr-19.woff2 new file mode 100644 index 000000000..fa41b57f9 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-19.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-20.woff2 b/ui_template/fonts/noto-sans-kr-20.woff2 new file mode 100644 index 000000000..6ab4e6fe2 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-20.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-21.woff2 b/ui_template/fonts/noto-sans-kr-21.woff2 new file mode 100644 index 000000000..df1be3ced Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-21.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-22.woff2 b/ui_template/fonts/noto-sans-kr-22.woff2 new file mode 100644 index 000000000..34781c8f8 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-22.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-23.woff2 b/ui_template/fonts/noto-sans-kr-23.woff2 new file mode 100644 index 000000000..bb23234bb Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-23.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-24.woff2 b/ui_template/fonts/noto-sans-kr-24.woff2 new file mode 100644 index 000000000..4f62636d3 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-24.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-25.woff2 b/ui_template/fonts/noto-sans-kr-25.woff2 new file mode 100644 index 000000000..4652dab3b Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-25.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-26.woff2 b/ui_template/fonts/noto-sans-kr-26.woff2 new file mode 100644 index 000000000..83b2ecfe1 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-26.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-27.woff2 b/ui_template/fonts/noto-sans-kr-27.woff2 new file mode 100644 index 000000000..ae5a1c995 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-27.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-28.woff2 b/ui_template/fonts/noto-sans-kr-28.woff2 new file mode 100644 index 000000000..f2af7865b Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-28.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-29.woff2 b/ui_template/fonts/noto-sans-kr-29.woff2 new file mode 100644 index 000000000..f68adedce Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-29.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-30.woff2 b/ui_template/fonts/noto-sans-kr-30.woff2 new file mode 100644 index 000000000..bbb9ee727 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-30.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-31.woff2 b/ui_template/fonts/noto-sans-kr-31.woff2 new file mode 100644 index 000000000..56a16fbc1 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-31.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-32.woff2 b/ui_template/fonts/noto-sans-kr-32.woff2 new file mode 100644 index 000000000..ac14a52f6 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-32.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-33.woff2 b/ui_template/fonts/noto-sans-kr-33.woff2 new file mode 100644 index 000000000..1311886ca Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-33.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-34.woff2 b/ui_template/fonts/noto-sans-kr-34.woff2 new file mode 100644 index 000000000..28e6fd64a Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-34.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-35.woff2 b/ui_template/fonts/noto-sans-kr-35.woff2 new file mode 100644 index 000000000..e8b271910 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-35.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-36.woff2 b/ui_template/fonts/noto-sans-kr-36.woff2 new file mode 100644 index 000000000..96ed09c5c Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-36.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-37.woff2 b/ui_template/fonts/noto-sans-kr-37.woff2 new file mode 100644 index 000000000..f85e6d2d5 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-37.woff2 differ diff --git a/ui_template/fonts/noto-sans-kr-38.woff2 b/ui_template/fonts/noto-sans-kr-38.woff2 new file mode 100644 index 000000000..b14fb2e44 Binary files /dev/null and b/ui_template/fonts/noto-sans-kr-38.woff2 differ diff --git a/ui_template/fonts/noto_sans_kr.css b/ui_template/fonts/noto_sans_kr.css new file mode 100644 index 000000000..e5ecc061c --- /dev/null +++ b/ui_template/fonts/noto_sans_kr.css @@ -0,0 +1,681 @@ +/* Noto Sans KR(가변 굵기 100~900 · SIL OFL 1.1 · OFL.txt) — 글자 묶음별로 나눈 파일. + * 00 = 화면 글(라틴 · 문장 부호 · 코드에 쓰인 한글) · 나머지 = 한글 · 한자 등 쓰일 때만 받음. */ +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-00.woff2") format("woff2"); + unicode-range: + U+0020-007E, U+00A0-00FF, U+0394, U+03A3, U+03A6, U+03B1-03B3, U+03B8, U+03BB-03BC, U+03C0-03C1, + U+03C3-03C4, U+03C6, U+2002-2003, U+2010-2016, U+2018-201A, U+201C-201E, U+2020-2022, + U+2025-2027, U+2030, U+2032-2033, U+2035, U+2039-203C, U+2042, U+2047-2049, U+2051, U+20A9, + U+2103, U+2113, U+2160, U+2190-2196, U+21C4, U+21CB, U+21D2, U+21E7, U+21E9, U+2205, + U+2211-2212, U+221A, U+221D-221E, U+2220, U+2229-222A, U+2248, U+2260-2261, U+2264-2265, U+226B, + U+2295, U+22A5, U+22EF, U+2312, U+2318, U+2423, U+2460-246F, U+2471-2472, U+24D1, U+24D8, + U+2500, U+2502, U+2504, U+2508, U+2514, U+251C, U+2550, U+2571, U+25A1, U+25A4, U+25A6-25A9, + U+25B2-25B3, U+25B6, U+25BC, U+25C0, U+25C7, U+25C9, U+25CB-25CC, U+25CE-25D0, U+2600-2601, + U+2605-2606, U+26A0, U+2702, U+2713, U+2B06-2B07, U+3007, U+300C-300D, U+3131, U+3134, U+3137, + U+314B, U+314E-314F, U+315B, U+3163, U+318E, U+3251, U+3253-325A, U+3261, U+326F-3270, U+338F, + U+3396, U+339C-339E, U+33A1-33A2, U+33A5, U+33CA, U+5148, U+524D, U+534A, U+5F26, U+5F8C, + U+6BB5, U+8A3B, U+975E, U+AC00-AC01, U+AC04, U+AC07-AC08, U+AC10-AC12, U+AC14-AC16, U+AC19, + U+AC1B-AC1D, U+AC20, U+AC24, U+AC2C-AC2D, U+AC31, U+AC70-AC71, U+AC74, U+AC77-AC78, U+AC7A, + U+AC80-AC81, U+AC83, U+AC89, U+AC8C, U+ACA0, U+ACA8-ACAA, U+ACAC, U+ACB0, U+ACB8-ACB9, + U+ACBC-ACBD, U+ACC1, U+ACC4, U+ACE0-ACE1, U+ACE4, U+ACE7-ACE8, U+ACF1, U+ACF3, U+ACF5, + U+ACFC-ACFD, U+AD00, U+AD04, U+AD11, U+AD1C, U+AD34, U+AD50, U+AD6C-AD6D, U+AD70, U+AD73-AD75, + U+AD7C-AD7D, U+AD8C, U+ADA4, U+ADC0, U+ADDC, U+ADE0, U+ADF8-ADF9, U+ADFC, U+AE00-AE01, + U+AE08-AE09, U+AE0B, U+AE30, U+AE34, U+AE38, U+AE40-AE41, U+AE43, U+AE4A, U+AE4C-AE4E, U+AE50, + U+AE54, U+AE5C-AE5D, U+AE65, U+AE68, U+AE6C, U+AE78, U+AE7C, U+AEBC, U+AEBE, U+AECD, U+AED0, + U+AED8, U+AEF4, U+AF2C-AF2D, U+AF34, U+AF42, U+AF49, U+AFB8, U+AFBC, U+AFC0, U+AFC8, U+AFD4, + U+AFE8, U+AFF0, U+B00C, U+B010, U+B014, U+B01C-B01D, U+B044, U+B048, U+B04A, U+B04C, U+B04E, + U+B054, U+B057, U+B05D, U+B07C, U+B080, U+B08C, U+B098-B099, U+B09C, U+B0A0-B0A1, U+B0A8-B0A9, + U+B0AB-B0AE, U+B0B1, U+B0B3-B0B4, U+B0B8, U+B0BC, U+B0C4-B0C5, U+B0C8, U+B0D0, U+B0E5, + U+B108-B109, U+B10C, U+B110, U+B113, U+B118, U+B11B, U+B123-B124, U+B128, U+B134, U+B137-B138, + U+B140, U+B144, U+B150, U+B155, U+B178-B179, U+B17C, U+B192-B193, U+B1A8, U+B204-B205, U+B208, + U+B20C, U+B214-B215, U+B217, U+B220, U+B258, U+B25C, U+B268, U+B274, U+B289, U+B290, U+B294, + U+B298, U+B29A, U+B2A0, U+B2A5-B2A6, U+B2AC, U+B2C8-B2C9, U+B2CC, U+B2D0, U+B2D8-B2D9, U+B2DB, + U+B2DD, U+B2E4-B2E5, U+B2E8, U+B2EB-B2EE, U+B2F4-B2F5, U+B2F9, U+B2FB, U+B2FF-B300, U+B304, + U+B310-B311, U+B313, U+B354-B355, U+B358, U+B35C, U+B35F, U+B364, U+B367, U+B369, U+B36E, + U+B370-B371, U+B378, U+B38C, U+B3C4-B3C5, U+B3C8, U+B3CB-B3CC, U+B3CE, U+B3D4-B3D5, U+B3D9, + U+B3FC, U+B410, U+B418, U+B41C, U+B420, U+B428-B429, U+B450, U+B454, U+B458, U+B460-B461, + U+B465, U+B46C, U+B480, U+B4A4, U+B4B7, U+B4C8, U+B4DC-B4DD, U+B4E0, U+B4E3-B4E4, U+B4E6, + U+B4EC-B4ED, U+B4EF, U+B4F1, U+B514-B515, U+B518, U+B529-B52A, U+B530-B531, U+B534, U+B538, + U+B545, U+B54C, U+B550, U+B5A0, U+B5A4, U+B5A8, U+B5B4, U+B5BB-B5BC, U+B5C0, U+B5C4, U+B5CC, + U+B5D0, U+B610-B611, U+B69C-B69D, U+B6AB, U+B6B1, U+B6F0, U+B6F4, U+B6F8, U+B700, U+B728, + U+B72C, U+B730, U+B738-B739, U+B73B, U+B744, U+B748, U+B760, U+B77C-B77D, U+B780, U+B784, + U+B78C-B78D, U+B790-B791, U+B797-B799, U+B79C, U+B7A8-B7A9, U+B7AB-B7AC, U+B7B5, U+B7C9, + U+B7EC-B7ED, U+B7F0, U+B7F4, U+B7FC-B7FD, U+B7FF-B801, U+B807-B809, U+B80C, U+B81B, U+B824-B825, + U+B828, U+B82C, U+B834-B835, U+B837-B839, U+B840, U+B85C-B85D, U+B860, U+B864, U+B86C-B86D, + U+B86F, U+B8B0, U+B8CC, U+B8E8-B8E9, U+B8EC, U+B8F0, U+B8F8-B8F9, U+B904, U+B958, U+B960, + U+B974, U+B978, U+B97C, U+B984-B985, U+B987, U+B98E, U+B9AC-B9AD, U+B9B0, U+B9B4, U+B9BC-B9BD, + U+B9BF, U+B9C1, U+B9C8-B9C9, U+B9CC, U+B9CE, U+B9D0-B9D1, U+B9DD-B9DE, U+B9E1, U+B9E4-B9E5, + U+B9E8, U+B9F4-B9F5, U+B9F9-B9FA, U+BA38-BA39, U+BA3C, U+BA40, U+BA42, U+BA48, U+BA4B, + U+BA4D-BA4E, U+BA54, U+BA58, U+BA64, U+BA70-BA71, U+BA74, U+BA78, U+BA85, U+BA87, U+BAA8-BAA9, + U+BAAB-BAAC, U+BAB0, U+BAB8, U+BABB, U+BB34-BB36, U+BB38, U+BB3B-BB3C, U+BB3E, U+BB49, U+BBA4, + U+BBC0, U+BBF8-BBF9, U+BBFC, U+BBFF-BC00, U+BC02, U+BC08, U+BC0B, U+BC0F, U+BC11, U+BC14-BC16, + U+BC18, U+BC1B-BC1D, U+BC29, U+BC30-BC31, U+BC34, U+BC43, U+BC84, U+BC88, U+BC8C, U+BC94-BC95, + U+BC97, U+BC9A, U+BCA0-BCA1, U+BCA4, U+BCA8, U+BCB3, U+BCBC-BCBD, U+BCC0, U+BCC4, U+BCCD, + U+BCD1, U+BCF4-BCF5, U+BCF8, U+BCFC, U+BD04-BD05, U+BD07, U+BD09, U+BD10, U+BD24, U+BD80-BD81, + U+BD84, U+BD88-BD89, U+BD90, U+BD93, U+BD95, U+BD99, U+BDF0, U+BE0C, U+BE14, U+BE44, U+BE48, + U+BE4C, U+BE54, U+BE57, U+BE59, U+BE5B, U+BE60-BE61, U+BE68, U+BE7C, U+BE80, U+BE84, U+BE8C, + U+BE8F-BE90, U+BED4, U+BED7, U+BF08, U+BF18, U+BF51, U+BFB0, U+BFCC, U+BFD0, U+BFD4, U+BFDC, + U+C058, U+C05C, U+C090, U+C0AC-C0AD, U+C0B0, U+C0B4, U+C0B6, U+C0BC-C0BD, U+C0C1, U+C0C8-C0C9, + U+C0D8, U+C0DC-C0DD, U+C0F7, U+C11C-C11E, U+C120, U+C124, U+C12C-C12D, U+C12F-C131, U+C138-C139, + U+C13C, U+C140, U+C148-C149, U+C14B-C14C, U+C154, U+C158, U+C168, U+C170, U+C178, U+C18C-C18E, + U+C190, U+C194, U+C19F, U+C1A1, U+C1C4, U+C1E0, U+C218, U+C21C, U+C220, U+C228, U+C22B, U+C26C, + U+C274, U+C27C-C27D, U+C290, U+C2A4, U+C2A8, U+C2AC-C2AD, U+C2B5, U+C2B7, U+C2B9, U+C2DC-C2DD, + U+C2E0, U+C2E3-C2E4, U+C2EC-C2ED, U+C2F1, U+C2F6, U+C2F8, U+C2FC, U+C308, U+C30D, U+C313, + U+C368, U+C36C, U+C378, U+C37C, U+C3D8, U+C3DC, U+C3E0, U+C3E8, U+C3F4, U+C410, U+C4F0, U+C4F4, + U+C4F8, U+C500-C501, U+C50C, U+C528-C529, U+C52C, U+C544-C545, U+C548-C54A, U+C54C, U+C54E, + U+C554-C555, U+C557-C559, U+C55E, U+C560-C561, U+C564, U+C568, U+C570-C571, U+C574-C575, + U+C57C-C57D, U+C587, U+C591, U+C595, U+C5B4-C5B5, U+C5B8-C5B9, U+C5BB-C5BD, U+C5C4-C5C9, U+C5CE, + U+C5D0-C5D1, U+C5D4, U+C5D8, U+C5E3, U+C5EC-C5EE, U+C5F0, U+C5F4, U+C5F6, U+C5FC-C5FD, + U+C5FF-C601, U+C605-C606, U+C608, U+C61B, U+C624, U+C628, U+C62C, U+C62E, U+C634-C635, U+C639, + U+C640, U+C644, U+C651, U+C654-C655, U+C65C, U+C678, U+C67C, U+C694, U+C6A9, U+C6B0, U+C6B4, + U+C6B8, U+C6BA, U+C6C0-C6C1, U+C6C3, U+C6CC, U+C6D0, U+C6D4, U+C6E0, U+C6F9, U+C704, U+C708, + U+C715, U+C717, U+C719, U+C720-C721, U+C724, U+C728, U+C73C, U+C740, U+C744, U+C74C-C74D, + U+C751, U+C758, U+C774-C775, U+C778, U+C77C-C77D, U+C783-C785, U+C787-C78A, U+C78E, U+C790-C791, + U+C794, U+C796, U+C798, U+C7A0-C7A1, U+C7A3, U+C7A5-C7A6, U+C7AC-C7AD, U+C7B0, U+C7B4, + U+C7BC-C7BD, U+C7C0, U+C7C8, U+C800-C801, U+C804, U+C808, U+C810-C811, U+C815-C816, U+C81C-C81D, + U+C820, U+C82F, U+C838, U+C84C, U+C870-C871, U+C874, U+C878, U+C880-C881, U+C885, U+C887, + U+C88B-C88C, U+C8FC-C8FD, U+C900, U+C904, U+C906, U+C90C-C90D, U+C911, U+C918, U+C92C, U+C950, + U+C954, U+C960, U+C988-C989, U+C998, U+C99D, U+C9C0-C9C1, U+C9C4, U+C9C8, U+C9D0-C9D1, U+C9D3, + U+C9D9-C9DA, U+C9DC-C9DD, U+C9E0, U+C9E4, U+C9E7, U+C9EC, U+C9F8, U+CA4D, U+CA61, U+CABC-CABD, + U+CB48-CB49, U+CBE4, U+CC0C-CC0D, U+CC28-CC29, U+CC2C, U+CC2E, U+CC30, U+CC38, U+CC3D-CC3E, + U+CC44-CC45, U+CC48, U+CC4C, U+CC54, U+CC57, U+CC59, U+CC98-CC99, U+CC9C, U+CCA0, U+CCA8-CCA9, + U+CCAB, U+CCAD, U+CCB4, U+CCD0, U+CCE4, U+CD08-CD09, U+CD18, U+CD1D, U+CD5C, U+CD94-CD95, + U+CD98, U+CD9C, U+CDA4-CDA5, U+CDA9, U+CDB0, U+CDC4, U+CDE8, U+CE20-CE21, U+CE35, U+CE58-CE59, + U+CE5C, U+CE60, U+CE68-CE69, U+CE6D, U+CE74, U+CE78, U+CE90, U+CE94, U+CE98, U+CEA1, + U+CEE4-CEE5, U+CEE8, U+CEEC, U+CEF4, U+CEF7-CEF9, U+CF00, U+CF08, U+CF13, U+CF1C, U+CF20, + U+CF24, U+CF2C, U+CF30, U+CF54-CF55, U+CF58, U+CF5C, U+CF64, U+CFE0, U+CFE8, U+CFFC, U+D000, + U+D034, U+D06C, U+D070, U+D074, U+D07C, U+D0A4, U+D0A8, U+D0AC, U+D0B4, U+D0B7, U+D0B9, + U+D0C0-D0C1, U+D0C4, U+D0C8, U+D0D0-D0D1, U+D0D3, U+D0D5, U+D0DC-D0DD, U+D0ED, U+D130-D131, + U+D134, U+D140, U+D14C-D14D, U+D150, U+D154, U+D15C-D15D, U+D1A0-D1A1, U+D1A4, U+D1A8, U+D1B1, + U+D1B5, U+D1F4, U+D22C-D22D, U+D234, U+D241, U+D280, U+D284, U+D290, U+D295, U+D29C, + U+D2B8-D2B9, U+D2BC, U+D2C0, U+D2C8, U+D2F0-D2F1, U+D2F4, U+D2F8, U+D300-D301, U+D305, U+D30C, + U+D30E, U+D310, U+D314, U+D31D, U+D328-D329, U+D32C, U+D33D, U+D37C, U+D398-D399, U+D39C, + U+D3B4, U+D3B8, U+D3BC, U+D3C4-D3C5, U+D3C8-D3C9, U+D3D0, U+D3EC-D3ED, U+D3F0, U+D3F4, U+D3FC, + U+D45C, U+D478, U+D47C, U+D480, U+D482, U+D488, U+D48B, U+D48D, U+D504, U+D508, U+D50C, + U+D53C-D53D, U+D540, U+D544, U+D54F, U+D551, U+D558-D559, U+D55C, U+D560, U+D568-D569, U+D56D, + U+D574-D575, U+D578, U+D588-D589, U+D5A5, U+D5C8, U+D5CC, U+D5D0, U+D5D8, U+D5DB, U+D5E4, + U+D5EC, U+D5F7, U+D600, U+D604, U+D611, U+D614-D615, U+D638-D639, U+D63C, U+D640, U+D648-D649, + U+D64D, U+D654-D655, U+D658, U+D65C, U+D669, U+D68C-D68D, U+D69F, U+D6A1, U+D6A8, U+D6C4-D6C5, + U+D6C8, U+D6D1, U+D6E8, U+D718, U+D71C, U+D720, U+D734, U+D744, U+D749, U+D750-D751, U+D754, + U+D758-D759, U+D760-D761, U+D765, U+D769, U+D770, U+D788, U+D78C, U+D790, U+D798-D799, U+D7A3, + U+FF08-FF09, U+FF0B, U+FF0D, U+FF1A, U+FF5E, U+1F170; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-01.woff2") format("woff2"); + unicode-range: + U+AC02-AC03, U+AC05-AC06, U+AC09-AC0F, U+AC13, U+AC17-AC18, U+AC1A, U+AC1E-AC1F, U+AC21-AC23, + U+AC25-AC2B, U+AC2E-AC30, U+AC32-AC6F, U+AC72-AC73, U+AC75-AC76, U+AC79, U+AC7B-AC7F, U+AC82, + U+AC84-AC88, U+AC8A-AC8B, U+AC8D-AC9F, U+ACA1-ACA7, U+ACAB, U+ACAD-ACAF, U+ACB1-ACB7, + U+ACBA-ACBB, U+ACBE-ACC0, U+ACC2-ACC3, U+ACC5-ACDF, U+ACE2-ACE3, U+ACE5-ACE6, U+ACE9-ACF0, + U+ACF2, U+ACF4, U+ACF6-ACFB, U+ACFE-ACFF, U+AD01-AD03, U+AD05-AD10, U+AD12-AD1B, U+AD1D-AD33, + U+AD35-AD4F, U+AD51-AD6B, U+AD6E-AD6F, U+AD71-AD72, U+AD76-AD7B, U+AD7E-AD8B, U+AD8D-ADA3, + U+ADA5-ADBF, U+ADC1-ADD5; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-02.woff2") format("woff2"); + unicode-range: + U+ADD6-ADDB, U+ADDD-ADDF, U+ADE1-ADF7, U+ADFA-ADFB, U+ADFD-ADFF, U+AE02-AE07, U+AE0A, + U+AE0C-AE2F, U+AE31-AE33, U+AE35-AE37, U+AE39-AE3F, U+AE42, U+AE44-AE49, U+AE4B, U+AE4F, + U+AE51-AE53, U+AE55-AE5B, U+AE5E-AE64, U+AE66-AE67, U+AE69-AE6B, U+AE6D-AE77, U+AE79-AE7B, + U+AE7D-AEBB, U+AEBD, U+AEBF-AECC, U+AECE-AECF, U+AED1-AED7, U+AED9-AEF3, U+AEF5-AF2B, + U+AF2E-AF33, U+AF35-AF41, U+AF43-AF48, U+AF4A-AF8D; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-03.woff2") format("woff2"); + unicode-range: + U+AF8E-AFB7, U+AFB9-AFBB, U+AFBD-AFBF, U+AFC1-AFC7, U+AFC9-AFD3, U+AFD5-AFE7, U+AFE9-AFEF, + U+AFF1-B00B, U+B00D-B00F, U+B011-B013, U+B015-B01B, U+B01E-B043, U+B045-B047, U+B049, U+B04B, + U+B04D, U+B04F-B053, U+B055-B056, U+B058-B05C, U+B05E-B07B, U+B07D-B07F, U+B081-B08B, + U+B08D-B097, U+B09A-B09B, U+B09D-B09F, U+B0A2-B0A7, U+B0AA, U+B0AF-B0B0, U+B0B2, U+B0B5-B0B7, + U+B0B9-B0BB, U+B0BD-B0C3, U+B0C6-B0C7, U+B0C9-B0CF, U+B0D1-B0E4, U+B0E6-B107, U+B10A-B10B, + U+B10D-B10F, U+B111-B112, U+B114-B117, U+B119-B11A, U+B11C-B122, U+B125-B127, U+B129-B133, + U+B135-B136, U+B139-B13F, U+B141-B143, U+B145-B14F, U+B151-B154, U+B156-B15A; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-04.woff2") format("woff2"); + unicode-range: + U+B15B-B177, U+B17A-B17B, U+B17D-B191, U+B194-B1A7, U+B1A9-B203, U+B206-B207, U+B209-B20B, + U+B20D-B213, U+B216, U+B218-B21F, U+B221-B257, U+B259-B25B, U+B25D-B267, U+B269-B273, + U+B275-B288, U+B28A-B28F, U+B291-B293, U+B295-B297, U+B299, U+B29B-B29F, U+B2A1-B2A4, + U+B2A7-B2AB, U+B2AD-B2C7, U+B2CA-B2CB, U+B2CD-B2CF, U+B2D1-B2D7, U+B2DA, U+B2DC, U+B2DE-B2E3, + U+B2E6-B2E7, U+B2E9-B2EA, U+B2EF-B2F3, U+B2F6-B2F8, U+B2FA, U+B2FC-B2FE, U+B301-B303, + U+B305-B30F, U+B312, U+B314-B31E; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-05.woff2") format("woff2"); + unicode-range: + U+B31F-B353, U+B356-B357, U+B359-B35B, U+B35D-B35E, U+B360-B363, U+B365-B366, U+B368, + U+B36A-B36D, U+B36F, U+B372-B377, U+B379-B38B, U+B38D-B3C3, U+B3C6-B3C7, U+B3C9-B3CA, U+B3CD, + U+B3CF-B3D3, U+B3D6-B3D8, U+B3DA-B3FB, U+B3FD-B40F, U+B411-B417, U+B419-B41B, U+B41D-B41F, + U+B421-B427, U+B42A-B44F, U+B451-B453, U+B455-B457, U+B459-B45F, U+B462-B464, U+B466-B46B, + U+B46D-B47F, U+B481-B4A3, U+B4A5-B4B6, U+B4B8-B4C7, U+B4C9-B4D6; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-06.woff2") format("woff2"); + unicode-range: + U+B4D7-B4DB, U+B4DE-B4DF, U+B4E1-B4E2, U+B4E5, U+B4E7-B4EB, U+B4EE, U+B4F0, U+B4F2-B513, + U+B516-B517, U+B519-B528, U+B52B-B52F, U+B532-B533, U+B535-B537, U+B539-B544, U+B546-B54B, + U+B54D-B54F, U+B551-B59F, U+B5A1-B5A3, U+B5A5-B5A7, U+B5A9-B5B3, U+B5B5-B5BA, U+B5BD-B5BF, + U+B5C1-B5C3, U+B5C5-B5CB, U+B5CD-B5CF, U+B5D1-B60F, U+B612-B688; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-07.woff2") format("woff2"); + unicode-range: + U+B689-B69B, U+B69E-B6AA, U+B6AC-B6B0, U+B6B2-B6EF, U+B6F1-B6F3, U+B6F5-B6F7, U+B6F9-B6FF, + U+B701-B727, U+B729-B72B, U+B72D-B72F, U+B731-B737, U+B73A, U+B73C-B743, U+B745-B747, + U+B749-B75F, U+B761-B77B, U+B77E-B77F, U+B781-B783, U+B785-B78B, U+B78E-B78F, U+B792-B796, + U+B79A-B79B, U+B79D-B7A7, U+B7AA, U+B7AD-B7B4, U+B7B6-B7C8, U+B7CA-B7EB, U+B7EE-B7EF, + U+B7F1-B7F3, U+B7F5-B7FB, U+B7FE, U+B802-B806, U+B80A-B80B, U+B80D-B81A, U+B81C-B823, + U+B826-B827, U+B829-B82B, U+B82D-B833, U+B836, U+B83A-B83F, U+B841-B853; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-08.woff2") format("woff2"); + unicode-range: + U+B854-B85B, U+B85E-B85F, U+B861-B863, U+B865-B86B, U+B86E, U+B870-B8AF, U+B8B1-B8CB, + U+B8CD-B8E7, U+B8EA-B8EB, U+B8ED-B8EF, U+B8F1-B8F7, U+B8FA-B903, U+B905-B957, U+B959-B95F, + U+B961-B973, U+B975-B977, U+B979-B97B, U+B97D-B983, U+B986, U+B988-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+B9CF, + U+B9D2-B9DC, U+B9DF-B9E0, U+B9E2-B9E3, U+B9E6-B9E7, U+B9E9-B9F3, U+B9F6-B9F8, U+B9FB-BA14; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-09.woff2") format("woff2"); + unicode-range: + U+BA15-BA37, U+BA3A-BA3B, U+BA3D-BA3F, U+BA41, U+BA43-BA47, U+BA49-BA4A, U+BA4C, U+BA4F-BA53, + U+BA55-BA57, U+BA59-BA63, U+BA65-BA6F, U+BA72-BA73, U+BA75-BA77, U+BA79-BA84, U+BA86, + U+BA88-BAA7, U+BAAA, U+BAAD-BAAF, U+BAB1-BAB7, U+BAB9-BABA, U+BABC-BB33, U+BB37, U+BB39-BB3A, + U+BB3D, U+BB3F-BB48, U+BB4A-BBA3, U+BBA5-BBBF, U+BBC1-BBC7; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-10.woff2") format("woff2"); + unicode-range: + U+BBC8-BBF7, U+BBFA-BBFB, U+BBFD-BBFE, U+BC01, U+BC03-BC07, U+BC09-BC0A, U+BC0C-BC0E, U+BC10, + U+BC12-BC13, U+BC17, U+BC19-BC1A, U+BC1E-BC28, U+BC2A-BC2F, U+BC32-BC33, U+BC35-BC42, + U+BC44-BC83, U+BC85-BC87, U+BC89-BC8B, U+BC8D-BC93, U+BC96, U+BC98-BC99, 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-BCF3, U+BCF6-BCF7, U+BCF9-BCFB, U+BCFD-BD03, U+BD06, U+BD08, U+BD0A-BD0F, + U+BD11-BD23, U+BD25-BD7F, U+BD82-BD83, U+BD85-BD87, U+BD8A-BD8E; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-11.woff2") format("woff2"); + unicode-range: + U+BD8F, U+BD91-BD92, U+BD94, U+BD96-BD98, U+BD9A-BDEF, U+BDF1-BE0B, U+BE0D-BE13, U+BE15-BE43, + U+BE45-BE47, U+BE49-BE4B, U+BE4D-BE53, U+BE55-BE56, U+BE58, U+BE5A, U+BE5C-BE5F, U+BE62-BE67, + U+BE69-BE7B, U+BE7D-BE7F, U+BE81-BE83, U+BE85-BE8B, U+BE8D-BE8E, U+BE91-BED3, U+BED5-BED6, + U+BED8-BF07, U+BF09-BF17, U+BF19-BF39; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-12.woff2") format("woff2"); + unicode-range: + U+BF3A-BF50, U+BF52-BFAF, U+BFB1-BFCB, U+BFCD-BFCF, U+BFD1-BFD3, U+BFD5-BFDB, U+BFDD-C057, + U+C059-C05B, U+C05D-C08F, U+C091-C0AB, U+C0AE-C0AF, U+C0B1-C0B3, U+C0B5, U+C0B7-C0BB, + U+C0BE-C0C0, U+C0C2-C0C7, U+C0CA-C0D7, U+C0D9-C0DB, U+C0DE-C0DF; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-13.woff2") format("woff2"); + unicode-range: + U+C0E0-C0F6, U+C0F8-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+C14D-C153, U+C155-C157, U+C159-C167, U+C169-C16F, + U+C171-C177, U+C179-C18B, U+C18F, U+C191-C193, U+C195-C19E, U+C1A0, U+C1A2-C1C3, U+C1C5-C1DF, + U+C1E1-C217, U+C219-C21B, U+C21D-C21F, U+C221-C227, U+C229-C22A, U+C22C-C26B, U+C26D-C273, + U+C275-C27B, U+C27E-C28F, U+C291-C29A; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-14.woff2") format("woff2"); + unicode-range: + U+C29B-C2A3, U+C2A5-C2A7, U+C2A9-C2AB, U+C2AE-C2B4, U+C2B6, U+C2B8, U+C2BA-C2DB, U+C2DE-C2DF, + U+C2E1-C2E2, U+C2E5-C2EB, U+C2EE-C2F0, U+C2F2-C2F5, U+C2F7, U+C2F9-C2FB, U+C2FD-C307, + U+C309-C30C, U+C30E-C312, U+C314-C367, U+C369-C36B, U+C36D-C377, U+C379-C37B, U+C37D-C3D7, + U+C3D9-C3DB, U+C3DD-C3DF, U+C3E1-C3E7, U+C3E9-C3F3, U+C3F5-C40F, U+C411-C449; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-15.woff2") format("woff2"); + unicode-range: + U+C44A-C4EF, U+C4F1-C4F3, U+C4F5-C4F7, U+C4F9-C4FF, U+C502-C50B, U+C50D-C527, U+C52A-C52B, + U+C52D-C543, U+C546-C547, U+C54B, U+C54D, U+C54F-C553, U+C556, U+C55A-C55D, U+C55F, U+C562-C563, + U+C565-C567, U+C569-C56F, U+C572-C573, U+C576-C57B, U+C57E-C586, U+C588-C590, U+C592-C594, + U+C596-C5B3, U+C5B6-C5B7, U+C5BA, U+C5BE-C5C3, U+C5CA-C5CD, U+C5CF, U+C5D2-C5D3, U+C5D5-C5D7, + U+C5D9-C5E2, U+C5E4-C5EB, U+C5EF, U+C5F1-C5F3, U+C5F5, U+C5F7-C5FB, U+C5FE, U+C602-C604, U+C607, + U+C609-C61A, U+C61C-C61E; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-16.woff2") format("woff2"); + unicode-range: + U+C61F-C623, U+C625-C627, U+C629-C62B, U+C62D, U+C62F-C633, U+C636-C638, U+C63A-C63F, + U+C641-C643, U+C645-C650, U+C652-C653, U+C656-C65B, U+C65D-C677, U+C679-C67B, U+C67D-C693, + U+C695-C6A8, U+C6AA-C6AF, U+C6B1-C6B3, U+C6B5-C6B7, U+C6B9, U+C6BB-C6BF, U+C6C2, U+C6C4-C6CB, + U+C6CD-C6CF, U+C6D1-C6D3, U+C6D5-C6DF, U+C6E1-C6F8, U+C6FA-C703, U+C705-C707, U+C709-C714, + U+C716, U+C718, U+C71A-C71F, U+C722-C723, U+C725-C727, U+C729-C73B, U+C73D-C73F, U+C741-C743, + U+C745-C74B, U+C74E-C750, U+C752-C757, U+C759-C773, U+C776-C777, U+C779-C77B, U+C77E-C782, + U+C786, U+C78B-C78D, U+C78F, U+C792-C793, U+C795, U+C797, U+C799-C79F, U+C7A2, U+C7A4, + U+C7A7-C7AB, U+C7AE-C7AF, U+C7B1-C7B3, U+C7B5-C7BB, U+C7BE-C7BF, U+C7C1-C7C7, U+C7C9-C7FA; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-17.woff2") format("woff2"); + unicode-range: + U+C7FB-C7FF, U+C802-C803, U+C805-C807, U+C809-C80F, U+C812-C814, U+C817-C81B, U+C81E-C81F, + U+C821-C82E, U+C830-C837, U+C839-C84B, U+C84D-C86F, U+C872-C873, U+C875-C877, U+C879-C87F, + U+C882-C884, U+C886, U+C888-C88A, U+C88D-C8FB, U+C8FE-C8FF, U+C901-C903, U+C905, U+C907-C90B, + U+C90E-C910, U+C912-C917, U+C919-C92B, U+C92D-C94F, U+C951-C953, U+C955-C95F, U+C961-C987, + U+C98A-C997, U+C999-C99C, U+C99E-C9B3; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-18.woff2") format("woff2"); + unicode-range: + U+C9B4-C9BF, U+C9C2-C9C3, U+C9C5-C9C7, U+C9C9-C9CF, U+C9D2, U+C9D4-C9D8, U+C9DB, U+C9DE-C9DF, + U+C9E1-C9E3, U+C9E5-C9E6, U+C9E8-C9EB, U+C9ED-C9F7, U+C9F9-CA4C, U+CA4E-CA60, U+CA62-CABB, + U+CABE-CB47, U+CB4A-CB59; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-19.woff2") format("woff2"); + unicode-range: + U+CB5A-CBE3, U+CBE5-CC0B, U+CC0E-CC27, U+CC2A-CC2B, U+CC2D, U+CC2F, U+CC31-CC37, U+CC39-CC3C, + U+CC3F-CC43, U+CC46-CC47, U+CC49-CC4B, U+CC4D-CC53, U+CC55-CC56, U+CC58, U+CC5A-CC97, + U+CC9A-CC9B, U+CC9D-CC9F, U+CCA1-CCA7, U+CCAA, U+CCAC, U+CCAE-CCB3, U+CCB5-CCCF, U+CCD1-CCE3, + U+CCE5-CD06; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-20.woff2") format("woff2"); + unicode-range: + U+CD07, U+CD0A-CD17, U+CD19-CD1C, U+CD1E-CD5B, U+CD5D-CD93, U+CD96-CD97, U+CD99-CD9B, + U+CD9D-CDA3, U+CDA6-CDA8, U+CDAA-CDAF, U+CDB1-CDC3, U+CDC5-CDE7, U+CDE9-CE1F, U+CE22-CE34, + U+CE36-CE57, U+CE5A-CE5B, U+CE5D-CE5F, U+CE61-CE67, U+CE6A-CE6C, U+CE6E-CE73, U+CE75-CE77, + U+CE79-CE8F, U+CE91-CE93, U+CE95-CE97, U+CE99-CEA0, U+CEA2-CEB5; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-21.woff2") format("woff2"); + unicode-range: + U+CEB6-CEE3, U+CEE6-CEE7, U+CEE9-CEEB, U+CEED-CEF3, U+CEF5-CEF6, U+CEFA-CEFF, U+CF01-CF07, + U+CF09-CF12, U+CF14-CF1B, U+CF1D-CF1F, U+CF21-CF23, U+CF25-CF2B, U+CF2D-CF2F, U+CF31-CF53, + U+CF56-CF57, U+CF59-CF5B, U+CF5D-CF63, U+CF65-CFDF, U+CFE1-CFE7, U+CFE9-CFFB, U+CFFD-CFFF, + U+D001-D033, U+D035-D05F; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-22.woff2") format("woff2"); + unicode-range: + U+D060-D06B, U+D06D-D06F, U+D071-D073, U+D075-D07B, U+D07D-D0A3, U+D0A5-D0A7, U+D0A9-D0AB, + U+D0AD-D0B3, U+D0B5-D0B6, U+D0B8, U+D0BA-D0BF, U+D0C2-D0C3, U+D0C5-D0C7, U+D0C9-D0CF, U+D0D2, + U+D0D4, U+D0D6-D0DB, U+D0DE-D0EC, U+D0EE-D12F, U+D132-D133, U+D135-D13F, U+D141-D14B, + U+D14E-D14F, U+D151-D153, U+D155-D15B, U+D15E-D19F, U+D1A2-D1A3, U+D1A5-D1A7, U+D1A9-D1B0, + U+D1B2-D1B4, U+D1B6-D1F3, U+D1F5-D215; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-23.woff2") format("woff2"); + unicode-range: + U+D216-D22B, U+D22E-D233, U+D235-D240, U+D242-D27F, U+D281-D283, U+D285-D28F, U+D291-D294, + U+D296-D29B, U+D29D-D2B7, U+D2BA-D2BB, U+D2BD-D2BF, U+D2C1-D2C7, U+D2C9-D2EF, U+D2F2-D2F3, + U+D2F5-D2F7, U+D2F9-D2FF, U+D302-D304, U+D306-D30B, U+D30D, U+D30F, U+D311-D313, U+D315-D31C, + U+D31E-D327, U+D32A-D32B, U+D32D-D33C, U+D33E-D37B, U+D37D-D397, U+D39A-D39B, U+D39D-D3B3, + U+D3B5-D3B7, U+D3B9-D3BB, U+D3BD-D3C3, U+D3C6-D3C7, U+D3CA-D3CE; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-24.woff2") format("woff2"); + unicode-range: + U+D3CF, U+D3D1-D3EB, U+D3EE-D3EF, U+D3F1-D3F3, U+D3F5-D3FB, U+D3FD-D45B, U+D45D-D477, + U+D479-D47B, U+D47D-D47F, U+D481, U+D483-D487, U+D489-D48A, U+D48C, U+D48E-D503, U+D505-D507, + U+D509-D50B, U+D50D-D53B, U+D53E-D53F, U+D541-D543, U+D545-D54E, U+D550, U+D552-D557, + U+D55A-D55B, U+D55D-D55F, U+D561-D567, U+D56A-D56C, U+D56E-D573, U+D576-D577, U+D579-D57F; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-25.woff2") format("woff2"); + unicode-range: + U+D580-D587, U+D58A-D5A4, U+D5A6-D5C7, U+D5C9-D5CB, U+D5CD-D5CF, U+D5D1-D5D7, U+D5D9-D5DA, + U+D5DC-D5E3, U+D5E5-D5EB, U+D5ED-D5F6, U+D5F8-D5FF, U+D601-D603, U+D605-D610, U+D612-D613, + U+D616-D637, U+D63A-D63B, U+D63D-D63F, U+D641-D647, U+D64A-D64C, U+D64E-D653, U+D656-D657, + U+D659-D65B, U+D65D-D668, U+D66A-D68B, U+D68E-D69E, U+D6A0, U+D6A2-D6A7, U+D6A9-D6C3, + U+D6C6-D6C7, U+D6C9-D6D0, U+D6D2-D6E7, U+D6E9-D717, U+D719-D71B, U+D71D-D71F, U+D721-D733, + U+D735-D739; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-26.woff2") format("woff2"); + unicode-range: + U+D73A-D743, U+D745-D748, U+D74A-D74F, U+D752-D753, U+D755-D757, U+D75A-D75F, U+D762-D764, + U+D766-D768, U+D76A-D76F, U+D771-D787, U+D789-D78B, U+D78D-D78F, U+D791-D797, U+D79A-D7A2; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-27.woff2") format("woff2"); + unicode-range: + U+0100-0141, U+0143-0393, U+0395-03A2, U+03A4-03A5, U+03A7-03B0, U+03B4-03B7, U+03B9-03BA, + U+03BD-03BF, U+03C2, U+03C5, U+03C7-1D61, U+1D63-2001, U+2004-200F, U+2017, U+201B, U+201F, + U+2023-2024, U+2028-202F, U+2031, U+2034, U+2036-2038, U+203D-2041, U+2043-2046, U+204A-2050, + U+2052-205C, U+205E-207E, U+2083-2089, U+208B-20A8, U+20AA-2102, U+2104-2112, U+2114-2152, + U+2154-215F, U+2161-218F, U+2197-21A5, U+21A7-21A8, U+21AB-21B4, U+21B8-21B9, U+21BC-21C3, + U+21C5-21C8, U+21CA, U+21CC-21D1, U+21D3-21D4, U+21D6-21E3, U+21E6, U+21E8, U+21EA-21F0, + U+21F3-21F5, U+21F7-2204, U+2206-2210, U+2213-2219, U+221B-221C, U+221F, U+2221-2228, + U+222B-223B, U+223D-223E, U+2240-2247, U+2249-2251, U+2253-225F, U+2262, U+2266-226A, + U+226C-228D, U+228F-2294, U+2296-229D, U+229F-22A1, U+22A4, U+22A6-22C7, U+22C9-22D3, + U+22D6-22ED, U+22F0-2300, U+2302-230F, U+2311, U+2313-2315, U+2319-2325, U+2327, U+2329-232A, + U+232C-2397, U+2399-2422, U+2424-245F, U+2470, U+2473-24D0, U+24D2-24D7, U+24D9-24FF, U+2501, + U+2503, U+2505-2507, U+2509-2513, U+2515-251B, U+251D-254F, U+2551-2570, U+2572-25A0, + U+25A2-25A3, U+25A5, U+25AA-25AB, U+25AE-25B1, U+25B4-25B5, U+25B7, U+25B9-25BB, U+25BD, U+25BF, + U+25C1-25C6, U+25CA, U+25D1-25DB, U+25DD-25DE, U+25E0-25E6, U+25E8-25E9, U+25EC-25F9, + U+25FC-25FF, U+2602-2604, U+2607-260F, U+2611-262F, U+2631-263D, U+263F-2674; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-28.woff2") format("woff2"); + unicode-range: + U+2675-2695, U+2697-2698, U+269A-269F, U+26A2-26D3, U+26D5-26EF, U+26F1-26F5, U+26F7-2701, + U+2703-2704, U+2706-270A, U+270C-270D, U+270F-2712, U+2714, U+2716, U+2718-271A, U+271C-2724, + U+2726-2732, U+2734-2743, U+2745-274F, U+2751-27A3, U+27A5-27F1, U+27F4-27F5, U+27F8-27F9, + U+27FB-283E, U+2840-2911, U+2914-2921, U+2923-29C4, U+29C6-29C8, U+29CA-2B05, U+2B08-2B11, + U+2B13-2B1F, U+2B23-2B2C, U+2B2E-2B4F, U+2B51-2B6E, U+2B70-2B72, U+2B74-3006, U+3008-300B, + U+300E-3130, U+3132-3133, U+3135-3136, U+3138-314A, U+314C-314D, U+3150-315A, U+315C-3162, + U+3164-318D, U+318F-3250, U+3252, U+325B-3260, U+3262-326E, U+3271-328C; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-29.woff2") format("woff2"); + unicode-range: + U+328D-338E, U+3390-3395, U+3397-339B, U+339F-33A0, U+33A3-33A4, U+33A6-33C9, U+33CB-5147, + U+5149-5249; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-30.woff2") format("woff2"); + unicode-range: U+524A-524C, U+524E-5349, U+534B-5BD0; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-31.woff2") format("woff2"); + unicode-range: U+5BD2-5F25, U+5F27-5F8B, U+5F8D-64BE; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-32.woff2") format("woff2"); + unicode-range: U+64BF-6BB4, U+6BB6-6DC3; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-33.woff2") format("woff2"); + unicode-range: U+6DC4-76CE; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-34.woff2") format("woff2"); + unicode-range: U+76D2-8109; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-35.woff2") format("woff2"); + unicode-range: U+810A-8A3A, U+8A3C-8C4E; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-36.woff2") format("woff2"); + unicode-range: U+8C50-975D, U+975F-9802; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-37.woff2") format("woff2"); + unicode-range: + U+9803-ABFF, U+AC02-AC03, U+AC05-AC06, U+AC09-AC0F, U+AC13, U+AC17-AC18, U+AC1A, U+AC1E-AC1F, + U+AC21-AC23, U+AC25-AC2B, U+AC2E-AC30, U+AC32-AC6F, U+AC72-AC73, U+AC75-AC76, U+AC79, + U+AC7B-AC7F, U+AC82, U+AC84-AC88, U+AC8A-AC8B, U+AC8D-AC9F, U+ACA1-ACA7, U+ACAB, U+ACAD-ACAF, + U+ACB1-ACB7, U+ACBA-ACBB, U+ACBE-ACC0, U+ACC2-ACC3, U+ACC5-ACDF, U+ACE2-ACE3, U+ACE5-ACE6, + U+ACE9-ACF0, U+ACF2, U+ACF4, U+ACF6-ACFB, U+ACFE-ACFF, U+AD01-AD03, U+AD05-AD10, U+AD12-AD1B, + U+AD1D-AD33, U+AD35-AD4F, U+AD51-AD6B, U+AD6E-AD6F, U+AD71-AD72, U+AD76-AD7B, U+AD7E-AD8B, + U+AD8D-ADA3, U+ADA5-ADBF, U+ADC1-ADDB, U+ADDD-ADDF, U+ADE1-ADF7, U+ADFA-ADFB, U+ADFD-ADFF, + U+AE02-AE07, U+AE0A, U+AE0C-AE2F, U+AE31-AE33, U+AE35-AE37, U+AE39-AE3F, U+AE42, U+AE44-AE49, + U+AE4B, U+AE4F, U+AE51-AE53, U+AE55-AE5B, U+AE5E-AE64, U+AE66-AE67, U+AE69-AE6B, U+AE6D-AE77, + U+AE79-AE7B, U+AE7D-AEBB, U+AEBD, U+AEBF-AECC, U+AECE-AECF, U+AED1-AED7, U+AED9-AEF3, + U+AEF5-AF2B, U+AF2E-AF33, U+AF35-AF41, U+AF43-AF48, U+AF4A-AFB7, U+AFB9-AFBB, U+AFBD-AFBF, + U+AFC1-AFC7, U+AFC9-AFD3, U+AFD5-AFE7, U+AFE9-AFEF, U+AFF1-B00B, U+B00D-B00F, U+B011-B013, + U+B015-B01B, U+B01E-B043, U+B045-B047, U+B049, U+B04B, U+B04D, U+B04F-B053, U+B055-B056, + U+B058-B05C, U+B05E-B07B, U+B07D-B07F, U+B081-B08B, U+B08D-B097, U+B09A-B09B, U+B09D-B09F, + U+B0A2-B0A7, U+B0AA, U+B0AF-B0B0, U+B0B2, U+B0B5-B0B7, U+B0B9-B0BB, U+B0BD-B0C3, U+B0C6-B0C7, + U+B0C9-B0CF, U+B0D1-B0E4, U+B0E6-B107, U+B10A-B10B, U+B10D-B10F, U+B111-B112, U+B114-B117, + U+B119-B11A, U+B11C-B122, U+B125-B127, U+B129-B133, U+B135-B136, U+B139-B13F, U+B141-B143, + U+B145-B14F, U+B151-B154, U+B156-B177, U+B17A-B17B, U+B17D-B191, U+B194-B1A7, U+B1A9-B203, + U+B206-B207, U+B209-B20B, U+B20D-B213, U+B216, U+B218-B21F, U+B221-B257, U+B259-B25B, + U+B25D-B267, U+B269-B273, U+B275-B288, U+B28A-B28F, U+B291-B293, U+B295-B297, U+B299, + U+B29B-B29F, U+B2A1-B2A4, U+B2A7-B2AB, U+B2AD-B2C7, U+B2CA-B2CB, U+B2CD-B2CF, U+B2D1-B2D7, + U+B2DA, U+B2DC, U+B2DE-B2E3, U+B2E6-B2E7, U+B2E9-B2EA, U+B2EF-B2F3, U+B2F6-B2F8, U+B2FA, + U+B2FC-B2FE, U+B301-B303, U+B305-B30F, U+B312, U+B314-B353, U+B356-B357, U+B359-B35B, + U+B35D-B35E, U+B360-B363, U+B365-B366, U+B368, U+B36A-B36D, U+B36F, U+B372-B377, U+B379-B38B, + U+B38D-B3C3, U+B3C6-B3C7, U+B3C9-B3CA, U+B3CD, U+B3CF-B3D3, U+B3D6-B3D8, U+B3DA-B3FB, + U+B3FD-B40F, U+B411-B417, U+B419-B41B, U+B41D-B41F, U+B421-B427, U+B42A-B44F, U+B451-B453, + U+B455-B457, U+B459-B45F, U+B462-B464, U+B466-B46B, U+B46D-B47F, U+B481-B4A3, U+B4A5-B4B6, + U+B4B8-B4C7, U+B4C9-B4DB, U+B4DE-B4DF, U+B4E1-B4E2, U+B4E5, U+B4E7-B4EB, U+B4EE, U+B4F0, + U+B4F2-B513, U+B516-B517, U+B519-B528, U+B52B-B52F, U+B532-B533, U+B535-B537, U+B539-B544, + U+B546-B54B, U+B54D-B54F, U+B551-B59F, U+B5A1-B5A3, U+B5A5-B5A7, U+B5A9-B5B3, U+B5B5-B5BA, + U+B5BD-B5BF, U+B5C1-B5C3, U+B5C5-B5CB, U+B5CD-B5CF, U+B5D1-B60F, U+B612-B69B, U+B69E-B6AA, + U+B6AC-B6B0, U+B6B2-B6EF, U+B6F1-B6F3, U+B6F5-B6F7, U+B6F9-B6FF, U+B701-B727, U+B729-B72B, + U+B72D-B72F, U+B731-B737, U+B73A, U+B73C-B743, U+B745-B747, U+B749-B75F, U+B761-B77B, + U+B77E-B77F, U+B781-B783, U+B785-B78B, U+B78E-B78F, U+B792-B796, U+B79A-B79B, U+B79D-B7A7, + U+B7AA, U+B7AD-B7B4, U+B7B6-B7C8, U+B7CA-B7EB, U+B7EE-B7EF, U+B7F1-B7F3, U+B7F5-B7FB, U+B7FE, + U+B802-B806, U+B80A-B80B, U+B80D-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-B8AF, + U+B8B1-B8CB, U+B8CD-B8E7, U+B8EA-B8EB, U+B8ED-B8EF, U+B8F1-B8F7, U+B8FA-B903, U+B905-B957, + U+B959-B95F, U+B961-B973, U+B975-B977, U+B979-B97B, U+B97D-B983, U+B986, U+B988-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+B9CF, U+B9D2-B9DC, U+B9DF-B9E0, U+B9E2-B9E3, U+B9E6-B9E7, U+B9E9-B9F3, U+B9F6-B9F8, + U+B9FB-BA37, U+BA3A-BA3B, U+BA3D-BA3F, U+BA41, U+BA43-BA47, U+BA49-BA4A, U+BA4C, U+BA4F-BA53, + U+BA55-BA57, U+BA59-BA63, U+BA65-BA6F, U+BA72-BA73, U+BA75-BA77, U+BA79-BA84, U+BA86, + U+BA88-BAA7, U+BAAA, U+BAAD-BAAF, U+BAB1-BAB7, U+BAB9-BABA, U+BABC-BB33, U+BB37, U+BB39-BB3A, + U+BB3D, U+BB3F-BB48, U+BB4A-BBA3, U+BBA5-BBBF, U+BBC1-BBF7, U+BBFA-BBFB, U+BBFD-BBFE, U+BC01, + U+BC03-BC07, U+BC09-BC0A, U+BC0C-BC0E, U+BC10, U+BC12-BC13, U+BC17, U+BC19-BC1A, U+BC1E-BC28, + U+BC2A-BC2F, U+BC32-BC33, U+BC35-BC42, U+BC44-BC83, U+BC85-BC87, U+BC89-BC8B, U+BC8D-BC93, + U+BC96, U+BC98-BC99, 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-BCF3, U+BCF6-BCF7, U+BCF9-BCFB, + U+BCFD-BD03, U+BD06, U+BD08, U+BD0A-BD0F, U+BD11-BD23, U+BD25-BD7F, U+BD82-BD83, U+BD85-BD87, + U+BD8A-BD8F, U+BD91-BD92, U+BD94, U+BD96-BD98, U+BD9A-BDEF, U+BDF1-BE0B, U+BE0D-BE13, + U+BE15-BE43, U+BE45-BE47, U+BE49-BE4B, U+BE4D-BE53, U+BE55-BE56, U+BE58, U+BE5A, U+BE5C-BE5F, + U+BE62-BE67, U+BE69-BE7B, U+BE7D-BE7F, U+BE81-BE83, U+BE85-BE8B, U+BE8D-BE8E, U+BE91-BED3, + U+BED5-BED6, U+BED8-BF07, U+BF09-BF17, U+BF19-BF50, U+BF52-BFAF, U+BFB1-BFCB, U+BFCD-BFCF, + U+BFD1-BFD3, U+BFD5-BFDB, U+BFDD-C057, U+C059-C05B, U+C05D-C08F, U+C091-C0AB, U+C0AE-C0AF, + U+C0B1-C0B3, U+C0B5, U+C0B7-C0BB, U+C0BE-C0C0, U+C0C2-C0C7, U+C0CA-C0D7, U+C0D9-C0DB, + U+C0DE-C0F6, U+C0F8-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+C14D-C153, U+C155-C157, U+C159-C167, U+C169-C16F, + U+C171-C177, U+C179-C18B, U+C18F, U+C191-C193, U+C195-C19E, U+C1A0, U+C1A2-C1C3, U+C1C5-C1DF, + U+C1E1-C217, U+C219-C21B, U+C21D-C21F, U+C221-C227, U+C229-C22A, U+C22C-C26B, U+C26D-C273, + U+C275-C27B, U+C27E-C28F, U+C291-C2A3, U+C2A5-C2A7, U+C2A9-C2AB, U+C2AE-C2B4, U+C2B6, U+C2B8, + U+C2BA-C2DB, U+C2DE-C2DF, U+C2E1-C2E2, U+C2E5-C2EB, U+C2EE-C2F0, U+C2F2-C2F5, U+C2F7, + U+C2F9-C2FB, U+C2FD-C307, U+C309-C30C, U+C30E-C312, U+C314-C367, U+C369-C36B, U+C36D-C377, + U+C379-C37B, U+C37D-C3D7, U+C3D9-C3DB, U+C3DD-C3DF, U+C3E1-C3E7, U+C3E9-C3F3, U+C3F5-C40F, + U+C411-C4EF, U+C4F1-C4F3, U+C4F5-C4F7, U+C4F9-C4FF, U+C502-C50B, U+C50D-C527, U+C52A-C52B, + U+C52D-C543, U+C546-C547, U+C54B, U+C54D, U+C54F-C553, U+C556, U+C55A-C55D, U+C55F, U+C562-C563, + U+C565-C567, U+C569-C56F, U+C572-C573, U+C576-C57B, U+C57E-C586, U+C588-C590, U+C592-C594, + U+C596-C5B3, U+C5B6-C5B7, U+C5BA, U+C5BE-C5C3, U+C5CA-C5CD, U+C5CF, U+C5D2-C5D3, U+C5D5-C5D7, + U+C5D9-C5E2, U+C5E4-C5EB, U+C5EF, U+C5F1-C5F3, U+C5F5, U+C5F7-C5FB, U+C5FE, U+C602-C604, U+C607, + U+C609-C61A, U+C61C-C623, U+C625-C627, U+C629-C62B, U+C62D, U+C62F-C633, U+C636-C638, + U+C63A-C63F, U+C641-C643, U+C645-C650, U+C652-C653, U+C656-C65B, U+C65D-C677, U+C679-C67B, + U+C67D-C693, U+C695-C6A8, U+C6AA-C6AF, U+C6B1-C6B3, U+C6B5-C6B7, U+C6B9, U+C6BB-C6BF, U+C6C2, + U+C6C4-C6CB, U+C6CD-C6CF, U+C6D1-C6D3, U+C6D5-C6DF, U+C6E1-C6F8, U+C6FA-C703, U+C705-C707, + U+C709-C714, U+C716, U+C718, U+C71A-C71F, U+C722-C723, U+C725-C727, U+C729-C73B, U+C73D-C73F, + U+C741-C743, U+C745-C74B, U+C74E-C750, U+C752-C757, U+C759-C773, U+C776-C777, U+C779-C77B, + U+C77E-C782, U+C786, U+C78B-C78D, U+C78F, U+C792-C793, U+C795, U+C797, U+C799-C79F, U+C7A2, + U+C7A4, U+C7A7-C7AB, U+C7AE-C7AF, U+C7B1-C7B3, U+C7B5-C7BB, U+C7BE-C7BF, U+C7C1-C7C7, + U+C7C9-C7FF, U+C802-C803, U+C805-C807, U+C809-C80F, U+C812-C814, U+C817-C81B, U+C81E-C81F, + U+C821-C82E, U+C830-C837, U+C839-C84B, U+C84D-C86F, U+C872-C873, U+C875-C877, U+C879-C87F, + U+C882-C884, U+C886, U+C888-C88A, U+C88D-C8FB, U+C8FE-C8FF, U+C901-C903, U+C905, U+C907-C90B, + U+C90E-C910, U+C912-C917, U+C919-C92B, U+C92D-C94F, U+C951-C953, U+C955-C95F, U+C961-C987, + U+C98A-C997, U+C999-C99C, U+C99E-C9BF, U+C9C2-C9C3, U+C9C5-C9C7, U+C9C9-C9CF, U+C9D2, + U+C9D4-C9D8, U+C9DB, U+C9DE-C9DF, U+C9E1-C9E3, U+C9E5-C9E6, U+C9E8-C9EB, U+C9ED-C9F7, + U+C9F9-CA4C, U+CA4E-CA60, U+CA62-CABB, U+CABE-CB47, U+CB4A-CBE3, U+CBE5-CC0B, U+CC0E-CC27, + U+CC2A-CC2B, U+CC2D, U+CC2F, U+CC31-CC37, U+CC39-CC3C, U+CC3F-CC43, U+CC46-CC47, U+CC49-CC4B, + U+CC4D-CC53, U+CC55-CC56, U+CC58, U+CC5A-CC97, U+CC9A-CC9B, U+CC9D-CC9F, U+CCA1-CCA7, U+CCAA, + U+CCAC, U+CCAE-CCB3, U+CCB5-CCCF, U+CCD1-CCE3, U+CCE5-CD07, U+CD0A-CD17, U+CD19-CD1C, + U+CD1E-CD5B, U+CD5D-CD93, U+CD96-CD97, U+CD99-CD9B, U+CD9D-CDA3, U+CDA6-CDA8, U+CDAA-CDAF, + U+CDB1-CDC3, U+CDC5-CDE7, U+CDE9-CE1F, U+CE22-CE34, U+CE36-CE57, U+CE5A-CE5B, U+CE5D-CE5F, + U+CE61-CE67, U+CE6A-CE6C, U+CE6E-CE73, U+CE75-CE77, U+CE79-CE8F, U+CE91-CE93, U+CE95-CE97, + U+CE99-CEA0, U+CEA2-CEE3, U+CEE6-CEE7, U+CEE9-CEEB, U+CEED-CEF3, U+CEF5-CEF6, U+CEFA-CEFF, + U+CF01-CF07, U+CF09-CF12, U+CF14-CF1B, U+CF1D-CF1F, U+CF21-CF23, U+CF25-CF2B, U+CF2D-CF2F, + U+CF31-CF53, U+CF56-CF57, U+CF59-CF5B, U+CF5D-CF63, U+CF65-CFDF, U+CFE1-CFE7, U+CFE9-CFFB, + U+CFFD-CFFF, U+D001-D033, U+D035-D06B, U+D06D-D06F, U+D071-D073, U+D075-D07B, U+D07D-D0A3, + U+D0A5-D0A7, U+D0A9-D0AB, U+D0AD-D0B3, U+D0B5-D0B6, U+D0B8, U+D0BA-D0BF, U+D0C2-D0C3, + U+D0C5-D0C7, U+D0C9-D0CF, U+D0D2, U+D0D4, U+D0D6-D0DB, U+D0DE-D0EC, U+D0EE-D12F, U+D132-D133, + U+D135-D13F, U+D141-D14B, U+D14E-D14F, U+D151-D153, U+D155-D15B, U+D15E-D19F, U+D1A2-D1A3, + U+D1A5-D1A7, U+D1A9-D1B0, U+D1B2-D1B4, U+D1B6-D1F3, U+D1F5-D22B, U+D22E-D233, U+D235-D240, + U+D242-D27F, U+D281-D283, U+D285-D28F, U+D291-D294, U+D296-D29B, U+D29D-D2B7, U+D2BA-D2BB, + U+D2BD-D2BF, U+D2C1-D2C7, U+D2C9-D2EF, U+D2F2-D2F3, U+D2F5-D2F7, U+D2F9-D2FF, U+D302-D304, + U+D306-D30B, U+D30D, U+D30F, U+D311-D313, U+D315-D31C, U+D31E-D327, U+D32A-D32B, U+D32D-D33C, + U+D33E-D37B, U+D37D-D397, U+D39A-D39B, U+D39D-D3B3, U+D3B5-D3B7, U+D3B9-D3BB, U+D3BD-D3C3, + U+D3C6-D3C7, U+D3CA-D3CF, U+D3D1-D3EB, U+D3EE-D3EF, U+D3F1-D3F3, U+D3F5-D3FB, U+D3FD-D45B, + U+D45D-D477, U+D479-D47B, U+D47D-D47F, U+D481, U+D483-D487, U+D489-D48A, U+D48C, U+D48E-D503, + U+D505-D507, U+D509-D50B, U+D50D-D53B, U+D53E-D53F, U+D541-D543, U+D545-D54E, U+D550, + U+D552-D557, U+D55A-D55B, U+D55D-D55F, U+D561-D567, U+D56A-D56C, U+D56E-D573, U+D576-D577, + U+D579-D587, U+D58A-D5A4, U+D5A6-D5C7, U+D5C9-D5CB, U+D5CD-D5CF, U+D5D1-D5D7, U+D5D9-D5DA, + U+D5DC-D5E3, U+D5E5-D5EB, U+D5ED-D5F6, U+D5F8-D5FF, U+D601-D603, U+D605-D610, U+D612-D613, + U+D616-D637, U+D63A-D63B, U+D63D-D63F, U+D641-D647, U+D64A-D64C, U+D64E-D653, U+D656-D657, + U+D659-D65B, U+D65D-D668, U+D66A-D68B, U+D68E-D69E, U+D6A0, U+D6A2-D6A7, U+D6A9-D6C3, + U+D6C6-D6C7, U+D6C9-D6D0, U+D6D2-D6E7, U+D6E9-D717, U+D719-D71B, U+D71D-D71F, U+D721-D733, + U+D735-D743, U+D745-D748, U+D74A-D74F, U+D752-D753, U+D755-D757, U+D75A-D75F, U+D762-D764, + U+D766-D768, U+D76A-D76F, U+D771-D787, U+D789-D78B, U+D78D-D78F, U+D791-D797, U+D79A-D7A2, + U+D7A4-FA53; +} +@font-face { + font-family: "Noto Sans KR"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("./noto-sans-kr-38.woff2") format("woff2"); + unicode-range: + U+FA54-FE0E, U+FE10-FF07, U+FF0A, U+FF0C, U+FF0E-FF19, U+FF1B-FF5D, U+FF5F-1F16F, U+1F171-1F39A, + U+1F39C-1F3A7, U+1F3A9-1F3D6, U+1F3D8-1F3DD, U+1F3DF, U+1F3E1-1F462, U+1F464-1F4BD, + U+1F4BF-1F4C0, U+1F4C3, U+1F4C6-1F4CA, U+1F4CC, U+1F4CE, U+1F4D2-1F4E4, U+1F4E6-1F50C, + U+1F50E-1F511, U+1F514-1F58B, U+1F58D-1F5A8, U+1F5AA-1F5BB, U+1F5BD-1F5C3, U+1F5C5-1F5D0, + U+1F5D2-1F5F9, U+1F5FB-1F6A6, U+1F6A8-1F6E2, U+1F6E4-1F9C9, U+1F9CB-1F9E8, U+1F9EA-1F9EC, + U+1F9EE-1F9F0, U+1F9F2-1FAA7, U+1FAA9-30EDE; +} diff --git a/ui_template/ui_template_theme.css b/ui_template/ui_template_theme.css index be9b5becf..51feea2a2 100644 --- a/ui_template/ui_template_theme.css +++ b/ui_template/ui_template_theme.css @@ -1,83 +1,74 @@ /* ============================================================================= * ui_template_theme.css - * 글로벌 디자인 테마 및 CSS 변수 (라이트/다크) + * 글로벌 디자인 테마 및 CSS 변수 (라이트/다크) — 프로그램 전체 한 벌(대시보드 값) * - * 출처: .agent/design.md — "Wiza" 스타일 레퍼런스 * 원칙: * - 모든 색상/간격/폰트는 이 파일의 CSS 변수(var(--...))로만 참조. * - 하드코딩된 Hex/px 값을 컴포넌트에 직접 입력 금지 (frontend.md §1). - * - 8px radius가 시그니처. pill/tag만 --radius-pills 사용. + * - 값은 이 파일 두 블록(밝음 · 어두움)에만 — 대시보드 `--b01-*` 는 여기 값의 별칭. * ========================================================================== */ +/* 글꼴 파일(Noto Sans KR · SIL OFL 1.1) — 모든 PC 가 같은 글꼴 · CAD 앱도 이 파일을 읽음 */ +@import url("./fonts/noto_sans_kr.css"); + :root { /* 브라우저 기본 부품(체크 · 색 고르개 · 펼침 목록 · 스크롤 막대)이 테마를 따름 */ color-scheme: light; /* --------------------------------------------------------------------------- - * 1. 색상 토큰 (Colors) — 바이올렛 단색 팔레트 + * 1. 색상 토큰 (Colors) — 중립 회색 + 초록 강조 * ------------------------------------------------------------------------ */ - --color-deep-iris: #26114a; /* 헤드라인, filled 버튼 배경 (24px 이하) */ - --color-plum-velvet: #312749; /* 네비 텍스트, 보조 제목, 카드 타이틀 */ - --color-royal-amethyst: #3e0079; /* 링크, 포커스 링, 아이콘 하이라이트 */ - --color-mist-violet: #edecff; /* 소프트 하이라이트 배경, 태그 배경 */ - --color-lavender-wash: #b99aff; /* 그라디언트 스톱, 히어로 분위기 */ - --color-twilight-beam: #cf8aff; /* 멀티스톱 장식 그라디언트 시작색 */ - /* 중립 (Neutrals) */ - --color-canvas: #ffffff; /* 페이지 배경, 카드 표면, 입력 필드 */ - --color-paper: #f6f7fa; /* 미묘한 표면 리프트, 테이블 교차행 */ - --color-mist: #e6e2e3; /* 헤어라인 보더, 구분선 */ + --color-canvas: #ffffff; /* 카드 표면, 입력 필드 */ + --color-paper: #f6f7f9; /* 페이지 바탕, 테이블 교차행 */ + --color-mist: #e6e8ec; /* 헤어라인 보더, 구분선 */ --color-smoke: #c1c7cf; /* 비활성 상태, 스켈레톤 플레이스홀더 */ - --color-ash: #9491a1; /* 뮤트 헬퍼 텍스트, placeholder */ - --color-slate: #615e6e; /* 보조 본문 텍스트, 설명 */ - --color-charcoal: #333333; /* 본문 텍스트, 링크, 아이콘 스트로크 */ + --color-ash: #9ca3af; /* 옅은 회색 글(장식) — 읽을 글은 --color-text-muted */ + --color-slate: #6b7280; /* 보조 본문 텍스트, 설명 */ + --color-charcoal: #1f2328; /* 본문 텍스트, 아이콘 스트로크 */ --color-carbon: #222222; /* 다크 UI 요소, 니어블랙 액센트 */ --color-ink: #000000; /* 최대 대비 텍스트/보더 */ - /* 상태 색상 (Status) — 바이올렛 계열 유지, 필수 기능색만 최소 추가 */ - --color-success: #1f8a4c; /* 성공/승인 */ - --color-warning: #b8860b; /* 경고 (design.md 별색 #f5b800 계열) */ - --color-danger: #c0392b; /* 에러/삭제 */ - /* 패널 접기/펼치기 손잡이 테두리 — 배경에 묻히지 않는 강조색(라이트: 파랑, 다크: 노랑) */ - --panel-handle-border: #2563eb; - --color-info: var(--color-royal-amethyst); + /* 강조 (Accent) */ + --color-accent: #1f7a4d; /* 링크 · 주 액션 · 고른 것 */ + --color-accent-soft: #eaf5ee; /* 고른 줄 · 태그 바탕 */ + --color-hover: #f3f4f6; /* 줄 · 메뉴 hover 바탕 */ - /* 그라디언트 (Gradient System) — 항상 흰 표면 뒤에만 배치, 텍스트 직상단 금지 */ - --gradient-lavender-wash: linear-gradient( - 90deg, - rgb(185, 154, 255), - rgb(125, 67, 255) 10%, - rgba(125, 67, 255, 0) - ); - --gradient-twilight-beam: linear-gradient( - to right, - rgb(207, 138, 255), - rgb(255, 102, 193), - rgb(255, 173, 116), - rgb(170, 129, 255) - ); - --gradient-section-tint: linear-gradient( - to bottom, - var(--color-canvas), - var(--color-mist-violet) - ); + /* 상태 색상 (Status) — 성공 램프는 ✓ 를 같이 띄움(강조색과 같은 초록 계열) */ + --color-success: #1f8a4c; /* 성공/승인 */ + --color-warning: #b45309; /* 경고 */ + --color-danger: #c0392b; /* 에러/삭제 글자 · 선 */ + --color-danger-fill: #e5484d; /* 위험 채운 바탕(알림 점 · 배지) */ + --color-info: #2e6fb5; + /* 패널 접기/펼치기 손잡이 테두리 — 강조색 */ + --panel-handle-border: var(--color-accent); + --color-scrim: rgba(16, 24, 40, 0.4); /* 모달 · 서랍 뒤 가림막 */ + + /* 옛 이름 — 새 코드 금지 · 새 값의 별칭 */ + --color-deep-iris: var(--color-text); + --color-plum-velvet: var(--color-text); + --color-royal-amethyst: var(--color-accent); + --color-mist-violet: var(--color-accent-soft); + --color-lavender-wash: var(--color-accent); /* --------------------------------------------------------------------------- * 2. 의미 기반 별칭 (Semantic Aliases) * 컴포넌트는 가급적 아래 별칭을 사용해 라이트/다크 전환에 대응. * ------------------------------------------------------------------------ */ - --color-bg: var(--color-canvas); /* 페이지 배경 */ - --color-surface: var(--color-paper); /* 카드/패널 표면 */ - --color-surface-raised: var(--color-canvas); /* 떠 있는 표면 */ + --color-bg: var(--color-paper); /* 페이지 바탕 */ + --color-surface: var(--color-paper); /* 판 바탕 · 표 머리 · 얼룩줄 */ + --color-surface-raised: var(--color-canvas); /* 카드 · 떠 있는 표면 */ + --color-surface-sunken: var(--color-hover); --color-border: var(--color-mist); /* 기본 보더 */ - --color-text: var(--color-deep-iris); /* 기본 본문 (제목 강조) */ + --color-border-strong: #cfd4db; /* 좌측 카드 외곽 · 표 머리 밑줄 */ + --color-text: var(--color-charcoal); /* 기본 글 · 제목 */ --color-text-body: var(--color-charcoal); /* 일반 본문 */ --color-text-secondary: var(--color-slate); /* 보조 텍스트 */ - --color-text-muted: var(--color-ash); /* 뮤트/placeholder */ - --color-primary: var(--color-deep-iris); /* 주 액션 배경 */ - --color-primary-text: var(--color-canvas); /* 주 액션 위 텍스트 */ - --color-accent: var(--color-royal-amethyst); /* 링크/액센트 */ - --color-focus-ring: var(--color-royal-amethyst); + --color-text-muted: var(--color-slate); /* 뮤트/placeholder */ + --color-primary: var(--color-accent); /* 주 액션 배경 */ + --color-primary-text: #ffffff; /* 주 액션 위 텍스트 */ + --color-primary-hover: color-mix(in srgb, var(--color-primary) 88%, #000); + --color-focus-ring: var(--color-accent); /* 차트 시리즈 색상 (CPU/메모리/디스크 등 구분용) */ --color-chart-0: #5b8def; /* 파랑 — CPU */ @@ -88,12 +79,10 @@ /* --------------------------------------------------------------------------- * 3. 타이포그래피 (Typography) * ------------------------------------------------------------------------ */ - /* 폰트 패밀리 — 한글은 Noto Sans KR 우선 (resources/fonts) */ - --font-display: - "Britti Sans", "Plus Jakarta Sans", "Noto Sans KR", ui-sans-serif, system-ui, -apple-system, - "Segoe UI", Roboto, sans-serif; - --font-body: - "Inter", "Noto Sans KR", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; + /* 폰트 패밀리 — 한 토큰 · Noto Sans KR 는 실은 파일(fonts/) · 뒤는 파일을 못 받을 때만 */ + --font-ui: "Noto Sans KR", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif; + --font-body: var(--font-ui); + --font-display: var(--font-ui); --font-mono: "JetBrains Mono", "Consolas", ui-monospace, monospace; /* 스케일 (px 고정 — design.md 명세) */ @@ -152,7 +141,7 @@ --radius-3xl: 24px; /* large 컨테이너 */ --radius-pills: 1440px; /* pill/tag/캡슐 네비 전용 */ - --radius-cards: var(--radius-lg); + --radius-cards: 10px; --radius-buttons: var(--radius-lg); --radius-inputs: var(--radius-lg); --radius-icons: var(--radius-lg); @@ -174,19 +163,10 @@ --pill-font-size-lg: var(--text-body-sm); /* --------------------------------------------------------------------------- - * 6. 그림자 (Shadows) — 블루틴트, 서브틀 (최대 32px blur / 6% opacity) + * 6. 그림자 (Shadows) — 떠 있는 것(메뉴 · 모달 · 툴팁)만 · 카드는 선만 * ------------------------------------------------------------------------ */ - --shadow-sm: - rgba(18, 55, 105, 0.08) 0px 2px 4px 0px, rgba(18, 55, 105, 0.04) 0px 1px 1px 0px, - rgba(18, 55, 105, 0.08) 0px 0px 0px 1px; - --shadow-lg: - rgba(14, 59, 101, 0.06) 0px 32px 24px -12px, rgba(14, 59, 101, 0.01) 0px 11px 4px 0px, - rgba(14, 59, 101, 0.02) 0px 6px 4px 0px, rgba(14, 59, 101, 0.03) 0px 3px 3px 0px, - rgba(14, 59, 101, 0.04) 0px 1px 1px 0px; - --shadow-feature: - rgba(114, 49, 255, 0.32) 0px -6px 20px 0px inset, rgba(47, 1, 151, 0.12) 0px 11px 12px 0px, - rgba(47, 1, 151, 0.12) 0px 3px 3px 0px, rgba(47, 1, 151, 0.12) 0px 1px 1px 0px, - rgba(47, 1, 151, 0.08) 0px 0px 0px 1px; + --shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06); + --shadow-lg: 0 8px 24px rgba(16, 24, 40, 0.12); /* --------------------------------------------------------------------------- * 7. 레이아웃 (Layout) @@ -296,44 +276,34 @@ } /* ============================================================================= - * 다크 모드 (Dark) — 라이트 우선 브랜드이나 CAD 뷰어 야간 작업 대응 - * design.md는 light 브랜드이므로, 다크는 중립 표면을 어둡게 반전하고 - * 바이올렛 액센트는 명도를 올려 대비 확보. + * 다크 모드 (Dark) — 중립 회색 바탕 · 강조는 명도를 올려 대비 확보 + * 의미 별칭(bg · surface · text …)은 :root 식 그대로라 여기서는 값만 바꿈. * ========================================================================== */ :root[data-theme="dark"] { color-scheme: dark; - --color-canvas: #16121f; - --color-paper: #1e1930; - --color-mist: #322a45; - --color-smoke: #4a4160; - --color-ash: #8b86a0; - --color-slate: #b3aec6; - --color-charcoal: #e4e0f0; - --color-carbon: #f0edf8; + --color-canvas: #1b1e23; + --color-paper: #121417; + --color-mist: #2c3038; + --color-smoke: #4a4f58; + --color-ash: #7d848e; + --color-slate: #9aa1ab; + --color-charcoal: #e6e8eb; + --color-carbon: #f0f1f3; --color-ink: #ffffff; - --color-deep-iris: #d8ccff; - --color-plum-velvet: #c4b8e6; - --color-royal-amethyst: #b99aff; - --color-mist-violet: #2a2140; - - --color-bg: var(--color-canvas); - --color-surface: var(--color-paper); - --color-surface-raised: #251f38; - --color-border: var(--color-mist); - --color-text: var(--color-deep-iris); - --color-text-body: var(--color-charcoal); - --color-text-secondary: var(--color-slate); - --color-text-muted: var(--color-ash); - --color-primary: var(--color-royal-amethyst); - --color-primary-text: #16121f; - --color-accent: var(--color-lavender-wash); - --color-focus-ring: var(--color-lavender-wash); + --color-accent: #3fae75; + --color-accent-soft: #173326; + --color-hover: #242830; + --color-border-strong: #3b414b; + --color-primary-text: #0e1512; + --color-primary-hover: color-mix(in srgb, var(--color-primary) 85%, #fff); --color-success: #3fbb6f; - --color-warning: #e0b64a; + --color-warning: #f5a524; --color-danger: #e8695a; - --panel-handle-border: #e0b64a; + --color-danger-fill: #f06b6f; + --color-info: #6aa6e0; + --color-scrim: rgba(0, 0, 0, 0.55); --map-route-locked: #facc15; --map-route-node: #4ade80; @@ -341,43 +311,38 @@ --shadow-lg: rgba(0, 0, 0, 0.5) 0px 32px 24px -12px, rgba(0, 0, 0, 0.3) 0px 3px 3px 0px; } -/* 시스템 설정 기반 자동 다크 (사용자가 명시적으로 data-theme를 안 준 경우) */ +/* 시스템 설정 기반 자동 다크 (사용자가 명시적으로 data-theme를 안 준 경우) — 위와 같은 값 */ @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: dark; - --color-canvas: #16121f; - --color-paper: #1e1930; - --color-mist: #322a45; - --color-smoke: #4a4160; - --color-ash: #8b86a0; - --color-slate: #b3aec6; - --color-charcoal: #e4e0f0; - --color-carbon: #f0edf8; + --color-canvas: #1b1e23; + --color-paper: #121417; + --color-mist: #2c3038; + --color-smoke: #4a4f58; + --color-ash: #7d848e; + --color-slate: #9aa1ab; + --color-charcoal: #e6e8eb; + --color-carbon: #f0f1f3; --color-ink: #ffffff; - --color-deep-iris: #d8ccff; - --color-plum-velvet: #c4b8e6; - --color-royal-amethyst: #b99aff; - --color-mist-violet: #2a2140; - - --color-bg: var(--color-canvas); - --color-surface: var(--color-paper); - --color-surface-raised: #251f38; - --color-border: var(--color-mist); - --color-text: var(--color-deep-iris); - --color-text-body: var(--color-charcoal); - --color-text-secondary: var(--color-slate); - --color-text-muted: var(--color-ash); - --color-primary: var(--color-royal-amethyst); - --color-primary-text: #16121f; - --color-accent: var(--color-lavender-wash); - --color-focus-ring: var(--color-lavender-wash); + --color-accent: #3fae75; + --color-accent-soft: #173326; + --color-hover: #242830; + --color-border-strong: #3b414b; + --color-primary-text: #0e1512; + --color-primary-hover: color-mix(in srgb, var(--color-primary) 85%, #fff); --color-success: #3fbb6f; + --color-warning: #f5a524; --color-danger: #e8695a; - --panel-handle-border: #e0b64a; + --color-danger-fill: #f06b6f; + --color-info: #6aa6e0; + --color-scrim: rgba(0, 0, 0, 0.55); --map-route-locked: #facc15; --map-route-node: #4ade80; + + --shadow-sm: rgba(0, 0, 0, 0.4) 0px 2px 4px 0px, rgba(0, 0, 0, 0.2) 0px 0px 0px 1px; + --shadow-lg: rgba(0, 0, 0, 0.5) 0px 32px 24px -12px, rgba(0, 0, 0, 0.3) 0px 3px 3px 0px; } }