@nomideusz/svelte-calendar 1.3.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.
@@ -39,6 +39,21 @@ function luminance([r, g, b]) {
39
39
  };
40
40
  return 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b);
41
41
  }
42
+ const DARK_TEXT = [15, 15, 15]; // #0f0f0f, the ink
43
+ function contrast(a, b) {
44
+ const [hi, lo] = [luminance(a), luminance(b)].sort((x, y) => y - x);
45
+ return (hi + 0.05) / (lo + 0.05);
46
+ }
47
+ /**
48
+ * Text colour for an accent fill (all-day band, now plate): white when it
49
+ * reaches 4.5:1 on the accent, else whichever of white / dark ink contrasts more.
50
+ */
51
+ export function accentTextFor(accent) {
52
+ const white = contrast(accent, [255, 255, 255]);
53
+ if (white >= 4.5)
54
+ return '#ffffff';
55
+ return contrast(accent, DARK_TEXT) > white ? '#0f0f0f' : '#ffffff';
56
+ }
42
57
  function rgbToHsl(r, g, b) {
43
58
  r /= 255;
44
59
  g /= 255;
@@ -497,9 +512,7 @@ export function probeHostTheme(el, options = {}) {
497
512
  ? Math.max(aL, 0.45) // bright enough on dark
498
513
  : Math.min(aL, 0.48); // dark enough on light
499
514
  const accentAdj = hslToRgb(aH, Math.max(aS, 0.5), accentL);
500
- // btn-text: white for dark accents, dark for light accents
501
- const accentLum = luminance(accentAdj);
502
- const btnText = accentLum < 0.4 ? '#ffffff' : '#1a1a2e';
515
+ const btnText = accentTextFor(accentAdj);
503
516
  // ── Scrollbar ──
504
517
  const scrollAlpha = isDark ? 0.12 : 0.10;
505
518
  // ── Success (green, theme-adapted) ──
@@ -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
  }
@@ -568,7 +568,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
568
568
  }
569
569
  .ag-allday-chip:focus-visible {
570
570
  outline: none;
571
- box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #2563eb);
571
+ box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff), 0 0 0 2px var(--dt-accent, #1d4fd7);
572
572
  }
573
573
  .ag-allday-chip--selected {
574
574
  box-shadow: inset 0 0 0 2px var(--dt-btn-text, #fff);
@@ -592,7 +592,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
592
592
  border-radius: 0;
593
593
  background: transparent;
594
594
  border: none;
595
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
595
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
596
596
  overflow: hidden;
597
597
  cursor: pointer;
598
598
  transition: background 150ms, box-shadow 150ms;
@@ -608,18 +608,18 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
608
608
  }
609
609
  .ag-card:hover,
610
610
  .ag-card:active {
611
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
611
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
612
612
  }
613
613
  .ag-card:focus-visible {
614
614
  outline: none;
615
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
615
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
616
616
  }
617
617
  .ag-card--selected {
618
618
  box-shadow: inset 0 0 0 1px var(--ev-color);
619
619
  }
620
620
  .ag-card--cancelled .ag-card-title {
621
621
  text-decoration: line-through;
622
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
622
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
623
623
  }
624
624
  .ag-card--cancelled::before,
625
625
  .ag-card--full::before {
@@ -628,7 +628,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
628
628
  .ag-card--tentative .ag-card-title,
629
629
  .ag-card--limited .ag-card-title,
630
630
  .ag-card--full .ag-card-title {
631
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
631
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
632
632
  }
633
633
  .ag-card--tentative::before,
634
634
  .ag-card--limited::before {
@@ -653,14 +653,14 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
653
653
  }
654
654
  .ag-card-title {
655
655
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
656
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
656
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
657
657
  word-break: break-word;
658
658
  min-width: 0;
659
659
  }
660
660
  .ag-card-meta {
661
661
  font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
662
662
  font-variant-numeric: tabular-nums;
663
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
663
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
664
664
  }
665
665
  .ag-card-dur,
666
666
  .ag-card-eta,
@@ -668,7 +668,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
668
668
  .ag-card-loc,
669
669
  .ag-card-tag {
670
670
  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));
671
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
672
672
  }
