@nomideusz/svelte-calendar 0.8.0 → 0.10.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 (37) hide show
  1. package/README.md +29 -8
  2. package/dist/calendar/Calendar.svelte +187 -64
  3. package/dist/calendar/Calendar.svelte.d.ts +14 -0
  4. package/dist/core/clock.svelte.d.ts +1 -1
  5. package/dist/core/clock.svelte.js +8 -4
  6. package/dist/core/locale.d.ts +15 -1
  7. package/dist/core/locale.js +9 -2
  8. package/dist/core/timezone.d.ts +12 -0
  9. package/dist/core/timezone.js +31 -0
  10. package/dist/headless/create-calendar.svelte.js +12 -6
  11. package/dist/headless/types.d.ts +2 -0
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.js +1 -0
  14. package/dist/theme/auto.js +27 -6
  15. package/dist/theme/presets.d.ts +4 -4
  16. package/dist/theme/presets.js +11 -7
  17. package/dist/views/agenda/AgendaDay.svelte +260 -111
  18. package/dist/views/agenda/AgendaWeek.svelte +191 -66
  19. package/dist/views/mobile/MobileDay.svelte +409 -214
  20. package/dist/views/mobile/MobileWeek.svelte +137 -75
  21. package/dist/views/mobile/swipe.d.ts +28 -0
  22. package/dist/views/mobile/swipe.js +64 -0
  23. package/dist/views/month/MonthGrid.svelte +167 -31
  24. package/dist/views/planner/PlannerDay.svelte +156 -81
  25. package/dist/views/planner/PlannerWeek.svelte +1156 -631
  26. package/dist/views/planner/PlannerWeek.svelte.d.ts +2 -0
  27. package/dist/views/shared/context.svelte.d.ts +4 -0
  28. package/dist/views/shared/context.svelte.js +14 -9
  29. package/dist/views/shared/format.d.ts +2 -1
  30. package/dist/views/shared/format.js +8 -5
  31. package/dist/widget/CalendarWidget.svelte +33 -5
  32. package/dist/widget/CalendarWidget.svelte.d.ts +16 -2
  33. package/dist/widget/widget.d.ts +9 -0
  34. package/dist/widget/widget.js +59 -13
  35. package/package.json +1 -1
  36. package/widget/widget.js +3830 -2755
  37. package/widget/svelte-calendar.css +0 -3054
