@nomideusz/svelte-calendar 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +143 -93
- package/dist/adapters/mapped.d.ts +7 -7
- package/dist/adapters/mapped.js +5 -2
- package/dist/adapters/memory.d.ts +7 -6
- package/dist/adapters/memory.js +3 -4
- package/dist/adapters/recurring.d.ts +6 -6
- package/dist/adapters/recurring.js +12 -14
- package/dist/calendar/Calendar.svelte +226 -304
- package/dist/calendar/Calendar.svelte.d.ts +1 -1
- package/dist/primitives/DayHeader.svelte +7 -7
- package/dist/primitives/EmptySlot.svelte +6 -6
- package/dist/primitives/EventBlock.svelte +19 -19
- package/dist/primitives/FloatingPanel.svelte +4 -4
- package/dist/primitives/NowIndicator.svelte +5 -5
- package/dist/primitives/TimeGutter.svelte +4 -4
- package/dist/theme/auto.d.ts +5 -0
- package/dist/theme/auto.js +16 -3
- package/dist/theme/presets.d.ts +2 -2
- package/dist/theme/presets.js +2 -2
- package/dist/views/agenda/AgendaDay.svelte +207 -323
- package/dist/views/agenda/AgendaWeek.svelte +145 -222
- package/dist/views/mobile/MobileDay.svelte +79 -60
- package/dist/views/mobile/MobileWeek.svelte +48 -38
- package/dist/views/month/MonthGrid.svelte +92 -36
- package/dist/views/planner/PlannerScroll.svelte +78 -72
- package/dist/views/planner/PlannerWeek.svelte +145 -90
- package/dist/views/shared/context.svelte.d.ts +2 -0
- package/dist/views/shared/context.svelte.js +1 -0
- package/dist/views/shared/format.d.ts +3 -0
- package/dist/views/shared/format.js +10 -1
- package/package.json +1 -1
- package/widget/widget.js +816 -725
|
@@ -135,14 +135,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
135
135
|
<div class="ag-body" role="group" aria-label={L.todaysLineup}>
|
|
136
136
|
<!-- ─── In-view date header (only when the chrome doesn't label the day) ─── -->
|
|
137
137
|
{#if !hideDayHead}
|
|
138
|
-
<div class="ag-day-head">
|
|
138
|
+
<div class="ag-day-head" class:ag-day-head--today={!equalDays && isToday}>
|
|
139
|
+
<span class="ag-day-head-num">{dayNum(dayMs)}</span>
|
|
139
140
|
{#if !equalDays && isToday}
|
|
140
141
|
<span class="ag-day-head-badge">{L.today}</span>
|
|
141
142
|
{:else if !equalDays && isTomorrow}
|
|
142
143
|
<span class="ag-day-head-badge ag-day-head-badge--muted">{L.tomorrow}</span>
|
|
143
144
|
{/if}
|
|
144
145
|
<span class="ag-day-head-name">{weekdayLong(dayMs, locale)}</span>
|
|
145
|
-
<span class="ag-day-head-date">{monthLong(dayMs, locale)}
|
|
146
|
+
<span class="ag-day-head-date">{monthLong(dayMs, locale)}</span>
|
|
146
147
|
</div>
|
|
147
148
|
{/if}
|
|
148
149
|
{#if allDayBanner.length > 0}
|
|
@@ -183,7 +184,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
183
184
|
class:ag-compact-row--selected={selectedEventId === ev.id}
|
|
184
185
|
class:ag-compact-row--cancelled={ev.status === 'cancelled'}
|
|
185
186
|
class:ag-compact-row--tentative={ev.status === 'tentative'}
|
|
186
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
187
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
187
188
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
|
|
188
189
|
onclick={() => handleClick(ev)}
|
|
189
190
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -220,7 +221,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
220
221
|
type="button"
|
|
221
222
|
class="ag-q-now"
|
|
222
223
|
class:ag-q-now--selected={selectedEventId === ev.id}
|
|
223
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
224
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
224
225
|
aria-label="{ev.title}, {L.happeningNow}, {L.percentComplete(Math.round(prog(ev) * 100))}"
|
|
225
226
|
onclick={() => handleClick(ev)}
|
|
226
227
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -251,7 +252,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
251
252
|
aria-label="{ev.title}, {L.completed}, {fmt(ev.start)}"
|
|
252
253
|
onclick={() => handleClick(ev)}
|
|
253
254
|
>
|
|
254
|
-
<span class="ag-q-done-check">✓</span>
|
|
255
|
+
<span class="ag-q-done-check" aria-hidden="true">✓</span>
|
|
255
256
|
<span class="ag-q-done-title">{ev.title}</span>
|
|
256
257
|
</button>
|
|
257
258
|
{/each}
|
|
@@ -278,7 +279,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
278
279
|
type="button"
|
|
279
280
|
class="ag-compact-row ag-compact-row--queue"
|
|
280
281
|
class:ag-compact-row--selected={selectedEventId === ev.id}
|
|
281
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
282
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
282
283
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
|
|
283
284
|
onclick={() => handleClick(ev)}
|
|
284
285
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -299,7 +300,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
299
300
|
class="ag-card ag-card--q"
|
|
300
301
|
class:ag-card--hero={i === 0}
|
|
301
302
|
class:ag-card--selected={selectedEventId === ev.id}
|
|
302
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
303
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
303
304
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
|
|
304
305
|
onclick={() => handleClick(ev)}
|
|
305
306
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -310,13 +311,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
310
311
|
<span class="ag-card-title">{ev.title}</span>
|
|
311
312
|
<span class="ag-card-eta">{eta(ev.start.getTime())}</span>
|
|
312
313
|
</div>
|
|
313
|
-
{#if ev.subtitle}
|
|
314
|
-
<span class="ag-card-sub">{ev.subtitle}</span>
|
|
315
|
-
{/if}
|
|
316
314
|
<div class="ag-card-meta">
|
|
317
315
|
{fmt(ev.start)} – {fmt(ev.end)}
|
|
318
316
|
<span class="ag-card-dur">{duration(ev)}</span>
|
|
319
317
|
</div>
|
|
318
|
+
{#if ev.subtitle}
|
|
319
|
+
<span class="ag-card-sub">{ev.subtitle}</span>
|
|
320
|
+
{/if}
|
|
320
321
|
{#if ev.tags?.length}
|
|
321
322
|
<div class="ag-card-tags">
|
|
322
323
|
{#each ev.tags as tag}
|
|
@@ -346,14 +347,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
346
347
|
type="button"
|
|
347
348
|
class="ag-log-row"
|
|
348
349
|
class:ag-log-row--selected={selectedEventId === ev.id}
|
|
349
|
-
|
|
350
|
+
class:ag-log-row--cancelled={ev.status === 'cancelled'}
|
|
351
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
350
352
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)} – {fmt(ev.end)}"
|
|
351
353
|
onclick={() => handleClick(ev)}
|
|
352
354
|
onpointerenter={() => oneventhover?.(ev)}
|
|
353
355
|
>
|
|
354
|
-
<span class="ag-log-check">✓</span>
|
|
356
|
+
<span class="ag-log-check" aria-hidden="true">✓</span>
|
|
355
357
|
<span class="ag-log-time">{fmt(ev.start)}</span>
|
|
356
|
-
<span class="ag-log-dot" style:background={ev.color || 'var(--dt-accent)'}></span>
|
|
358
|
+
<span class="ag-log-dot" style:background={ev.color || 'var(--dt-event, var(--dt-accent))'}></span>
|
|
357
359
|
<span class="ag-log-title">{ev.title}</span>
|
|
358
360
|
<span class="ag-log-dur">{duration(ev)}</span>
|
|
359
361
|
</button>
|
|
@@ -379,7 +381,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
379
381
|
class:ag-card--tentative={ev.status === 'tentative'}
|
|
380
382
|
class:ag-card--full={ev.status === 'full'}
|
|
381
383
|
class:ag-card--limited={ev.status === 'limited'}
|
|
382
|
-
style:--ev-color={ev.color || 'var(--dt-accent)'}
|
|
384
|
+
style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
|
|
383
385
|
aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)} – {fmt(ev.end)}, {duration(ev)}"
|
|
384
386
|
onclick={() => handleClick(ev)}
|
|
385
387
|
onpointerenter={() => oneventhover?.(ev)}
|
|
@@ -390,16 +392,16 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
390
392
|
<span class="ag-card-order">{i + 1}</span>
|
|
391
393
|
<span class="ag-card-title">{ev.title}</span>
|
|
392
394
|
</div>
|
|
395
|
+
<div class="ag-card-meta">
|
|
396
|
+
{fmt(ev.start)} – {fmt(ev.end)}
|
|
397
|
+
<span class="ag-card-dur">{duration(ev)}</span>
|
|
398
|
+
</div>
|
|
393
399
|
{#if ev.subtitle}
|
|
394
400
|
<span class="ag-card-sub">{ev.subtitle}</span>
|
|
395
401
|
{/if}
|
|
396
402
|
{#if ev.location}
|
|
397
403
|
<span class="ag-card-loc">{ev.location}</span>
|
|
398
404
|
{/if}
|
|
399
|
-
<div class="ag-card-meta">
|
|
400
|
-
{fmt(ev.start)} – {fmt(ev.end)}
|
|
401
|
-
<span class="ag-card-dur">{duration(ev)}</span>
|
|
402
|
-
</div>
|
|
403
405
|
{#if ev.tags?.length}
|
|
404
406
|
<div class="ag-card-tags">
|
|
405
407
|
{#each ev.tags as tag}
|
|
@@ -429,7 +431,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
429
431
|
width: 100%;
|
|
430
432
|
min-width: 0;
|
|
431
433
|
box-sizing: border-box;
|
|
432
|
-
color: var(--dt-text, rgba(
|
|
434
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
433
435
|
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
434
436
|
}
|
|
435
437
|
|
|
@@ -461,8 +463,8 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
461
463
|
135deg,
|
|
462
464
|
transparent,
|
|
463
465
|
transparent 6px,
|
|
464
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
465
|
-
color-mix(in srgb, var(--dt-text, rgba(
|
|
466
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 4%, transparent) 6px,
|
|
467
|
+
color-mix(in srgb, var(--dt-text, rgba(15, 15, 15, 0.87)) 4%, transparent) 12px
|
|
466
468
|
);
|
|
467
469
|
}
|
|
468
470
|
|
|
@@ -489,27 +491,34 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
489
491
|
padding: 0 16px 6px;
|
|
490
492
|
flex-shrink: 0;
|
|
491
493
|
}
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
494
|
+
/* The planner's header type: the day number is the typography (40/400,
|
|
495
|
+
narrowed), the weekday a tracked 12/500 label; today takes the accent. */
|
|
496
|
+
.ag-day-head-num {
|
|
497
|
+
font: 400 40px/1 var(--dt-sans, system-ui, sans-serif);
|
|
498
|
+
font-stretch: 90%;
|
|
499
|
+
letter-spacing: -0.02em;
|
|
500
|
+
font-variant-numeric: tabular-nums;
|
|
501
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
502
|
+
margin-inline-end: 4px;
|
|
503
|
+
}
|
|
504
|
+
.ag-day-head-badge,
|
|
505
|
+
.ag-day-head-name {
|
|
506
|
+
font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
|
|
495
507
|
letter-spacing: 0.08em;
|
|
496
508
|
text-transform: uppercase;
|
|
497
|
-
color: var(--dt-
|
|
509
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
498
510
|
}
|
|
499
|
-
.ag-day-head
|
|
500
|
-
|
|
511
|
+
.ag-day-head--today .ag-day-head-num,
|
|
512
|
+
.ag-day-head--today .ag-day-head-name,
|
|
513
|
+
.ag-day-head-badge {
|
|
514
|
+
color: var(--dt-accent, #1d4fd7);
|
|
501
515
|
}
|
|
502
|
-
.ag-day-head-
|
|
503
|
-
|
|
504
|
-
font-weight: 600;
|
|
505
|
-
line-height: 1.2;
|
|
516
|
+
.ag-day-head .ag-day-head-badge--muted {
|
|
517
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
506
518
|
}
|
|
507
519
|
.ag-day-head-date {
|
|
508
|
-
font
|
|
509
|
-
|
|
510
|
-
font-variant-numeric: tabular-nums;
|
|
511
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
512
|
-
line-height: 1.2;
|
|
520
|
+
font: 400 12.5px/1 var(--dt-sans, system-ui, sans-serif);
|
|
521
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
513
522
|
}
|
|
514
523
|
.ag--auto .ag-body { overflow-y: visible; min-height: auto; }
|
|
515
524
|
.ag-body::-webkit-scrollbar {
|
|
@@ -526,13 +535,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
526
535
|
align-items: center;
|
|
527
536
|
gap: 8px;
|
|
528
537
|
padding: 6px 16px;
|
|
529
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
538
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
530
539
|
}
|
|
531
540
|
.ag-allday-label {
|
|
532
|
-
font:
|
|
541
|
+
font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
|
|
533
542
|
text-transform: uppercase;
|
|
534
|
-
letter-spacing: 0.
|
|
535
|
-
color: var(--dt-text-2, rgba(
|
|
543
|
+
letter-spacing: 0.08em;
|
|
544
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
536
545
|
white-space: nowrap;
|
|
537
546
|
flex-shrink: 0;
|
|
538
547
|
}
|
|
@@ -546,7 +555,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
546
555
|
display: flex;
|
|
547
556
|
align-items: center;
|
|
548
557
|
gap: 5px;
|
|
549
|
-
padding:
|
|
558
|
+
padding: 4px 10px;
|
|
550
559
|
border-radius: 0;
|
|
551
560
|
border: none;
|
|
552
561
|
background: var(--ev-color);
|
|
@@ -559,7 +568,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
559
568
|
}
|
|
560
569
|
.ag-allday-chip:focus-visible {
|
|
561
570
|
outline: none;
|
|
562
|
-
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #
|
|
571
|
+
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
563
572
|
}
|
|
564
573
|
.ag-allday-chip--selected {
|
|
565
574
|
box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff);
|
|
@@ -568,7 +577,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
568
577
|
display: none;
|
|
569
578
|
}
|
|
570
579
|
.ag-allday-title {
|
|
571
|
-
font: 500
|
|
580
|
+
font: 500 13.5px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
572
581
|
color: inherit;
|
|
573
582
|
white-space: nowrap;
|
|
574
583
|
}
|
|
@@ -583,7 +592,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
583
592
|
border-radius: 0;
|
|
584
593
|
background: transparent;
|
|
585
594
|
border: none;
|
|
586
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
595
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
587
596
|
overflow: hidden;
|
|
588
597
|
cursor: pointer;
|
|
589
598
|
transition: background 150ms, box-shadow 150ms;
|
|
@@ -599,18 +608,18 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
599
608
|
}
|
|
600
609
|
.ag-card:hover,
|
|
601
610
|
.ag-card:active {
|
|
602
|
-
background: var(--dt-hover, rgba(
|
|
611
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
603
612
|
}
|
|
604
613
|
.ag-card:focus-visible {
|
|
605
614
|
outline: none;
|
|
606
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
615
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
607
616
|
}
|
|
608
617
|
.ag-card--selected {
|
|
609
618
|
box-shadow: inset 0 0 0 1px var(--ev-color);
|
|
610
619
|
}
|
|
611
620
|
.ag-card--cancelled .ag-card-title {
|
|
612
621
|
text-decoration: line-through;
|
|
613
|
-
color: var(--dt-text-2, rgba(
|
|
622
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
614
623
|
}
|
|
615
624
|
.ag-card--cancelled::before,
|
|
616
625
|
.ag-card--full::before {
|
|
@@ -619,71 +628,58 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
619
628
|
.ag-card--tentative .ag-card-title,
|
|
620
629
|
.ag-card--limited .ag-card-title,
|
|
621
630
|
.ag-card--full .ag-card-title {
|
|
622
|
-
color: var(--dt-text-2, rgba(
|
|
631
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
623
632
|
}
|
|
624
633
|
.ag-card--tentative::before,
|
|
625
634
|
.ag-card--limited::before {
|
|
626
635
|
background: repeating-linear-gradient(180deg, var(--ev-color) 0 4px, transparent 4px 7px);
|
|
627
636
|
}
|
|
637
|
+
/* Planner scale: title 15/500, time 14 tabular in ink, meta 12.5 in ink-2.
|
|
638
|
+
The body keeps a reading measure so meta never drifts across a wide row. */
|
|
628
639
|
.ag-card-body {
|
|
629
640
|
padding: 10px 12px 10px 15px;
|
|
630
641
|
display: flex;
|
|
631
642
|
flex-direction: column;
|
|
632
|
-
gap:
|
|
643
|
+
gap: 3px;
|
|
633
644
|
min-width: 0;
|
|
645
|
+
max-width: 44rem;
|
|
634
646
|
flex: 1;
|
|
635
647
|
}
|
|
636
648
|
.ag-card-top {
|
|
637
649
|
display: flex;
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
gap: 8px;
|
|
650
|
+
align-items: baseline;
|
|
651
|
+
gap: 12px;
|
|
641
652
|
min-width: 0;
|
|
642
653
|
}
|
|
643
654
|
.ag-card-title {
|
|
644
|
-
font
|
|
645
|
-
|
|
646
|
-
color: var(--dt-text, rgba(0, 0, 0, 0.87));
|
|
647
|
-
line-height: 1.3;
|
|
655
|
+
font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
656
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
648
657
|
word-break: break-word;
|
|
649
|
-
flex: 1;
|
|
650
658
|
min-width: 0;
|
|
651
659
|
}
|
|
652
660
|
.ag-card-meta {
|
|
653
|
-
font
|
|
654
|
-
color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
|
|
655
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
661
|
+
font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
656
662
|
font-variant-numeric: tabular-nums;
|
|
657
|
-
|
|
663
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
658
664
|
}
|
|
659
|
-
.ag-card-dur
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
.ag-card-
|
|
664
|
-
font
|
|
665
|
-
color: var(--dt-text-2, rgba(
|
|
666
|
-
line-height: 1;
|
|
665
|
+
.ag-card-dur,
|
|
666
|
+
.ag-card-eta,
|
|
667
|
+
.ag-card-sub,
|
|
668
|
+
.ag-card-loc,
|
|
669
|
+
.ag-card-tag {
|
|
670
|
+
font: 400 12.5px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
671
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
667
672
|
}
|
|
668
|
-
.ag-card-
|
|
669
|
-
|
|
670
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
671
|
-
line-height: 1;
|
|
673
|
+
.ag-card-dur {
|
|
674
|
+
margin-left: 8px;
|
|
672
675
|
}
|
|
673
676
|
.ag-card-tags {
|
|
674
677
|
display: flex;
|
|
675
|
-
gap:
|
|
678
|
+
column-gap: 10px;
|
|
679
|
+
row-gap: 2px;
|
|
676
680
|
flex-wrap: wrap;
|
|
677
681
|
}
|
|
678
682
|
.ag-card-tag {
|
|
679
|
-
font: 500 10.5px / 1 var(--dt-sans, system-ui, sans-serif);
|
|
680
|
-
text-transform: uppercase;
|
|
681
|
-
letter-spacing: 0.04em;
|
|
682
|
-
color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
|
|
683
|
-
background: transparent;
|
|
684
|
-
border: 1px solid var(--dt-border-day, rgba(0, 0, 0, 0.6));
|
|
685
|
-
padding: 2px 5px;
|
|
686
|
-
border-radius: 0;
|
|
687
683
|
white-space: nowrap;
|
|
688
684
|
}
|
|
689
685
|
|
|
@@ -694,67 +690,39 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
694
690
|
.ag-compact-row--queue {
|
|
695
691
|
margin: 0;
|
|
696
692
|
}
|
|
697
|
-
|
|
698
|
-
.ag-card--q .ag-card-body {
|
|
699
|
-
gap: 3px;
|
|
700
|
-
}
|
|
701
|
-
.ag-card--q .ag-card-tags {
|
|
702
|
-
margin-top: 2px;
|
|
703
|
-
}
|
|
704
693
|
.ag-card-eta {
|
|
705
|
-
font-size: 11px;
|
|
706
|
-
font-weight: 500;
|
|
707
|
-
letter-spacing: 0.04em;
|
|
708
|
-
color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
|
|
709
694
|
flex-shrink: 0;
|
|
710
695
|
white-space: nowrap;
|
|
696
|
+
font-variant-numeric: tabular-nums;
|
|
711
697
|
}
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
font-weight: 500;
|
|
715
|
-
}
|
|
698
|
+
/* The next one up: its countdown in ink. Size stays on the scale — the
|
|
699
|
+
happening-now item is the largest thing in the queue. */
|
|
716
700
|
.ag-card--hero .ag-card-eta {
|
|
717
|
-
|
|
718
|
-
color: var(--dt-text, rgba(0, 0, 0, 0.87));
|
|
719
|
-
}
|
|
720
|
-
.ag-card--hero .ag-card-body {
|
|
721
|
-
padding: 14px 16px;
|
|
701
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
722
702
|
}
|
|
723
703
|
|
|
724
704
|
/* ── Plan card variant ── */
|
|
725
705
|
|
|
726
706
|
.ag-card--plan .ag-card-body {
|
|
727
707
|
padding: 12px 14px;
|
|
728
|
-
gap: 3px;
|
|
729
|
-
}
|
|
730
|
-
.ag-card--plan .ag-card-top {
|
|
731
|
-
align-items: baseline;
|
|
732
708
|
}
|
|
733
709
|
.ag-card-order {
|
|
734
|
-
font
|
|
735
|
-
font-weight: 700;
|
|
736
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
737
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
710
|
+
font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
738
711
|
font-variant-numeric: tabular-nums;
|
|
712
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
713
|
+
min-width: 18px;
|
|
739
714
|
flex-shrink: 0;
|
|
740
715
|
}
|
|
741
|
-
.ag-card--plan .ag-card-
|
|
742
|
-
|
|
743
|
-
}
|
|
744
|
-
.ag-card--first .ag-card-title {
|
|
745
|
-
font-size: 16px;
|
|
746
|
-
font-weight: 500;
|
|
716
|
+
.ag-card--plan .ag-card-top {
|
|
717
|
+
gap: 10px;
|
|
747
718
|
}
|
|
748
719
|
/* Everything under the title aligns past the order number — the
|
|
749
720
|
subtitle, location, time and tags share one left edge. */
|
|
750
721
|
.ag-card--plan .ag-card-sub,
|
|
751
722
|
.ag-card--plan .ag-card-loc,
|
|
752
|
-
.ag-card--plan .ag-card-meta
|
|
753
|
-
padding-left: 22px;
|
|
754
|
-
}
|
|
723
|
+
.ag-card--plan .ag-card-meta,
|
|
755
724
|
.ag-card--plan .ag-card-tags {
|
|
756
|
-
padding-left:
|
|
757
|
-
margin-top: 2px;
|
|
725
|
+
padding-left: 28px;
|
|
758
726
|
}
|
|
759
727
|
|
|
760
728
|
/* ═══ The Queue: 2-column grid ═══ */
|
|
@@ -766,8 +734,10 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
766
734
|
padding: 8px 0 10px;
|
|
767
735
|
min-height: 0;
|
|
768
736
|
}
|
|
769
|
-
/* Mobile:
|
|
770
|
-
|
|
737
|
+
/* Mobile: one column in reading order — what's happening now first, then
|
|
738
|
+
"Up next", then the finished ones. The status column dissolves
|
|
739
|
+
(display: contents) so its Now and Done parts can sit either side of
|
|
740
|
+
the queue. */
|
|
771
741
|
/* Horizontal swipes are ours (day navigation); the browser keeps
|
|
772
742
|
vertical scrolling and pinch-zoom. */
|
|
773
743
|
.ag--mobile,
|
|
@@ -777,114 +747,51 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
777
747
|
.ag--mobile .ag-q {
|
|
778
748
|
grid-template-columns: 1fr;
|
|
779
749
|
min-height: auto;
|
|
750
|
+
padding-inline: 16px;
|
|
780
751
|
}
|
|
781
752
|
.ag--mobile .ag-q-status {
|
|
782
|
-
|
|
783
|
-
border-right: none;
|
|
784
|
-
border-top: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
|
|
785
|
-
padding-top: 10px;
|
|
786
|
-
margin-top: 8px;
|
|
787
|
-
overflow-y: visible;
|
|
753
|
+
display: contents;
|
|
788
754
|
}
|
|
789
755
|
.ag--mobile .ag-q-queue {
|
|
790
|
-
order:
|
|
756
|
+
order: 2;
|
|
791
757
|
overflow-y: visible;
|
|
792
|
-
padding
|
|
758
|
+
padding: 12px 0 16px;
|
|
793
759
|
}
|
|
794
|
-
.ag--mobile .ag-
|
|
795
|
-
|
|
796
|
-
padding-bottom: 1px;
|
|
760
|
+
.ag--mobile .ag-q-done-section {
|
|
761
|
+
order: 3;
|
|
797
762
|
}
|
|
798
|
-
/* Mobile: larger touch targets */
|
|
763
|
+
/* Mobile: larger touch targets; type is already on the planner scale. */
|
|
799
764
|
.ag--mobile .ag-card-body {
|
|
800
765
|
padding: 14px 16px;
|
|
801
766
|
}
|
|
802
|
-
.ag--mobile .ag-card-title {
|
|
803
|
-
font-size: 15px;
|
|
804
|
-
}
|
|
805
|
-
.ag--mobile .ag-card--hero .ag-card-title {
|
|
806
|
-
font-size: 18px;
|
|
807
|
-
}
|
|
808
|
-
.ag--mobile .ag-card--hero .ag-card-body {
|
|
809
|
-
padding: 16px 18px;
|
|
810
|
-
}
|
|
811
767
|
.ag--mobile .ag-log-row {
|
|
812
768
|
padding: 12px 0;
|
|
813
769
|
}
|
|
814
|
-
.ag--mobile .ag-
|
|
815
|
-
padding:
|
|
816
|
-
}
|
|
817
|
-
.ag--mobile .ag-card--plan .ag-card-title {
|
|
818
|
-
font-size: 15px;
|
|
819
|
-
}
|
|
820
|
-
/* Mobile: Now/Done status subtree type scale */
|
|
821
|
-
.ag--mobile .ag-q-label {
|
|
822
|
-
font-size: 11px;
|
|
823
|
-
}
|
|
824
|
-
.ag--mobile .ag-q-clock {
|
|
825
|
-
font-size: 12px;
|
|
826
|
-
}
|
|
827
|
-
.ag--mobile .ag-q-now-title {
|
|
828
|
-
font-size: 16px;
|
|
829
|
-
}
|
|
830
|
-
.ag--mobile .ag-q-now-sub {
|
|
831
|
-
font-size: 13px;
|
|
832
|
-
}
|
|
833
|
-
.ag--mobile .ag-q-now-time {
|
|
834
|
-
font-size: 12px;
|
|
835
|
-
}
|
|
836
|
-
.ag--mobile .ag-q-free-label {
|
|
837
|
-
font-size: 13px;
|
|
838
|
-
}
|
|
839
|
-
.ag--mobile .ag-q-done-title {
|
|
840
|
-
font-size: 13px;
|
|
841
|
-
}
|
|
842
|
-
.ag--mobile .ag-q-done-check {
|
|
843
|
-
font-size: 12px;
|
|
844
|
-
}
|
|
845
|
-
.ag--mobile .ag-card-eta {
|
|
846
|
-
font-size: 12px;
|
|
847
|
-
}
|
|
848
|
-
.ag--mobile .ag-card-sub {
|
|
849
|
-
font-size: 12px;
|
|
850
|
-
}
|
|
851
|
-
.ag--mobile .ag-card-loc {
|
|
852
|
-
font-size: 12px;
|
|
853
|
-
}
|
|
854
|
-
.ag--mobile .ag-card-tag {
|
|
855
|
-
font-size: 11px;
|
|
856
|
-
}
|
|
857
|
-
.ag--mobile .ag-log-time,
|
|
858
|
-
.ag--mobile .ag-log-dur {
|
|
859
|
-
font-size: 12px;
|
|
860
|
-
}
|
|
861
|
-
.ag--mobile .ag-log-title {
|
|
862
|
-
font-size: 15px;
|
|
770
|
+
.ag--mobile .ag-q-done-item {
|
|
771
|
+
padding: 8px 0;
|
|
863
772
|
}
|
|
773
|
+
/* Section labels set like the planner's weekday: 12/500, tracked, ink-2. */
|
|
864
774
|
.ag-q-label {
|
|
865
|
-
font
|
|
866
|
-
|
|
867
|
-
letter-spacing: 0.14em;
|
|
775
|
+
font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
776
|
+
letter-spacing: 0.08em;
|
|
868
777
|
text-transform: uppercase;
|
|
869
|
-
color: var(--dt-text-
|
|
778
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
870
779
|
margin-bottom: 8px;
|
|
871
780
|
padding: 0 12px;
|
|
872
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
873
781
|
}
|
|
874
782
|
.ag-q-empty {
|
|
875
783
|
display: flex;
|
|
876
784
|
align-items: center;
|
|
877
785
|
justify-content: center;
|
|
878
786
|
flex: 1;
|
|
879
|
-
font-size:
|
|
880
|
-
|
|
881
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
787
|
+
font-size: 14px;
|
|
788
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
882
789
|
}
|
|
883
790
|
|
|
884
791
|
/* ── NOW column (includes Done above) ── */
|
|
885
792
|
.ag-q-status {
|
|
886
793
|
padding: 0 10px 0 14px;
|
|
887
|
-
border-right: 1px solid var(--dt-border, rgba(
|
|
794
|
+
border-right: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
888
795
|
display: flex;
|
|
889
796
|
flex-direction: column;
|
|
890
797
|
overflow-y: auto;
|
|
@@ -902,47 +809,49 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
902
809
|
background: none;
|
|
903
810
|
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
904
811
|
font-variant-numeric: tabular-nums;
|
|
905
|
-
font-size:
|
|
906
|
-
color: var(--dt-text-
|
|
812
|
+
font-size: 12.5px;
|
|
813
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
907
814
|
cursor: pointer;
|
|
908
815
|
}
|
|
909
816
|
.ag-q-done-toggle:hover,
|
|
910
817
|
.ag-q-done-toggle:active {
|
|
911
|
-
color: var(--dt-text);
|
|
912
|
-
border-color: var(--dt-
|
|
818
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
819
|
+
border-color: var(--dt-border-day, rgba(15, 15, 15, 0.6));
|
|
913
820
|
}
|
|
914
821
|
.ag-q-done-toggle:focus-visible {
|
|
915
822
|
outline: none;
|
|
916
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
823
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
917
824
|
}
|
|
918
825
|
.ag-q-now-sub {
|
|
919
|
-
font
|
|
920
|
-
color: var(--dt-text-2);
|
|
921
|
-
margin-
|
|
826
|
+
font: 400 12.5px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
827
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
828
|
+
margin-bottom: 4px;
|
|
922
829
|
}
|
|
923
830
|
.ag-q-done-section {
|
|
924
831
|
margin-top: 12px;
|
|
925
832
|
padding-top: 10px;
|
|
926
|
-
border-top: 1px solid var(--dt-border, rgba(
|
|
833
|
+
border-top: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
927
834
|
}
|
|
928
835
|
.ag-q-clock {
|
|
929
|
-
font
|
|
930
|
-
|
|
931
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
836
|
+
font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
837
|
+
letter-spacing: 0;
|
|
932
838
|
font-variant-numeric: tabular-nums;
|
|
933
|
-
color: var(--dt-accent, #
|
|
839
|
+
color: var(--dt-accent, #1d4fd7);
|
|
934
840
|
margin-left: 4px;
|
|
935
841
|
}
|
|
842
|
+
/* The one happening now is the most prominent thing on the day: the
|
|
843
|
+
largest title in the view and the 12% accent wash the system reserves
|
|
844
|
+
for the current event. */
|
|
936
845
|
.ag-q-now {
|
|
937
846
|
position: relative;
|
|
938
847
|
display: block;
|
|
939
848
|
width: 100%;
|
|
940
|
-
padding:
|
|
849
|
+
padding: 12px 12px 12px 15px;
|
|
941
850
|
margin-bottom: 8px;
|
|
942
851
|
border-radius: 0;
|
|
943
|
-
background: transparent;
|
|
852
|
+
background: var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent));
|
|
944
853
|
border: none;
|
|
945
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
854
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
946
855
|
cursor: pointer;
|
|
947
856
|
transition: background 150ms, box-shadow 150ms;
|
|
948
857
|
}
|
|
@@ -957,21 +866,23 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
957
866
|
}
|
|
958
867
|
.ag-q-now:hover,
|
|
959
868
|
.ag-q-now:active {
|
|
960
|
-
background:
|
|
869
|
+
background:
|
|
870
|
+
linear-gradient(var(--dt-hover, rgba(15, 15, 15, 0.04)), var(--dt-hover, rgba(15, 15, 15, 0.04))),
|
|
871
|
+
var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent));
|
|
961
872
|
}
|
|
962
873
|
.ag-q-now:focus-visible {
|
|
963
874
|
outline: none;
|
|
964
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
875
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
965
876
|
}
|
|
966
877
|
.ag-q-now--selected {
|
|
967
878
|
box-shadow: inset 0 0 0 1px var(--ev-color, var(--dt-accent));
|
|
968
879
|
}
|
|
969
880
|
.ag-q-now-dot {
|
|
970
|
-
width:
|
|
971
|
-
height:
|
|
881
|
+
width: 8px;
|
|
882
|
+
height: 8px;
|
|
972
883
|
border-radius: 50%;
|
|
973
|
-
background: var(--ev-color, var(--dt-accent, #
|
|
974
|
-
margin-bottom:
|
|
884
|
+
background: var(--ev-color, var(--dt-accent, #1d4fd7));
|
|
885
|
+
margin-bottom: 8px;
|
|
975
886
|
animation: ag-pulse 2.5s ease-in-out infinite;
|
|
976
887
|
}
|
|
977
888
|
@keyframes ag-pulse {
|
|
@@ -987,35 +898,32 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
987
898
|
}
|
|
988
899
|
}
|
|
989
900
|
.ag-q-now-title {
|
|
990
|
-
font
|
|
991
|
-
|
|
992
|
-
line-height: 1.25;
|
|
993
|
-
color: var(--dt-text, rgba(0, 0, 0, 0.87));
|
|
901
|
+
font: 500 20px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
902
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
994
903
|
display: -webkit-box;
|
|
995
904
|
-webkit-box-orient: vertical;
|
|
996
905
|
-webkit-line-clamp: 2;
|
|
997
906
|
line-clamp: 2;
|
|
998
907
|
overflow: hidden;
|
|
999
908
|
word-break: break-word;
|
|
1000
|
-
margin-bottom:
|
|
909
|
+
margin-bottom: 4px;
|
|
1001
910
|
}
|
|
1002
911
|
.ag-q-now-time {
|
|
1003
|
-
font
|
|
1004
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
912
|
+
font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
|
|
1005
913
|
font-variant-numeric: tabular-nums;
|
|
1006
|
-
color: var(--dt-text
|
|
1007
|
-
margin-bottom:
|
|
914
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
915
|
+
margin-bottom: 10px;
|
|
1008
916
|
}
|
|
1009
917
|
.ag-q-now-track {
|
|
1010
918
|
height: 2px;
|
|
1011
|
-
background: var(--dt-border, rgba(
|
|
919
|
+
background: var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
1012
920
|
border-radius: 0;
|
|
1013
921
|
overflow: hidden;
|
|
1014
922
|
}
|
|
1015
923
|
.ag-q-now-fill {
|
|
1016
924
|
height: 100%;
|
|
1017
925
|
width: 100%;
|
|
1018
|
-
background: var(--ev-color, var(--dt-accent, #
|
|
926
|
+
background: var(--ev-color, var(--dt-accent, #1d4fd7));
|
|
1019
927
|
border-radius: 0;
|
|
1020
928
|
transform-origin: left;
|
|
1021
929
|
transition: transform 1s linear;
|
|
@@ -1025,9 +933,8 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1025
933
|
margin-right: 10px;
|
|
1026
934
|
}
|
|
1027
935
|
.ag-q-free-label {
|
|
1028
|
-
font
|
|
1029
|
-
|
|
1030
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
936
|
+
font: 400 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
937
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1031
938
|
margin-bottom: 2px;
|
|
1032
939
|
}
|
|
1033
940
|
|
|
@@ -1047,36 +954,34 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1047
954
|
|
|
1048
955
|
.ag-q-done-item {
|
|
1049
956
|
display: flex;
|
|
1050
|
-
align-items:
|
|
1051
|
-
gap:
|
|
1052
|
-
padding:
|
|
957
|
+
align-items: baseline;
|
|
958
|
+
gap: 8px;
|
|
959
|
+
padding: 4px 0;
|
|
1053
960
|
width: 100%;
|
|
1054
961
|
cursor: pointer;
|
|
1055
962
|
}
|
|
1056
963
|
.ag-q-done-item:hover .ag-q-done-title,
|
|
1057
964
|
.ag-q-done-item:active .ag-q-done-title,
|
|
1058
965
|
.ag-q-done-item--selected .ag-q-done-title {
|
|
1059
|
-
color: var(--dt-text, rgba(
|
|
966
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1060
967
|
}
|
|
1061
968
|
.ag-q-done-item:focus-visible {
|
|
1062
969
|
outline: none;
|
|
1063
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
970
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
1064
971
|
border-radius: 0;
|
|
1065
972
|
}
|
|
1066
973
|
.ag-q-done-check {
|
|
1067
|
-
font-size:
|
|
1068
|
-
color: var(--dt-
|
|
974
|
+
font-size: 12.5px;
|
|
975
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1069
976
|
flex-shrink: 0;
|
|
1070
977
|
}
|
|
978
|
+
/* Finished: quieter ink, no strike (strikethrough means cancelled). */
|
|
1071
979
|
.ag-q-done-title {
|
|
1072
|
-
font
|
|
1073
|
-
|
|
1074
|
-
color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
|
|
980
|
+
font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
981
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1075
982
|
white-space: nowrap;
|
|
1076
983
|
overflow: hidden;
|
|
1077
984
|
text-overflow: ellipsis;
|
|
1078
|
-
text-decoration: line-through;
|
|
1079
|
-
text-decoration-color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
1080
985
|
transition: color 150ms;
|
|
1081
986
|
}
|
|
1082
987
|
|
|
@@ -1093,11 +998,11 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1093
998
|
}
|
|
1094
999
|
.ag-log-row {
|
|
1095
1000
|
display: flex;
|
|
1096
|
-
align-items:
|
|
1001
|
+
align-items: baseline;
|
|
1097
1002
|
gap: 10px;
|
|
1098
1003
|
padding: 8px 0;
|
|
1099
1004
|
width: 100%;
|
|
1100
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
1005
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
|
|
1101
1006
|
cursor: pointer;
|
|
1102
1007
|
}
|
|
1103
1008
|
.ag-log-row:last-child {
|
|
@@ -1106,15 +1011,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1106
1011
|
.ag-log-row:hover .ag-log-title,
|
|
1107
1012
|
.ag-log-row:active .ag-log-title,
|
|
1108
1013
|
.ag-log-row--selected .ag-log-title {
|
|
1109
|
-
color: var(--dt-text, rgba(
|
|
1014
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1110
1015
|
}
|
|
1111
1016
|
.ag-log-row:hover,
|
|
1112
1017
|
.ag-log-row:active {
|
|
1113
|
-
background: var(--dt-hover, rgba(
|
|
1018
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
1114
1019
|
}
|
|
1115
1020
|
.ag-log-row:focus-visible {
|
|
1116
1021
|
outline: none;
|
|
1117
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
1022
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
1118
1023
|
border-radius: 0;
|
|
1119
1024
|
}
|
|
1120
1025
|
.ag-log-row--selected {
|
|
@@ -1122,16 +1027,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1122
1027
|
border-radius: 0;
|
|
1123
1028
|
}
|
|
1124
1029
|
.ag-log-check {
|
|
1125
|
-
font-size:
|
|
1126
|
-
color: var(--dt-
|
|
1030
|
+
font-size: 12.5px;
|
|
1031
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1127
1032
|
flex-shrink: 0;
|
|
1128
1033
|
}
|
|
1129
1034
|
.ag-log-time {
|
|
1130
|
-
font
|
|
1131
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
1035
|
+
font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
1132
1036
|
font-variant-numeric: tabular-nums;
|
|
1133
|
-
color: var(--dt-text-
|
|
1134
|
-
width:
|
|
1037
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1038
|
+
min-width: 4.6em;
|
|
1135
1039
|
flex-shrink: 0;
|
|
1136
1040
|
}
|
|
1137
1041
|
/* The colour dot of a past row becomes its 3px start bar (dimmed: it is over). */
|
|
@@ -1142,25 +1046,26 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1142
1046
|
flex-shrink: 0;
|
|
1143
1047
|
opacity: 0.45;
|
|
1144
1048
|
}
|
|
1049
|
+
/* A past day is over, not struck out: quieter ink, sized like the planner.
|
|
1050
|
+
Strikethrough is kept for cancelled events only. */
|
|
1145
1051
|
.ag-log-title {
|
|
1146
|
-
font
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
flex: 1;
|
|
1052
|
+
font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
1053
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1054
|
+
flex: 0 1 auto;
|
|
1055
|
+
min-width: 0;
|
|
1151
1056
|
white-space: nowrap;
|
|
1152
1057
|
overflow: hidden;
|
|
1153
1058
|
text-overflow: ellipsis;
|
|
1154
|
-
text-decoration: line-through;
|
|
1155
|
-
text-decoration-color: var(--dt-border, rgba(0, 0, 0, 0.08));
|
|
1156
1059
|
transition: color 150ms;
|
|
1157
1060
|
text-align: left;
|
|
1158
1061
|
}
|
|
1062
|
+
.ag-log-row--cancelled .ag-log-title {
|
|
1063
|
+
text-decoration: line-through;
|
|
1064
|
+
}
|
|
1159
1065
|
.ag-log-dur {
|
|
1160
|
-
font
|
|
1161
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
1066
|
+
font: 400 12.5px/1.25 var(--dt-sans, system-ui, sans-serif);
|
|
1162
1067
|
font-variant-numeric: tabular-nums;
|
|
1163
|
-
color: var(--dt-text-
|
|
1068
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1164
1069
|
flex-shrink: 0;
|
|
1165
1070
|
}
|
|
1166
1071
|
|
|
@@ -1177,9 +1082,9 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1177
1082
|
position: relative;
|
|
1178
1083
|
display: flex;
|
|
1179
1084
|
align-items: baseline;
|
|
1180
|
-
gap:
|
|
1181
|
-
padding:
|
|
1182
|
-
border-bottom: 1px solid var(--dt-border, rgba(
|
|
1085
|
+
gap: 10px;
|
|
1086
|
+
padding: 5px 0 5px 11px;
|
|
1087
|
+
border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
|
|
1183
1088
|
cursor: pointer;
|
|
1184
1089
|
min-width: 0;
|
|
1185
1090
|
width: 100%;
|
|
@@ -1200,32 +1105,33 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1200
1105
|
.ag-compact-row:active .ag-compact-row-title { color: var(--dt-text); }
|
|
1201
1106
|
.ag-compact-row:hover,
|
|
1202
1107
|
.ag-compact-row:active {
|
|
1203
|
-
background: var(--dt-hover, rgba(
|
|
1108
|
+
background: var(--dt-hover, rgba(15, 15, 15, 0.04));
|
|
1204
1109
|
}
|
|
1205
1110
|
.ag-compact-row:focus-visible {
|
|
1206
1111
|
outline: none;
|
|
1207
|
-
box-shadow: 0 0 0 2px var(--dt-accent, #
|
|
1112
|
+
box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
|
|
1208
1113
|
}
|
|
1209
1114
|
.ag-compact-row-time {
|
|
1210
|
-
font
|
|
1211
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
1115
|
+
font: 400 14px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
1212
1116
|
font-variant-numeric: tabular-nums;
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
min-width: 64px;
|
|
1117
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1118
|
+
min-width: 4.6em;
|
|
1216
1119
|
flex-shrink: 0;
|
|
1217
|
-
|
|
1120
|
+
white-space: nowrap;
|
|
1218
1121
|
}
|
|
1219
|
-
/* Title + subtitle + tags cluster
|
|
1220
|
-
|
|
1122
|
+
/* Title + subtitle + tags cluster, sized to its content so the meta and
|
|
1123
|
+
duration sit beside the title instead of across a wide row. One line
|
|
1124
|
+
while it fits; on mobile the metadata wraps to a second line under the
|
|
1125
|
+
title instead of crushing it. */
|
|
1221
1126
|
.ag-compact-row-main {
|
|
1222
1127
|
display: flex;
|
|
1223
1128
|
align-items: baseline;
|
|
1224
|
-
gap:
|
|
1225
|
-
flex: 1;
|
|
1129
|
+
gap: 10px;
|
|
1130
|
+
flex: 0 1 auto;
|
|
1226
1131
|
min-width: 0;
|
|
1227
1132
|
}
|
|
1228
1133
|
.ag--mobile .ag-compact-row-main {
|
|
1134
|
+
flex: 1;
|
|
1229
1135
|
flex-wrap: wrap;
|
|
1230
1136
|
row-gap: 2px;
|
|
1231
1137
|
}
|
|
@@ -1240,49 +1146,37 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1240
1146
|
max-width: 100%;
|
|
1241
1147
|
}
|
|
1242
1148
|
.ag-compact-row-title {
|
|
1243
|
-
font
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
flex: 1;
|
|
1149
|
+
font: 500 15px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
1150
|
+
color: var(--dt-text, rgba(15, 15, 15, 0.87));
|
|
1151
|
+
flex: 0 1 auto;
|
|
1247
1152
|
/* The title is the row's identity — never let subtitle/tags/duration
|
|
1248
|
-
squeeze it out on narrow screens (
|
|
1249
|
-
min-width:
|
|
1153
|
+
squeeze it out on narrow screens (min-width: 0 resolves to 0px). */
|
|
1154
|
+
min-width: 6em;
|
|
1250
1155
|
white-space: nowrap;
|
|
1251
1156
|
overflow: hidden;
|
|
1252
1157
|
text-overflow: ellipsis;
|
|
1253
1158
|
transition: color 150ms;
|
|
1254
|
-
line-height: 1.4;
|
|
1255
1159
|
text-align: left;
|
|
1256
1160
|
}
|
|
1161
|
+
.ag-compact-row-dur,
|
|
1162
|
+
.ag-compact-row-sub,
|
|
1163
|
+
.ag-compact-row-tag {
|
|
1164
|
+
font: 400 12.5px/1.3 var(--dt-sans, system-ui, sans-serif);
|
|
1165
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
|
|
1166
|
+
white-space: nowrap;
|
|
1167
|
+
}
|
|
1257
1168
|
.ag-compact-row-dur {
|
|
1258
|
-
font-size: 10px;
|
|
1259
|
-
font-family: var(--dt-sans, system-ui, sans-serif);
|
|
1260
1169
|
font-variant-numeric: tabular-nums;
|
|
1261
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
1262
1170
|
flex-shrink: 0;
|
|
1263
|
-
line-height: 1.4;
|
|
1264
1171
|
}
|
|
1265
1172
|
.ag-compact-row-sub {
|
|
1266
|
-
font-size: 10px;
|
|
1267
|
-
color: var(--dt-text-3, rgba(0, 0, 0, 0.38));
|
|
1268
1173
|
flex-shrink: 3;
|
|
1269
1174
|
min-width: 0;
|
|
1270
1175
|
max-width: 45%;
|
|
1271
|
-
white-space: nowrap;
|
|
1272
1176
|
overflow: hidden;
|
|
1273
1177
|
text-overflow: ellipsis;
|
|
1274
|
-
line-height: 1.4;
|
|
1275
1178
|
}
|
|
1276
1179
|
.ag-compact-row-tag {
|
|
1277
|
-
font: 500 10.5px / 1 var(--dt-sans, system-ui, sans-serif);
|
|
1278
|
-
text-transform: uppercase;
|
|
1279
|
-
letter-spacing: 0.04em;
|
|
1280
|
-
color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
|
|
1281
|
-
background: transparent;
|
|
1282
|
-
border: 1px solid var(--dt-border-day, rgba(0, 0, 0, 0.6));
|
|
1283
|
-
padding: 1px 4px;
|
|
1284
|
-
border-radius: 0;
|
|
1285
|
-
white-space: nowrap;
|
|
1286
1180
|
flex-shrink: 1;
|
|
1287
1181
|
min-width: 2.5em;
|
|
1288
1182
|
overflow: hidden;
|
|
@@ -1290,26 +1184,16 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
|
|
|
1290
1184
|
}
|
|
1291
1185
|
.ag-compact-row--cancelled .ag-compact-row-title {
|
|
1292
1186
|
text-decoration: line-through;
|
|
1293
|
-
color: var(--dt-text-2, rgba(
|
|
1187
|
+
color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
|
|
1294
1188
|
}
|
|
1295
1189
|
.ag-compact-row--cancelled::before { opacity: 0.45; }
|
|
1296
|
-
.ag-compact-row--tentative .ag-compact-row-title { color: var(--dt-text-2, rgba(
|
|
1190
|
+
.ag-compact-row--tentative .ag-compact-row-title { color: var(--dt-text-2, rgba(15, 15, 15, 0.54)); }
|
|
1297
1191
|
.ag-compact-row--tentative::before {
|
|
1298
1192
|
background: repeating-linear-gradient(180deg, var(--ev-color) 0 4px, transparent 4px 7px);
|
|
1299
1193
|
}
|
|
1300
1194
|
/* Mobile: larger touch targets for compact rows */
|
|
1301
|
-
.ag--mobile .ag-compact-row { padding: 8px 0; }
|
|
1302
|
-
.ag--mobile .ag-compact-row-title { font-size: 15px; }
|
|
1303
|
-
.ag--mobile .ag-compact-row-time { font-size: 12px; }
|
|
1304
|
-
.ag--mobile .ag-compact-row-dur { font-size: 12px; }
|
|
1305
|
-
.ag--mobile .ag-compact-row-sub { font-size: 12px; }
|
|
1306
|
-
.ag--mobile .ag-compact-row-tag { font-size: 11px; }
|
|
1195
|
+
.ag--mobile .ag-compact-row { padding: 8px 0 8px 11px; }
|
|
1307
1196
|
.ag--mobile .ag-day-head { padding: 0 16px 8px; }
|
|
1308
|
-
.ag--mobile .ag-day-head-name { font-size: 15px; }
|
|
1309
|
-
.ag--mobile .ag-day-head-date { font-size: 12px; }
|
|
1310
|
-
.ag--mobile .ag-day-head-badge { font-size: 11px; }
|
|
1311
|
-
.ag--mobile .ag-allday-title { font-size: 0.85rem; }
|
|
1312
|
-
.ag--mobile .ag-allday-label { font-size: 11px; }
|
|
1313
1197
|
|
|
1314
1198
|
/* ═══ Future Day: "The Plan" ═══ */
|
|
1315
1199
|
.ag-plan {
|