673
673
  .ag-card-dur {
674
674
  margin-left: 8px;
@@ -698,7 +698,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
698
698
  /* The next one up: its countdown in ink. Size stays on the scale — the
699
699
  happening-now item is the largest thing in the queue. */
700
700
  .ag-card--hero .ag-card-eta {
701
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
701
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
702
702
  }
703
703
 
704
704
  /* ── Plan card variant ── */
@@ -709,7 +709,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
709
709
  .ag-card-order {
710
710
  font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
711
711
  font-variant-numeric: tabular-nums;
712
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
712
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
713
713
  min-width: 18px;
714
714
  flex-shrink: 0;
715
715
  }
@@ -775,7 +775,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
775
775
  font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
776
776
  letter-spacing: 0.08em;
777
777
  text-transform: uppercase;
778
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
778
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
779
779
  margin-bottom: 8px;
780
780
  padding: 0 12px;
781
781
  }
@@ -785,13 +785,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
785
785
  justify-content: center;
786
786
  flex: 1;
787
787
  font-size: 14px;
788
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
788
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
789
789
  }
790
790
 
791
791
  /* ── NOW column (includes Done above) ── */
792
792
  .ag-q-status {
793
793
  padding: 0 10px 0 14px;
794
- border-right: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
794
+ border-right: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
795
795
  display: flex;
796
796
  flex-direction: column;
797
797
  overflow-y: auto;
@@ -810,33 +810,33 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
810
810
  font-family: var(--dt-sans, system-ui, sans-serif);
811
811
  font-variant-numeric: tabular-nums;
812
812
  font-size: 12.5px;
813
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
813
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
814
814
  cursor: pointer;
815
815
  }
816
816
  .ag-q-done-toggle:hover,
817
817
  .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));
818
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
819
+ border-color: var(--dt-border-day, rgba(15, 15, 15, 0.6));
820
820
  }
821
821
  .ag-q-done-toggle:focus-visible {
822
822
  outline: none;
823
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
823
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
824
824
  }
825
825
  .ag-q-now-sub {
826
826
  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));
827
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
828
828
  margin-bottom: 4px;
829
829
  }
830
830
  .ag-q-done-section {
831
831
  margin-top: 12px;
832
832
  padding-top: 10px;
833
- border-top: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
833
+ border-top: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
834
834
  }
