ksk-design-system 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/AGENTS.md +190 -0
  2. package/CLAUDE.md +189 -0
  3. package/DESIGN.md +190 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATION.md +107 -0
  6. package/PUBLISHING.md +160 -0
  7. package/README.md +59 -0
  8. package/RELEASE.md +82 -0
  9. package/bin/init.js +112 -0
  10. package/contracts/components.json +1443 -0
  11. package/contracts/rules.json +447 -0
  12. package/dist/class-names.js +4 -0
  13. package/dist/index.js +13157 -0
  14. package/dist/native/ui.js +4928 -0
  15. package/dist/native.js +1559 -0
  16. package/dist/server-variants-Dr_V3bDI.js +55 -0
  17. package/dist/types/class-names.d.ts +27 -0
  18. package/dist/types/components/patterns/admin/bulk-actions.d.ts +17 -0
  19. package/dist/types/components/patterns/admin/chart-controls.d.ts +16 -0
  20. package/dist/types/components/patterns/admin/data-table.d.ts +165 -0
  21. package/dist/types/components/patterns/admin/image-uploader.d.ts +14 -0
  22. package/dist/types/components/patterns/admin/kebab-menu.d.ts +17 -0
  23. package/dist/types/components/patterns/admin/notification-list.d.ts +16 -0
  24. package/dist/types/components/patterns/admin/search-panel.d.ts +9 -0
  25. package/dist/types/components/patterns/admin/status-tabs.d.ts +13 -0
  26. package/dist/types/components/patterns/app-header.d.ts +76 -0
  27. package/dist/types/components/patterns/banner-carousel.d.ts +25 -0
  28. package/dist/types/components/patterns/banner.d.ts +13 -0
  29. package/dist/types/components/patterns/bottom-sheet-form.d.ts +17 -0
  30. package/dist/types/components/patterns/category-nav.d.ts +43 -0
  31. package/dist/types/components/patterns/category-scroll.d.ts +53 -0
  32. package/dist/types/components/patterns/chip-selector.d.ts +20 -0
  33. package/dist/types/components/patterns/chip.d.ts +42 -0
  34. package/dist/types/components/patterns/coach-mark-overlay.d.ts +66 -0
  35. package/dist/types/components/patterns/commerce/bottom-tab-bar.d.ts +27 -0
  36. package/dist/types/components/patterns/commerce/filter-bar.d.ts +39 -0
  37. package/dist/types/components/patterns/commerce/image-carousel.d.ts +14 -0
  38. package/dist/types/components/patterns/commerce/order-summary.d.ts +26 -0
  39. package/dist/types/components/patterns/commerce/price-display.d.ts +20 -0
  40. package/dist/types/components/patterns/commerce/product-card.d.ts +50 -0
  41. package/dist/types/components/patterns/commerce/product-carousel.d.ts +15 -0
  42. package/dist/types/components/patterns/commerce/quantity-selector.d.ts +21 -0
  43. package/dist/types/components/patterns/commerce/rating-display.d.ts +15 -0
  44. package/dist/types/components/patterns/commerce/review-card.d.ts +22 -0
  45. package/dist/types/components/patterns/commerce/review-summary.d.ts +12 -0
  46. package/dist/types/components/patterns/confirm-dialog.d.ts +32 -0
  47. package/dist/types/components/patterns/cookie-consent.d.ts +62 -0
  48. package/dist/types/components/patterns/empty-state.d.ts +15 -0
  49. package/dist/types/components/patterns/error-state.d.ts +10 -0
  50. package/dist/types/components/patterns/file-upload.d.ts +31 -0
  51. package/dist/types/components/patterns/filter-chip.d.ts +26 -0
  52. package/dist/types/components/patterns/footer.d.ts +24 -0
  53. package/dist/types/components/patterns/form-field.d.ts +30 -0
  54. package/dist/types/components/patterns/form.d.ts +13 -0
  55. package/dist/types/components/patterns/list-item.d.ts +23 -0
  56. package/dist/types/components/patterns/list-skeletons.d.ts +43 -0
  57. package/dist/types/components/patterns/menu-drawer.d.ts +27 -0
  58. package/dist/types/components/patterns/notification-badge.d.ts +15 -0
  59. package/dist/types/components/patterns/progress-steps.d.ts +7 -0
  60. package/dist/types/components/patterns/review-overlay.d.ts +25 -0
  61. package/dist/types/components/patterns/search-bar.d.ts +6 -0
  62. package/dist/types/components/patterns/section-header.d.ts +8 -0
  63. package/dist/types/components/patterns/share-buttons.d.ts +13 -0
  64. package/dist/types/components/patterns/shells/admin-shell.d.ts +8 -0
  65. package/dist/types/components/patterns/shells/app-shell.d.ts +7 -0
  66. package/dist/types/components/patterns/shells/marketing-shell.d.ts +7 -0
  67. package/dist/types/components/patterns/simple-pagination.d.ts +69 -0
  68. package/dist/types/components/patterns/stat-card.d.ts +43 -0
  69. package/dist/types/components/patterns/sticky-action-bar.d.ts +27 -0
  70. package/dist/types/components/patterns/swipe-row.d.ts +17 -0
  71. package/dist/types/components/patterns/tag-input.d.ts +20 -0
  72. package/dist/types/components/patterns/tag.d.ts +7 -0
  73. package/dist/types/components/ui/accordion.d.ts +7 -0
  74. package/dist/types/components/ui/alert-dialog.d.ts +47 -0
  75. package/dist/types/components/ui/alert.d.ts +45 -0
  76. package/dist/types/components/ui/auto-grow-textarea.d.ts +40 -0
  77. package/dist/types/components/ui/avatar.d.ts +6 -0
  78. package/dist/types/components/ui/badge.d.ts +18 -0
  79. package/dist/types/components/ui/breadcrumb.d.ts +16 -0
  80. package/dist/types/components/ui/button.d.ts +29 -0
  81. package/dist/types/components/ui/calendar.d.ts +5 -0
  82. package/dist/types/components/ui/card.d.ts +28 -0
  83. package/dist/types/components/ui/checkbox-card.d.ts +29 -0
  84. package/dist/types/components/ui/checkbox-field.d.ts +24 -0
  85. package/dist/types/components/ui/checkbox-group.d.ts +33 -0
  86. package/dist/types/components/ui/checkbox.d.ts +44 -0
  87. package/dist/types/components/ui/coach-mark.d.ts +27 -0
  88. package/dist/types/components/ui/collapsible.d.ts +24 -0
  89. package/dist/types/components/ui/combobox.d.ts +19 -0
  90. package/dist/types/components/ui/countdown-timer.d.ts +39 -0
  91. package/dist/types/components/ui/date-picker.d.ts +53 -0
  92. package/dist/types/components/ui/dialog.d.ts +54 -0
  93. package/dist/types/components/ui/dropdown-filter.d.ts +35 -0
  94. package/dist/types/components/ui/dropdown-menu.d.ts +42 -0
  95. package/dist/types/components/ui/error-boundary.d.ts +66 -0
  96. package/dist/types/components/ui/form.d.ts +61 -0
  97. package/dist/types/components/ui/hover-card.d.ts +24 -0
  98. package/dist/types/components/ui/image-gallery.d.ts +28 -0
  99. package/dist/types/components/ui/input.d.ts +17 -0
  100. package/dist/types/components/ui/label.d.ts +4 -0
  101. package/dist/types/components/ui/multi-select.d.ts +21 -0
  102. package/dist/types/components/ui/navigation-bar.d.ts +58 -0
  103. package/dist/types/components/ui/number-input.d.ts +20 -0
  104. package/dist/types/components/ui/pagination.d.ts +26 -0
  105. package/dist/types/components/ui/pill-toggle.d.ts +16 -0
  106. package/dist/types/components/ui/popover.d.ts +7 -0
  107. package/dist/types/components/ui/progress-ring.d.ts +31 -0
  108. package/dist/types/components/ui/progress.d.ts +34 -0
  109. package/dist/types/components/ui/radio-group.d.ts +22 -0
  110. package/dist/types/components/ui/responsive-dialog.d.ts +31 -0
  111. package/dist/types/components/ui/scroll-area.d.ts +5 -0
  112. package/dist/types/components/ui/select.d.ts +22 -0
  113. package/dist/types/components/ui/separator.d.ts +4 -0
  114. package/dist/types/components/ui/sheet.d.ts +139 -0
  115. package/dist/types/components/ui/skeleton.d.ts +31 -0
  116. package/dist/types/components/ui/slider.d.ts +14 -0
  117. package/dist/types/components/ui/social-icon-data.d.ts +10 -0
  118. package/dist/types/components/ui/social-icon.d.ts +38 -0
  119. package/dist/types/components/ui/social-login-button.d.ts +10 -0
  120. package/dist/types/components/ui/spinner.d.ts +22 -0
  121. package/dist/types/components/ui/star-rating.d.ts +12 -0
  122. package/dist/types/components/ui/sub-nav.d.ts +17 -0
  123. package/dist/types/components/ui/switch.d.ts +4 -0
  124. package/dist/types/components/ui/sync-status-badge.d.ts +17 -0
  125. package/dist/types/components/ui/tabs.d.ts +15 -0
  126. package/dist/types/components/ui/textarea.d.ts +8 -0
  127. package/dist/types/components/ui/time-picker.d.ts +14 -0
  128. package/dist/types/components/ui/toast.d.ts +49 -0
  129. package/dist/types/components/ui/tooltip.d.ts +7 -0
  130. package/dist/types/index.d.ts +174 -0
  131. package/dist/types/lib/server-variants/button-variants.d.ts +20 -0
  132. package/dist/types/lib/utils.d.ts +2 -0
  133. package/dist/types/native/components/Accordion.d.ts +12 -0
  134. package/dist/types/native/components/Alert.d.ts +9 -0
  135. package/dist/types/native/components/AlertDialog.d.ts +11 -0
  136. package/dist/types/native/components/AppHeader.d.ts +10 -0
  137. package/dist/types/native/components/AppShell.d.ts +13 -0
  138. package/dist/types/native/components/AutoGrowTextarea.d.ts +8 -0
  139. package/dist/types/native/components/Avatar.d.ts +8 -0
  140. package/dist/types/native/components/Badge.d.ts +8 -0
  141. package/dist/types/native/components/Banner.d.ts +10 -0
  142. package/dist/types/native/components/BannerCarousel.d.ts +8 -0
  143. package/dist/types/native/components/BottomSheetForm.d.ts +10 -0
  144. package/dist/types/native/components/BottomTabBar.d.ts +8 -0
  145. package/dist/types/native/components/Breadcrumb.d.ts +12 -0
  146. package/dist/types/native/components/Button.d.ts +9 -0
  147. package/dist/types/native/components/Calendar.d.ts +8 -0
  148. package/dist/types/native/components/Card.d.ts +11 -0
  149. package/dist/types/native/components/CategoryNav.d.ts +13 -0
  150. package/dist/types/native/components/CategoryScroll.d.ts +12 -0
  151. package/dist/types/native/components/Checkbox.d.ts +7 -0
  152. package/dist/types/native/components/CheckboxCard.d.ts +8 -0
  153. package/dist/types/native/components/CheckboxField.d.ts +8 -0
  154. package/dist/types/native/components/CheckboxGroup.d.ts +12 -0
  155. package/dist/types/native/components/Chip.d.ts +17 -0
  156. package/dist/types/native/components/ChipSelector.d.ts +13 -0
  157. package/dist/types/native/components/CoachMark.d.ts +12 -0
  158. package/dist/types/native/components/CoachMarkOverlay.d.ts +19 -0
  159. package/dist/types/native/components/Collapsible.d.ts +7 -0
  160. package/dist/types/native/components/Combobox.d.ts +14 -0
  161. package/dist/types/native/components/ConfirmDialog.d.ts +7 -0
  162. package/dist/types/native/components/CountdownTimer.d.ts +7 -0
  163. package/dist/types/native/components/DatePicker.d.ts +10 -0
  164. package/dist/types/native/components/Dialog.d.ts +12 -0
  165. package/dist/types/native/components/DropdownFilter.d.ts +12 -0
  166. package/dist/types/native/components/DropdownMenu.d.ts +19 -0
  167. package/dist/types/native/components/EmptyState.d.ts +8 -0
  168. package/dist/types/native/components/ErrorState.d.ts +8 -0
  169. package/dist/types/native/components/FileUpload.d.ts +12 -0
  170. package/dist/types/native/components/FilterBar.d.ts +13 -0
  171. package/dist/types/native/components/FilterChip.d.ts +7 -0
  172. package/dist/types/native/components/Footer.d.ts +9 -0
  173. package/dist/types/native/components/FormField.d.ts +9 -0
  174. package/dist/types/native/components/GlassView.d.ts +25 -0
  175. package/dist/types/native/components/ImageCarousel.d.ts +8 -0
  176. package/dist/types/native/components/ImageGallery.d.ts +7 -0
  177. package/dist/types/native/components/Input.d.ts +9 -0
  178. package/dist/types/native/components/Label.d.ts +7 -0
  179. package/dist/types/native/components/ListItem.d.ts +11 -0
  180. package/dist/types/native/components/ListSkeletons.d.ts +6 -0
  181. package/dist/types/native/components/MarketingShell.d.ts +9 -0
  182. package/dist/types/native/components/MenuDrawer.d.ts +21 -0
  183. package/dist/types/native/components/MultiSelect.d.ts +13 -0
  184. package/dist/types/native/components/NavigationBar.d.ts +18 -0
  185. package/dist/types/native/components/NotificationBadge.d.ts +9 -0
  186. package/dist/types/native/components/NumberInput.d.ts +9 -0
  187. package/dist/types/native/components/OrderSummary.d.ts +10 -0
  188. package/dist/types/native/components/Pagination.d.ts +7 -0
  189. package/dist/types/native/components/PillToggle.d.ts +12 -0
  190. package/dist/types/native/components/Popover.d.ts +14 -0
  191. package/dist/types/native/components/PriceDisplay.d.ts +8 -0
  192. package/dist/types/native/components/ProductCard.d.ts +14 -0
  193. package/dist/types/native/components/ProductCarousel.d.ts +11 -0
  194. package/dist/types/native/components/Progress.d.ts +7 -0
  195. package/dist/types/native/components/ProgressRing.d.ts +12 -0
  196. package/dist/types/native/components/ProgressSteps.d.ts +9 -0
  197. package/dist/types/native/components/QuantitySelector.d.ts +6 -0
  198. package/dist/types/native/components/RadioGroup.d.ts +13 -0
  199. package/dist/types/native/components/RatingDisplay.d.ts +7 -0
  200. package/dist/types/native/components/ResponsiveDialog.d.ts +7 -0
  201. package/dist/types/native/components/ReviewCard.d.ts +11 -0
  202. package/dist/types/native/components/ReviewOverlay.d.ts +7 -0
  203. package/dist/types/native/components/ReviewSummary.d.ts +7 -0
  204. package/dist/types/native/components/ScrollArea.d.ts +9 -0
  205. package/dist/types/native/components/SearchBar.d.ts +9 -0
  206. package/dist/types/native/components/SectionHeader.d.ts +10 -0
  207. package/dist/types/native/components/Select.d.ts +14 -0
  208. package/dist/types/native/components/Separator.d.ts +5 -0
  209. package/dist/types/native/components/ShareButtons.d.ts +11 -0
  210. package/dist/types/native/components/Sheet.d.ts +20 -0
  211. package/dist/types/native/components/SimplePagination.d.ts +7 -0
  212. package/dist/types/native/components/Skeleton.d.ts +11 -0
  213. package/dist/types/native/components/Slider.d.ts +9 -0
  214. package/dist/types/native/components/SocialIcon.d.ts +12 -0
  215. package/dist/types/native/components/SocialLoginButton.d.ts +8 -0
  216. package/dist/types/native/components/Spinner.d.ts +6 -0
  217. package/dist/types/native/components/Stack.d.ts +13 -0
  218. package/dist/types/native/components/StarRating.d.ts +9 -0
  219. package/dist/types/native/components/StatCard.d.ts +7 -0
  220. package/dist/types/native/components/StickyActionBar.d.ts +6 -0
  221. package/dist/types/native/components/SubNav.d.ts +12 -0
  222. package/dist/types/native/components/SwipeRow.d.ts +14 -0
  223. package/dist/types/native/components/Switch.d.ts +4 -0
  224. package/dist/types/native/components/SyncStatusBadge.d.ts +6 -0
  225. package/dist/types/native/components/Tabs.d.ts +23 -0
  226. package/dist/types/native/components/Tag.d.ts +10 -0
  227. package/dist/types/native/components/TagInput.d.ts +7 -0
  228. package/dist/types/native/components/Text.d.ts +10 -0
  229. package/dist/types/native/components/Textarea.d.ts +7 -0
  230. package/dist/types/native/components/TimePicker.d.ts +12 -0
  231. package/dist/types/native/components/Toast.d.ts +18 -0
  232. package/dist/types/native/components/index.d.ts +99 -0
  233. package/dist/types/native/components/social-icon-data.d.ts +5 -0
  234. package/dist/types/native/index.d.ts +4 -0
  235. package/dist/types/native/theme/ThemeProvider.d.ts +21 -0
  236. package/dist/types/native/typography.d.ts +8 -0
  237. package/dist/types/tokens/native/index.d.ts +13 -0
  238. package/dist/types/tokens/native/primitives.d.ts +116 -0
  239. package/dist/types/tokens/native/scales.d.ts +270 -0
  240. package/dist/types/tokens/native/themes.d.ts +1147 -0
  241. package/eslint/deprecated.js +104 -0
  242. package/eslint/no-colorless-border.js +217 -0
  243. package/package.json +215 -0
  244. package/scripts/codemod/README.md +51 -0
  245. package/scripts/codemod/template.mjs +164 -0
  246. package/src/components/COMPONENT_LOOKUP.md +190 -0
  247. package/src/preset.css +168 -0
  248. package/src/styles/categorical.css +161 -0
  249. package/src/styles/glass.css +365 -0
  250. package/src/styles/primitive.css +161 -0
  251. package/src/styles/semantic.css +247 -0
  252. package/src/styles/typography.css +140 -0
  253. package/src/themes/README.md +44 -0
  254. package/src/themes/blue.css +21 -0
  255. package/src/themes/default.css +12 -0
  256. package/src/themes/green.css +22 -0
  257. package/src/themes/orange.css +21 -0
  258. package/src/themes/violet.css +22 -0
  259. package/templates/AGENTS.md +77 -0
  260. package/templates/CLAUDE.md +77 -0
  261. package/tokens.json +607 -0