@@ -1,3054 +0,0 @@
1
-
2
- /* ─── Container ──────────────────────────────────── */
3
- .fs.svelte-mrwdy7 {
4
- position: relative;
5
- overflow: hidden;
6
- user-select: none;
7
- font-variant-numeric: tabular-nums;
8
- /* The track is px-sized from the container width; never let it feed
9
- back into our own intrinsic size (host flex/grid min-width:auto
10
- would otherwise loop container → hourWidth → track → container). */
11
- contain: inline-size;
12
- }
13
- .fs--auto.svelte-mrwdy7 { overflow: visible; }
14
-
15
- /* ─── Horizontal scroll ──────────────────────────── */
16
- .fs-scroll.svelte-mrwdy7 {
17
- width: 100%;
18
- height: 100%;
19
- overflow-x: auto;
20
- overflow-y: hidden;
21
- touch-action: pan-x;
22
- cursor: default;
23
- scrollbar-width: thin;
24
- scrollbar-color: var(--dt-scrollbar, rgba(0, 0, 0, 0.1)) transparent;
25
- }
26
- /* Auto height grows vertically, but horizontal containment must stay —
27
- overflow: visible here painted the whole track outside the calendar. */
28
- .fs--auto.svelte-mrwdy7 .fs-scroll:where(.svelte-mrwdy7) { height: auto; overflow-x: auto; overflow-y: hidden; }
29
- .fs-scroll.svelte-mrwdy7::-webkit-scrollbar { height: 5px; }
30
- .fs-scroll.svelte-mrwdy7::-webkit-scrollbar-thumb {
31
- background: var(--dt-scrollbar, rgba(0, 0, 0, 0.1));
32
- border-radius: 4px;
33
- }
34
- .fs-scroll.svelte-mrwdy7::-webkit-scrollbar-track { background: transparent; }
35
- .fs-readonly.svelte-mrwdy7 { cursor: grab; }
36
- .fs-grabbing.svelte-mrwdy7 { cursor: grabbing; }
37
-
38
- .fs-track.svelte-mrwdy7 {
39
- position: relative;
40
- height: 100%;
41
- }
42
-
43
- /* ─── Day block ──────────────────────────────────── */
44
- .fs-day.svelte-mrwdy7 {
45
- position: absolute;
46
- top: 0;
47
- height: 100%;
48
- border-left: 1px solid var(--dt-border-day, rgba(0, 0, 0, 0.14));
49
- box-sizing: border-box;
50
- }
51
- .fs-day.svelte-mrwdy7:first-of-type { border-left: none; }
52
- .fs-today.svelte-mrwdy7 { background: var(--dt-today-bg, rgba(37, 99, 235, 0.04)); }
53
- .fs-past.svelte-mrwdy7 { opacity: 0.7; }
54
-
55
- /* ─── Disabled day ───────────────────────────────── */
56
- .fs-disabled.svelte-mrwdy7 {
57
- opacity: 0.35;
58
- background: repeating-linear-gradient(
59
- 45deg,
60
- transparent,
61
- transparent 6px,
62
- var(--dt-border, rgba(0, 0, 0, 0.08)) 6px,
63
- var(--dt-border, rgba(0, 0, 0, 0.08)) 7px
64
- ) !important;
65
- }
66
-
67
- /* ─── Blocked slot overlay ───────────────────────── */
68
- .fs-blocked.svelte-mrwdy7 {
69
- position: absolute;
70
- top: 18px;
71
- bottom: 0;
72
- z-index: 3;
73
- background: repeating-linear-gradient(
74
- -45deg,
75
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent),
76
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 4px,
77
- transparent 4px,
78
- transparent 8px
79
- );
80
- border-radius: 4px;
81
- pointer-events: none;
82
- display: flex;
83
- align-items: flex-end;
84
- justify-content: center;
85
- padding-bottom: 6px;
86
- }
87
-
88
- .fs-blocked-label.svelte-mrwdy7 {
89
- font: 500 9px/1 var(--dt-sans, system-ui, sans-serif);
90
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
91
- text-transform: uppercase;
92
- letter-spacing: 0.04em;
93
- white-space: nowrap;
94
- }
95
-
96
- /* ─── Custom day header ──────────────────────────── */
97
- .fs-day-header-custom.svelte-mrwdy7 {
98
- position: absolute;
99
- top: 16px;
100
- left: 50%;
101
- transform: translateX(-50%);
102
- z-index: 4;
103
- pointer-events: auto;
104
- white-space: nowrap;
105
- }
106
-
107
- /* ─── Hour ticks ─────────────────────────────────── */
108
- .fs-tick.svelte-mrwdy7 {
109
- position: absolute;
110
- top: 0;
111
- bottom: 0;
112
- width: 0;
113
- }
114
- .fs-tick.svelte-mrwdy7::before {
115
- content: '';
116
- position: absolute;
117
- top: 18px;
118
- bottom: 0;
119
- width: 1px;
120
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
121
- }
122
- .fs-tick-lb.svelte-mrwdy7 {
123
- position: absolute;
124
- top: 2px;
125
- left: 5px;
126
- font: 500 10px/1 var(--dt-mono, ui-monospace, monospace);
127
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
128
- white-space: nowrap;
129
- pointer-events: none;
130
- }
131
- .fs-tick--half.svelte-mrwdy7 { bottom: auto; height: calc(18px + 8px); }
132
- .fs-tick--half.svelte-mrwdy7::before {
133
- top: 18px;
134
- height: 6px;
135
- bottom: auto;
136
- opacity: 0.4;
137
- }
138
-
139
- /* ─── Now-line ────────────────────────────────────── */
140
- .fs-now.svelte-mrwdy7 {
141
- position: absolute;
142
- top: 0;
143
- bottom: 0;
144
- z-index: 10;
145
- pointer-events: none;
146
- transform: translateX(-1px);
147
- }
148
- .fs-now-line.svelte-mrwdy7 {
149
- position: absolute;
150
- top: 0;
151
- bottom: 0;
152
- left: 0;
153
- width: 2px;
154
- background: var(--dt-accent, #2563eb);
155
- box-shadow: 0 0 8px var(--dt-glow, rgba(37, 99, 235, 0.25));
156
- }
157
- .fs-now-tag.svelte-mrwdy7 {
158
- position: absolute;
159
- top: 8px;
160
- left: 8px;
161
- font: 700 11px/1 var(--dt-mono, ui-monospace, monospace);
162
- color: var(--dt-accent, #2563eb);
163
- background: color-mix(in srgb, var(--dt-bg, #ffffff) 92%, var(--dt-accent, #2563eb));
164
- border: 1px solid var(--dt-accent-dim, rgba(37, 99, 235, 0.12));
165
- padding: 3px 6px;
166
- border-radius: 4px;
167
- white-space: nowrap;
168
- z-index: 1;
169
- }
170
- .fs-now-sec.svelte-mrwdy7 {
171
- font-weight: 400;
172
- opacity: 0.5;
173
- font-size: 10px;
174
- }
175
-
176
- /* ─── All-day strip ─────────────────────────────── */
177
- .fs-allday.svelte-mrwdy7 {
178
- position: absolute;
179
- left: 0;
180
- right: 0;
181
- display: flex;
182
- gap: 6px;
183
- padding: 0 8px;
184
- z-index: 7;
185
- overflow-x: auto;
186
- scrollbar-width: none;
187
- pointer-events: auto;
188
- }
189
- .fs-allday.svelte-mrwdy7::-webkit-scrollbar { display: none; }
190
-
191
- .fs-ad.svelte-mrwdy7 {
192
- display: flex;
193
- align-items: center;
194
- gap: 4px;
195
- padding: 2px 8px;
196
- border-radius: 4px;
197
- background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, var(--dt-bg, #ffffff)));
198
- border-left: 3px solid var(--ev-color);
199
- white-space: nowrap;
200
- flex-shrink: 0;
201
- cursor: pointer;
202
- transition: background 0.15s;
203
- }
204
- .fs-ad.svelte-mrwdy7:hover {
205
- background: color-mix(in srgb, var(--ev-color) 28%, var(--dt-surface, var(--dt-bg, #ffffff)));
206
- }
207
- .fs-ad.svelte-mrwdy7:focus-visible {
208
- outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
209
- outline-offset: 2px;
210
- }
211
- .fs-ad--selected.svelte-mrwdy7 {
212
- background: color-mix(in srgb, var(--ev-color) 30%, var(--dt-surface, var(--dt-bg, #ffffff)));
213
- border-left-width: 4px;
214
- }
215
-
216
- .fs-ad-dot.svelte-mrwdy7 {
217
- width: 6px;
218
- height: 6px;
219
- border-radius: 50%;
220
- background: var(--ev-color);
221
- flex-shrink: 0;
222
- }
223
-
224
- .fs-ad-title.svelte-mrwdy7 {
225
- font-size: 0.7rem;
226
- font-weight: 500;
227
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
228
- max-width: 120px;
229
- overflow: hidden;
230
- text-overflow: ellipsis;
231
- }
232
-
233
- .fs-ad-span.svelte-mrwdy7 {
234
- font-size: 0.6rem;
235
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
236
- flex-shrink: 0;
237
- }
238
-
239
- /* ─── Events ─────────────────────────────────────── */
240
- .fs-event.svelte-mrwdy7 {
241
- position: absolute;
242
- z-index: 6;
243
- border-radius: 6px;
244
- cursor: pointer;
245
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
246
- border: 1px solid color-mix(in srgb, var(--ev-color) 40%, transparent);
247
- /* Solid stripe at the start edge — matches the week view, keeps the
248
- pure tour color visible while the body stays a readable tint. */
249
- border-left: 3px solid var(--ev-color);
250
- overflow: hidden;
251
- display: flex;
252
- align-items: center;
253
- justify-content: center;
254
- /* top/height only: lane reflow animates on drop; left/width stay instant so
255
- mount-time width measurement and infinite-scroll rebases don't slide cards */
256
- transition: box-shadow 120ms, background 120ms,
257
- top 180ms cubic-bezier(0.2, 0.8, 0.2, 1), height 180ms cubic-bezier(0.2, 0.8, 0.2, 1);
258
- }
259
- .fs-event.svelte-mrwdy7:hover {
260
- background: color-mix(in srgb, var(--ev-color) 32%, var(--dt-surface, var(--dt-bg, #ffffff)));
261
- box-shadow: 0 2px 12px color-mix(in srgb, var(--ev-color) 25%, transparent);
262
- }
263
- .fs-event--selected.svelte-mrwdy7 {
264
- box-shadow: 0 0 0 2px var(--ev-color), 0 2px 14px color-mix(in srgb, var(--ev-color) 35%, transparent);
265
- }
266
- .fs-event--current.svelte-mrwdy7 {
267
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
268
- box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ev-color) 20%, transparent);
269
- }
270
- .fs-event--next.svelte-mrwdy7 {
271
- border-color: color-mix(in srgb, var(--ev-color) 75%, transparent);
272
- }
273
- .fs-event--dragging.svelte-mrwdy7 {
274
- opacity: 0.85;
275
- z-index: 50;
276
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.35);
277
- cursor: grabbing;
278
- /* fast ease toward the snapped cursor position */
279
- transition: left 80ms ease-out, width 80ms ease-out;
280
- }
281
- .fs-event--resizing.svelte-mrwdy7 {
282
- cursor: ew-resize;
283
- }
284
-
285
- /* ─── Resize handles ─────────────────────────────── */
286
- .fs-ev-handle.svelte-mrwdy7 {
287
- position: absolute;
288
- top: 0;
289
- bottom: 0;
290
- width: 6px;
291
- z-index: 2;
292
- cursor: ew-resize;
293
- touch-action: none;
294
- }
295
- .fs-ev-handle--start.svelte-mrwdy7 { left: 0; }
296
- .fs-ev-handle--end.svelte-mrwdy7 { right: 0; }
297
- .fs-ev-handle.svelte-mrwdy7::after {
298
- content: '';
299
- position: absolute;
300
- top: 20%;
301
- bottom: 20%;
302
- left: 2px;
303
- width: 2px;
304
- border-radius: 2px;
305
- background: var(--ev-color);
306
- opacity: 0;
307
- transition: opacity 120ms;
308
- }
309
- .fs-event.svelte-mrwdy7:hover .fs-ev-handle:where(.svelte-mrwdy7)::after { opacity: 0.55; }
310
-
311
- /* ─── Drag-to-create ghost ───────────────────────── */
312
- .fs-create-ghost.svelte-mrwdy7 {
313
- position: absolute;
314
- z-index: 40;
315
- border-radius: 6px;
316
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 14%, transparent);
317
- border: 1px dashed color-mix(in srgb, var(--dt-accent, #2563eb) 60%, transparent);
318
- display: flex;
319
- align-items: flex-start;
320
- justify-content: center;
321
- overflow: hidden;
322
- pointer-events: none;
323
- }
324
- .fs-create-ghost-time.svelte-mrwdy7 {
325
- font: 600 10px/1 var(--dt-mono, ui-monospace, monospace);
326
- color: var(--dt-accent, #2563eb);
327
- padding: 6px 4px;
328
- white-space: nowrap;
329
- }
330
-
331
- @media (prefers-reduced-motion: reduce) {
332
- .fs-event.svelte-mrwdy7,
333
- .fs-event--dragging.svelte-mrwdy7 {
334
- transition: box-shadow 120ms, background 120ms;
335
- }
336
- }
337
- .fs-event--cancelled.svelte-mrwdy7 {
338
- opacity: 0.5;
339
- }
340
- .fs-event--cancelled.svelte-mrwdy7 .fs-ev-title:where(.svelte-mrwdy7) {
341
- text-decoration: line-through;
342
- }
343
- .fs-event--tentative.svelte-mrwdy7 {
344
- opacity: 0.65;
345
- border: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
346
- }
347
- .fs-event--full.svelte-mrwdy7 {
348
- opacity: 0.55;
349
- }
350
- .fs-event--limited.svelte-mrwdy7 {
351
- opacity: 0.65;
352
- border: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
353
- }
354
- .fs-event--readonly.svelte-mrwdy7 {
355
- cursor: default;
356
- }
357
-
358
- /* Event inner — vertical text along lane height (day filmstrip) */
359
- .fs-ev-inner.svelte-mrwdy7 {
360
- writing-mode: vertical-rl;
361
- text-orientation: mixed;
362
- transform: rotate(180deg);
363
- display: flex;
364
- flex-direction: row;
365
- align-items: center;
366
- justify-content: center;
367
- gap: 6px;
368
- height: 100%;
369
- max-width: 100%;
370
- overflow: hidden;
371
- box-sizing: border-box;
372
- padding: 8px 4px;
373
- }
374
- .fs-ev-live.svelte-mrwdy7 {
375
- flex-shrink: 0;
376
- width: 7px;
377
- height: 7px;
378
- border-radius: 50%;
379
- background: var(--ev-color);
380
- }
381
- .fs-ev-next-badge.svelte-mrwdy7 {
382
- flex-shrink: 0;
383
- font: 600 8px/1 var(--dt-sans, system-ui, sans-serif);
384
- text-transform: uppercase;
385
- letter-spacing: 0.06em;
386
- color: var(--ev-color, var(--dt-accent));
387
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
388
- padding: 2px 5px;
389
- border-radius: 3px;
390
- white-space: nowrap;
391
- }
392
- .fs-ev-title.svelte-mrwdy7 {
393
- font: 600 13px/1.15 var(--dt-sans, system-ui, sans-serif);
394
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
395
- overflow: hidden;
396
- text-overflow: ellipsis;
397
- /* In vertical writing mode line boxes stack as columns — allow a
398
- second column before truncating so overlapping (short) cards keep
399
- readable names. Full name is in the title tooltip. */
400
- display: -webkit-box;
401
- -webkit-box-orient: vertical;
402
- -webkit-line-clamp: 2;
403
- white-space: normal;
404
- max-height: 100%;
405
- flex-shrink: 0;
406
- }
407
- .fs-ev-time.svelte-mrwdy7 {
408
- font: 400 10px/1 var(--dt-mono, ui-monospace, monospace);
409
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
410
- opacity: 0.7;
411
- white-space: nowrap;
412
- flex-shrink: 0;
413
- }
414
- .fs-ev-sub.svelte-mrwdy7 {
415
- font: 400 11px/1 var(--dt-sans, system-ui, sans-serif);
416
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
417
- opacity: 0.6;
418
- white-space: nowrap;
419
- overflow: hidden;
420
- text-overflow: ellipsis;
421
- max-height: 100%;
422
- flex-shrink: 0;
423
- }
424
- .fs-ev-loc.svelte-mrwdy7 {
425
- font: 400 10px/1 var(--dt-sans, system-ui, sans-serif);
426
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
427
- white-space: nowrap;
428
- overflow: hidden;
429
- text-overflow: ellipsis;
430
- max-height: 100%;
431
- flex-shrink: 0;
432
- }
433
- .fs-ev-tags.svelte-mrwdy7 {
434
- display: flex;
435
- flex-direction: row;
436
- gap: 4px;
437
- flex-shrink: 0;
438
- }
439
- .fs-ev-tag.svelte-mrwdy7 {
440
- font: 500 8px/1 var(--dt-sans, system-ui, sans-serif);
441
- color: var(--ev-color, var(--dt-accent));
442
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 18%, transparent);
443
- padding: 1px 4px;
444
- border-radius: 3px;
445
- white-space: nowrap;
446
- }
447
-
448
- /* ─── Focus-visible ──────────────────────────────── */
449
- .fs-event.svelte-mrwdy7:focus-visible {
450
- outline: 2px solid var(--dt-accent, #2563eb);
451
- outline-offset: 2px;
452
- }
453
-
454
- /* ─── Container ──────────────────────────────────── */
455
- .wg.svelte-j4rvbp {
456
- position: relative;
457
- overflow: hidden;
458
- display: flex;
459
- flex-direction: column;
460
- user-select: none;
461
- font-variant-numeric: tabular-nums;
462
- }
463
- .wg--auto.svelte-j4rvbp { overflow: visible; }
464
-
465
- /* ─── Scrollable body ────────────────────────────── */
466
- .wg-body.svelte-j4rvbp {
467
- flex: 1;
468
- overflow-y: auto;
469
- overflow-x: hidden;
470
- box-sizing: border-box;
471
- scrollbar-width: thin;
472
- scrollbar-color: var(--dt-scrollbar, rgba(0, 0, 0, 0.1)) transparent;
473
- }
474
- .wg--auto.svelte-j4rvbp .wg-body:where(.svelte-j4rvbp) { overflow-y: visible; }
475
-
476
- .wg-body.svelte-j4rvbp::-webkit-scrollbar { width: 4px; }
477
- .wg-body.svelte-j4rvbp::-webkit-scrollbar-thumb {
478
- background: var(--dt-scrollbar, rgba(0, 0, 0, 0.1));
479
- border-radius: 4px;
480
- }
481
- .wg-body.svelte-j4rvbp::-webkit-scrollbar-track { background: transparent; }
482
-
483
- /* ─── Week row ───────────────────────────────────── */
484
- .wg-week.svelte-j4rvbp {
485
- display: flex;
486
- border-radius: 10px;
487
- margin: 12px 8px;
488
- border: 1.5px solid var(--dt-border, rgba(0, 0, 0, 0.08));
489
- overflow: hidden;
490
- }
491
-
492
- .wg-week--current.svelte-j4rvbp {
493
- background: var(--dt-today-bg, rgba(37, 99, 235, 0.04));
494
- border: 2.5px solid var(--dt-accent, #2563eb);
495
- box-shadow: 0 0 0 1px color-mix(in srgb, var(--dt-accent, #2563eb) 15%, transparent);
496
- }
497
-
498
- /* ─── Week body ──────────────────────────────────── */
499
- .wg-week-body.svelte-j4rvbp {
500
- flex: 1;
501
- min-width: 0;
502
- display: flex;
503
- flex-direction: column;
504
- }
505
-
506
- /* ─── Day columns ────────────────────────────────── */
507
- .wg-days.svelte-j4rvbp {
508
- display: flex;
509
- flex: 1;
510
- }
511
-
512
- .wg-cell.svelte-j4rvbp {
513
- flex: 1;
514
- position: relative;
515
- min-height: 170px;
516
- padding: 4px 4px 8px;
517
- border-right: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
518
- cursor: pointer;
519
- transition: background 0.15s;
520
- }
521
-
522
- .wg-cell.svelte-j4rvbp:last-child { border-right: none; }
523
- .wg-cell.svelte-j4rvbp:hover { background: var(--dt-hover, rgba(0, 0, 0, 0.015)); }
524
-
525
- .wg-cell--today.svelte-j4rvbp { background: var(--dt-today-bg, rgba(37, 99, 235, 0.04)); }
526
- .wg-cell--today.svelte-j4rvbp:hover { background: color-mix(in srgb, var(--dt-accent, #2563eb) 6%, transparent); }
527
-
528
- /* Dim all cells by default; current week overrides to full brightness */
529
- .wg-cell.svelte-j4rvbp { opacity: 0.55; }
530
- .wg-cell.svelte-j4rvbp:hover { opacity: 0.75; }
531
- .wg-week--current.svelte-j4rvbp .wg-cell:where(.svelte-j4rvbp) { opacity: 1; }
532
- .wg-week--current.svelte-j4rvbp .wg-cell--past:where(.svelte-j4rvbp) { opacity: 0.8; }
533
- .wg-week--current.svelte-j4rvbp .wg-cell--past:where(.svelte-j4rvbp):hover { opacity: 0.9; }
534
-
535
- /* equalDays: when no cells are marked past, all are full brightness */
536
-
537
- .wg-cell--weekend.svelte-j4rvbp { background: var(--dt-weekend-bg, rgba(0, 0, 0, 0.012)); }
538
-
539
- /* ─── Disabled cell ──────────────────────────────── */
540
- .wg-cell--disabled.svelte-j4rvbp {
541
- background: repeating-linear-gradient(
542
- 45deg,
543
- transparent,
544
- transparent 6px,
545
- var(--dt-border, rgba(0, 0, 0, 0.08)) 6px,
546
- var(--dt-border, rgba(0, 0, 0, 0.08)) 7px
547
- ) !important;
548
- }
549
-
550
- /* ─── Blocked slot indicator ─────────────────────── */
551
- .wg-blocked.svelte-j4rvbp {
552
- display: flex;
553
- align-items: center;
554
- gap: 3px;
555
- padding: 2px 4px;
556
- border-radius: 3px;
557
- background: repeating-linear-gradient(
558
- -45deg,
559
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent),
560
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 3px,
561
- transparent 3px,
562
- transparent 6px
563
- );
564
- margin-bottom: 2px;
565
- min-height: 14px;
566
- }
567
-
568
- .wg-blocked-label.svelte-j4rvbp {
569
- font: 500 8px/1 var(--dt-sans, system-ui, sans-serif);
570
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
571
- text-transform: uppercase;
572
- letter-spacing: 0.04em;
573
- white-space: nowrap;
574
- }
575
-
576
- /* ─── Custom day header ──────────────────────────── */
577
- .wg-cell-custom-header.svelte-j4rvbp {
578
- padding: 0 4px 2px;
579
- }
580
-
581
- /* ─── Cell header (day label top-right) ──────────── */
582
- .wg-cell-hd.svelte-j4rvbp {
583
- display: flex;
584
- align-items: center;
585
- justify-content: flex-end;
586
- gap: 4px;
587
- padding: 4px 5px 2px 0;
588
- margin-bottom: 2px;
589
- }
590
-
591
- .wg-day-wd.svelte-j4rvbp {
592
- font: 400 10px / 1 var(--dt-sans, system-ui, sans-serif);
593
- letter-spacing: 0.04em;
594
- text-transform: uppercase;
595
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
596
- }
597
-
598
- .wg-week--current.svelte-j4rvbp .wg-day-wd:where(.svelte-j4rvbp) {
599
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
600
- }
601
-
602
- .wg-cell-hd--today.svelte-j4rvbp .wg-day-wd:where(.svelte-j4rvbp) {
603
- color: var(--dt-accent, #2563eb);
604
- font-weight: 600;
605
- }
606
-
607
- .wg-day-num.svelte-j4rvbp {
608
- font: 700 14px / 1 var(--dt-sans, system-ui, sans-serif);
609
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
610
- }
611
-
612
- .wg-week--current.svelte-j4rvbp .wg-day-num:where(.svelte-j4rvbp) {
613
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
614
- }
615
-
616
- .wg-day-num--today.svelte-j4rvbp {
617
- color: var(--dt-accent, #2563eb);
618
- font-weight: 900;
619
- }
620
-
621
- /* ─── Month label (top-left, behind events) ─────── */
622
- .wg-cell-month.svelte-j4rvbp {
623
- position: absolute;
624
- left: 4px;
625
- top: 4px;
626
- writing-mode: vertical-rl;
627
- transform: rotate(180deg);
628
- font: 800 22px / 1 var(--dt-sans, system-ui, sans-serif);
629
- letter-spacing: 0.02em;
630
- text-transform: uppercase;
631
- color: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent);
632
- pointer-events: none;
633
- white-space: nowrap;
634
- }
635
-
636
- .wg-week--current.svelte-j4rvbp .wg-cell-month:where(.svelte-j4rvbp) {
637
- color: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 8%, transparent);
638
- }
639
-
640
- /* ─── All-day / multi-day events ─────────────────── */
641
- .wg-allday.svelte-j4rvbp {
642
- display: flex;
643
- flex-direction: column;
644
- gap: 2px;
645
- margin-bottom: 4px;
646
- }
647
-
648
- .wg-ad.svelte-j4rvbp {
649
- display: flex;
650
- align-items: center;
651
- gap: 3px;
652
- padding: 2px 5px;
653
- border-radius: 3px;
654
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
655
- cursor: pointer;
656
- overflow: hidden;
657
- transition: background 0.12s;
658
- min-height: 18px;
659
- }
660
-
661
- .wg-ad--drag-preview.svelte-j4rvbp {
662
- position: relative;
663
- z-index: 8;
664
- opacity: 0.95;
665
- pointer-events: none;
666
- box-shadow: 0 6px 18px color-mix(in srgb, var(--ev-color) 26%, rgba(0, 0, 0, 0.22));
667
- outline: 1px solid color-mix(in srgb, var(--ev-color) 42%, transparent);
668
- cursor: grabbing;
669
- }
670
-
671
- .wg-ad.svelte-j4rvbp:hover {
672
- background: color-mix(in srgb, var(--ev-color) 32%, var(--dt-surface, var(--dt-bg, #ffffff)));
673
- }
674
-
675
- .wg-ad--start.svelte-j4rvbp {
676
- border-left: 2.5px solid var(--ev-color);
677
- }
678
-
679
- .wg-ad--mid.svelte-j4rvbp {
680
- border-radius: 0;
681
- border-left: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
682
- }
683
-
684
- .wg-ad--end.svelte-j4rvbp:not(.wg-ad--start) {
685
- border-radius: 0 3px 3px 0;
686
- border-left: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
687
- }
688
-
689
- .wg-ad--selected.svelte-j4rvbp {
690
- box-shadow: 0 0 0 1.5px var(--ev-color);
691
- }
692
-
693
- .wg-ad-title.svelte-j4rvbp {
694
- font: 500 10px / 1.1 var(--dt-sans, system-ui, sans-serif);
695
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
696
- white-space: nowrap;
697
- overflow: hidden;
698
- text-overflow: ellipsis;
699
- flex: 1;
700
- }
701
-
702
- .wg-ad-cont.svelte-j4rvbp {
703
- font-size: 8px;
704
- color: var(--ev-color);
705
- flex-shrink: 0;
706
- line-height: 1;
707
- }
708
-
709
- .wg-ad-arrow.svelte-j4rvbp {
710
- font-size: 8px;
711
- color: var(--ev-color);
712
- flex-shrink: 0;
713
- margin-left: auto;
714
- line-height: 1;
715
- }
716
-
717
- /* ─── Events ─────────────────────────────────────── */
718
- .wg-cell-events.svelte-j4rvbp {
719
- position: relative;
720
- display: flex;
721
- flex-direction: column;
722
- gap: 3px;
723
- }
724
-
725
- .wg-ev.svelte-j4rvbp {
726
- display: flex;
727
- align-items: center;
728
- flex-wrap: wrap;
729
- gap: 3px 5px;
730
- padding: 3px 6px;
731
- border-radius: 4px;
732
- background: color-mix(in srgb, var(--ev-color) 15%, var(--dt-surface, var(--dt-bg, #ffffff)));
733
- cursor: pointer;
734
- overflow: hidden;
735
- transition: background 0.12s;
736
- }
737
-
738
- .wg-ev.svelte-j4rvbp:hover {
739
- background: color-mix(in srgb, var(--ev-color) 25%, var(--dt-surface, var(--dt-bg, #ffffff)));
740
- }
741
-
742
- .wg-ev--drag-preview.svelte-j4rvbp {
743
- position: relative;
744
- z-index: 8;
745
- opacity: 0.95;
746
- pointer-events: none;
747
- background: color-mix(in srgb, var(--ev-color) 28%, var(--dt-surface, var(--dt-bg, #ffffff)));
748
- box-shadow: 0 6px 18px color-mix(in srgb, var(--ev-color) 24%, rgba(0, 0, 0, 0.22));
749
- outline: 1px solid color-mix(in srgb, var(--ev-color) 42%, transparent);
750
- cursor: grabbing;
751
- }
752
-
753
- .wg-ev--selected.svelte-j4rvbp {
754
- box-shadow: 0 0 0 1.5px var(--ev-color);
755
- }
756
-
757
- .wg-ev--current.svelte-j4rvbp {
758
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
759
- }
760
-
761
- .wg-ev--cancelled.svelte-j4rvbp {
762
- opacity: 0.5;
763
- }
764
- .wg-ev--cancelled.svelte-j4rvbp .wg-ev-title:where(.svelte-j4rvbp) {
765
- text-decoration: line-through;
766
- }
767
- .wg-ev--tentative.svelte-j4rvbp {
768
- opacity: 0.65;
769
- border: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
770
- }
771
- .wg-ev--full.svelte-j4rvbp {
772
- opacity: 0.55;
773
- }
774
- .wg-ev--limited.svelte-j4rvbp {
775
- opacity: 0.65;
776
- border: 1px dashed color-mix(in srgb, var(--ev-color) 40%, transparent);
777
- }
778
- .wg-ev--readonly.svelte-j4rvbp {
779
- cursor: default;
780
- }
781
-
782
- .wg-ev-time.svelte-j4rvbp {
783
- font: 400 10px / 1 var(--dt-sans, system-ui, sans-serif);
784
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
785
- flex-shrink: 0;
786
- white-space: nowrap;
787
- }
788
-
789
- .wg-ev-title.svelte-j4rvbp {
790
- font: 500 12px / 1.1 var(--dt-sans, system-ui, sans-serif);
791
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
792
- white-space: nowrap;
793
- overflow: hidden;
794
- text-overflow: ellipsis;
795
- }
796
-
797
- .wg-ev-loc.svelte-j4rvbp {
798
- font: 400 9px / 1 var(--dt-sans, system-ui, sans-serif);
799
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
800
- white-space: nowrap;
801
- overflow: hidden;
802
- text-overflow: ellipsis;
803
- flex-shrink: 1;
804
- }
805
-
806
- .wg-ev-more.svelte-j4rvbp {
807
- font: 500 10px / 1 var(--dt-sans, system-ui, sans-serif);
808
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
809
- padding: 2px 8px;
810
- cursor: pointer;
811
- }
812
-
813
- .wg-ev-more.svelte-j4rvbp:hover {
814
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
815
- }
816
-
817
- /* ─── Focus-visible ──────────────────────────────── */
818
- .wg-cell.svelte-j4rvbp:focus-visible {
819
- outline: 2px solid var(--dt-accent, #2563eb);
820
- outline-offset: -2px;
821
- }
822
-
823
- .wg-ev.svelte-j4rvbp:focus-visible {
824
- outline: 2px solid var(--ev-color, var(--dt-accent, #2563eb));
825
- outline-offset: 1px;
826
- }
827
-
828
- .wg-ev--dragging.svelte-j4rvbp {
829
- opacity: 0.6;
830
- cursor: grabbing;
831
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
832
- }
833
-
834
- /* ═══ Container ═══ */
835
- .ag.svelte-n8lbn1 {
836
- position: relative;
837
- overflow: hidden;
838
- user-select: none;
839
- display: flex;
840
- flex-direction: column;
841
- height: 100%;
842
- width: 100%;
843
- min-width: 0;
844
- box-sizing: border-box;
845
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
846
- font-family: var(--dt-sans, system-ui, sans-serif);
847
- }
848
-
849
- .ag--auto.svelte-n8lbn1 { height: auto; overflow: visible; }
850
-
851
- .ag--disabled.svelte-n8lbn1 {
852
- background-image: repeating-linear-gradient(
853
- 135deg,
854
- transparent,
855
- transparent 6px,
856
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 6px,
857
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 12px
858
- );
859
- }
860
-
861
- /* ═══ Body ═══ */
862
- .ag-body.svelte-n8lbn1 {
863
- flex: 1;
864
- min-height: 0;
865
- min-width: 0;
866
- display: flex;
867
- flex-direction: column;
868
- overflow-y: auto;
869
- overflow-x: hidden;
870
- padding-top: 8px;
871
- scrollbar-width: thin;
872
- scrollbar-color: var(--dt-border) transparent;
873
- }
874
- .ag--auto.svelte-n8lbn1 .ag-body:where(.svelte-n8lbn1) { overflow-y: visible; min-height: auto; }
875
- .ag-body.svelte-n8lbn1::-webkit-scrollbar {
876
- width: 4px;
877
- }
878
- .ag-body.svelte-n8lbn1::-webkit-scrollbar-thumb {
879
- background: var(--dt-border);
880
- border-radius: 2px;
881
- }
882
-
883
- /* ═══ All-day strip ═══ */
884
- .ag-allday.svelte-n8lbn1 {
885
- display: flex;
886
- align-items: center;
887
- gap: 8px;
888
- padding: 6px 16px;
889
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
890
- }
891
- .ag-allday-label.svelte-n8lbn1 {
892
- font: 600 10px/1 var(--dt-sans, system-ui, sans-serif);
893
- text-transform: uppercase;
894
- letter-spacing: 0.06em;
895
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
896
- white-space: nowrap;
897
- flex-shrink: 0;
898
- }
899
- .ag-allday-items.svelte-n8lbn1 {
900
- display: flex;
901
- flex-wrap: wrap;
902
- gap: 6px;
903
- }
904
- .ag-allday-chip.svelte-n8lbn1 {
905
- display: flex;
906
- align-items: center;
907
- gap: 5px;
908
- padding: 3px 10px;
909
- border-radius: 6px;
910
- background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
911
- border: 1px solid color-mix(in srgb, var(--ev-color) 20%, transparent);
912
- cursor: pointer;
913
- transition: background 0.15s, border-color 0.15s;
914
- }
915
- .ag-allday-chip.svelte-n8lbn1:hover {
916
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
917
- border-color: color-mix(in srgb, var(--ev-color) 35%, transparent);
918
- }
919
- .ag-allday-chip.svelte-n8lbn1:focus-visible {
920
- outline: 2px solid var(--dt-accent, #2563eb);
921
- outline-offset: 2px;
922
- }
923
- .ag-allday-chip--selected.svelte-n8lbn1 {
924
- border-color: var(--ev-color);
925
- background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, var(--dt-bg, #ffffff)));
926
- }
927
- .ag-allday-dot.svelte-n8lbn1 {
928
- width: 6px;
929
- height: 6px;
930
- border-radius: 50%;
931
- background: var(--ev-color);
932
- flex-shrink: 0;
933
- }
934
- .ag-allday-title.svelte-n8lbn1 {
935
- font: 500 0.75rem/1.2 var(--dt-sans, system-ui, sans-serif);
936
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
937
- white-space: nowrap;
938
- }
939
-
940
- /* ═══ Shared: event card ═══ */
941
- .ag-card.svelte-n8lbn1 {
942
- display: flex;
943
- align-items: stretch;
944
- border-radius: 10px;
945
- background: color-mix(in srgb, var(--ev-color) 15%, var(--dt-surface, var(--dt-bg, #ffffff)));
946
- border: 1px solid color-mix(in srgb, var(--ev-color) 10%, var(--dt-border, rgba(0, 0, 0, 0.08)));
947
- overflow: hidden;
948
- cursor: pointer;
949
- transition: background 150ms, border-color 150ms;
950
- }
951
- .ag-card.svelte-n8lbn1:hover {
952
- background: color-mix(in srgb, var(--ev-color) 25%, var(--dt-surface, var(--dt-bg, #ffffff)));
953
- border-color: color-mix(in srgb, var(--ev-color) 40%, transparent);
954
- }
955
- .ag-card.svelte-n8lbn1:focus-visible {
956
- outline: 2px solid var(--dt-accent, #2563eb);
957
- outline-offset: 2px;
958
- }
959
- .ag-card--selected.svelte-n8lbn1 {
960
- border-color: var(--ev-color);
961
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
962
- }
963
- .ag-card--cancelled.svelte-n8lbn1 {
964
- opacity: 0.5;
965
- }
966
- .ag-card--cancelled.svelte-n8lbn1 .ag-card-title:where(.svelte-n8lbn1) {
967
- text-decoration: line-through;
968
- }
969
- .ag-card--tentative.svelte-n8lbn1 {
970
- opacity: 0.65;
971
- border-style: dashed;
972
- }
973
- .ag-card--full.svelte-n8lbn1 {
974
- opacity: 0.55;
975
- }
976
- .ag-card--limited.svelte-n8lbn1 {
977
- opacity: 0.65;
978
- border-style: dashed;
979
- }
980
- .ag-card-body.svelte-n8lbn1 {
981
- padding: 10px 12px;
982
- display: flex;
983
- flex-direction: column;
984
- gap: 4px;
985
- min-width: 0;
986
- flex: 1;
987
- }
988
- .ag-card-top.svelte-n8lbn1 {
989
- display: flex;
990
- justify-content: space-between;
991
- align-items: flex-start;
992
- gap: 8px;
993
- min-width: 0;
994
- }
995
- .ag-card-title.svelte-n8lbn1 {
996
- font-size: 13px;
997
- font-weight: 600;
998
- line-height: 1.3;
999
- word-break: break-word;
1000
- flex: 1;
1001
- min-width: 0;
1002
- }
1003
- .ag-card-meta.svelte-n8lbn1 {
1004
- font-size: 11px;
1005
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1006
- font-family: var(--dt-mono, monospace);
1007
- line-height: 1;
1008
- }
1009
- .ag-card-dur.svelte-n8lbn1 {
1010
- margin-left: 6px;
1011
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1012
- }
1013
- .ag-card-sub.svelte-n8lbn1 {
1014
- font-size: 11px;
1015
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1016
- line-height: 1;
1017
- }
1018
- .ag-card-loc.svelte-n8lbn1 {
1019
- font-size: 10px;
1020
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1021
- line-height: 1;
1022
- }
1023
- .ag-card-tags.svelte-n8lbn1 {
1024
- display: flex;
1025
- gap: 4px;
1026
- flex-wrap: wrap;
1027
- }
1028
- .ag-card-tag.svelte-n8lbn1 {
1029
- font: 500 9px / 1 var(--dt-sans, system-ui, sans-serif);
1030
- color: var(--ev-color, var(--dt-accent));
1031
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
1032
- padding: 2px 5px;
1033
- border-radius: 3px;
1034
- white-space: nowrap;
1035
- }
1036
-
1037
- /* ── Queue card variant ── */
1038
- .ag-card--q.svelte-n8lbn1 {
1039
- transition: border-color 150ms, transform 100ms;
1040
- }
1041
- .ag-compact-row--queue.svelte-n8lbn1 {
1042
- margin: 0;
1043
- }
1044
-
1045
- .ag-card--q.svelte-n8lbn1 .ag-card-body:where(.svelte-n8lbn1) {
1046
- gap: 3px;
1047
- }
1048
- .ag-card--q.svelte-n8lbn1 .ag-card-tags:where(.svelte-n8lbn1) {
1049
- margin-top: 2px;
1050
- }
1051
- .ag-card-eta.svelte-n8lbn1 {
1052
- font-size: 9px;
1053
- font-weight: 600;
1054
- letter-spacing: 0.04em;
1055
- color: var(--dt-accent, #2563eb);
1056
- flex-shrink: 0;
1057
- white-space: nowrap;
1058
- }
1059
- .ag-card--hero.svelte-n8lbn1 {
1060
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
1061
- border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
1062
- }
1063
- .ag-card--hero.svelte-n8lbn1 .ag-card-title:where(.svelte-n8lbn1) {
1064
- font-size: 16px;
1065
- font-weight: 700;
1066
- }
1067
- .ag-card--hero.svelte-n8lbn1 .ag-card-eta:where(.svelte-n8lbn1) {
1068
- font-size: 11px;
1069
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 18%, transparent);
1070
- padding: 2px 7px;
1071
- border-radius: 4px;
1072
- }
1073
- .ag-card--hero.svelte-n8lbn1 .ag-card-body:where(.svelte-n8lbn1) {
1074
- padding: 14px 16px;
1075
- }
1076
-
1077
- /* ── Plan card variant ── */
1078
-
1079
- .ag-card--plan.svelte-n8lbn1 .ag-card-body:where(.svelte-n8lbn1) {
1080
- padding: 12px 14px;
1081
- gap: 3px;
1082
- }
1083
- .ag-card--plan.svelte-n8lbn1 .ag-card-top:where(.svelte-n8lbn1) {
1084
- align-items: baseline;
1085
- }
1086
- .ag-card-order.svelte-n8lbn1 {
1087
- font-size: 10px;
1088
- font-weight: 700;
1089
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1090
- font-family: var(--dt-mono, monospace);
1091
- flex-shrink: 0;
1092
- }
1093
- .ag-card--plan.svelte-n8lbn1 .ag-card-title:where(.svelte-n8lbn1) {
1094
- font-size: 14px;
1095
- }
1096
- .ag-card--first.svelte-n8lbn1 {
1097
- background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
1098
- border-color: color-mix(in srgb, var(--ev-color) 25%, transparent);
1099
- }
1100
- .ag-card--first.svelte-n8lbn1 .ag-card-title:where(.svelte-n8lbn1) {
1101
- font-size: 16px;
1102
- font-weight: 700;
1103
- }
1104
- .ag-card--plan.svelte-n8lbn1 .ag-card-sub:where(.svelte-n8lbn1) {
1105
- padding-left: 22px;
1106
- }
1107
- .ag-card--plan.svelte-n8lbn1 .ag-card-tags:where(.svelte-n8lbn1) {
1108
- padding-left: 22px;
1109
- margin-top: 2px;
1110
- }
1111
-
1112
- /* ═══ The Queue: 2-column grid ═══ */
1113
- .ag-q.svelte-n8lbn1 {
1114
- display: grid;
1115
- grid-template-columns: 1fr 1.8fr;
1116
- gap: 0;
1117
- flex: 1;
1118
- padding: 8px 0 10px;
1119
- min-height: 0;
1120
- }
1121
- /* Mobile: stack queue columns vertically */
1122
- .ag--mobile.svelte-n8lbn1 .ag-q:where(.svelte-n8lbn1) {
1123
- grid-template-columns: 1fr;
1124
- min-height: auto;
1125
- }
1126
- .ag--mobile.svelte-n8lbn1 .ag-q-status:where(.svelte-n8lbn1) {
1127
- border-right: none;
1128
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1129
- padding-bottom: 10px;
1130
- margin-bottom: 8px;
1131
- overflow-y: visible;
1132
- }
1133
- .ag--mobile.svelte-n8lbn1 .ag-q-queue:where(.svelte-n8lbn1) {
1134
- overflow-y: visible;
1135
- padding-bottom: 16px;
1136
- }
1137
- .ag--mobile.svelte-n8lbn1 .ag-card-meta:where(.svelte-n8lbn1) {
1138
- line-height: 1.3;
1139
- padding-bottom: 1px;
1140
- }
1141
- /* Mobile: larger touch targets */
1142
- .ag--mobile.svelte-n8lbn1 .ag-card-body:where(.svelte-n8lbn1) {
1143
- padding: 14px 16px;
1144
- }
1145
- .ag--mobile.svelte-n8lbn1 .ag-card-title:where(.svelte-n8lbn1) {
1146
- font-size: 15px;
1147
- }
1148
- .ag--mobile.svelte-n8lbn1 .ag-card--hero:where(.svelte-n8lbn1) .ag-card-title:where(.svelte-n8lbn1) {
1149
- font-size: 18px;
1150
- }
1151
- .ag--mobile.svelte-n8lbn1 .ag-card--hero:where(.svelte-n8lbn1) .ag-card-body:where(.svelte-n8lbn1) {
1152
- padding: 16px 18px;
1153
- }
1154
- .ag--mobile.svelte-n8lbn1 .ag-log-row:where(.svelte-n8lbn1) {
1155
- padding: 12px 0;
1156
- }
1157
- .ag--mobile.svelte-n8lbn1 .ag-card--plan:where(.svelte-n8lbn1) .ag-card-body:where(.svelte-n8lbn1) {
1158
- padding: 14px 16px;
1159
- }
1160
- .ag--mobile.svelte-n8lbn1 .ag-card--plan:where(.svelte-n8lbn1) .ag-card-title:where(.svelte-n8lbn1) {
1161
- font-size: 15px;
1162
- }
1163
- .ag-q-label.svelte-n8lbn1 {
1164
- font-size: 8px;
1165
- font-weight: 600;
1166
- letter-spacing: 0.14em;
1167
- text-transform: uppercase;
1168
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1169
- margin-bottom: 8px;
1170
- padding: 0 12px;
1171
- font-family: var(--dt-sans, system-ui, sans-serif);
1172
- }
1173
- .ag-q-empty.svelte-n8lbn1 {
1174
- display: flex;
1175
- align-items: center;
1176
- justify-content: center;
1177
- flex: 1;
1178
- font-size: 13px;
1179
- font-weight: 300;
1180
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1181
- }
1182
-
1183
- /* ── NOW column (includes Done above) ── */
1184
- .ag-q-status.svelte-n8lbn1 {
1185
- padding: 0 10px 0 14px;
1186
- border-right: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1187
- display: flex;
1188
- flex-direction: column;
1189
- overflow-y: auto;
1190
- scrollbar-width: none;
1191
- }
1192
- .ag-q-status.svelte-n8lbn1::-webkit-scrollbar {
1193
- display: none;
1194
- }
1195
- .ag-q-done-toggle.svelte-n8lbn1 {
1196
- align-self: flex-start;
1197
- margin-top: 2px;
1198
- padding: 3px 8px;
1199
- border: 1px solid var(--dt-border);
1200
- border-radius: 999px;
1201
- background: none;
1202
- font-family: var(--dt-mono);
1203
- font-size: 11px;
1204
- color: var(--dt-text-3);
1205
- cursor: pointer;
1206
- }
1207
- .ag-q-done-toggle.svelte-n8lbn1:hover {
1208
- color: var(--dt-text);
1209
- border-color: var(--dt-text-3);
1210
- }
1211
- .ag-q-now-sub.svelte-n8lbn1 {
1212
- font-size: 12px;
1213
- color: var(--dt-text-2);
1214
- margin-top: 1px;
1215
- }
1216
- .ag-q-done-section.svelte-n8lbn1 {
1217
- margin-top: 12px;
1218
- padding-top: 10px;
1219
- border-top: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1220
- }
1221
- .ag-q-clock.svelte-n8lbn1 {
1222
- font-size: 10px;
1223
- font-weight: 600;
1224
- font-family: var(--dt-mono, monospace);
1225
- color: var(--dt-accent, #2563eb);
1226
- margin-left: 4px;
1227
- }
1228
- .ag-q-now.svelte-n8lbn1 {
1229
- padding: 8px 10px;
1230
- margin-bottom: 8px;
1231
- border-radius: 8px;
1232
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, var(--dt-surface, var(--dt-bg, #ffffff)));
1233
- border: 1px solid color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
1234
- cursor: pointer;
1235
- transition: background 150ms, border-color 150ms;
1236
- margin-right: 10px;
1237
- }
1238
- .ag-q-now.svelte-n8lbn1:hover {
1239
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 25%, var(--dt-surface, var(--dt-bg, #ffffff)));
1240
- border-color: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 35%, transparent);
1241
- }
1242
- .ag-q-now.svelte-n8lbn1:focus-visible {
1243
- outline: 2px solid var(--dt-accent, #2563eb);
1244
- outline-offset: 2px;
1245
- }
1246
- .ag-q-now--selected.svelte-n8lbn1 {
1247
- border-color: var(--ev-color, var(--dt-accent));
1248
- }
1249
- .ag-q-now-dot.svelte-n8lbn1 {
1250
- width: 6px;
1251
- height: 6px;
1252
- border-radius: 50%;
1253
- background: var(--ev-color, var(--dt-accent, #2563eb));
1254
- margin-bottom: 6px;
1255
- animation: svelte-n8lbn1-ag-pulse 2.5s ease-in-out infinite;
1256
- }
1257
- @keyframes svelte-n8lbn1-ag-pulse {
1258
- 0%, 100% { opacity: 1; }
1259
- 50% { opacity: 0.4; }
1260
- }
1261
- .ag-q-now-title.svelte-n8lbn1 {
1262
- font-size: 11px;
1263
- font-weight: 600;
1264
- line-height: 1.2;
1265
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1266
- white-space: nowrap;
1267
- overflow: hidden;
1268
- text-overflow: ellipsis;
1269
- margin-bottom: 3px;
1270
- }
1271
- .ag-q-now-time.svelte-n8lbn1 {
1272
- font-size: 9px;
1273
- font-family: var(--dt-mono, monospace);
1274
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1275
- margin-bottom: 6px;
1276
- }
1277
- .ag-q-now-track.svelte-n8lbn1 {
1278
- height: 2px;
1279
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
1280
- border-radius: 1px;
1281
- overflow: hidden;
1282
- }
1283
- .ag-q-now-fill.svelte-n8lbn1 {
1284
- height: 100%;
1285
- background: var(--ev-color, var(--dt-accent, #2563eb));
1286
- border-radius: 1px;
1287
- transition: width 1s linear;
1288
- }
1289
- .ag-q-free.svelte-n8lbn1 {
1290
- padding: 8px 10px;
1291
- margin-right: 10px;
1292
- }
1293
- .ag-q-free-label.svelte-n8lbn1 {
1294
- font-size: 12px;
1295
- font-weight: 300;
1296
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1297
- margin-bottom: 2px;
1298
- }
1299
-
1300
- /* ── NEXT: hero center column ── */
1301
- .ag-q-queue.svelte-n8lbn1 {
1302
- padding: 0 16px;
1303
- overflow-y: auto;
1304
- scrollbar-width: none;
1305
- display: flex;
1306
- flex-direction: column;
1307
- gap: 8px;
1308
- }
1309
- .ag-q-queue.svelte-n8lbn1::-webkit-scrollbar {
1310
- display: none;
1311
- }
1312
-
1313
-
1314
- .ag-q-done-item.svelte-n8lbn1 {
1315
- display: flex;
1316
- align-items: center;
1317
- gap: 5px;
1318
- padding: 3px 0;
1319
- opacity: 0.35;
1320
- cursor: pointer;
1321
- }
1322
- .ag-q-done-item.svelte-n8lbn1:hover {
1323
- opacity: 0.6;
1324
- }
1325
- .ag-q-done-item.svelte-n8lbn1:focus-visible {
1326
- outline: 2px solid var(--dt-accent, #2563eb);
1327
- outline-offset: 2px;
1328
- opacity: 0.6;
1329
- }
1330
- .ag-q-done-item--selected.svelte-n8lbn1 {
1331
- opacity: 0.7;
1332
- }
1333
- .ag-q-done-check.svelte-n8lbn1 {
1334
- font-size: 9px;
1335
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
1336
- flex-shrink: 0;
1337
- }
1338
- .ag-q-done-title.svelte-n8lbn1 {
1339
- font-size: 10px;
1340
- line-height: 1.2;
1341
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1342
- white-space: nowrap;
1343
- overflow: hidden;
1344
- text-overflow: ellipsis;
1345
- text-decoration: line-through;
1346
- text-decoration-color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1347
- }
1348
-
1349
- /* ═══ Past Day: "The Log" ═══ */
1350
- .ag-log.svelte-n8lbn1 {
1351
- flex: 1;
1352
- padding: 8px 20px 12px;
1353
- overflow-y: auto;
1354
- scrollbar-width: none;
1355
- opacity: 0.7;
1356
- }
1357
- .ag-log.svelte-n8lbn1::-webkit-scrollbar {
1358
- display: none;
1359
- }
1360
- .ag-log-row.svelte-n8lbn1 {
1361
- display: flex;
1362
- align-items: center;
1363
- gap: 10px;
1364
- padding: 8px 0;
1365
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1366
- cursor: pointer;
1367
- transition: opacity 150ms;
1368
- }
1369
- .ag-log-row.svelte-n8lbn1:last-child {
1370
- border-bottom: none;
1371
- }
1372
- .ag-log-row.svelte-n8lbn1:hover {
1373
- opacity: 1;
1374
- }
1375
- .ag-log-row.svelte-n8lbn1:focus-visible {
1376
- outline: 2px solid var(--dt-accent, #2563eb);
1377
- outline-offset: 2px;
1378
- }
1379
- .ag-log-row--selected.svelte-n8lbn1 {
1380
- opacity: 1;
1381
- background: color-mix(in srgb, var(--ev-color) 6%, transparent);
1382
- border-radius: 6px;
1383
- padding-left: 8px;
1384
- padding-right: 8px;
1385
- }
1386
- .ag-log-check.svelte-n8lbn1 {
1387
- font-size: 10px;
1388
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
1389
- flex-shrink: 0;
1390
- }
1391
- .ag-log-time.svelte-n8lbn1 {
1392
- font-size: 11px;
1393
- font-family: var(--dt-mono, monospace);
1394
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1395
- width: 64px;
1396
- flex-shrink: 0;
1397
- }
1398
- .ag-log-dot.svelte-n8lbn1 {
1399
- width: 5px;
1400
- height: 5px;
1401
- border-radius: 50%;
1402
- flex-shrink: 0;
1403
- opacity: 0.6;
1404
- }
1405
- .ag-log-title.svelte-n8lbn1 {
1406
- font-size: 13px;
1407
- font-weight: 500;
1408
- line-height: 1.2;
1409
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1410
- flex: 1;
1411
- white-space: nowrap;
1412
- overflow: hidden;
1413
- text-overflow: ellipsis;
1414
- text-decoration: line-through;
1415
- text-decoration-color: var(--dt-border, rgba(0, 0, 0, 0.08));
1416
- }
1417
- .ag-log-dur.svelte-n8lbn1 {
1418
- font-size: 10px;
1419
- font-family: var(--dt-mono, monospace);
1420
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1421
- flex-shrink: 0;
1422
- }
1423
-
1424
- /* ═══ Compact Day ═══ */
1425
- .ag-compact-list.svelte-n8lbn1 {
1426
- flex: 1;
1427
- padding: 8px 20px 12px;
1428
- overflow-y: auto;
1429
- scrollbar-width: none;
1430
- }
1431
- .ag-compact-list.svelte-n8lbn1::-webkit-scrollbar { display: none; }
1432
- .ag-compact-row.svelte-n8lbn1 {
1433
- display: flex;
1434
- align-items: baseline;
1435
- gap: 8px;
1436
- padding: 4px 0;
1437
- cursor: pointer;
1438
- min-width: 0;
1439
- }
1440
- .ag-compact-row--selected.svelte-n8lbn1 {
1441
- background: color-mix(in srgb, var(--ev-color) 10%, transparent);
1442
- border-radius: 4px;
1443
- padding-left: 6px;
1444
- padding-right: 6px;
1445
- }
1446
- .ag-compact-row.svelte-n8lbn1:hover .ag-compact-row-title:where(.svelte-n8lbn1) { color: var(--dt-text); }
1447
- .ag-compact-row.svelte-n8lbn1:focus-visible {
1448
- outline: 2px solid var(--dt-accent, #2563eb);
1449
- outline-offset: 2px;
1450
- }
1451
- .ag-compact-row-dot.svelte-n8lbn1 {
1452
- width: 5px;
1453
- height: 5px;
1454
- border-radius: 50%;
1455
- background: var(--ev-color, var(--dt-accent));
1456
- flex-shrink: 0;
1457
- align-self: center;
1458
- }
1459
- .ag-compact-row-time.svelte-n8lbn1 {
1460
- font-size: 11px;
1461
- font-family: var(--dt-mono, monospace);
1462
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1463
- min-width: 64px;
1464
- flex-shrink: 0;
1465
- line-height: 1.4;
1466
- }
1467
- .ag-compact-row-title.svelte-n8lbn1 {
1468
- font-size: 12px;
1469
- font-weight: 500;
1470
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1471
- flex: 1;
1472
- white-space: nowrap;
1473
- overflow: hidden;
1474
- text-overflow: ellipsis;
1475
- transition: color 150ms;
1476
- line-height: 1.4;
1477
- }
1478
- .ag-compact-row-dur.svelte-n8lbn1 {
1479
- font-size: 10px;
1480
- font-family: var(--dt-mono, monospace);
1481
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1482
- flex-shrink: 0;
1483
- line-height: 1.4;
1484
- }
1485
- .ag-compact-row-sub.svelte-n8lbn1 {
1486
- font-size: 10px;
1487
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1488
- flex-shrink: 1;
1489
- max-width: 45%;
1490
- white-space: nowrap;
1491
- overflow: hidden;
1492
- text-overflow: ellipsis;
1493
- line-height: 1.4;
1494
- }
1495
- .ag-compact-row-tag.svelte-n8lbn1 {
1496
- font: 500 8px / 1 var(--dt-sans, system-ui, sans-serif);
1497
- color: var(--ev-color, var(--dt-accent));
1498
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 12%, transparent);
1499
- padding: 1px 4px;
1500
- border-radius: 3px;
1501
- white-space: nowrap;
1502
- flex-shrink: 0;
1503
- }
1504
- .ag-compact-row--cancelled.svelte-n8lbn1 { opacity: 0.5; }
1505
- .ag-compact-row--cancelled.svelte-n8lbn1 .ag-compact-row-title:where(.svelte-n8lbn1) { text-decoration: line-through; }
1506
- .ag-compact-row--tentative.svelte-n8lbn1 { opacity: 0.65; }
1507
- /* Mobile: larger touch targets for compact rows */
1508
- .ag--mobile.svelte-n8lbn1 .ag-compact-row:where(.svelte-n8lbn1) { padding: 8px 0; }
1509
- .ag--mobile.svelte-n8lbn1 .ag-compact-row-title:where(.svelte-n8lbn1) { font-size: 14px; }
1510
- .ag--mobile.svelte-n8lbn1 .ag-compact-row-time:where(.svelte-n8lbn1) { font-size: 12px; }
1511
-
1512
- /* ═══ Future Day: "The Plan" ═══ */
1513
- .ag-plan.svelte-n8lbn1 {
1514
- flex: 1;
1515
- padding: 8px 20px 12px;
1516
- overflow-y: auto;
1517
- scrollbar-width: none;
1518
- display: flex;
1519
- flex-direction: column;
1520
- gap: 6px;
1521
- }
1522
- .ag-plan.svelte-n8lbn1::-webkit-scrollbar {
1523
- display: none;
1524
- }
1525
-
1526
- /* ═══ Container ═══ */
1527
- .ag.svelte-uhwfyj {
1528
- position: relative;
1529
- overflow: hidden;
1530
- user-select: none;
1531
- display: flex;
1532
- flex-direction: column;
1533
- height: 100%;
1534
- width: 100%;
1535
- min-width: 0;
1536
- box-sizing: border-box;
1537
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1538
- font-family: var(--dt-sans, system-ui, sans-serif);
1539
- }
1540
- .ag--auto.svelte-uhwfyj {
1541
- height: auto;
1542
- overflow: visible;
1543
- }
1544
-
1545
- /* ═══ Body ═══ */
1546
- .ag-body.svelte-uhwfyj {
1547
- flex: 1;
1548
- min-width: 0;
1549
- overflow-y: auto;
1550
- overflow-x: hidden;
1551
- box-sizing: border-box;
1552
- padding-top: 8px;
1553
- scrollbar-width: thin;
1554
- scrollbar-color: var(--dt-border) transparent;
1555
- }
1556
- .ag--auto.svelte-uhwfyj .ag-body:where(.svelte-uhwfyj) {
1557
- overflow-y: visible;
1558
- }
1559
- .ag-body.svelte-uhwfyj::-webkit-scrollbar {
1560
- width: 4px;
1561
- }
1562
- .ag-body.svelte-uhwfyj::-webkit-scrollbar-thumb {
1563
- background: var(--dt-border);
1564
- border-radius: 2px;
1565
- }
1566
-
1567
- /* ═══ All-day chips ═══ */
1568
- .ag-allday.svelte-uhwfyj {
1569
- display: flex;
1570
- flex-wrap: wrap;
1571
- gap: 4px;
1572
- padding: 4px 14px 6px;
1573
- }
1574
- .ag-allday-chip.svelte-uhwfyj {
1575
- display: flex;
1576
- align-items: center;
1577
- gap: 4px;
1578
- padding: 2px 8px;
1579
- border-radius: 5px;
1580
- background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
1581
- border: 1px solid color-mix(in srgb, var(--ev-color) 18%, transparent);
1582
- cursor: pointer;
1583
- transition: background 0.15s, border-color 0.15s;
1584
- }
1585
- .ag-allday-chip.svelte-uhwfyj:hover {
1586
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, var(--dt-bg, #ffffff)));
1587
- border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
1588
- }
1589
- .ag-allday-chip.svelte-uhwfyj:focus-visible {
1590
- outline: 2px solid var(--dt-accent, #2563eb);
1591
- outline-offset: 2px;
1592
- }
1593
- .ag-allday-chip--selected.svelte-uhwfyj {
1594
- border-color: var(--ev-color);
1595
- background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, var(--dt-bg, #ffffff)));
1596
- }
1597
- .ag-allday-dot.svelte-uhwfyj {
1598
- width: 5px;
1599
- height: 5px;
1600
- border-radius: 50%;
1601
- background: var(--ev-color);
1602
- flex-shrink: 0;
1603
- }
1604
- .ag-allday-title.svelte-uhwfyj {
1605
- font: 500 0.7rem/1.2 var(--dt-sans, system-ui, sans-serif);
1606
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1607
- white-space: nowrap;
1608
- }
1609
-
1610
- /* ═══ Shared: event card ═══ */
1611
- .ag-card.svelte-uhwfyj {
1612
- display: flex;
1613
- align-items: stretch;
1614
- border-radius: 6px;
1615
- background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, var(--dt-bg, #ffffff)));
1616
- border: 1px solid color-mix(in srgb, var(--ev-color) 8%, var(--dt-border, rgba(0, 0, 0, 0.08)));
1617
- overflow: hidden;
1618
- cursor: pointer;
1619
- transition: background 150ms, border-color 150ms;
1620
- }
1621
- .ag-card.svelte-uhwfyj:hover {
1622
- background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
1623
- border-color: color-mix(in srgb, var(--ev-color) 30%, transparent);
1624
- }
1625
- .ag-card.svelte-uhwfyj:focus-visible {
1626
- outline: 2px solid var(--dt-accent, #2563eb);
1627
- outline-offset: 2px;
1628
- }
1629
- .ag-card--selected.svelte-uhwfyj {
1630
- border-color: var(--ev-color);
1631
- background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, var(--dt-bg, #ffffff)));
1632
- }
1633
- .ag-card--cancelled.svelte-uhwfyj {
1634
- opacity: 0.5;
1635
- }
1636
- .ag-card--cancelled.svelte-uhwfyj .ag-card-title:where(.svelte-uhwfyj) {
1637
- text-decoration: line-through;
1638
- }
1639
- .ag-card--tentative.svelte-uhwfyj {
1640
- opacity: 0.65;
1641
- border-style: dashed;
1642
- }
1643
- .ag-card--full.svelte-uhwfyj {
1644
- opacity: 0.55;
1645
- }
1646
- .ag-card--limited.svelte-uhwfyj {
1647
- opacity: 0.65;
1648
- border-style: dashed;
1649
- }
1650
- .ag-card-body.svelte-uhwfyj {
1651
- padding: 7px 10px;
1652
- display: flex;
1653
- flex-direction: column;
1654
- gap: 2px;
1655
- min-width: 0;
1656
- flex: 1;
1657
- }
1658
- .ag-card-title.svelte-uhwfyj {
1659
- font-size: 13px;
1660
- font-weight: 600;
1661
- line-height: 1.3;
1662
- word-break: break-word;
1663
- flex: 1;
1664
- min-width: 0;
1665
- }
1666
- .ag-card-meta.svelte-uhwfyj {
1667
- display: flex;
1668
- align-items: center;
1669
- font-size: 11px;
1670
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1671
- font-family: var(--dt-mono, monospace);
1672
- line-height: 1;
1673
- }
1674
- .ag-card-dur.svelte-uhwfyj {
1675
- margin-left: 6px;
1676
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1677
- }
1678
- .ag-card-eta.svelte-uhwfyj {
1679
- margin-left: auto;
1680
- font-size: 10px;
1681
- font-weight: 600;
1682
- color: color-mix(in srgb, var(--ev-color) 80%, var(--dt-text));
1683
- opacity: 0.85;
1684
- letter-spacing: 0.02em;
1685
- }
1686
- .ag-card-sub.svelte-uhwfyj {
1687
- font-size: 11px;
1688
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1689
- line-height: 1;
1690
- }
1691
- .ag-card-loc.svelte-uhwfyj {
1692
- font-size: 10px;
1693
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1694
- line-height: 1;
1695
- }
1696
- .ag-card-tags.svelte-uhwfyj {
1697
- display: flex;
1698
- gap: 4px;
1699
- flex-wrap: wrap;
1700
- }
1701
- .ag-card-tag.svelte-uhwfyj {
1702
- font: 500 9px / 1 var(--dt-sans, system-ui, sans-serif);
1703
- color: var(--ev-color, var(--dt-accent));
1704
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
1705
- padding: 2px 5px;
1706
- border-radius: 3px;
1707
- white-space: nowrap;
1708
- }
1709
- .ag-card-progress.svelte-uhwfyj {
1710
- height: 3px;
1711
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
1712
- border-radius: 2px;
1713
- overflow: hidden;
1714
- margin-top: 2px;
1715
- }
1716
- .ag-card-progress-fill.svelte-uhwfyj {
1717
- height: 100%;
1718
- background: var(--ev-color, var(--dt-accent));
1719
- border-radius: 2px;
1720
- transition: width 1s linear;
1721
- }
1722
-
1723
- /* ═══ Week day groups ═══ */
1724
- .ag-wday.svelte-uhwfyj {
1725
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1726
- }
1727
- .ag-wday.svelte-uhwfyj:last-child {
1728
- border-bottom: none;
1729
- }
1730
- .ag-wday--today.svelte-uhwfyj {
1731
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 2%, transparent);
1732
- }
1733
- .ag-wday--tomorrow.svelte-uhwfyj .ag-card:where(.svelte-uhwfyj) {
1734
- opacity: 0.82;
1735
- }
1736
- .ag-wday--past.svelte-uhwfyj {
1737
- opacity: 0.4;
1738
- }
1739
- .ag-wday--past.svelte-uhwfyj .ag-wday-head:where(.svelte-uhwfyj) {
1740
- padding: 8px 20px;
1741
- }
1742
- .ag-wday--disabled.svelte-uhwfyj {
1743
- position: relative;
1744
- }
1745
- .ag-wday--disabled.svelte-uhwfyj::after {
1746
- content: '';
1747
- position: absolute;
1748
- inset: 0;
1749
- background: repeating-linear-gradient(
1750
- 135deg,
1751
- transparent,
1752
- transparent 4px,
1753
- rgba(128, 128, 128, 0.08) 4px,
1754
- rgba(128, 128, 128, 0.08) 8px
1755
- );
1756
- pointer-events: none;
1757
- }
1758
- .ag-wday-custom-header.svelte-uhwfyj {
1759
- padding: 2px 0 4px;
1760
- }
1761
-
1762
- .ag-wday-head.svelte-uhwfyj {
1763
- display: flex;
1764
- justify-content: space-between;
1765
- align-items: center;
1766
- padding: 8px 20px;
1767
- }
1768
- .ag-wday-head-left.svelte-uhwfyj {
1769
- display: flex;
1770
- align-items: baseline;
1771
- gap: 8px;
1772
- }
1773
- .ag-wday-badge.svelte-uhwfyj {
1774
- font-size: 10px;
1775
- font-weight: 600;
1776
- letter-spacing: 0.08em;
1777
- text-transform: uppercase;
1778
- color: var(--dt-accent, #2563eb);
1779
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent);
1780
- padding: 2px 7px;
1781
- border-radius: 3px;
1782
- }
1783
- .ag-wday-badge--muted.svelte-uhwfyj {
1784
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1785
- background: color-mix(
1786
- in srgb,
1787
- var(--dt-text-2, rgba(0, 0, 0, 0.54)) 10%,
1788
- transparent
1789
- );
1790
- }
1791
- .ag-wday-name.svelte-uhwfyj {
1792
- font-size: 13px;
1793
- font-weight: 600;
1794
- line-height: 1.2;
1795
- }
1796
- .ag-wday-date.svelte-uhwfyj {
1797
- font-size: 11px;
1798
- font-family: var(--dt-mono, monospace);
1799
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1800
- line-height: 1.2;
1801
- }
1802
-
1803
- .ag-wday-empty.svelte-uhwfyj {
1804
- padding: 2px 20px 6px;
1805
- font-size: 11px;
1806
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1807
- font-style: italic;
1808
- }
1809
-
1810
- /* Expanded day */
1811
- .ag-wday-expanded.svelte-uhwfyj {
1812
- padding: 0 20px 10px;
1813
- }
1814
- .ag-wslot.svelte-uhwfyj {
1815
- margin-bottom: 4px;
1816
- }
1817
- .ag-wslot-header.svelte-uhwfyj {
1818
- display: flex;
1819
- align-items: baseline;
1820
- gap: 8px;
1821
- padding: 2px 0;
1822
- }
1823
- .ag-wslot-now.svelte-uhwfyj {
1824
- font-size: 9px;
1825
- font-weight: 700;
1826
- letter-spacing: 0.08em;
1827
- text-transform: uppercase;
1828
- color: var(--dt-accent, #2563eb);
1829
- }
1830
- .ag-wslot-cards.svelte-uhwfyj {
1831
- display: flex;
1832
- flex-direction: column;
1833
- gap: 4px;
1834
- }
1835
- .ag-wslot-cards--multi.svelte-uhwfyj {
1836
- display: grid;
1837
- grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
1838
- gap: 4px;
1839
- }
1840
- .ag-wday-past-line.svelte-uhwfyj {
1841
- font-size: 10px;
1842
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1843
- padding: 6px 0 0;
1844
- opacity: 0.5;
1845
- }
1846
-
1847
- /* Compact day events */
1848
- .ag-wday-compact.svelte-uhwfyj {
1849
- padding: 0 20px 8px;
1850
- }
1851
- .ag-compact.svelte-uhwfyj {
1852
- display: flex;
1853
- align-items: baseline;
1854
- gap: 6px;
1855
- padding: 3px 0;
1856
- cursor: pointer;
1857
- min-width: 0;
1858
- }
1859
- .ag-compact--selected.svelte-uhwfyj {
1860
- background: color-mix(in srgb, var(--ev-color) 10%, transparent);
1861
- border-radius: 4px;
1862
- padding-left: 6px;
1863
- padding-right: 6px;
1864
- }
1865
- .ag-compact.svelte-uhwfyj:hover .ag-compact-title:where(.svelte-uhwfyj) {
1866
- color: var(--dt-text);
1867
- }
1868
- .ag-compact.svelte-uhwfyj:focus-visible {
1869
- outline: 2px solid var(--dt-accent, #2563eb);
1870
- outline-offset: 2px;
1871
- }
1872
- .ag-compact-dot.svelte-uhwfyj {
1873
- width: 5px;
1874
- height: 5px;
1875
- border-radius: 50%;
1876
- background: var(--ev-color, var(--dt-accent));
1877
- flex-shrink: 0;
1878
- align-self: center;
1879
- }
1880
- .ag-compact-time.svelte-uhwfyj {
1881
- font-size: 11px;
1882
- font-family: var(--dt-mono, monospace);
1883
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1884
- min-width: 40px;
1885
- flex-shrink: 0;
1886
- white-space: nowrap;
1887
- line-height: 1.4;
1888
- }
1889
- .ag-compact-title.svelte-uhwfyj {
1890
- font-size: 12px;
1891
- font-weight: 500;
1892
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1893
- flex: 1;
1894
- min-width: 0;
1895
- white-space: nowrap;
1896
- overflow: hidden;
1897
- text-overflow: ellipsis;
1898
- transition: color 150ms;
1899
- line-height: 1.4;
1900
- }
1901
- .ag-compact-dur.svelte-uhwfyj {
1902
- font-size: 10px;
1903
- font-family: var(--dt-mono, monospace);
1904
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1905
- flex-shrink: 0;
1906
- white-space: nowrap;
1907
- line-height: 1.4;
1908
- }
1909
- .ag-compact-sub.svelte-uhwfyj {
1910
- font-size: 10px;
1911
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1912
- flex-shrink: 0;
1913
- white-space: nowrap;
1914
- overflow: hidden;
1915
- text-overflow: ellipsis;
1916
- max-width: 120px;
1917
- line-height: 1.4;
1918
- }
1919
- .ag-compact-loc.svelte-uhwfyj {
1920
- font-size: 9px;
1921
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
1922
- flex-shrink: 0;
1923
- white-space: nowrap;
1924
- overflow: hidden;
1925
- text-overflow: ellipsis;
1926
- max-width: 100px;
1927
- }
1928
- .ag-compact--cancelled.svelte-uhwfyj {
1929
- opacity: 0.5;
1930
- }
1931
- .ag-compact--cancelled.svelte-uhwfyj .ag-compact-title:where(.svelte-uhwfyj) {
1932
- text-decoration: line-through;
1933
- }
1934
- .ag-compact--tentative.svelte-uhwfyj {
1935
- opacity: 0.65;
1936
- }
1937
- .ag-compact--full.svelte-uhwfyj {
1938
- opacity: 0.55;
1939
- }
1940
- .ag-compact--limited.svelte-uhwfyj {
1941
- opacity: 0.65;
1942
- }
1943
- .ag-compact-tag.svelte-uhwfyj {
1944
- font: 500 8px / 1 var(--dt-sans, system-ui, sans-serif);
1945
- color: var(--ev-color, var(--dt-accent));
1946
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 12%, transparent);
1947
- padding: 1px 4px;
1948
- border-radius: 3px;
1949
- white-space: nowrap;
1950
- flex-shrink: 0;
1951
- max-width: 80px;
1952
- overflow: hidden;
1953
- text-overflow: ellipsis;
1954
- }
1955
- .ag-compact-more.svelte-uhwfyj {
1956
- font-size: 11px;
1957
- color: var(--dt-text-3);
1958
- padding: 2px 0 0 13px;
1959
- }
1960
-
1961
- /* ═══ Mobile adaptations ═══ */
1962
- .ag--mobile.svelte-uhwfyj .ag-wday-head:where(.svelte-uhwfyj) {
1963
- padding: 12px 16px;
1964
- }
1965
- .ag--mobile.svelte-uhwfyj .ag-wday-expanded:where(.svelte-uhwfyj) {
1966
- padding: 0 16px 12px;
1967
- }
1968
- .ag--mobile.svelte-uhwfyj .ag-wday-compact:where(.svelte-uhwfyj) {
1969
- padding: 0 16px 12px;
1970
- }
1971
- .ag--mobile.svelte-uhwfyj .ag-card-body:where(.svelte-uhwfyj) {
1972
- padding: 12px 14px;
1973
- }
1974
- .ag--mobile.svelte-uhwfyj .ag-card-title:where(.svelte-uhwfyj) {
1975
- font-size: 14px;
1976
- }
1977
- .ag--mobile.svelte-uhwfyj .ag-compact:where(.svelte-uhwfyj) {
1978
- padding: 8px 0;
1979
- }
1980
- .ag--mobile.svelte-uhwfyj .ag-compact-title:where(.svelte-uhwfyj) {
1981
- font-size: 14px;
1982
- }
1983
- .ag--mobile.svelte-uhwfyj .ag-compact-time:where(.svelte-uhwfyj) {
1984
- font-size: 12px;
1985
- }
1986
- .ag--mobile.svelte-uhwfyj .ag-wslot-cards--multi:where(.svelte-uhwfyj) {
1987
- grid-template-columns: 1fr;
1988
- }
1989
-
1990
- /* ─── Container ──────────────────────────────────── */
1991
- .mb.svelte-zbkzcp {
1992
- position: relative;
1993
- display: flex;
1994
- flex-direction: column;
1995
- user-select: none;
1996
- font-variant-numeric: tabular-nums;
1997
- overflow: hidden;
1998
- background: var(--dt-bg, #fff);
1999
- -webkit-tap-highlight-color: transparent;
2000
- }
2001
- .mb--auto.svelte-zbkzcp { overflow: visible; }
2002
-
2003
- /* ─── All-day bar ────────────────────────────────── */
2004
- .mb-allday.svelte-zbkzcp {
2005
- display: flex;
2006
- gap: 4px;
2007
- padding: 4px 8px;
2008
- overflow-x: auto;
2009
- scrollbar-width: none;
2010
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2011
- flex-shrink: 0;
2012
- align-items: center;
2013
- }
2014
- .mb-allday.svelte-zbkzcp::-webkit-scrollbar { display: none; }
2015
-
2016
- .mb-allday-chip.svelte-zbkzcp {
2017
- display: flex;
2018
- align-items: center;
2019
- gap: 4px;
2020
- padding: 4px 8px;
2021
- border-radius: 5px;
2022
- background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, #f9fafb));
2023
- border: none;
2024
- cursor: pointer;
2025
- flex-shrink: 0;
2026
- transition: background 120ms;
2027
- -webkit-tap-highlight-color: transparent;
2028
- max-width: 160px;
2029
- }
2030
- .mb-allday-chip.svelte-zbkzcp:active {
2031
- background: color-mix(in srgb, var(--ev-color) 22%, var(--dt-surface, #f9fafb));
2032
- }
2033
- .mb-allday-chip--selected.svelte-zbkzcp {
2034
- box-shadow: 0 0 0 1.5px var(--ev-color);
2035
- }
2036
-
2037
- .mb-allday-dot.svelte-zbkzcp {
2038
- width: 6px;
2039
- height: 6px;
2040
- border-radius: 50%;
2041
- background: var(--ev-color);
2042
- flex-shrink: 0;
2043
- }
2044
-
2045
- .mb-allday-title.svelte-zbkzcp {
2046
- font: 500 11px/1 var(--dt-sans, system-ui, sans-serif);
2047
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2048
- white-space: nowrap;
2049
- max-width: 100px;
2050
- overflow: hidden;
2051
- text-overflow: ellipsis;
2052
- }
2053
-
2054
- .mb-allday-span.svelte-zbkzcp {
2055
- font: 400 10px/1 var(--dt-sans, system-ui, sans-serif);
2056
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2057
- }
2058
-
2059
- .mb-allday-more.svelte-zbkzcp {
2060
- font: 500 11px/1 var(--dt-sans, system-ui, sans-serif);
2061
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2062
- white-space: nowrap;
2063
- flex-shrink: 0;
2064
- padding: 0 4px;
2065
- }
2066
-
2067
- /* ─── Grid ───────────────────────────────────────── */
2068
- .mb-grid.svelte-zbkzcp {
2069
- flex: 1;
2070
- overflow-y: auto;
2071
- overflow-x: hidden;
2072
- -webkit-overflow-scrolling: touch;
2073
- scrollbar-width: thin;
2074
- scrollbar-color: var(--dt-scrollbar, rgba(0, 0, 0, 0.1)) transparent;
2075
- position: relative;
2076
- padding-top: 8px;
2077
- }
2078
- .mb--auto.svelte-zbkzcp .mb-grid:where(.svelte-zbkzcp) { overflow-y: visible; }
2079
-
2080
- .mb-grid-inner.svelte-zbkzcp {
2081
- position: relative;
2082
- min-width: 100%;
2083
- }
2084
-
2085
- /* ─── Hour row ───────────────────────────────────── */
2086
- .mb-hour.svelte-zbkzcp {
2087
- position: absolute;
2088
- left: 0;
2089
- right: 0;
2090
- display: flex;
2091
- align-items: flex-start;
2092
- }
2093
-
2094
- .mb-hour-label.svelte-zbkzcp {
2095
- width: 40px;
2096
- flex-shrink: 0;
2097
- font: 500 11px/1 var(--dt-mono, ui-monospace, monospace);
2098
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2099
- text-align: right;
2100
- padding-right: 8px;
2101
- padding-top: 0;
2102
- position: relative;
2103
- top: -6px;
2104
- }
2105
-
2106
- .mb-hour-line.svelte-zbkzcp {
2107
- flex: 1;
2108
- height: 1px;
2109
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
2110
- }
2111
-
2112
- .mb-hour--blocked.svelte-zbkzcp {
2113
- background: repeating-linear-gradient(
2114
- -45deg,
2115
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 3%, transparent),
2116
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 3%, transparent) 4px,
2117
- transparent 4px,
2118
- transparent 8px
2119
- );
2120
- }
2121
-
2122
- .mb-blocked-label.svelte-zbkzcp {
2123
- position: absolute;
2124
- left: 44px;
2125
- top: 50%;
2126
- transform: translateY(-50%);
2127
- font: 500 9px/1 var(--dt-sans, system-ui, sans-serif);
2128
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2129
- text-transform: uppercase;
2130
- letter-spacing: 0.04em;
2131
- }
2132
-
2133
- /* ─── Now line ───────────────────────────────────── */
2134
- .mb-now.svelte-zbkzcp {
2135
- position: absolute;
2136
- left: 0;
2137
- right: 0;
2138
- z-index: 10;
2139
- display: flex;
2140
- align-items: center;
2141
- pointer-events: none;
2142
- }
2143
-
2144
- .mb-now-label.svelte-zbkzcp {
2145
- width: 40px;
2146
- flex-shrink: 0;
2147
- text-align: right;
2148
- padding-right: 6px;
2149
- font: 700 10px/1 var(--dt-mono, ui-monospace, monospace);
2150
- color: var(--dt-accent, #2563eb);
2151
- }
2152
-
2153
- .mb-now-line.svelte-zbkzcp {
2154
- flex: 1;
2155
- height: 2px;
2156
- background: var(--dt-accent, #2563eb);
2157
- box-shadow: 0 0 6px var(--dt-glow, rgba(37, 99, 235, 0.25));
2158
- position: relative;
2159
- }
2160
-
2161
- .mb-now-line.svelte-zbkzcp::before {
2162
- content: '';
2163
- position: absolute;
2164
- left: -4px;
2165
- top: -4px;
2166
- width: 10px;
2167
- height: 10px;
2168
- border-radius: 50%;
2169
- background: var(--dt-accent, #2563eb);
2170
- }
2171
-
2172
- /* ─── Events ─────────────────────────────────────── */
2173
- .mb-event.svelte-zbkzcp {
2174
- position: absolute;
2175
- z-index: 5;
2176
- border-radius: 8px;
2177
- cursor: pointer;
2178
- background: color-mix(in srgb, var(--ev-color) 12%, var(--dt-surface, #f9fafb));
2179
- border: none;
2180
- display: flex;
2181
- align-items: stretch;
2182
- overflow: hidden;
2183
- transition: box-shadow 120ms, background 120ms;
2184
- text-align: left;
2185
- padding: 0;
2186
- -webkit-tap-highlight-color: transparent;
2187
- min-height: 24px;
2188
- }
2189
- .mb-event.svelte-zbkzcp:active {
2190
- background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, #f9fafb));
2191
- }
2192
- .mb-event--selected.svelte-zbkzcp {
2193
- box-shadow: 0 0 0 2px var(--ev-color),
2194
- 0 2px 12px color-mix(in srgb, var(--ev-color) 25%, transparent);
2195
- }
2196
- .mb-event--current.svelte-zbkzcp {
2197
- background: color-mix(in srgb, var(--ev-color) 18%, var(--dt-surface, #f9fafb));
2198
- }
2199
- .mb-event--next.svelte-zbkzcp {
2200
- background: color-mix(in srgb, var(--ev-color) 8%, var(--dt-surface, #f9fafb));
2201
- border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
2202
- }
2203
- .mb-event--cancelled.svelte-zbkzcp {
2204
- opacity: 0.5;
2205
- }
2206
- .mb-event--cancelled.svelte-zbkzcp .mb-ev-title:where(.svelte-zbkzcp) {
2207
- text-decoration: line-through;
2208
- }
2209
- .mb-event--tentative.svelte-zbkzcp {
2210
- opacity: 0.65;
2211
- border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
2212
- }
2213
- .mb-event--full.svelte-zbkzcp {
2214
- opacity: 0.55;
2215
- }
2216
- .mb-event--limited.svelte-zbkzcp {
2217
- opacity: 0.65;
2218
- border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
2219
- }
2220
- .mb-event--resizing.svelte-zbkzcp {
2221
- z-index: 50;
2222
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
2223
- cursor: ns-resize;
2224
- }
2225
-
2226
- /* ─── Resize handles ─────────────────────────────── */
2227
- .mb-ev-handle.svelte-zbkzcp {
2228
- position: absolute;
2229
- left: 0;
2230
- right: 0;
2231
- height: 10px;
2232
- z-index: 2;
2233
- cursor: ns-resize;
2234
- touch-action: none;
2235
- }
2236
- .mb-ev-handle--start.svelte-zbkzcp { top: 0; }
2237
- .mb-ev-handle--end.svelte-zbkzcp { bottom: 0; }
2238
- .mb-ev-handle.svelte-zbkzcp::after {
2239
- content: '';
2240
- position: absolute;
2241
- left: 50%;
2242
- transform: translateX(-50%);
2243
- width: 24px;
2244
- height: 3px;
2245
- border-radius: 2px;
2246
- background: var(--ev-color);
2247
- opacity: 0;
2248
- transition: opacity 120ms;
2249
- }
2250
- .mb-ev-handle--start.svelte-zbkzcp::after { top: 2px; }
2251
- .mb-ev-handle--end.svelte-zbkzcp::after { bottom: 2px; }
2252
- .mb-event.svelte-zbkzcp:hover .mb-ev-handle:where(.svelte-zbkzcp)::after,
2253
- .mb-event--resizing.svelte-zbkzcp .mb-ev-handle:where(.svelte-zbkzcp)::after,
2254
- .mb-event--selected.svelte-zbkzcp .mb-ev-handle:where(.svelte-zbkzcp)::after { opacity: 0.55; }
2255
-
2256
- /* ─── Drag-to-create ghost ───────────────────────── */
2257
- .mb-create-ghost.svelte-zbkzcp {
2258
- position: absolute;
2259
- left: 40px;
2260
- right: 4px;
2261
- z-index: 40;
2262
- border-radius: 8px;
2263
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent);
2264
- border: 1px dashed color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
2265
- display: flex;
2266
- align-items: flex-start;
2267
- overflow: hidden;
2268
- pointer-events: none;
2269
- }
2270
- .mb-create-ghost-time.svelte-zbkzcp {
2271
- font: 600 10px/1 var(--dt-mono, ui-monospace, monospace);
2272
- color: var(--dt-accent, #2563eb);
2273
- padding: 4px 8px;
2274
- white-space: nowrap;
2275
- }
2276
-
2277
- .mb-ev-stripe.svelte-zbkzcp {
2278
- width: 4px;
2279
- background: var(--ev-color);
2280
- flex-shrink: 0;
2281
- border-radius: 8px 0 0 8px;
2282
- }
2283
-
2284
- .mb-ev-body.svelte-zbkzcp {
2285
- flex: 1;
2286
- min-width: 0;
2287
- padding: 4px 8px;
2288
- display: flex;
2289
- flex-direction: column;
2290
- gap: 1px;
2291
- justify-content: center;
2292
- }
2293
-
2294
- .mb-ev-title.svelte-zbkzcp {
2295
- font: 600 13px/1.2 var(--dt-sans, system-ui, sans-serif);
2296
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2297
- white-space: nowrap;
2298
- overflow: hidden;
2299
- text-overflow: ellipsis;
2300
- }
2301
-
2302
- .mb-ev-time.svelte-zbkzcp {
2303
- font: 400 11px/1 var(--dt-mono, ui-monospace, monospace);
2304
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2305
- }
2306
-
2307
- .mb-ev-sub.svelte-zbkzcp {
2308
- font: 400 11px/1.1 var(--dt-sans, system-ui, sans-serif);
2309
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2310
- white-space: nowrap;
2311
- overflow: hidden;
2312
- text-overflow: ellipsis;
2313
- }
2314
-
2315
- .mb-ev-loc.svelte-zbkzcp {
2316
- font: 400 10px/1 var(--dt-sans, system-ui, sans-serif);
2317
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2318
- white-space: nowrap;
2319
- overflow: hidden;
2320
- text-overflow: ellipsis;
2321
- }
2322
-
2323
- .mb-ev-tags.svelte-zbkzcp {
2324
- display: flex;
2325
- gap: 4px;
2326
- margin-top: 2px;
2327
- }
2328
-
2329
- .mb-ev-tag.svelte-zbkzcp {
2330
- font: 500 9px/1 var(--dt-sans, system-ui, sans-serif);
2331
- color: var(--ev-color, var(--dt-accent));
2332
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
2333
- padding: 2px 5px;
2334
- border-radius: 3px;
2335
- white-space: nowrap;
2336
- }
2337
-
2338
- .mb-ev-live.svelte-zbkzcp {
2339
- position: absolute;
2340
- top: 6px;
2341
- right: 6px;
2342
- width: 7px;
2343
- height: 7px;
2344
- border-radius: 50%;
2345
- background: var(--ev-color, var(--dt-accent));
2346
- animation: svelte-zbkzcp-mb-pulse 2s ease-in-out infinite;
2347
- }
2348
- .mb-ev-next-badge.svelte-zbkzcp {
2349
- position: absolute;
2350
- top: 4px;
2351
- right: 4px;
2352
- font: 600 8px/1 var(--dt-sans, system-ui, sans-serif);
2353
- text-transform: uppercase;
2354
- letter-spacing: 0.06em;
2355
- color: var(--ev-color, var(--dt-accent));
2356
- background: color-mix(in srgb, var(--ev-color, var(--dt-accent)) 15%, transparent);
2357
- padding: 2px 5px;
2358
- border-radius: 3px;
2359
- white-space: nowrap;
2360
- }
2361
-
2362
- @keyframes svelte-zbkzcp-mb-pulse {
2363
- 0%, 100% { opacity: 1; }
2364
- 50% { opacity: 0.4; }
2365
- }
2366
-
2367
- /* ─── Focus ──────────────────────────────────────── */
2368
- .mb-event.svelte-zbkzcp:focus-visible {
2369
- outline: 2px solid var(--dt-accent, #2563eb);
2370
- outline-offset: 2px;
2371
- }
2372
-
2373
- /* ─── Container ──────────────────────────────────── */
2374
- .mw.svelte-1d18hkf {
2375
- position: relative;
2376
- display: flex;
2377
- flex-direction: column;
2378
- user-select: none;
2379
- font-variant-numeric: tabular-nums;
2380
- overflow: hidden;
2381
- background: var(--dt-bg, #fff);
2382
- -webkit-tap-highlight-color: transparent;
2383
- }
2384
- .mw--auto.svelte-1d18hkf { overflow: visible; }
2385
-
2386
- /* ─── Scrollable day list ────────────────────────── */
2387
- .mw-list.svelte-1d18hkf {
2388
- flex: 1;
2389
- overflow-y: auto;
2390
- -webkit-overflow-scrolling: touch;
2391
- scrollbar-width: thin;
2392
- scrollbar-color: var(--dt-scrollbar, rgba(0, 0, 0, 0.1)) transparent;
2393
- }
2394
- .mw--auto.svelte-1d18hkf .mw-list:where(.svelte-1d18hkf) { overflow-y: visible; }
2395
-
2396
- /* ─── Day row ────────────────────────────────────── */
2397
- .mw-row.svelte-1d18hkf {
2398
- display: flex;
2399
- align-items: center;
2400
- gap: 12px;
2401
- position: relative;
2402
- padding: 10px 12px;
2403
- background: transparent;
2404
- transition: background 120ms;
2405
- text-align: left;
2406
- width: 100%;
2407
- -webkit-tap-highlight-color: transparent;
2408
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2409
- min-height: 56px;
2410
- }
2411
- .mw-row.svelte-1d18hkf:last-child {
2412
- border-bottom: none;
2413
- }
2414
- .mw-row.svelte-1d18hkf:has(.mw-row-target:where(.svelte-1d18hkf):active) {
2415
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 6%, transparent);
2416
- }
2417
- .mw-row--today.svelte-1d18hkf {
2418
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 4%, transparent);
2419
- }
2420
- .mw-row--past.svelte-1d18hkf {
2421
- opacity: 0.5;
2422
- }
2423
- .mw-row--disabled.svelte-1d18hkf {
2424
- background-image: repeating-linear-gradient(
2425
- 135deg,
2426
- transparent,
2427
- transparent 6px,
2428
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 6px,
2429
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 12px
2430
- );
2431
- }
2432
- .mw-row-target.svelte-1d18hkf {
2433
- position: absolute;
2434
- inset: 0;
2435
- z-index: 0;
2436
- border: none;
2437
- background: transparent;
2438
- cursor: pointer;
2439
- padding: 0;
2440
- -webkit-tap-highlight-color: transparent;
2441
- }
2442
- .mw-row-target.svelte-1d18hkf:disabled {
2443
- cursor: default;
2444
- }
2445
- .mw-row-target.svelte-1d18hkf:focus-visible {
2446
- outline: 2px solid var(--dt-accent, #2563eb);
2447
- outline-offset: -2px;
2448
- }
2449
-
2450
- /* ─── Date column ────────────────────────────────── */
2451
- .mw-date.svelte-1d18hkf {
2452
- display: flex;
2453
- flex-direction: column;
2454
- align-items: center;
2455
- width: 40px;
2456
- flex-shrink: 0;
2457
- gap: 2px;
2458
- position: relative;
2459
- z-index: 1;
2460
- pointer-events: none;
2461
- }
2462
-
2463
- .mw-day-name.svelte-1d18hkf {
2464
- font: 600 10px/1 var(--dt-sans, system-ui, sans-serif);
2465
- letter-spacing: 0.06em;
2466
- text-transform: uppercase;
2467
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2468
- }
2469
- .mw-day-name--today.svelte-1d18hkf {
2470
- color: var(--dt-accent, #2563eb);
2471
- }
2472
-
2473
- .mw-day-num.svelte-1d18hkf {
2474
- font: 700 18px/1 var(--dt-sans, system-ui, sans-serif);
2475
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2476
- }
2477
- .mw-day-num--today.svelte-1d18hkf {
2478
- background: var(--dt-accent, #2563eb);
2479
- color: var(--dt-btn-text, #fff);
2480
- width: 30px;
2481
- height: 30px;
2482
- display: inline-flex;
2483
- align-items: center;
2484
- justify-content: center;
2485
- border-radius: 50%;
2486
- font-size: 15px;
2487
- }
2488
-
2489
- /* ─── Events column ──────────────────────────────── */
2490
- .mw-events.svelte-1d18hkf {
2491
- flex: 1;
2492
- min-width: 0;
2493
- display: flex;
2494
- flex-direction: column;
2495
- gap: 4px;
2496
- position: relative;
2497
- z-index: 2;
2498
- }
2499
-
2500
- .mw-empty.svelte-1d18hkf {
2501
- font: 400 12px/1 var(--dt-sans, system-ui, sans-serif);
2502
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2503
- font-style: italic;
2504
- }
2505
-
2506
- /* ─── Event chip ─────────────────────────────────── */
2507
- .mw-ev.svelte-1d18hkf {
2508
- display: flex;
2509
- align-items: center;
2510
- gap: 0;
2511
- border-radius: 6px;
2512
- background: color-mix(in srgb, var(--ev-color) 10%, var(--dt-surface, #f9fafb));
2513
- overflow: hidden;
2514
- cursor: pointer;
2515
- transition: background 120ms;
2516
- -webkit-tap-highlight-color: transparent;
2517
- border: none;
2518
- text-align: left;
2519
- padding: 0;
2520
- }
2521
- .mw-ev.svelte-1d18hkf:active {
2522
- background: color-mix(in srgb, var(--ev-color) 20%, var(--dt-surface, #f9fafb));
2523
- }
2524
- .mw-ev--selected.svelte-1d18hkf {
2525
- box-shadow: 0 0 0 1.5px var(--ev-color);
2526
- }
2527
- .mw-ev--current.svelte-1d18hkf {
2528
- background: color-mix(in srgb, var(--ev-color) 16%, var(--dt-surface, #f9fafb));
2529
- }
2530
- .mw-ev--allday.svelte-1d18hkf {
2531
- background: color-mix(in srgb, var(--ev-color) 14%, var(--dt-surface, #f9fafb));
2532
- }
2533
- .mw-ev--cancelled.svelte-1d18hkf {
2534
- opacity: 0.5;
2535
- }
2536
- .mw-ev--cancelled.svelte-1d18hkf .mw-ev-title:where(.svelte-1d18hkf) {
2537
- text-decoration: line-through;
2538
- }
2539
- .mw-ev--tentative.svelte-1d18hkf {
2540
- opacity: 0.65;
2541
- border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
2542
- }
2543
- .mw-ev--full.svelte-1d18hkf {
2544
- opacity: 0.55;
2545
- }
2546
- .mw-ev--limited.svelte-1d18hkf {
2547
- opacity: 0.65;
2548
- border: 1px dashed color-mix(in srgb, var(--ev-color) 35%, transparent);
2549
- }
2550
-
2551
- .mw-ev-stripe.svelte-1d18hkf {
2552
- width: 3px;
2553
- align-self: stretch;
2554
- background: var(--ev-color, var(--dt-accent));
2555
- flex-shrink: 0;
2556
- border-radius: 6px 0 0 6px;
2557
- }
2558
-
2559
- .mw-ev-body.svelte-1d18hkf {
2560
- flex: 1;
2561
- min-width: 0;
2562
- padding: 5px 8px;
2563
- display: flex;
2564
- align-items: baseline;
2565
- gap: 6px;
2566
- }
2567
-
2568
- .mw-ev-title.svelte-1d18hkf {
2569
- font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
2570
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2571
- white-space: nowrap;
2572
- overflow: hidden;
2573
- text-overflow: ellipsis;
2574
- flex: 1;
2575
- min-width: 0;
2576
- }
2577
-
2578
- .mw-ev-time.svelte-1d18hkf {
2579
- font: 400 11px/1 var(--dt-mono, ui-monospace, monospace);
2580
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2581
- white-space: nowrap;
2582
- flex-shrink: 0;
2583
- }
2584
-
2585
- .mw-ev-more.svelte-1d18hkf {
2586
- font: 400 11px/1 var(--dt-sans, system-ui, sans-serif);
2587
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2588
- padding: 2px 0;
2589
- }
2590
-
2591
- /* ─── Chevron ────────────────────────────────────── */
2592
- .mw-chevron.svelte-1d18hkf {
2593
- flex-shrink: 0;
2594
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2595
- position: relative;
2596
- z-index: 1;
2597
- pointer-events: none;
2598
- }
2599
-
2600
- /* ─── Focus ──────────────────────────────────────── */
2601
- .mw-ev.svelte-1d18hkf:focus-visible {
2602
- outline: 2px solid var(--ev-color, var(--dt-accent));
2603
- outline-offset: 1px;
2604
- }
2605
-
2606
- .mg.svelte-pvjuld {
2607
- display: flex;
2608
- flex-direction: column;
2609
- background: var(--dt-bg);
2610
- color: var(--dt-text);
2611
- font-family: var(--dt-sans);
2612
- overflow: hidden;
2613
- }
2614
- .mg--auto.svelte-pvjuld {
2615
- height: auto;
2616
- }
2617
-
2618
- .mg-head.svelte-pvjuld {
2619
- display: grid;
2620
- grid-template-columns: repeat(7, 1fr);
2621
- border-bottom: 1px solid var(--dt-border);
2622
- flex: none;
2623
- }
2624
- .mg-head-cell.svelte-pvjuld {
2625
- padding: 6px 8px;
2626
- font-family: var(--dt-mono);
2627
- font-size: 11px;
2628
- font-weight: 600;
2629
- text-transform: uppercase;
2630
- letter-spacing: 0.06em;
2631
- color: var(--dt-text-3);
2632
- }
2633
-
2634
- .mg-body.svelte-pvjuld {
2635
- flex: 1;
2636
- display: grid;
2637
- grid-template-columns: repeat(7, 1fr);
2638
- grid-template-rows: repeat(var(--mg-rows, 5), minmax(88px, 1fr));
2639
- min-height: 0;
2640
- }
2641
- .mg--auto.svelte-pvjuld .mg-body:where(.svelte-pvjuld) {
2642
- grid-template-rows: repeat(var(--mg-rows, 5), minmax(88px, auto));
2643
- }
2644
-
2645
- .mg-cell.svelte-pvjuld {
2646
- display: flex;
2647
- flex-direction: column;
2648
- gap: 3px;
2649
- padding: 6px;
2650
- border-right: 1px solid var(--dt-border-day);
2651
- border-bottom: 1px solid var(--dt-border-day);
2652
- min-width: 0;
2653
- overflow: hidden;
2654
- text-align: left;
2655
- }
2656
- .mg-cell.svelte-pvjuld:nth-child(7n) {
2657
- border-right: none;
2658
- }
2659
- .mg-cell--weekend.svelte-pvjuld {
2660
- background: var(--dt-weekend-bg);
2661
- }
2662
- .mg-cell--out.svelte-pvjuld {
2663
- opacity: 0.45;
2664
- }
2665
- .mg-cell--today.svelte-pvjuld {
2666
- background: var(--dt-today-bg);
2667
- }
2668
- .mg-cell--disabled.svelte-pvjuld {
2669
- opacity: 0.35;
2670
- pointer-events: none;
2671
- }
2672
- .mg-cell--clickable.svelte-pvjuld {
2673
- cursor: pointer;
2674
- }
2675
- .mg-cell--clickable.svelte-pvjuld:hover {
2676
- background: var(--dt-hover);
2677
- }
2678
- .mg-cell--clickable.svelte-pvjuld:focus-visible {
2679
- outline: 2px solid var(--dt-accent);
2680
- outline-offset: -2px;
2681
- }
2682
-
2683
- .mg-daynum.svelte-pvjuld {
2684
- flex: none;
2685
- font-family: var(--dt-mono);
2686
- font-size: 12px;
2687
- font-weight: 600;
2688
- color: var(--dt-text-2);
2689
- width: 22px;
2690
- height: 22px;
2691
- display: inline-flex;
2692
- align-items: center;
2693
- justify-content: center;
2694
- border-radius: 999px;
2695
- }
2696
- .mg-daynum--today.svelte-pvjuld {
2697
- background: var(--dt-accent);
2698
- color: var(--dt-btn-text);
2699
- }
2700
-
2701
- .mg-chips.svelte-pvjuld {
2702
- display: flex;
2703
- flex-direction: column;
2704
- gap: 2px;
2705
- min-height: 0;
2706
- overflow: hidden;
2707
- }
2708
- .mg-chip.svelte-pvjuld {
2709
- display: flex;
2710
- align-items: center;
2711
- gap: 5px;
2712
- border: none;
2713
- background: none;
2714
- padding: 2px 4px;
2715
- border-radius: 5px;
2716
- font-family: var(--dt-sans);
2717
- font-size: 12px;
2718
- line-height: 1.3;
2719
- color: var(--dt-text);
2720
- cursor: pointer;
2721
- min-width: 0;
2722
- text-align: left;
2723
- }
2724
- .mg-chip.svelte-pvjuld:hover {
2725
- background: var(--dt-hover);
2726
- }
2727
- .mg-chip--selected.svelte-pvjuld {
2728
- background: var(--dt-accent-dim);
2729
- }
2730
- .mg-chip--cancelled.svelte-pvjuld {
2731
- text-decoration: line-through;
2732
- opacity: 0.55;
2733
- }
2734
- .mg-chip-dot.svelte-pvjuld {
2735
- flex: none;
2736
- width: 7px;
2737
- height: 7px;
2738
- border-radius: 999px;
2739
- background: var(--mg-chip-color);
2740
- }
2741
- .mg-chip-time.svelte-pvjuld {
2742
- flex: none;
2743
- font-family: var(--dt-mono);
2744
- font-size: 11px;
2745
- color: var(--dt-text-2);
2746
- }
2747
- .mg-chip-title.svelte-pvjuld {
2748
- overflow: hidden;
2749
- text-overflow: ellipsis;
2750
- white-space: nowrap;
2751
- }
2752
- .mg-more.svelte-pvjuld {
2753
- padding: 1px 4px;
2754
- font-family: var(--dt-mono);
2755
- font-size: 11px;
2756
- color: var(--dt-text-3);
2757
- }
2758
-
2759
- @media (max-width: 640px) {
2760
- .mg-body.svelte-pvjuld {
2761
- grid-template-rows: repeat(var(--mg-rows, 5), minmax(64px, 1fr));
2762
- }
2763
- .mg-chip-time.svelte-pvjuld {
2764
- display: none;
2765
- }
2766
- }
2767
-
2768
- .cal.svelte-1b53e7w {
2769
- position: relative;
2770
- width: 100%;
2771
- min-width: 0;
2772
- height: var(--cal-h, 600px);
2773
- background: var(--dt-bg, inherit);
2774
- border-radius: var(--cal-r, 12px);
2775
- overflow: clip;
2776
- display: flex;
2777
- flex-direction: column;
2778
- border: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2779
- box-sizing: border-box;
2780
- }
2781
- .cal--auto.svelte-1b53e7w {
2782
- height: auto;
2783
- overflow: visible;
2784
- }
2785
-
2786
-
2787
- /* ── Desktop header ── */
2788
- .cal-hd.svelte-1b53e7w {
2789
- display: flex;
2790
- align-items: center;
2791
- gap: 8px;
2792
- padding: 8px 12px;
2793
- min-height: 48px;
2794
- box-sizing: border-box;
2795
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2796
- flex-shrink: 0;
2797
- }
2798
-
2799
- .cal-hd-side.svelte-1b53e7w {
2800
- display: flex;
2801
- align-items: center;
2802
- gap: 4px;
2803
- flex: 1;
2804
- min-width: 0;
2805
- }
2806
-
2807
- .cal-hd-side--end.svelte-1b53e7w {
2808
- justify-content: flex-end;
2809
- }
2810
-
2811
- .cal-hd-title.svelte-1b53e7w {
2812
- font: 600 14px/1.2 var(--dt-sans, system-ui, sans-serif);
2813
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2814
- white-space: nowrap;
2815
- overflow: hidden;
2816
- text-overflow: ellipsis;
2817
- }
2818
-
2819
- .cal-hd-btn.svelte-1b53e7w {
2820
- display: flex;
2821
- align-items: center;
2822
- justify-content: center;
2823
- width: 28px;
2824
- height: 28px;
2825
- border: none;
2826
- background: transparent;
2827
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2828
- border-radius: 6px;
2829
- cursor: pointer;
2830
- transition: background 120ms, color 120ms;
2831
- }
2832
-
2833
- .cal-hd-btn.svelte-1b53e7w:hover {
2834
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2835
- background: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 8%, transparent);
2836
- }
2837
-
2838
- .cal-hd-btn.svelte-1b53e7w:focus-visible,
2839
- .cal-hd-today.svelte-1b53e7w:focus-visible,
2840
- .cal-pill.svelte-1b53e7w:focus-visible {
2841
- outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
2842
- outline-offset: 2px;
2843
- }
2844
-
2845
- .cal-hd-today.svelte-1b53e7w {
2846
- font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
2847
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2848
- background: transparent;
2849
- border: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2850
- padding: 6px 10px;
2851
- border-radius: 6px;
2852
- cursor: pointer;
2853
- white-space: nowrap;
2854
- margin-right: 2px;
2855
- transition: background 120ms, color 120ms, border-color 120ms;
2856
- }
2857
-
2858
- .cal-hd-today.svelte-1b53e7w:hover {
2859
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2860
- border-color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2861
- }
2862
-
2863
- .cal-pills.svelte-1b53e7w {
2864
- display: flex;
2865
- gap: 2px;
2866
- background: color-mix(in srgb, var(--dt-surface, var(--dt-bg, #ffffff)) 85%, transparent);
2867
- border-radius: 8px;
2868
- padding: 2px;
2869
- border: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2870
- flex-shrink: 0;
2871
- }
2872
-
2873
- .cal-pill.svelte-1b53e7w {
2874
- border: none;
2875
- background: transparent;
2876
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2877
- cursor: pointer;
2878
- font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
2879
- padding: 5px 12px;
2880
- border-radius: 6px;
2881
- transition: background 100ms, color 100ms;
2882
- }
2883
-
2884
- .cal-pill.svelte-1b53e7w:hover {
2885
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2886
- }
2887
-
2888
- .cal-pill--active.svelte-1b53e7w {
2889
- background: var(--dt-accent, #2563eb);
2890
- color: var(--dt-btn-text, #fff);
2891
- }
2892
-
2893
- .cal-body.svelte-1b53e7w {
2894
- flex: 1;
2895
- min-height: 0;
2896
- position: relative;
2897
- overflow: hidden;
2898
- }
2899
- .cal--auto.svelte-1b53e7w .cal-body:where(.svelte-1b53e7w) {
2900
- overflow: visible;
2901
- }
2902
-
2903
- .cal-empty.svelte-1b53e7w {
2904
- display: flex;
2905
- align-items: center;
2906
- justify-content: center;
2907
- height: 100%;
2908
- font: 400 13px / 1 var(--dt-sans, system-ui, sans-serif);
2909
- color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
2910
- }
2911
-
2912
- .cal-loading.svelte-1b53e7w {
2913
- position: absolute;
2914
- top: 0;
2915
- left: 0;
2916
- right: 0;
2917
- height: 2px;
2918
- background: linear-gradient(
2919
- 90deg,
2920
- transparent 0%,
2921
- var(--dt-accent, #2563eb) 50%,
2922
- transparent 100%
2923
- );
2924
- animation: svelte-1b53e7w-cal-slide 1.2s ease-in-out infinite;
2925
- }
2926
-
2927
- @keyframes svelte-1b53e7w-cal-slide {
2928
- 0% { transform: translateX(-100%); }
2929
- 100% { transform: translateX(100%); }
2930
- }
2931
-
2932
- /* ── Mobile header (flow layout) ── */
2933
- .cal-m-hd.svelte-1b53e7w {
2934
- display: flex;
2935
- align-items: center;
2936
- gap: 4px;
2937
- padding: 8px 8px 6px;
2938
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2939
- flex-shrink: 0;
2940
- min-height: 44px;
2941
- }
2942
-
2943
- .cal-m-left.svelte-1b53e7w,
2944
- .cal-m-right.svelte-1b53e7w {
2945
- display: flex;
2946
- align-items: center;
2947
- gap: 2px;
2948
- flex-shrink: 0;
2949
- }
2950
-
2951
- .cal-m-right.svelte-1b53e7w {
2952
- justify-content: flex-end;
2953
- }
2954
-
2955
- .cal-m-nav.svelte-1b53e7w {
2956
- display: flex;
2957
- align-items: center;
2958
- justify-content: center;
2959
- width: 32px;
2960
- height: 32px;
2961
- border: none;
2962
- background: transparent;
2963
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2964
- border-radius: 50%;
2965
- cursor: pointer;
2966
- transition: background 120ms, color 120ms;
2967
- -webkit-tap-highlight-color: transparent;
2968
- flex-shrink: 0;
2969
- }
2970
- .cal-m-nav.svelte-1b53e7w:hover {
2971
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
2972
- background: color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 8%, transparent);
2973
- }
2974
- .cal-m-nav.svelte-1b53e7w:active {
2975
- background: var(--dt-accent-dim, rgba(37, 99, 235, 0.12));
2976
- }
2977
- .cal-m-nav.svelte-1b53e7w:focus-visible {
2978
- outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
2979
- outline-offset: 2px;
2980
- }
2981
-
2982
- .cal-m-pills.svelte-1b53e7w {
2983
- display: flex;
2984
- gap: 2px;
2985
- background: color-mix(in srgb, var(--dt-surface, var(--dt-bg, #ffffff)) 85%, transparent);
2986
- border-radius: 8px;
2987
- padding: 2px;
2988
- border: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
2989
- flex-shrink: 0;
2990
- }
2991
- .cal-m-pill.svelte-1b53e7w {
2992
- border: none;
2993
- background: transparent;
2994
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
2995
- cursor: pointer;
2996
- font: 600 11px / 1 var(--dt-sans, system-ui, sans-serif);
2997
- padding: 5px 10px;
2998
- border-radius: 6px;
2999
- letter-spacing: 0.04em;
3000
- text-transform: uppercase;
3001
- transition: background 100ms, color 100ms;
3002
- -webkit-tap-highlight-color: transparent;
3003
- }
3004
- .cal-m-pill.svelte-1b53e7w:hover {
3005
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
3006
- }
3007
- .cal-m-pill--active.svelte-1b53e7w {
3008
- background: var(--dt-accent, #2563eb);
3009
- color: var(--dt-btn-text, #fff);
3010
- }
3011
-
3012
- .cal-m-title.svelte-1b53e7w {
3013
- flex: 1;
3014
- text-align: center;
3015
- font: 600 14px / 1.2 var(--dt-sans, system-ui, sans-serif);
3016
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
3017
- white-space: nowrap;
3018
- overflow: hidden;
3019
- text-overflow: ellipsis;
3020
- min-width: 0;
3021
- }
3022
-
3023
- .cal-m-today-bar.svelte-1b53e7w {
3024
- display: flex;
3025
- justify-content: center;
3026
- padding: 12px 8px 6px;
3027
- flex-shrink: 0;
3028
- }
3029
-
3030
- .cal-m-today.svelte-1b53e7w {
3031
- font: 600 11px / 1 var(--dt-sans, system-ui, sans-serif);
3032
- color: var(--dt-accent, #2563eb);
3033
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 10%, transparent);
3034
- border: none;
3035
- padding: 5px 10px;
3036
- border-radius: 6px;
3037
- cursor: pointer;
3038
- white-space: nowrap;
3039
- letter-spacing: 0.04em;
3040
- text-transform: uppercase;
3041
- transition: background 120ms, color 120ms;
3042
- -webkit-tap-highlight-color: transparent;
3043
- flex-shrink: 0;
3044
- }
3045
- .cal-m-today.svelte-1b53e7w:hover {
3046
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 18%, transparent);
3047
- }
3048
- .cal-m-today.svelte-1b53e7w:active {
3049
- background: color-mix(in srgb, var(--dt-accent, #2563eb) 25%, transparent);
3050
- }
3051
- .cal-m-today.svelte-1b53e7w:focus-visible {
3052
- outline: 2px solid color-mix(in srgb, var(--dt-accent, #2563eb) 55%, transparent);
3053
- outline-offset: 2px;
3054
- }