835
835
  .ag-q-clock {
836
836
  font: 500 12px/1.2 var(--dt-sans, system-ui, sans-serif);
837
837
  letter-spacing: 0;
838
838
  font-variant-numeric: tabular-nums;
839
- color: var(--dt-accent, #2563eb);
839
+ color: var(--dt-accent, #1d4fd7);
840
840
  margin-left: 4px;
841
841
  }
842
842
  /* The one happening now is the most prominent thing on the day: the
@@ -849,9 +849,9 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
849
849
  padding: 12px 12px 12px 15px;
850
850
  margin-bottom: 8px;
851
851
  border-radius: 0;
852
- background: var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #2563eb) 12%, transparent));
852
+ background: var(--dt-accent-dim, color-mix(in srgb, var(--dt-accent, #1d4fd7) 12%, transparent));
853
853
  border: none;
854
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
854
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
855
855
  cursor: pointer;
856
856
  transition: background 150ms, box-shadow 150ms;
857
857
  }
@@ -867,12 +867,12 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
867
867
  .ag-q-now:hover,
868
868
  .ag-q-now:active {
869
869
  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));
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));
872
872
  }
873
873
  .ag-q-now:focus-visible {
874
874
  outline: none;
875
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
875
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
876
876
  }
877
877
  .ag-q-now--selected {
878
878
  box-shadow: inset 0 0 0 1px var(--ev-color, var(--dt-accent));
@@ -881,7 +881,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
881
881
  width: 8px;
882
882
  height: 8px;
883
883
  border-radius: 50%;
884
- background: var(--ev-color, var(--dt-accent, #2563eb));
884
+ background: var(--ev-color, var(--dt-accent, #1d4fd7));
885
885
  margin-bottom: 8px;
886
886
  animation: ag-pulse 2.5s ease-in-out infinite;
887
887
  }
@@ -899,7 +899,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
899
899
  }
900
900
  .ag-q-now-title {
901
901
  font: 500 20px/1.2 var(--dt-sans, system-ui, sans-serif);
902
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
902
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
903
903
  display: -webkit-box;
904
904
  -webkit-box-orient: vertical;
905
905
  -webkit-line-clamp: 2;
@@ -911,19 +911,19 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
911
911
  .ag-q-now-time {
912
912
  font: 400 14px/1.2 var(--dt-sans, system-ui, sans-serif);
913
913
  font-variant-numeric: tabular-nums;
914
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
914
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
915
915
  margin-bottom: 10px;
916
916
  }
917
917
  .ag-q-now-track {
918
918
  height: 2px;
919
- background: var(--dt-border, rgba(0, 0, 0, 0.08));
919
+ background: var(--dt-border, rgba(15, 15, 15, 0.08));
920
920
  border-radius: 0;
921
921
  overflow: hidden;
922
922
  }
923
923
  .ag-q-now-fill {
924
924
  height: 100%;
925
925
  width: 100%;
926
- background: var(--ev-color, var(--dt-accent, #2563eb));
926
+ background: var(--ev-color, var(--dt-accent, #1d4fd7));
927
927
  border-radius: 0;
928
928
  transform-origin: left;
929
929
  transition: transform 1s linear;
@@ -934,7 +934,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
934
934
  }
935
935
  .ag-q-free-label {
936
936
  font: 400 15px/1.25 var(--dt-sans, system-ui, sans-serif);
937
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
937
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
938
938
  margin-bottom: 2px;
939
939
  }
940
940
 
@@ -963,22 +963,22 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
963
963
  .ag-q-done-item:hover .ag-q-done-title,
964
964
  .ag-q-done-item:active .ag-q-done-title,
965
965
  .ag-q-done-item--selected .ag-q-done-title {
966
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
966
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
967
967
  }
968
968
  .ag-q-done-item:focus-visible {
969
969
  outline: none;
970
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
970
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
971
971
  border-radius: 0;
972
972
  }
973
973
  .ag-q-done-check {
974
974
  font-size: 12.5px;
975
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
975
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
976
976
  flex-shrink: 0;
977
977
  }
978
978
  /* Finished: quieter ink, no strike (strikethrough means cancelled). */
979
979
  .ag-q-done-title {
980
980
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
981
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
981
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
982
982
  white-space: nowrap;
983
983
  overflow: hidden;
984
984
  text-overflow: ellipsis;
@@ -1002,7 +1002,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1002
1002
  gap: 10px;
1003
1003
  padding: 8px 0;
1004
1004
  width: 100%;
1005
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.08));
1005
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.08));
1006
1006
  cursor: pointer;
1007
1007
  }
