zerocodejs 1.0.1-beta.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 (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +161 -0
  3. package/dist/__tests__/fixtures/sample-data.d.ts +23 -0
  4. package/dist/__tests__/fixtures/sample-data.d.ts.map +1 -0
  5. package/dist/__tests__/fixtures/sample-templates.d.ts +25 -0
  6. package/dist/__tests__/fixtures/sample-templates.d.ts.map +1 -0
  7. package/dist/components/ZeroCodeCMS.vue.d.ts +142 -0
  8. package/dist/components/ZeroCodeCMS.vue.d.ts.map +1 -0
  9. package/dist/components/ZeroCodeEditor.vue.d.ts +341 -0
  10. package/dist/components/ZeroCodeEditor.vue.d.ts.map +1 -0
  11. package/dist/components/ZeroCodePreview.vue.d.ts +36 -0
  12. package/dist/components/ZeroCodePreview.vue.d.ts.map +1 -0
  13. package/dist/core/composables/useZeroCodeData.d.ts +91 -0
  14. package/dist/core/composables/useZeroCodeData.d.ts.map +1 -0
  15. package/dist/core/composables/useZeroCodeRenderer.d.ts +7 -0
  16. package/dist/core/composables/useZeroCodeRenderer.d.ts.map +1 -0
  17. package/dist/core/renderer/renderer.d.ts +20 -0
  18. package/dist/core/renderer/renderer.d.ts.map +1 -0
  19. package/dist/core/utils/component-initializer.d.ts +6 -0
  20. package/dist/core/utils/component-initializer.d.ts.map +1 -0
  21. package/dist/core/utils/component-initializer.test.d.ts +2 -0
  22. package/dist/core/utils/component-initializer.test.d.ts.map +1 -0
  23. package/dist/core/utils/css-manager.d.ts +41 -0
  24. package/dist/core/utils/css-manager.d.ts.map +1 -0
  25. package/dist/core/utils/dom-utils.d.ts +29 -0
  26. package/dist/core/utils/dom-utils.d.ts.map +1 -0
  27. package/dist/core/utils/field-extractor.d.ts +8 -0
  28. package/dist/core/utils/field-extractor.d.ts.map +1 -0
  29. package/dist/core/utils/field-extractor.test.d.ts +2 -0
  30. package/dist/core/utils/field-extractor.test.d.ts.map +1 -0
  31. package/dist/core/utils/i18n-setup.d.ts +26 -0
  32. package/dist/core/utils/i18n-setup.d.ts.map +1 -0
  33. package/dist/core/utils/image-utils.d.ts +7 -0
  34. package/dist/core/utils/image-utils.d.ts.map +1 -0
  35. package/dist/core/utils/image-utils.test.d.ts +2 -0
  36. package/dist/core/utils/image-utils.test.d.ts.map +1 -0
  37. package/dist/core/utils/path-utils.d.ts +18 -0
  38. package/dist/core/utils/path-utils.d.ts.map +1 -0
  39. package/dist/core/utils/path-utils.test.d.ts +2 -0
  40. package/dist/core/utils/path-utils.test.d.ts.map +1 -0
  41. package/dist/core/utils/sanitize.d.ts +10 -0
  42. package/dist/core/utils/sanitize.d.ts.map +1 -0
  43. package/dist/core/utils/storage.d.ts +16 -0
  44. package/dist/core/utils/storage.d.ts.map +1 -0
  45. package/dist/core/utils/storage.test.d.ts +2 -0
  46. package/dist/core/utils/storage.test.d.ts.map +1 -0
  47. package/dist/core/utils/template-processor.d.ts +12 -0
  48. package/dist/core/utils/template-processor.d.ts.map +1 -0
  49. package/dist/core/utils/template-processor.test.d.ts +2 -0
  50. package/dist/core/utils/template-processor.test.d.ts.map +1 -0
  51. package/dist/core/utils/template-regex.d.ts +29 -0
  52. package/dist/core/utils/template-regex.d.ts.map +1 -0
  53. package/dist/core/utils/template-utils.d.ts +14 -0
  54. package/dist/core/utils/template-utils.d.ts.map +1 -0
  55. package/dist/core/utils/template-utils.test.d.ts +2 -0
  56. package/dist/core/utils/template-utils.test.d.ts.map +1 -0
  57. package/dist/core/utils/validation.d.ts +2 -0
  58. package/dist/core/utils/validation.d.ts.map +1 -0
  59. package/dist/core/utils/validation.test.d.ts +2 -0
  60. package/dist/core/utils/validation.test.d.ts.map +1 -0
  61. package/dist/css/common.css +677 -0
  62. package/dist/css/docs.css +396 -0
  63. package/dist/css/index.css +1039 -0
  64. package/dist/css/page.css +290 -0
  65. package/dist/css/sample.css +26 -0
  66. package/dist/css/site-common.css +218 -0
  67. package/dist/features/add/components/AddPanel.vue.d.ts +41 -0
  68. package/dist/features/add/components/AddPanel.vue.d.ts.map +1 -0
  69. package/dist/features/add/composables/useAddMode.d.ts +84 -0
  70. package/dist/features/add/composables/useAddMode.d.ts.map +1 -0
  71. package/dist/features/data-viewer/components/DataViewer.vue.d.ts +11 -0
  72. package/dist/features/data-viewer/components/DataViewer.vue.d.ts.map +1 -0
  73. package/dist/features/delete/components/DeletePanel.vue.d.ts +17 -0
  74. package/dist/features/delete/components/DeletePanel.vue.d.ts.map +1 -0
  75. package/dist/features/delete/composables/useDeleteMode.d.ts +20 -0
  76. package/dist/features/delete/composables/useDeleteMode.d.ts.map +1 -0
  77. package/dist/features/editor/components/ContextMenu.vue.d.ts +18 -0
  78. package/dist/features/editor/components/ContextMenu.vue.d.ts.map +1 -0
  79. package/dist/features/editor/components/EditPanel.vue.d.ts +39 -0
  80. package/dist/features/editor/components/EditPanel.vue.d.ts.map +1 -0
  81. package/dist/features/editor/components/ImageSelectModal.vue.d.ts +23 -0
  82. package/dist/features/editor/components/ImageSelectModal.vue.d.ts.map +1 -0
  83. package/dist/features/editor/components/RichTextEditor.vue.d.ts +11 -0
  84. package/dist/features/editor/components/RichTextEditor.vue.d.ts.map +1 -0
  85. package/dist/features/editor/components/SettingsPanel.vue.d.ts +25 -0
  86. package/dist/features/editor/components/SettingsPanel.vue.d.ts.map +1 -0
  87. package/dist/features/editor/components/Toolbar.vue.d.ts +21 -0
  88. package/dist/features/editor/components/Toolbar.vue.d.ts.map +1 -0
  89. package/dist/features/editor/composables/useClickHandlers.d.ts +8 -0
  90. package/dist/features/editor/composables/useClickHandlers.d.ts.map +1 -0
  91. package/dist/features/editor/composables/useContextMenu.d.ts +20 -0
  92. package/dist/features/editor/composables/useContextMenu.d.ts.map +1 -0
  93. package/dist/features/editor/composables/useEditMode.d.ts +66 -0
  94. package/dist/features/editor/composables/useEditMode.d.ts.map +1 -0
  95. package/dist/features/editor/composables/useEditorMode.d.ts +7 -0
  96. package/dist/features/editor/composables/useEditorMode.d.ts.map +1 -0
  97. package/dist/features/editor/composables/useModeSwitcher.d.ts +7 -0
  98. package/dist/features/editor/composables/useModeSwitcher.d.ts.map +1 -0
  99. package/dist/features/editor/composables/useOutlineManager.d.ts +5 -0
  100. package/dist/features/editor/composables/useOutlineManager.d.ts.map +1 -0
  101. package/dist/features/images-manager/components/ImagesManagerPanel.vue.d.ts +12 -0
  102. package/dist/features/images-manager/components/ImagesManagerPanel.vue.d.ts.map +1 -0
  103. package/dist/features/images-manager/composables/useImagesManager.d.ts +47 -0
  104. package/dist/features/images-manager/composables/useImagesManager.d.ts.map +1 -0
  105. package/dist/features/parent-selector/composables/useParentSelector.d.ts +9 -0
  106. package/dist/features/parent-selector/composables/useParentSelector.d.ts.map +1 -0
  107. package/dist/features/parts-manager/components/MonacoEditor.vue.d.ts +20 -0
  108. package/dist/features/parts-manager/components/MonacoEditor.vue.d.ts.map +1 -0
  109. package/dist/features/parts-manager/components/PartsManagerPanel.vue.d.ts +10 -0
  110. package/dist/features/parts-manager/components/PartsManagerPanel.vue.d.ts.map +1 -0
  111. package/dist/features/parts-manager/composables/usePartsManager.d.ts +190 -0
  112. package/dist/features/parts-manager/composables/usePartsManager.d.ts.map +1 -0
  113. package/dist/features/preview/PreviewArea.vue.d.ts +15 -0
  114. package/dist/features/preview/PreviewArea.vue.d.ts.map +1 -0
  115. package/dist/features/reorder/components/ReorderPanel.vue.d.ts +14 -0
  116. package/dist/features/reorder/components/ReorderPanel.vue.d.ts.map +1 -0
  117. package/dist/features/reorder/composables/useReorderMode.d.ts +9 -0
  118. package/dist/features/reorder/composables/useReorderMode.d.ts.map +1 -0
  119. package/dist/footer.html +10 -0
  120. package/dist/header.html +10 -0
  121. package/dist/i18n/index.d.ts +454 -0
  122. package/dist/i18n/index.d.ts.map +1 -0
  123. package/dist/i18n/locales/en.d.ts +231 -0
  124. package/dist/i18n/locales/en.d.ts.map +1 -0
  125. package/dist/i18n/locales/ja.d.ts +223 -0
  126. package/dist/i18n/locales/ja.d.ts.map +1 -0
  127. package/dist/images/customer-avatar.jpg +0 -0
  128. package/dist/images/default-avatar.jpg +0 -0
  129. package/dist/images/default.jpg +0 -0
  130. package/dist/images/hero-bg.jpg +0 -0
  131. package/dist/images/kv_image.jpg +0 -0
  132. package/dist/images/page-specific-hero.jpg +0 -0
  133. package/dist/images/sample-1.jpg +0 -0
  134. package/dist/images/sample-2.jpg +0 -0
  135. package/dist/images/sample-3.jpg +0 -0
  136. package/dist/images/zcode_top_01.png +0 -0
  137. package/dist/index.d.ts +6 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/js/accordion.js +24 -0
  140. package/dist/js/common.js +1093 -0
  141. package/dist/types/index.d.ts +96 -0
  142. package/dist/types/index.d.ts.map +1 -0
  143. package/dist/web-component.d.ts +14 -0
  144. package/dist/web-component.d.ts.map +1 -0
  145. package/dist/web-components/zcode-cms.d.ts +29 -0
  146. package/dist/web-components/zcode-cms.d.ts.map +1 -0
  147. package/dist/web-components/zcode-editor.d.ts +29 -0
  148. package/dist/web-components/zcode-editor.d.ts.map +1 -0
  149. package/dist/zerocode.es.js +28710 -0
  150. package/dist/zerocode.es.js.map +1 -0
  151. package/dist/zerocode.umd.js +490 -0
  152. package/dist/zerocode.umd.js.map +1 -0
  153. package/dist/zerocodejs.css +1 -0
  154. package/package.json +94 -0
@@ -0,0 +1,677 @@
1
+ /**
2
+ * ZeroCode.js - 共通CSS
3
+ * リセットCSS + 共通スタイル
4
+ */
5
+
6
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+JP:wght@400;500;700&display=swap');
7
+
8
+ /* ========================================
9
+ CSS Reset
10
+ ======================================== */
11
+ *,
12
+ *::before,
13
+ *::after {
14
+ box-sizing: border-box;
15
+ margin: 0;
16
+ padding: 0;
17
+ }
18
+
19
+ html {
20
+ -webkit-text-size-adjust: 100%;
21
+ -moz-text-size-adjust: 100%;
22
+ text-size-adjust: 100%;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ padding: 0;
28
+ font-family:
29
+ 'Inter',
30
+ 'Noto Sans JP',
31
+ -apple-system,
32
+ BlinkMacSystemFont,
33
+ 'Segoe UI',
34
+ Roboto,
35
+ 'Hiragino Sans',
36
+ 'Hiragino Kaku Gothic ProN',
37
+ 'Yu Gothic',
38
+ 'Meiryo',
39
+ sans-serif;
40
+ line-height: 1.5;
41
+ -webkit-font-smoothing: antialiased;
42
+ -moz-osx-font-smoothing: grayscale;
43
+ container-type: inline-size;
44
+ container-name: viewport;
45
+ }
46
+
47
+ h1,
48
+ h2,
49
+ h3,
50
+ h4,
51
+ h5,
52
+ h6 {
53
+ font-size: inherit;
54
+ font-weight: inherit;
55
+ }
56
+
57
+ ul,
58
+ ol {
59
+ list-style: none;
60
+ }
61
+
62
+ a {
63
+ text-decoration: none;
64
+ color: inherit;
65
+ }
66
+
67
+ button {
68
+ font-family: inherit;
69
+ font-size: inherit;
70
+ border: none;
71
+ background: none;
72
+ cursor: pointer;
73
+ }
74
+
75
+ img,
76
+ picture,
77
+ video,
78
+ canvas,
79
+ svg {
80
+ display: block;
81
+ max-width: 100%;
82
+ }
83
+
84
+ input,
85
+ textarea,
86
+ select {
87
+ font-family: inherit;
88
+ font-size: inherit;
89
+ }
90
+
91
+ /* ========================================
92
+ 共通レイアウト(BEM / l-*)
93
+ ======================================== */
94
+
95
+ .l-header,
96
+ .l-footer {
97
+ padding: 20px;
98
+ border-radius: 0;
99
+ color: white;
100
+ text-align: center;
101
+ }
102
+
103
+ .l-header h1,
104
+ .l-footer h1 {
105
+ margin: 0 0 10px 0;
106
+ font-size: 24px;
107
+ font-weight: 700;
108
+ }
109
+
110
+ .l-header p,
111
+ .l-footer p {
112
+ margin: 0;
113
+ opacity: 0.9;
114
+ font-size: 14px;
115
+ }
116
+ /* CMS用ヘッダーとフッター */
117
+ .l-header--cms,
118
+ .l-footer--cms {
119
+ background: #3498db;
120
+ }
121
+
122
+ /* Dev(エンジニア用) */
123
+ .l-header--dev,
124
+ .l-footer--dev {
125
+ background: #e67e22;
126
+ }
127
+
128
+ /* Light DOM */
129
+ .l-header--light-dom,
130
+ .l-footer--light-dom {
131
+ background: #16a085;
132
+ }
133
+
134
+ /* Preview(表示専用) */
135
+ .l-header--preview,
136
+ .l-footer--preview {
137
+ background: #9b59b6;
138
+ }
139
+
140
+ /* Pub(公開用) */
141
+ .l-header--pub,
142
+ .l-footer--pub {
143
+ background: #27ae60;
144
+ }
145
+
146
+ /* SSR(SSR比較) */
147
+ .l-header--ssr,
148
+ .l-footer--ssr {
149
+ background: #2ecc71;
150
+ }
151
+
152
+ .l-container {
153
+ max-width: 1200px;
154
+ margin: 0 auto;
155
+ padding: 40px 20px;
156
+ container-type: inline-size;
157
+ container-name: page;
158
+ }
159
+
160
+ /* ========================================
161
+ 共通パーツ(BEM / c-*)
162
+ ======================================== */
163
+
164
+ :root {
165
+ --c-color-black: #0b1220;
166
+ --c-color-white: #fff;
167
+ --c-color-red: #2563eb;
168
+ --c-color-gray: #64748b;
169
+ --c-color-gray-2: rgba(15, 23, 42, 0.14);
170
+ --c-color-bg-soft: rgba(15, 23, 42, 0.03);
171
+ --c-radius: 12px;
172
+ --c-shadow: 0 10px 30px rgba(2, 6, 23, 0.08);
173
+ --c-transition: 160ms ease;
174
+ }
175
+
176
+ .c-heading {
177
+ margin-top: 40px;
178
+ margin-bottom: 22px;
179
+ }
180
+
181
+ .c-heading__title {
182
+ overflow: hidden;
183
+ position: relative;
184
+ color: var(--c-color-black);
185
+ font-weight: 700;
186
+ letter-spacing: -0.01em;
187
+ }
188
+
189
+ .c-heading--h1 .c-heading__title {
190
+ font-size: 36px;
191
+ line-height: 1.25;
192
+ padding-bottom: 14px;
193
+ }
194
+
195
+ .c-heading--h1 .c-heading__title::before {
196
+ content: '';
197
+ position: absolute;
198
+ bottom: 2px;
199
+ left: 0;
200
+ width: 96px;
201
+ height: 2px;
202
+ background-color: rgba(11, 18, 32, 0.7);
203
+ }
204
+
205
+ .c-heading--h1 .c-heading__title::after {
206
+ content: '';
207
+ position: absolute;
208
+ bottom: 0;
209
+ left: 0;
210
+ width: 28px;
211
+ height: 3px;
212
+ background-color: var(--c-color-red);
213
+ }
214
+
215
+ .c-heading--h2 .c-heading__title {
216
+ font-size: 28px;
217
+ line-height: 1.3;
218
+ padding-bottom: 12px;
219
+ }
220
+
221
+ .c-heading--h2 .c-heading__title::after {
222
+ content: '';
223
+ position: absolute;
224
+ bottom: 0;
225
+ left: 0;
226
+ width: 52px;
227
+ height: 2px;
228
+ background-color: var(--c-color-red);
229
+ }
230
+
231
+ .c-heading--h3 .c-heading__title {
232
+ font-size: 20px;
233
+ line-height: 1.35;
234
+ }
235
+
236
+ .c-heading--h4 .c-heading__title {
237
+ font-size: 18px;
238
+ line-height: 1.4;
239
+ }
240
+
241
+ .c-heading--h5 .c-heading__title {
242
+ font-size: 16px;
243
+ line-height: 1.45;
244
+ }
245
+
246
+ .c-heading--h6 .c-heading__title {
247
+ font-size: 14px;
248
+ line-height: 1.5;
249
+ }
250
+
251
+ .c-text {
252
+ margin-top: 24px;
253
+ color: var(--c-color-gray);
254
+ font-size: 16px;
255
+ line-height: 1.8;
256
+ }
257
+
258
+ .c-text p + p {
259
+ margin-top: 0.769em;
260
+ }
261
+
262
+ .c-box {
263
+ margin-top: 24px;
264
+ border: 1px solid var(--c-color-gray-2);
265
+ background-color: var(--c-color-white);
266
+ border-radius: var(--c-radius);
267
+ box-shadow: var(--c-shadow);
268
+ }
269
+
270
+ .c-box__inner {
271
+ padding: 24px;
272
+ }
273
+
274
+ .c-box__heading {
275
+ font-weight: 700;
276
+ font-size: 16px;
277
+ line-height: 1.5;
278
+ margin-bottom: 14px;
279
+ color: var(--c-color-black);
280
+ }
281
+
282
+ .c-box__body {
283
+ font-size: 16px;
284
+ line-height: 1.8;
285
+ color: var(--c-color-gray);
286
+ }
287
+
288
+ .c-box--tone-neutral {
289
+ border-color: var(--c-color-gray-2);
290
+ background-color: var(--c-color-white);
291
+ }
292
+
293
+ .c-box--tone-primary {
294
+ border-color: rgba(37, 99, 235, 0.35);
295
+ background-color: rgba(37, 99, 235, 0.06);
296
+ }
297
+
298
+ .c-box--tone-accent {
299
+ border-color: rgba(15, 23, 42, 0.12);
300
+ background-color: rgba(15, 23, 42, 0.03);
301
+ }
302
+
303
+ .c-media {
304
+ margin-top: 24px;
305
+ display: flex;
306
+ gap: 24px;
307
+ align-items: center;
308
+ border: 1px solid var(--c-color-gray-2);
309
+ background-color: var(--c-color-white);
310
+ padding: 24px;
311
+ border-radius: var(--c-radius);
312
+ box-shadow: var(--c-shadow);
313
+ }
314
+
315
+ .c-media--dir-reverse {
316
+ flex-direction: row-reverse;
317
+ }
318
+
319
+ .c-media--valign-top {
320
+ align-items: flex-start;
321
+ }
322
+
323
+ .c-media--valign-center {
324
+ align-items: center;
325
+ }
326
+
327
+ .c-media--valign-bottom {
328
+ align-items: flex-end;
329
+ }
330
+
331
+ .c-media__image {
332
+ flex: 0 0 auto;
333
+ width: 42%;
334
+ max-width: 520px;
335
+ }
336
+
337
+ .c-media__img {
338
+ width: 100%;
339
+ height: auto;
340
+ border: 1px solid var(--c-color-gray-2);
341
+ background: var(--c-color-white);
342
+ border-radius: calc(var(--c-radius) - 4px);
343
+ }
344
+
345
+ .c-media__content {
346
+ flex: 1 1 auto;
347
+ min-width: 0;
348
+ }
349
+
350
+ .c-media__heading {
351
+ font-weight: 700;
352
+ font-size: 18px;
353
+ line-height: 1.5;
354
+ margin-bottom: 12px;
355
+ color: var(--c-color-black);
356
+ }
357
+
358
+ .c-media__text {
359
+ font-size: 16px;
360
+ line-height: 1.8;
361
+ color: var(--c-color-gray);
362
+ }
363
+
364
+ .c-media__actions {
365
+ margin-top: 20px;
366
+ }
367
+
368
+ .c-image {
369
+ margin-top: 50px;
370
+ margin-bottom: 50px;
371
+ display: block;
372
+ }
373
+
374
+ .c-image__media {
375
+ overflow: hidden;
376
+ border: 1px solid var(--c-color-gray-2);
377
+ background: var(--c-color-white);
378
+ border-radius: var(--c-radius);
379
+ }
380
+
381
+ .c-image__img {
382
+ width: 100%;
383
+ height: auto;
384
+ }
385
+
386
+ .c-image__caption {
387
+ margin-top: 10px;
388
+ color: var(--c-color-gray);
389
+ font-size: 13px;
390
+ line-height: 1.692;
391
+ }
392
+
393
+ .c-image--align-left {
394
+ text-align: left;
395
+ }
396
+
397
+ .c-image--align-center {
398
+ text-align: center;
399
+ }
400
+
401
+ .c-image--align-right {
402
+ text-align: right;
403
+ }
404
+
405
+ .c-table {
406
+ margin-top: 24px;
407
+ border: 1px solid var(--c-color-gray-2);
408
+ background: var(--c-color-white);
409
+ border-radius: var(--c-radius);
410
+ overflow: hidden;
411
+ box-shadow: var(--c-shadow);
412
+ }
413
+
414
+ .c-table__caption {
415
+ padding: 14px 16px;
416
+ color: var(--c-color-gray);
417
+ font-size: 14px;
418
+ line-height: 1.5;
419
+ border-bottom: 1px solid var(--c-color-gray-2);
420
+ }
421
+
422
+ .c-table__row {
423
+ display: grid;
424
+ grid-auto-flow: column;
425
+ grid-auto-columns: 1fr;
426
+ }
427
+
428
+ .c-table__cell {
429
+ padding: 15px;
430
+ color: var(--c-color-black);
431
+ font-size: 14px;
432
+ line-height: 1.5;
433
+ border-bottom: 1px solid var(--c-color-gray-2);
434
+ border-right: 1px solid var(--c-color-gray-2);
435
+ min-width: 0;
436
+ background: var(--c-color-white);
437
+ }
438
+
439
+ .c-table__row > .c-table__cell:last-child {
440
+ border-right: none;
441
+ }
442
+
443
+ .c-table__cell--head {
444
+ font-weight: 700;
445
+ color: var(--c-color-white);
446
+ background: var(--c-color-black);
447
+ }
448
+
449
+ .c-table__cell--align-left {
450
+ text-align: left;
451
+ }
452
+
453
+ .c-table__cell--align-center {
454
+ text-align: center;
455
+ }
456
+
457
+ .c-table__cell--align-right {
458
+ text-align: right;
459
+ }
460
+
461
+ .c-table--style-striped .c-table__body .c-table__row:nth-child(even) .c-table__cell {
462
+ background: var(--c-color-bg-soft);
463
+ }
464
+
465
+ .c-table--style-bordered .c-table__cell {
466
+ border-color: rgba(15, 23, 42, 0.2);
467
+ }
468
+
469
+ .c-actions {
470
+ display: block;
471
+ }
472
+
473
+ .c-actions--align-left {
474
+ text-align: left;
475
+ }
476
+
477
+ .c-actions--align-center {
478
+ text-align: center;
479
+ }
480
+
481
+ .c-actions--align-right {
482
+ text-align: right;
483
+ }
484
+
485
+ .c-button {
486
+ display: inline-flex;
487
+ align-items: center;
488
+ justify-content: center;
489
+ gap: 8px;
490
+ width: auto;
491
+ min-height: 44px;
492
+ padding: 10px 14px;
493
+ border-radius: 10px;
494
+ font-weight: 700;
495
+ font-size: 14px;
496
+ line-height: 1.5;
497
+ background-color: var(--c-color-white);
498
+ border: 1px solid var(--c-color-gray-2);
499
+ transition: var(--c-transition);
500
+ color: var(--c-color-black);
501
+ }
502
+
503
+ .c-button--style-primary {
504
+ background-color: var(--c-color-red);
505
+ border-color: var(--c-color-red);
506
+ color: var(--c-color-white);
507
+ }
508
+
509
+ .c-button--style-primary:hover {
510
+ background-color: #1d4ed8;
511
+ border-color: #1d4ed8;
512
+ }
513
+
514
+ .c-button--style-secondary {
515
+ border-color: rgba(37, 99, 235, 0.35);
516
+ color: var(--c-color-red);
517
+ background-color: rgba(37, 99, 235, 0.06);
518
+ }
519
+
520
+ .c-button--style-secondary:hover {
521
+ background-color: rgba(37, 99, 235, 0.1);
522
+ }
523
+
524
+ .c-button--style-text {
525
+ border-color: transparent;
526
+ background-color: transparent;
527
+ width: auto;
528
+ min-height: auto;
529
+ padding: 0;
530
+ text-decoration: underline;
531
+ color: var(--c-color-red);
532
+ }
533
+
534
+ .c-link {
535
+ position: relative;
536
+ font-weight: 700;
537
+ color: var(--c-color-red);
538
+ text-decoration: underline;
539
+ text-underline-offset: 3px;
540
+ transition: var(--c-transition);
541
+ }
542
+
543
+ .c-link:hover {
544
+ color: #1d4ed8;
545
+ }
546
+
547
+ @container viewport (max-width: 640px) {
548
+ .l-container {
549
+ padding: 28px 16px;
550
+ }
551
+
552
+ .c-heading {
553
+ margin-top: 40px;
554
+ margin-bottom: 30px;
555
+ }
556
+
557
+ .c-heading--h1 .c-heading__title {
558
+ font-size: 28px;
559
+ padding-bottom: 12px;
560
+ }
561
+
562
+ .c-heading--h2 .c-heading__title {
563
+ font-size: 22px;
564
+ padding-bottom: 12px;
565
+ }
566
+
567
+ .c-heading--h3 .c-heading__title {
568
+ font-size: 18px;
569
+ }
570
+
571
+ .c-heading--h4 .c-heading__title {
572
+ font-size: 16px;
573
+ }
574
+
575
+ .c-heading--h5 .c-heading__title {
576
+ font-size: 14px;
577
+ }
578
+
579
+ .c-heading--h6 .c-heading__title {
580
+ font-size: 13px;
581
+ }
582
+
583
+ .c-media {
584
+ flex-direction: column;
585
+ align-items: stretch;
586
+ }
587
+
588
+ .c-media__image {
589
+ width: 100%;
590
+ max-width: none;
591
+ }
592
+
593
+ .c-box__inner {
594
+ padding: 20px;
595
+ }
596
+
597
+ .c-image {
598
+ margin-top: 30px;
599
+ margin-bottom: 30px;
600
+ }
601
+ }
602
+
603
+ /* リセットボタン(保存ボタンの横に配置) */
604
+ .reset-controls-fixed {
605
+ position: fixed;
606
+ bottom: 20px;
607
+ left: 160px; /* 保存ボタンの右側に配置(保存ボタンの幅 + gapを考慮) */
608
+ display: flex;
609
+ align-items: center;
610
+ gap: 8px;
611
+ padding: 12px 20px;
612
+ background: rgba(255, 255, 255, 0.8);
613
+ border-radius: 8px;
614
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
615
+ z-index: 1000;
616
+ backdrop-filter: blur(6px);
617
+ }
618
+
619
+ .reset-btn {
620
+ display: flex;
621
+ align-items: center;
622
+ gap: 6px;
623
+ padding: 8px 16px;
624
+ background-color: #dc3545;
625
+ color: white;
626
+ border: none;
627
+ border-radius: 6px;
628
+ cursor: pointer;
629
+ font-size: 14px;
630
+ font-weight: 500;
631
+ transition: background-color 0.2s;
632
+ white-space: nowrap;
633
+ }
634
+
635
+ .reset-btn:hover {
636
+ background-color: #c82333;
637
+ }
638
+
639
+ .reset-btn:active {
640
+ background-color: #bd2130;
641
+ }
642
+
643
+ .reset-btn svg {
644
+ flex-shrink: 0;
645
+ }
646
+
647
+ /* モバイル対応 */
648
+ @media (max-width: 768px) {
649
+ .reset-controls-fixed {
650
+ bottom: 20px;
651
+ left: 72px; /* 保存ボタン(48px)の右側に配置、gap: 8px */
652
+ padding: 0;
653
+ background: transparent;
654
+ box-shadow: none;
655
+ }
656
+
657
+ .reset-btn {
658
+ width: 48px;
659
+ height: 48px;
660
+ padding: 0;
661
+ border-radius: 50%;
662
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
663
+ display: flex;
664
+ align-items: center;
665
+ justify-content: center;
666
+ gap: 0;
667
+ }
668
+
669
+ .reset-btn span {
670
+ display: none;
671
+ }
672
+
673
+ .reset-btn svg {
674
+ width: 20px;
675
+ height: 20px;
676
+ }
677
+ }