@nomideusz/svelte-calendar 1.3.0 → 1.4.1

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.
@@ -12,8 +12,8 @@
12
12
  * Clean numbered schedule list.
13
13
  */
14
14
  import { createClock } from "../../core/clock.svelte.js";
15
- import { sod, addDaysMs, dayNum, isAllDay } from "../../core/time.js";
16
- import { weekdayLong, monthLong } from "../../core/locale.js";
15
+ import { sod, addDaysMs, isAllDay } from "../../core/time.js";
16
+ import { weekdayLong, monthLong, fmtDayNum } from "../../core/locale.js";
17
17
  import { useCalendarContext } from "../shared/context.svelte.js";
18
18
  import EventContent from "../shared/EventContent.svelte";
19
19
  import { fmtTime, duration, timeUntilMs, progress, groupIntoSlots } from "../shared/format.js";
@@ -136,7 +136,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
136
136
  <!-- ─── In-view date header (only when the chrome doesn't label the day) ─── -->
137
137
  {#if !hideDayHead}
138
138
  <div class="ag-day-head" class:ag-day-head--today={!equalDays && isToday}>
139
- <span class="ag-day-head-num">{dayNum(dayMs)}</span>
139
+ <span class="ag-day-head-num">{fmtDayNum(dayMs, locale)}</span>
140
140
  {#if !equalDays && isToday}
141
141
  <span class="ag-day-head-badge">{L.today}</span>
142
142
  {:else if !equalDays && isTomorrow}
@@ -184,7 +184,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
184
184
  class:ag-compact-row--selected={selectedEventId === ev.id}
185
185
  class:ag-compact-row--cancelled={ev.status === 'cancelled'}
186
186
  class:ag-compact-row--tentative={ev.status === 'tentative'}
187
- style:--ev-color={ev.color || 'var(--dt-accent)'}
187
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
188
188
  aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
189
189
  onclick={() => handleClick(ev)}
190
190
  onpointerenter={() => oneventhover?.(ev)}
@@ -221,7 +221,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
221
221
  type="button"
222
222
  class="ag-q-now"
223
223
  class:ag-q-now--selected={selectedEventId === ev.id}
224
- style:--ev-color={ev.color || 'var(--dt-accent)'}
224
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
225
225
  aria-label="{ev.title}, {L.happeningNow}, {L.percentComplete(Math.round(prog(ev) * 100))}"
226
226
  onclick={() => handleClick(ev)}
227
227
  onpointerenter={() => oneventhover?.(ev)}
@@ -252,7 +252,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
252
252
  aria-label="{ev.title}, {L.completed}, {fmt(ev.start)}"
253
253
  onclick={() => handleClick(ev)}
254
254
  >
255
- <span class="ag-q-done-check">✓</span>
255
+ <span class="ag-q-done-check" aria-hidden="true">✓</span>
256
256
  <span class="ag-q-done-title">{ev.title}</span>
257
257
  </button>
258
258
  {/each}
@@ -279,7 +279,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
279
279
  type="button"
280
280
  class="ag-compact-row ag-compact-row--queue"
281
281
  class:ag-compact-row--selected={selectedEventId === ev.id}
282
- style:--ev-color={ev.color || 'var(--dt-accent)'}
282
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
283
283
  aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
284
284
  onclick={() => handleClick(ev)}
285
285
  onpointerenter={() => oneventhover?.(ev)}
@@ -300,7 +300,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
300
300
  class="ag-card ag-card--q"
301
301
  class:ag-card--hero={i === 0}
302
302
  class:ag-card--selected={selectedEventId === ev.id}
303
- style:--ev-color={ev.color || 'var(--dt-accent)'}
303
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
304
304
  aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)}, {duration(ev)}"
305
305
  onclick={() => handleClick(ev)}
306
306
  onpointerenter={() => oneventhover?.(ev)}
@@ -348,14 +348,14 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
348
348
  class="ag-log-row"
349
349
  class:ag-log-row--selected={selectedEventId === ev.id}
350
350
  class:ag-log-row--cancelled={ev.status === 'cancelled'}
351
- style:--ev-color={ev.color || 'var(--dt-accent)'}
351
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
352
352
  aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)} – {fmt(ev.end)}"
353
353
  onclick={() => handleClick(ev)}
354
354
  onpointerenter={() => oneventhover?.(ev)}
355
355
  >
