@dstally/vue 1.1.0 → 1.2.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 CHANGED
@@ -39,7 +39,16 @@ Importing anything from `@dstally/vue` also loads `@dstally/tokens/styles.css`;
39
39
  | `TAuthCard` `TCodeInput` | auth layout unit and 6-digit code entry |
40
40
  | `TEmptyState` `TAvatar` | empty lists; initials avatar |
41
41
 
42
- Also exported: `formatDuration(seconds, 'clock' | 'short' | 'compact')`, `PROJECT_COLORS`.
42
+ Also exported: `formatDuration(seconds, 'clock' | 'short' | 'compact')`, `PROJECT_COLORS`, `TALLY_ICON_BASE`, `DEFAULT_ICON_BASE`.
43
+
44
+ `TIcon` masks its glyph from `https://unpkg.com/lucide-static@latest/icons/`. Self-host the glyphs and point every icon at them in one line — an iOS WebView under `tauri://localhost` needs this, because it cannot paint a cross-origin mask:
45
+
46
+ ```ts
47
+ import { TALLY_ICON_BASE } from '@dstally/vue'
48
+ app.provide(TALLY_ICON_BASE, '/icons/')
49
+ ```
50
+
51
+ A `base` prop on a single `TIcon` still wins over the provided value.
43
52
 
44
53
  ## Rules
45
54
 
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ComponentOptionsMixin } from 'vue';
2
2
  import { ComponentProvideOptions } from 'vue';
3
3
  import { DefineComponent } from 'vue';
4
+ import { InjectionKey } from 'vue';
4
5
  import { PublicProps } from 'vue';
5
6
 
6
7
  declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
@@ -316,7 +317,7 @@ declare type __VLS_Props_8 = {
316
317
  /** 16 in the app, 20 in the site header, 24 in marketing rows. */
317
318
  size?: number;
318
319
  color?: string;
319
- /** Override the CDN base if you self-host lucide-static. */
320
+ /** Where this one glyph is masked from. Wins over the `TALLY_ICON_BASE` injection key, which every app can set once with `app.provide(TALLY_ICON_BASE, '/icons/')` and which itself falls back to `https://unpkg.com/lucide-static@latest/icons/`. Self-host and provide the key in an iOS WebView, which cannot paint a cross-origin mask. */
320
321
  base?: string;
321
322
  };
322
323
 
@@ -524,6 +525,9 @@ declare type __VLS_WithTemplateSlots_9<T, S> = T & {
524
525
  };
525
526
  };
526
527
 
528
+ /** Where TIcon masks from when nothing overrides it. */
529
+ export declare const DEFAULT_ICON_BASE = "https://unpkg.com/lucide-static@latest/icons/";
530
+
527
531
  export declare type DurationFormat = 'clock' | 'short' | 'compact';
528
532
 
529
533
  /** 8047 → "2:14:07" (clock) · "2:14" (short) · "2h 14m" (compact) */
@@ -543,6 +547,9 @@ export declare interface TabBarItem {
543
547
  icon: string;
544
548
  }
545
549
 
550
+ /** App-wide base URL every TIcon masks from: `app.provide(TALLY_ICON_BASE, '/icons/')`. */
551
+ export declare const TALLY_ICON_BASE: InjectionKey<string>;
552
+
546
553
  export declare const TAuthCard: __VLS_WithTemplateSlots_10<typeof __VLS_component_10, __VLS_TemplateResult_10["slots"]>;
547
554
 
