@mesgflow/ui-kit 0.6.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 (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +200 -0
  3. package/fesm2022/mesgflow-ui-kit-accordion.mjs +75 -0
  4. package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -0
  5. package/fesm2022/mesgflow-ui-kit-alert.mjs +165 -0
  6. package/fesm2022/mesgflow-ui-kit-alert.mjs.map +1 -0
  7. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +88 -0
  8. package/fesm2022/mesgflow-ui-kit-avatar-group.mjs.map +1 -0
  9. package/fesm2022/mesgflow-ui-kit-avatar.mjs +123 -0
  10. package/fesm2022/mesgflow-ui-kit-avatar.mjs.map +1 -0
  11. package/fesm2022/mesgflow-ui-kit-badge.mjs +68 -0
  12. package/fesm2022/mesgflow-ui-kit-badge.mjs.map +1 -0
  13. package/fesm2022/mesgflow-ui-kit-banner.mjs +111 -0
  14. package/fesm2022/mesgflow-ui-kit-banner.mjs.map +1 -0
  15. package/fesm2022/mesgflow-ui-kit-box-input.mjs +78 -0
  16. package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -0
  17. package/fesm2022/mesgflow-ui-kit-brand.mjs +120 -0
  18. package/fesm2022/mesgflow-ui-kit-brand.mjs.map +1 -0
  19. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +84 -0
  20. package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs.map +1 -0
  21. package/fesm2022/mesgflow-ui-kit-button-group.mjs +37 -0
  22. package/fesm2022/mesgflow-ui-kit-button-group.mjs.map +1 -0
  23. package/fesm2022/mesgflow-ui-kit-button.mjs +359 -0
  24. package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -0
  25. package/fesm2022/mesgflow-ui-kit-card.mjs +128 -0
  26. package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -0
  27. package/fesm2022/mesgflow-ui-kit-chart.mjs +538 -0
  28. package/fesm2022/mesgflow-ui-kit-chart.mjs.map +1 -0
  29. package/fesm2022/mesgflow-ui-kit-checkbox.mjs +45 -0
  30. package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -0
  31. package/fesm2022/mesgflow-ui-kit-chip.mjs +123 -0
  32. package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -0
  33. package/fesm2022/mesgflow-ui-kit-code-block.mjs +71 -0
  34. package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -0
  35. package/fesm2022/mesgflow-ui-kit-collapsible.mjs +89 -0
  36. package/fesm2022/mesgflow-ui-kit-collapsible.mjs.map +1 -0
  37. package/fesm2022/mesgflow-ui-kit-color-picker.mjs +210 -0
  38. package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -0
  39. package/fesm2022/mesgflow-ui-kit-combobox.mjs +181 -0
  40. package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -0
  41. package/fesm2022/mesgflow-ui-kit-command.mjs +491 -0
  42. package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -0
  43. package/fesm2022/mesgflow-ui-kit-context-menu.mjs +92 -0
  44. package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -0
  45. package/fesm2022/mesgflow-ui-kit-copy-button.mjs +167 -0
  46. package/fesm2022/mesgflow-ui-kit-copy-button.mjs.map +1 -0
  47. package/fesm2022/mesgflow-ui-kit-core.mjs +624 -0
  48. package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -0
  49. package/fesm2022/mesgflow-ui-kit-date-picker.mjs +643 -0
  50. package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -0
  51. package/fesm2022/mesgflow-ui-kit-description-list.mjs +76 -0
  52. package/fesm2022/mesgflow-ui-kit-description-list.mjs.map +1 -0
  53. package/fesm2022/mesgflow-ui-kit-dialog.mjs +700 -0
  54. package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -0
  55. package/fesm2022/mesgflow-ui-kit-divider.mjs +62 -0
  56. package/fesm2022/mesgflow-ui-kit-divider.mjs.map +1 -0
  57. package/fesm2022/mesgflow-ui-kit-dropzone.mjs +126 -0
  58. package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -0
  59. package/fesm2022/mesgflow-ui-kit-empty-state.mjs +70 -0
  60. package/fesm2022/mesgflow-ui-kit-empty-state.mjs.map +1 -0
  61. package/fesm2022/mesgflow-ui-kit-field.mjs +42 -0
  62. package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -0
  63. package/fesm2022/mesgflow-ui-kit-hover-card.mjs +171 -0
  64. package/fesm2022/mesgflow-ui-kit-hover-card.mjs.map +1 -0
  65. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +258 -0
  66. package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -0
  67. package/fesm2022/mesgflow-ui-kit-icon.mjs +174 -0
  68. package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -0
  69. package/fesm2022/mesgflow-ui-kit-input.mjs +448 -0
  70. package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -0
  71. package/fesm2022/mesgflow-ui-kit-kbd.mjs +24 -0
  72. package/fesm2022/mesgflow-ui-kit-kbd.mjs.map +1 -0
  73. package/fesm2022/mesgflow-ui-kit-link.mjs +48 -0
  74. package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -0
  75. package/fesm2022/mesgflow-ui-kit-menu.mjs +105 -0
  76. package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -0
  77. package/fesm2022/mesgflow-ui-kit-number-input.mjs +153 -0
  78. package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -0
  79. package/fesm2022/mesgflow-ui-kit-otp-input.mjs +164 -0
  80. package/fesm2022/mesgflow-ui-kit-otp-input.mjs.map +1 -0
  81. package/fesm2022/mesgflow-ui-kit-page-header.mjs +83 -0
  82. package/fesm2022/mesgflow-ui-kit-page-header.mjs.map +1 -0
  83. package/fesm2022/mesgflow-ui-kit-pagination.mjs +99 -0
  84. package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -0
  85. package/fesm2022/mesgflow-ui-kit-password-input.mjs +120 -0
  86. package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -0
  87. package/fesm2022/mesgflow-ui-kit-popover.mjs +213 -0
  88. package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -0
  89. package/fesm2022/mesgflow-ui-kit-progress.mjs +82 -0
  90. package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -0
  91. package/fesm2022/mesgflow-ui-kit-radio.mjs +123 -0
  92. package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -0
  93. package/fesm2022/mesgflow-ui-kit-rating.mjs +116 -0
  94. package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -0
  95. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +84 -0
  96. package/fesm2022/mesgflow-ui-kit-scroll-area.mjs.map +1 -0
  97. package/fesm2022/mesgflow-ui-kit-search-input.mjs +154 -0
  98. package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -0
  99. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +95 -0
  100. package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -0
  101. package/fesm2022/mesgflow-ui-kit-select.mjs +227 -0
  102. package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -0
  103. package/fesm2022/mesgflow-ui-kit-sidebar.mjs +449 -0
  104. package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -0
  105. package/fesm2022/mesgflow-ui-kit-skeleton.mjs +74 -0
  106. package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -0
  107. package/fesm2022/mesgflow-ui-kit-slider.mjs +179 -0
  108. package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -0
  109. package/fesm2022/mesgflow-ui-kit-spinner.mjs +67 -0
  110. package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -0
  111. package/fesm2022/mesgflow-ui-kit-splitter.mjs +97 -0
  112. package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -0
  113. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +98 -0
  114. package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -0
  115. package/fesm2022/mesgflow-ui-kit-stepper.mjs +133 -0
  116. package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -0
  117. package/fesm2022/mesgflow-ui-kit-switch.mjs +73 -0
  118. package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -0
  119. package/fesm2022/mesgflow-ui-kit-table.mjs +1783 -0
  120. package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -0
  121. package/fesm2022/mesgflow-ui-kit-tabs.mjs +569 -0
  122. package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -0
  123. package/fesm2022/mesgflow-ui-kit-tag-input.mjs +138 -0
  124. package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -0
  125. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +53 -0
  126. package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs.map +1 -0
  127. package/fesm2022/mesgflow-ui-kit-theming.mjs +1016 -0
  128. package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -0
  129. package/fesm2022/mesgflow-ui-kit-time-picker.mjs +138 -0
  130. package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -0
  131. package/fesm2022/mesgflow-ui-kit-timeline.mjs +91 -0
  132. package/fesm2022/mesgflow-ui-kit-timeline.mjs.map +1 -0
  133. package/fesm2022/mesgflow-ui-kit-toast.mjs +202 -0
  134. package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -0
  135. package/fesm2022/mesgflow-ui-kit-toggle.mjs +243 -0
  136. package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -0
  137. package/fesm2022/mesgflow-ui-kit-toolbar.mjs +99 -0
  138. package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -0
  139. package/fesm2022/mesgflow-ui-kit-tooltip.mjs +160 -0
  140. package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -0
  141. package/fesm2022/mesgflow-ui-kit-tour.mjs +272 -0
  142. package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -0
  143. package/fesm2022/mesgflow-ui-kit-tree-select.mjs +177 -0
  144. package/fesm2022/mesgflow-ui-kit-tree-select.mjs.map +1 -0
  145. package/fesm2022/mesgflow-ui-kit-tree.mjs +82 -0
  146. package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -0
  147. package/fesm2022/mesgflow-ui-kit.mjs +12851 -0
  148. package/fesm2022/mesgflow-ui-kit.mjs.map +1 -0
  149. package/package.json +374 -0
  150. package/preset.css +20 -0
  151. package/tokens/color.css +693 -0
  152. package/tokens/contrast.css +68 -0
  153. package/tokens/elevation.css +68 -0
  154. package/tokens/motion.css +277 -0
  155. package/tokens/radius.css +69 -0
  156. package/tokens/typography.css +127 -0
  157. package/tokens.css +41 -0
  158. package/types/mesgflow-ui-kit-accordion.d.ts +42 -0
  159. package/types/mesgflow-ui-kit-alert.d.ts +60 -0
  160. package/types/mesgflow-ui-kit-avatar-group.d.ts +28 -0
  161. package/types/mesgflow-ui-kit-avatar.d.ts +23 -0
  162. package/types/mesgflow-ui-kit-badge.d.ts +39 -0
  163. package/types/mesgflow-ui-kit-banner.d.ts +42 -0
  164. package/types/mesgflow-ui-kit-box-input.d.ts +45 -0
  165. package/types/mesgflow-ui-kit-brand.d.ts +48 -0
  166. package/types/mesgflow-ui-kit-breadcrumb.d.ts +26 -0
  167. package/types/mesgflow-ui-kit-button-group.d.ts +17 -0
  168. package/types/mesgflow-ui-kit-button.d.ts +75 -0
  169. package/types/mesgflow-ui-kit-card.d.ts +71 -0
  170. package/types/mesgflow-ui-kit-chart.d.ts +242 -0
  171. package/types/mesgflow-ui-kit-checkbox.d.ts +17 -0
  172. package/types/mesgflow-ui-kit-chip.d.ts +46 -0
  173. package/types/mesgflow-ui-kit-code-block.d.ts +56 -0
  174. package/types/mesgflow-ui-kit-collapsible.d.ts +39 -0
  175. package/types/mesgflow-ui-kit-color-picker.d.ts +78 -0
  176. package/types/mesgflow-ui-kit-combobox.d.ts +74 -0
  177. package/types/mesgflow-ui-kit-command.d.ts +185 -0
  178. package/types/mesgflow-ui-kit-context-menu.d.ts +40 -0
  179. package/types/mesgflow-ui-kit-copy-button.d.ts +47 -0
  180. package/types/mesgflow-ui-kit-core.d.ts +508 -0
  181. package/types/mesgflow-ui-kit-date-picker.d.ts +215 -0
  182. package/types/mesgflow-ui-kit-description-list.d.ts +23 -0
  183. package/types/mesgflow-ui-kit-dialog.d.ts +342 -0
  184. package/types/mesgflow-ui-kit-divider.d.ts +23 -0
  185. package/types/mesgflow-ui-kit-dropzone.d.ts +47 -0
  186. package/types/mesgflow-ui-kit-empty-state.d.ts +18 -0
  187. package/types/mesgflow-ui-kit-field.d.ts +26 -0
  188. package/types/mesgflow-ui-kit-hover-card.d.ts +52 -0
  189. package/types/mesgflow-ui-kit-i18n-tr.d.ts +14 -0
  190. package/types/mesgflow-ui-kit-icon.d.ts +76 -0
  191. package/types/mesgflow-ui-kit-input.d.ts +186 -0
  192. package/types/mesgflow-ui-kit-kbd.d.ts +9 -0
  193. package/types/mesgflow-ui-kit-link.d.ts +20 -0
  194. package/types/mesgflow-ui-kit-menu.d.ts +53 -0
  195. package/types/mesgflow-ui-kit-number-input.d.ts +55 -0
  196. package/types/mesgflow-ui-kit-otp-input.d.ts +44 -0
  197. package/types/mesgflow-ui-kit-page-header.d.ts +31 -0
  198. package/types/mesgflow-ui-kit-pagination.d.ts +50 -0
  199. package/types/mesgflow-ui-kit-password-input.d.ts +33 -0
  200. package/types/mesgflow-ui-kit-popover.d.ts +62 -0
  201. package/types/mesgflow-ui-kit-progress.d.ts +32 -0
  202. package/types/mesgflow-ui-kit-radio.d.ts +59 -0
  203. package/types/mesgflow-ui-kit-rating.d.ts +56 -0
  204. package/types/mesgflow-ui-kit-scroll-area.d.ts +27 -0
  205. package/types/mesgflow-ui-kit-search-input.d.ts +72 -0
  206. package/types/mesgflow-ui-kit-segmented-control.d.ts +54 -0
  207. package/types/mesgflow-ui-kit-select.d.ts +89 -0
  208. package/types/mesgflow-ui-kit-sidebar.d.ts +224 -0
  209. package/types/mesgflow-ui-kit-skeleton.d.ts +29 -0
  210. package/types/mesgflow-ui-kit-slider.d.ts +40 -0
  211. package/types/mesgflow-ui-kit-spinner.d.ts +31 -0
  212. package/types/mesgflow-ui-kit-splitter.d.ts +40 -0
  213. package/types/mesgflow-ui-kit-stat-tile.d.ts +54 -0
  214. package/types/mesgflow-ui-kit-stepper.d.ts +48 -0
  215. package/types/mesgflow-ui-kit-switch.d.ts +34 -0
  216. package/types/mesgflow-ui-kit-table.d.ts +805 -0
  217. package/types/mesgflow-ui-kit-tabs.d.ts +269 -0
  218. package/types/mesgflow-ui-kit-tag-input.d.ts +33 -0
  219. package/types/mesgflow-ui-kit-theme-switcher.d.ts +27 -0
  220. package/types/mesgflow-ui-kit-theming.d.ts +745 -0
  221. package/types/mesgflow-ui-kit-time-picker.d.ts +54 -0
  222. package/types/mesgflow-ui-kit-timeline.d.ts +27 -0
  223. package/types/mesgflow-ui-kit-toast.d.ts +94 -0
  224. package/types/mesgflow-ui-kit-toggle.d.ts +110 -0
  225. package/types/mesgflow-ui-kit-toolbar.d.ts +52 -0
  226. package/types/mesgflow-ui-kit-tooltip.d.ts +55 -0
  227. package/types/mesgflow-ui-kit-tour.d.ts +66 -0
  228. package/types/mesgflow-ui-kit-tree-select.d.ts +65 -0
  229. package/types/mesgflow-ui-kit-tree.d.ts +44 -0
  230. package/types/mesgflow-ui-kit.d.ts +5444 -0
@@ -0,0 +1,693 @@
1
+ /*
2
+ * mesgflow — renk token'ları: ham rampalar, rol katmanı (light/dark takas),
3
+ * seçim rengi. Dark mode class tabanlı (`.dark`) — bkz. kök `tokens.css`
4
+ * doc yorumu, kurulum notları orada.
5
+ *
6
+ * `@custom-variant dark` BURADA — bu dosya `tokens.css`'in ilk import'u,
7
+ * `dark:` varyantı geri kalan token dosyalarında (motion/elevation) da
8
+ * kullanılmadan önce tanımlanmış olması gerekiyor.
9
+ *
10
+ * `.light` — koyu bir sayfanın İÇİNDE açık bir ada (veya tersi: açık sayfada
11
+ * `.dark` koyu bir hero bölümü) kurmak için. Rol katmanının `:root` bloğu
12
+ * `.light`'a da uygulanır; `dark:` varyantı `.dark .light` altında
13
+ * DEVRE DIŞI kalır. Tek seviye iç içe geçme desteklenir (koyu → açık ada);
14
+ * daha derin zincirler (koyu → açık → koyu) desteklenmez.
15
+ */
16
+ @custom-variant dark (&:where(.dark, .dark *):not(:where(.dark .light, .dark .light *)));
17
+
18
+ /* Cam yüzeyler (core/recipes.ts glassSurface, dialog/toast) bu varyantla düz yüzeye düşer — bkz. "Cam yüzeyler" dokümanı. */
19
+ @custom-variant reduced-transparency (@media (prefers-reduced-transparency: reduce));
20
+
21
+ @theme static {
22
+ /*
23
+ * ─────────────────────────────────────────────────────────────────────
24
+ * RENK — HAM RAMPALAR (11 basamak) — HEPSİ elle taşınan hex
25
+ * ─────────────────────────────────────────────────────────────────────
26
+ * 2026-09 "Deep Emerald & Slate v2": kullanıcının verdiği bir light+dark
27
+ * tasarım spesifikasyonundaki hex'ler ÇAPA alınıp aradaki basamaklar OKLCH
28
+ * uzayında interpolasyonla dolduruldu (L/C/H ayrı ayrı lerp — ton geçişleri
29
+ * pürüzsüz, hiçbir basamakta L monotonikliği bozulmuyor). success/warning/
30
+ * danger/info/help artık primary'nin kroma bütçesine elle akort edilmiş
31
+ * DEĞİL — spec'in kendi (Tailwind-stok-benzeri) hex'lerine sadık.
32
+ *
33
+ * Eski "deep-fill/bright-fill" rampa TÜRÜ ayrımı KALKTI — her rampada
34
+ * basamak SAYISININ anlamı artık sabit ve tekdüze (rol katmanına bkz.):
35
+ * 100 = spec'in "Background Tint" çapası (rozet/tonal işaretin altında
36
+ * yatan referans — doğrudan bir rol token'ı değil, gösterim/
37
+ * interpolasyon çapası).
38
+ * 400 = spec'in DARK "Hex"i — dark modda metin/ikon VE dolu blok.
39
+ * 600 = spec'in LIGHT "Hex"i — light modda ikon/kenarlık, tonal işaretin
40
+ * alfa-karışım çapası, ve (danger/help/success/warning için) dolu
41
+ * blok.
42
+ * 700 = light METİN (success/warning/info — 600 beyaz zeminde/dolu blok
43
+ * üstünde AA'yı geçmiyor) ve/veya hover basamağı.
44
+ * 800 = spec'in "Text" değeri — tonal işaretin (tint) üstündeki metin.
45
+ * `check:contrast` (scripts/check-contrast.mjs) bu roller üstünden AA'yı
46
+ * doğrular; script `color.css`'in KENDİSİNİ okur, drift riski yok.
47
+ *
48
+ * Success hue kararı (2026-09 premium turu, kullanıcı onayıyla): spec'in
49
+ * zümrüt success'i (~163°) dark modda primary-400 ile BİREBİR aynı hex'ti
50
+ * (`#10b981`) — birincil CTA ile "başarılı" rozeti ayırt edilemiyordu. Rampa
51
+ * OKLCH'de her basamağın L ve C'si KORUNARAK hue ~163° → 148°'e (zümrütten
52
+ * yeşile) döndürüldü: aynı algısal ağırlık, ayrı bir anlam rengi. Primary
53
+ * (~163-174°) zümrüt/teal'de kalır.
54
+ *
55
+ * `@theme static`: kullanılmayan basamaklar da `:root`'a yazılsın —
56
+ * showcase'in Renkler sayfası `--color-<ramp>-<basamak>` adını runtime'da
57
+ * `getComputedStyle` ile okuyor, Tailwind'in kaynak tarayıcısı böyle bir
58
+ * kullanımı GÖREMEZ (sadece gerçek utility class'larını arar).
59
+ */
60
+
61
+ /*
62
+ * Primary — "Deep Emerald". 50-300/800-950 önceki turdan (hue ~174°)
63
+ * korunur; 400/500/700 spec'in dark/dark-hover/light-hover hex'lerine
64
+ * (`#10b981`/`#059669`/`#0a4335`) çekildi. 600 = `#004d40` (metin/ikon/
65
+ * kenarlık "accent" rolü VE checkbox/radio `accent-color`'ı — DEĞİŞMEDİ).
66
+ * 900 = `#062c22` — artık LIGHT modun dolu blok basamağı (`--mf-accent-fill`,
67
+ * kullanıcı kararı: spec'in "Forest Emerald" CTA'sı). 2026-09 ilk turda
68
+ * Deep Jade'den (hue ~155°) geçilmişti; bu v2 tur aynı ailede kalıp sadece
69
+ * 400/500/700'ü spec'e taşıdı.
70
+ */
71
+ --color-primary-50: #eef9f5;
72
+ --color-primary-100: #d9f2ea;
73
+ --color-primary-200: #b4e6d6;
74
+ --color-primary-300: #81d0ba;
75
+ --color-primary-400: #10b981;
76
+ --color-primary-500: #059669;
77
+ --color-primary-600: #004d40;
78
+ --color-primary-700: #0a4335;
79
+ --color-primary-800: #05362b;
80
+ --color-primary-900: #062c22;
81
+ --color-primary-950: #061d17;
82
+
83
+ /*
84
+ * Nötr — "Emerald Slate": her basamak marka hue'sunda (~170°), kroma
85
+ * ≤0.02 — algılanabilir bir "yeşil" DEĞİL, markayla aynı sıcaklıkta bir
86
+ * slate (kural ilk turda KULLANICI KARARIYLA "nötrler asla yeşile kaymaz"
87
+ * ilkesinin yerine geçti). v2 turda 200/300 ve koyu merdiven (700-975)
88
+ * spec'in "Porselen" (light) ve "Dumanlı Zümrüt-Siyah" (dark) hedeflerine
89
+ * yeniden ayarlandı — dark canvas artık `#0b1311`, kart `#121e1b`,
90
+ * kenarlık `#233530` (spec'in kendi hex'leri, sadece marka hue'suna göre
91
+ * küçük bir kroma düzeltmesiyle). `check:contrast` nötr metin çiftlerini
92
+ * doğrular.
93
+ */
94
+ --color-neutral-50: #f6f8f7;
95
+ --color-neutral-100: #f4f6f5;
96
+ --color-neutral-200: #e8ecea;
97
+ --color-neutral-300: #d8e0dc;
98
+ --color-neutral-400: #b4bfbb;
99
+ --color-neutral-500: #86948f;
100
+ --color-neutral-600: #5e6d67;
101
+ --color-neutral-700: #40504b;
102
+ --color-neutral-800: #233530;
103
+ --color-neutral-850: #192723;
104
+ --color-neutral-900: #121e1b;
105
+ --color-neutral-950: #0b1311;
106
+ --color-neutral-975: #070e0c;
107
+
108
+ /* Success — yeşil (hue 148°), spec'in zümrüt rampasının L/C'si korunarak döndürüldü — bkz. üstteki doktrin notu. */
109
+ --color-success-50: #eefcef;
110
+ --color-success-100: #d9f9dc;
111
+ --color-success-200: #b5ebbc;
112
+ --color-success-300: #91dd9c;
113
+ --color-success-400: #68cf7b;
114
+ --color-success-500: #52b666;
115
+ --color-success-600: #419351;
116
+ --color-success-700: #357642;
117
+ --color-success-800: #2b5d34;
118
+ --color-success-900: #1d4725;
119
+ --color-success-950: #123218;
120
+
121
+ /* Warning — spec'in amber'i. */
122
+ --color-warning-50: #fffae6;
123
+ --color-warning-100: #fef3c7;
124
+ --color-warning-200: #f8da94;
125
+ --color-warning-300: #f6be5f;
126
+ --color-warning-400: #f59e0b;
127
+ --color-warning-500: #e78a05;
128
+ --color-warning-600: #d97706;
129
+ /*
130
+ * 700 spec'in `#B45309`si YERİNE elle bir tık koyulaştırıldı (`#a64b08`) —
131
+ * `#B45309` nötr-200 (`surface-alt`) üstünde 4.21:1 ölçüldü (AA altı,
132
+ * `check:contrast` bu yüzeyi de tarıyor); `#a64b08` 4.5:1+ geçiyor.
133
+ */
134
+ --color-warning-700: #a64b08;
135
+ --color-warning-800: #92400e;
136
+ --color-warning-900: #762e00;
137
+ --color-warning-950: #572101;
138
+
139
+ /* Danger — spec'in "Muted Ruby/Yakut"ı. */
140
+ --color-danger-50: #fef5f5;
141
+ --color-danger-100: #fde8e8;
142
+ --color-danger-200: #f8c2c1;
143
+ --color-danger-300: #f09b9a;
144
+ /*
145
+ * 400 spec'in `#E57373`si YERİNE elle bir tık koyulaştırıldı (`#e87878`) —
146
+ * dark modda overlay/surface-alt üstündeki %12 tint karışımında metin
147
+ * rengi olarak kullanılınca 4.42:1 ölçüldü (AA altı); `#e87878` geçiyor.
148
+ */
149
+ --color-danger-400: #e87878;
150
+ --color-danger-500: #d65453;
151
+ --color-danger-600: #c53030;
152
+ --color-danger-700: #b02626;
153
+ --color-danger-800: #9b1c1c;
154
+ --color-danger-900: #7c080d;
155
+ --color-danger-950: #5a0407;
156
+
157
+ /* Info — spec'in "Buz Mavisi/Slate Blue"si. */
158
+ --color-info-50: #f1f9ff;
159
+ --color-info-100: #e0f2fe;
160
+ --color-info-200: #b2e1fe;
161
+ --color-info-300: #7ecffc;
162
+ --color-info-400: #38bdf8;
163
+ --color-info-500: #20a0e0;
164
+ --color-info-600: #0284c7;
165
+ --color-info-700: #0369a1;
166
+ --color-info-800: #075985;
167
+ --color-info-900: #00446a;
168
+ --color-info-950: #00304c;
169
+
170
+ /*
171
+ * Help — YENİ rampa, spec'in "Ametist Moru" (AI önerileri/onboarding/
172
+ * yardım tooltip'leri). `MfTone`'a `help` üyesi olarak eklendi (bkz.
173
+ * core/types.ts).
174
+ */
175
+ --color-help-50: #f7f5ff;
176
+ --color-help-100: #ede9fe;
177
+ --color-help-200: #d5cafe;
178
+ --color-help-300: #bdabfd;
179
+ --color-help-400: #a78bfa;
180
+ /*
181
+ * 500 spec'te yok (interpolasyon ara basamağıydı) — mürekkep metinle
182
+ * (`#04110d`) 4.48:1 ölçüldüğü için elle bir tık açıldı (`#9370f2`).
183
+ */
184
+ --color-help-500: #9370f2;
185
+ --color-help-600: #6d28d9;
186
+ --color-help-700: #6424c7;
187
+ --color-help-800: #5b21b6;
188
+ --color-help-900: #460b93;
189
+ --color-help-950: #31046b;
190
+
191
+ /*
192
+ * ─────────────────────────────────────────────────────────────────────
193
+ * GERİYE DÖNÜK UYUMLULUK — eski marka/semantic token ismi.
194
+ * `--color-*-dark`/`--color-dark-*` "dark: ikizi" ailesi Faz 1d'de
195
+ * KALDIRILDI (bu depoda hiçbir tüketicisi yoktu, bkz. plan — BREAKING,
196
+ * 0.2.0): rol katmanı (`--mf-*`, aşağıda) zaten AYNI amaca hizmet ediyor
197
+ * ve `dark:` ikizi YAZDIRMIYOR, bu takma adlar sadece kafa karıştıran bir
198
+ * ikinci yol sunuyordu.
199
+ */
200
+ --color-primary: var(--color-primary-600);
201
+ }
202
+
203
+ /*
204
+ * ───────────────────────────────────────────────────────────────────────
205
+ * ROL KATMANI — runtime'da MODA GÖRE TAKAS OLAN token'lar
206
+ * ───────────────────────────────────────────────────────────────────────
207
+ * `@theme inline`, değeri derleme zamanında sabitlemek yerine var(--mf-*)
208
+ * referansı olarak bırakır — aşağıdaki :root/.dark bloklarında TEK bir CSS
209
+ * custom property değişimiyle bütün utility'ler (bg-surface, text-fg, ...)
210
+ * doğru moda geçer. Template'lerde `bg-X dark:bg-X-dark` İKİLİSİ tamamen
211
+ * gereksizleşir — `bg-surface` iki modda da doğru sonucu verir.
212
+ *
213
+ * success/warning/danger/info/help RAMPALARI yukarıdaki `@theme` bloğunda
214
+ * (elle hex) — burada SADECE moda göre takas olan rol token'ları.
215
+ *
216
+ * Her semantik ton (success/warning/danger/info/help) BEŞLİ bir rol seti
217
+ * taşır — v2'nin ana yeniliği, eski "bileşen doğrudan `bg-X-600 dark:bg-X-900`
218
+ * yazar" deseninin yerine geçti:
219
+ * `--mf-X` metin/ikon/kenarlık rolü (Button outlined/text, Link, Spinner, Timeline)
220
+ * `--mf-X-fill` dolu blok zemini (filled Button, vb.)
221
+ * `--mf-X-fill-hover` dolu blok hover zemini
222
+ * `--mf-X-fill-fg` dolu blok ÜSTÜNDEKİ metin (moda göre beyaz/mürekkep değişir)
223
+ * `--mf-X-tint` tonal işaret zemini (badge/chip/alert/seçili satır/aktif nav) —
224
+ * `color-mix()` ile rampanın kendi basamağının %12 alfası, MOD-TAKASLI çapa
225
+ * (light 600 / dark 400 — spec'in "Soft Tinting" tekniği)
226
+ * `--mf-X-tint-fg` tonal işaret ÜSTÜNDEKİ metin
227
+ */
228
+ @theme inline {
229
+ --color-help: var(--mf-help);
230
+ --color-success: var(--mf-success);
231
+ --color-warning: var(--mf-warning);
232
+ --color-danger: var(--mf-danger);
233
+ --color-info: var(--mf-info);
234
+
235
+ /* Yüzey merdiveni */
236
+ --color-canvas: var(--mf-canvas);
237
+ --color-surface: var(--mf-surface);
238
+ --color-surface-alt: var(--mf-surface-alt);
239
+ --color-chrome: var(--mf-chrome);
240
+ --color-surface-sunken: var(--mf-surface-sunken);
241
+ --color-surface-active: var(--mf-surface-active);
242
+ --color-overlay: var(--mf-overlay);
243
+ /* Ters yüzey — koyu-üstünde-açık (light) / açık-üstünde-koyu (dark), tooltip gibi "her zaman zıt" yüzeyler için. Artık literal spec değerleri (primary-900 DEĞİL). */
244
+ --color-surface-inverse: var(--mf-surface-inverse);
245
+ /* Cam yüzey — Dialog/Sheet/Drawer/Toast paneli + showcase sabit üst çubuğu; bkz. core/recipes.ts glassSurface. */
246
+ --color-glass: var(--mf-glass);
247
+
248
+ /* Kenarlık — `line` eski/yaygın isim, `border` ile AYNI anlamı taşıyor */
249
+ --color-line: var(--color-border);
250
+ --color-border-subtle: var(--mf-border-subtle);
251
+ --color-border: var(--mf-border);
252
+ --color-border-strong: var(--mf-border-strong);
253
+ /* İnce çizgi (border-first depth) — kapsayıcılar (card/table/toolbar) gölge YERİNE bunu kullanır, alfa tabanlı: her zeminde çalışır. */
254
+ --color-hairline: var(--mf-hairline);
255
+
256
+ /*
257
+ * Durum katmanı (state layer) — hover/pressed/selected için ZEMİNDEN
258
+ * BAĞIMSIZ alfa örtüler: `bg-state-hover` renkli, görsel veya cam bir
259
+ * yüzeyin üstünde de doğru koyulaşır/açılır (opak `bg-surface-alt`
260
+ * yalnızca kendi zemininde doğru görünür). Metin rengi `fg` tabanlı.
261
+ */
262
+ --color-state-hover: var(--mf-state-hover);
263
+ --color-state-pressed: var(--mf-state-pressed);
264
+ --color-state-selected: var(--mf-state-selected);
265
+
266
+ /*
267
+ * ─────────────────────────────────────────────────────────────────────
268
+ * GRAFİK — üç iş, üç skala (dataviz metodu; değerler rol bloklarında,
269
+ * iki mod AYRI SEÇİLMİŞ basamaklar — otomatik ters çevirme DEĞİL):
270
+ * chart-1..8 KATEGORİK (kimlik) — SABİT sırayla atanır, ASLA döngüye
271
+ * girmez; 9. seri "Diğer"e (`chart-other`) katlanır.
272
+ * chart-seq-1..5 SIRALI (büyüklük) — tek hue (zümrüt), açık→koyu;
273
+ * dark'ta çapa ters (düşük değer zemine yakın koyu).
274
+ * chart-div-1..5 IRAKSAK (kutup) — turuncu ↔ nötr gri ↔ mavi.
275
+ * Durum (iyi/uyarı/kritik) için AYRI grafik rengi YOK — kitin success/
276
+ * warning/danger rolleri kullanılır, HER ZAMAN ikon+etiketle.
277
+ * Grafik renkleri METİN için KULLANILMAZ — etiket/değer/lejant metni fg/
278
+ * fg-muted taşır, renkli işaret (nokta/çizgi) yanında durur.
279
+ */
280
+ --color-chart-1: var(--mf-chart-1);
281
+ --color-chart-2: var(--mf-chart-2);
282
+ --color-chart-3: var(--mf-chart-3);
283
+ --color-chart-4: var(--mf-chart-4);
284
+ --color-chart-5: var(--mf-chart-5);
285
+ --color-chart-6: var(--mf-chart-6);
286
+ --color-chart-7: var(--mf-chart-7);
287
+ --color-chart-8: var(--mf-chart-8);
288
+ --color-chart-other: var(--mf-chart-other);
289
+ --color-chart-seq-1: var(--mf-chart-seq-1);
290
+ --color-chart-seq-2: var(--mf-chart-seq-2);
291
+ --color-chart-seq-3: var(--mf-chart-seq-3);
292
+ --color-chart-seq-4: var(--mf-chart-seq-4);
293
+ --color-chart-seq-5: var(--mf-chart-seq-5);
294
+ --color-chart-div-1: var(--mf-chart-div-1);
295
+ --color-chart-div-2: var(--mf-chart-div-2);
296
+ --color-chart-div-3: var(--mf-chart-div-3);
297
+ --color-chart-div-4: var(--mf-chart-div-4);
298
+ --color-chart-div-5: var(--mf-chart-div-5);
299
+
300
+ /* Metin */
301
+ --color-fg: var(--mf-fg);
302
+ --color-fg-muted: var(--mf-fg-muted);
303
+ --color-fg-subtle: var(--mf-fg-subtle);
304
+ --color-fg-on-accent: var(--mf-fg-on-accent);
305
+ --color-fg-inverse: var(--mf-fg-inverse);
306
+ /* Geriye dönük takma adlar — artık kendi X-fill-fg rolüne işaret ediyor (aşağıya bkz.), yeni kod bunları KULLANMAZ. */
307
+ --color-fg-on-success: var(--mf-fg-on-success);
308
+ --color-fg-on-warning: var(--mf-fg-on-warning);
309
+
310
+ /* Marka rolü (metin/kenarlık/ikon bağlamında) */
311
+ --color-accent: var(--mf-accent);
312
+ --color-accent-strong: var(--mf-accent-strong);
313
+ --color-focus-ring: var(--mf-focus-ring);
314
+ /*
315
+ * Dolu blok rolü — LIGHT'ta artık primary-900 (`#062c22`, spec'in "Forest
316
+ * Emerald" CTA'sı — kullanıcı kararı), DARK'ta primary-400 (`#10b981`,
317
+ * spec'in canlı zümrüt CTA'sı) + `--mf-fg-on-accent` DARK'ta mürekkep
318
+ * (beyaz metin `#10B981` üstünde 2.54:1, AA altı — kullanıcı kararı: canlı
319
+ * blok + koyu metin tercih edildi). `applyMfTheme({accent})` bu üç satırı
320
+ * da yazar (bkz. theming/apply.ts) — tüketici aksanının HER İKİ yarısı da
321
+ * ayrı ayrı `fgOnAccent()` ile hesaplanır.
322
+ */
323
+ --color-accent-fill: var(--mf-accent-fill);
324
+ --color-accent-fill-hover: var(--mf-accent-fill-hover);
325
+ /* Primary'nin KENDİ tonal işareti (Progress/Dropzone track, seçili satır/hücre vb.) — X-tint ile aynı desen. */
326
+ --color-primary-tint: var(--mf-primary-tint);
327
+ --color-primary-tint-fg: var(--mf-primary-tint-fg);
328
+
329
+ /* "Secondary" (spec) — nötr dolu buton/rozet zemini, `bg-surface-alt`'tan AYRI: spec'in kendi hex'leri, moda göre takas olur. */
330
+ --color-neutral-fill: var(--mf-neutral-fill);
331
+ --color-neutral-fill-hover: var(--mf-neutral-fill-hover);
332
+ --color-neutral-fill-fg: var(--mf-neutral-fill-fg);
333
+
334
+ /* Semantik beşli — success/warning/danger/info/help ortak deseni (üstteki doktrin yorumuna bkz.). */
335
+ --color-success-fill: var(--mf-success-fill);
336
+ --color-success-fill-hover: var(--mf-success-fill-hover);
337
+ --color-success-fill-fg: var(--mf-success-fill-fg);
338
+ --color-success-tint: var(--mf-success-tint);
339
+ --color-success-tint-fg: var(--mf-success-tint-fg);
340
+
341
+ --color-warning-fill: var(--mf-warning-fill);
342
+ --color-warning-fill-hover: var(--mf-warning-fill-hover);
343
+ --color-warning-fill-fg: var(--mf-warning-fill-fg);
344
+ --color-warning-tint: var(--mf-warning-tint);
345
+ --color-warning-tint-fg: var(--mf-warning-tint-fg);
346
+
347
+ --color-danger-fill: var(--mf-danger-fill);
348
+ --color-danger-fill-hover: var(--mf-danger-fill-hover);
349
+ --color-danger-fill-fg: var(--mf-danger-fill-fg);
350
+ --color-danger-tint: var(--mf-danger-tint);
351
+ --color-danger-tint-fg: var(--mf-danger-tint-fg);
352
+
353
+ --color-info-fill: var(--mf-info-fill);
354
+ --color-info-fill-hover: var(--mf-info-fill-hover);
355
+ --color-info-fill-fg: var(--mf-info-fill-fg);
356
+ --color-info-tint: var(--mf-info-tint);
357
+ --color-info-tint-fg: var(--mf-info-tint-fg);
358
+
359
+ --color-help-fill: var(--mf-help-fill);
360
+ --color-help-fill-hover: var(--mf-help-fill-hover);
361
+ --color-help-fill-fg: var(--mf-help-fill-fg);
362
+ --color-help-tint: var(--mf-help-tint);
363
+ --color-help-tint-fg: var(--mf-help-tint-fg);
364
+ }
365
+
366
+ @layer base {
367
+ /*
368
+ * `.light` — koyu sayfa içindeki açık ada (bkz. dosya başındaki
369
+ * `@custom-variant dark` notu). Ada kendi zeminini/metnini almak için
370
+ * `bg-canvas text-fg` (veya `bg-surface`) class'ını da taşımalı — değişkenler
371
+ * yeniden tanımlanır ama `body`'nin zemini adaya kendiliğinden inmez.
372
+ */
373
+ :root,
374
+ .light {
375
+ /*
376
+ * Native form kontrolleri (checkbox/radio/date input) ve scrollbar bu
377
+ * ipucu olmadan dark modda bile tarayıcının varsayılan (genelde beyaz/
378
+ * açık) chrome'unu çiziyordu — `accent-color` (Checkbox'ta zaten
379
+ * kullanılıyor) rengi belirler ama `color-scheme` alttaki tüm native UI
380
+ * kromunu moda uyduran asıl mekanizma.
381
+ */
382
+ color-scheme: light;
383
+
384
+ /* Native scrollbar (Firefox/Chromium standart özellikleri) — ince + rol token'ıyla tema-uyumlu, sistem varsayılanı yerine. */
385
+ scrollbar-width: thin;
386
+ scrollbar-color: var(--mf-border-strong) transparent;
387
+
388
+ --mf-canvas: var(--color-neutral-100);
389
+ --mf-surface: #ffffff;
390
+ --mf-surface-alt: var(--color-neutral-200);
391
+ --mf-chrome: #ffffff;
392
+ --mf-surface-sunken: var(--color-neutral-50);
393
+ --mf-surface-active: var(--color-neutral-300);
394
+ --mf-overlay: #ffffff;
395
+ /* Ters yüzey (tooltip vb.) — spec'in "Contrast/Inverse" çifti, literal. */
396
+ --mf-surface-inverse: #04110d;
397
+ /* Mikro glassmorphism — dialog/sheet/drawer/toast paneli + sabit üst çubuk; %82 opak beyaz, backdrop-blur ile birlikte kullanılır (bkz. core/recipes.ts glassSurface). */
398
+ --mf-glass: rgba(255, 255, 255, 0.82);
399
+
400
+ --mf-border-subtle: var(--color-neutral-200);
401
+ --mf-border: var(--color-neutral-300);
402
+ --mf-border-strong: var(--color-neutral-400);
403
+ /* Border-first depth — alfa marka-tonlu çizgi, gölge YERİNE kapsayıcı kenarlığı (bkz. elevation.css doktrin notu). rgba(11,61,36,.16) beyaz üstünde TAM spec'in `#D8E0DC`sine karışır. */
404
+ --mf-hairline: rgba(11, 61, 36, 0.16);
405
+
406
+ /* Durum katmanı — `--mf-fg` (#0a1c17) tabanlı alfa örtüler. */
407
+ --mf-state-hover: rgba(10, 28, 23, 0.05);
408
+ --mf-state-pressed: rgba(10, 28, 23, 0.09);
409
+ --mf-state-selected: rgba(10, 28, 23, 0.07);
410
+
411
+ /* Spec literalleri (Porselen zemin üstünde "mat baskı" hissi — nötr-600/900 basamağı yerine elle). */
412
+ --mf-fg: #0a1c17;
413
+ --mf-fg-muted: #4a5d56;
414
+ --mf-fg-subtle: var(--color-neutral-500);
415
+ --mf-fg-on-accent: #ffffff;
416
+ --mf-fg-inverse: #f8fafc;
417
+
418
+ --mf-accent: var(--color-primary-600);
419
+ --mf-accent-strong: var(--color-primary-700);
420
+ --mf-focus-ring: var(--color-primary-600);
421
+ /* Dolu blok — LIGHT'ta 900 (`#062c22`, beyaz metinle 15:1) — kullanıcı kararı, bkz. rol katmanı doktrin yorumu. Hover 700. */
422
+ --mf-accent-fill: var(--color-primary-900);
423
+ --mf-accent-fill-hover: var(--color-primary-700);
424
+ /* Primary'nin kendi tonal işareti — X-tint ile aynı `color-mix` deseni, çapa LIGHT'ta 600. */
425
+ --mf-primary-tint: color-mix(in srgb, var(--color-primary-600) 12%, transparent);
426
+ --mf-primary-tint-fg: var(--color-primary-800);
427
+
428
+ /* "Secondary" — spec'in kendi hex'leri (nötr rampadan BAĞIMSIZ, `bg-surface-alt`'la karıştırılmaz). */
429
+ --mf-neutral-fill: #e2e8e5;
430
+ --mf-neutral-fill-hover: #d1dcd7;
431
+ --mf-neutral-fill-fg: #1c2825;
432
+
433
+ /*
434
+ * Semantik metin/ikon rolü — success/warning/info 700 (600 beyaz/dolu
435
+ * blok üstünde AA'yı geçmiyor), danger/help 600 (spec'in Hex'i doğrudan
436
+ * yeterli).
437
+ */
438
+ --mf-success: var(--color-success-700);
439
+ --mf-warning: var(--color-warning-700);
440
+ --mf-danger: var(--color-danger-600);
441
+ --mf-info: var(--color-info-700);
442
+ --mf-help: var(--color-help-600);
443
+
444
+ /*
445
+ * Dolu blok beşlisi — danger/help/info "her zaman koyu/doygun blok +
446
+ * beyaz metin" (deep-fill mirası); success/warning "doğal olarak açık
447
+ * yaşayan" blok + HER ZAMAN mürekkep metin (bright-fill mirası, ama artık
448
+ * ayrı bir "tür" değil, sadece bu üç token'ın farklı değeri).
449
+ */
450
+ --mf-success-fill: var(--color-success-600);
451
+ --mf-success-fill-hover: var(--color-success-500);
452
+ --mf-success-fill-fg: #04110d;
453
+
454
+ --mf-warning-fill: var(--color-warning-600);
455
+ --mf-warning-fill-hover: var(--color-warning-500);
456
+ --mf-warning-fill-fg: #04110d;
457
+
458
+ --mf-danger-fill: var(--color-danger-600);
459
+ --mf-danger-fill-hover: var(--color-danger-700);
460
+ --mf-danger-fill-fg: #ffffff;
461
+
462
+ /* info 600 hem dolu blok hem metin olarak AA'yı geçmiyor (4.1:1) — fill de 700'e taşındı. */
463
+ --mf-info-fill: var(--color-info-700);
464
+ --mf-info-fill-hover: var(--color-info-800);
465
+ --mf-info-fill-fg: #ffffff;
466
+
467
+ --mf-help-fill: var(--color-help-600);
468
+ --mf-help-fill-hover: var(--color-help-700);
469
+ --mf-help-fill-fg: #ffffff;
470
+
471
+ /*
472
+ * Tonal işaret ("Soft Tinting", spec) — rampanın kendi LIGHT çapası
473
+ * (600) üstünde %12 alfa `color-mix`, metin rampanın 800 basamağı.
474
+ * Opaklık burada BİLİNÇLİ (eski "düz basamak çifti, opaklık DEĞİL"
475
+ * kuralının tersine çevrilmesi) — spec'in tekniği zaten budur, ve
476
+ * `color-mix` her zeminde (surface/canvas/overlay/surface-alt) ayrı ayrı
477
+ * karışıp `check:contrast`'ta dördü de doğrulanıyor.
478
+ */
479
+ --mf-success-tint: color-mix(in srgb, var(--color-success-600) 12%, transparent);
480
+ --mf-success-tint-fg: var(--color-success-800);
481
+ --mf-warning-tint: color-mix(in srgb, var(--color-warning-600) 12%, transparent);
482
+ --mf-warning-tint-fg: var(--color-warning-800);
483
+ --mf-danger-tint: color-mix(in srgb, var(--color-danger-600) 12%, transparent);
484
+ --mf-danger-tint-fg: var(--color-danger-800);
485
+ --mf-info-tint: color-mix(in srgb, var(--color-info-600) 12%, transparent);
486
+ --mf-info-tint-fg: var(--color-info-800);
487
+ --mf-help-tint: color-mix(in srgb, var(--color-help-600) 12%, transparent);
488
+ --mf-help-tint-fg: var(--color-help-800);
489
+
490
+ /* Geriye dönük takma adlar — yeni kod `success-fill-fg`/`warning-fill-fg` kullanır. */
491
+ --mf-fg-on-success: var(--mf-success-fill-fg);
492
+ --mf-fg-on-warning: var(--mf-warning-fill-fg);
493
+
494
+ /*
495
+ * Grafik — kategorik 8 slot (emerald · blue · orange · violet · lime ·
496
+ * sky · amber · pink). Sıra CVD güvenlik mekanizmasıdır, DEĞİŞTİRMEYİN:
497
+ * dataviz `validate_palette.js` ile #fff yüzeye karşı doğrulandı — bant
498
+ * L 0.43–0.77, kroma ≥0.10, en kötü KOMŞU CVD ΔE 13.8 (hedef ≥8), normal
499
+ * görüş ΔE 17.8 (taban ≥15), 8/8 ≥3:1. İlk 3 slot tüm-çiftler (saçılım/
500
+ * küçük çoklular) testini de geçer (ΔE 8.1) — o formlarda en fazla 3 seri.
501
+ * Slot değerleri ARAMAYLA seçildi (9 aday aileden, geçen 632 sıralama
502
+ * arasından en yüksek komşu ayrımı) — elle "güzelleştirmeyin", yeniden
503
+ * doğrulayın. Tema motoru `roles.light['chart-N']` ile ezebilir.
504
+ */
505
+ --mf-chart-1: #078968;
506
+ --mf-chart-2: #3370c7;
507
+ --mf-chart-3: #c85c2e;
508
+ --mf-chart-4: #7a53b4;
509
+ --mf-chart-5: #6f8d2a;
510
+ --mf-chart-6: #068db6;
511
+ --mf-chart-7: #b87501;
512
+ --mf-chart-8: #bb4e7f;
513
+ /* "Diğer" — 9. ve sonraki seriler buraya katlanır. Renksiz olduğu için geri planda okunur; 500 canvas üstünde 2.91:1 kalıyordu, 600 ≥3:1. */
514
+ --mf-chart-other: var(--color-neutral-600);
515
+ /* Sıralı — zümrüt, açık→koyu; 2-5 ordinal kullanımda da (≥2:1) geçer, 1 "sıfıra yakın" olarak zemine çekilebilir. */
516
+ --mf-chart-seq-1: #bfe9d8;
517
+ --mf-chart-seq-2: #75c4a6;
518
+ --mf-chart-seq-3: #2fa984;
519
+ --mf-chart-seq-4: #068262;
520
+ --mf-chart-seq-5: #035b44;
521
+ /* Iraksak — 1-2 turuncu kol, 3 nötr orta nokta (renk YOK), 4-5 mavi kol. */
522
+ --mf-chart-div-1: #ac430e;
523
+ --mf-chart-div-2: #dda189;
524
+ --mf-chart-div-3: var(--color-neutral-200);
525
+ --mf-chart-div-4: #96b3de;
526
+ --mf-chart-div-5: #2460b7;
527
+ }
528
+
529
+ /*
530
+ * Dark modda "chrome en koyu, içerik daha açık" kuralı (975 → 950 → 900
531
+ * → 850, dört gerçek kademe). Gölgeler neredeyse kısılıyor — derinlik
532
+ * artık kademe FARKINDAN geliyor, ışıktan değil.
533
+ */
534
+ .dark {
535
+ color-scheme: dark;
536
+
537
+ --mf-canvas: var(--color-neutral-950);
538
+ --mf-surface: var(--color-neutral-900);
539
+ --mf-surface-alt: var(--color-neutral-850);
540
+ --mf-chrome: var(--color-neutral-975);
541
+ --mf-surface-sunken: var(--color-neutral-950);
542
+ --mf-surface-active: var(--color-neutral-800);
543
+ --mf-overlay: var(--color-neutral-850);
544
+ --mf-surface-inverse: #f8fafc;
545
+ /* Retinted — yeni surface-900 (`#121e1b`) tabanlı %78 opak zümrüt-siyah. */
546
+ --mf-glass: rgba(18, 30, 27, 0.78);
547
+
548
+ --mf-border-subtle: var(--color-neutral-900);
549
+ --mf-border: var(--color-neutral-800);
550
+ --mf-border-strong: var(--color-neutral-700);
551
+ /* rgba(103,145,132,.2) yeni surface-900 (`#121e1b`) üstünde TAM spec'in `#233530`sine karışır. */
552
+ --mf-hairline: rgba(103, 145, 132, 0.2);
553
+
554
+ /* Durum katmanı — `--mf-fg` (#ecf3f0) tabanlı; koyu zeminde aynı algısal ağırlık için alfa bir tık yüksek. */
555
+ --mf-state-hover: rgba(236, 243, 240, 0.06);
556
+ --mf-state-pressed: rgba(236, 243, 240, 0.11);
557
+ --mf-state-selected: rgba(236, 243, 240, 0.08);
558
+
559
+ --mf-fg: #ecf3f0;
560
+ --mf-fg-muted: #8a9e97;
561
+ /*
562
+ * neutral-500 (light'takiyle aynı basamak) koyu zeminde fazla parlak/
563
+ * okunaklı kalıyordu — placeholder gibi "en düşük vurgulu" metnin dark
564
+ * modda görsel ağırlığı korunsun diye bir basamak koyulaştırıldı.
565
+ */
566
+ --mf-fg-subtle: var(--color-neutral-600);
567
+ /* Dolu blok DARK'ta beyaz DEĞİL mürekkep (`#04110D`) — primary-400 (`#10B981`) üstünde beyaz sadece 2.54:1 (AA altı), kullanıcı kararı. */
568
+ --mf-fg-on-accent: #04110d;
569
+ --mf-fg-inverse: #04110d;
570
+
571
+ --mf-accent: var(--color-primary-400);
572
+ --mf-accent-strong: var(--color-primary-300);
573
+ --mf-focus-ring: var(--color-primary-400);
574
+ /* Dolu blok — DARK'ta primary-400 (`#10b981`, spec'in canlı zümrüt CTA'sı), hover 500. */
575
+ --mf-accent-fill: var(--color-primary-400);
576
+ --mf-accent-fill-hover: var(--color-primary-500);
577
+ /* Tint çapası DARK'ta 400 (mod-takaslı — spec'in dark Hex'i). */
578
+ --mf-primary-tint: color-mix(in srgb, var(--color-primary-400) 12%, transparent);
579
+ --mf-primary-tint-fg: var(--color-primary-400);
580
+
581
+ --mf-neutral-fill: #526660;
582
+ --mf-neutral-fill-hover: #637b74;
583
+ --mf-neutral-fill-fg: #ffffff;
584
+
585
+ /* Dark'ta beş rampa da AYNI basamakta metin/ikon: 400. */
586
+ --mf-success: var(--color-success-400);
587
+ --mf-warning: var(--color-warning-400);
588
+ --mf-danger: var(--color-danger-400);
589
+ --mf-info: var(--color-info-400);
590
+ --mf-help: var(--color-help-400);
591
+
592
+ /*
593
+ * Dolu blok beşlisi DARK'ta hepsi AYNI desende: 400 zemin + 500 hover +
594
+ * mürekkep metin — spec'in beş rengi de (`#10B981`/`#34D399`/`#F59E0B`/
595
+ * `#E57373`/`#38BDF8`/`#A78BFA`) beyaz metinle AA'yı geçmiyor (1.9–3.0:1).
596
+ */
597
+ --mf-success-fill: var(--color-success-400);
598
+ --mf-success-fill-hover: var(--color-success-500);
599
+ --mf-success-fill-fg: #04110d;
600
+
601
+ --mf-warning-fill: var(--color-warning-400);
602
+ --mf-warning-fill-hover: var(--color-warning-500);
603
+ --mf-warning-fill-fg: #04110d;
604
+
605
+ --mf-danger-fill: var(--color-danger-400);
606
+ --mf-danger-fill-hover: var(--color-danger-500);
607
+ --mf-danger-fill-fg: #04110d;
608
+
609
+ --mf-info-fill: var(--color-info-400);
610
+ --mf-info-fill-hover: var(--color-info-500);
611
+ --mf-info-fill-fg: #04110d;
612
+
613
+ --mf-help-fill: var(--color-help-400);
614
+ --mf-help-fill-hover: var(--color-help-500);
615
+ --mf-help-fill-fg: #04110d;
616
+
617
+ /* Tonal işaret DARK'ta çapa 400 (spec'in dark Hex'i), metin de 400 (zeminle aynı basamak — "Parlak mat metin" spec tarifi). */
618
+ --mf-success-tint: color-mix(in srgb, var(--color-success-400) 12%, transparent);
619
+ --mf-success-tint-fg: var(--color-success-400);
620
+ --mf-warning-tint: color-mix(in srgb, var(--color-warning-400) 12%, transparent);
621
+ --mf-warning-tint-fg: var(--color-warning-400);
622
+ --mf-danger-tint: color-mix(in srgb, var(--color-danger-400) 12%, transparent);
623
+ --mf-danger-tint-fg: var(--color-danger-400);
624
+ --mf-info-tint: color-mix(in srgb, var(--color-info-400) 12%, transparent);
625
+ --mf-info-tint-fg: var(--color-info-400);
626
+ --mf-help-tint: color-mix(in srgb, var(--color-help-400) 12%, transparent);
627
+ --mf-help-tint-fg: var(--color-help-400);
628
+
629
+ --mf-fg-on-success: var(--mf-success-fill-fg);
630
+ --mf-fg-on-warning: var(--mf-warning-fill-fg);
631
+
632
+ /* Grafik — AYNI 8 hue, koyu yüzey (#121e1b) için ayrı seçilmiş basamaklar: bant L 0.48–0.67, komşu CVD ΔE 13.6, normal 17.6, 8/8 ≥3:1, ilk 3 tüm-çiftler ΔE 9.3. */
633
+ --mf-chart-1: #15ab83;
634
+ --mf-chart-2: #4e8ce6;
635
+ --mf-chart-3: #dc6e41;
636
+ --mf-chart-4: #9b74d9;
637
+ --mf-chart-5: #80a03e;
638
+ --mf-chart-6: #24a0cc;
639
+ --mf-chart-7: #c8800d;
640
+ --mf-chart-8: #d76797;
641
+ --mf-chart-other: var(--color-neutral-600);
642
+ /* Sıralı — dark'ta çapa ters: düşük değer zemine yakın koyu, yüksek değer parlak. */
643
+ --mf-chart-seq-1: #0f4232;
644
+ --mf-chart-seq-2: #04654c;
645
+ --mf-chart-seq-3: #078968;
646
+ --mf-chart-seq-4: #37b08a;
647
+ --mf-chart-seq-5: #81d1b3;
648
+ --mf-chart-div-1: #dc6e41;
649
+ --mf-chart-div-2: #7d4833;
650
+ --mf-chart-div-3: #2b3d38;
651
+ --mf-chart-div-4: #3f597f;
652
+ --mf-chart-div-5: #5992e7;
653
+ }
654
+
655
+ /*
656
+ * Marka rengiyle tutarlı metin seçimi (varsayılan mavi tarayıcı vurgusu
657
+ * yerine) — düz rampa basamağı (badge/avatar/ray ile aynı "kalıcı tonal
658
+ * işaret" dili, opaklık DEĞİL): seçim her zeminde garantili kontrastlı.
659
+ */
660
+ ::selection {
661
+ background-color: var(--color-primary-200);
662
+ color: var(--color-primary-950);
663
+ }
664
+
665
+ .dark ::selection {
666
+ background-color: var(--color-primary-800);
667
+ color: var(--color-primary-50);
668
+ }
669
+
670
+ .dark .light ::selection {
671
+ background-color: var(--color-primary-200);
672
+ color: var(--color-primary-950);
673
+ }
674
+
675
+ /*
676
+ * Geniş gam (Display P3) — zümrüt, sRGB'nin en çok kırptığı renk ailesi.
677
+ * P3 ekranlarda markanın canlı basamakları (dark modun dolu bloğu/metni ve
678
+ * glow) AYNI OKLCH açıklığında, daha yüksek kromayla çizilir. L sabit
679
+ * tutulduğu için kontrast korunur; hesap sRGB hex'lerinin kontrastıyla
680
+ * karşılaştırılarak doğrulandı: mürekkep üstünde 7.59→7.75, 5.11→5.21,
681
+ * 9.90→10.16 (artış, düşüş yok). Kroma, P3 gam sınırının %85'inde tutuldu.
682
+ * `check:contrast` sRGB hex'lerini doğrular — bu blok yalnızca
683
+ * kontrastı ARTIRAN bir üst katman. `applyMfTheme({accent})` inline style
684
+ * yazdığı için tüketici markası bu bloğu her zaman ezer.
685
+ */
686
+ @media (color-gamut: p3) {
687
+ :root {
688
+ --color-primary-400: oklch(69.6% 0.198 162.5);
689
+ --color-primary-500: oklch(59.6% 0.169 163.2);
690
+ --color-success-400: oklch(77.2% 0.23 148);
691
+ }
692
+ }
693
+ }