@mim/histui 0.1.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.
package/src/styles.css ADDED
@@ -0,0 +1,780 @@
1
+ .histui-timeline {
2
+ --background: #0f1412;
3
+ --surface: #151b18;
4
+ --surface-raised: #202821;
5
+ --panel: #111714;
6
+ --text: #edf2ea;
7
+ --muted: #9ba89d;
8
+ --line: #35433b;
9
+ --grid: #26322c;
10
+ --accent: #4fb7a5;
11
+ --accent2: #d4b45f;
12
+ --accent3: #f0705a;
13
+ --accent4: #81c7d4;
14
+ --shadow: rgba(0, 0, 0, 0.42);
15
+ --type-event: var(--accent3);
16
+ --type-process: var(--accent);
17
+ --type-period: var(--accent2);
18
+ --type-phenomenon: var(--accent4);
19
+ --type-structure: var(--accent2);
20
+ --body-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
21
+ --mono-font: "SFMono-Regular", "Cascadia Code", "Roboto Mono", Consolas, monospace;
22
+ display: block;
23
+ width: 100%;
24
+ height: 100%;
25
+ min-height: 520px;
26
+ overflow: hidden;
27
+ color: var(--text);
28
+ background:
29
+ linear-gradient(90deg, color-mix(in srgb, var(--grid) 18%, transparent) 1px, transparent 1px),
30
+ linear-gradient(0deg, color-mix(in srgb, var(--grid) 14%, transparent) 1px, transparent 1px),
31
+ var(--background);
32
+ background-size: 44px 44px;
33
+ font-family: var(--body-font);
34
+ letter-spacing: 0;
35
+ }
36
+
37
+ .histui-timeline *,
38
+ .histui-timeline *::before,
39
+ .histui-timeline *::after {
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ .histui-timeline button,
44
+ .histui-timeline input,
45
+ .histui-timeline select {
46
+ font: inherit;
47
+ }
48
+
49
+ .histui-timeline button {
50
+ color: inherit;
51
+ }
52
+
53
+ .histui-timeline-workbench {
54
+ display: grid;
55
+ grid-template-rows: auto minmax(0, 1fr) auto;
56
+ width: 100%;
57
+ height: 100%;
58
+ min-width: 0;
59
+ min-height: 0;
60
+ background:
61
+ linear-gradient(180deg, color-mix(in srgb, var(--surface) 44%, transparent), transparent 34%),
62
+ color-mix(in srgb, var(--background) 94%, var(--surface));
63
+ }
64
+
65
+ .histui-timeline.has-hidden-controls .histui-timeline-workbench {
66
+ grid-template-rows: minmax(0, 1fr) auto;
67
+ }
68
+
69
+ .histui-timeline-head {
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: space-between;
73
+ gap: 18px;
74
+ padding: 14px 16px 12px;
75
+ border-bottom: 1px solid var(--line);
76
+ background: color-mix(in srgb, var(--surface) 82%, transparent);
77
+ }
78
+
79
+ .histui-timeline-head[hidden] {
80
+ display: none;
81
+ }
82
+
83
+ .histui-timeline-title {
84
+ min-width: 0;
85
+ }
86
+
87
+ .histui-eyebrow {
88
+ margin: 0 0 4px;
89
+ color: var(--muted);
90
+ font-family: var(--mono-font);
91
+ font-size: 11px;
92
+ line-height: 1.1;
93
+ text-transform: uppercase;
94
+ }
95
+
96
+ .histui-timeline-title h2 {
97
+ margin: 0 0 5px;
98
+ max-width: 860px;
99
+ overflow: hidden;
100
+ font-size: 19px;
101
+ line-height: 1.2;
102
+ text-overflow: ellipsis;
103
+ white-space: nowrap;
104
+ }
105
+
106
+ .histui-timeline-title p:last-child {
107
+ display: -webkit-box;
108
+ margin: 0;
109
+ max-width: 920px;
110
+ overflow: hidden;
111
+ color: var(--muted);
112
+ font-size: 13px;
113
+ line-height: 1.45;
114
+ -webkit-box-orient: vertical;
115
+ -webkit-line-clamp: 2;
116
+ }
117
+
118
+ .histui-timeline-actions {
119
+ display: flex;
120
+ align-items: center;
121
+ justify-content: flex-end;
122
+ flex-wrap: wrap;
123
+ gap: 8px;
124
+ }
125
+
126
+ .timeline-stage {
127
+ position: relative;
128
+ min-height: 0;
129
+ overflow: hidden;
130
+ cursor: grab;
131
+ touch-action: none;
132
+ outline: none;
133
+ user-select: none;
134
+ }
135
+
136
+ .timeline-stage:focus-visible {
137
+ box-shadow: inset 0 0 0 2px var(--accent);
138
+ }
139
+
140
+ .timeline-stage.is-dragging {
141
+ cursor: grabbing;
142
+ }
143
+
144
+ .timeline-stage.has-hit-hover {
145
+ cursor: pointer;
146
+ }
147
+
148
+ .timeline-stage.is-explode-mode {
149
+ background:
150
+ linear-gradient(90deg, color-mix(in srgb, var(--accent4) 7%, transparent) 1px, transparent 1px),
151
+ linear-gradient(0deg, color-mix(in srgb, var(--accent2) 6%, transparent) 1px, transparent 1px);
152
+ background-size: 32px 32px;
153
+ }
154
+
155
+ .histui-timeline-canvas,
156
+ .timeline-cards {
157
+ position: absolute;
158
+ inset: 0;
159
+ }
160
+
161
+ .histui-timeline-canvas {
162
+ width: 100%;
163
+ height: 100%;
164
+ }
165
+
166
+ .timeline-cards {
167
+ pointer-events: none;
168
+ }
169
+
170
+ .event-card {
171
+ position: absolute;
172
+ left: var(--x);
173
+ top: var(--y);
174
+ z-index: var(--card-z, 10);
175
+ width: 284px;
176
+ max-width: min(284px, calc(100vw - 42px));
177
+ max-height: 188px;
178
+ padding: 12px;
179
+ overflow: hidden;
180
+ border: 1px solid color-mix(in srgb, var(--record-color) 55%, var(--line));
181
+ border-radius: 8px;
182
+ background:
183
+ linear-gradient(180deg, color-mix(in srgb, var(--surface-raised) 92%, var(--record-color) 8%), var(--surface));
184
+ box-shadow: 0 18px 40px var(--shadow);
185
+ color: var(--text);
186
+ pointer-events: auto;
187
+ text-align: start;
188
+ transform: translate(var(--shift-x), var(--shift-y));
189
+ transition:
190
+ border-color 180ms ease,
191
+ box-shadow 180ms ease,
192
+ filter 180ms ease,
193
+ transform 180ms ease,
194
+ background 180ms ease;
195
+ animation: histui-card-enter 180ms ease both;
196
+ }
197
+
198
+ .timeline-stage.is-dragging .event-card,
199
+ .timeline-stage.is-viewport-moving .event-card,
200
+ .event-card.is-motion-card {
201
+ opacity: 1;
202
+ transition:
203
+ border-color 120ms ease,
204
+ box-shadow 120ms ease,
205
+ filter 120ms ease,
206
+ background 120ms ease;
207
+ animation: none;
208
+ }
209
+
210
+ .event-card:hover,
211
+ .event-card:focus-visible,
212
+ .event-card.is-hovered,
213
+ .event-card.is-selected {
214
+ z-index: 200;
215
+ border-color: var(--record-color);
216
+ box-shadow:
217
+ 0 20px 42px var(--shadow),
218
+ 0 0 0 1px color-mix(in srgb, var(--record-color) 28%, transparent);
219
+ filter: saturate(1.08);
220
+ transform: translate(var(--shift-x), var(--shift-y)) scale(1.025);
221
+ }
222
+
223
+ .event-card.is-cluster-expanded {
224
+ border-color: color-mix(in srgb, var(--record-color) 72%, var(--accent2));
225
+ box-shadow:
226
+ 0 18px 40px var(--shadow),
227
+ 0 0 0 1px color-mix(in srgb, var(--accent2) 24%, transparent);
228
+ }
229
+
230
+ .event-card.is-exploded {
231
+ width: var(--card-width);
232
+ max-width: var(--card-width);
233
+ max-height: var(--card-max-height);
234
+ padding: 10px;
235
+ border-color: color-mix(in srgb, var(--record-color) 68%, var(--accent4));
236
+ background:
237
+ linear-gradient(180deg, color-mix(in srgb, var(--surface-raised) 86%, var(--record-color) 14%), color-mix(in srgb, var(--surface) 92%, var(--background)));
238
+ box-shadow:
239
+ 0 18px 34px color-mix(in srgb, var(--shadow) 86%, transparent),
240
+ 0 0 0 1px color-mix(in srgb, var(--record-color) 18%, transparent),
241
+ inset 0 1px 0 color-mix(in srgb, var(--text) 10%, transparent);
242
+ }
243
+
244
+ .event-card.is-exploded::before {
245
+ position: absolute;
246
+ inset-inline: 10px;
247
+ top: 6px;
248
+ height: 1px;
249
+ background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--record-color) 72%, var(--accent4)), transparent);
250
+ content: "";
251
+ opacity: 0.78;
252
+ }
253
+
254
+ .event-card.is-exploding-card {
255
+ animation: histui-explode-card var(--explode-duration) cubic-bezier(0.16, 0.84, 0.28, 1) both;
256
+ animation-delay: var(--explode-delay);
257
+ }
258
+
259
+ .event-card:focus-visible {
260
+ outline: 2px solid color-mix(in srgb, var(--record-color) 72%, white);
261
+ outline-offset: 2px;
262
+ }
263
+
264
+ .event-card.mode-icon {
265
+ width: 176px;
266
+ max-height: 92px;
267
+ padding: 9px 10px;
268
+ }
269
+
270
+ .event-card.mode-short {
271
+ width: 222px;
272
+ max-height: 126px;
273
+ }
274
+
275
+ .event-card.is-exploded {
276
+ width: var(--card-width);
277
+ max-width: var(--card-width);
278
+ max-height: var(--card-max-height);
279
+ }
280
+
281
+ .event-card.is-exploded .card-date {
282
+ margin-bottom: 4px;
283
+ }
284
+
285
+ .event-card.is-exploded .card-title {
286
+ margin-bottom: 6px;
287
+ font-size: 12px;
288
+ }
289
+
290
+ .event-card.is-exploded .card-meta {
291
+ gap: 4px;
292
+ font-size: 9px;
293
+ }
294
+
295
+ .event-card.is-exploded .card-meta > span,
296
+ .event-card.is-exploded .card-chip {
297
+ padding: 1px 5px;
298
+ }
299
+
300
+ .card-date {
301
+ display: block;
302
+ margin-bottom: 6px;
303
+ color: var(--accent2);
304
+ font-family: var(--mono-font);
305
+ font-size: 11px;
306
+ line-height: 1.3;
307
+ }
308
+
309
+ .card-title {
310
+ display: flex;
311
+ align-items: flex-start;
312
+ gap: 7px;
313
+ min-width: 0;
314
+ margin-bottom: 8px;
315
+ font-weight: 760;
316
+ line-height: 1.2;
317
+ }
318
+
319
+ .card-title > span:last-child {
320
+ display: -webkit-box;
321
+ overflow: hidden;
322
+ -webkit-box-orient: vertical;
323
+ -webkit-line-clamp: 2;
324
+ }
325
+
326
+ .card-emoji {
327
+ flex: 0 0 auto;
328
+ }
329
+
330
+ .card-meta {
331
+ display: flex;
332
+ align-items: center;
333
+ flex-wrap: wrap;
334
+ gap: 5px;
335
+ color: var(--muted);
336
+ font-family: var(--mono-font);
337
+ font-size: 10px;
338
+ line-height: 1.35;
339
+ }
340
+
341
+ .card-meta > span,
342
+ .card-chip {
343
+ padding: 2px 6px;
344
+ border: 1px solid color-mix(in srgb, var(--line) 78%, transparent);
345
+ border-radius: 999px;
346
+ background: color-mix(in srgb, var(--panel) 76%, transparent);
347
+ }
348
+
349
+ .event-card p {
350
+ display: -webkit-box;
351
+ margin: 8px 0 0;
352
+ overflow: hidden;
353
+ color: var(--muted);
354
+ font-size: 12px;
355
+ line-height: 1.45;
356
+ -webkit-box-orient: vertical;
357
+ -webkit-line-clamp: 3;
358
+ }
359
+
360
+ .stage-hint {
361
+ position: absolute;
362
+ inset-block-end: 12px;
363
+ inset-inline-start: 14px;
364
+ z-index: 4;
365
+ max-width: min(560px, calc(100% - 28px));
366
+ padding: 7px 10px;
367
+ border: 1px solid var(--line);
368
+ border-radius: 8px;
369
+ background: color-mix(in srgb, var(--panel) 82%, transparent);
370
+ color: var(--muted);
371
+ font-family: var(--mono-font);
372
+ font-size: 11px;
373
+ line-height: 1.3;
374
+ pointer-events: none;
375
+ transition:
376
+ border-color 180ms ease,
377
+ background 180ms ease,
378
+ color 180ms ease;
379
+ }
380
+
381
+ .cluster-tooltip {
382
+ position: absolute;
383
+ z-index: 260;
384
+ width: min(260px, calc(100% - 28px));
385
+ padding: 10px 11px;
386
+ border: 1px solid color-mix(in srgb, var(--accent2) 58%, var(--line));
387
+ border-radius: 8px;
388
+ background: color-mix(in srgb, var(--surface-raised) 95%, var(--accent2) 5%);
389
+ box-shadow:
390
+ 0 18px 34px var(--shadow),
391
+ 0 0 0 1px color-mix(in srgb, var(--text) 8%, transparent);
392
+ color: var(--text);
393
+ font-size: 12px;
394
+ line-height: 1.35;
395
+ pointer-events: none;
396
+ transform: translate(-50%, -100%);
397
+ animation: histui-tooltip-enter 150ms ease both;
398
+ }
399
+
400
+ .cluster-tooltip[hidden] {
401
+ display: none;
402
+ }
403
+
404
+ .cluster-tooltip[data-placement="below"] {
405
+ transform: translate(-50%, 0);
406
+ }
407
+
408
+ .cluster-tooltip strong,
409
+ .cluster-tooltip span {
410
+ display: block;
411
+ }
412
+
413
+ .cluster-tooltip strong {
414
+ margin-bottom: 7px;
415
+ color: var(--accent2);
416
+ font-family: var(--mono-font);
417
+ font-size: 11px;
418
+ text-transform: uppercase;
419
+ }
420
+
421
+ .cluster-tooltip ul {
422
+ display: grid;
423
+ gap: 3px;
424
+ margin: 0 0 7px;
425
+ padding-inline-start: 16px;
426
+ color: var(--muted);
427
+ }
428
+
429
+ .cluster-tooltip span {
430
+ color: var(--accent4);
431
+ font-family: var(--mono-font);
432
+ font-size: 11px;
433
+ }
434
+
435
+ .timeline-zoom-bar {
436
+ position: relative;
437
+ min-height: 76px;
438
+ overflow: hidden;
439
+ border-top: 1px solid var(--line);
440
+ background:
441
+ linear-gradient(180deg, color-mix(in srgb, var(--surface) 80%, transparent), color-mix(in srgb, var(--panel) 92%, transparent)),
442
+ var(--panel);
443
+ cursor: crosshair;
444
+ outline: none;
445
+ touch-action: none;
446
+ user-select: none;
447
+ }
448
+
449
+ .timeline-zoom-bar:focus-visible {
450
+ box-shadow: inset 0 0 0 2px var(--accent);
451
+ }
452
+
453
+ .timeline-zoom-bar.is-pan {
454
+ cursor: grabbing;
455
+ }
456
+
457
+ .timeline-zoom-bar.is-start,
458
+ .timeline-zoom-bar.is-end {
459
+ cursor: ew-resize;
460
+ }
461
+
462
+ .zoom-bar-canvas {
463
+ position: absolute;
464
+ inset: 0;
465
+ width: 100%;
466
+ height: 100%;
467
+ }
468
+
469
+ .zoom-window,
470
+ .zoom-selection {
471
+ position: absolute;
472
+ top: 14px;
473
+ bottom: 17px;
474
+ border-radius: 8px;
475
+ pointer-events: none;
476
+ }
477
+
478
+ .zoom-window {
479
+ z-index: 3;
480
+ border: 1px solid color-mix(in srgb, var(--accent) 72%, var(--line));
481
+ background:
482
+ linear-gradient(180deg, color-mix(in srgb, var(--accent) 16%, transparent), color-mix(in srgb, var(--accent4) 8%, transparent));
483
+ box-shadow:
484
+ inset 0 0 0 1px color-mix(in srgb, var(--text) 8%, transparent),
485
+ 0 10px 26px color-mix(in srgb, var(--shadow) 66%, transparent);
486
+ cursor: crosshair;
487
+ pointer-events: auto;
488
+ }
489
+
490
+ .timeline-zoom-bar:not(.is-interacting) .zoom-window {
491
+ transition:
492
+ left 180ms ease,
493
+ width 180ms ease,
494
+ border-color 160ms ease,
495
+ background 160ms ease;
496
+ }
497
+
498
+ .timeline-zoom-bar.is-selecting .zoom-window {
499
+ opacity: 0.72;
500
+ }
501
+
502
+ .zoom-window-label {
503
+ position: absolute;
504
+ left: 50%;
505
+ top: -13px;
506
+ max-width: min(220px, calc(100vw - 80px));
507
+ overflow: hidden;
508
+ color: var(--muted);
509
+ font-family: var(--mono-font);
510
+ font-size: 10px;
511
+ line-height: 1;
512
+ text-overflow: ellipsis;
513
+ transform: translateX(-50%);
514
+ white-space: nowrap;
515
+ pointer-events: none;
516
+ }
517
+
518
+ .zoom-handle {
519
+ position: absolute;
520
+ top: -5px;
521
+ bottom: -5px;
522
+ z-index: 4;
523
+ width: 16px;
524
+ border: 1px solid color-mix(in srgb, var(--accent2) 72%, var(--line));
525
+ border-radius: 7px;
526
+ background:
527
+ linear-gradient(180deg, color-mix(in srgb, var(--surface-raised) 82%, var(--accent2) 18%), var(--surface));
528
+ box-shadow:
529
+ 0 8px 16px color-mix(in srgb, var(--shadow) 68%, transparent),
530
+ inset 0 0 0 1px color-mix(in srgb, var(--text) 8%, transparent);
531
+ cursor: ew-resize;
532
+ pointer-events: auto;
533
+ }
534
+
535
+ .zoom-handle::before {
536
+ position: absolute;
537
+ top: 50%;
538
+ left: 50%;
539
+ width: 2px;
540
+ height: 18px;
541
+ border-inline: 1px solid color-mix(in srgb, var(--accent2) 72%, var(--muted));
542
+ content: "";
543
+ opacity: 0.72;
544
+ transform: translate(-50%, -50%);
545
+ }
546
+
547
+ .zoom-handle:hover,
548
+ .zoom-handle:focus-visible {
549
+ border-color: var(--accent2);
550
+ outline: none;
551
+ box-shadow:
552
+ 0 8px 18px color-mix(in srgb, var(--shadow) 70%, transparent),
553
+ 0 0 0 2px color-mix(in srgb, var(--accent2) 24%, transparent);
554
+ }
555
+
556
+ .zoom-handle-start {
557
+ left: -8px;
558
+ }
559
+
560
+ .zoom-handle-end {
561
+ right: -8px;
562
+ }
563
+
564
+ .zoom-selection {
565
+ z-index: 5;
566
+ border: 1px dashed var(--accent2);
567
+ background: color-mix(in srgb, var(--accent2) 15%, transparent);
568
+ box-shadow:
569
+ inset 0 0 0 1px color-mix(in srgb, var(--background) 36%, transparent),
570
+ 0 0 24px color-mix(in srgb, var(--accent2) 14%, transparent);
571
+ animation: histui-zoom-selection-enter 120ms ease both;
572
+ }
573
+
574
+ .zoom-selection[hidden] {
575
+ display: none;
576
+ }
577
+
578
+ .zoom-labels {
579
+ position: absolute;
580
+ right: 18px;
581
+ bottom: 5px;
582
+ left: 18px;
583
+ display: flex;
584
+ justify-content: space-between;
585
+ color: var(--muted);
586
+ font-family: var(--mono-font);
587
+ font-size: 10px;
588
+ line-height: 1;
589
+ pointer-events: none;
590
+ }
591
+
592
+ .histui-select-field {
593
+ display: grid;
594
+ gap: 5px;
595
+ width: 138px;
596
+ color: var(--muted);
597
+ font-size: 11px;
598
+ line-height: 1.2;
599
+ }
600
+
601
+ .histui-select-field select {
602
+ min-height: 34px;
603
+ min-width: 0;
604
+ padding: 0 34px 0 10px;
605
+ border: 1px solid var(--line);
606
+ border-radius: 7px;
607
+ background: var(--surface-raised);
608
+ color: var(--text);
609
+ outline: none;
610
+ }
611
+
612
+ .histui-timeline[dir="rtl"] .histui-select-field select {
613
+ padding: 0 10px 0 34px;
614
+ }
615
+
616
+ .histui-select-field select:focus {
617
+ border-color: var(--accent);
618
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 25%, transparent);
619
+ }
620
+
621
+ .histui-icon-button,
622
+ .histui-text-button,
623
+ .histui-viewport-chip,
624
+ .histui-toggle-pill {
625
+ min-height: 34px;
626
+ border: 1px solid var(--line);
627
+ border-radius: 7px;
628
+ background: var(--surface-raised);
629
+ color: var(--text);
630
+ }
631
+
632
+ .histui-icon-button {
633
+ display: grid;
634
+ place-items: center;
635
+ width: 36px;
636
+ padding: 0;
637
+ font-family: var(--mono-font);
638
+ font-weight: 760;
639
+ }
640
+
641
+ .histui-text-button {
642
+ padding: 0 12px;
643
+ }
644
+
645
+ .histui-viewport-chip {
646
+ display: inline-grid;
647
+ place-items: center;
648
+ padding: 0 10px;
649
+ color: var(--muted);
650
+ font-family: var(--mono-font);
651
+ font-size: 11px;
652
+ }
653
+
654
+ .histui-toggle-pill {
655
+ display: inline-flex;
656
+ align-items: center;
657
+ gap: 7px;
658
+ padding: 0 10px;
659
+ color: var(--muted);
660
+ font-size: 12px;
661
+ }
662
+
663
+ .histui-toggle-pill input {
664
+ accent-color: var(--accent);
665
+ }
666
+
667
+ @keyframes histui-card-enter {
668
+ from {
669
+ opacity: 0;
670
+ transform: translate(var(--shift-x), var(--shift-y)) scale(0.985);
671
+ }
672
+
673
+ to {
674
+ opacity: 1;
675
+ transform: translate(var(--shift-x), var(--shift-y)) scale(1);
676
+ }
677
+ }
678
+
679
+ @keyframes histui-explode-card {
680
+ 0% {
681
+ opacity: 0;
682
+ filter: blur(2px) saturate(0.78);
683
+ transform: translate(calc(var(--shift-x) + var(--explode-from-x)), calc(var(--shift-y) + var(--explode-from-y))) scale(0.72);
684
+ }
685
+
686
+ 62% {
687
+ opacity: 1;
688
+ filter: blur(0) saturate(1.08);
689
+ transform: translate(calc(var(--shift-x) + var(--explode-over-x)), calc(var(--shift-y) + var(--explode-over-y))) scale(1.035);
690
+ }
691
+
692
+ 100% {
693
+ opacity: 1;
694
+ filter: blur(0) saturate(1);
695
+ transform: translate(var(--shift-x), var(--shift-y)) scale(1);
696
+ }
697
+ }
698
+
699
+ @keyframes histui-tooltip-enter {
700
+ from {
701
+ opacity: 0;
702
+ }
703
+
704
+ to {
705
+ opacity: 1;
706
+ }
707
+ }
708
+
709
+ @keyframes histui-zoom-selection-enter {
710
+ from {
711
+ opacity: 0;
712
+ transform: scaleY(0.92);
713
+ }
714
+
715
+ to {
716
+ opacity: 1;
717
+ transform: scaleY(1);
718
+ }
719
+ }
720
+
721
+ @media (max-width: 900px) {
722
+ .histui-timeline-head {
723
+ align-items: flex-start;
724
+ flex-direction: column;
725
+ }
726
+
727
+ .histui-timeline-actions {
728
+ justify-content: flex-start;
729
+ }
730
+ }
731
+
732
+ @media (max-width: 620px) {
733
+ .histui-timeline {
734
+ min-height: 620px;
735
+ }
736
+
737
+ .histui-timeline-head {
738
+ padding: 12px;
739
+ }
740
+
741
+ .histui-timeline-actions {
742
+ width: 100%;
743
+ }
744
+
745
+ .histui-select-field {
746
+ width: calc(50% - 6px);
747
+ }
748
+
749
+ .histui-viewport-chip,
750
+ .histui-toggle-pill {
751
+ width: 100%;
752
+ justify-content: center;
753
+ }
754
+
755
+ .histui-timeline-title h2 {
756
+ white-space: normal;
757
+ }
758
+
759
+ .event-card {
760
+ width: min(248px, calc(100vw - 36px));
761
+ }
762
+
763
+ .event-card.mode-icon {
764
+ width: min(168px, calc(100vw - 36px));
765
+ }
766
+
767
+ .event-card.mode-short {
768
+ width: min(206px, calc(100vw - 36px));
769
+ }
770
+
771
+ .event-card.is-exploded {
772
+ width: var(--card-width);
773
+ max-width: var(--card-width);
774
+ max-height: var(--card-max-height);
775
+ }
776
+
777
+ .stage-hint {
778
+ inset-inline: 10px;
779
+ }
780
+ }