548
555
  export declare const TAvatar: DefineComponent<__VLS_Props_27, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_27> & Readonly<{}>, {
@@ -596,7 +603,6 @@ export declare const TEmptyState: __VLS_WithTemplateSlots_11<typeof __VLS_compon
596
603
 
597
604
  export declare const TIcon: DefineComponent<__VLS_Props_8, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_8> & Readonly<{}>, {
598
605
  size: number;
599
- base: string;
600
606
  color: string;
601
607
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
602
608
 
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @import"https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400;500;700&display=swap";:root{--font-sans:"Instrument Sans","Helvetica Neue",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--font-display:var(--font-sans);--font-ui:var(--font-sans);--font-numeric:var(--font-mono)}:root{--indigo-100:#E4E7FA;--indigo-200:#C3C8F3;--indigo-300:#9AA2EA;--indigo-400:#6C77DE;--indigo-500:#4A57D2;--indigo-600:#3A44AF;--indigo-700:#2C3391;--indigo-800:#1F2470;--indigo-900:#151A54;--indigo-950:#0E1138;--amber-200:#FDE3B4;--amber-300:#FBCC7C;--amber-400:#F8B547;--amber-500:#F5A524;--amber-600:#D98C10;--amber-700:#A96A08;--blue-300:#7FB4EE;--blue-400:#3D8BDB;--blue-500:#1565C0;--blue-600:#0F4E97;--blue-700:#0B3A70;--neutral-0:#FFFFFF;--neutral-25:#FAFBFD;--neutral-50:#F4F6FA;--neutral-100:#E8EBF2;--neutral-200:#D5DAE6;--neutral-300:#B3BAC9;--neutral-400:#8B93A5;--neutral-500:#697084;--neutral-600:#4C5365;--neutral-650:#3C4356;--neutral-700:#2B3143;--neutral-800:#1D2230;--neutral-850:#161A26;--neutral-900:#10131C;--neutral-950:#0A0C13;--chart-1:#0072B2;--chart-2:#E69F00;--chart-3:#009E73;--chart-4:#CC79A7;--chart-5:#56B4E9;--chart-6:#D55E00;--chart-7:#F0E442;--chart-8:#4C5566;--gradient-brand:linear-gradient(160deg,#4A57D2 0%,#2C3391 52%,#151A54 100%);--gradient-brand-lift:linear-gradient(180deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,0) 46%);--gradient-page:radial-gradient(120% 80% at 50% -10%,#1F2470 0%,#10131C 62%);--surface-page:var(--neutral-900);--surface-sunken:var(--neutral-950);--surface-card:var(--neutral-850);--surface-raised:var(--neutral-800);--surface-overlay:rgba(16,19,28,.72);--surface-inset:rgba(255,255,255,.04);--surface-hover:rgba(255,255,255,.06);--surface-active:rgba(255,255,255,.1);--surface-brand:var(--indigo-900);--surface-brand-subtle:rgba(74,87,210,.16);--surface-accent-subtle:rgba(245,165,36,.14);--text-strong:var(--neutral-0);--text-body:#DCE1EC;--text-muted:var(--neutral-300);--text-subtle:var(--neutral-400);--text-inverse:var(--neutral-900);--text-accent:var(--amber-400);--text-link:var(--blue-300);--text-link-hover:var(--amber-400);--text-on-brand:var(--neutral-0);--border-subtle:rgba(255,255,255,.08);--border-default:rgba(255,255,255,.14);--border-strong:rgba(255,255,255,.24);--border-accent:var(--amber-500);--border-focus:var(--amber-400);--action-primary:var(--amber-500);--action-primary-hover:var(--amber-400);--action-primary-active:var(--amber-600);--action-primary-text:#20160A;--action-secondary:var(--blue-500);--action-secondary-hover:var(--blue-400);--action-secondary-active:var(--blue-600);--action-secondary-text:var(--neutral-0);--status-running:var(--amber-500);--status-paused:var(--neutral-400);--status-success:#00B383;--status-warning:var(--amber-500);--status-danger:#E8663A;--status-info:#3D9BE0;--status-success-surface:rgba(0,158,115,.16);--status-warning-surface:rgba(245,165,36,.16);--status-danger-surface:rgba(213,94,0,.18);--status-info-surface:rgba(0,114,178,.18)}[data-theme=light]{--surface-page:var(--neutral-25);--surface-sunken:var(--neutral-50);--surface-card:var(--neutral-0);--surface-raised:var(--neutral-0);--surface-overlay:rgba(16,19,28,.4);--surface-inset:var(--neutral-50);--surface-hover:rgba(21,26,84,.05);--surface-active:rgba(21,26,84,.09);--surface-brand:var(--indigo-500);--surface-brand-subtle:rgba(74,87,210,.08);--surface-accent-subtle:rgba(245,165,36,.16);--text-strong:var(--neutral-900);--text-body:var(--neutral-800);--text-muted:var(--neutral-500);--text-subtle:var(--neutral-400);--text-inverse:var(--neutral-0);--text-accent:var(--amber-700);--text-link:var(--blue-500);--text-link-hover:var(--indigo-700);--text-on-brand:var(--neutral-0);--border-subtle:var(--neutral-100);--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--action-primary:var(--amber-500);--action-primary-hover:var(--amber-400);--action-primary-active:var(--amber-600);--action-primary-text:#20160A;--status-success:#007A5A;--status-warning:var(--amber-700);--status-danger:#C24A12;--status-info:var(--blue-500);--chart-8:#000000}:root{--text-display-1:64px;--leading-display-1:1.02;--tracking-display-1:-.03em;--text-display-2:48px;--leading-display-2:1.06;--tracking-display-2:-.025em;--text-title-1:34px;--leading-title-1:1.14;--tracking-title-1:-.02em;--text-title-2:26px;--leading-title-2:1.2;--tracking-title-2:-.015em;--text-title-3:20px;--leading-title-3:1.3;--tracking-title-3:-.01em;--text-body-lg:18px;--leading-body-lg:1.6;--tracking-body-lg:-.005em;--text-body:16px;--leading-body:1.6;--tracking-body:0em;--text-body-sm:14px;--leading-body-sm:1.55;--tracking-body-sm:0em;--text-caption:12px;--leading-caption:1.4;--tracking-caption:.005em;--text-overline:11px;--leading-overline:1.2;--tracking-overline:.12em;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--text-timer-xl:44px;--text-timer-lg:28px;--text-timer-md:18px;--text-timer-sm:13px;--numeric-features:"tnum" 1,"cv01" 1}:root{--space-0:0px;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-11:64px;--space-12:80px;--space-13:112px;--space-14:160px;--section-y:112px;--section-y-tight:72px;--container-max:1160px;--container-prose:660px;--gutter:24px;--control-h-sm:26px;--control-h-md:32px;--control-h-lg:40px;--control-h-xl:48px;--row-h:38px}:root{--radius-xs:4px;--radius-sm:6px;--radius-md:9px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:22px;--radius-pill:999px;--radius-icon-ratio:22%;--shadow-none:none;--shadow-xs:0 1px 2px rgba(6,8,16,.32);--shadow-sm:0 1px 3px rgba(6,8,16,.36),0 1px 1px rgba(6,8,16,.24);--shadow-md:0 6px 16px -4px rgba(6,8,16,.44),0 2px 4px rgba(6,8,16,.28);--shadow-lg:0 18px 40px -12px rgba(6,8,16,.55),0 4px 10px rgba(6,8,16,.3);--shadow-pill:0 10px 30px -8px rgba(6,8,16,.6),0 0 0 1px rgba(255,255,255,.08) inset;--shadow-focus:0 0 0 3px rgba(245,165,36,.34);--shadow-inset-hairline:inset 0 1px 0 rgba(255,255,255,.06);--glow-amber:0 0 0 1px rgba(245,165,36,.5),0 0 24px -6px rgba(245,165,36,.45);--blur-panel:saturate(140%) blur(20px);--blur-scrim:blur(6px);--scrim-bottom:linear-gradient(180deg,rgba(10,12,19,0) 0%,rgba(10,12,19,.82) 100%)}:root{--duration-instant:80ms;--duration-fast:.14s;--duration-base:.2s;--duration-slow:.32s;--duration-enter:.42s;--ease-standard:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.4,0,1,1);--ease-tick:steps(1,end);--transition-control:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard);--press-scale:.985}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0ms;--duration-base:0ms;--duration-slow:0ms;--duration-enter:0ms;--press-scale:1}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-body);letter-spacing:var(--tracking-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;color:var(--text-strong);font-weight:var(--weight-semibold);text-wrap:balance}h1{font-size:var(--text-display-2);line-height:var(--leading-display-2);letter-spacing:var(--tracking-display-2)}h2{font-size:var(--text-title-1);line-height:var(--leading-title-1);letter-spacing:var(--tracking-title-1)}h3{font-size:var(--text-title-2);line-height:var(--leading-title-2);letter-spacing:var(--tracking-title-2)}h4{font-size:var(--text-title-3);line-height:var(--leading-title-3);letter-spacing:var(--tracking-title-3)}p{margin:0 0 var(--space-5);text-wrap:pretty;max-width:var(--container-prose)}a{color:var(--text-link);text-decoration:none;transition:color var(--duration-fast) var(--ease-standard)}a:hover{color:var(--text-link-hover)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}small{font-size:var(--text-caption);line-height:var(--leading-caption)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}hr{border:0;border-top:1px solid var(--border-subtle);margin:var(--space-8) 0}::selection{background:#f5a52447;color:var(--text-strong)}.tally-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:var(--numeric-features)}.tally-overline{font-size:var(--text-overline);letter-spacing:var(--tracking-overline);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--text-muted)}.tally-container{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter)}
1
+ @import"https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400;500;700&display=swap";:root{--font-sans:"Instrument Sans","Helvetica Neue",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--font-display:var(--font-sans);--font-ui:var(--font-sans);--font-numeric:var(--font-mono)}:root{--indigo-100:#E4E7FA;--indigo-200:#C3C8F3;--indigo-300:#9AA2EA;--indigo-400:#6C77DE;--indigo-500:#4A57D2;--indigo-600:#3A44AF;--indigo-700:#2C3391;--indigo-800:#1F2470;--indigo-900:#151A54;--indigo-950:#0E1138;--amber-200:#FDE3B4;--amber-300:#FBCC7C;--amber-400:#F8B547;--amber-500:#F5A524;--amber-600:#D98C10;--amber-700:#A96A08;--blue-300:#7FB4EE;--blue-400:#3D8BDB;--blue-500:#1565C0;--blue-600:#0F4E97;--blue-700:#0B3A70;--neutral-0:#FFFFFF;--neutral-25:#FAFBFD;--neutral-50:#F4F6FA;--neutral-100:#E8EBF2;--neutral-200:#D5DAE6;--neutral-300:#B3BAC9;--neutral-400:#8B93A5;--neutral-500:#697084;--neutral-600:#4C5365;--neutral-650:#3C4356;--neutral-700:#2B3143;--neutral-800:#1D2230;--neutral-850:#161A26;--neutral-900:#10131C;--neutral-950:#0A0C13;--chart-1:#0072B2;--chart-2:#E69F00;--chart-3:#009E73;--chart-4:#CC79A7;--chart-5:#56B4E9;--chart-6:#D55E00;--chart-7:#F0E442;--chart-8:#4C5566;--gradient-brand:linear-gradient(160deg,#4A57D2 0%,#2C3391 52%,#151A54 100%);--gradient-brand-lift:linear-gradient(180deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,0) 46%);--gradient-page:radial-gradient(120% 80% at 50% -10%,#1F2470 0%,#10131C 62%);--surface-page:var(--neutral-900);--surface-sunken:var(--neutral-950);--surface-card:var(--neutral-850);--surface-raised:var(--neutral-800);--surface-overlay:rgba(16,19,28,.72);--surface-inset:rgba(255,255,255,.04);--surface-hover:rgba(255,255,255,.06);--surface-active:rgba(255,255,255,.1);--surface-brand:var(--indigo-900);--surface-brand-subtle:rgba(74,87,210,.16);--surface-accent-subtle:rgba(245,165,36,.14);--text-strong:var(--neutral-0);--text-body:#DCE1EC;--text-muted:var(--neutral-300);--text-subtle:var(--neutral-400);--text-inverse:var(--neutral-900);--text-accent:var(--amber-400);--text-link:var(--blue-300);--text-link-hover:var(--amber-400);--text-on-brand:var(--neutral-0);--border-subtle:rgba(255,255,255,.08);--border-default:rgba(255,255,255,.14);--border-strong:rgba(255,255,255,.24);--border-accent:var(--amber-500);--border-focus:var(--amber-400);--action-primary:var(--amber-500);--action-primary-hover:var(--amber-400);--action-primary-active:var(--amber-600);--action-primary-text:#20160A;--action-secondary:var(--blue-500);--action-secondary-hover:var(--blue-400);--action-secondary-active:var(--blue-600);--action-secondary-text:var(--neutral-0);--status-running:var(--amber-500);--status-paused:var(--neutral-400);--status-success:#00B383;--status-warning:var(--amber-500);--status-danger:#E8663A;--status-info:#3D9BE0;--status-success-surface:rgba(0,158,115,.16);--status-warning-surface:rgba(245,165,36,.16);--status-danger-surface:rgba(213,94,0,.18);--status-info-surface:rgba(0,114,178,.18)}[data-theme=light]{--surface-page:var(--neutral-25);--surface-sunken:var(--neutral-50);--surface-card:var(--neutral-0);--surface-raised:var(--neutral-0);--surface-overlay:rgba(16,19,28,.4);--surface-inset:var(--neutral-50);--surface-hover:rgba(21,26,84,.05);--surface-active:rgba(21,26,84,.09);--surface-brand:var(--indigo-500);--surface-brand-subtle:rgba(74,87,210,.08);--surface-accent-subtle:rgba(245,165,36,.16);--text-strong:var(--neutral-900);--text-body:var(--neutral-800);--text-muted:var(--neutral-500);--text-subtle:var(--neutral-400);--text-inverse:var(--neutral-0);--text-accent:var(--amber-700);--text-link:var(--blue-500);--text-link-hover:var(--indigo-700);--text-on-brand:var(--neutral-0);--border-subtle:var(--neutral-100);--border-default:var(--neutral-200);--border-strong:var(--neutral-300);--action-primary:var(--amber-500);--action-primary-hover:var(--amber-400);--action-primary-active:var(--amber-600);--action-primary-text:#20160A;--status-success:#007A5A;--status-warning:var(--amber-700);--status-danger:#C24A12;--status-info:var(--blue-500);--chart-8:#000000}:root{--text-display-1:64px;--leading-display-1:1.02;--tracking-display-1:-.03em;--text-display-2:48px;--leading-display-2:1.06;--tracking-display-2:-.025em;--text-title-1:34px;--leading-title-1:1.14;--tracking-title-1:-.02em;--text-title-2:26px;--leading-title-2:1.2;--tracking-title-2:-.015em;--text-title-3:20px;--leading-title-3:1.3;--tracking-title-3:-.01em;--text-body-lg:18px;--leading-body-lg:1.6;--tracking-body-lg:-.005em;--text-body-md:16px;--leading-body-md:1.6;--tracking-body-md:0em;--text-body-sm:14px;--leading-body-sm:1.55;--tracking-body-sm:0em;--text-caption:12px;--leading-caption:1.4;--tracking-caption:.005em;--text-overline:11px;--leading-overline:1.2;--tracking-overline:.12em;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--text-timer-xl:44px;--text-timer-lg:28px;--text-timer-md:18px;--text-timer-sm:13px;--numeric-features:"tnum" 1,"cv01" 1}:root{--space-0:0px;--space-1:2px;--space-2:4px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:20px;--space-7:24px;--space-8:32px;--space-9:40px;--space-10:48px;--space-11:64px;--space-12:80px;--space-13:112px;--space-14:160px;--section-y:112px;--section-y-tight:72px;--container-max:1160px;--container-prose:660px;--gutter:24px;--control-h-sm:26px;--control-h-md:32px;--control-h-lg:40px;--control-h-xl:48px;--row-h:38px}:root{--radius-xs:4px;--radius-sm:6px;--radius-md:9px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:22px;--radius-pill:999px;--radius-icon-ratio:22%;--shadow-none:none;--shadow-xs:0 1px 2px rgba(6,8,16,.32);--shadow-sm:0 1px 3px rgba(6,8,16,.36),0 1px 1px rgba(6,8,16,.24);--shadow-md:0 6px 16px -4px rgba(6,8,16,.44),0 2px 4px rgba(6,8,16,.28);--shadow-lg:0 18px 40px -12px rgba(6,8,16,.55),0 4px 10px rgba(6,8,16,.3);--shadow-pill:0 10px 30px -8px rgba(6,8,16,.6),0 0 0 1px rgba(255,255,255,.08) inset;--shadow-focus:0 0 0 3px rgba(245,165,36,.34);--shadow-inset-hairline:inset 0 1px 0 rgba(255,255,255,.06);--glow-amber:0 0 0 1px rgba(245,165,36,.5),0 0 24px -6px rgba(245,165,36,.45);--blur-panel:saturate(140%) blur(20px);--blur-scrim:blur(6px);--scrim-bottom:linear-gradient(180deg,rgba(10,12,19,0) 0%,rgba(10,12,19,.82) 100%)}:root{--duration-instant:80ms;--duration-fast:.14s;--duration-base:.2s;--duration-slow:.32s;--duration-enter:.42s;--ease-standard:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.4,0,1,1);--ease-tick:steps(1,end);--transition-control:background-color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard);--press-scale:.985}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0ms;--duration-base:0ms;--duration-slow:0ms;--duration-enter:0ms;--press-scale:1}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);font-size:var(--text-body-md);line-height:var(--leading-body-md);letter-spacing:var(--tracking-body-md);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;color:var(--text-strong);font-weight:var(--weight-semibold);text-wrap:balance}h1{font-size:var(--text-display-2);line-height:var(--leading-display-2);letter-spacing:var(--tracking-display-2)}h2{font-size:var(--text-title-1);line-height:var(--leading-title-1);letter-spacing:var(--tracking-title-1)}h3{font-size:var(--text-title-2);line-height:var(--leading-title-2);letter-spacing:var(--tracking-title-2)}h4{font-size:var(--text-title-3);line-height:var(--leading-title-3);letter-spacing:var(--tracking-title-3)}p{margin:0 0 var(--space-5);text-wrap:pretty;max-width:var(--container-prose)}a{color:var(--text-link);text-decoration:none;transition:color var(--duration-fast) var(--ease-standard)}a:hover{color:var(--text-link-hover)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}small{font-size:var(--text-caption);line-height:var(--leading-caption)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}hr{border:0;border-top:1px solid var(--border-subtle);margin:var(--space-8) 0}::selection{background:#f5a52447;color:var(--text-strong)}.tally-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:var(--numeric-features)}.tally-overline{font-size:var(--text-overline);letter-spacing:var(--tracking-overline);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--text-muted)}.tally-container{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter)}