1008
1008
  .ag-log-row:last-child {
@@ -1011,15 +1011,15 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1011
1011
  .ag-log-row:hover .ag-log-title,
1012
1012
  .ag-log-row:active .ag-log-title,
1013
1013
  .ag-log-row--selected .ag-log-title {
1014
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1014
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1015
1015
  }
1016
1016
  .ag-log-row:hover,
1017
1017
  .ag-log-row:active {
1018
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
1018
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
1019
1019
  }
1020
1020
  .ag-log-row:focus-visible {
1021
1021
  outline: none;
1022
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
1022
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
1023
1023
  border-radius: 0;
1024
1024
  }
1025
1025
  .ag-log-row--selected {
@@ -1028,13 +1028,13 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1028
1028
  }
1029
1029
  .ag-log-check {
1030
1030
  font-size: 12.5px;
1031
- color: var(--dt-success, rgba(22, 163, 74, 0.7));
1031
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1032
1032
  flex-shrink: 0;
1033
1033
  }
1034
1034
  .ag-log-time {
1035
1035
  font: 400 14px/1.25 var(--dt-sans, system-ui, sans-serif);
1036
1036
  font-variant-numeric: tabular-nums;
1037
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1037
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1038
1038
  min-width: 4.6em;
1039
1039
  flex-shrink: 0;
1040
1040
  }
@@ -1050,7 +1050,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1050
1050
  Strikethrough is kept for cancelled events only. */
1051
1051
  .ag-log-title {
1052
1052
  font: 500 15px/1.25 var(--dt-sans, system-ui, sans-serif);
1053
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1053
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1054
1054
  flex: 0 1 auto;
1055
1055
  min-width: 0;
1056
1056
  white-space: nowrap;
@@ -1065,7 +1065,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1065
1065
  .ag-log-dur {
1066
1066
  font: 400 12.5px/1.25 var(--dt-sans, system-ui, sans-serif);
1067
1067
  font-variant-numeric: tabular-nums;
1068
- color: var(--dt-text-2, rgba(0, 0, 0, 0.66));
1068
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1069
1069
  flex-shrink: 0;
1070
1070
  }
1071
1071
 
@@ -1084,7 +1084,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1084
1084
  align-items: baseline;
1085
1085
  gap: 10px;
1086
1086
  padding: 5px 0 5px 11px;
1087
- border-bottom: 1px solid var(--dt-border, rgba(0, 0, 0, 0.3));
1087
+ border-bottom: 1px solid var(--dt-border, rgba(15, 15, 15, 0.3));
1088
1088
  cursor: pointer;
1089
1089
  min-width: 0;
1090
1090
  width: 100%;
@@ -1105,16 +1105,16 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1105
1105
  .ag-compact-row:active .ag-compact-row-title { color: var(--dt-text); }
1106
1106
  .ag-compact-row:hover,
1107
1107
  .ag-compact-row:active {
1108
- background: var(--dt-hover, rgba(0, 0, 0, 0.04));
1108
+ background: var(--dt-hover, rgba(15, 15, 15, 0.04));
1109
1109
  }
1110
1110
  .ag-compact-row:focus-visible {
1111
1111
  outline: none;
1112
- box-shadow: 0 0 0 2px var(--dt-accent, #2563eb);
1112
+ box-shadow: 0 0 0 2px var(--dt-accent, #1d4fd7);
1113
1113
  }
1114
1114
  .ag-compact-row-time {
1115
1115
  font: 400 14px/1.3 var(--dt-sans, system-ui, sans-serif);
1116
1116
  font-variant-numeric: tabular-nums;
1117
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1117
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1118
1118
  min-width: 4.6em;
1119
1119
  flex-shrink: 0;
1120
1120
  white-space: nowrap;
@@ -1147,7 +1147,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1147
1147
  }
1148
1148
  .ag-compact-row-title {
1149
1149
  font: 500 15px/1.3 var(--dt-sans, system-ui, sans-serif);
1150
- color: var(--dt-text, rgba(0, 0, 0, 0.87));
1150
+ color: var(--dt-text, rgba(15, 15, 15, 0.87));
1151
1151
  flex: 0 1 auto;
1152
1152
  /* The title is the row's identity — never let subtitle/tags/duration
1153
1153
  squeeze it out on narrow screens (min-width: 0 resolves to 0px). */
@@ -1162,7 +1162,7 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1162
1162
  .ag-compact-row-sub,
1163
1163
  .ag-compact-row-tag {
1164
1164
  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));
1165
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.66));
1166
1166
  white-space: nowrap;
1167
1167
  }
1168
1168
  .ag-compact-row-dur {
@@ -1184,10 +1184,10 @@ const hiddenDoneCount = $derived(showAllDone ? 0 : Math.max(0, dayCat.past.lengt
1184
1184
  }
1185
1185
  .ag-compact-row--cancelled .ag-compact-row-title {
1186
1186
  text-decoration: line-through;
1187
- color: var(--dt-text-2, rgba(0, 0, 0, 0.54));
1187
+ color: var(--dt-text-2, rgba(15, 15, 15, 0.54));
1188
1188
  }
1189
1189
  .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)); }
1190
+ .ag-compact-row--tentative .ag-compact-row-title { color: var(--dt-text-2, rgba(15, 15, 15, 0.54)); }
1191
1191
  .ag-compact-row--tentative::before {
1192
1192
  background: repeating-linear-gradient(180deg, var(--ev-color) 0 4px, transparent 4px 7px);
1193
1193
  }