hd-garden 0.10.2 → 0.10.4

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.
@@ -0,0 +1,1215 @@
1
+ /*
2
+ * Garden Intelligent UI, drawn in ChatGPT's Intelligent UI style.
3
+ * Token values come from OpenAI's Intelligent UI showcase (--iui-*) and
4
+ * ChatGPT's component tokens (--d-*, --color-*), light and dark.
5
+ */
6
+ .garden-ui,
7
+ .garden-catalog,
8
+ .garden-ui-preview {
9
+ --gui-bg: transparent;
10
+ --gui-chart: var(--well);
11
+ --gui-track: var(--rule, #e6e3dc);
12
+ --gui-thumb: var(--paper, #faf9f5);
13
+ --gui-slider-track: var(--rule, #e6e3dc);
14
+ --gui-slider-thumb: var(--ink, #1b1a18);
15
+ --gui-text: var(--ink, #1b1a18);
16
+ --gui-muted: var(--muted, #6e6b64);
17
+ --gui-subtle: var(--grey, #737069);
18
+ --gui-completed: var(--muted, #6e6b64);
19
+ --gui-border: var(--rule, #e6e3dc);
20
+ --gui-border-soft: var(--rule, #e6e3dc);
21
+ --gui-border-strong: var(--rule-strong, #d6d2c9);
22
+ --gui-control-border: var(--rule-strong, #d6d2c9);
23
+ --gui-check-border: var(--rule-strong, #d6d2c9);
24
+ --gui-control-bg: transparent;
25
+ --gui-surface: var(--well, #f0eee6);
26
+ --gui-chip: var(--well, #f0eee6);
27
+ --gui-hover: var(--well, #f0eee6);
28
+ --gui-solid: var(--ink, #1b1a18);
29
+ --gui-solid-hover: var(--soft, #4a4844);
30
+ --gui-on-solid: var(--paper, #faf9f5);
31
+ --gui-segment: var(--well, #f0eee6);
32
+ --gui-segment-selected: var(--paper, #faf9f5);
33
+ --gui-segment-shadow: none;
34
+ --gui-progress: var(--blue, #30302e);
35
+ --gui-progress-track: var(--well, #f0eee6);
36
+ --gui-focus: var(--blue, #30302e);
37
+ --gui-bubble: var(--blue-tint, #f0eee6);
38
+ --gui-popover-border: var(--rule, #e6e3dc);
39
+ --gui-shadow: none;
40
+ --gui-code-bg: var(--well, #f0eee6);
41
+ --gui-accent: var(--blue, #30302e);
42
+ --gui-series-plain: var(--ink, #1b1a18);
43
+ --gui-series-accent: var(--blue);
44
+ --gui-series-new: #00a240;
45
+ --gui-series-waste: #e02e2a;
46
+ --gui-series-same: #924ff7;
47
+ --gui-info: #539af8;
48
+ --gui-info-text: #0169cc;
49
+ --gui-info-soft: #0285ff1a;
50
+ --gui-success: #6bc67f;
51
+ --gui-success-text: #008635;
52
+ --gui-success-soft: #04b84c1f;
53
+ --gui-danger: #e02e2a;
54
+ --gui-danger-text: #ba2623;
55
+ --gui-danger-soft: #fa423e1a;
56
+ --gui-discovery: #924ff7;
57
+ --gui-discovery-text: #8046d9;
58
+ --gui-discovery-soft: #924ff71a;
59
+ --gui-font: var(--sans, -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", sans-serif);
60
+ --gui-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
61
+ }
62
+
63
+ :root[data-theme="dark"] .garden-ui,
64
+ :root[data-theme="dark"] .garden-catalog,
65
+ [data-theme="dark"] .garden-ui,
66
+ [data-theme="dark"] .garden-catalog,
67
+ .garden-ui[data-theme="dark"],
68
+ .garden-catalog[data-theme="dark"],
69
+ .garden-ui-preview[data-theme="dark"] {
70
+ --gui-bg: transparent;
71
+ --gui-chart: var(--well);
72
+ --gui-text: var(--ink);
73
+ --gui-muted: var(--muted);
74
+ --gui-subtle: var(--grey);
75
+ --gui-completed: var(--muted);
76
+ --gui-border: var(--rule);
77
+ --gui-border-soft: var(--rule);
78
+ --gui-border-strong: var(--rule-strong);
79
+ --gui-control-border: var(--rule-strong);
80
+ --gui-check-border: var(--rule-strong);
81
+ --gui-control-bg: transparent;
82
+ --gui-surface: var(--well);
83
+ --gui-chip: var(--well);
84
+ --gui-hover: var(--tint);
85
+ --gui-solid: var(--ink);
86
+ --gui-solid-hover: var(--soft);
87
+ --gui-on-solid: var(--paper);
88
+ --gui-segment: var(--well);
89
+ --gui-segment-selected: var(--paper);
90
+ --gui-segment-shadow: none;
91
+ --gui-track: var(--rule);
92
+ --gui-thumb: var(--paper);
93
+ --gui-slider-track: var(--rule-strong);
94
+ --gui-slider-thumb: var(--ink);
95
+ --gui-progress: var(--blue);
96
+ --gui-progress-track: var(--well);
97
+ --gui-focus: var(--blue);
98
+ --gui-bubble: var(--blue-tint);
99
+ --gui-popover-border: var(--rule);
100
+ --gui-shadow: none;
101
+ --gui-code-bg: var(--well);
102
+ --gui-accent: var(--blue);
103
+ --gui-series-plain: var(--ink);
104
+ --gui-series-accent: var(--blue);
105
+ --gui-series-new: #04b84c;
106
+ --gui-series-waste: #fa423e;
107
+ --gui-info: #0285ff;
108
+ --gui-info-text: #66b5ff;
109
+ --gui-info-soft: #0285ff26;
110
+ --gui-success: #04b84c;
111
+ --gui-success-text: #40c977;
112
+ --gui-success-soft: #04b84c26;
113
+ --gui-danger: #fa423e;
114
+ --gui-danger-text: #fa423e;
115
+ --gui-danger-soft: #fa423e29;
116
+ --gui-discovery: #924ff7;
117
+ --gui-discovery-text: #be95fa;
118
+ --gui-discovery-soft: #924ff726;
119
+ }
120
+
121
+ /* frame: each block is one outlined widget, with the same curved corner as a ChatGPT card */
122
+ .garden-ui {
123
+ margin: 28px 0;
124
+ border: 1px solid var(--gui-border);
125
+ border-radius: 8px;
126
+ background: transparent;
127
+ color: var(--gui-text);
128
+ font-family: var(--gui-font);
129
+ font-size: 16px;
130
+ line-height: 26px;
131
+ letter-spacing: normal;
132
+ -webkit-font-smoothing: antialiased;
133
+ }
134
+
135
+ .garden-ui-body {
136
+ display: flex;
137
+ flex-direction: column;
138
+ align-items: stretch;
139
+ gap: 12px;
140
+ padding: 12px 16px 4px;
141
+ }
142
+
143
+ .garden-ui-body > *,
144
+ .garden-ui-stack > *,
145
+ .garden-ui-card > *,
146
+ .garden-ui-step > *,
147
+ .garden-ui-tabpanel > *,
148
+ .garden-ui-column > * {
149
+ margin: 0;
150
+ }
151
+
152
+ .garden-ui > figcaption {
153
+ padding: 4px 16px 12px;
154
+ color: var(--gui-muted);
155
+ font-size: 14px;
156
+ line-height: 20px;
157
+ text-align: start;
158
+ }
159
+
160
+ .garden-ui :focus-visible {
161
+ outline: 2px solid var(--gui-focus);
162
+ outline-offset: 2px;
163
+ }
164
+
165
+ :where(.garden-ui) p,
166
+ :where(.garden-ui) li {
167
+ font-size: 16px;
168
+ line-height: 26px;
169
+ }
170
+
171
+ :where(.garden-ui) strong { font-weight: 600; }
172
+
173
+ :where(.garden-ui) code {
174
+ padding: 2px 5px;
175
+ border-radius: 6px;
176
+ background: var(--gui-chip);
177
+ color: var(--gui-text);
178
+ font-family: var(--gui-mono);
179
+ font-size: 0.86em;
180
+ }
181
+
182
+ :where(.garden-ui) a { color: var(--gui-info-text); text-decoration: underline; text-underline-offset: 2px; }
183
+
184
+ .garden-ui-value { font-variant-numeric: tabular-nums; }
185
+
186
+ .garden-ui button {
187
+ font: inherit;
188
+ color: inherit;
189
+ cursor: pointer;
190
+ }
191
+
192
+ .garden-ui-sr-only {
193
+ position: absolute;
194
+ width: 1px;
195
+ height: 1px;
196
+ margin: -1px;
197
+ padding: 0;
198
+ border: 0;
199
+ overflow: hidden;
200
+ clip: rect(0 0 0 0);
201
+ clip-path: inset(50%);
202
+ white-space: nowrap;
203
+ }
204
+
205
+ /* tones map onto ChatGPT's semantic colors */
206
+ .garden-ui-tone-plain { --gui-tone: var(--gui-text); --gui-tone-text: var(--gui-text); --gui-tone-soft: transparent; }
207
+ .garden-ui-tone-accent { --gui-tone: var(--gui-info); --gui-tone-text: var(--gui-info-text); --gui-tone-soft: var(--gui-info-soft); }
208
+ .garden-ui-tone-new { --gui-tone: var(--gui-success); --gui-tone-text: var(--gui-success-text); --gui-tone-soft: var(--gui-success-soft); }
209
+ .garden-ui-tone-waste { --gui-tone: var(--gui-danger); --gui-tone-text: var(--gui-danger-text); --gui-tone-soft: var(--gui-danger-soft); }
210
+ .garden-ui-tone-same { --gui-tone: var(--gui-discovery); --gui-tone-text: var(--gui-discovery-text); --gui-tone-soft: var(--gui-discovery-soft); }
211
+ .garden-ui-tone-muted,
212
+ .garden-ui-tone-cached { --gui-tone: var(--gui-subtle); --gui-tone-text: var(--gui-muted); --gui-tone-soft: var(--gui-surface); }
213
+
214
+ /* layout */
215
+ .garden-ui-stack { display: flex; flex-direction: column; }
216
+ .garden-ui-stack[data-direction="row"] { flex-direction: row; flex-wrap: wrap; align-items: center; }
217
+
218
+ .garden-ui-columns {
219
+ display: grid;
220
+ grid-template-columns: repeat(auto-fit, minmax(min(var(--garden-ui-col-min, 220px), 100%), 1fr));
221
+ }
222
+
223
+ .garden-ui-column { min-width: 0; }
224
+
225
+ .garden-ui-card {
226
+ display: flex;
227
+ flex-direction: column;
228
+ align-items: stretch;
229
+ gap: 4px;
230
+ padding: 12px;
231
+ border: 1px solid var(--gui-border);
232
+ border-radius: 8px;
233
+ background: transparent;
234
+ box-shadow: none;
235
+ text-align: start;
236
+ }
237
+
238
+ .garden-ui-card.garden-ui-tone-plain,
239
+ .garden-ui-card:not(.garden-ui-tone-plain) { background: transparent; }
240
+
241
+ .garden-ui-card-title {
242
+ margin: 0;
243
+ color: var(--gui-text);
244
+ font-size: 16px;
245
+ font-weight: 600;
246
+ line-height: 26px;
247
+ text-align: start;
248
+ }
249
+
250
+ /* tabs: pill chips, selected one solid */
251
+ .garden-ui-tablist {
252
+ display: flex;
253
+ flex-wrap: wrap;
254
+ justify-content: center;
255
+ gap: 7px;
256
+ }
257
+
258
+ .garden-ui-tablist button {
259
+ position: relative;
260
+ min-height: 28px;
261
+ padding: 4px 12px;
262
+ border: 0;
263
+ border-radius: 999px;
264
+ background: var(--gui-chip);
265
+ color: var(--gui-text);
266
+ font-size: 13px;
267
+ line-height: 20px;
268
+ transition: background-color 150ms ease, color 150ms ease;
269
+ }
270
+
271
+ .garden-ui-tablist button:hover { background: var(--gui-hover); }
272
+
273
+ .garden-ui-tablist button[aria-selected="true"] {
274
+ background: var(--gui-solid);
275
+ color: var(--gui-on-solid);
276
+ }
277
+
278
+ .garden-ui-tabpanel { display: flex; flex-direction: column; gap: 14px; padding-top: 14px; }
279
+ .garden-ui-tabpanel[hidden] { display: none; }
280
+
281
+ /* steps */
282
+ .garden-ui-steps { display: flex; flex-direction: column; gap: 12px; outline: none; }
283
+
284
+ .garden-ui-steps-head {
285
+ display: flex;
286
+ justify-content: space-between;
287
+ align-items: baseline;
288
+ gap: 12px;
289
+ }
290
+
291
+ .garden-ui-steps-head strong { color: var(--gui-text); font-size: 16px; font-weight: 600; line-height: 1.4; }
292
+ .garden-ui-steps-head span { flex-shrink: 0; color: var(--gui-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
293
+
294
+ .garden-ui-steps .garden-ui-progress { height: 3px; margin: 2px 0 0; }
295
+
296
+ .garden-ui-steps-stage { display: grid; }
297
+
298
+ .garden-ui-step {
299
+ grid-area: 1 / 1;
300
+ display: flex;
301
+ flex-direction: column;
302
+ gap: 14px;
303
+ visibility: hidden;
304
+ }
305
+
306
+ .garden-ui-step[data-active="true"] { visibility: visible; }
307
+
308
+ .garden-ui-steps[data-animate="true"] .garden-ui-step[data-active="true"] { animation: garden-ui-fade 420ms ease-out; }
309
+
310
+ @keyframes garden-ui-fade {
311
+ from { opacity: 0; transform: translateY(4px); }
312
+ to { opacity: 1; transform: none; }
313
+ }
314
+
315
+ .garden-ui-steps-controls {
316
+ display: flex;
317
+ flex-wrap: wrap;
318
+ align-items: center;
319
+ justify-content: flex-start;
320
+ gap: 10px;
321
+ }
322
+
323
+ .garden-ui-round {
324
+ display: grid;
325
+ place-items: center;
326
+ width: 36px;
327
+ height: 36px;
328
+ padding: 0;
329
+ border: 1px solid var(--gui-border-strong);
330
+ border-radius: 50%;
331
+ background: transparent;
332
+ color: var(--gui-text);
333
+ transition: background-color 150ms ease, transform 100ms ease;
334
+ }
335
+
336
+ .garden-ui-round svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
337
+ .garden-ui-round:hover:not(:disabled) { background: var(--gui-hover); }
338
+ .garden-ui-round:active:not(:disabled) { transform: scale(0.96); }
339
+ .garden-ui-round:disabled { color: var(--gui-subtle); opacity: 0.45; cursor: default; }
340
+
341
+ .garden-ui-steps-dots { display: inline-flex; flex-wrap: wrap; gap: 6px; }
342
+
343
+ .garden-ui-steps-dots button {
344
+ width: 8px;
345
+ height: 8px;
346
+ padding: 0;
347
+ border: 0;
348
+ border-radius: 50%;
349
+ background: var(--gui-border-strong);
350
+ transition: background-color 150ms ease, transform 150ms ease;
351
+ }
352
+
353
+ .garden-ui-steps-dots button[aria-current="step"] { background: var(--gui-solid); transform: scale(1.15); }
354
+
355
+ /* progress bar shared by Steps and Checklist */
356
+ .garden-ui-progress {
357
+ height: 3px;
358
+ overflow: hidden;
359
+ border-radius: 999px;
360
+ background: var(--gui-progress-track);
361
+ }
362
+
363
+ .garden-ui-progress > span {
364
+ display: block;
365
+ height: 100%;
366
+ border-radius: inherit;
367
+ background: var(--gui-progress);
368
+ transition: width 300ms ease;
369
+ }
370
+
371
+ /* buttons: outline pill by default, solid pill for the accent tone */
372
+ .garden-ui-button {
373
+ display: inline-flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ gap: 6px;
377
+ width: fit-content;
378
+ min-height: 36px;
379
+ padding: 0 14px;
380
+ border: 1px solid var(--gui-border-strong);
381
+ border-radius: 999px;
382
+ background: transparent;
383
+ color: var(--gui-text);
384
+ font-size: 13px;
385
+ font-weight: 600;
386
+ line-height: 1;
387
+ transition: background-color 150ms ease, transform 100ms ease;
388
+ }
389
+
390
+ .garden-ui-button:hover { background: var(--gui-hover); }
391
+ .garden-ui-button:active { transform: scale(0.98); }
392
+
393
+ .garden-ui-button.garden-ui-tone-accent {
394
+ padding: 0 16px;
395
+ border-color: var(--gui-solid);
396
+ background: var(--gui-solid);
397
+ color: var(--gui-on-solid);
398
+ font-size: 15px;
399
+ font-weight: 500;
400
+ }
401
+
402
+ .garden-ui-button.garden-ui-tone-accent:hover { border-color: var(--gui-solid-hover); background: var(--gui-solid-hover); }
403
+
404
+ /* slider: 24px track, 18px thumb inset 3px, no filled portion */
405
+ .garden-ui-slider { display: flex; flex-direction: column; gap: 8px; }
406
+
407
+ .garden-ui-slider label {
408
+ display: flex;
409
+ justify-content: space-between;
410
+ align-items: baseline;
411
+ gap: 12px;
412
+ color: var(--gui-muted);
413
+ font-size: 14px;
414
+ line-height: 20px;
415
+ }
416
+
417
+ .garden-ui-slider output { color: var(--gui-text); font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
418
+
419
+ .garden-ui-slider-track { padding: 8px 0; }
420
+
421
+ .garden-ui-slider-track:has(input:focus-visible) { outline: 2px solid var(--gui-focus); outline-offset: 3px; border-radius: 999px; }
422
+
423
+ .garden-ui-slider input[type="range"] {
424
+ display: block;
425
+ width: 100%;
426
+ height: 38px;
427
+ margin: 0;
428
+ background: transparent;
429
+ cursor: ew-resize;
430
+ -webkit-appearance: none;
431
+ appearance: none;
432
+ }
433
+
434
+ .garden-ui-slider input[type="range"]:focus-visible { outline: none; }
435
+
436
+ .garden-ui-slider input[type="range"]::-webkit-slider-runnable-track {
437
+ height: 24px;
438
+ border: 0;
439
+ border-radius: 999px;
440
+ background: var(--gui-slider-track);
441
+ }
442
+
443
+ .garden-ui-slider input[type="range"]::-moz-range-track {
444
+ height: 24px;
445
+ border: 0;
446
+ border-radius: 999px;
447
+ background: var(--gui-slider-track);
448
+ }
449
+
450
+ .garden-ui-slider input[type="range"]::-webkit-slider-thumb {
451
+ width: 18px;
452
+ height: 18px;
453
+ margin-top: 3px;
454
+ border: 0;
455
+ border-radius: 50%;
456
+ background: var(--gui-slider-thumb);
457
+ box-shadow: none;
458
+ -webkit-appearance: none;
459
+ appearance: none;
460
+ transition: transform 120ms ease;
461
+ }
462
+
463
+ .garden-ui-slider input[type="range"]::-moz-range-thumb {
464
+ width: 18px;
465
+ height: 18px;
466
+ border: 0;
467
+ border-radius: 50%;
468
+ background: var(--gui-slider-thumb);
469
+ box-shadow: none;
470
+ }
471
+
472
+ .garden-ui-slider input[type="range"]:active::-webkit-slider-thumb { transform: scale(1.08); }
473
+
474
+ /* choice: ChatGPT segmented control, or a select for many options */
475
+ .garden-ui-choice {
476
+ display: flex;
477
+ flex-direction: column;
478
+ align-items: flex-start;
479
+ gap: 8px;
480
+ width: fit-content;
481
+ max-width: 100%;
482
+ color: var(--gui-muted);
483
+ font-size: 14px;
484
+ line-height: 20px;
485
+ }
486
+
487
+ .garden-ui-segmented {
488
+ display: inline-flex;
489
+ flex-wrap: wrap;
490
+ gap: 4px;
491
+ width: fit-content;
492
+ max-width: 100%;
493
+ }
494
+
495
+ .garden-ui-segmented button {
496
+ min-height: 28px;
497
+ padding: 0 12px;
498
+ border: 0;
499
+ border-radius: 999px;
500
+ background: transparent;
501
+ color: var(--gui-muted);
502
+ font-size: 13px;
503
+ transition: background-color 150ms ease, color 150ms ease;
504
+ }
505
+
506
+ .garden-ui-segmented button:hover:not([aria-pressed="true"]) { color: var(--gui-text); }
507
+
508
+ .garden-ui-segmented button[aria-pressed="true"] {
509
+ background: var(--gui-segment);
510
+ color: var(--gui-text);
511
+ font-weight: 500;
512
+ }
513
+
514
+ .garden-ui-choice select {
515
+ width: fit-content;
516
+ min-height: 36px;
517
+ padding: 0 34px 0 12px;
518
+ border: 1px solid var(--gui-border-strong);
519
+ border-radius: 10px;
520
+ background: var(--gui-control-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%23888' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center;
521
+ color: var(--gui-text);
522
+ font: inherit;
523
+ font-size: 14px;
524
+ -webkit-appearance: none;
525
+ appearance: none;
526
+ }
527
+
528
+ /* toggle: switch */
529
+ .garden-ui-toggle {
530
+ display: inline-flex;
531
+ align-items: center;
532
+ gap: 10px;
533
+ width: fit-content;
534
+ padding: 0;
535
+ border: 0;
536
+ background: none;
537
+ color: var(--gui-text);
538
+ font-size: 15px;
539
+ }
540
+
541
+ .garden-ui-switch {
542
+ position: relative;
543
+ flex-shrink: 0;
544
+ width: 36px;
545
+ height: 20px;
546
+ border-radius: 999px;
547
+ background: var(--gui-control-border);
548
+ transition: background-color 150ms ease;
549
+ }
550
+
551
+ .garden-ui-switch::after {
552
+ position: absolute;
553
+ top: 2px;
554
+ left: 2px;
555
+ width: 16px;
556
+ height: 16px;
557
+ border-radius: 50%;
558
+ background: #fff;
559
+ box-shadow: 0 1px 2px #00000033;
560
+ content: "";
561
+ transition: transform 150ms ease;
562
+ }
563
+
564
+ .garden-ui-toggle[aria-checked="true"] .garden-ui-switch { background: var(--gui-solid); }
565
+ .garden-ui-toggle[aria-checked="true"] .garden-ui-switch::after { background: var(--gui-on-solid); transform: translateX(16px); }
566
+
567
+ /* checklist: round checks, title and counter, a thin progress bar */
568
+ .garden-ui-checklist { display: flex; flex-direction: column; }
569
+
570
+ .garden-ui-checklist-head {
571
+ display: flex;
572
+ justify-content: space-between;
573
+ align-items: center;
574
+ gap: 8px;
575
+ }
576
+
577
+ .garden-ui-checklist-head strong { color: var(--gui-text); font-size: 16px; font-weight: 600; line-height: 1.4; }
578
+ .garden-ui-checklist-head > span { color: var(--gui-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
579
+
580
+ .garden-ui-checklist .garden-ui-progress { margin: 8px 0 4px; }
581
+
582
+ .garden-ui-checklist ul { margin: 0; padding: 0; list-style: none; }
583
+
584
+ .garden-ui-checklist li { padding: 5px 0; }
585
+
586
+ .garden-ui-checklist label { display: flex; align-items: flex-start; gap: 10px; min-height: 26px; cursor: pointer; }
587
+
588
+ .garden-ui-checklist input[type="checkbox"] {
589
+ flex: 0 0 20px;
590
+ width: 20px;
591
+ height: 20px;
592
+ margin: 2px 0 0;
593
+ border: 1px solid var(--gui-check-border);
594
+ border-radius: 50%;
595
+ background: var(--gui-control-bg);
596
+ cursor: pointer;
597
+ -webkit-appearance: none;
598
+ appearance: none;
599
+ transition: background-color 150ms ease, border-color 150ms ease;
600
+ }
601
+
602
+ .garden-ui-checklist input[type="checkbox"]:checked { border-color: var(--gui-solid); background: var(--gui-solid); }
603
+
604
+ .garden-ui-checklist input[type="checkbox"]:checked::after {
605
+ display: block;
606
+ width: 9px;
607
+ height: 5px;
608
+ margin: 5px 0 0 5px;
609
+ border-bottom: 2px solid var(--gui-on-solid);
610
+ border-left: 2px solid var(--gui-on-solid);
611
+ content: "";
612
+ transform: rotate(-45deg);
613
+ }
614
+
615
+ .garden-ui-checklist-text { display: flex; flex-direction: column; min-width: 0; }
616
+ .garden-ui-checklist-time { color: var(--gui-muted); font-size: 12px; line-height: 1.65; font-variant-numeric: tabular-nums; }
617
+ .garden-ui-checklist-title { color: var(--gui-text); font-size: 16px; line-height: 26px; }
618
+ .garden-ui-checklist-note { margin-top: 2px; color: var(--gui-muted); font-size: 13px; line-height: 1.65; }
619
+
620
+ .garden-ui-checklist-detailed li { padding: 12px 0; border-top: 1px solid var(--gui-border); }
621
+ .garden-ui-checklist-detailed li:first-child { border-top: 0; }
622
+ .garden-ui-checklist-detailed .garden-ui-checklist-title { font-weight: 600; }
623
+
624
+ .garden-ui-checklist li[data-done="true"] .garden-ui-checklist-title,
625
+ .garden-ui-checklist li[data-done="true"] .garden-ui-checklist-note,
626
+ .garden-ui-checklist li[data-done="true"] .garden-ui-checklist-time { color: var(--gui-completed); text-decoration: line-through; }
627
+
628
+ @media (forced-colors: active) {
629
+ .garden-ui-checklist input[type="checkbox"] { -webkit-appearance: auto; appearance: auto; }
630
+ .garden-ui-checklist input[type="checkbox"]:checked::after { display: none; }
631
+ }
632
+
633
+ /* display */
634
+ .garden-ui-stat { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: start; }
635
+
636
+ .garden-ui-stat-label {
637
+ color: var(--gui-muted);
638
+ font-size: 12px;
639
+ font-weight: 400;
640
+ line-height: 16px;
641
+ }
642
+
643
+ .garden-ui-stat-hint { color: var(--gui-muted); font-size: 14px; line-height: 20px; }
644
+
645
+ .garden-ui-stat-value {
646
+ color: var(--gui-tone-text, var(--gui-text));
647
+ font-size: 20px;
648
+ font-weight: 600;
649
+ line-height: 28px;
650
+ font-variant-numeric: tabular-nums;
651
+ }
652
+
653
+ .garden-ui-stat-sm .garden-ui-stat-value { font-size: 16px; line-height: 26px; }
654
+ .garden-ui-stat-lg .garden-ui-stat-value { font-size: 24px; line-height: 32px; }
655
+ .garden-ui-stat-value small { color: var(--gui-muted); font-size: 14px; font-weight: 400; }
656
+
657
+ .garden-ui-meter { display: flex; flex-direction: column; gap: 8px; }
658
+
659
+ .garden-ui-meter-head {
660
+ display: flex;
661
+ justify-content: space-between;
662
+ align-items: baseline;
663
+ gap: 12px;
664
+ color: var(--gui-muted);
665
+ font-size: 14px;
666
+ line-height: 20px;
667
+ }
668
+
669
+ .garden-ui-meter-head > span:last-child { color: var(--gui-text); font-weight: 600; font-variant-numeric: tabular-nums; }
670
+ .garden-ui-meter-head strong { color: var(--gui-danger-text); font-weight: 600; }
671
+
672
+ .garden-ui-meter-track {
673
+ display: flex;
674
+ gap: 2px;
675
+ height: 8px;
676
+ overflow: hidden;
677
+ border-radius: 999px;
678
+ background: var(--gui-progress-track);
679
+ }
680
+
681
+ .garden-ui-meter-fill { height: 100%; border-radius: 999px; background: var(--gui-tone, var(--gui-info)); transition: width 300ms ease; }
682
+ .garden-ui-meter-fill.garden-ui-tone-plain { background: var(--gui-solid); }
683
+ .garden-ui-meter[data-over="true"] .garden-ui-meter-fill { background: var(--gui-danger); }
684
+
685
+ .garden-ui-legend {
686
+ display: flex;
687
+ flex-wrap: wrap;
688
+ justify-content: flex-start;
689
+ gap: 4px 14px;
690
+ max-width: 100%;
691
+ margin: 0;
692
+ padding: 0;
693
+ color: var(--gui-muted);
694
+ font-size: 14px;
695
+ line-height: 20px;
696
+ list-style: none;
697
+ }
698
+
699
+ .garden-ui-legend li { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; }
700
+
701
+ .garden-ui-swatch {
702
+ width: 8px;
703
+ height: 8px;
704
+ border-radius: 50%;
705
+ background: var(--gui-series, var(--gui-tone, var(--gui-text)));
706
+ }
707
+
708
+ .garden-ui-badge {
709
+ display: inline-block;
710
+ padding: 2px 8px;
711
+ border-radius: 999px;
712
+ background: var(--gui-tone-soft, var(--gui-chip));
713
+ color: var(--gui-tone-text, var(--gui-text));
714
+ font-size: 12px;
715
+ font-weight: 500;
716
+ line-height: 16px;
717
+ vertical-align: 1px;
718
+ white-space: nowrap;
719
+ }
720
+
721
+ .garden-ui-badge.garden-ui-tone-plain,
722
+ .garden-ui-badge.garden-ui-tone-muted { background: var(--gui-chip); }
723
+
724
+ /* table: hairline rows, no vertical rules */
725
+ .garden-ui-table-wrap,
726
+ .garden-ui-grid-wrap { overflow-x: auto; }
727
+
728
+ .garden-ui-grid-wrap {
729
+ display: flex;
730
+ flex-direction: column;
731
+ align-items: flex-start;
732
+ width: fit-content;
733
+ max-width: 100%;
734
+ }
735
+
736
+ .garden-ui-table { width: 100%; border-collapse: collapse; font-size: 14px; font-weight: 400; line-height: 20px; color: #0d0d0d; }
737
+ .garden-ui-flow { align-items: center; text-align: center; gap: 8px; }
738
+ .garden-ui-card.garden-ui-flow { gap: 8px; }
739
+ .garden-ui-flow p { margin: 0; color: #0d0d0d; font-size: 16px; font-weight: 400; line-height: 26px; text-align: center; }
740
+ .garden-ui-flow svg { display: block; width: 16px; height: 16px; flex: none; }
741
+ .garden-ui-flow-arrow { color: #8f8f8f; }
742
+ .garden-ui-flow-loop { color: #5d5d5d; }
743
+
744
+ .garden-ui-table th,
745
+ .garden-ui-table td {
746
+ padding: 8px 8px 8px 0;
747
+ border: 0;
748
+ color: #0d0d0d;
749
+ font-size: 14px;
750
+ font-weight: 400;
751
+ line-height: 20px;
752
+ text-align: left;
753
+ }
754
+
755
+ .garden-ui-table thead th { font-weight: 600; }
756
+
757
+ .garden-ui-table tr { border-bottom: 1px solid rgba(0, 0, 0, 0.05); }
758
+ .garden-ui-table tr:last-child { border-bottom: 0; }
759
+
760
+ .garden-ui-table tbody th { font-size: 14px; font-weight: 400; }
761
+ .garden-ui-table [data-align="right"] { text-align: right; }
762
+ .garden-ui-table tr:last-child > * { border-bottom: 0; }
763
+ .garden-ui-table td:not(.garden-ui-tone-plain) { color: var(--gui-tone-text); }
764
+ .garden-ui-table tr[data-tone="row"] > th,
765
+ .garden-ui-table tr[data-tone="row"] > td { background: var(--gui-tone-soft); color: var(--gui-text); }
766
+ .garden-ui-table tr[data-tone="row"] > :first-child { border-radius: 10px 0 0 10px; }
767
+ .garden-ui-table tr[data-tone="row"] > :last-child { border-radius: 0 10px 10px 0; }
768
+
769
+ .garden-ui-table-kv thead { display: none; }
770
+ .garden-ui-table-kv tbody th,
771
+ .garden-ui-table-kv td { padding-top: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--gui-border-soft); }
772
+ .garden-ui-table-kv td { font-weight: 600; text-align: right; }
773
+
774
+ .garden-ui-note-trigger {
775
+ padding: 0;
776
+ border: 0;
777
+ border-bottom: 1px dashed currentColor;
778
+ background: none;
779
+ }
780
+
781
+ .garden-ui-note { min-height: 1.65em; margin: 0; color: var(--gui-muted); font-size: 14px; line-height: 20px; text-align: start; }
782
+
783
+ /* grid: rounded tiles tinted by tone */
784
+ .garden-ui-grid { border-collapse: separate; border-spacing: 4px; }
785
+
786
+ .garden-ui-grid th { padding: 0 6px; color: var(--gui-muted); font-size: 12px; font-weight: 400; text-align: center; }
787
+ .garden-ui-grid tbody th { text-align: right; }
788
+
789
+ .garden-ui-cell {
790
+ min-width: 40px;
791
+ height: 36px;
792
+ padding: 0 8px;
793
+ border: 1px solid transparent;
794
+ border-radius: 8px;
795
+ background: var(--gui-tone-soft, var(--gui-surface));
796
+ color: var(--gui-tone-text, var(--gui-text));
797
+ font-family: var(--gui-mono);
798
+ font-size: 12px;
799
+ font-variant-numeric: tabular-nums;
800
+ transition: transform 100ms ease, box-shadow 150ms ease;
801
+ }
802
+
803
+ .garden-ui-cell.garden-ui-tone-plain { background: var(--gui-surface); color: var(--gui-text); }
804
+ .garden-ui-cell.garden-ui-tone-cached { border: 1px dashed var(--gui-border-strong); background: transparent; }
805
+ .garden-ui-cell:hover { box-shadow: inset 0 0 0 1px var(--gui-border-strong); }
806
+ .garden-ui-cell[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--gui-solid); }
807
+
808
+ /* chart */
809
+ .garden-ui-chart { display: flex; flex-direction: column; gap: 8px; }
810
+
811
+ .garden-ui-chart-canvas {
812
+ position: relative;
813
+ padding: 8px 4px 0;
814
+ border-radius: 12px;
815
+ outline: none;
816
+ background: var(--gui-chart);
817
+ }
818
+ .garden-ui-chart-canvas:focus-visible { outline: 2px solid var(--gui-focus); outline-offset: 2px; }
819
+
820
+ .garden-ui-series-plain { --gui-series: var(--gui-series-plain); }
821
+ .garden-ui-series-accent { --gui-series: var(--gui-series-accent); }
822
+ .garden-ui-series-new { --gui-series: var(--gui-series-new); }
823
+ .garden-ui-series-waste { --gui-series: var(--gui-series-waste); }
824
+ .garden-ui-series-same { --gui-series: var(--gui-series-same); }
825
+ .garden-ui-series-muted,
826
+ .garden-ui-series-cached { --gui-series: var(--gui-subtle); }
827
+
828
+ .garden-ui-chart-grid { stroke: var(--gui-border); stroke-width: 1; stroke-dasharray: 2 4; }
829
+ .garden-ui-chart-axis { stroke: var(--gui-border); stroke-width: 1; }
830
+ .garden-ui-chart .garden-ui-legend { justify-content: center; }
831
+ .garden-ui-chart-tick,
832
+ .garden-ui-chart-label { fill: var(--gui-subtle); font-family: var(--gui-font); font-size: 12px; }
833
+ .garden-ui-chart-value { fill: var(--gui-text); font-family: var(--gui-font); font-size: 12px; font-weight: 600; }
834
+ .garden-ui-chart-line { fill: none; stroke: var(--gui-series); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
835
+ .garden-ui-chart-area { fill: var(--gui-series); fill-opacity: 0.1; stroke: none; }
836
+ .garden-ui-chart-bar { fill: var(--gui-series); }
837
+ .garden-ui-chart-point { fill: var(--gui-series); }
838
+ .garden-ui-chart-dot { fill: var(--paper, #faf9f5); stroke: var(--gui-series); stroke-width: 2; }
839
+ .garden-ui-chart-marker { stroke: var(--gui-border-strong); stroke-dasharray: 3 3; }
840
+ .garden-ui-chart-cross { stroke: var(--gui-border-strong); stroke-width: 1; }
841
+
842
+ .garden-ui-chart-drawn .garden-ui-chart-line { stroke-dasharray: 1; animation: garden-ui-draw 1.8s cubic-bezier(0.22, 1, 0.36, 1) both; }
843
+ .garden-ui-chart-drawn .garden-ui-chart-area,
844
+ .garden-ui-chart-drawn .garden-ui-chart-point { animation: garden-ui-appear 0.7s ease-out both; }
845
+ .garden-ui-chart-drawn .garden-ui-chart-bar { transform-box: fill-box; transform-origin: bottom; animation: garden-ui-grow 0.6s cubic-bezier(0.22, 1, 0.36, 1) both; }
846
+
847
+ @keyframes garden-ui-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
848
+ @keyframes garden-ui-appear { from { opacity: 0; } to { opacity: 1; } }
849
+ @keyframes garden-ui-grow { from { transform: scaleY(0); } to { transform: none; } }
850
+
851
+ .garden-ui-chart-tooltip {
852
+ position: absolute;
853
+ top: 8px;
854
+ display: flex;
855
+ flex-direction: column;
856
+ gap: 2px;
857
+ padding: 6px 10px;
858
+ border: 1px solid var(--gui-popover-border);
859
+ border-radius: 10px;
860
+ background: var(--gui-bg);
861
+ box-shadow: var(--gui-shadow);
862
+ color: var(--gui-text);
863
+ font-size: 12px;
864
+ line-height: 1.5;
865
+ pointer-events: none;
866
+ white-space: nowrap;
867
+ transform: translateX(8px);
868
+ }
869
+
870
+ .garden-ui-chart-tooltip[data-side="left"] { transform: translateX(calc(-100% - 8px)); }
871
+
872
+ /* media */
873
+ .garden-ui-image-stage { position: relative; overflow: hidden; border-radius: 12px; }
874
+ .garden-ui-image-stage img { display: block; width: 100%; height: 100%; object-fit: contain; }
875
+
876
+ .garden-ui-hotspot {
877
+ position: absolute;
878
+ min-width: 24px;
879
+ height: 24px;
880
+ padding: 0 6px;
881
+ border: 1px solid var(--gui-border-strong);
882
+ border-radius: 999px;
883
+ background: #fff;
884
+ box-shadow: 0 2px 6px #00000014;
885
+ color: #333;
886
+ font-size: 12px;
887
+ font-weight: 600;
888
+ line-height: 22px;
889
+ transform: translate(-50%, -50%);
890
+ transition: background-color 150ms ease, color 150ms ease;
891
+ }
892
+
893
+ .garden-ui-hotspot[aria-pressed="true"] { border-color: #111; background: #111; color: #fff; }
894
+
895
+ .garden-ui-code {
896
+ margin: 0;
897
+ padding: 12px 0;
898
+ overflow-x: auto;
899
+ border-radius: 12px;
900
+ background: var(--gui-code-bg);
901
+ font-family: var(--gui-mono);
902
+ font-size: 13px;
903
+ line-height: 1.6;
904
+ }
905
+
906
+ .garden-ui-code code { padding: 0; border-radius: 0; background: none; color: var(--gui-text); font-size: 13px; }
907
+ .garden-ui-code-line { display: block; padding: 0 14px 0 12px; box-shadow: inset 2px 0 0 transparent; }
908
+ .garden-ui-code-line[data-highlight="true"] { background: var(--gui-info-soft); box-shadow: inset 2px 0 0 var(--gui-accent); }
909
+ .garden-ui-code-number { display: inline-block; width: 3em; padding-right: 1em; color: var(--gui-subtle); text-align: right; user-select: none; }
910
+
911
+ .garden-ui-diagram-canvas { overflow-x: auto; padding: 12px; border-radius: 12px; background: var(--gui-code-bg); }
912
+ .garden-ui-diagram-canvas svg { max-width: 100%; height: auto; }
913
+ .garden-ui .garden-ui-diagram-canvas foreignObject,
914
+ .garden-ui .garden-ui-diagram-canvas foreignObject div,
915
+ .garden-ui .garden-ui-diagram-canvas .nodeLabel,
916
+ .garden-ui .garden-ui-diagram-canvas p {
917
+ font-family: ui-sans-serif, -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif !important;
918
+ font-size: 14px !important;
919
+ font-weight: 400 !important;
920
+ line-height: 1.3 !important;
921
+ letter-spacing: normal !important;
922
+ }
923
+ /* Selected nodes keep the 「全部」 look, text included. Only the rest fades. */
924
+ .garden-ui-diagram-canvas:has(.garden-ui-diagram-on) .node:not(.garden-ui-diagram-on),
925
+ .garden-ui-diagram-canvas:has(.garden-ui-diagram-on) .statediagram-state:not(.garden-ui-diagram-on),
926
+ .garden-ui-diagram-canvas:has(.garden-ui-diagram-on) .cluster:not(.garden-ui-diagram-on) { opacity: 0.22; }
927
+ .garden-ui-diagram-canvas .garden-ui-diagram-on,
928
+ .garden-ui-diagram-canvas .garden-ui-diagram-on text,
929
+ .garden-ui-diagram-canvas .garden-ui-diagram-on .nodeLabel { opacity: 1; }
930
+ .garden-ui-diagram-canvas path.garden-ui-diagram-on { stroke: var(--gui-accent); stroke-width: 2px; }
931
+
932
+ .garden-ui-sandbox {
933
+ display: block;
934
+ width: 100%;
935
+ min-height: 48px;
936
+ border: 0;
937
+ border-radius: 12px;
938
+ background: transparent;
939
+ }
940
+
941
+ /* intent: the author's words, shown like a message bubble */
942
+ .garden-ui-intent { border: 0; background: transparent; }
943
+ .garden-ui-intent .garden-ui-body { gap: 10px; padding: 14px 16px; border-radius: 18px; background: var(--gui-bubble); }
944
+ .garden-ui-intent-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; color: var(--gui-text); font-size: 13px; }
945
+ .garden-ui-intent-head strong { font-weight: 600; }
946
+ .garden-ui-intent-text { white-space: pre-wrap; }
947
+ .garden-ui-intent > figcaption { padding: 8px 16px 0; }
948
+
949
+ /* errors */
950
+ .garden-ui-error { border-color: var(--gui-danger-soft); }
951
+ .garden-ui-error .garden-ui-body { background: var(--gui-danger-soft); }
952
+ .garden-ui-error-title { color: var(--gui-danger-text); font-size: 15px; font-weight: 600; }
953
+ .garden-ui-diagnostics { margin: 0; padding: 0; list-style: none; font-size: 13px; }
954
+ .garden-ui-diagnostics li { display: flex; flex-wrap: wrap; gap: 8px; padding: 6px 0; border-top: 1px solid var(--gui-border); font-size: 13px; }
955
+ .garden-ui-error > figcaption { padding-top: 12px; }
956
+ .garden-ui-error-inline,
957
+ .garden-ui-unknown { color: var(--gui-danger-text); font-size: 13px; }
958
+
959
+ /* editor previews */
960
+ .garden-ui-preview { font-family: var(--gui-font); }
961
+ .garden-ui-preview-note { margin: 0 0 6px; color: var(--gui-danger-text); font-size: 13px; }
962
+
963
+ /* Category rail + a grid of name/preview cards. */
964
+ .garden-catalog {
965
+ display: grid;
966
+ grid-template-columns: 200px minmax(0, 1fr);
967
+ gap: 20px;
968
+ align-items: start;
969
+ color: var(--ink, var(--gui-text));
970
+ font-family: var(--font-mono), ui-monospace, monospace;
971
+ }
972
+
973
+ .garden-catalog-nav {
974
+ display: flex;
975
+ flex-direction: column;
976
+ gap: 4px;
977
+ min-height: calc(100vh - 150px);
978
+ padding: 16px 12px;
979
+ border: 1px solid var(--line, var(--gui-border));
980
+ border-radius: 16px;
981
+ background: var(--card, #fff);
982
+ }
983
+
984
+ .garden-catalog-nav input {
985
+ width: 100%;
986
+ height: 34px;
987
+ margin: 0 0 12px;
988
+ padding: 0 10px;
989
+ border: 1px solid var(--line, var(--gui-border));
990
+ border-radius: 8px;
991
+ background: transparent;
992
+ color: inherit;
993
+ font: inherit;
994
+ font-size: 13px;
995
+ }
996
+
997
+ .garden-catalog-nav input:focus-visible { border-color: var(--ink, var(--gui-text)); outline: none; }
998
+
999
+ .garden-catalog-nav button {
1000
+ display: block;
1001
+ width: 100%;
1002
+ margin: 0;
1003
+ padding: 10px 12px;
1004
+ border: 0;
1005
+ border-radius: 10px;
1006
+ background: none;
1007
+ color: var(--ink, var(--gui-text));
1008
+ font: inherit;
1009
+ font-size: 14px;
1010
+ line-height: 20px;
1011
+ text-align: left;
1012
+ cursor: pointer;
1013
+ }
1014
+
1015
+ .garden-catalog-nav button:hover { background: var(--paper-deep, #eeeeeb); }
1016
+ .garden-catalog-nav button[aria-current="page"] { background: var(--paper-deep, #eeeeeb); font-weight: 600; }
1017
+
1018
+ .garden-catalog-grid {
1019
+ display: grid;
1020
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1021
+ gap: 16px;
1022
+ align-items: start;
1023
+ }
1024
+
1025
+ .garden-catalog-card {
1026
+ display: flex;
1027
+ flex-direction: column;
1028
+ gap: 12px;
1029
+ min-width: 0;
1030
+ padding: 16px 16px 18px;
1031
+ border: 1px solid var(--line, var(--gui-border));
1032
+ border-radius: 14px;
1033
+ background: var(--card, #fff);
1034
+ }
1035
+
1036
+ .garden-catalog-card-name {
1037
+ margin: 0;
1038
+ padding: 0;
1039
+ border: 0;
1040
+ background: none;
1041
+ color: var(--ink, var(--gui-text));
1042
+ font: inherit;
1043
+ font-size: 14px;
1044
+ font-weight: 600;
1045
+ line-height: 20px;
1046
+ text-align: left;
1047
+ cursor: pointer;
1048
+ }
1049
+
1050
+ .garden-catalog-well {
1051
+ min-width: 0;
1052
+ padding: 4px 2px 0;
1053
+ }
1054
+
1055
+ .garden-catalog-well > .garden-ui { width: 100%; margin: 0; border: 0; background: transparent; }
1056
+ .garden-catalog-empty { margin: 0; color: var(--muted, var(--gui-muted)); font-size: 13px; }
1057
+ .garden-catalog-more { display: flex; flex-direction: column; gap: 8px; font-family: var(--gui-font); font-size: 13px; line-height: 20px; }
1058
+ .garden-catalog-more p { margin: 0; }
1059
+ .garden-catalog-phrases { color: var(--muted, var(--gui-muted)); }
1060
+ .garden-catalog-props { width: 100%; border-collapse: collapse; font-size: 12px; line-height: 18px; }
1061
+ .garden-catalog-props th,
1062
+ .garden-catalog-props td { padding: 8px 8px 8px 0; border: 0; border-bottom: 1px solid var(--line, var(--gui-border)); text-align: left; vertical-align: top; }
1063
+ .garden-catalog-props th { color: var(--muted, var(--gui-muted)); font-weight: 600; }
1064
+ .garden-catalog-props code { font-family: var(--gui-mono); font-size: 12px; }
1065
+ .garden-catalog-intro { font-size: 13px; line-height: 20px; }
1066
+ .garden-catalog-intro p { margin: 0 0 6px; }
1067
+ .garden-catalog-more pre { max-height: 180px; overflow: auto; margin: 0; padding: 10px; border-radius: 8px; background: var(--paper-deep, #eeeeeb); font-size: 11px; line-height: 1.45; }
1068
+
1069
+ @media (max-width: 1100px) {
1070
+ .garden-catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
1071
+ }
1072
+
1073
+ @media (max-width: 800px) {
1074
+ .garden-catalog { grid-template-columns: 1fr; }
1075
+ .garden-catalog-nav { min-height: 0; }
1076
+ .garden-catalog-grid { grid-template-columns: 1fr; }
1077
+ }
1078
+
1079
+ @media (max-width: 480px) {
1080
+ .garden-ui > figcaption { padding-top: 4px; }
1081
+ }
1082
+
1083
+ @media (prefers-reduced-motion: reduce) {
1084
+ .garden-ui *,
1085
+ .garden-ui *::after { transition: none !important; }
1086
+ .garden-ui-steps[data-animate="true"] .garden-ui-step[data-active="true"],
1087
+ .garden-ui-chart-drawn .garden-ui-chart-line,
1088
+ .garden-ui-chart-drawn .garden-ui-chart-area,
1089
+ .garden-ui-chart-drawn .garden-ui-chart-point,
1090
+ .garden-ui-chart-drawn .garden-ui-chart-bar { animation: none; }
1091
+ }
1092
+
1093
+ /* Article styles (.markdown-body) are declared later with equal specificity; keep them out of blocks. */
1094
+ .garden-ui .garden-ui-body p,
1095
+ .garden-ui .garden-ui-body li { margin: 0; font-family: inherit; }
1096
+ .garden-ui .garden-ui-body p:not([class]),
1097
+ .garden-ui .garden-ui-body ul:not([class]) > li,
1098
+ .garden-ui .garden-ui-body ol:not([class]) > li { color: inherit; font-size: 16px; line-height: 26px; }
1099
+ .garden-ui .garden-ui-body p,
1100
+ .garden-ui .garden-ui-card-title,
1101
+ .garden-ui > figcaption { text-align: start; }
1102
+ .garden-ui-stepper { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
1103
+ .garden-ui-stepper-label { color: var(--gui-muted); font-size: 12px; line-height: 16px; letter-spacing: 0.04em; }
1104
+ .garden-ui-stepper-row { display: flex; align-items: center; gap: 12px; }
1105
+ .garden-ui-stepper-value { color: var(--gui-text); font-size: 24px; font-weight: 600; line-height: 32px; font-variant-numeric: tabular-nums; }
1106
+ .garden-ui-stepper-unit { color: var(--gui-muted); font-size: 14px; line-height: 20px; }
1107
+
1108
+ .garden-ui-kicker { margin: 0; color: #5d5d5d; font-size: 12px; font-weight: 500; line-height: 16px; }
1109
+ .garden-ui-text-xs { margin: 0; color: #5d5d5d; font-size: 12px; font-weight: 400; line-height: 16px; }
1110
+ .garden-ui-title-2xl { margin: 0; color: #0d0d0d; font-size: 24px; font-weight: 600; line-height: 32px; }
1111
+ .garden-ui-subtitle { margin: 0; color: #0d0d0d; font-size: 16px; font-weight: 600; line-height: 26px; }
1112
+ .garden-ui-text-sm { margin: 0; color: #5d5d5d; font-size: 14px; font-weight: 400; line-height: 20px; }
1113
+ .garden-ui-caption { margin: 0; color: #5d5d5d; font-size: 14px; font-weight: 400; line-height: 18.2px; text-align: start; }
1114
+ .garden-ui-divider { height: 0; margin: 4px 0; border: 0; border-top: 1px solid var(--gui-border); }
1115
+
1116
+ .garden-ui-cite {
1117
+ display: inline-flex;
1118
+ align-items: center;
1119
+ gap: 4px;
1120
+ box-sizing: border-box;
1121
+ height: 20px;
1122
+ margin: -3px 0;
1123
+ padding: 4px 6px 4px 4px;
1124
+ border-radius: 999px;
1125
+ background: #f3f3f3;
1126
+ color: #5d5d5d;
1127
+ font-size: 9px;
1128
+ font-weight: 400;
1129
+ line-height: 9px;
1130
+ letter-spacing: normal;
1131
+ text-decoration: none;
1132
+ vertical-align: middle;
1133
+ position: relative;
1134
+ top: -2px;
1135
+ }
1136
+ .garden-ui-cite img,
1137
+ .garden-ui-cite-icon { width: 12px; height: 12px; border-radius: 2px; }
1138
+ .garden-ui-cite-icon { display: inline-block; background-position: center; background-size: contain; background-repeat: no-repeat; vertical-align: -2px; }
1139
+
1140
+ .garden-ui-pie { display: flex; flex-direction: column; align-items: stretch; gap: 0; margin: 0; }
1141
+ .garden-ui-pie-title { align-self: stretch; margin: 0 0 8px; color: var(--gui-text); font-size: 16px; font-weight: 600; line-height: 26px; text-align: start; }
1142
+ .garden-ui-pie-chart { position: relative; width: 100%; aspect-ratio: 742 / 400; }
1143
+ .garden-ui-pie-chart svg { display: block; width: 100%; height: 100%; }
1144
+ .garden-ui-pie-chart .garden-ui-legend {
1145
+ position: absolute;
1146
+ top: 89.25%;
1147
+ right: 0;
1148
+ left: 0;
1149
+ display: flex;
1150
+ flex-wrap: wrap;
1151
+ justify-content: center;
1152
+ gap: 6px 16px;
1153
+ margin: 0;
1154
+ padding: 12px 0 0;
1155
+ color: #0d0d0d;
1156
+ font-size: 14px;
1157
+ font-weight: 400;
1158
+ line-height: 18px;
1159
+ }
1160
+ .garden-ui-pie-chart .garden-ui-legend li { padding: 4px 8px; border-radius: 6px; gap: 6px; font-size: 14px; line-height: 18px; }
1161
+ .garden-ui-pie-chart .garden-ui-swatch { width: 10px; height: 10px; }
1162
+ .garden-ui-pie-note { margin: 16px 0 0; color: #8f8f8f; font-size: 12px; font-weight: 400; line-height: 16px; }
1163
+ .garden-ui .garden-ui-body ul:not([class]),
1164
+ .garden-ui .garden-ui-body ol:not([class]) { margin: 0; padding-left: 22px; }
1165
+ .garden-ui .garden-ui-body ul[class],
1166
+ .garden-ui .garden-ui-body ol[class] { margin: 0; padding-left: 0; list-style: none; }
1167
+ .garden-ui .garden-ui-body li::marker { color: var(--gui-subtle); }
1168
+ .garden-ui .garden-ui-body strong { color: inherit; }
1169
+ .garden-ui .garden-ui-body a { color: var(--gui-info-text); text-decoration-color: currentColor; text-underline-offset: 2px; }
1170
+ .garden-ui a.garden-ui-cite { color: #5d5d5d; font-size: 9px; line-height: 9px; letter-spacing: normal; text-decoration: none; }
1171
+ .garden-ui .garden-ui-legend,
1172
+ .garden-ui .garden-ui-checklist ul,
1173
+ .garden-ui .garden-ui-diagnostics { padding-left: 0; list-style: none; }
1174
+ .garden-ui .garden-ui-chart .garden-ui-legend,
1175
+ .garden-ui .garden-ui-pie .garden-ui-legend { justify-content: center; }
1176
+ .garden-ui .garden-ui-checklist li { margin: 0; padding: 5px 0; }
1177
+ .garden-ui .garden-ui-checklist-detailed li { padding: 12px 0; }
1178
+ .garden-ui table.garden-ui-table { display: table; width: 100%; margin: 0; border: 0; font-size: 14px; }
1179
+ .garden-ui table.garden-ui-grid { display: table; width: auto; margin: 0; border: 0; border-collapse: separate; border-spacing: 4px; font-size: 12px; }
1180
+ .garden-ui .garden-ui-grid tr { border: 0; background: none; }
1181
+ .garden-ui .garden-ui-table tr { border: 0; border-bottom: 1px solid rgba(0, 0, 0, 0.05); background: none; }
1182
+ .garden-ui .garden-ui-table tr:last-child { border-bottom: 0; }
1183
+ .garden-ui .garden-ui-table th,
1184
+ .garden-ui .garden-ui-table td { padding: 8px 8px 8px 0; border: 0; background: none; color: #0d0d0d; font-size: 14px; font-weight: 400; line-height: 20px; }
1185
+ .garden-ui .garden-ui-table thead th { color: #0d0d0d; font-size: 14px; font-weight: 600; }
1186
+ .garden-ui .garden-ui-table tbody th { color: #0d0d0d; font-size: 14px; font-weight: 400; }
1187
+ .garden-ui .garden-ui-table td:not(.garden-ui-tone-plain) { background: none; color: var(--gui-tone-text); }
1188
+ .garden-ui .garden-ui-table:has(tr[data-tone="row"]) th:first-child,
1189
+ .garden-ui .garden-ui-table:has(tr[data-tone="row"]) td:first-child { padding-left: 14px; }
1190
+ .garden-ui .garden-ui-table:has(tr[data-tone="row"]) th:last-child,
1191
+ .garden-ui .garden-ui-table:has(tr[data-tone="row"]) td:last-child { padding-right: 14px; }
1192
+ .garden-ui .garden-ui-table tr[data-tone="row"] > th,
1193
+ .garden-ui .garden-ui-table tr[data-tone="row"] > td { background: var(--gui-tone-soft); color: var(--gui-text); }
1194
+ .garden-ui .garden-ui-table tr[data-tone="row"] > :first-child { border-radius: 8px 0 0 8px; }
1195
+ .garden-ui .garden-ui-table tr[data-tone="row"] > :last-child { border-radius: 0 8px 8px 0; }
1196
+ .garden-ui .garden-ui-table-kv tbody th,
1197
+ .garden-ui .garden-ui-table-kv td { padding-top: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--gui-border-soft); }
1198
+ .garden-ui .garden-ui-table-kv td { font-weight: 600; text-align: right; }
1199
+ .garden-ui .garden-ui-table [data-align="right"] { text-align: right; }
1200
+ .garden-ui .garden-ui-grid th,
1201
+ .garden-ui .garden-ui-grid td { padding: 0; border: 0; background: none; }
1202
+ .garden-ui .garden-ui-grid th { padding: 0 6px; color: var(--gui-muted); font-size: 12px; font-weight: 400; }
1203
+ .garden-ui .garden-ui-grid thead th { text-align: center; }
1204
+ .garden-ui .garden-ui-grid tbody th { text-align: right; }
1205
+ .garden-ui .garden-ui-code { margin: 0; padding: 12px 0; border: 0; border-radius: 12px; background: var(--gui-code-bg); color: var(--gui-text); font-size: 13px; }
1206
+ .garden-ui .garden-ui-code::before { content: none; }
1207
+ .garden-ui .garden-ui-body input[type="checkbox"] { width: 20px; height: 20px; margin: 2px 0 0; }
1208
+ .garden-ui figcaption,
1209
+ .garden-ui > figcaption { margin: 0; border: 0; text-align: start; }
1210
+
1211
+ .garden-ui-typora { margin: 0.25em 0; text-align: left; white-space: normal; }
1212
+ .garden-suggest { display: flex; align-items: center; gap: 8px; }
1213
+ .garden-suggest-thumb { width: 72px; height: 48px; object-fit: cover; border-radius: 4px; background: #f6f3ec; flex: none; }
1214
+ .garden-suggest-label { font-size: 13px; line-height: 1.3; }
1215
+ .garden-suggest-hint { opacity: 0.65; font-size: 12px; }