@timebraid/tokens 1.3.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 +31 -0
- package/assets/icon-1024.png +0 -0
- package/assets/icon-128.png +0 -0
- package/assets/icon-16.png +0 -0
- package/assets/icon-256.png +0 -0
- package/assets/icon-32.png +0 -0
- package/assets/icon-512.png +0 -0
- package/assets/icon-64.png +0 -0
- package/assets/icon-README.md +32 -0
- package/assets/logo-glyph.svg +7 -0
- package/assets/logo-small.svg +15 -0
- package/assets/logo-square.svg +13 -0
- package/assets/logo.svg +16 -0
- package/package.json +28 -0
- package/styles-v1.css +7 -0
- package/styles.css +5 -0
- package/tokens/base.css +22 -0
- package/tokens/fonts.css +10 -0
- package/tokens/spacing.css +50 -0
- package/tokens/theme.css +78 -0
- package/tokens/typography.css +23 -0
- package/tokens/v1/base.css +20 -0
- package/tokens/v1/colors.css +150 -0
- package/tokens/v1/elevation.css +27 -0
- package/tokens/v1/fonts.css +12 -0
- package/tokens/v1/motion.css +25 -0
- package/tokens/v1/spacing.css +30 -0
- package/tokens/v1/typography.css +25 -0
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @timebraid/tokens
|
|
2
|
+
|
|
3
|
+
## Install
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import '@timebraid/tokens/styles.css'
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
`styles.css` is the v2 theme. `styles-v1.css` keeps the 1.2 theme for one release and is removed in 1.4.0.
|
|
10
|
+
|
|
11
|
+
That one import gives you every `--*` variable, the element baseline (`body`, headings, links, focus rings), the `.num` helper, and the webfonts.
|
|
12
|
+
|
|
13
|
+
Light is `:root`; dark is `[data-theme="dark"]` on the root element, set by `watchTheme` from `@timebraid/vue`.
|
|
14
|
+
|
|
15
|
+
## Files
|
|
16
|
+
|
|
17
|
+
- `tokens/theme.css` - colour, radius, shadow, blur and motion tokens for both themes: `:root` is light, `[data-theme="dark"]` overrides.
|
|
18
|
+
- `tokens/typography.css` - scale, weights, timer sizes.
|
|
19
|
+
- `tokens/spacing.css` - 4px grid, layout widths, control heights.
|
|
20
|
+
- `tokens/base.css` - element defaults.
|
|
21
|
+
- `tokens/fonts.css` - font stacks. Currently loads Instrument Sans + JetBrains Mono from Google Fonts; swap for local `@font-face` when licensed files exist.
|
|
22
|
+
- `tokens/v1/` - the 1.2 theme, kept for one release behind `styles-v1.css`.
|
|
23
|
+
- `assets/` - `logo.svg` (64px+), `logo-small.svg` (16/32), PNG exports 16→1024.
|
|
24
|
+
|
|
25
|
+
## Rails
|
|
26
|
+
|
|
27
|
+
Rails views and emails copy the token values they need (the mailer layout mirrors `--accent`, `--bg`, `--label`, `--on-accent`).
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
|
|
31
|
+
Use the semantic tokens (`--bg-elev`, `--label`, `--accent`, `--r-cell`, `--space-5`), never the base ramp (`--indigo-500`). Indigo is the accent, `--running` marks a running timer. Charts and project colours use `--chart-1…8` only.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Timebraid - app icon
|
|
2
|
+
|
|
3
|
+
Four white uprights and an amber fifth mark drawn as a growth curve, on a deep indigo
|
|
4
|
+
gradient. `TLogo` in `@timebraid/vue` is the only component that renders it.
|
|
5
|
+
|
|
6
|
+
## Files
|
|
7
|
+
|
|
8
|
+
- `logo.svg` - vector master, rounded square with padding. Use for 64 px and up, macOS, Windows and Linux icons.
|
|
9
|
+
- `logo-small.svg` - 16 and 32 px artwork. Three uprights instead of four, strokes widened 68 to 104. At 16 px the icon shape is only 12.9 px wide, which fits three strokes with usable gaps but not four; the full mark turns to grey haze.
|
|
10
|
+
- `logo-square.svg` - the master cropped to the icon square with square corners, for platforms that apply their own mask (iOS, Android launcher background, apple-touch-icon).
|
|
11
|
+
- `logo-glyph.svg` - bars and curve only on transparency, for the Android adaptive-icon foreground.
|
|
12
|
+
- `icon-16.png` to `icon-1024.png` - flat exports. 16 and 32 come from `logo-small.svg`, the rest from `logo.svg`.
|
|
13
|
+
|
|
14
|
+
## Regenerate
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
packages/tokens/scripts/export-logo.sh
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Needs `rsvg-convert` (librsvg). The app repository builds its platform icon sets from these files with `pnpm icons`. For a macOS `.icns`, copy the PNGs into an `.iconset` directory under Apple's names and run `iconutil -c icns Timebraid.iconset -o Timebraid.icns`.
|
|
21
|
+
|
|
22
|
+
## Specs
|
|
23
|
+
|
|
24
|
+
1024 x 1024 canvas, icon shape 824 wide and centred, corner radius 181.3 (22%),
|
|
25
|
+
transparent outside the shape, no baked shadow.
|
|
26
|
+
|
|
27
|
+
Background `#4A57D2` to `#2C3391` to `#151A54`, with a 16% white lift from the top edge.
|
|
28
|
+
Marks `#FFFFFF`. Curve `#F5A524`.
|
|
29
|
+
|
|
30
|
+
The curve is one cubic Bezier with a round cap. Its control points sit symmetrically about
|
|
31
|
+
the chord, which is what keeps the bend even along the whole stroke - if you edit it, keep
|
|
32
|
+
them mirrored or it develops an elbow.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="100 100 824 824">
|
|
2
|
+
<line x1="308" y1="296" x2="308" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
3
|
+
<line x1="444" y1="296" x2="444" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
4
|
+
<line x1="580" y1="296" x2="580" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
5
|
+
<line x1="716" y1="296" x2="716" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
6
|
+
<path d="M 248 716 C 478.0 619.0, 626.4 504.2, 778 306" fill="none" stroke="#F5A524" stroke-width="80" stroke-linecap="round"></path>
|
|
7
|
+
</svg>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0" stop-color="#4A57D2"></stop><stop offset="0.55" stop-color="#2C3391"></stop><stop offset="1" stop-color="#151A54"></stop></linearGradient>
|
|
4
|
+
<radialGradient id="lift" cx="0.5" cy="0.06" r="0.85"><stop offset="0" stop-color="#FFFFFF" stop-opacity="0.16"></stop><stop offset="1" stop-color="#FFFFFF" stop-opacity="0"></stop></radialGradient>
|
|
5
|
+
<clipPath id="mask"><rect x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3"></rect></clipPath>
|
|
6
|
+
</defs>
|
|
7
|
+
<rect id="icon-shape" x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3" fill="url(#bg)"></rect>
|
|
8
|
+
<rect x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3" fill="url(#lift)"></rect>
|
|
9
|
+
<g clip-path="url(#mask)">
|
|
10
|
+
<line x1="332" y1="300" x2="332" y2="724" stroke="#FFFFFF" stroke-width="104" stroke-linecap="round"></line>
|
|
11
|
+
<line x1="512" y1="300" x2="512" y2="724" stroke="#FFFFFF" stroke-width="104" stroke-linecap="round"></line>
|
|
12
|
+
<line x1="692" y1="300" x2="692" y2="724" stroke="#FFFFFF" stroke-width="104" stroke-linecap="round"></line>
|
|
13
|
+
<path d="M 272 714 C 482.5 611.9, 615.8 497.1, 748 304" fill="none" stroke="#F5A524" stroke-width="110" stroke-linecap="round"></path>
|
|
14
|
+
</g>
|
|
15
|
+
</svg>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="100 100 824 824">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0" stop-color="#4A57D2"></stop><stop offset="0.55" stop-color="#2C3391"></stop><stop offset="1" stop-color="#151A54"></stop></linearGradient>
|
|
4
|
+
<radialGradient id="lift" cx="0.5" cy="0.06" r="0.85"><stop offset="0" stop-color="#FFFFFF" stop-opacity="0.16"></stop><stop offset="1" stop-color="#FFFFFF" stop-opacity="0"></stop></radialGradient>
|
|
5
|
+
</defs>
|
|
6
|
+
<rect x="100" y="100" width="824" height="824" fill="url(#bg)"></rect>
|
|
7
|
+
<rect x="100" y="100" width="824" height="824" fill="url(#lift)"></rect>
|
|
8
|
+
<line x1="308" y1="296" x2="308" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
9
|
+
<line x1="444" y1="296" x2="444" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
10
|
+
<line x1="580" y1="296" x2="580" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
11
|
+
<line x1="716" y1="296" x2="716" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
12
|
+
<path d="M 248 716 C 478.0 619.0, 626.4 504.2, 778 306" fill="none" stroke="#F5A524" stroke-width="80" stroke-linecap="round"></path>
|
|
13
|
+
</svg>
|
package/assets/logo.svg
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="0.35" y2="1"><stop offset="0" stop-color="#4A57D2"></stop><stop offset="0.55" stop-color="#2C3391"></stop><stop offset="1" stop-color="#151A54"></stop></linearGradient>
|
|
4
|
+
<radialGradient id="lift" cx="0.5" cy="0.06" r="0.85"><stop offset="0" stop-color="#FFFFFF" stop-opacity="0.16"></stop><stop offset="1" stop-color="#FFFFFF" stop-opacity="0"></stop></radialGradient>
|
|
5
|
+
<clipPath id="mask"><rect x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3"></rect></clipPath>
|
|
6
|
+
</defs>
|
|
7
|
+
<rect id="icon-shape" x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3" fill="url(#bg)"></rect>
|
|
8
|
+
<rect x="100.0" y="100.0" width="824" height="824" rx="181.3" ry="181.3" fill="url(#lift)"></rect>
|
|
9
|
+
<g clip-path="url(#mask)">
|
|
10
|
+
<line x1="308" y1="296" x2="308" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
11
|
+
<line x1="444" y1="296" x2="444" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
12
|
+
<line x1="580" y1="296" x2="580" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
13
|
+
<line x1="716" y1="296" x2="716" y2="728" stroke="#FFFFFF" stroke-width="68" stroke-linecap="round"></line>
|
|
14
|
+
<path d="M 248 716 C 478.0 619.0, 626.4 504.2, 778 306" fill="none" stroke="#F5A524" stroke-width="80" stroke-linecap="round"></path>
|
|
15
|
+
</g>
|
|
16
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@timebraid/tokens",
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "Timebraid design tokens: CSS custom properties, base styles, fonts and brand assets.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"styles.css",
|
|
11
|
+
"styles-v1.css",
|
|
12
|
+
"tokens",
|
|
13
|
+
"assets",
|
|
14
|
+
"README.md"
|
|
15
|
+
],
|
|
16
|
+
"exports": {
|
|
17
|
+
".": "./styles.css",
|
|
18
|
+
"./styles.css": "./styles.css",
|
|
19
|
+
"./styles-v1.css": "./styles-v1.css",
|
|
20
|
+
"./tokens/*": "./tokens/*",
|
|
21
|
+
"./assets/*": "./assets/*"
|
|
22
|
+
},
|
|
23
|
+
"sideEffects": true,
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "node -e \"console.log('@timebraid/tokens: nothing to build')\"",
|
|
26
|
+
"typecheck": "node -e \"process.exit(0)\""
|
|
27
|
+
}
|
|
28
|
+
}
|
package/styles-v1.css
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
@import url("tokens/v1/fonts.css");
|
|
2
|
+
@import url("tokens/v1/colors.css");
|
|
3
|
+
@import url("tokens/v1/typography.css");
|
|
4
|
+
@import url("tokens/v1/spacing.css");
|
|
5
|
+
@import url("tokens/v1/elevation.css");
|
|
6
|
+
@import url("tokens/v1/motion.css");
|
|
7
|
+
@import url("tokens/v1/base.css");
|
package/styles.css
ADDED
package/tokens/base.css
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* Element defaults and the few helper classes every surface needs. */
|
|
2
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
3
|
+
html,body{margin:0}
|
|
4
|
+
html{-webkit-text-size-adjust:100%}
|
|
5
|
+
body{font-family:var(--font-sans);color:var(--label);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:var(--text-body);line-height:1.45}
|
|
6
|
+
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
|
|
7
|
+
input,select,textarea{font:inherit;color:inherit}
|
|
8
|
+
a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}
|
|
9
|
+
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
10
|
+
.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
|
|
11
|
+
::selection{background:var(--accent-soft-2)}
|
|
12
|
+
@keyframes t-pulse{0%,100%{opacity:1}50%{opacity:.35}}
|
|
13
|
+
@keyframes t-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
|
|
14
|
+
@keyframes t-sheet{from{transform:translateY(100%)}to{transform:none}}
|
|
15
|
+
@keyframes t-scrim{from{opacity:0}to{opacity:1}}
|
|
16
|
+
@keyframes t-pop{from{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:none}}
|
|
17
|
+
@keyframes t-island{from{transform:scaleX(.6);opacity:.4}to{transform:none;opacity:1}}
|
|
18
|
+
.view-in{animation:t-in var(--t-base) var(--ease-out) both}
|
|
19
|
+
.press{transition:transform var(--t-fast) var(--ease),background var(--t-fast) var(--ease),opacity var(--t-fast) var(--ease)}
|
|
20
|
+
.press:active{transform:scale(.98)}
|
|
21
|
+
.row-press:active{background:var(--fill-2)!important}
|
|
22
|
+
@media (prefers-reduced-motion:reduce){*{animation-duration:0ms!important;transition-duration:0ms!important}}
|
package/tokens/fonts.css
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400..700&display=swap');
|
|
2
|
+
|
|
3
|
+
/* Timebraid webfonts are served from Google Fonts (see readme.md - SUBSTITUTION note).
|
|
4
|
+
If licensed brand binaries arrive, replace this @import with local @font-face rules
|
|
5
|
+
pointing at assets/fonts/*.woff2 and keep the family names in theme.css unchanged. */
|
|
6
|
+
:root{
|
|
7
|
+
--font-display:var(--font-sans);
|
|
8
|
+
--font-ui:var(--font-sans);
|
|
9
|
+
--font-numeric:var(--font-mono);
|
|
10
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* 4px base grid. Section rhythm on the marketing site uses the -section tokens. */
|
|
2
|
+
:root{
|
|
3
|
+
--space-0:0px;
|
|
4
|
+
--space-1:2px;
|
|
5
|
+
--space-2:4px;
|
|
6
|
+
--space-3:8px;
|
|
7
|
+
--space-4:12px;
|
|
8
|
+
--space-5:16px;
|
|
9
|
+
--space-6:20px;
|
|
10
|
+
--space-7:24px;
|
|
11
|
+
--space-8:32px;
|
|
12
|
+
--space-9:40px;
|
|
13
|
+
--space-10:48px;
|
|
14
|
+
--space-11:64px;
|
|
15
|
+
--space-12:80px;
|
|
16
|
+
--space-13:112px;
|
|
17
|
+
--space-14:160px;
|
|
18
|
+
|
|
19
|
+
--section-y:112px;
|
|
20
|
+
--section-y-tight:72px;
|
|
21
|
+
--container-max:1160px;
|
|
22
|
+
--container-prose:660px;
|
|
23
|
+
--gutter:24px;
|
|
24
|
+
|
|
25
|
+
--sidebar-w:232px;
|
|
26
|
+
--content-max:860px;
|
|
27
|
+
--content-max-narrow:680px;
|
|
28
|
+
--gutter-phone:16px;
|
|
29
|
+
|
|
30
|
+
--row-h:46px;
|
|
31
|
+
--row-h-sub:56px;
|
|
32
|
+
--row-h-dense:40px;
|
|
33
|
+
--control-h-sm:28px;
|
|
34
|
+
--control-h-md:34px;
|
|
35
|
+
--control-h-lg:44px;
|
|
36
|
+
--control-h-xl:50px;
|
|
37
|
+
--pill-h:46px;
|
|
38
|
+
--pill-h-compact:30px;
|
|
39
|
+
--timer-bar-h:56px;
|
|
40
|
+
--timer-bar-pad:72px;
|
|
41
|
+
--tab-bar-h-ios:84px;
|
|
42
|
+
--tab-bar-pad-ios:100px;
|
|
43
|
+
--nav-bar-h-android:80px;
|
|
44
|
+
--nav-bar-pad-android:96px;
|
|
45
|
+
--toggle-w:46px;
|
|
46
|
+
--toggle-h:28px;
|
|
47
|
+
--field-h:38px;
|
|
48
|
+
--seg-h:32px;
|
|
49
|
+
--icon-square:28px;
|
|
50
|
+
}
|
package/tokens/theme.css
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* Timebraid v2 theme. Light and dark are equals; :root is light, [data-theme="dark"] overrides. */
|
|
2
|
+
:root{
|
|
3
|
+
--font-sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;
|
|
4
|
+
--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
|
|
5
|
+
|
|
6
|
+
--indigo-400:#6C77DE;--indigo-500:#4A57D2;--indigo-600:#3A44AF;--indigo-700:#2C3391;
|
|
7
|
+
|
|
8
|
+
--chart-1:#0072B2;--chart-2:#E69F00;--chart-3:#009E73;--chart-4:#CC79A7;--chart-5:#56B4E9;--chart-6:#D55E00;--chart-7:#F0E442;--chart-8:#6B7085;
|
|
9
|
+
|
|
10
|
+
--bg:#F2F3F8; /* page — system grouped background, indigo-tinted */
|
|
11
|
+
--bg-elev:#FFFFFF; /* grouped cell background */
|
|
12
|
+
--bg-elev-2:#F7F8FC; /* nested / pressed */
|
|
13
|
+
--bg-sidebar:rgba(244,245,250,.86);
|
|
14
|
+
--bg-bar:rgba(242,243,248,.82);
|
|
15
|
+
--fill:rgba(20,22,40,.06); /* system fill */
|
|
16
|
+
--fill-2:rgba(20,22,40,.10);
|
|
17
|
+
--fill-3:rgba(20,22,40,.16);
|
|
18
|
+
--sep:rgba(20,22,40,.10);
|
|
19
|
+
--sep-strong:rgba(20,22,40,.18);
|
|
20
|
+
|
|
21
|
+
--label:#0E1024;
|
|
22
|
+
--label-2:#5C6178;
|
|
23
|
+
--label-3:#8B90A5;
|
|
24
|
+
--label-4:#B7BBCB;
|
|
25
|
+
--on-accent:#FFFFFF;
|
|
26
|
+
|
|
27
|
+
--accent:#4A57D2;
|
|
28
|
+
--accent-hover:#3F4BC0;
|
|
29
|
+
--accent-soft:rgba(74,87,210,.12);
|
|
30
|
+
--accent-soft-2:rgba(74,87,210,.20);
|
|
31
|
+
--running:#4A57D2;
|
|
32
|
+
--running-soft:rgba(74,87,210,.10);
|
|
33
|
+
--green:#1E9E6A;--green-soft:rgba(30,158,106,.12);
|
|
34
|
+
--red:#D6453D;--red-soft:rgba(214,69,61,.10);
|
|
35
|
+
--orange:#D97B0F;
|
|
36
|
+
|
|
37
|
+
--r-cell:12px;--r-card:14px;--r-btn:10px;--r-pill:999px;--r-sheet:20px;--r-window:12px;
|
|
38
|
+
--sh-card:0 1px 2px rgba(14,16,36,.04),0 0 0 1px rgba(14,16,36,.04);
|
|
39
|
+
--sh-float:0 12px 32px -8px rgba(14,16,36,.22),0 2px 6px rgba(14,16,36,.08),0 0 0 1px rgba(14,16,36,.05);
|
|
40
|
+
--sh-sheet:0 -8px 40px -8px rgba(14,16,36,.24);
|
|
41
|
+
--sh-thumb:0 2px 6px rgba(0,0,0,.25);--sh-seg:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04);
|
|
42
|
+
--blur:saturate(180%) blur(22px);
|
|
43
|
+
--scrim:rgba(10,11,20,.42);
|
|
44
|
+
--dash:rgba(255,255,255,.7);
|
|
45
|
+
|
|
46
|
+
--ease:cubic-bezier(.2,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);--ease-sheet:cubic-bezier(.32,.72,0,1);
|
|
47
|
+
--t-fast:140ms;--t-base:220ms;--t-sheet:420ms;
|
|
48
|
+
}
|
|
49
|
+
[data-theme="dark"]{
|
|
50
|
+
--bg:#15161F;
|
|
51
|
+
--bg-elev:#1F2030;
|
|
52
|
+
--bg-elev-2:#282A3C;
|
|
53
|
+
--bg-sidebar:rgba(24,25,36,.86);
|
|
54
|
+
--bg-bar:rgba(21,22,31,.78);
|
|
55
|
+
--fill:rgba(255,255,255,.07);
|
|
56
|
+
--fill-2:rgba(255,255,255,.11);
|
|
57
|
+
--fill-3:rgba(255,255,255,.17);
|
|
58
|
+
--sep:rgba(255,255,255,.09);
|
|
59
|
+
--sep-strong:rgba(255,255,255,.16);
|
|
60
|
+
--label:#F3F4FA;
|
|
61
|
+
--label-2:#A7ABC0;
|
|
62
|
+
--label-3:#7D8199;
|
|
63
|
+
--label-4:#575B70;
|
|
64
|
+
--accent:#7A84E6;
|
|
65
|
+
--accent-hover:#8C95EC;
|
|
66
|
+
--accent-soft:rgba(122,132,230,.16);
|
|
67
|
+
--accent-soft-2:rgba(122,132,230,.26);
|
|
68
|
+
--running:#8A93EC;
|
|
69
|
+
--running-soft:rgba(122,132,230,.14);
|
|
70
|
+
--green:#3CC08A;--green-soft:rgba(60,192,138,.14);
|
|
71
|
+
--red:#F06B62;--red-soft:rgba(240,107,98,.14);
|
|
72
|
+
--orange:#F0A24B;
|
|
73
|
+
--chart-8:#9A9FB4;
|
|
74
|
+
--sh-card:0 1px 2px rgba(0,0,0,.2),0 0 0 1px rgba(255,255,255,.04);
|
|
75
|
+
--sh-float:0 16px 40px -8px rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.08);
|
|
76
|
+
--sh-sheet:0 -8px 40px -8px rgba(0,0,0,.6);
|
|
77
|
+
--scrim:rgba(0,0,0,.55);
|
|
78
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* v2 type scale. UI and display share Instrument Sans; every duration is JetBrains Mono, tabular. */
|
|
2
|
+
:root{
|
|
3
|
+
--text-display-1:64px; --leading-display-1:1.02; --tracking-display-1:-.03em;
|
|
4
|
+
--text-display-2:48px; --leading-display-2:1.06; --tracking-display-2:-.025em;
|
|
5
|
+
--text-large-title:30px; --text-large-title-phone:34px; --tracking-large-title:-.025em; --leading-large-title:1.1;
|
|
6
|
+
--text-title:17px;
|
|
7
|
+
--text-row:15px;
|
|
8
|
+
--text-subtitle:12.5px;
|
|
9
|
+
--text-section:12px; --tracking-section:.04em;
|
|
10
|
+
--text-body:14px;
|
|
11
|
+
--text-body-lg:18px; --leading-body-lg:1.6;
|
|
12
|
+
--text-caption:12px;
|
|
13
|
+
--text-footnote:11.5px;
|
|
14
|
+
--text-timer-xl:44px;
|
|
15
|
+
--text-timer-lg:28px;
|
|
16
|
+
--text-timer-md:22px;
|
|
17
|
+
--text-timer-sm:15px;
|
|
18
|
+
|
|
19
|
+
--weight-regular:400;
|
|
20
|
+
--weight-medium:500;
|
|
21
|
+
--weight-semibold:600;
|
|
22
|
+
--weight-bold:700;
|
|
23
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* Element defaults. Consumers get sane baselines without writing any CSS. */
|
|
2
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
3
|
+
html{-webkit-text-size-adjust:100%}
|
|
4
|
+
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}
|
|
5
|
+
h1,h2,h3,h4{margin:0;color:var(--text-strong);font-weight:var(--weight-semibold);text-wrap:balance}
|
|
6
|
+
h1{font-size:var(--text-display-2);line-height:var(--leading-display-2);letter-spacing:var(--tracking-display-2)}
|
|
7
|
+
h2{font-size:var(--text-title-1);line-height:var(--leading-title-1);letter-spacing:var(--tracking-title-1)}
|
|
8
|
+
h3{font-size:var(--text-title-2);line-height:var(--leading-title-2);letter-spacing:var(--tracking-title-2)}
|
|
9
|
+
h4{font-size:var(--text-title-3);line-height:var(--leading-title-3);letter-spacing:var(--tracking-title-3)}
|
|
10
|
+
p{margin:0 0 var(--space-5);text-wrap:pretty;max-width:var(--container-prose)}
|
|
11
|
+
a{color:var(--text-link);text-decoration:none;transition:color var(--duration-fast) var(--ease-standard)}
|
|
12
|
+
a:hover{color:var(--text-link-hover)}
|
|
13
|
+
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}
|
|
14
|
+
small{font-size:var(--text-caption);line-height:var(--leading-caption)}
|
|
15
|
+
code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}
|
|
16
|
+
hr{border:0;border-top:1px solid var(--border-subtle);margin:var(--space-8) 0}
|
|
17
|
+
::selection{background:rgba(245,165,36,.28);color:var(--text-strong)}
|
|
18
|
+
.tally-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:var(--numeric-features)}
|
|
19
|
+
.tally-overline{font-size:var(--text-overline);letter-spacing:var(--tracking-overline);text-transform:uppercase;font-weight:var(--weight-semibold);color:var(--text-muted)}
|
|
20
|
+
.tally-container{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter)}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/* Tally colour system. Base ramps first, then semantic aliases.
|
|
2
|
+
Dark is the canonical theme; :root is dark, [data-theme="light"] overrides. */
|
|
3
|
+
:root{
|
|
4
|
+
/* Brand indigo — sampled from the app-icon gradient #4A57D2 -> #2C3391 -> #151A54 */
|
|
5
|
+
--indigo-100:#E4E7FA;
|
|
6
|
+
--indigo-200:#C3C8F3;
|
|
7
|
+
--indigo-300:#9AA2EA;
|
|
8
|
+
--indigo-400:#6C77DE;
|
|
9
|
+
--indigo-500:#4A57D2;
|
|
10
|
+
--indigo-600:#3A44AF;
|
|
11
|
+
--indigo-700:#2C3391;
|
|
12
|
+
--indigo-800:#1F2470;
|
|
13
|
+
--indigo-900:#151A54;
|
|
14
|
+
--indigo-950:#0E1138;
|
|
15
|
+
|
|
16
|
+
/* Accent amber — the fifth tally stroke */
|
|
17
|
+
--amber-200:#FDE3B4;
|
|
18
|
+
--amber-300:#FBCC7C;
|
|
19
|
+
--amber-400:#F8B547;
|
|
20
|
+
--amber-500:#F5A524;
|
|
21
|
+
--amber-600:#D98C10;
|
|
22
|
+
--amber-700:#A96A08;
|
|
23
|
+
|
|
24
|
+
/* Secondary blue — app UI actions */
|
|
25
|
+
--blue-300:#7FB4EE;
|
|
26
|
+
--blue-400:#3D8BDB;
|
|
27
|
+
--blue-500:#1565C0;
|
|
28
|
+
--blue-600:#0F4E97;
|
|
29
|
+
--blue-700:#0B3A70;
|
|
30
|
+
|
|
31
|
+
/* Cool neutrals */
|
|
32
|
+
--neutral-0:#FFFFFF;
|
|
33
|
+
--neutral-25:#FAFBFD;
|
|
34
|
+
--neutral-50:#F4F6FA;
|
|
35
|
+
--neutral-100:#E8EBF2;
|
|
36
|
+
--neutral-200:#D5DAE6;
|
|
37
|
+
--neutral-300:#B3BAC9;
|
|
38
|
+
--neutral-400:#8B93A5;
|
|
39
|
+
--neutral-500:#697084;
|
|
40
|
+
--neutral-600:#4C5365;
|
|
41
|
+
--neutral-650:#3C4356;
|
|
42
|
+
--neutral-700:#2B3143;
|
|
43
|
+
--neutral-800:#1D2230;
|
|
44
|
+
--neutral-850:#161A26;
|
|
45
|
+
--neutral-900:#10131C;
|
|
46
|
+
--neutral-950:#0A0C13;
|
|
47
|
+
|
|
48
|
+
/* Okabe-Ito — the only palette permitted for charts and parallel-timer tracks */
|
|
49
|
+
--chart-1:#0072B2; /* blue */
|
|
50
|
+
--chart-2:#E69F00; /* orange */
|
|
51
|
+
--chart-3:#009E73; /* bluish green */
|
|
52
|
+
--chart-4:#CC79A7; /* reddish purple */
|
|
53
|
+
--chart-5:#56B4E9; /* sky blue */
|
|
54
|
+
--chart-6:#D55E00; /* vermillion */
|
|
55
|
+
--chart-7:#F0E442; /* yellow */
|
|
56
|
+
--chart-8:#4C5566; /* neutral (replaces Okabe-Ito black on dark ground) */
|
|
57
|
+
|
|
58
|
+
/* Gradients */
|
|
59
|
+
--gradient-brand:linear-gradient(160deg,#4A57D2 0%,#2C3391 52%,#151A54 100%); /* @kind other */
|
|
60
|
+
--gradient-brand-lift:linear-gradient(180deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,0) 46%); /* @kind other */
|
|
61
|
+
--gradient-page:radial-gradient(120% 80% at 50% -10%,#1F2470 0%,#10131C 62%); /* @kind other */
|
|
62
|
+
|
|
63
|
+
/* ---- Semantic: dark (canonical) ---- */
|
|
64
|
+
--surface-page:var(--neutral-900);
|
|
65
|
+
--surface-sunken:var(--neutral-950);
|
|
66
|
+
--surface-card:var(--neutral-850);
|
|
67
|
+
--surface-raised:var(--neutral-800);
|
|
68
|
+
--surface-overlay:rgba(16,19,28,.72);
|
|
69
|
+
--surface-inset:rgba(255,255,255,.04);
|
|
70
|
+
--surface-hover:rgba(255,255,255,.06);
|
|
71
|
+
--surface-active:rgba(255,255,255,.1);
|
|
72
|
+
--surface-brand:var(--indigo-900);
|
|
73
|
+
--surface-brand-subtle:rgba(74,87,210,.16);
|
|
74
|
+
--surface-accent-subtle:rgba(245,165,36,.14);
|
|
75
|
+
|
|
76
|
+
--text-strong:var(--neutral-0);
|
|
77
|
+
--text-body:#DCE1EC;
|
|
78
|
+
--text-muted:var(--neutral-300);
|
|
79
|
+
--text-subtle:var(--neutral-400);
|
|
80
|
+
--text-inverse:var(--neutral-900);
|
|
81
|
+
--text-accent:var(--amber-400);
|
|
82
|
+
--text-link:var(--blue-300);
|
|
83
|
+
--text-link-hover:var(--amber-400);
|
|
84
|
+
--text-on-brand:var(--neutral-0);
|
|
85
|
+
|
|
86
|
+
--border-subtle:rgba(255,255,255,.08);
|
|
87
|
+
--border-default:rgba(255,255,255,.14);
|
|
88
|
+
--border-strong:rgba(255,255,255,.24);
|
|
89
|
+
--border-accent:var(--amber-500);
|
|
90
|
+
--border-focus:var(--amber-400);
|
|
91
|
+
|
|
92
|
+
--action-primary:var(--amber-500);
|
|
93
|
+
--action-primary-hover:var(--amber-400);
|
|
94
|
+
--action-primary-active:var(--amber-600);
|
|
95
|
+
--action-primary-text:#20160A;
|
|
96
|
+
--action-secondary:var(--blue-500);
|
|
97
|
+
--action-secondary-hover:var(--blue-400);
|
|
98
|
+
--action-secondary-active:var(--blue-600);
|
|
99
|
+
--action-secondary-text:var(--neutral-0);
|
|
100
|
+
|
|
101
|
+
--status-running:var(--amber-500);
|
|
102
|
+
--status-paused:var(--neutral-400);
|
|
103
|
+
--status-success:#00B383;
|
|
104
|
+
--status-warning:var(--amber-500);
|
|
105
|
+
--status-danger:#E8663A;
|
|
106
|
+
--status-info:#3D9BE0;
|
|
107
|
+
--status-success-surface:rgba(0,158,115,.16);
|
|
108
|
+
--status-warning-surface:rgba(245,165,36,.16);
|
|
109
|
+
--status-danger-surface:rgba(213,94,0,.18);
|
|
110
|
+
--status-info-surface:rgba(0,114,178,.18);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
[data-theme="light"]{
|
|
114
|
+
--surface-page:var(--neutral-25);
|
|
115
|
+
--surface-sunken:var(--neutral-50);
|
|
116
|
+
--surface-card:var(--neutral-0);
|
|
117
|
+
--surface-raised:var(--neutral-0);
|
|
118
|
+
--surface-overlay:rgba(16,19,28,.4);
|
|
119
|
+
--surface-inset:var(--neutral-50);
|
|
120
|
+
--surface-hover:rgba(21,26,84,.05);
|
|
121
|
+
--surface-active:rgba(21,26,84,.09);
|
|
122
|
+
--surface-brand:var(--indigo-500);
|
|
123
|
+
--surface-brand-subtle:rgba(74,87,210,.08);
|
|
124
|
+
--surface-accent-subtle:rgba(245,165,36,.16);
|
|
125
|
+
|
|
126
|
+
--text-strong:var(--neutral-900);
|
|
127
|
+
--text-body:var(--neutral-800);
|
|
128
|
+
--text-muted:var(--neutral-500);
|
|
129
|
+
--text-subtle:var(--neutral-400);
|
|
130
|
+
--text-inverse:var(--neutral-0);
|
|
131
|
+
--text-accent:var(--amber-700);
|
|
132
|
+
--text-link:var(--blue-500);
|
|
133
|
+
--text-link-hover:var(--indigo-700);
|
|
134
|
+
--text-on-brand:var(--neutral-0);
|
|
135
|
+
|
|
136
|
+
--border-subtle:var(--neutral-100);
|
|
137
|
+
--border-default:var(--neutral-200);
|
|
138
|
+
--border-strong:var(--neutral-300);
|
|
139
|
+
|
|
140
|
+
--action-primary:var(--amber-500);
|
|
141
|
+
--action-primary-hover:var(--amber-400);
|
|
142
|
+
--action-primary-active:var(--amber-600);
|
|
143
|
+
--action-primary-text:#20160A;
|
|
144
|
+
|
|
145
|
+
--status-success:#007A5A;
|
|
146
|
+
--status-warning:var(--amber-700);
|
|
147
|
+
--status-danger:#C24A12;
|
|
148
|
+
--status-info:var(--blue-500);
|
|
149
|
+
--chart-8:#000000;
|
|
150
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Radii, shadows, blur. Shadows are near-black and low-spread; nothing floats far. */
|
|
2
|
+
:root{
|
|
3
|
+
--radius-xs:4px;
|
|
4
|
+
--radius-sm:6px;
|
|
5
|
+
--radius-md:9px;
|
|
6
|
+
--radius-lg:12px;
|
|
7
|
+
--radius-xl:16px;
|
|
8
|
+
--radius-2xl:22px;
|
|
9
|
+
--radius-pill:999px;
|
|
10
|
+
--radius-icon-ratio:22%; /* app-icon squircle: radius = 22% of side */
|
|
11
|
+
|
|
12
|
+
--shadow-none:none;
|
|
13
|
+
--shadow-xs:0 1px 2px rgba(6,8,16,.32);
|
|
14
|
+
--shadow-sm:0 1px 3px rgba(6,8,16,.36),0 1px 1px rgba(6,8,16,.24);
|
|
15
|
+
--shadow-md:0 6px 16px -4px rgba(6,8,16,.44),0 2px 4px rgba(6,8,16,.28);
|
|
16
|
+
--shadow-lg:0 18px 40px -12px rgba(6,8,16,.55),0 4px 10px rgba(6,8,16,.3);
|
|
17
|
+
--shadow-pill:0 10px 30px -8px rgba(6,8,16,.6),0 0 0 1px rgba(255,255,255,.08) inset;
|
|
18
|
+
--shadow-focus:0 0 0 3px rgba(245,165,36,.34);
|
|
19
|
+
--shadow-inset-hairline:inset 0 1px 0 rgba(255,255,255,.06);
|
|
20
|
+
--glow-amber:0 0 0 1px rgba(245,165,36,.5),0 0 24px -6px rgba(245,165,36,.45);
|
|
21
|
+
|
|
22
|
+
--blur-panel:saturate(140%) blur(20px); /* @kind other */
|
|
23
|
+
--blur-scrim:blur(6px); /* @kind other */
|
|
24
|
+
|
|
25
|
+
/* Protection gradient for text over imagery / gradient */
|
|
26
|
+
--scrim-bottom:linear-gradient(180deg,rgba(10,12,19,0) 0%,rgba(10,12,19,.82) 100%); /* @kind other */
|
|
27
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@import url('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');
|
|
2
|
+
|
|
3
|
+
/* Tally webfonts are served from Google Fonts (see readme.md — SUBSTITUTION note).
|
|
4
|
+
If licensed brand binaries arrive, replace this @import with local @font-face rules
|
|
5
|
+
pointing at assets/fonts/*.woff2 and keep the family names below unchanged. */
|
|
6
|
+
:root{
|
|
7
|
+
--font-sans:"Instrument Sans","Helvetica Neue",-apple-system,BlinkMacSystemFont,sans-serif;
|
|
8
|
+
--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
|
|
9
|
+
--font-display:var(--font-sans);
|
|
10
|
+
--font-ui:var(--font-sans);
|
|
11
|
+
--font-numeric:var(--font-mono);
|
|
12
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* Motion. Short, damped, never bouncy. Time is the subject; nothing should feel slow. */
|
|
2
|
+
:root{
|
|
3
|
+
--duration-instant:80ms; /* @kind other */
|
|
4
|
+
--duration-fast:140ms; /* @kind other */
|
|
5
|
+
--duration-base:200ms; /* @kind other */
|
|
6
|
+
--duration-slow:320ms; /* @kind other */
|
|
7
|
+
--duration-enter:420ms; /* @kind other */
|
|
8
|
+
|
|
9
|
+
--ease-standard:cubic-bezier(.2,0,.2,1); /* @kind other */
|
|
10
|
+
--ease-out:cubic-bezier(.16,1,.3,1); /* @kind other */
|
|
11
|
+
--ease-in:cubic-bezier(.4,0,1,1); /* @kind other */
|
|
12
|
+
--ease-tick:steps(1,end); /* @kind other */ /* second-by-second timer digits never tween */
|
|
13
|
+
|
|
14
|
+
--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); /* @kind other */
|
|
15
|
+
--press-scale:.985; /* @kind other */
|
|
16
|
+
}
|
|
17
|
+
@media (prefers-reduced-motion:reduce){
|
|
18
|
+
:root{
|
|
19
|
+
--duration-fast:0ms; /* @kind other */
|
|
20
|
+
--duration-base:0ms; /* @kind other */
|
|
21
|
+
--duration-slow:0ms; /* @kind other */
|
|
22
|
+
--duration-enter:0ms; /* @kind other */
|
|
23
|
+
--press-scale:1; /* @kind other */
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* 4px base grid. Section rhythm on the marketing site uses the -section tokens. */
|
|
2
|
+
:root{
|
|
3
|
+
--space-0:0px;
|
|
4
|
+
--space-1:2px;
|
|
5
|
+
--space-2:4px;
|
|
6
|
+
--space-3:8px;
|
|
7
|
+
--space-4:12px;
|
|
8
|
+
--space-5:16px;
|
|
9
|
+
--space-6:20px;
|
|
10
|
+
--space-7:24px;
|
|
11
|
+
--space-8:32px;
|
|
12
|
+
--space-9:40px;
|
|
13
|
+
--space-10:48px;
|
|
14
|
+
--space-11:64px;
|
|
15
|
+
--space-12:80px;
|
|
16
|
+
--space-13:112px;
|
|
17
|
+
--space-14:160px;
|
|
18
|
+
|
|
19
|
+
--section-y:112px;
|
|
20
|
+
--section-y-tight:72px;
|
|
21
|
+
--container-max:1160px;
|
|
22
|
+
--container-prose:660px;
|
|
23
|
+
--gutter:24px;
|
|
24
|
+
|
|
25
|
+
--control-h-sm:26px;
|
|
26
|
+
--control-h-md:32px;
|
|
27
|
+
--control-h-lg:40px;
|
|
28
|
+
--control-h-xl:48px;
|
|
29
|
+
--row-h:38px;
|
|
30
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* Type scale. Display and UI share one family; numerals are always mono + tabular. */
|
|
2
|
+
:root{
|
|
3
|
+
--text-display-1:64px; --leading-display-1:1.02; --tracking-display-1:-.03em;
|
|
4
|
+
--text-display-2:48px; --leading-display-2:1.06; --tracking-display-2:-.025em;
|
|
5
|
+
--text-title-1:34px; --leading-title-1:1.14; --tracking-title-1:-.02em;
|
|
6
|
+
--text-title-2:26px; --leading-title-2:1.2; --tracking-title-2:-.015em;
|
|
7
|
+
--text-title-3:20px; --leading-title-3:1.3; --tracking-title-3:-.01em;
|
|
8
|
+
--text-body-lg:18px; --leading-body-lg:1.6; --tracking-body-lg:-.005em;
|
|
9
|
+
--text-body-md:16px; --leading-body-md:1.6; --tracking-body-md:0em;
|
|
10
|
+
--text-body-sm:14px; --leading-body-sm:1.55; --tracking-body-sm:0em;
|
|
11
|
+
--text-caption:12px; --leading-caption:1.4; --tracking-caption:.005em;
|
|
12
|
+
--text-overline:11px; --leading-overline:1.2; --tracking-overline:.12em;
|
|
13
|
+
|
|
14
|
+
--weight-regular:400;
|
|
15
|
+
--weight-medium:500;
|
|
16
|
+
--weight-semibold:600;
|
|
17
|
+
--weight-bold:700;
|
|
18
|
+
|
|
19
|
+
/* Timer / duration readouts */
|
|
20
|
+
--text-timer-xl:44px;
|
|
21
|
+
--text-timer-lg:28px;
|
|
22
|
+
--text-timer-md:18px;
|
|
23
|
+
--text-timer-sm:13px;
|
|
24
|
+
--numeric-features:"tnum" 1,"cv01" 1; /* @kind other */
|
|
25
|
+
}
|