@jjlmoya/utils-developer 1.2.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 (228) hide show
  1. package/package.json +64 -0
  2. package/src/category/i18n/en.ts +34 -0
  3. package/src/category/i18n/es.ts +34 -0
  4. package/src/category/i18n/fr.ts +34 -0
  5. package/src/category/index.ts +31 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +11 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +78 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/css_specificity_logic.test.ts +39 -0
  17. package/src/tests/faq_count.test.ts +19 -0
  18. package/src/tests/locale_completeness.test.ts +42 -0
  19. package/src/tests/mocks/astro_mock.js +2 -0
  20. package/src/tests/no_h1_in_components.test.ts +48 -0
  21. package/src/tests/schemas_fulfillment.test.ts +23 -0
  22. package/src/tests/seo_length.test.ts +22 -0
  23. package/src/tests/title_quality.test.ts +55 -0
  24. package/src/tests/tool_validation.test.ts +17 -0
  25. package/src/tool/aspectRatio/bibliography.astro +14 -0
  26. package/src/tool/aspectRatio/component.astro +468 -0
  27. package/src/tool/aspectRatio/i18n/en.ts +177 -0
  28. package/src/tool/aspectRatio/i18n/es.ts +177 -0
  29. package/src/tool/aspectRatio/i18n/fr.ts +177 -0
  30. package/src/tool/aspectRatio/index.ts +34 -0
  31. package/src/tool/aspectRatio/seo.astro +14 -0
  32. package/src/tool/aspectRatio/ui.ts +12 -0
  33. package/src/tool/calculadoraTiempoDatos/bibliography.astro +14 -0
  34. package/src/tool/calculadoraTiempoDatos/component.astro +829 -0
  35. package/src/tool/calculadoraTiempoDatos/i18n/en.ts +150 -0
  36. package/src/tool/calculadoraTiempoDatos/i18n/es.ts +163 -0
  37. package/src/tool/calculadoraTiempoDatos/i18n/fr.ts +150 -0
  38. package/src/tool/calculadoraTiempoDatos/index.ts +33 -0
  39. package/src/tool/calculadoraTiempoDatos/seo.astro +14 -0
  40. package/src/tool/calculadoraTiempoDatos/ui.ts +24 -0
  41. package/src/tool/colorConverter/bibliography.astro +14 -0
  42. package/src/tool/colorConverter/component.astro +504 -0
  43. package/src/tool/colorConverter/i18n/en.ts +126 -0
  44. package/src/tool/colorConverter/i18n/es.ts +126 -0
  45. package/src/tool/colorConverter/i18n/fr.ts +126 -0
  46. package/src/tool/colorConverter/index.ts +33 -0
  47. package/src/tool/colorConverter/seo.astro +14 -0
  48. package/src/tool/colorConverter/ui.ts +16 -0
  49. package/src/tool/conversorExcelCsvHtml/bibliography.astro +14 -0
  50. package/src/tool/conversorExcelCsvHtml/component.astro +595 -0
  51. package/src/tool/conversorExcelCsvHtml/i18n/en.ts +129 -0
  52. package/src/tool/conversorExcelCsvHtml/i18n/es.ts +129 -0
  53. package/src/tool/conversorExcelCsvHtml/i18n/fr.ts +129 -0
  54. package/src/tool/conversorExcelCsvHtml/index.ts +33 -0
  55. package/src/tool/conversorExcelCsvHtml/seo.astro +14 -0
  56. package/src/tool/conversorExcelCsvHtml/ui.ts +14 -0
  57. package/src/tool/cronGenerator/bibliography.astro +14 -0
  58. package/src/tool/cronGenerator/component.astro +667 -0
  59. package/src/tool/cronGenerator/i18n/en.ts +191 -0
  60. package/src/tool/cronGenerator/i18n/es.ts +191 -0
  61. package/src/tool/cronGenerator/i18n/fr.ts +191 -0
  62. package/src/tool/cronGenerator/index.ts +34 -0
  63. package/src/tool/cronGenerator/seo.astro +14 -0
  64. package/src/tool/cronGenerator/ui.ts +45 -0
  65. package/src/tool/cssSpecificityCalculator/bibliography.astro +14 -0
  66. package/src/tool/cssSpecificityCalculator/component.astro +292 -0
  67. package/src/tool/cssSpecificityCalculator/i18n/en.ts +168 -0
  68. package/src/tool/cssSpecificityCalculator/i18n/es.ts +168 -0
  69. package/src/tool/cssSpecificityCalculator/i18n/fr.ts +168 -0
  70. package/src/tool/cssSpecificityCalculator/index.ts +34 -0
  71. package/src/tool/cssSpecificityCalculator/logic.ts +100 -0
  72. package/src/tool/cssSpecificityCalculator/seo.astro +14 -0
  73. package/src/tool/cssSpecificityCalculator/ui-controller.ts +57 -0
  74. package/src/tool/cssSpecificityCalculator/ui.ts +11 -0
  75. package/src/tool/cssToInlineConverter/bibliography.astro +14 -0
  76. package/src/tool/cssToInlineConverter/component.astro +308 -0
  77. package/src/tool/cssToInlineConverter/i18n/en.ts +160 -0
  78. package/src/tool/cssToInlineConverter/i18n/es.ts +160 -0
  79. package/src/tool/cssToInlineConverter/i18n/fr.ts +160 -0
  80. package/src/tool/cssToInlineConverter/index.ts +34 -0
  81. package/src/tool/cssToInlineConverter/seo.astro +14 -0
  82. package/src/tool/cssToInlineConverter/ui.ts +12 -0
  83. package/src/tool/duplicateCssRemover/bibliography.astro +14 -0
  84. package/src/tool/duplicateCssRemover/component.astro +353 -0
  85. package/src/tool/duplicateCssRemover/i18n/en.ts +167 -0
  86. package/src/tool/duplicateCssRemover/i18n/es.ts +167 -0
  87. package/src/tool/duplicateCssRemover/i18n/fr.ts +167 -0
  88. package/src/tool/duplicateCssRemover/index.ts +34 -0
  89. package/src/tool/duplicateCssRemover/seo.astro +14 -0
  90. package/src/tool/duplicateCssRemover/ui.ts +12 -0
  91. package/src/tool/generadorSecurityTxt/bibliography.astro +14 -0
  92. package/src/tool/generadorSecurityTxt/component.astro +473 -0
  93. package/src/tool/generadorSecurityTxt/i18n/en.ts +173 -0
  94. package/src/tool/generadorSecurityTxt/i18n/es.ts +173 -0
  95. package/src/tool/generadorSecurityTxt/i18n/fr.ts +173 -0
  96. package/src/tool/generadorSecurityTxt/index.ts +33 -0
  97. package/src/tool/generadorSecurityTxt/seo.astro +14 -0
  98. package/src/tool/generadorSecurityTxt/ui.ts +27 -0
  99. package/src/tool/hashGenerator/bibliography.astro +14 -0
  100. package/src/tool/hashGenerator/component.astro +367 -0
  101. package/src/tool/hashGenerator/i18n/en.ts +118 -0
  102. package/src/tool/hashGenerator/i18n/es.ts +118 -0
  103. package/src/tool/hashGenerator/i18n/fr.ts +118 -0
  104. package/src/tool/hashGenerator/index.ts +33 -0
  105. package/src/tool/hashGenerator/md5.ts +138 -0
  106. package/src/tool/hashGenerator/seo.astro +14 -0
  107. package/src/tool/hashGenerator/ui.ts +11 -0
  108. package/src/tool/inspectorCertificadosSsl/bibliography.astro +14 -0
  109. package/src/tool/inspectorCertificadosSsl/component.astro +580 -0
  110. package/src/tool/inspectorCertificadosSsl/i18n/en.ts +214 -0
  111. package/src/tool/inspectorCertificadosSsl/i18n/es.ts +214 -0
  112. package/src/tool/inspectorCertificadosSsl/i18n/fr.ts +214 -0
  113. package/src/tool/inspectorCertificadosSsl/index.ts +33 -0
  114. package/src/tool/inspectorCertificadosSsl/seo.astro +14 -0
  115. package/src/tool/inspectorCertificadosSsl/ui.ts +29 -0
  116. package/src/tool/jsonFormatter/bibliography.astro +14 -0
  117. package/src/tool/jsonFormatter/component.astro +590 -0
  118. package/src/tool/jsonFormatter/i18n/en.ts +156 -0
  119. package/src/tool/jsonFormatter/i18n/es.ts +156 -0
  120. package/src/tool/jsonFormatter/i18n/fr.ts +156 -0
  121. package/src/tool/jsonFormatter/index.ts +34 -0
  122. package/src/tool/jsonFormatter/seo.astro +14 -0
  123. package/src/tool/jsonFormatter/ui.ts +15 -0
  124. package/src/tool/keycode/bibliography.astro +14 -0
  125. package/src/tool/keycode/component.astro +540 -0
  126. package/src/tool/keycode/i18n/en.ts +160 -0
  127. package/src/tool/keycode/i18n/es.ts +160 -0
  128. package/src/tool/keycode/i18n/fr.ts +160 -0
  129. package/src/tool/keycode/index.ts +34 -0
  130. package/src/tool/keycode/seo.astro +14 -0
  131. package/src/tool/keycode/ui.ts +10 -0
  132. package/src/tool/llmCostCalculator/bibliography.astro +14 -0
  133. package/src/tool/llmCostCalculator/component.astro +488 -0
  134. package/src/tool/llmCostCalculator/data.ts +99 -0
  135. package/src/tool/llmCostCalculator/i18n/en.ts +165 -0
  136. package/src/tool/llmCostCalculator/i18n/es.ts +165 -0
  137. package/src/tool/llmCostCalculator/i18n/fr.ts +165 -0
  138. package/src/tool/llmCostCalculator/index.ts +34 -0
  139. package/src/tool/llmCostCalculator/seo.astro +14 -0
  140. package/src/tool/llmCostCalculator/ui.ts +11 -0
  141. package/src/tool/mobileMockupGenerator/app.ts +614 -0
  142. package/src/tool/mobileMockupGenerator/bibliography.astro +14 -0
  143. package/src/tool/mobileMockupGenerator/component.astro +1044 -0
  144. package/src/tool/mobileMockupGenerator/constants.ts +48 -0
  145. package/src/tool/mobileMockupGenerator/i18n/en.ts +121 -0
  146. package/src/tool/mobileMockupGenerator/i18n/es.ts +121 -0
  147. package/src/tool/mobileMockupGenerator/i18n/fr.ts +121 -0
  148. package/src/tool/mobileMockupGenerator/index.ts +33 -0
  149. package/src/tool/mobileMockupGenerator/rendering.ts +189 -0
  150. package/src/tool/mobileMockupGenerator/seo.astro +14 -0
  151. package/src/tool/mobileMockupGenerator/store.ts +145 -0
  152. package/src/tool/mobileMockupGenerator/types.ts +41 -0
  153. package/src/tool/mobileMockupGenerator/ui.ts +48 -0
  154. package/src/tool/musicalTypography/bibliography.astro +14 -0
  155. package/src/tool/musicalTypography/component.astro +480 -0
  156. package/src/tool/musicalTypography/i18n/en.ts +179 -0
  157. package/src/tool/musicalTypography/i18n/es.ts +179 -0
  158. package/src/tool/musicalTypography/i18n/fr.ts +179 -0
  159. package/src/tool/musicalTypography/index.ts +33 -0
  160. package/src/tool/musicalTypography/seo.astro +14 -0
  161. package/src/tool/musicalTypography/ui.ts +25 -0
  162. package/src/tool/placeholderGenerator/bibliography.astro +14 -0
  163. package/src/tool/placeholderGenerator/component.astro +499 -0
  164. package/src/tool/placeholderGenerator/i18n/en.ts +176 -0
  165. package/src/tool/placeholderGenerator/i18n/es.ts +176 -0
  166. package/src/tool/placeholderGenerator/i18n/fr.ts +176 -0
  167. package/src/tool/placeholderGenerator/index.ts +34 -0
  168. package/src/tool/placeholderGenerator/seo.astro +14 -0
  169. package/src/tool/placeholderGenerator/ui.ts +14 -0
  170. package/src/tool/promptLibrary/bibliography.astro +14 -0
  171. package/src/tool/promptLibrary/component.astro +1131 -0
  172. package/src/tool/promptLibrary/controller.ts +49 -0
  173. package/src/tool/promptLibrary/i18n/en.ts +131 -0
  174. package/src/tool/promptLibrary/i18n/es.ts +131 -0
  175. package/src/tool/promptLibrary/i18n/fr.ts +126 -0
  176. package/src/tool/promptLibrary/index.ts +33 -0
  177. package/src/tool/promptLibrary/seo.astro +14 -0
  178. package/src/tool/promptLibrary/ui.ts +29 -0
  179. package/src/tool/readabilityCalculator/bibliography.astro +14 -0
  180. package/src/tool/readabilityCalculator/component.astro +534 -0
  181. package/src/tool/readabilityCalculator/i18n/en.ts +133 -0
  182. package/src/tool/readabilityCalculator/i18n/es.ts +133 -0
  183. package/src/tool/readabilityCalculator/i18n/fr.ts +133 -0
  184. package/src/tool/readabilityCalculator/index.ts +33 -0
  185. package/src/tool/readabilityCalculator/seo.astro +14 -0
  186. package/src/tool/readabilityCalculator/ui.ts +27 -0
  187. package/src/tool/svgSanitizer/bibliography.astro +14 -0
  188. package/src/tool/svgSanitizer/component.astro +554 -0
  189. package/src/tool/svgSanitizer/i18n/en.ts +125 -0
  190. package/src/tool/svgSanitizer/i18n/es.ts +125 -0
  191. package/src/tool/svgSanitizer/i18n/fr.ts +125 -0
  192. package/src/tool/svgSanitizer/index.ts +33 -0
  193. package/src/tool/svgSanitizer/seo.astro +14 -0
  194. package/src/tool/svgSanitizer/ui.ts +18 -0
  195. package/src/tool/svgToCss/bibliography.astro +14 -0
  196. package/src/tool/svgToCss/component.astro +381 -0
  197. package/src/tool/svgToCss/i18n/en.ts +174 -0
  198. package/src/tool/svgToCss/i18n/es.ts +174 -0
  199. package/src/tool/svgToCss/i18n/fr.ts +174 -0
  200. package/src/tool/svgToCss/index.ts +34 -0
  201. package/src/tool/svgToCss/seo.astro +14 -0
  202. package/src/tool/svgToCss/ui.ts +13 -0
  203. package/src/tool/urlCleaner/bibliography.astro +14 -0
  204. package/src/tool/urlCleaner/component.astro +458 -0
  205. package/src/tool/urlCleaner/i18n/en.ts +116 -0
  206. package/src/tool/urlCleaner/i18n/es.ts +116 -0
  207. package/src/tool/urlCleaner/i18n/fr.ts +116 -0
  208. package/src/tool/urlCleaner/index.ts +33 -0
  209. package/src/tool/urlCleaner/seo.astro +14 -0
  210. package/src/tool/urlCleaner/ui.ts +12 -0
  211. package/src/tool/urlEncoderDecoder/bibliography.astro +14 -0
  212. package/src/tool/urlEncoderDecoder/component.astro +291 -0
  213. package/src/tool/urlEncoderDecoder/i18n/en.ts +162 -0
  214. package/src/tool/urlEncoderDecoder/i18n/es.ts +162 -0
  215. package/src/tool/urlEncoderDecoder/i18n/fr.ts +162 -0
  216. package/src/tool/urlEncoderDecoder/index.ts +34 -0
  217. package/src/tool/urlEncoderDecoder/seo.astro +14 -0
  218. package/src/tool/urlEncoderDecoder/ui.ts +11 -0
  219. package/src/tool/utmGenerator/bibliography.astro +14 -0
  220. package/src/tool/utmGenerator/component.astro +270 -0
  221. package/src/tool/utmGenerator/i18n/en.ts +117 -0
  222. package/src/tool/utmGenerator/i18n/es.ts +117 -0
  223. package/src/tool/utmGenerator/i18n/fr.ts +117 -0
  224. package/src/tool/utmGenerator/index.ts +33 -0
  225. package/src/tool/utmGenerator/seo.astro +14 -0
  226. package/src/tool/utmGenerator/ui.ts +13 -0
  227. package/src/tools.ts +27 -0
  228. package/src/types.ts +72 -0
