@motion-proto/live-tokens 0.61.0 → 0.63.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/.claude/skills/live-tokens-adjust-geometry/SKILL.md +4 -4
- package/.claude/skills/live-tokens-build-page/SKILL.md +21 -3
- package/.claude/skills/live-tokens-create-component/SKILL.md +16 -48
- package/.claude/skills/live-tokens-create-component/references/fixed-overlays.md +10 -1
- package/.claude/skills/live-tokens-create-component/references/intrinsics.md +7 -5
- package/.claude/skills/live-tokens-create-component/references/sketch-mode.md +1 -1
- package/.claude/skills/live-tokens-create-component/references/token-naming.md +50 -0
- package/.claude/skills/live-tokens-generate-theme/SKILL.md +16 -9
- package/.claude/skills/live-tokens-pair-fonts/SKILL.md +8 -6
- package/.claude/skills/live-tokens-pick-component/SKILL.md +19 -5
- package/CHANGELOG.md +114 -0
- package/bin/migrate.mjs +6 -2
- package/dist-plugin/adjust/index.cjs +1 -1
- package/dist-plugin/adjust/index.d.cts +1 -1
- package/dist-plugin/adjust/index.d.ts +1 -1
- package/dist-plugin/adjust/index.js +1 -1
- package/dist-plugin/{chunk-232GZGQU.js → chunk-NDJJORKJ.js} +342 -5
- package/dist-plugin/{chunk-Y5CNFSSV.js → chunk-RVE3MNKM.js} +1 -1
- package/dist-plugin/{chunk-OIOXU7FR.js → chunk-ZHPX7ZYQ.js} +83 -25
- package/dist-plugin/{dataPaths-CRfD1LdA.d.ts → dataPaths-DZUzVv8H.d.cts} +3 -3
- package/dist-plugin/{dataPaths-CRfD1LdA.d.cts → dataPaths-DZUzVv8H.d.ts} +3 -3
- package/dist-plugin/fontPairing/index.cjs +1 -1
- package/dist-plugin/fontPairing/index.d.cts +1 -1
- package/dist-plugin/fontPairing/index.d.ts +1 -1
- package/dist-plugin/fontPairing/index.js +1 -1
- package/dist-plugin/generateColorsAndType/index.cjs +1 -1
- package/dist-plugin/generateColorsAndType/index.d.cts +1 -1
- package/dist-plugin/generateColorsAndType/index.d.ts +1 -1
- package/dist-plugin/generateColorsAndType/index.js +1 -1
- package/dist-plugin/index.cjs +461 -58
- package/dist-plugin/index.d.cts +1 -1
- package/dist-plugin/index.d.ts +1 -1
- package/dist-plugin/index.js +31 -23
- package/dist-plugin/migrateData/index.cjs +350 -9
- package/dist-plugin/migrateData/index.d.cts +1 -1
- package/dist-plugin/migrateData/index.d.ts +1 -1
- package/dist-plugin/migrateData/index.js +9 -5
- package/dist-plugin/tokensCssMigrations/index.cjs +83 -25
- package/dist-plugin/tokensCssMigrations/index.d.cts +1 -1
- package/dist-plugin/tokensCssMigrations/index.d.ts +1 -1
- package/dist-plugin/tokensCssMigrations/index.js +2 -2
- package/package.json +4 -2
- package/src/app/site.css +32 -0
- package/src/editor/component-editor/CardEditor.svelte +7 -1
- package/src/editor/component-editor/scaffolding/VariantGroup.svelte +25 -2
- package/src/editor/core/preview/lookPreview.ts +46 -5
- package/src/editor/core/productionPulse.ts +6 -2
- package/src/editor/core/sketch/maskField.ts +75 -39
- package/src/editor/core/sketch/sketchLayer.ts +32 -11
- package/src/editor/core/sketch/sketchStore.ts +311 -86
- package/src/editor/core/sketch/{sketchPresetService.ts → sketchStyleService.ts} +14 -14
- package/src/editor/core/sketch/{sketchPresets.ts → sketchStyles.ts} +27 -28
- package/src/editor/core/themes/themeDocumentSync.ts +2 -0
- package/src/editor/core/themes/themeInit.ts +19 -1
- package/src/editor/core/themes/themeService.ts +7 -2
- package/src/editor/core/themes/themeTypes.ts +5 -0
- package/src/editor/docs/content/editing-tokens.md +1 -1
- package/src/editor/docs/content/sketch-mode.md +34 -18
- package/src/editor/docs/content/themes-workflow.md +30 -21
- package/src/editor/docs/content/where-themes-live.md +9 -5
- package/src/editor/docs/content.generated.ts +4 -4
- package/src/editor/overlay/LiveTokensRouter.svelte +8 -0
- package/src/editor/ui/EditorViewSwitcher.svelte +3 -3
- package/src/editor/ui/ThemePanel.svelte +47 -1
- package/src/editor/ui/sections/textStyles.ts +29 -1
- package/src/editor/ui/sketch/SketchPreview.svelte +3 -3
- package/src/editor/ui/sketch/SketchTab.svelte +120 -134
- package/src/live-tokens/data/colors-and-type/midnight-study.json +40 -30
- package/src/live-tokens/data/themes/autumn.json +3 -3
- package/src/live-tokens/data/themes/halloween.json +3 -3
- package/src/live-tokens/data/themes/midnight-study.json +61 -49
- package/src/live-tokens/data/themes/ocean.json +3 -3
- package/src/live-tokens/data/themes/royal-velvet.json +3 -3
- package/src/live-tokens/data/themes/sketchy.json +3 -3
- package/src/live-tokens/data/themes/spring-meadow.json +3 -3
- package/src/live-tokens/data/themes/sunset.json +3 -3
- package/src/system/components/Card.svelte +27 -9
- package/src/system/components/FloatingTokenTags.css +10 -8
- package/src/system/components/ImageLightbox.svelte +5 -2
- package/src/system/components/SectionDivider.svelte +3 -3
- package/src/system/components/SegmentedControl.svelte +11 -9
- package/src/system/styles/tokens.css +28 -5
- package/template/src/pages/Home.svelte +1 -11
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "Midnight Study",
|
|
3
3
|
"createdAt": "2026-08-13T10:21:46.867Z",
|
|
4
|
-
"updatedAt": "2026-08-
|
|
4
|
+
"updatedAt": "2026-08-27T17:03:51.623Z",
|
|
5
5
|
"schemaVersion": 4,
|
|
6
6
|
"colorsAndType": {
|
|
7
7
|
"name": "Midnight Study",
|
|
8
|
-
"createdAt": "2026-08-
|
|
9
|
-
"updatedAt": "2026-08-
|
|
8
|
+
"createdAt": "2026-08-27T17:01:37.984Z",
|
|
9
|
+
"updatedAt": "2026-08-27T17:01:37.984Z",
|
|
10
10
|
"editorConfigs": {
|
|
11
11
|
"Brand": {
|
|
12
12
|
"baseColor": {
|
|
@@ -2267,10 +2267,6 @@
|
|
|
2267
2267
|
}
|
|
2268
2268
|
},
|
|
2269
2269
|
"cssVariables": {
|
|
2270
|
-
"--gradient-1": "linear-gradient(90deg, var(--color-brand-400) 0%, var(--color-brand-700) 100%)",
|
|
2271
|
-
"--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
|
|
2272
|
-
"--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
|
|
2273
|
-
"--gradient-4": "linear-gradient(180deg, var(--color-canvas-600) 0%, var(--color-canvas-900) 100%)",
|
|
2274
2270
|
"--badge-trait-surface": "var(--surface-brand)",
|
|
2275
2271
|
"--badge-trait-text": "var(--text-brand)",
|
|
2276
2272
|
"--badge-trait-text-font-family": "var(--font-sans)",
|
|
@@ -2321,7 +2317,15 @@
|
|
|
2321
2317
|
"--shadow-md": "3px 3px 6px hsla(237, 18%, 3%, 0.9)",
|
|
2322
2318
|
"--shadow-lg": "5px 5px 9px hsla(237, 18%, 3%, 0.9)",
|
|
2323
2319
|
"--shadow-xl": "6px 7px 13px hsla(237, 18%, 3%, 0.9)",
|
|
2324
|
-
"--shadow-2xl": "8px 9px 16px hsla(237, 18%, 3%, 0.9)"
|
|
2320
|
+
"--shadow-2xl": "8px 9px 16px hsla(237, 18%, 3%, 0.9)",
|
|
2321
|
+
"--gradient-1": "linear-gradient(90deg, var(--color-brand-400) 0%, var(--color-brand-700) 100%)",
|
|
2322
|
+
"--gradient-1-stops": "var(--color-brand-400) 0%, var(--color-brand-700) 100%",
|
|
2323
|
+
"--gradient-2": "linear-gradient(135deg, var(--color-special-500) 0%, var(--color-brand-500) 100%)",
|
|
2324
|
+
"--gradient-2-stops": "var(--color-special-500) 0%, var(--color-brand-500) 100%",
|
|
2325
|
+
"--gradient-3": "linear-gradient(90deg, var(--color-brand-500) 0%, var(--color-accent-500) 100%)",
|
|
2326
|
+
"--gradient-3-stops": "var(--color-brand-500) 0%, var(--color-accent-500) 100%",
|
|
2327
|
+
"--gradient-4": "linear-gradient(180deg, color-mix(in srgb, var(--color-canvas-600) 49%, transparent) 0%, var(--color-canvas-850) 14.2%, var(--color-canvas-900) 83.8%)",
|
|
2328
|
+
"--gradient-4-stops": "color-mix(in srgb, var(--color-canvas-600) 49%, transparent) 0%, var(--color-canvas-850) 14.2%, var(--color-canvas-900) 83.8%"
|
|
2325
2329
|
},
|
|
2326
2330
|
"fontSources": [
|
|
2327
2331
|
{
|
|
@@ -2474,25 +2478,6 @@
|
|
|
2474
2478
|
]
|
|
2475
2479
|
}
|
|
2476
2480
|
],
|
|
2477
|
-
"harmonyAxes": [
|
|
2478
|
-
{
|
|
2479
|
-
"hue": 300,
|
|
2480
|
-
"family": "Brand"
|
|
2481
|
-
},
|
|
2482
|
-
{
|
|
2483
|
-
"hue": 340,
|
|
2484
|
-
"family": "Accent"
|
|
2485
|
-
},
|
|
2486
|
-
{
|
|
2487
|
-
"hue": 268,
|
|
2488
|
-
"family": "Canvas"
|
|
2489
|
-
},
|
|
2490
|
-
{
|
|
2491
|
-
"hue": 210,
|
|
2492
|
-
"family": null
|
|
2493
|
-
}
|
|
2494
|
-
],
|
|
2495
|
-
"schemaVersion": 3,
|
|
2496
2481
|
"gradients": [
|
|
2497
2482
|
{
|
|
2498
2483
|
"variable": "--gradient-1",
|
|
@@ -2546,15 +2531,40 @@
|
|
|
2546
2531
|
"stops": [
|
|
2547
2532
|
{
|
|
2548
2533
|
"position": 0,
|
|
2549
|
-
"color": "--color-canvas-600"
|
|
2534
|
+
"color": "--color-canvas-600",
|
|
2535
|
+
"opacity": 49
|
|
2550
2536
|
},
|
|
2551
2537
|
{
|
|
2552
|
-
"position":
|
|
2538
|
+
"position": 14.2,
|
|
2539
|
+
"color": "--color-canvas-850",
|
|
2540
|
+
"opacity": 100
|
|
2541
|
+
},
|
|
2542
|
+
{
|
|
2543
|
+
"position": 83.8,
|
|
2553
2544
|
"color": "--color-canvas-900"
|
|
2554
2545
|
}
|
|
2555
2546
|
]
|
|
2556
2547
|
}
|
|
2557
|
-
]
|
|
2548
|
+
],
|
|
2549
|
+
"harmonyAxes": [
|
|
2550
|
+
{
|
|
2551
|
+
"hue": 300,
|
|
2552
|
+
"family": "Brand"
|
|
2553
|
+
},
|
|
2554
|
+
{
|
|
2555
|
+
"hue": 340,
|
|
2556
|
+
"family": "Accent"
|
|
2557
|
+
},
|
|
2558
|
+
{
|
|
2559
|
+
"hue": 268,
|
|
2560
|
+
"family": "Canvas"
|
|
2561
|
+
},
|
|
2562
|
+
{
|
|
2563
|
+
"hue": 210,
|
|
2564
|
+
"family": null
|
|
2565
|
+
}
|
|
2566
|
+
],
|
|
2567
|
+
"schemaVersion": 5
|
|
2558
2568
|
},
|
|
2559
2569
|
"componentConfigs": {
|
|
2560
2570
|
"badge": {
|
|
@@ -2886,10 +2896,10 @@
|
|
|
2886
2896
|
"card": {
|
|
2887
2897
|
"name": "midnight-study",
|
|
2888
2898
|
"component": "card",
|
|
2889
|
-
"createdAt": "2026-
|
|
2890
|
-
"updatedAt": "2026-08-
|
|
2899
|
+
"createdAt": "2026-08-27T17:02:30.403Z",
|
|
2900
|
+
"updatedAt": "2026-08-27T17:02:30.403Z",
|
|
2891
2901
|
"aliases": {
|
|
2892
|
-
"--card-default-surface": "
|
|
2902
|
+
"--card-default-surface": "--gradient-4",
|
|
2893
2903
|
"--card-default-border": "--border-neutral",
|
|
2894
2904
|
"--card-default-border-width": "--border-width-1",
|
|
2895
2905
|
"--card-default-radius": "--radius-sm",
|
|
@@ -2899,14 +2909,14 @@
|
|
|
2899
2909
|
"--card-default-header-padding-bottom": "--space-8",
|
|
2900
2910
|
"--card-default-header-padding-left": "--space-12",
|
|
2901
2911
|
"--card-default-header-gap": "--space-6",
|
|
2902
|
-
"--card-default-body-padding": "--space-
|
|
2903
|
-
"--card-default-body-padding-top": "--space-
|
|
2904
|
-
"--card-default-body-padding-right": "--space-
|
|
2905
|
-
"--card-default-body-padding-bottom": "--space-
|
|
2906
|
-
"--card-default-body-padding-left": "--space-
|
|
2912
|
+
"--card-default-body-padding": "--space-16",
|
|
2913
|
+
"--card-default-body-padding-top": "--space-16",
|
|
2914
|
+
"--card-default-body-padding-right": "--space-20",
|
|
2915
|
+
"--card-default-body-padding-bottom": "--space-48",
|
|
2916
|
+
"--card-default-body-padding-left": "--space-20",
|
|
2907
2917
|
"--card-default-shadow": "--shadow-sm",
|
|
2908
2918
|
"--card-default-blur": "--blur-none",
|
|
2909
|
-
"--card-default-header-surface": "color-mix(in srgb, var(--
|
|
2919
|
+
"--card-default-header-surface": "color-mix(in srgb, var(--color-brand-700) 60%, transparent)",
|
|
2910
2920
|
"--card-default-title": "--text-primary",
|
|
2911
2921
|
"--card-default-title-font-family": "--font-sans",
|
|
2912
2922
|
"--card-default-title-font-size": "--font-size-2xl",
|
|
@@ -2922,7 +2932,8 @@
|
|
|
2922
2932
|
"--card-hover-shadow": "--shadow-md",
|
|
2923
2933
|
"--card-hover-border-active": "--card-default-border",
|
|
2924
2934
|
"--card-hover-shadow-active": "--card-default-shadow"
|
|
2925
|
-
}
|
|
2935
|
+
},
|
|
2936
|
+
"config": {}
|
|
2926
2937
|
},
|
|
2927
2938
|
"codesnippet": {
|
|
2928
2939
|
"name": "midnight-study",
|
|
@@ -3453,8 +3464,8 @@
|
|
|
3453
3464
|
"panel": {
|
|
3454
3465
|
"name": "midnight-study",
|
|
3455
3466
|
"component": "panel",
|
|
3456
|
-
"createdAt": "2026-
|
|
3457
|
-
"updatedAt": "2026-08-
|
|
3467
|
+
"createdAt": "2026-08-27T17:03:50.744Z",
|
|
3468
|
+
"updatedAt": "2026-08-27T17:03:50.744Z",
|
|
3458
3469
|
"aliases": {
|
|
3459
3470
|
"--panel-frame-border": "--border-neutral",
|
|
3460
3471
|
"--panel-frame-border-width": "--border-width-1",
|
|
@@ -3478,10 +3489,11 @@
|
|
|
3478
3489
|
]
|
|
3479
3490
|
}
|
|
3480
3491
|
},
|
|
3481
|
-
"--panel-stage-padding": "--space-
|
|
3482
|
-
"--panel-stage-inline-padding": "--space-
|
|
3483
|
-
"--panel-stage-gap": "--space-
|
|
3484
|
-
}
|
|
3492
|
+
"--panel-stage-padding": "--space-16",
|
|
3493
|
+
"--panel-stage-inline-padding": "--space-24",
|
|
3494
|
+
"--panel-stage-gap": "--space-16"
|
|
3495
|
+
},
|
|
3496
|
+
"config": {}
|
|
3485
3497
|
},
|
|
3486
3498
|
"progressbar": {
|
|
3487
3499
|
"name": "midnight-study",
|
|
@@ -3576,7 +3588,7 @@
|
|
|
3576
3588
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3577
3589
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3578
3590
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3579
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3591
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3580
3592
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3581
3593
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3582
3594
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3605,7 +3617,7 @@
|
|
|
3605
3617
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3606
3618
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3607
3619
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3608
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3620
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3609
3621
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3610
3622
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3611
3623
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3634,7 +3646,7 @@
|
|
|
3634
3646
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3635
3647
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3636
3648
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3637
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3649
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3638
3650
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3639
3651
|
}
|
|
3640
3652
|
},
|
|
@@ -3529,7 +3529,7 @@
|
|
|
3529
3529
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3530
3530
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3531
3531
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3532
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3532
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3533
3533
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3534
3534
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3535
3535
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3558,7 +3558,7 @@
|
|
|
3558
3558
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3559
3559
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3560
3560
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3561
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3561
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3562
3562
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3563
3563
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3564
3564
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3587,7 +3587,7 @@
|
|
|
3587
3587
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3588
3588
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3589
3589
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3590
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3590
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3591
3591
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3592
3592
|
}
|
|
3593
3593
|
},
|
|
@@ -3560,7 +3560,7 @@
|
|
|
3560
3560
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3561
3561
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3562
3562
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3563
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3563
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3564
3564
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3565
3565
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3566
3566
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3589,7 +3589,7 @@
|
|
|
3589
3589
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3590
3590
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3591
3591
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3592
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3592
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3593
3593
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3594
3594
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3595
3595
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3618,7 +3618,7 @@
|
|
|
3618
3618
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3619
3619
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3620
3620
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3621
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3621
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3622
3622
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3623
3623
|
}
|
|
3624
3624
|
},
|
|
@@ -3543,7 +3543,7 @@
|
|
|
3543
3543
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3544
3544
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3545
3545
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3546
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3546
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3547
3547
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3548
3548
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3549
3549
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3572,7 +3572,7 @@
|
|
|
3572
3572
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3573
3573
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3574
3574
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3575
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3575
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3576
3576
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3577
3577
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3578
3578
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3601,7 +3601,7 @@
|
|
|
3601
3601
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3602
3602
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3603
3603
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3604
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3604
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3605
3605
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3606
3606
|
}
|
|
3607
3607
|
},
|
|
@@ -3516,7 +3516,7 @@
|
|
|
3516
3516
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3517
3517
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3518
3518
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3519
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3519
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3520
3520
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3521
3521
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3522
3522
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3545,7 +3545,7 @@
|
|
|
3545
3545
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3546
3546
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3547
3547
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3548
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3548
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3549
3549
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3550
3550
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3551
3551
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3574,7 +3574,7 @@
|
|
|
3574
3574
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3575
3575
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3576
3576
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3577
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3577
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3578
3578
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3579
3579
|
}
|
|
3580
3580
|
},
|
|
@@ -3568,7 +3568,7 @@
|
|
|
3568
3568
|
"--sectiondivider-lg-description": "--text-alternate",
|
|
3569
3569
|
"--sectiondivider-lg-eyebrow": "--text-brand",
|
|
3570
3570
|
"--sectiondivider-lg-border": "--color-transparent",
|
|
3571
|
-
"--sectiondivider-lg-title-outline-color": "
|
|
3571
|
+
"--sectiondivider-lg-title-outline-color": "transparent",
|
|
3572
3572
|
"--sectiondivider-lg-hairline-color": "--border-brand-medium",
|
|
3573
3573
|
"--sectiondivider-md-title-font-family": "--font-display",
|
|
3574
3574
|
"--sectiondivider-md-title-font-weight": "--font-weight-bold",
|
|
@@ -3597,7 +3597,7 @@
|
|
|
3597
3597
|
"--sectiondivider-md-description": "--text-secondary",
|
|
3598
3598
|
"--sectiondivider-md-eyebrow": "--text-tertiary",
|
|
3599
3599
|
"--sectiondivider-md-border": "--color-transparent",
|
|
3600
|
-
"--sectiondivider-md-title-outline-color": "
|
|
3600
|
+
"--sectiondivider-md-title-outline-color": "transparent",
|
|
3601
3601
|
"--sectiondivider-md-hairline-color": "--border-brand-medium",
|
|
3602
3602
|
"--sectiondivider-sm-title-font-family": "--font-display",
|
|
3603
3603
|
"--sectiondivider-sm-title-font-weight": "--font-weight-medium",
|
|
@@ -3626,7 +3626,7 @@
|
|
|
3626
3626
|
"--sectiondivider-sm-description": "--text-secondary",
|
|
3627
3627
|
"--sectiondivider-sm-eyebrow": "--text-tertiary",
|
|
3628
3628
|
"--sectiondivider-sm-border": "--color-transparent",
|
|
3629
|
-
"--sectiondivider-sm-title-outline-color": "
|
|
3629
|
+
"--sectiondivider-sm-title-outline-color": "transparent",
|
|
3630
3630
|
"--sectiondivider-sm-hairline-color": "color-mix(in srgb, var(--border-brand-medium) 50%, transparent)"
|
|
3631
3631
|
}
|
|
3632
3632
|
},
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
icon?: string;
|
|
4
4
|
iconColor?: string;
|
|
5
5
|
title?: string;
|
|
6
|
+
/** `bare` drops the header. The frame and body keep every token the default
|
|
7
|
+
variant uses, so padding, stroke and fill stay editable. */
|
|
8
|
+
variant?: 'default' | 'bare';
|
|
6
9
|
size?: 'default' | 'compact';
|
|
7
10
|
/** false → the card stops pinning body typography so the consumer fully owns slotted content's styling. */
|
|
8
11
|
prose?: boolean;
|
|
@@ -20,6 +23,7 @@
|
|
|
20
23
|
icon = '',
|
|
21
24
|
iconColor = 'var(--text-secondary)',
|
|
22
25
|
title = '',
|
|
26
|
+
variant = 'default',
|
|
23
27
|
size = 'default',
|
|
24
28
|
prose = true,
|
|
25
29
|
flush = false,
|
|
@@ -35,16 +39,25 @@
|
|
|
35
39
|
let hoverShadow = $derived(
|
|
36
40
|
hover === undefined ? undefined : hover ? 'var(--card-hover-shadow)' : 'var(--card-default-shadow)',
|
|
37
41
|
);
|
|
42
|
+
|
|
43
|
+
let showHeader = $derived(variant !== 'bare' && Boolean(icon || title));
|
|
44
|
+
|
|
45
|
+
$effect(() => {
|
|
46
|
+
if (import.meta.env.DEV && variant === 'default' && !icon && !title) {
|
|
47
|
+
console.warn('[live-tokens] <Card> has no icon or title. Use variant="bare" to declare a headerless card.');
|
|
48
|
+
}
|
|
49
|
+
});
|
|
38
50
|
</script>
|
|
39
51
|
|
|
40
52
|
<div
|
|
41
53
|
class="card {className}"
|
|
54
|
+
class:bare={variant === 'bare'}
|
|
42
55
|
class:compact={size === 'compact'}
|
|
43
56
|
style:--card-color={iconColor}
|
|
44
57
|
style:--card-hover-border-active={hoverBorder}
|
|
45
58
|
style:--card-hover-shadow-active={hoverShadow}
|
|
46
59
|
>
|
|
47
|
-
{#if
|
|
60
|
+
{#if showHeader}
|
|
48
61
|
<div class="card-header">
|
|
49
62
|
{#if icon}
|
|
50
63
|
<i class="{icon} card-icon"></i>
|
|
@@ -68,17 +81,22 @@
|
|
|
68
81
|
--card-default-border: var(--border-neutral);
|
|
69
82
|
--card-default-border-width: var(--border-width-1);
|
|
70
83
|
--card-default-radius: var(--radius-lg);
|
|
84
|
+
/* Every side tracks its base. A declared side always beats the fallback
|
|
85
|
+
themed-padding emits, so naming a literal step here left the base token
|
|
86
|
+
inert: merging split padding back to one value cleared the side aliases
|
|
87
|
+
and the card kept the old geometry. The asymmetry is a themed choice now,
|
|
88
|
+
carried by per-side aliases that override these outright. */
|
|
71
89
|
--card-default-header-padding: var(--space-16);
|
|
72
|
-
--card-default-header-padding-top: var(--
|
|
73
|
-
--card-default-header-padding-right: var(--
|
|
74
|
-
--card-default-header-padding-bottom: var(--
|
|
75
|
-
--card-default-header-padding-left: var(--
|
|
90
|
+
--card-default-header-padding-top: var(--card-default-header-padding);
|
|
91
|
+
--card-default-header-padding-right: var(--card-default-header-padding);
|
|
92
|
+
--card-default-header-padding-bottom: var(--card-default-header-padding);
|
|
93
|
+
--card-default-header-padding-left: var(--card-default-header-padding);
|
|
76
94
|
--card-default-header-gap: var(--space-8);
|
|
77
95
|
--card-default-body-padding: var(--space-16);
|
|
78
|
-
--card-default-body-padding-top: var(--
|
|
79
|
-
--card-default-body-padding-right: var(--
|
|
80
|
-
--card-default-body-padding-bottom: var(--
|
|
81
|
-
--card-default-body-padding-left: var(--
|
|
96
|
+
--card-default-body-padding-top: var(--card-default-body-padding);
|
|
97
|
+
--card-default-body-padding-right: var(--card-default-body-padding);
|
|
98
|
+
--card-default-body-padding-bottom: var(--card-default-body-padding);
|
|
99
|
+
--card-default-body-padding-left: var(--card-default-body-padding);
|
|
82
100
|
--card-default-shadow: var(--shadow-sm);
|
|
83
101
|
--card-default-blur: var(--blur-none);
|
|
84
102
|
--card-default-header-surface: color-mix(in srgb, var(--surface-neutral-lowest) 80%, transparent);
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* animations are hardcoded so token edits don't repaint our chrome. The
|
|
4
4
|
* exceptions are intentional and ARE the demo: the central box's
|
|
5
5
|
* surface/radius/border (set inline), the dropdown (rendered through
|
|
6
|
-
* <MenuSelect>),
|
|
6
|
+
* <MenuSelect>), elevation, which reads from the --shadow-* scale, and the
|
|
7
|
+
* zap colour, which tracks --text-accent so the beam stays on-theme.
|
|
7
8
|
* File is global; keep selectors `ftt-` prefixed.
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
.ftt-stage {
|
|
11
12
|
--ftt-contrast-color: var(--color-white);
|
|
13
|
+
--ftt-zap-color: var(--text-accent);
|
|
12
14
|
--ftt-string-opacity: 0.5;
|
|
13
15
|
position: relative;
|
|
14
16
|
width: 100%;
|
|
@@ -85,7 +87,7 @@
|
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
.ftt-string.ftt-live {
|
|
88
|
-
stroke:
|
|
90
|
+
stroke: var(--ftt-zap-color);
|
|
89
91
|
opacity: 1;
|
|
90
92
|
}
|
|
91
93
|
|
|
@@ -103,18 +105,18 @@
|
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
/* --- Energy ball ---------------------------------------------------------- */
|
|
106
|
-
/*
|
|
107
|
-
trail, not a colour-shifting projectile. */
|
|
108
|
+
/* Shares --ftt-zap-color with `.ftt-string.ftt-live` so the beam reads as a
|
|
109
|
+
continuous trail, not a colour-shifting projectile. */
|
|
108
110
|
.ftt-energy-ball {
|
|
109
111
|
position: absolute;
|
|
110
112
|
width: 0.875rem;
|
|
111
113
|
height: 0.875rem;
|
|
112
114
|
translate: -50% -50%;
|
|
113
115
|
border-radius: 9999px;
|
|
114
|
-
background:
|
|
116
|
+
background: var(--ftt-zap-color);
|
|
115
117
|
box-shadow:
|
|
116
|
-
0 0 8px 2px
|
|
117
|
-
0 0 18px 4px
|
|
118
|
+
0 0 8px 2px var(--ftt-zap-color),
|
|
119
|
+
0 0 18px 4px var(--ftt-zap-color);
|
|
118
120
|
pointer-events: none;
|
|
119
121
|
opacity: 0;
|
|
120
122
|
z-index: 6;
|
|
@@ -233,7 +235,7 @@
|
|
|
233
235
|
z-index: 30;
|
|
234
236
|
}
|
|
235
237
|
.ftt-tag-trigger:focus-visible {
|
|
236
|
-
outline: 2px solid
|
|
238
|
+
outline: 2px solid var(--ftt-zap-color);
|
|
237
239
|
outline-offset: 3px;
|
|
238
240
|
border-radius: 9999px;
|
|
239
241
|
}
|
|
@@ -728,7 +728,8 @@
|
|
|
728
728
|
|
|
729
729
|
<style>
|
|
730
730
|
:global(:root) {
|
|
731
|
-
/* thumbnail (closed inline) + animated modal stage
|
|
731
|
+
/* thumbnail (closed inline) + animated modal stage; the fill is the
|
|
732
|
+
thumbnail's alone — the open stage rides the overlay */
|
|
732
733
|
--imagelightbox-tile-surface: var(--color-transparent);
|
|
733
734
|
--imagelightbox-tile-radius: var(--radius-2xl);
|
|
734
735
|
--imagelightbox-tile-border: var(--color-transparent);
|
|
@@ -813,13 +814,15 @@
|
|
|
813
814
|
border: 0;
|
|
814
815
|
}
|
|
815
816
|
|
|
817
|
+
/* No tile fill here: the open stage sits on the near-opaque overlay, which
|
|
818
|
+
already backs transparent art. Painting the fill too would band the scrim
|
|
819
|
+
wherever the image's aspect leaves the stage box unfilled. */
|
|
816
820
|
.image-lightbox-stage {
|
|
817
821
|
position: fixed;
|
|
818
822
|
z-index: var(--z-modal);
|
|
819
823
|
cursor: zoom-out;
|
|
820
824
|
border: var(--imagelightbox-tile-border-width) solid var(--imagelightbox-tile-border);
|
|
821
825
|
border-radius: var(--imagelightbox-tile-radius);
|
|
822
|
-
background: var(--imagelightbox-tile-surface);
|
|
823
826
|
}
|
|
824
827
|
|
|
825
828
|
.image-lightbox-clip {
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
--sectiondivider-lg-description: var(--text-alternate);
|
|
244
244
|
--sectiondivider-lg-eyebrow: var(--text-brand);
|
|
245
245
|
--sectiondivider-lg-border: var(--color-transparent);
|
|
246
|
-
--sectiondivider-lg-title-outline-color: var(--
|
|
246
|
+
--sectiondivider-lg-title-outline-color: var(--color-transparent);
|
|
247
247
|
--sectiondivider-lg-hairline-color: var(--border-brand-medium);
|
|
248
248
|
|
|
249
249
|
/* Medium */
|
|
@@ -274,7 +274,7 @@
|
|
|
274
274
|
--sectiondivider-md-description: var(--text-secondary);
|
|
275
275
|
--sectiondivider-md-eyebrow: var(--text-tertiary);
|
|
276
276
|
--sectiondivider-md-border: var(--color-transparent);
|
|
277
|
-
--sectiondivider-md-title-outline-color: var(--
|
|
277
|
+
--sectiondivider-md-title-outline-color: var(--color-transparent);
|
|
278
278
|
--sectiondivider-md-hairline-color: var(--border-brand-medium);
|
|
279
279
|
|
|
280
280
|
/* Small */
|
|
@@ -305,7 +305,7 @@
|
|
|
305
305
|
--sectiondivider-sm-description: var(--text-secondary);
|
|
306
306
|
--sectiondivider-sm-eyebrow: var(--text-tertiary);
|
|
307
307
|
--sectiondivider-sm-border: var(--color-transparent);
|
|
308
|
-
--sectiondivider-sm-title-outline-color:
|
|
308
|
+
--sectiondivider-sm-title-outline-color: var(--color-transparent);
|
|
309
309
|
--sectiondivider-sm-hairline-color: color-mix(in srgb, var(--border-brand-medium) 50%, transparent);
|
|
310
310
|
|
|
311
311
|
/* Intrinsic defaults. These keys cascade to `:root` via the editor's
|
|
@@ -152,25 +152,27 @@
|
|
|
152
152
|
icon size) all read through these default names, so rebinding them
|
|
153
153
|
here is enough — no per-state small token explosion. Per-side padding
|
|
154
154
|
overrides are rebound too so split-padding edits at small don't leak
|
|
155
|
-
through to default size
|
|
155
|
+
through to default size; each carries the same fallback themed-padding
|
|
156
|
+
emits, so merging the small padding back to one value leaves the base
|
|
157
|
+
token in charge instead of binding to a name nothing sets. Font-weight and color are intentionally NOT
|
|
156
158
|
rebound: weight differences are state-driven (selected = semibold),
|
|
157
159
|
colors are state-driven too. */
|
|
158
160
|
.segmented-control.small {
|
|
159
161
|
--segmentedcontrol-bar-padding: var(--segmentedcontrol-bar-small-padding);
|
|
160
|
-
--segmentedcontrol-bar-padding-top: var(--segmentedcontrol-bar-small-padding-top);
|
|
161
|
-
--segmentedcontrol-bar-padding-right: var(--segmentedcontrol-bar-small-padding-right);
|
|
162
|
-
--segmentedcontrol-bar-padding-bottom: var(--segmentedcontrol-bar-small-padding-bottom);
|
|
163
|
-
--segmentedcontrol-bar-padding-left: var(--segmentedcontrol-bar-small-padding-left);
|
|
162
|
+
--segmentedcontrol-bar-padding-top: var(--segmentedcontrol-bar-small-padding-top, var(--segmentedcontrol-bar-small-padding));
|
|
163
|
+
--segmentedcontrol-bar-padding-right: var(--segmentedcontrol-bar-small-padding-right, var(--segmentedcontrol-bar-small-padding));
|
|
164
|
+
--segmentedcontrol-bar-padding-bottom: var(--segmentedcontrol-bar-small-padding-bottom, var(--segmentedcontrol-bar-small-padding));
|
|
165
|
+
--segmentedcontrol-bar-padding-left: var(--segmentedcontrol-bar-small-padding-left, var(--segmentedcontrol-bar-small-padding));
|
|
164
166
|
--segmentedcontrol-bar-radius: var(--segmentedcontrol-bar-small-radius);
|
|
165
167
|
|
|
166
168
|
--segmentedcontrol-divider-inset: var(--segmentedcontrol-small-divider-inset);
|
|
167
169
|
--segmentedcontrol-divider-thickness: var(--segmentedcontrol-small-divider-thickness);
|
|
168
170
|
|
|
169
171
|
--segmentedcontrol-option-padding: var(--segmentedcontrol-option-small-padding);
|
|
170
|
-
--segmentedcontrol-option-padding-top: var(--segmentedcontrol-option-small-padding-top);
|
|
171
|
-
--segmentedcontrol-option-padding-right: var(--segmentedcontrol-option-small-padding-right);
|
|
172
|
-
--segmentedcontrol-option-padding-bottom: var(--segmentedcontrol-option-small-padding-bottom);
|
|
173
|
-
--segmentedcontrol-option-padding-left: var(--segmentedcontrol-option-small-padding-left);
|
|
172
|
+
--segmentedcontrol-option-padding-top: var(--segmentedcontrol-option-small-padding-top, var(--segmentedcontrol-option-small-padding));
|
|
173
|
+
--segmentedcontrol-option-padding-right: var(--segmentedcontrol-option-small-padding-right, var(--segmentedcontrol-option-small-padding));
|
|
174
|
+
--segmentedcontrol-option-padding-bottom: var(--segmentedcontrol-option-small-padding-bottom, var(--segmentedcontrol-option-small-padding));
|
|
175
|
+
--segmentedcontrol-option-padding-left: var(--segmentedcontrol-option-small-padding-left, var(--segmentedcontrol-option-small-padding));
|
|
174
176
|
--segmentedcontrol-option-gap: var(--segmentedcontrol-option-small-gap);
|
|
175
177
|
|
|
176
178
|
/* Icon size has a single source-of-truth token now; text size/line-height
|
|
@@ -681,11 +681,34 @@
|
|
|
681
681
|
--code-line-height: var(--line-height-normal);
|
|
682
682
|
--code-letter-spacing: var(--letter-spacing-normal);
|
|
683
683
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
684
|
+
/* Editorial — the long-reading role. `md` is the reading step and takes the
|
|
685
|
+
most open leading; every step away from it tightens by one, so a lede or a
|
|
686
|
+
pull quote is not set at reading leading. Sizes stay inside the xs–xl band
|
|
687
|
+
the responsive scale leaves constant, so an article does not resize itself
|
|
688
|
+
between breakpoints. */
|
|
689
|
+
--editorial-xl-font-family: var(--font-editorial);
|
|
690
|
+
--editorial-xl-font-size: var(--font-size-xl);
|
|
691
|
+
--editorial-xl-font-weight: var(--font-weight-normal);
|
|
692
|
+
--editorial-xl-line-height: var(--line-height-tighter);
|
|
693
|
+
--editorial-xl-letter-spacing: var(--letter-spacing-normal);
|
|
694
|
+
|
|
695
|
+
--editorial-lg-font-family: var(--font-editorial);
|
|
696
|
+
--editorial-lg-font-size: var(--font-size-lg);
|
|
697
|
+
--editorial-lg-font-weight: var(--font-weight-normal);
|
|
698
|
+
--editorial-lg-line-height: var(--line-height-tight);
|
|
699
|
+
--editorial-lg-letter-spacing: var(--letter-spacing-normal);
|
|
700
|
+
|
|
701
|
+
--editorial-md-font-family: var(--font-editorial);
|
|
702
|
+
--editorial-md-font-size: var(--font-size-md);
|
|
703
|
+
--editorial-md-font-weight: var(--font-weight-normal);
|
|
704
|
+
--editorial-md-line-height: var(--line-height-normal);
|
|
705
|
+
--editorial-md-letter-spacing: var(--letter-spacing-normal);
|
|
706
|
+
|
|
707
|
+
--editorial-sm-font-family: var(--font-editorial);
|
|
708
|
+
--editorial-sm-font-size: var(--font-size-sm);
|
|
709
|
+
--editorial-sm-font-weight: var(--font-weight-normal);
|
|
710
|
+
--editorial-sm-line-height: var(--line-height-tight);
|
|
711
|
+
--editorial-sm-letter-spacing: var(--letter-spacing-normal);
|
|
689
712
|
|
|
690
713
|
/* Eyebrow — values track the existing .eyebrow class in src/app/Home.svelte. */
|
|
691
714
|
--eyebrow-font-family: var(--font-sans);
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
<div class="home">
|
|
14
14
|
<section class="stub">
|
|
15
|
-
<Card>
|
|
16
|
-
<span class="eyebrow">Your app lives here</span>
|
|
15
|
+
<Card variant="bare">
|
|
17
16
|
<h1>Home</h1>
|
|
18
17
|
<p>
|
|
19
18
|
Replace this with your own content. Edit <code>src/pages/Home.svelte</code>
|
|
@@ -46,15 +45,6 @@
|
|
|
46
45
|
grid-column: 4 / span 6;
|
|
47
46
|
}
|
|
48
47
|
|
|
49
|
-
.eyebrow {
|
|
50
|
-
display: block;
|
|
51
|
-
font-size: var(--font-size-sm);
|
|
52
|
-
font-weight: var(--font-weight-normal);
|
|
53
|
-
text-transform: uppercase;
|
|
54
|
-
color: var(--text-tertiary);
|
|
55
|
-
margin-bottom: var(--space-8);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
48
|
h1 {
|
|
59
49
|
font-family: var(--font-display);
|
|
60
50
|
font-size: var(--font-size-4xl);
|