356
- <span class="ag-log-check">✓</span>
356
+ <span class="ag-log-check" aria-hidden="true">✓</span>
357
357
  <span class="ag-log-time">{fmt(ev.start)}</span>
358
- <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>
359
359
  <span class="ag-log-title">{ev.title}</span>
360
360
  <span class="ag-log-dur">{duration(ev)}</span>
361
361
  </button>
@@ -381,7 +381,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
381
381
  class:ag-card--tentative={ev.status === 'tentative'}
382
382
  class:ag-card--full={ev.status === 'full'}
383
383
  class:ag-card--limited={ev.status === 'limited'}
384
- style:--ev-color={ev.color || 'var(--dt-accent)'}
384
+ style:--ev-color={ev.color || 'var(--dt-event, var(--dt-accent))'}
385
385
  aria-label="{ev.title}{statusText(ev)}, {fmt(ev.start)} – {fmt(ev.end)}, {duration(ev)}"
386
386
  onclick={() => handleClick(ev)}
387
387
  onpointerenter={() => oneventhover?.(ev)}
@@ -431,7 +431,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
431
431
  width: 100%;
432
432
  min-width: 0;
433
433
  box-sizing: border-box;
434
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
434
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
435
435
  font-family: var(--dt-sans, system-ui, sans-serif);
436
436
  }
437
437
 
@@ -463,8 +463,8 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
463
463
  135deg,
464
464
  transparent,
465
465
  transparent 6px,
466
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 6px,
467
- color-mix(in srgb, var(--dt-text, rgba(0, 0, 0, 0.87)) 4%, transparent) 12px
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
468
468
  );
469
469
  }
470
470
 
@@ -498,7 +498,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
498
498
  font-stretch: 90%;
499
499
  letter-spacing: -0.02em;
500
500
  font-variant-numeric: tabular-nums;
501
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
501
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
502
502
  margin-inline-end: 4px;
503
503
  }
504
504
  .ag-day-head-badge,
@@ -506,19 +506,19 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
506
506
  font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
507
507
  letter-spacing: 0.08em;
508
508
  text-transform: uppercase;
509
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
509
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
510
510
  }
511
511
  .ag-day-head--today .ag-day-head-num,
512
512
  .ag-day-head--today .ag-day-head-name,