@@ -0,0 +1,161 @@
1
+ /* =============================================================
2
+ KSK Design System — Categorical (Qualitative) Color Tokens
3
+
4
+ 「カテゴリ識別子」専用の質的カラーパレット。
5
+ Brand / Status とは無関係な “何番目のカテゴリか” を色で区別するための
6
+ 16 色スケール。カレンダーの予定ドット、カテゴリ chip、ボード列の背景、
7
+ グラフ系列などで使う(例: belle-todo の結婚式準備カテゴリ)。
8
+
9
+ ─── 設計上の3つの約束 ──────────────────────────────────────
10
+ 1. テーマ非依存:
11
+ Brand-* には一切連動しない固定値。テーマ(default/orange/green/
12
+ violet)を差し替えてもカテゴリの色は変わらない=アプリ横断で
13
+ 「カテゴリ⇄色」の対応が一貫する。External Brand(--Brand-Line 等)
14
+ と同じく semantic 層に固定 hex で置く方針。
15
+ 2. 並び順は「分離度の高い順」:
16
+ --Categorical-1..N は CVD シミュレーション上の色差(CIEDE2000)が
17
+ 大きい順に並べてある。K 色だけ必要なら 1..K を順に使えば、その K 色は
18
+ 可能な範囲で最も見分けやすい組み合わせになる(colorbrewer / d3 と同じ思想)。
19
+ 3. 3 階層(base / Subtle / Bold):
20
+ --Categorical-N … base。ドット・アイコン・小さな塗り(mark)用。
21
+ --Categorical-N-Subtle … 淡いティント。行・列・カードの背景用(≒ 50/100)。
22
+ --Categorical-N-Bold … 濃色。chip ラベルや見出しなど「文字」用。
23
+
24
+ ─── アクセシビリティ(WCAG / CVD) ─────────────────────────
25
+ • 文字には必ず -Bold を使うこと。base(≒500)は白背景で 4.5:1 に届かない
26
+ 色が大半(黄/シアン/ライム等)。-Bold は 16 色すべてが
27
+ - 白背景で ≥4.9:1(AA 通常テキスト)
28
+ - 自分の -Subtle 上で ≥4.5:1(chip: Subtle 背景+Bold 文字)
29
+ を満たす。
30
+ • ドット/アイコン(非テキスト, 1.4.11 = 3:1)は base でよいが、
31
+ warm/cyan 系(orange/amber/yellow/lime/teal/cyan/sky ≒ index 5,7,8,12,13)は
32
+ 白背景で 3:1 未満。これらが “色だけ” で意味を伝える唯一の手段になる場合は
33
+ -Bold をドットに使うか、アイコン/ラベルを併記すること。
34
+ • CVD(色覚多様性): 16 色のうち赤緑系 CVD でも確実に見分けられるのは
35
+ 概ね先頭 8〜9 色まで。末尾の紫系(fuchsia/purple/violet = 14,15,16)は
36
+ protanopia でほぼ同色になる。色だけに依存せずアイコン・ラベル・形状を
37
+ 併用すること(WCAG 1.4.1 Use of Color)。10 色を超えて識別が必須なら
38
+ カテゴリのグルーピングを検討。
39
+
40
+ ─── tint を mix で自動生成したい場合 ───────────────────────
41
+ 本ファイルは AA 検証済みの固定値を採用しているが、base から導出するなら:
42
+ Subtle(light) ≈ color-mix(in srgb, var(--Categorical-N) 15%, white) … 推奨 a = 15%
43
+ Subtle(dark) = color-mix(in srgb, var(--Categorical-N) 18%, transparent) … 暗面に重ねる
44
+ ※ 15% mix だと Bold 文字とのコントラストが一部 4.48:1 と AA 境界ぎりぎりに
45
+ なるため、確実な AA が必要なら本ファイルの明示値(Tailwind-100 相当)を使うこと。
46
+
47
+ 命名規則: --Categorical-{1..16}{,-Subtle,-Bold}
48
+ ============================================================= */
49
+
50
+ :root {
51
+ /* ─── base(mark: ドット/アイコン/小塗り。Tailwind-500 相当) ─── */
52
+ --Categorical-1: #EF4444; /* red */
53
+ --Categorical-2: #0EA5E9; /* sky */
54
+ --Categorical-3: #14B8A6; /* teal */
55
+ --Categorical-4: #64748B; /* slate */
56
+ --Categorical-5: #EAB308; /* yellow */
57
+ --Categorical-6: #6366F1; /* indigo */
58
+ --Categorical-7: #F97316; /* orange */
59
+ --Categorical-8: #06B6D4; /* cyan */
60
+ --Categorical-9: #EC4899; /* pink */
61
+ --Categorical-10: #F43F5E; /* rose */
62
+ --Categorical-11: #3B82F6; /* blue */
63
+ --Categorical-12: #84CC16; /* lime */
64
+ --Categorical-13: #F59E0B; /* amber */
65
+ --Categorical-14: #D946EF; /* fuchsia */
66
+ --Categorical-15: #A855F7; /* purple */
67
+ --Categorical-16: #8B5CF6; /* violet */
68
+
69
+ /* ─── Subtle(背景ティント。Tailwind-100 相当 ≒ base 15% on white) ─── */
70
+ --Categorical-1-Subtle: #FEE2E2;
71
+ --Categorical-2-Subtle: #E0F2FE;
72
+ --Categorical-3-Subtle: #CCFBF1;
73
+ --Categorical-4-Subtle: #F1F5F9;
74
+ --Categorical-5-Subtle: #FEF9C3;
75
+ --Categorical-6-Subtle: #E0E7FF;
76
+ --Categorical-7-Subtle: #FFEDD5;
77
+ --Categorical-8-Subtle: #CFFAFE;
78
+ --Categorical-9-Subtle: #FCE7F3;
79
+ --Categorical-10-Subtle: #FFE4E6;
80
+ --Categorical-11-Subtle: #DBEAFE;
81
+ --Categorical-12-Subtle: #ECFCCB;
82
+ --Categorical-13-Subtle: #FEF3C7;
83
+ --Categorical-14-Subtle: #FAE8FF;
84
+ --Categorical-15-Subtle: #F3E8FF;
85
+ --Categorical-16-Subtle: #EDE9FE;
86
+
87
+ /* ─── Bold(文字/ラベル用。Tailwind-700 相当, ≥4.5:1 on white & on -Subtle) ─── */
88
+ --Categorical-1-Bold: #B91C1C;
89
+ --Categorical-2-Bold: #0369A1;
90
+ --Categorical-3-Bold: #0F766E;
91
+ --Categorical-4-Bold: #334155;
92
+ --Categorical-5-Bold: #A16207;
93
+ --Categorical-6-Bold: #4338CA;
94
+ --Categorical-7-Bold: #C2410C;
95
+ --Categorical-8-Bold: #0E7490;
96
+ --Categorical-9-Bold: #BE185D;
97
+ --Categorical-10-Bold: #BE123C;
98
+ --Categorical-11-Bold: #1D4ED8;
99
+ --Categorical-12-Bold: #4D7C0F;
100
+ --Categorical-13-Bold: #B45309;
101
+ --Categorical-14-Bold: #A21CAF;
102
+ --Categorical-15-Bold: #7E22CE;
103
+ --Categorical-16-Bold: #6D28D9;
104
+ }
105
+
106
+ /* ─── Dark Mode ───────────────────────────────────────────────
107
+ 色相(カテゴリ識別)は保ったまま、明度だけ暗面向けに調整。
108
+ base 500→400(暗面で映える), Bold 700→300(暗面の文字),
109
+ Subtle は base を 18% 透過で暗面に重ねる(semantic.css の Subtle と同方針)。 */
110
+ .dark {
111
+ --Categorical-1: #F87171;
112
+ --Categorical-2: #38BDF8;
113
+ --Categorical-3: #2DD4BF;
114
+ --Categorical-4: #94A3B8;
115
+ --Categorical-5: #FACC15;
116
+ --Categorical-6: #818CF8;
117
+ --Categorical-7: #FB923C;
118
+ --Categorical-8: #22D3EE;
119
+ --Categorical-9: #F472B6;
120
+ --Categorical-10: #FB7185;
121
+ --Categorical-11: #60A5FA;
122
+ --Categorical-12: #A3E635;
123
+ --Categorical-13: #FBBF24;
124
+ --Categorical-14: #E879F9;
125
+ --Categorical-15: #C084FC;
126
+ --Categorical-16: #A78BFA;
127
+
128
+ --Categorical-1-Subtle: color-mix(in srgb, var(--Categorical-1) 18%, transparent);
129
+ --Categorical-2-Subtle: color-mix(in srgb, var(--Categorical-2) 18%, transparent);
130
+ --Categorical-3-Subtle: color-mix(in srgb, var(--Categorical-3) 18%, transparent);
131
+ --Categorical-4-Subtle: color-mix(in srgb, var(--Categorical-4) 18%, transparent);
132
+ --Categorical-5-Subtle: color-mix(in srgb, var(--Categorical-5) 18%, transparent);
133
+ --Categorical-6-Subtle: color-mix(in srgb, var(--Categorical-6) 18%, transparent);
134
+ --Categorical-7-Subtle: color-mix(in srgb, var(--Categorical-7) 18%, transparent);
135
+ --Categorical-8-Subtle: color-mix(in srgb, var(--Categorical-8) 18%, transparent);
136
+ --Categorical-9-Subtle: color-mix(in srgb, var(--Categorical-9) 18%, transparent);
137
+ --Categorical-10-Subtle: color-mix(in srgb, var(--Categorical-10) 18%, transparent);
138
+ --Categorical-11-Subtle: color-mix(in srgb, var(--Categorical-11) 18%, transparent);
139
+ --Categorical-12-Subtle: color-mix(in srgb, var(--Categorical-12) 18%, transparent);
140
+ --Categorical-13-Subtle: color-mix(in srgb, var(--Categorical-13) 18%, transparent);
141
+ --Categorical-14-Subtle: color-mix(in srgb, var(--Categorical-14) 18%, transparent);
142
+ --Categorical-15-Subtle: color-mix(in srgb, var(--Categorical-15) 18%, transparent);
143
+ --Categorical-16-Subtle: color-mix(in srgb, var(--Categorical-16) 18%, transparent);
144
+
145
+ --Categorical-1-Bold: #FCA5A5;
146
+ --Categorical-2-Bold: #7DD3FC;
147
+ --Categorical-3-Bold: #5EEAD4;
148
+ --Categorical-4-Bold: #CBD5E1;
149
+ --Categorical-5-Bold: #FDE047;
150
+ --Categorical-6-Bold: #A5B4FC;
151
+ --Categorical-7-Bold: #FDBA74;
152
+ --Categorical-8-Bold: #67E8F9;
153
+ --Categorical-9-Bold: #F9A8D4;
154
+ --Categorical-10-Bold: #FDA4AF;
155
+ --Categorical-11-Bold: #93C5FD;
156
+ --Categorical-12-Bold: #BEF264;
157
+ --Categorical-13-Bold: #FCD34D;
158
+ --Categorical-14-Bold: #F0ABFC;
159
+ --Categorical-15-Bold: #D8B4FE;
160
+ --Categorical-16-Bold: #C4B5FD;
161
+ }
@@ -0,0 +1,365 @@
1
+ /* =============================================================
2
+ KSK Design System — Liquid Glass Material
3
+ iOS 26 / macOS 26 スタイルのガラス素材トークン + ユーティリティ
4
+
5
+ 使い方:
6
+ クラスを直接付与: <div class="glass">...</div>
7
+ または CSS 変数を参照: backdrop-filter: var(--glass-blur);
8
+
9
+ ⚠️ 宣言順の不変条件: `-webkit-backdrop-filter` を先、標準の
10
+ `backdrop-filter` を後に書くこと(Tailwind の出力順と同じ)。
11
+ 消費側の本番ビルド(Next.js 等の CSS minifier)は両者を同一
12
+ プロパティとして dedupe し「後に書いた方」だけを残すため、標準形を
13
+ 先に書くと minify 後に -webkit- だけが残り、エイリアス非対応の
14
+ Firefox で blur が完全に無効になる(yokoku-app 本番で実害、
15
+ 2026-06-12 修正)。dev は未 minify なので手元では再現しない。
16
+ ============================================================= */
17
+
18
+ /* ─── Liquid Glass トークン ─── */
19
+ :root {
20
+ /* Blur — Liquid Glass は旧来のすりガラスより透明度が高い。blur を抑えめに
21
+ して背景の形を残し、saturate + brightness で「ガラス越しに光を集めた」
22
+ 濃縮感を出す(brightness はライトで明るく、ダークで暗く倒す) */
23
+ --glass-blur-sm: blur(14px) saturate(1.7) brightness(1.05);
24
+ --glass-blur: blur(28px) saturate(1.9) brightness(1.06);
25
+ --glass-blur-lg: blur(56px) saturate(2.0) brightness(1.05);
26
+
27
+ /* Background */
28
+ --glass-bg: rgba(255, 255, 255, 0.18);
29
+ --glass-bg-subtle: rgba(255, 255, 255, 0.10);
30
+ --glass-bg-medium: rgba(255, 255, 255, 0.28);
31
+ --glass-bg-strong: rgba(255, 255, 255, 0.55);
32
+ --glass-bg-dark: rgba(10, 10, 20, 0.25);
33
+
34
+ /* Border — 上端の光の屈折を模した細い輪郭 */
35
+ --glass-border: rgba(255, 255, 255, 0.42);
36
+ --glass-border-dark: rgba(255, 255, 255, 0.15);
37
+
38
+ /* Edge rim — レンズ縁での光の屈折リング(.glass-specular の ::after)。
39
+ 0deg=上端に主光源のグリント、180deg=下端に内部反射のカウンターグリント、
40
+ 左右(90/270deg 付近)は減衰させて「光がエッジを回り込む」見え方にする。
41
+ グリントの肩に寒色(青系)、カウンターグリントの肩に暖色を僅かに乗せ、
42
+ 強い曲率で起きる色分散(chromatic aberration)を擬似する */
43
+ --glass-rim-width: 1.5px;
44
+ --glass-rim: conic-gradient(
45
+ from 0deg,
46
+ rgba(255, 255, 255, 0.80) 0deg,
47
+ rgba(186, 224, 255, 0.45) 40deg,
48
+ rgba(255, 255, 255, 0.20) 75deg,
49
+ rgba(255, 255, 255, 0.06) 120deg,
50
+ rgba(255, 226, 200, 0.30) 162deg,
51
+ rgba(255, 255, 255, 0.50) 180deg,
52
+ rgba(255, 226, 200, 0.30) 198deg,
53
+ rgba(255, 255, 255, 0.06) 240deg,
54
+ rgba(186, 224, 255, 0.45) 320deg,
55
+ rgba(255, 255, 255, 0.80) 360deg
56
+ );
57
+
58
+ /* Inner specular highlight — レンズ上端の白い光 */
59
+ --glass-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.60),
60
+ inset 0 -1px 0 rgba(255, 255, 255, 0.08);
61
+
62
+ /* Shadow — ガラスを浮かせる影 */
63
+ --glass-shadow-sm: 0 4px 16px rgba(0, 0, 0, 0.08),
64
+ 0 1px 4px rgba(0, 0, 0, 0.05);
65
+ --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.12),
66
+ 0 2px 8px rgba(0, 0, 0, 0.06);
67
+ --glass-shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.16),
68
+ 0 4px 12px rgba(0, 0, 0, 0.08);
69
+
70
+ /* Overlay blur — モーダル背景の軽いすりガラス */
71
+ --glass-overlay-bg: rgba(0, 0, 0, 0.15);
72
+ --glass-overlay-blur: blur(8px);
73
+ }
74
+
75
+ /* ─── Dark mode overrides ─── */
76
+ .dark {
77
+ --glass-blur-sm: blur(14px) saturate(1.5) brightness(0.95);
78
+ --glass-blur: blur(28px) saturate(1.6) brightness(0.92);
79
+ --glass-blur-lg: blur(56px) saturate(1.7) brightness(0.90);
80
+ --glass-bg: rgba(20, 20, 30, 0.35);
81
+ --glass-bg-subtle: rgba(20, 20, 30, 0.20);
82
+ --glass-bg-medium: rgba(20, 20, 30, 0.50);
83
+ --glass-bg-strong: rgba(20, 20, 30, 0.70);
84
+ --glass-bg-dark: rgba(0, 0, 10, 0.45);
85
+ --glass-border: rgba(255, 255, 255, 0.18);
86
+ --glass-border-dark: rgba(255, 255, 255, 0.08);
87
+ --glass-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.20),
88
+ inset 0 -1px 0 rgba(255, 255, 255, 0.04);
89
+ --glass-rim: conic-gradient(
90
+ from 0deg,
91
+ rgba(255, 255, 255, 0.38) 0deg,
92
+ rgba(170, 210, 255, 0.18) 40deg,
93
+ rgba(255, 255, 255, 0.08) 75deg,
94
+ rgba(255, 255, 255, 0.03) 120deg,
95
+ rgba(255, 215, 185, 0.12) 162deg,
96
+ rgba(255, 255, 255, 0.20) 180deg,
97
+ rgba(255, 215, 185, 0.12) 198deg,
98
+ rgba(255, 255, 255, 0.03) 240deg,
99
+ rgba(170, 210, 255, 0.18) 320deg,
100
+ rgba(255, 255, 255, 0.38) 360deg
101
+ );
102
+ --glass-overlay-bg: rgba(0, 0, 0, 0.40);
103
+ }
104
+
105
+ /* ─── ユーティリティクラス ─── */
106
+
107
+ /**
108
+ * .glass
109
+ * 標準ガラス素材。ナビゲーションバー・ツールバー・ピルボタンに。
110
+ */
111
+ .glass {
112
+ background: var(--glass-bg);
113
+ -webkit-backdrop-filter: var(--glass-blur);
114
+ backdrop-filter: var(--glass-blur);
115
+ border: 0.5px solid var(--glass-border);
116
+ box-shadow: var(--glass-highlight), var(--glass-shadow);
117
+ }
118
+
119
+ /**
120
+ * .glass-subtle
121
+ * 薄いガラス素材。フローティング要素の背景に軽く使う。
122
+ */
123
+ .glass-subtle {
124
+ background: var(--glass-bg-subtle);
125
+ -webkit-backdrop-filter: var(--glass-blur-sm);
126
+ backdrop-filter: var(--glass-blur-sm);
127
+ border: 0.5px solid rgba(255, 255, 255, 0.22);
128
+ box-shadow: var(--glass-shadow-sm);
129
+ }
130
+
131
+ /**
132
+ * .glass-medium
133
+ * 中程度ガラス。シート・カードのヘッダー部分等。
134
+ */
135
+ .glass-medium {
136
+ background: var(--glass-bg-medium);
137
+ -webkit-backdrop-filter: var(--glass-blur);
138
+ backdrop-filter: var(--glass-blur);
139
+ border: 0.5px solid var(--glass-border);
140
+ box-shadow: var(--glass-highlight), var(--glass-shadow);
141
+ }
142
+
143
+ /**
144
+ * .glass-strong
145
+ * 濃いガラス。アクションシート・確認ダイアログ等の可読性が必要な場面。
146
+ */
147
+ .glass-strong {
148
+ background: var(--glass-bg-strong);
149
+ -webkit-backdrop-filter: var(--glass-blur-lg);
150
+ backdrop-filter: var(--glass-blur-lg);
151
+ border: 0.5px solid var(--glass-border);
152
+ box-shadow: var(--glass-highlight), var(--glass-shadow-lg);
153
+ }
154
+
155
+ /**
156
+ * .glass-dark
157
+ * ダークコンテンツ上用ガラス(グラデーション・写真上に重ねる)。
158
+ */
159
+ .glass-dark {
160
+ background: var(--glass-bg-dark);
161
+ -webkit-backdrop-filter: var(--glass-blur);
162
+ backdrop-filter: var(--glass-blur);
163
+ border: 0.5px solid var(--glass-border-dark);
164
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12),
165
+ 0 8px 32px rgba(0, 0, 0, 0.28);
166
+ }
167
+
168
+ /**
169
+ * .glass-clear
170
+ * Apple HIG のもう一つの素材バリアント「Clear」。フロストを最小限にして
171
+ * 背景のメディアを最大限透過させる。写真・動画・カラフルなアートワーク上の
172
+ * フローティングコントロール向け。
173
+ * - 可読性のため薄い暗色ディミングを内蔵(白文字前提で使う)
174
+ * - レンズ感はリム頼みなので .glass-specular 併用を推奨
175
+ */
176
+ .glass-clear {
177
+ background: rgba(15, 15, 20, 0.14);
178
+ -webkit-backdrop-filter: blur(6px) saturate(1.6) brightness(1.05);
179
+ backdrop-filter: blur(6px) saturate(1.6) brightness(1.05);
180
+ border: 0.5px solid rgba(255, 255, 255, 0.35);
181
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.30),
182
+ var(--glass-shadow-sm);
183
+ }
184
+
185
+ .dark .glass-clear {
186
+ background: rgba(5, 5, 10, 0.25);
187
+ border-color: rgba(255, 255, 255, 0.18);
188
+ }
189
+
190
+ /**
191
+ * .glass-overlay
192
+ * モーダル背景。真っ暗なスクリムの代わりに軽くすりガラス風にぼかす。
193
+ */
194
+ .glass-overlay {
195
+ background: var(--glass-overlay-bg);
196
+ -webkit-backdrop-filter: var(--glass-overlay-blur);
197
+ backdrop-filter: var(--glass-overlay-blur);
198
+ }
199
+
200
+ /**
201
+ * .glass-accent
202
+ * ブランドカラーを帯びたガラス素材。FAB・主要アクションのフローティング要素に。
203
+ * --Brand-Primary を低透明度で重ねることで、テーマカラーに追従する。
204
+ */
205
+ .glass-accent {
206
+ background: color-mix(in srgb, var(--Brand-Primary) 15%, rgba(255, 255, 255, 0.12));
207
+ -webkit-backdrop-filter: var(--glass-blur);
208
+ backdrop-filter: var(--glass-blur);
209
+ border: 0.5px solid color-mix(in srgb, var(--Brand-Primary) 30%, rgba(255, 255, 255, 0.30));
210
+ box-shadow: var(--glass-highlight), var(--glass-shadow),
211
+ inset 0 0 0 0.5px color-mix(in srgb, var(--Brand-Primary) 20%, transparent);
212
+ }
213
+
214
+ .dark .glass-accent {
215
+ background: color-mix(in srgb, var(--Brand-Primary) 20%, rgba(20, 20, 30, 0.40));
216
+ border: 0.5px solid color-mix(in srgb, var(--Brand-Primary) 25%, rgba(255, 255, 255, 0.15));
217
+ }
218
+
219
+ /* ─── Specular + rim layer (::before / ::after) ─── */
220
+ /**
221
+ * .glass-specular
222
+ * Liquid Glass の「レンズ感」を追加するヘルパー。2 層で構成:
223
+ * ::before — レンズ上面のスペキュラ(上部の楕円シーン + 下部の淡い
224
+ * 内部反射 + 縁内側の拡散光)。コンテンツの下に敷く。
225
+ * ::after — エッジの屈折リム(--glass-rim の conic リング、太さ
226
+ * --glass-rim-width)。光はガラス表面で反射するため
227
+ * コンテンツより上に重ねる(1px なので操作は阻害しない)。
228
+ */
229
+ .glass-specular {
230
+ /*
231
+ * Establish a containing block for the ::before highlight.
232
+ * We use `isolation: isolate` instead of `position: relative` so the
233
+ * sheet can stay `position: fixed` when needed (the `.fixed` utility
234
+ * would otherwise be overridden by this rule's same-specificity
235
+ * later-in-stylesheet `position: relative`).
236
+ * Add `position: relative` only when there is no other positioning,
237
+ * via a fallback selector below.
238
+ */
239
+ isolation: isolate;
240
+ overflow: hidden;
241
+ }
242
+ /*
243
+ * Fallback: if the element is not already positioned (fixed/absolute/sticky),
244
+ * fall back to position: relative so the ::before still anchors correctly.
245
+ */
246
+ .glass-specular:not(.fixed):not(.absolute):not(.sticky) {
247
+ position: relative;
248
+ }
249
+ .glass-specular::before {
250
+ content: '';
251
+ position: absolute;
252
+ inset: 0;
253
+ border-radius: inherit;
254
+ background:
255
+ radial-gradient(
256
+ 140% 95% at 25% -20%,
257
+ rgba(255, 255, 255, 0.36) 0%,
258
+ rgba(255, 255, 255, 0.07) 45%,
259
+ transparent 70%
260
+ ),
261
+ radial-gradient(
262
+ 120% 65% at 75% 115%,
263
+ rgba(255, 255, 255, 0.16) 0%,
264
+ transparent 55%
265
+ );
266
+ /* 縁の内側に光が拡散して溜まる表現(屈折の擬似) */
267
+ box-shadow:
268
+ inset 0 0 14px rgba(255, 255, 255, 0.09),
269
+ inset 0 -10px 22px -14px rgba(255, 255, 255, 0.45);
270
+ pointer-events: none;
271
+ z-index: 0;
272
+ }
273
+ .dark .glass-specular::before {
274
+ opacity: 0.55;
275
+ }
276
+ .glass-specular::after {
277
+ content: '';
278
+ position: absolute;
279
+ inset: 0;
280
+ border-radius: inherit;
281
+ padding: var(--glass-rim-width);
282
+ background: var(--glass-rim);
283
+ /* padding 部分だけ残すリング状マスク(gradient border の定石) */
284
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
285
+ -webkit-mask-composite: xor;
286
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
287
+ mask-composite: exclude;
288
+ /* リング部分だけ背景を増光サンプリングし、縁が背景色を拾って光る
289
+ 「光を導くガラスの切断面」を作る(マスクが backdrop-filter の適用域も
290
+ リングに限定する = progressive blur と同じ原理)。非対応環境では
291
+ conic リムだけが残るので安全に劣化する */
292
+ -webkit-backdrop-filter: blur(4px) saturate(1.8) brightness(1.55);
293
+ backdrop-filter: blur(4px) saturate(1.8) brightness(1.55);
294
+ pointer-events: none;
295
+ z-index: 2;
296
+ }
297
+ .dark .glass-specular::after {
298
+ -webkit-backdrop-filter: blur(4px) saturate(1.6) brightness(1.25);
299
+ backdrop-filter: blur(4px) saturate(1.6) brightness(1.25);
300
+ }
301
+ /*
302
+ * フロー内の子をレンズ層の間(::before z0 の上 / ::after z2 の下)へ持ち上げる。
303
+ * 絶対配置の子(オーバーレイの × 閉じるボタン等)は consumer 側の position /
304
+ * z-index を尊重して除外する — コンテナ自身の :not(.fixed):not(.absolute)
305
+ * :not(.sticky) と同じパターン。
306
+ *
307
+ * 除外しないと回帰が起きる: glass.css は consumer 側で「非レイヤー CSS」として
308
+ * 読まれ、@layer utilities 内の Tailwind `absolute` / `z-*` をカスケードで
309
+ * 踏み潰す(unlayered > layered)。すると絶対配置オーバーレイが relative 化して
310
+ * `right-*` が相対オフセットになり、要素が角からはみ出す(yokoku-app の詳細
311
+ * ドロワー × ボタンが PC で左上角の外へ流れた実害、2026-06)。
312
+ */
313
+ .glass-specular > *:not(.absolute):not(.fixed):not(.sticky) {
314
+ position: relative;
315
+ z-index: 1;
316
+ }
317
+
318
+ /* ─── Reduced-transparency fallback ─── */
319
+ /**
320
+ * アクセシビリティ: ユーザーが「透明度を下げる」を有効にしている場合、
321
+ * backdrop-filter を無効化して不透明な背景にフォールバックする。
322
+ */
323
+ @media (prefers-reduced-transparency: reduce) {
324
+ .glass,
325
+ .glass-subtle,
326
+ .glass-medium,
327
+ .glass-strong,
328
+ .glass-dark,
329
+ .glass-clear,
330
+ .glass-accent {
331
+ -webkit-backdrop-filter: none;
332
+ backdrop-filter: none;
333
+ background: var(--Surface-Primary);
334
+ border-color: var(--Border-Low-Emphasis);
335
+ }
336
+
337
+ /* 白文字前提のガラスは白背景に落とすとコントラストが消えるため、
338
+ 不透明の暗色サーフェスにフォールバックする */
339
+ .glass-dark,
340
+ .glass-clear {
341
+ background: var(--Surface-Inverse);
342
+ }
343
+
344
+ .dark .glass,
345
+ .dark .glass-subtle,
346
+ .dark .glass-medium,
347
+ .dark .glass-strong,
348
+ .dark .glass-dark,
349
+ .dark .glass-clear,
350
+ .dark .glass-accent {
351
+ background: var(--Surface-Inverse);
352
+ }
353
+
354
+ /* スペキュラ・リムの装飾層も透明表現の一部なので無効化 */
355
+ .glass-specular::before,
356
+ .glass-specular::after {
357
+ display: none;
358
+ }
359
+
360
+ .glass-overlay {
361
+ -webkit-backdrop-filter: none;
362
+ backdrop-filter: none;
363
+ background: rgba(0, 0, 0, 0.6);
364
+ }
365
+ }
@@ -0,0 +1,161 @@
1
+ /* =============================================================
2
+ KSK Design System — Primitive Color Tokens
3
+
4
+ Layer 1: 原色パレット
5
+ テーマファイル(src/themes/*.css)で Brand 色を上書きすることで
6
+ 全セマンティックトークンが自動的に切り替わる。
7
+
8
+ ベースパレットはニュートラル(Gray, Red, Green, Blue 等)を定義し、
9
+ ブランドカラーはデフォルトテーマ(Blue)を初期値として設定する。
10
+ ============================================================= */
11
+
12
+ @theme {
13
+ /* ─── Brand(テーマ差し替え対象) ─── */
14
+ --Primitive-Brand-50: #EFF6FF;
15
+ --Primitive-Brand-100: #DBEAFE;
16
+ --Primitive-Brand-200: #BFDBFE;
17
+ --Primitive-Brand-300: #93C5FD;
18
+ --Primitive-Brand-400: #60A5FA;
19
+ --Primitive-Brand-500: #3B82F6;
20
+ --Primitive-Brand-600: #2563EB;
21
+ --Primitive-Brand-700: #1D4ED8;
22
+ --Primitive-Brand-800: #1E40AF;
23
+ --Primitive-Brand-900: #1E3A8A;
24
+
25
+ /* ─── Gray ─── */
26
+ --Primitive-Gray-50: #F9FAFB;
27
+ --Primitive-Gray-100: #F3F4F6;
28
+ --Primitive-Gray-200: #E5E7EB;
29
+ --Primitive-Gray-300: #D1D5DB;
30
+ --Primitive-Gray-400: #9CA3AF;
31
+ --Primitive-Gray-500: #6B7280;
32
+ --Primitive-Gray-600: #4B5563;
33
+ --Primitive-Gray-700: #374151;
34
+ --Primitive-Gray-800: #1F2937;
35
+ --Primitive-Gray-900: #111827;
36
+
37
+ /* ─── Red(Caution / Destructive) ─── */
38
+ --Primitive-Red-50: #FEF2F2;
39
+ --Primitive-Red-100: #FEE2E2;
40
+ --Primitive-Red-200: #FECACA;
41
+ --Primitive-Red-300: #FCA5A5;
42
+ --Primitive-Red-400: #F87171;
43
+ --Primitive-Red-500: #EF4444;
44
+ --Primitive-Red-600: #DC2626;
45
+ --Primitive-Red-700: #B91C1C;
46
+ --Primitive-Red-800: #991B1B;
47
+ --Primitive-Red-900: #7F1D1D;
48
+
49
+ /* ─── Orange(Warning) ─── */
50
+ --Primitive-Orange-50: #FFF7ED;
51
+ --Primitive-Orange-100: #FFEDD5;
52
+ --Primitive-Orange-200: #FED7AA;
53
+ --Primitive-Orange-300: #FDBA74;
54
+ --Primitive-Orange-400: #FB923C;
55
+ --Primitive-Orange-500: #F97316;
56
+ --Primitive-Orange-600: #EA580C;
57
+ --Primitive-Orange-700: #C2410C;
58
+ --Primitive-Orange-800: #9A3412;
59
+ --Primitive-Orange-900: #7C2D12;
60
+
61
+ /* ─── Amber ─── */
62
+ --Primitive-Amber-50: #FFFBEB;
63
+ --Primitive-Amber-100: #FEF3C7;
64
+ --Primitive-Amber-200: #FDE68A;
65
+ --Primitive-Amber-300: #FCD34D;
66
+ --Primitive-Amber-400: #FBBF24;
67
+ --Primitive-Amber-500: #F59E0B;
68
+ --Primitive-Amber-600: #D97706;
69
+ --Primitive-Amber-700: #B45309;
70
+ --Primitive-Amber-800: #92400E;
71
+ --Primitive-Amber-900: #78350F;
72
+
73
+ /* ─── Green(Success) ─── */
74
+ --Primitive-Green-50: #F0FDF4;
75
+ --Primitive-Green-100: #DCFCE7;
76
+ --Primitive-Green-200: #BBF7D0;
77
+ --Primitive-Green-300: #86EFAC;
78
+ --Primitive-Green-400: #4ADE80;
79
+ --Primitive-Green-500: #22C55E;
80
+ --Primitive-Green-600: #16A34A;
81
+ --Primitive-Green-700: #15803D;
82
+ --Primitive-Green-800: #166534;
83
+ --Primitive-Green-900: #14532D;
84
+
85
+ /* ─── Teal ─── */
86
+ --Primitive-Teal-50: #F0FDFA;
87
+ --Primitive-Teal-100: #CCFBF1;
88
+ --Primitive-Teal-200: #99F6E4;
89
+ --Primitive-Teal-300: #5EEAD4;
90
+ --Primitive-Teal-400: #2DD4BF;
91
+ --Primitive-Teal-500: #14B8A6;
92
+ --Primitive-Teal-600: #0D9488;
93
+ --Primitive-Teal-700: #0F766E;
94
+ --Primitive-Teal-800: #115E59;
95
+ --Primitive-Teal-900: #134E4A;
96
+
97
+ /* ─── Blue(Info) ─── */
98
+ --Primitive-Blue-50: #EFF6FF;
99
+ --Primitive-Blue-100: #DBEAFE;
100
+ --Primitive-Blue-200: #BFDBFE;
101
+ --Primitive-Blue-300: #93C5FD;
102
+ --Primitive-Blue-400: #60A5FA;
103
+ --Primitive-Blue-500: #3B82F6;
104
+ --Primitive-Blue-600: #2563EB;
105
+ --Primitive-Blue-700: #1D4ED8;
106
+ --Primitive-Blue-800: #1E40AF;
107
+ --Primitive-Blue-900: #1E3A8A;
108
+
109
+ /* ─── Violet ─── */
110
+ --Primitive-Violet-50: #F5F3FF;
111
+ --Primitive-Violet-100: #EDE9FE;
112
+ --Primitive-Violet-200: #DDD6FE;
113
+ --Primitive-Violet-300: #C4B5FD;
114
+ --Primitive-Violet-400: #A78BFA;
115
+ --Primitive-Violet-500: #8B5CF6;
116
+ --Primitive-Violet-600: #7C3AED;
117
+ --Primitive-Violet-700: #6D28D9;
118
+ --Primitive-Violet-800: #5B21B6;
119
+ --Primitive-Violet-900: #4C1D95;
120
+
121
+ /* ─── Pink ─── */
122
+ --Primitive-Pink-50: #FDF2F8;
123
+ --Primitive-Pink-100: #FCE7F3;
124
+ --Primitive-Pink-200: #FBCFE8;
125
+ --Primitive-Pink-300: #F9A8D4;
126
+ --Primitive-Pink-400: #F472B6;
127
+ --Primitive-Pink-500: #EC4899;
128
+ --Primitive-Pink-600: #DB2777;
129
+ --Primitive-Pink-700: #BE185D;
130
+ --Primitive-Pink-800: #9D174D;
131
+ --Primitive-Pink-900: #831843;
132
+
133
+ /* ─── Alpha(透過) ─── */
134
+ --Primitive-Gray-Alpha-50: rgba(17, 24, 39, 0.02);
135
+ --Primitive-Gray-Alpha-100: rgba(17, 24, 39, 0.04);
136
+ --Primitive-Gray-Alpha-200: rgba(17, 24, 39, 0.08);
137
+ --Primitive-Gray-Alpha-300: rgba(17, 24, 39, 0.12);
138
+ --Primitive-Gray-Alpha-400: rgba(17, 24, 39, 0.16);
139
+ --Primitive-Gray-Alpha-500: rgba(17, 24, 39, 0.24);
140
+ --Primitive-Gray-Alpha-600: rgba(17, 24, 39, 0.36);
141
+ --Primitive-Gray-Alpha-700: rgba(17, 24, 39, 0.48);
142
+ --Primitive-Gray-Alpha-800: rgba(17, 24, 39, 0.64);
143
+ --Primitive-Gray-Alpha-900: rgba(17, 24, 39, 0.80);
144
+ --Primitive-Gray-Alpha-1000: rgba(17, 24, 39, 0.92);
145
+
146
+ --Primitive-White-Alpha-50: rgba(255, 255, 255, 0.02);
147
+ --Primitive-White-Alpha-100: rgba(255, 255, 255, 0.04);
148
+ --Primitive-White-Alpha-200: rgba(255, 255, 255, 0.08);
149
+ --Primitive-White-Alpha-300: rgba(255, 255, 255, 0.16);
150
+ --Primitive-White-Alpha-400: rgba(255, 255, 255, 0.24);
151
+ --Primitive-White-Alpha-500: rgba(255, 255, 255, 0.36);
152
+ --Primitive-White-Alpha-600: rgba(255, 255, 255, 0.48);
153
+ --Primitive-White-Alpha-700: rgba(255, 255, 255, 0.64);
154
+ --Primitive-White-Alpha-800: rgba(255, 255, 255, 0.80);
155
+ --Primitive-White-Alpha-900: rgba(255, 255, 255, 0.92);
156
+ --Primitive-White-Alpha-1000: rgba(255, 255, 255, 1.00);
157
+
158
+ /* ─── 純色 ─── */
159
+ --Primitive-White: #FFFFFF;
160
+ --Primitive-Black: #000000;
161
+ }