@@ -0,0 +1,1044 @@
1
+ ---
2
+ import { Icon } from 'astro-icon/components';
3
+ import type { KnownLocale } from '../../types';
4
+ import type { MobileMockupGeneratorUI } from './ui';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ ui?: Record<string, unknown>;
9
+ }
10
+
11
+ const { ui } = Astro.props;
12
+ const t = (ui ?? {}) as MobileMockupGeneratorUI;
13
+ ---
14
+
15
+ <div id="mmg-root" data-i18n={JSON.stringify(t)} class="mmg-root">
16
+ <div class="mmg-top-bar">
17
+ <div class="mmg-top-actions">
18
+ <button id="mmg-clear" style="display:none" class="mmg-btn-clear">
19
+ <Icon name="mdi:trash-can-outline" class="mmg-btn-icon" />
20
+ {t.btnClearAll}
21
+ </button>
22
+ <button id="mmg-download" style="display:none" class="mmg-btn-download">
23
+ <Icon name="mdi:cloud-download" class="mmg-btn-icon" />
24
+ {t.btnExport}
25
+ </button>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="mmg-layout">
30
+ <div class="mmg-panel">
31
+ <div class="mmg-card">
32
+ <h3 class="mmg-card-title">
33
+ <Icon name="mdi:image-plus" class="mmg-card-icon" />
34
+ {t.labelUpload}
35
+ </h3>
36
+ <div class="mmg-drop-zone">
37
+ <input type="file" id="mmg-upload" accept="image/*" multiple class="mmg-file-input" />
38
+ <input type="file" id="mmg-replace" style="display:none" accept="image/*" />
39
+ <input type="file" id="mmg-mass-input" style="display:none" accept="image/*" multiple />
40
+ <Icon name="mdi:cloud-upload" class="mmg-drop-icon" />
41
+ <p class="mmg-drop-hint">{t.dropHint}</p>
42
+ <p class="mmg-drop-formats">{t.dropFormats}</p>
43
+ </div>
44
+ <div class="mmg-mass-section">
45
+ <button id="mmg-mass-btn" class="mmg-btn-mass">
46
+ <Icon name="mdi:layers-triple-outline" class="mmg-btn-icon" />
47
+ {t.btnMassReplace}
48
+ </button>
49
+ <p class="mmg-mass-hint">{t.massReplaceHint}</p>
50
+ </div>
51
+ </div>
52
+
53
+ <div class="mmg-card mmg-settings-card">
54
+ <h3 class="mmg-card-title">
55
+ <Icon name="mdi:cog" class="mmg-card-icon" />
56
+ {t.labelSettings}
57
+ </h3>
58
+
59
+ <div class="mmg-config-section">
60
+ <label class="mmg-config-label">{t.labelDevice}</label>
61
+ <div class="mmg-device-grid">
62
+ <button class="mmg-device-btn mmg-device-active" data-device="iphone">
63
+ <Icon name="mdi:apple" class="mmg-device-icon" />
64
+ <span>iPhone</span>
65
+ </button>
66
+ <button class="mmg-device-btn" data-device="pixel">
67
+ <Icon name="mdi:android" class="mmg-device-icon" />
68
+ <span>Pixel</span>
69
+ </button>
70
+ </div>
71
+ </div>
72
+
73
+ <div class="mmg-config-section">
74
+ <label class="mmg-config-label" for="mmg-font">{t.labelFont}</label>
75
+ <select id="mmg-font" class="mmg-select">
76
+ <option value="Inter">Inter</option>
77
+ <option value="Outfit">Outfit</option>
78
+ <option value="Poppins">Poppins</option>
79
+ <option value="Montserrat">Montserrat</option>
80
+ <option value="Playfair Display">Playfair Display</option>
81
+ </select>
82
+ </div>
83
+
84
+ <div class="mmg-config-section">
85
+ <div class="mmg-config-row">
86
+ <label class="mmg-config-label">{t.labelBackground}</label>
87
+ <button id="mmg-swap-colors" class="mmg-swap-btn" title={t.titleSwapColors}>
88
+ <Icon name="mdi:swap-horizontal" class="mmg-swap-icon" />
89
+ </button>
90
+ </div>
91
+ <div id="mmg-presets" class="mmg-presets-row"></div>
92
+ <div class="mmg-gradient-inputs">
93
+ <input type="color" id="mmg-grad-start" value="#6366f1" class="mmg-color-picker" />
94
+ <Icon name="mdi:arrow-right" class="mmg-arrow-icon" />
95
+ <input type="color" id="mmg-grad-end" value="#a855f7" class="mmg-color-picker" />
96
+ </div>
97
+ <div class="mmg-angle-section">
98
+ <div class="mmg-angle-row">
99
+ <span>{t.labelAngle}</span>
100
+ <span id="mmg-angle-val">135&deg;</span>
101
+ </div>
102
+ <input type="range" id="mmg-grad-angle" min="0" max="360" value="135" class="mmg-range" />
103
+ </div>
104
+ </div>
105
+
106
+ <div class="mmg-config-section mmg-safe-section">
107
+ <div class="mmg-config-row">
108
+ <label class="mmg-config-label">{t.labelSafeArea}</label>
109
+ <button id="mmg-safe-toggle" class="mmg-toggle">
110
+ <div id="mmg-safe-dot" class="mmg-toggle-dot"></div>
111
+ </button>
112
+ </div>
113
+ <div class="mmg-safe-color-row">
114
+ <input type="color" id="mmg-safe-color" value="#000000" class="mmg-color-picker-sm" />
115
+ <span class="mmg-safe-color-label">{t.labelSafeAreaColor}</span>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+
121
+ <div class="mmg-preview-area">
122
+ <div id="mmg-empty" class="mmg-empty">
123
+ <div class="mmg-empty-icon-wrap">
124
+ <Icon name="mdi:image-multiple" class="mmg-empty-icon-svg" />
125
+ </div>
126
+ <h3 class="mmg-empty-title">{t.emptyTitle}</h3>
127
+ <p class="mmg-empty-subtitle">{t.emptySubtitle}</p>
128
+ </div>
129
+ <div id="mmg-grid" style="display:none" class="mmg-preview-grid"></div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+
134
+ <script>
135
+ import { App } from './app';
136
+ new App();
137
+ </script>
138
+
139
+ <style>
140
+ .mmg-root {
141
+ width: 100%;
142
+ }
143
+
144
+ .mmg-top-bar {
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: flex-end;
148
+ gap: 1.5rem;
149
+ margin-bottom: 3rem;
150
+ }
151
+
152
+ .mmg-top-actions {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 0.5rem;
156
+ }
157
+
158
+ .mmg-btn-icon {
159
+ width: 1.25rem;
160
+ height: 1.25rem;
161
+ }
162
+
163
+ .mmg-btn-clear {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 0.5rem;
167
+ padding: 0.75rem 1.5rem;
168
+ font-size: 0.875rem;
169
+ font-weight: 700;
170
+ color: rgb(100, 116, 139);
171
+ background: #fff;
172
+ border: 1px solid rgb(226, 232, 240);
173
+ border-radius: 1rem;
174
+ cursor: pointer;
175
+ transition: all 0.2s;
176
+ }
177
+
178
+ .mmg-btn-clear:hover {
179
+ color: rgb(220, 38, 38);
180
+ border-color: rgb(254, 202, 202);
181
+ }
182
+
183
+ :global(.theme-dark) .mmg-btn-clear {
184
+ background: rgb(15, 23, 42);
185
+ border-color: rgb(30, 41, 59);
186
+ color: rgb(148, 163, 184);
187
+ }
188
+
189
+ .mmg-btn-download {
190
+ display: flex;
191
+ align-items: center;
192
+ gap: 0.75rem;
193
+ padding: 0.875rem 2rem;
194
+ font-size: 0.875rem;
195
+ font-weight: 900;
196
+ color: #fff;
197
+ background: rgb(15, 23, 42);
198
+ border: none;
199
+ border-radius: 1rem;
200
+ cursor: pointer;
201
+ transition: all 0.2s;
202
+ box-shadow: 0 10px 15px -3px rgba(99, 102, 241, 0.2);
203
+ }
204
+
205
+ .mmg-btn-download:hover {
206
+ box-shadow: 0 10px 15px -3px rgba(99, 102, 241, 0.4);
207
+ transform: translateY(-1px);
208
+ }
209
+
210
+ :global(.theme-dark) .mmg-btn-download {
211
+ background: #fff;
212
+ color: rgb(15, 23, 42);
213
+ }
214
+
215
+ .mmg-layout {
216
+ display: grid;
217
+ grid-template-columns: 1fr 2fr;
218
+ gap: 2rem;
219
+ }
220
+
221
+ @media (max-width: 1024px) {
222
+ .mmg-layout {
223
+ grid-template-columns: 1fr;
224
+ }
225
+ }
226
+
227
+ .mmg-panel {
228
+ display: flex;
229
+ flex-direction: column;
230
+ gap: 1.5rem;
231
+ }
232
+
233
+ .mmg-card {
234
+ background: rgba(255, 255, 255, 0.7);
235
+ backdrop-filter: blur(10px);
236
+ padding: 1.5rem;
237
+ border-radius: 1.5rem;
238
+ border: 1px solid rgb(226, 232, 240);
239
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
240
+ }
241
+
242
+ :global(.theme-dark) .mmg-card {
243
+ background: rgba(15, 23, 42, 0.7);
244
+ border-color: rgb(30, 41, 59);
245
+ }
246
+
247
+ .mmg-settings-card {
248
+ display: flex;
249
+ flex-direction: column;
250
+ gap: 1.5rem;
251
+ }
252
+
253
+ .mmg-card-title {
254
+ font-size: 0.875rem;
255
+ font-weight: 700;
256
+ text-transform: uppercase;
257
+ letter-spacing: 0.05em;
258
+ display: flex;
259
+ align-items: center;
260
+ gap: 0.5rem;
261
+ color: rgb(15, 23, 42);
262
+ margin-bottom: 1rem;
263
+ }
264
+
265
+ :global(.theme-dark) .mmg-card-title {
266
+ color: #fff;
267
+ }
268
+
269
+ .mmg-card-icon {
270
+ width: 1rem;
271
+ height: 1rem;
272
+ color: rgb(99, 102, 241);
273
+ }
274
+
275
+ .mmg-drop-zone {
276
+ position: relative;
277
+ border: 2px dashed rgb(203, 213, 225);
278
+ border-radius: 1rem;
279
+ padding: 2rem;
280
+ text-align: center;
281
+ cursor: pointer;
282
+ transition: all 0.2s;
283
+ }
284
+
285
+ .mmg-drop-zone:hover {
286
+ border-color: rgb(99, 102, 241);
287
+ background: rgba(99, 102, 241, 0.05);
288
+ }
289
+
290
+ :global(.theme-dark) .mmg-drop-zone {
291
+ border-color: rgb(51, 65, 85);
292
+ }
293
+
294
+ .mmg-file-input {
295
+ position: absolute;
296
+ inset: 0;
297
+ width: 100%;
298
+ height: 100%;
299
+ opacity: 0;
300
+ cursor: pointer;
301
+ }
302
+
303
+ .mmg-drop-icon {
304
+ width: 3rem;
305
+ height: 3rem;
306
+ color: rgb(148, 163, 184);
307
+ margin: 0 auto 0.75rem;
308
+ display: block;
309
+ transition: color 0.2s;
310
+ }
311
+
312
+ .mmg-drop-zone:hover .mmg-drop-icon {
313
+ color: rgb(99, 102, 241);
314
+ }
315
+
316
+ .mmg-drop-hint {
317
+ font-size: 0.875rem;
318
+ font-weight: 500;
319
+ color: rgb(51, 65, 85);
320
+ }
321
+
322
+ .mmg-drop-formats {
323
+ font-size: 0.75rem;
324
+ color: rgb(100, 116, 139);
325
+ margin-top: 0.25rem;
326
+ }
327
+
328
+ :global(.theme-dark) .mmg-drop-hint {
329
+ color: rgb(203, 213, 225);
330
+ }
331
+
332
+ .mmg-mass-section {
333
+ margin-top: 1rem;
334
+ }
335
+
336
+ .mmg-btn-mass {
337
+ display: flex;
338
+ align-items: center;
339
+ justify-content: center;
340
+ gap: 0.5rem;
341
+ width: 100%;
342
+ padding: 1rem;
343
+ background: rgb(255, 251, 235);
344
+ border: 1px solid rgb(253, 230, 138);
345
+ color: rgb(180, 83, 9);
346
+ border-radius: 1rem;
347
+ font-size: 0.625rem;
348
+ font-weight: 900;
349
+ text-transform: uppercase;
350
+ letter-spacing: 0.2em;
351
+ cursor: pointer;
352
+ transition: all 0.2s;
353
+ }
354
+
355
+ .mmg-btn-mass:hover {
356
+ background: rgb(254, 243, 199);
357
+ }
358
+
359
+ :global(.theme-dark) .mmg-btn-mass {
360
+ background: rgba(180, 83, 9, 0.1);
361
+ border-color: rgba(180, 83, 9, 0.5);
362
+ color: rgb(252, 211, 77);
363
+ }
364
+
365
+ .mmg-mass-hint {
366
+ font-size: 0.5625rem;
367
+ color: rgb(148, 163, 184);
368
+ margin-top: 0.5rem;
369
+ text-align: center;
370
+ padding: 0 1rem;
371
+ line-height: 1.5;
372
+ }
373
+
374
+ .mmg-config-section {
375
+ display: flex;
376
+ flex-direction: column;
377
+ gap: 0.75rem;
378
+ }
379
+
380
+ .mmg-config-label {
381
+ font-size: 0.75rem;
382
+ font-weight: 600;
383
+ text-transform: uppercase;
384
+ color: rgb(100, 116, 139);
385
+ }
386
+
387
+ .mmg-config-row {
388
+ display: flex;
389
+ align-items: center;
390
+ justify-content: space-between;
391
+ }
392
+
393
+ .mmg-device-grid {
394
+ display: grid;
395
+ grid-template-columns: 1fr 1fr;
396
+ gap: 0.5rem;
397
+ }
398
+
399
+ .mmg-device-btn {
400
+ padding: 0.75rem;
401
+ border-radius: 0.75rem;
402
+ border: 2px solid transparent;
403
+ background: rgb(241, 245, 249);
404
+ display: flex;
405
+ flex-direction: column;
406
+ align-items: center;
407
+ gap: 0.25rem;
408
+ cursor: pointer;
409
+ transition: all 0.2s;
410
+ font-size: 0.75rem;
411
+ font-weight: 700;
412
+ color: rgb(15, 23, 42);
413
+ }
414
+
415
+ .mmg-device-btn:hover {
416
+ transform: translateY(-1px);
417
+ }
418
+
419
+ .mmg-device-active {
420
+ background: rgb(238, 242, 255);
421
+ border-color: rgb(79, 70, 229);
422
+ transform: translateY(-1px);
423
+ }
424
+
425
+ :global(.theme-dark) .mmg-device-btn {
426
+ background: rgb(15, 23, 42);
427
+ color: rgb(203, 213, 225);
428
+ }
429
+
430
+ :global(.theme-dark) .mmg-device-active {
431
+ background: rgba(79, 70, 229, 0.2);
432
+ border-color: rgb(129, 140, 248);
433
+ }
434
+
435
+ .mmg-device-icon {
436
+ width: 1.5rem;
437
+ height: 1.5rem;
438
+ }
439
+
440
+ .mmg-select {
441
+ width: 100%;
442
+ padding: 0.625rem 1rem;
443
+ border-radius: 0.75rem;
444
+ border: 2px solid rgb(226, 232, 240);
445
+ background: #fff;
446
+ font-size: 0.875rem;
447
+ outline: none;
448
+ transition: border-color 0.2s;
449
+ color: rgb(15, 23, 42);
450
+ }
451
+
452
+ .mmg-select:focus {
453
+ border-color: rgb(99, 102, 241);
454
+ }
455
+
456
+ :global(.theme-dark) .mmg-select {
457
+ background: rgb(2, 6, 23);
458
+ border-color: rgb(30, 41, 59);
459
+ color: #fff;
460
+ }
461
+
462
+ .mmg-presets-row {
463
+ display: grid;
464
+ grid-template-columns: repeat(5, 1fr);
465
+ gap: 0.5rem;
466
+ }
467
+
468
+ .mmg-gradient-inputs {
469
+ display: flex;
470
+ align-items: center;
471
+ gap: 0.5rem;
472
+ margin-top: 0.75rem;
473
+ }
474
+
475
+ .mmg-color-picker {
476
+ flex: 1;
477
+ height: 2rem;
478
+ border-radius: 0.5rem;
479
+ border: none;
480
+ background: transparent;
481
+ cursor: pointer;
482
+ }
483
+
484
+ .mmg-arrow-icon {
485
+ width: 1rem;
486
+ height: 1rem;
487
+ color: rgb(148, 163, 184);
488
+ flex-shrink: 0;
489
+ }
490
+
491
+ .mmg-swap-btn {
492
+ padding: 0.25rem;
493
+ border: none;
494
+ background: transparent;
495
+ cursor: pointer;
496
+ color: rgb(148, 163, 184);
497
+ border-radius: 0.375rem;
498
+ transition: background 0.2s;
499
+ }
500
+
501
+ .mmg-swap-btn:hover {
502
+ background: rgb(241, 245, 249);
503
+ }
504
+
505
+ :global(.theme-dark) .mmg-swap-btn:hover {
506
+ background: rgb(30, 41, 59);
507
+ }
508
+
509
+ .mmg-swap-icon {
510
+ width: 1rem;
511
+ height: 1rem;
512
+ }
513
+
514
+ .mmg-angle-section {
515
+ margin-top: 1rem;
516
+ }
517
+
518
+ .mmg-angle-row {
519
+ display: flex;
520
+ justify-content: space-between;
521
+ font-size: 0.625rem;
522
+ font-weight: 700;
523
+ text-transform: uppercase;
524
+ letter-spacing: 0.1em;
525
+ color: rgb(100, 116, 139);
526
+ margin-bottom: 0.5rem;
527
+ }
528
+
529
+ .mmg-range {
530
+ width: 100%;
531
+ height: 4px;
532
+ background: rgb(226, 232, 240);
533
+ border-radius: 9999px;
534
+ appearance: none;
535
+ cursor: pointer;
536
+ accent-color: rgb(99, 102, 241);
537
+ }
538
+
539
+ :global(.theme-dark) .mmg-range {
540
+ background: rgb(30, 41, 59);
541
+ }
542
+
543
+ .mmg-range::-webkit-slider-thumb {
544
+ appearance: none;
545
+ width: 16px;
546
+ height: 16px;
547
+ background: rgb(79, 70, 229);
548
+ border-radius: 50%;
549
+ cursor: pointer;
550
+ }
551
+
552
+ .mmg-safe-section {
553
+ padding-top: 1.5rem;
554
+ border-top: 1px solid rgb(241, 245, 249);
555
+ }
556
+
557
+ :global(.theme-dark) .mmg-safe-section {
558
+ border-color: rgba(30, 41, 59, 0.5);
559
+ }
560
+
561
+ .mmg-toggle {
562
+ width: 2.5rem;
563
+ height: 1.25rem;
564
+ background: rgb(226, 232, 240);
565
+ border-radius: 9999px;
566
+ position: relative;
567
+ cursor: pointer;
568
+ border: none;
569
+ transition: background 0.2s;
570
+ }
571
+
572
+ .mmg-toggle-on {
573
+ background: rgb(79, 70, 229);
574
+ }
575
+
576
+ .mmg-toggle-dot {
577
+ width: 1rem;
578
+ height: 1rem;
579
+ background: #fff;
580
+ border-radius: 50%;
581
+ position: absolute;
582
+ top: 0.125rem;
583
+ left: 0.125rem;
584
+ transition: transform 0.2s;
585
+ }
586
+
587
+ .mmg-safe-color-row {
588
+ display: flex;
589
+ align-items: center;
590
+ gap: 0.75rem;
591
+ }
592
+
593
+ .mmg-color-picker-sm {
594
+ width: 2rem;
595
+ height: 2rem;
596
+ border-radius: 0.5rem;
597
+ border: none;
598
+ background: transparent;
599
+ cursor: pointer;
600
+ }
601
+
602
+ .mmg-safe-color-label {
603
+ font-size: 0.625rem;
604
+ font-weight: 700;
605
+ text-transform: uppercase;
606
+ letter-spacing: 0.1em;
607
+ color: rgb(148, 163, 184);
608
+ }
609
+
610
+ .mmg-preview-area {
611
+ min-height: 0;
612
+ }
613
+
614
+ .mmg-empty {
615
+ display: flex;
616
+ flex-direction: column;
617
+ align-items: center;
618
+ justify-content: center;
619
+ padding: 5rem 2rem;
620
+ background: rgb(248, 250, 252);
621
+ border-radius: 2rem;
622
+ border: 2px dashed rgb(226, 232, 240);
623
+ }
624
+
625
+ :global(.theme-dark) .mmg-empty {
626
+ background: rgba(15, 23, 42, 0.5);
627
+ border-color: rgb(30, 41, 59);
628
+ }
629
+
630
+ .mmg-empty-icon-wrap {
631
+ width: 5rem;
632
+ height: 5rem;
633
+ background: rgb(224, 231, 255);
634
+ border-radius: 1.5rem;
635
+ display: flex;
636
+ align-items: center;
637
+ justify-content: center;
638
+ margin-bottom: 1.5rem;
639
+ }
640
+
641
+ :global(.theme-dark) .mmg-empty-icon-wrap {
642
+ background: rgba(79, 70, 229, 0.3);
643
+ }
644
+
645
+ .mmg-empty-icon-svg {
646
+ width: 2.5rem;
647
+ height: 2.5rem;
648
+ color: rgb(99, 102, 241);
649
+ }
650
+
651
+ :global(.theme-dark) .mmg-empty-icon-svg {
652
+ color: rgb(129, 140, 248);
653
+ }
654
+
655
+ .mmg-empty-title {
656
+ font-size: 1.25rem;
657
+ font-weight: 700;
658
+ color: rgb(15, 23, 42);
659
+ }
660
+
661
+ .mmg-empty-subtitle {
662
+ color: rgb(100, 116, 139);
663
+ margin-top: 0.5rem;
664
+ }
665
+
666
+ :global(.theme-dark) .mmg-empty-title {
667
+ color: #fff;
668
+ }
669
+
670
+ .mmg-preview-grid {
671
+ display: grid;
672
+ grid-template-columns: 1fr 1fr;
673
+ gap: 1.5rem;
674
+ }
675
+
676
+ @media (max-width: 640px) {
677
+ .mmg-preview-grid {
678
+ grid-template-columns: 1fr;
679
+ }
680
+ }
681
+
682
+ :global(.mmg-preview-card) {
683
+ background: rgba(255, 255, 255, 0.7);
684
+ backdrop-filter: blur(10px);
685
+ border-radius: 2.5rem;
686
+ padding: 1.5rem;
687
+ border: 1px solid rgb(226, 232, 240);
688
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
689
+ position: relative;
690
+ }
691
+
692
+ :global(.theme-dark) :global(.mmg-preview-card) {
693
+ background: rgba(15, 23, 42, 0.7);
694
+ border-color: rgb(30, 41, 59);
695
+ }
696
+
697
+ :global(.mmg-card-actions) {
698
+ position: absolute;
699
+ top: 1rem;
700
+ right: 1rem;
701
+ display: flex;
702
+ gap: 0.5rem;
703
+ opacity: 0;
704
+ transition: opacity 0.2s;
705
+ z-index: 10;
706
+ }
707
+
708
+ :global(.mmg-preview-card:hover) :global(.mmg-card-actions) {
709
+ opacity: 1;
710
+ }
711
+
712
+ :global(.mmg-card-action-btn) {
713
+ padding: 0.5rem;
714
+ background: #fff;
715
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
716
+ border-radius: 0.75rem;
717
+ border: none;
718
+ cursor: pointer;
719
+ transition: transform 0.2s;
720
+ display: flex;
721
+ }
722
+
723
+ :global(.mmg-card-action-btn:hover) {
724
+ transform: scale(1.1);
725
+ }
726
+
727
+ :global(.theme-dark) :global(.mmg-card-action-btn) {
728
+ background: rgb(15, 23, 42);
729
+ }
730
+
731
+ :global(.mmg-duplicate-img) {
732
+ color: rgb(99, 102, 241);
733
+ }
734
+
735
+ :global(.mmg-replace-img) {
736
+ color: rgb(217, 119, 6);
737
+ }
738
+
739
+ :global(.mmg-canvas-wrap) {
740
+ aspect-ratio: 9/16;
741
+ background: rgb(241, 245, 249);
742
+ border-radius: 1.5rem;
743
+ overflow: hidden;
744
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.06);
745
+ outline: 1px solid rgb(226, 232, 240);
746
+ }
747
+
748
+ :global(.theme-dark) :global(.mmg-canvas-wrap) {
749
+ background: rgba(15, 23, 42, 0.5);
750
+ outline-color: rgb(30, 41, 59);
751
+ }
752
+
753
+ :global(.mmg-canvas) {
754
+ width: 100%;
755
+ height: 100%;
756
+ object-fit: contain;
757
+ display: block;
758
+ }
759
+
760
+ :global(.mmg-card-body) {
761
+ margin-top: 1.5rem;
762
+ display: flex;
763
+ flex-direction: column;
764
+ gap: 1.5rem;
765
+ }
766
+
767
+ :global(.mmg-section) {
768
+ padding-top: 1rem;
769
+ border-top: 1px solid rgb(241, 245, 249);
770
+ }
771
+
772
+ :global(.theme-dark) :global(.mmg-section) {
773
+ border-color: rgba(30, 41, 59, 0.5);
774
+ }
775
+
776
+ :global(.mmg-section-head) {
777
+ display: flex;
778
+ align-items: center;
779
+ justify-content: space-between;
780
+ margin-bottom: 0.75rem;
781
+ }
782
+
783
+ :global(.mmg-section-label) {
784
+ font-size: 0.625rem;
785
+ font-weight: 900;
786
+ text-transform: uppercase;
787
+ letter-spacing: 0.15em;
788
+ color: rgb(148, 163, 184);
789
+ }
790
+
791
+ :global(.mmg-reset-btn) {
792
+ padding: 0.375rem;
793
+ color: rgb(148, 163, 184);
794
+ border: none;
795
+ background: transparent;
796
+ border-radius: 0.5rem;
797
+ cursor: pointer;
798
+ transition: all 0.2s;
799
+ display: flex;
800
+ }
801
+
802
+ :global(.mmg-reset-btn:hover) {
803
+ color: rgb(99, 102, 241);
804
+ background: rgb(238, 242, 255);
805
+ }
806
+
807
+ :global(.theme-dark) :global(.mmg-reset-btn:hover) {
808
+ background: rgba(99, 102, 241, 0.3);
809
+ }
810
+
811
+ :global(.mmg-presets-grid) {
812
+ display: grid;
813
+ grid-template-columns: repeat(3, 1fr);
814
+ gap: 0.5rem;
815
+ }
816
+
817
+ :global(.mmg-preset-btn) {
818
+ padding: 0.625rem 0.5rem;
819
+ font-size: 0.5625rem;
820
+ font-weight: 900;
821
+ text-transform: uppercase;
822
+ letter-spacing: 0.1em;
823
+ color: rgb(100, 116, 139);
824
+ background: rgb(248, 250, 252);
825
+ border: 1px solid rgb(241, 245, 249);
826
+ border-radius: 0.75rem;
827
+ cursor: pointer;
828
+ transition: all 0.2s;
829
+ line-height: 1.2;
830
+ }
831
+
832
+ :global(.mmg-preset-btn:hover) {
833
+ background: rgb(241, 245, 249);
834
+ border-color: rgb(199, 210, 254);
835
+ color: rgb(79, 70, 229);
836
+ }
837
+
838
+ :global(.mmg-preset-btn:active) {
839
+ transform: scale(0.95);
840
+ }
841
+
842
+ :global(.theme-dark) :global(.mmg-preset-btn) {
843
+ background: rgb(15, 23, 42);
844
+ border-color: rgb(30, 41, 59);
845
+ color: rgb(148, 163, 184);
846
+ }
847
+
848
+ :global(.theme-dark) :global(.mmg-preset-btn:hover) {
849
+ background: rgba(79, 70, 229, 0.2);
850
+ border-color: rgba(99, 102, 241, 0.5);
851
+ color: rgb(129, 140, 248);
852
+ }
853
+
854
+ :global(.mmg-color-row) {
855
+ margin-bottom: 0.75rem;
856
+ }
857
+
858
+ :global(.mmg-color-sublabel) {
859
+ display: block;
860
+ font-size: 0.625rem;
861
+ font-weight: 700;
862
+ text-transform: uppercase;
863
+ letter-spacing: 0.1em;
864
+ color: rgb(148, 163, 184);
865
+ margin-bottom: 0.25rem;
866
+ margin-left: 0.25rem;
867
+ }
868
+
869
+ :global(.mmg-color-field) {
870
+ display: flex;
871
+ align-items: center;
872
+ gap: 0.75rem;
873
+ padding: 0.5rem 0.75rem;
874
+ background: rgb(248, 250, 252);
875
+ border: 1px solid rgb(226, 232, 240);
876
+ border-radius: 1rem;
877
+ }
878
+
879
+ :global(.theme-dark) :global(.mmg-color-field) {
880
+ background: rgb(2, 6, 23);
881
+ border-color: rgb(30, 41, 59);
882
+ }
883
+
884
+ :global(.mmg-color-input) {
885
+ width: 1.5rem;
886
+ height: 1.5rem;
887
+ border-radius: 0.5rem;
888
+ border: none;
889
+ background: transparent;
890
+ cursor: pointer;
891
+ }
892
+
893
+ :global(.mmg-color-hex) {
894
+ font-size: 0.75rem;
895
+ font-weight: 700;
896
+ color: rgb(71, 85, 105);
897
+ }
898
+
899
+ :global(.theme-dark) :global(.mmg-color-hex) {
900
+ color: rgb(148, 163, 184);
901
+ }
902
+
903
+ :global(.mmg-textarea) {
904
+ width: 100%;
905
+ padding: 0.75rem 1rem;
906
+ background: rgb(248, 250, 252);
907
+ border: 1px solid rgb(226, 232, 240);
908
+ border-radius: 1rem;
909
+ font-size: 0.875rem;
910
+ outline: none;
911
+ transition: border-color 0.2s;
912
+ font-weight: 500;
913
+ min-height: 5rem;
914
+ resize: none;
915
+ box-sizing: border-box;
916
+ color: rgb(15, 23, 42);
917
+ }
918
+
919
+ :global(.mmg-textarea:focus) {
920
+ border-color: rgb(99, 102, 241);
921
+ }
922
+
923
+ :global(.theme-dark) :global(.mmg-textarea) {
924
+ background: rgb(2, 6, 23);
925
+ border-color: rgb(30, 41, 59);
926
+ color: #fff;
927
+ }
928
+
929
+ :global(.mmg-range-grid) {
930
+ display: grid;
931
+ grid-template-columns: 1fr 1fr;
932
+ gap: 1rem 1.5rem;
933
+ }
934
+
935
+ :global(.mmg-range-item) {
936
+ display: flex;
937
+ flex-direction: column;
938
+ gap: 0.25rem;
939
+ }
940
+
941
+ :global(.mmg-range-row) {
942
+ display: flex;
943
+ justify-content: space-between;
944
+ font-size: 0.5625rem;
945
+ font-weight: 700;
946
+ text-transform: uppercase;
947
+ letter-spacing: 0.1em;
948
+ color: rgb(148, 163, 184);
949
+ }
950
+
951
+ :global(.mmg-scene-row) {
952
+ display: flex;
953
+ gap: 0.5rem;
954
+ }
955
+
956
+ :global(.mmg-scene-btn) {
957
+ flex: 1;
958
+ display: flex;
959
+ align-items: center;
960
+ justify-content: center;
961
+ gap: 0.5rem;
962
+ padding: 0.5rem;
963
+ font-size: 0.625rem;
964
+ font-weight: 700;
965
+ text-transform: uppercase;
966
+ letter-spacing: 0.1em;
967
+ color: rgb(79, 70, 229);
968
+ background: rgb(238, 242, 255);
969
+ border: 1px solid rgb(199, 210, 254);
970
+ border-radius: 0.75rem;
971
+ cursor: pointer;
972
+ transition: all 0.2s;
973
+ }
974
+
975
+ :global(.mmg-scene-btn:hover) {
976
+ background: rgb(224, 231, 255);
977
+ }
978
+
979
+ :global(.theme-dark) :global(.mmg-scene-btn) {
980
+ background: rgba(79, 70, 229, 0.2);
981
+ border-color: rgba(99, 102, 241, 0.5);
982
+ color: rgb(129, 140, 248);
983
+ }
984
+
985
+ :global(.mmg-clear-bg-btn) {
986
+ display: flex;
987
+ align-items: center;
988
+ justify-content: center;
989
+ padding: 0.5rem;
990
+ color: rgb(239, 68, 68);
991
+ background: rgb(254, 242, 242);
992
+ border: 1px solid rgb(254, 202, 202);
993
+ border-radius: 0.75rem;
994
+ cursor: pointer;
995
+ transition: all 0.2s;
996
+ }
997
+
998
+ :global(.mmg-clear-bg-btn:hover) {
999
+ background: rgb(254, 226, 226);
1000
+ }
1001
+
1002
+ :global(.theme-dark) :global(.mmg-clear-bg-btn) {
1003
+ background: rgba(239, 68, 68, 0.2);
1004
+ border-color: rgba(239, 68, 68, 0.5);
1005
+ }
1006
+
1007
+ :global(.mmg-delete-btn) {
1008
+ width: 100%;
1009
+ padding: 0.75rem;
1010
+ font-size: 0.625rem;
1011
+ font-weight: 900;
1012
+ letter-spacing: 0.2em;
1013
+ text-transform: uppercase;
1014
+ color: rgb(148, 163, 184);
1015
+ background: transparent;
1016
+ border: none;
1017
+ border-radius: 0.75rem;
1018
+ cursor: pointer;
1019
+ transition: all 0.2s;
1020
+ }
1021
+
1022
+ :global(.mmg-delete-btn:hover) {
1023
+ color: rgb(239, 68, 68);
1024
+ background: rgb(254, 242, 242);
1025
+ }
1026
+
1027
+ :global(.theme-dark) :global(.mmg-delete-btn:hover) {
1028
+ background: rgba(239, 68, 68, 0.2);
1029
+ }
1030
+
1031
+ :global(.mmg-preset-swatch) {
1032
+ width: 100%;
1033
+ aspect-ratio: 1;
1034
+ border-radius: 0.5rem;
1035
+ border: 2px solid transparent;
1036
+ cursor: pointer;
1037
+ transition: transform 0.2s;
1038
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1039
+ }
1040
+
1041
+ :global(.mmg-preset-swatch:hover) {
1042
+ transform: scale(1.1);
1043
+ }
1044
+ </style>