513
513
  .ag-day-head-badge {
514
- color: var(--dt-accent, #2563eb);
514
+ color: var(--dt-accent, #1d4fd7);
515
515
  }
516
516
  .ag-day-head .ag-day-head-badge--muted {
517
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
517
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
518
518
  }
519
519
  .ag-day-head-date {
520
520
  font: 400 12.5px/1 var(--dt-sans, system-ui, sans-serif);
521
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
521
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
522
522
  }
523
523
  .ag--auto .ag-body { overflow-y: visible; min-height: auto; }
524
524
  .ag-body::-webkit-scrollbar {
@@ -535,13 +535,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
535
535
  align-items: center;
536
536
  gap: 8px;
537
537
  padding: 6px 16px;
538
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
538
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
539
539
  }
540
540
  .ag-allday-label {
541
541
  font: 500 12px/1 var(--dt-sans, system-ui, sans-serif);
542
542
  text-transform: uppercase;
543
543
  letter-spacing: 0.08em;
544
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
544
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
545
545
  white-space: nowrap;
546
546
  flex-shrink: 0;
547
547
  }
@@ -562,13 +562,22 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
562
562
  color: var(--dt-btn-text, #fff);
563
563
  cursor: pointer;
564
564
  }
565
+ @media (pointer: coarse) {
566
+ .ag-allday-chip {
567
+ min-height: 44px;
568
+ }
569
+ .ag-q-done-item {
570
+ min-height: 44px;
571
+ align-items: center;
572
+ }
573
+ }
565
574
  .ag-allday-chip:hover,
566
575
  .ag-allday-chip:active {
567
576
  filter: brightness(1.08);
568
577
  }
569
578
  .ag-allday-chip:focus-visible {
570
579
  outline: none;
571
- box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #2563eb);
580
+ box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #1d4fd7);
572
581
  }
573
582
  .ag-allday-chip--selected {
574
583
  box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff);
@@ -592,7 +601,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
592
601
  border-radius: 0;
593
602
  background: transparent;
594
603
  border: none;
595
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
604
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
596
605
  overflow: hidden;
597
606
  cursor: pointer;
598
607
  transition: background 150ms, box-shadow 150ms;
@@ -608,18 +617,18 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
608
617
  }
609
618
  .ag-card:hover,
610
619
  .ag-card:active {
611
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
620
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
612
621
  }
613
622
  .ag-card:focus-visible {
614
623
  outline: none;
615
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
624
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
616
625
  }
617
626
  .ag-card--selected {
618
627
  box-shadow: inset 0 0 0 1px var(--ev-color);
619
628
  }
620
629
  .ag-card--cancelled .ag-card-title {
621
630
  text-decoration: line-through;
622
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
631
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
623
632
  }
624
633
  .ag-card--cancelled::before,
625
634
  .ag-card--full::before {
@@ -628,7 +637,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
628
637
  .ag-card--tentative .ag-card-title,
629
638
  .ag-card--limited .ag-card-title,
630
639
  .ag-card--full .ag-card-title {
631
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
640
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
632
641
  }
633
642
  .ag-card--tentative::before,
634
643
  .ag-card--limited::before {
@@ -653,14 +662,14 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
653
662
  }
654
663
  .ag-card-title {
655
664
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
656
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
665
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
657
666
  word-break: break-word;
658
667
  min-width: 0;
659
668
  }
660
669
  .ag-card-meta {
661
670
  font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
662
671
  font-variant-numeric: tabular-nums;
663
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
672
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
664
673
  }
665
674
  .ag-card-dur,
666
675
  .ag-card-eta,
@@ -668,7 +677,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
668
677
  .ag-card-loc,
669
678
  .ag-card-tag {
670
679
  font: 400 12.5px/1.2 var(--dt-sans, system-ui, sans-serif);
671
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
680
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
672
681
  }
673
682
  .ag-card-dur {
674
683
  margin-left: 8px;
@@ -698,7 +707,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
698
707
  /* The next one up: its countdown in ink. Size stays on the scale — the
699
708
  happening-now item is the largest thing in the queue. */
700
709
  .ag-card--hero .ag-card-eta {
701
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
710
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
702
711
  }
703
712
 
704
713
  /* ── Plan card variant ── */
@@ -709,7 +718,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
709
718
  .ag-card-order {
710
719
  font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
711
720
  font-variant-numeric: tabular-nums;
712
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
721
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
713
722
  min-width: 18px;
714
723
  flex-shrink: 0;
715
724
  }
@@ -775,7 +784,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
775
784
  font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
776
785
  letter-spacing: 0.08em;
777
786
  text-transform: uppercase;
778
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
787
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
779
788
  margin-bottom: 8px;
780
789
  padding: 0 12px;
781
790
  }
@@ -785,13 +794,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
785
794
  justify-content: center;
786
795
  flex: 1;
787
796
  font-size: 14px;
788
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
797
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
789
798
  }
790
799
 
791
800
  /* ── NOW column (includes Done above) ── */
792
801
  .ag-q-status {
793
802
  padding: 0 10px 0 14px;
794
- border-right: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
803
+ border-right: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
795
804
  display: flex;
796
805
  flex-direction: column;
797
806
  overflow-y: auto;
@@ -810,33 +819,33 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
810
819
  font-family: var(--dt-sans, system-ui, sans-serif);
811
820
  font-variant-numeric: tabular-nums;
812
821
  font-size: 12.5px;
813
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
822
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
814
823
  cursor: pointer;
815
824
  }
816
825
  .ag-q-done-toggle:hover,
817
826
  .ag-q-done-toggle:active {
818
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
819
- border-color: var(--dt-border-day, rgba(0, 0, 0, 0.6));
827
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
828
+ border-color: var(--dt-border-day, rgba(15, 15, 15, 0.6));
820
829
  }
821
830
  .ag-q-done-toggle:focus-visible {
822
831
  outline: none;
823
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
832
+ box-shadow: 0 0 0 2px var(--dt-text, #0f0f0f);
824
833
  }
825
834
  .ag-q-now-sub {
826
835
  font: 400 12.5px/1.2 var(--dt-sans, system-ui, sans-serif);
827
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
836
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
828
837
  margin-bottom: 4px;
829
838
  }
830
839
  .ag-q-done-section {
831
840
  margin-top: 12px;
832
841
  padding-top: 10px;
833
- border-top: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
842
+ border-top: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
834
843
  }
835
844
  .ag-q-clock {
836
845
  font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
837
846
  letter-spacing: 0;
838
847
  font-variant-numeric: tabular-nums;
839
- color: var(--dt-accent, #2563eb);
848
+ color: var(--dt-accent, #1d4fd7);
840
849
  margin-left: 4px;
841
850
  }
842
851
  /* The one happening now is the most prominent thing on the day: the
@@ -849,9 +858,9 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
849
858
  padding: 12px 12px 12px 15px;
850
859
  margin-bottom: 8px;
851
860
  border-radius: 0;
852
- background: var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent));
861
+ background: var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent));
853
862
  border: none;
854
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
863
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
855
864
  cursor: pointer;
856
865
  transition: background 150ms, box-shadow 150ms;
857
866
  }
@@ -867,12 +876,12 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
867
876
  .ag-q-now:hover,
868
877
  .ag-q-now:active {
869
878
  background:
870
- linear-gradient(var(--dt-hover, rgba(0, 0, 0, 0.04)), var(--dt-hover, rgba(0, 0, 0, 0.04))),
871
- var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent));
879
+ linear-gradient(var(--dt-hover, rgba(15, 15, 15, 0.04)), var(--dt-hover, rgba(15, 15, 15, 0.04))),
880
+ var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent));
872
881
  }
873
882
  .ag-q-now:focus-visible {
874
883
  outline: none;
875
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
884
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
876
885
  }
877
886
  .ag-q-now--selected {
878
887
  box-shadow: inset 0 0 0 1px var(--ev-color, var(--dt-accent));
@@ -881,7 +890,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
881
890
  width: 8px;
882
891
  height: 8px;
883
892
  border-radius: 50%;
884
- background: var(--ev-color, var(--dt-accent, #2563eb));
893
+ background: var(--ev-color, var(--dt-accent, #1d4fd7));
885
894
  margin-bottom: 8px;
886
895
  animation: ag-pulse 2.5s ease-in-out infinite;
887
896
  }
@@ -899,7 +908,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
899
908
  }
900
909
  .ag-q-now-title {
901
910
  font: 500 20px/1.2 var(--dt-sans, system-ui, sans-serif);
902
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
911
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
903
912
  display: -webkit-box;
904
913
  -webkit-box-orient: vertical;
905
914
  -webkit-line-clamp: 2;
@@ -911,19 +920,19 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
911
920
  .ag-q-now-time {
912
921
  font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
913
922
  font-variant-numeric: tabular-nums;
914
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
923
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
915
924
  margin-bottom: 10px;
916
925
  }
917
926
  .ag-q-now-track {
918
927
  height: 2px;
919
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
928
+ background: var(--dt-border, rgba(15, 15, 15, 0.08));
920
929
  border-radius: 0;
921
930
  overflow: hidden;
922
931
  }
923
932
  .ag-q-now-fill {
924
933
  height: 100%;
925
934
  width: 100%;
926
- background: var(--ev-color, var(--dt-accent, #2563eb));
935
+ background: var(--ev-color, var(--dt-accent, #1d4fd7));
927
936
  border-radius: 0;
928
937
  transform-origin: left;
929
938
  transition: transform 1s linear;
@@ -934,7 +943,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
934
943
  }
935
944
  .ag-q-free-label {
936
945
  font: 400 15px/1.25 var(--dt-sans, system-ui, sans-serif);
937
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
946
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
938
947
  margin-bottom: 2px;
939
948
  }
940
949
 
@@ -963,22 +972,22 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
963
972
  .ag-q-done-item:hover .ag-q-done-title,
964
973
  .ag-q-done-item:active .ag-q-done-title,
965
974
  .ag-q-done-item--selected .ag-q-done-title {
966
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
975
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
967
976
  }
968
977
  .ag-q-done-item:focus-visible {
969
978
  outline: none;
970
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
979
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
971
980
  border-radius: 0;
972
981
  }
973
982
  .ag-q-done-check {
974
983
  font-size: 12.5px;
975
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
984
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
976
985
  flex-shrink: 0;
977
986
  }
978
987
  /* Finished: quieter ink, no strike (strikethrough means cancelled). */
979
988
  .ag-q-done-title {
980
989
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
981
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
990
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
982
991
  white-space: nowrap;
983
992
  overflow: hidden;
984
993
  text-overflow: ellipsis;
@@ -1002,7 +1011,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1002
1011
  gap: 10px;
1003
1012
  padding: 8px 0;
1004
1013
  width: 100%;
1005
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1014
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
1006
1015
  cursor: pointer;
1007
1016
  }
1008
1017
  .ag-log-row:last-child {
@@ -1011,15 +1020,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1011
1020
  .ag-log-row:hover .ag-log-title,
1012
1021
  .ag-log-row:active .ag-log-title,
1013
1022
  .ag-log-row--selected .ag-log-title {
1014
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1023
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1015
1024
  }
1016
1025
  .ag-log-row:hover,
1017
1026
  .ag-log-row:active {
1018
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
1027
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
1019
1028
  }
1020
1029
  .ag-log-row:focus-visible {
1021
1030
  outline: none;
1022
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
1031
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
1023
1032
  border-radius: 0;
1024
1033
  }
1025
1034
  .ag-log-row--selected {
@@ -1028,13 +1037,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1028
1037
  }
1029
1038
  .ag-log-check {
1030
1039
  font-size: 12.5px;
1031
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
1040
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1032
1041
  flex-shrink: 0;
1033
1042
  }
1034
1043
  .ag-log-time {
1035
1044
  font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
1036
1045
  font-variant-numeric: tabular-nums;
1037
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1046
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1038
1047
  min-width: 4.6em;
1039
1048
  flex-shrink: 0;
1040
1049
  }
@@ -1050,7 +1059,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1050
1059
  Strikethrough is kept for cancelled events only. */
1051
1060
  .ag-log-title {
1052
1061
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
1053
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1062
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1054
1063
  flex: 0 1 auto;
1055
1064
  min-width: 0;
1056
1065
  white-space: nowrap;
@@ -1065,7 +1074,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1065
1074
  .ag-log-dur {
1066
1075
  font: 400 12.5px/1.25 var(--dt-sans, system-ui, sans-serif);
1067
1076
  font-variant-numeric: tabular-nums;
1068
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1077
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1069
1078
  flex-shrink: 0;
1070
1079
  }
1071
1080
 
@@ -1084,7 +1093,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1084
1093
  align-items: baseline;
1085
1094
  gap: 10px;
1086
1095
  padding: 5px 0 5px 11px;
1087
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
1096
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
1088
1097
  cursor: pointer;
1089
1098
  min-width: 0;
1090
1099
  width: 100%;
@@ -1105,16 +1114,16 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1105
1114
  .ag-compact-row:active .ag-compact-row-title { color: var(--dt-text); }
1106
1115
  .ag-compact-row:hover,
1107
1116
  .ag-compact-row:active {
1108
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
1117
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
1109
1118
  }
1110
1119
  .ag-compact-row:focus-visible {
1111
1120
  outline: none;
1112
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
1121
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
1113
1122
  }
1114
1123
  .ag-compact-row-time {
1115
1124
  font: 400 14px/1.3 var(--dt-sans, system-ui, sans-serif);
1116
1125
  font-variant-numeric: tabular-nums;
1117
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1126
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1118
1127
  min-width: 4.6em;
1119
1128
  flex-shrink: 0;
1120
1129
  white-space: nowrap;
@@ -1147,7 +1156,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1147
1156
  }
1148
1157
  .ag-compact-row-title {
1149
1158
  font: 500 15px/1.3 var(--dt-sans, system-ui, sans-serif);
1150
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1159
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1151
1160
  flex: 0 1 auto;
1152
1161
  /* The title is the row's identity — never let subtitle/tags/duration
1153
1162
  squeeze it out on narrow screens (min-width: 0 resolves to 0px). */
@@ -1162,7 +1171,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1162
1171
  .ag-compact-row-sub,
1163
1172
  .ag-compact-row-tag {
1164
1173
  font: 400 12.5px/1.3 var(--dt-sans, system-ui, sans-serif);
1165
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1174
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1166
1175
  white-space: nowrap;
1167
1176
  }
1168
1177
  .ag-compact-row-dur {
@@ -1184,10 +1193,10 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1184
1193
  }
1185
1194
  .ag-compact-row--cancelled .ag-compact-row-title {
1186
1195
  text-decoration: line-through;
1187
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1196
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
1188
1197
  }
1189
1198
  .ag-compact-row--cancelled::before { opacity: 0.45; }
1190
- .ag-compact-row--tentative .ag-compact-row-title { color: var(--dt-text-2, rgba(0, 0, 0, 0.54)); }
1199
+ .ag-compact-row--tentative .ag-compact-row-title { color: var(--dt-text-2, rgba(15, 15, 15, 0.54)); }
1191
1200
  .ag-compact-row--tentative::before {
1192
1201
  background: repeating-linear-gradient(180deg, var(--ev-color) 0 4px, transparent 4px 7px);
1193
1202
  }