@fractaldesign/fractalstyler 0.0.0-stage → 0.9.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/LICENSE +19 -0
- package/README.md +123 -2
- package/cli/main.mjs +141 -0
- package/cli/scaffold.mjs +406 -0
- package/data/recipes.json +61 -0
- package/dist/asset.d.ts +3 -0
- package/dist/css/fractalstyler.css +2453 -0
- package/dist/css/fractalstyler.min.css +2 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +6 -0
- package/dist/styles/_00_config.sass +29 -0
- package/dist/styles/_00_fonts.sass +58 -0
- package/dist/styles/_00_tokens.sass +211 -0
- package/dist/styles/_01_base.sass +58 -0
- package/dist/styles/_02_dimensions.sass +70 -0
- package/dist/styles/_03_typography.sass +170 -0
- package/dist/styles/_04_containers.sass +173 -0
- package/dist/styles/_05_layouts.sass +104 -0
- package/dist/styles/_06_shells.sass +135 -0
- package/dist/styles/_07_interactions.sass +212 -0
- package/dist/styles/_08_visuals.sass +136 -0
- package/dist/styles/_09_own.sass +174 -0
- package/dist/styles/colorpacks.sass +119 -0
- package/dist/styles/index.sass +14 -0
- package/dist/styles/themeplates.sass +159 -0
- package/docs/REGISTRY.api.md +477 -0
- package/docs/REGISTRY.md +14 -0
- package/docs/references/configurations-api.md +220 -0
- package/docs/references/configurations.md +258 -0
- package/lint/browser.mjs +79 -0
- package/lint/cli.mjs +212 -0
- package/lint/lib/agent-reporter.mjs +51 -0
- package/lint/lib/fuzzy.mjs +45 -0
- package/lint/lib/registry.mjs +107 -0
- package/lint/lib/sass-linter.mjs +71 -0
- package/lint/lib/svelte-linter.mjs +116 -0
- package/lint/lib/token-linter.mjs +97 -0
- package/package.json +112 -5
- package/registry.json +3999 -0
- package/scripts/class-vocab.js +197 -0
- package/scripts/update-registry.js +934 -0
- package/skills/fractal-styler/references/fractals.md +630 -0
- package/skills/fractal-styler/references/tokens.md +226 -0
- package/skills/fractalstyler/SKILL.md +59 -0
- package/skills/fractalstyler/references/fractals.md +630 -0
- package/skills/fractalstyler/references/tokens.md +226 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! fractalstyler v0.9.0 | MIT | compose in markup */
|
|
2
|
+
:root{--shade-xs: var(--shadow-rim), 0 1px 1px rgb(var(--shadow-color) / 0.14), 0 0px 0px rgb(var(--shadow-color) / 0);--shade-sm: var(--shadow-rim), 0 1px 2px rgb(var(--shadow-color) / 0.12), 0 1px 3px rgb(var(--shadow-color) / 0.02);--shade-md: var(--shadow-rim), 0 2px 4px rgb(var(--shadow-color) / 0.09), 0 3px 6px rgb(var(--shadow-color) / 0.04);--shade-bs: var(--shadow-rim), 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);--shade-lg: var(--shadow-rim), 0 4px 8px rgb(var(--shadow-color) / 0.04), 0 12px 24px rgb(var(--shadow-color) / 0.08);--shade-xl: var(--shadow-rim), 0 6px 12px rgb(var(--shadow-color) / 0.03), 0 20px 36px rgb(var(--shadow-color) / 0.09);--shade-2xl: var(--shadow-rim), 0 8px 16px rgb(var(--shadow-color) / 0.02), 0 28px 48px rgb(var(--shadow-color) / 0.09);--shade-3xl: var(--shadow-rim), 0 12px 24px rgb(var(--shadow-color) / 0.02), 0 36px 64px rgb(var(--shadow-color) / 0.08)}@font-face{font-family:"General Sans";src:url("/fonts/generalsans.woff2") format("woff2");font-weight:300 700;font-style:normal;font-optical-sizing:auto}@font-face{font-family:"Satoshi";src:url("/fonts/satoshi.woff2") format("woff2");font-weight:300 800;font-style:normal;font-optical-sizing:auto}@font-face{font-family:"Stack Sans";src:url("/fonts/stacksans.woff2") format("woff2");font-weight:300 800;font-style:normal;font-optical-sizing:auto}[data-mode=dark]{color-scheme:dark;--white-fixed: #FFFFFF;--black-fixed: #171717;--bg: #101010;--bg-surface: #202021;--bg-panel: #1f1f20;--bg-sunken: #1f1f20;--bg-raised: #3a3a3a;--bg-extra: #111111;--bg-input: #1c1c1d;--bg-button: #171818;--text-primary: #EDF2F7;--text-secondary: #c7c7c7;--text-muted: #7c7c7c;--text-inverse: #7c7c7c;--state-surface:#7c7c7c;--state-hover: #4a4a4b;--state-selected: #666668;--border: #2f2f2f;--border-subtle: #1e1e1f;--border-strong: #7c7c7c;--theme-color: #2F9E44;--theme-color-alt: #36731d;--success: #34D399;--success-hover: #6EE7B7;--warning: #FBBF24;--warning-hover: #FCD34D;--danger: #b21a1a;--danger-hover: #FCA5A5;--info: #60A5FA;--info-hover: #93C5FD;--ring: rgba(16, 185, 129, 0.4);--shadow-color: 0 0 0;--shadow-umbra: rgb(0 0 0 / 0.50);--shadow-rim: inset 0 1px 0 rgba(255, 255, 255, 0.09);--shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14);--shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06);--shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06);--shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);--shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06);--shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06);--shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06);--shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06)}[data-mode=light]{color-scheme:light;--white-fixed: #FFFFFF;--black-fixed: #171717;--bg: #ffffff;--bg-surface: #FBFBF9;--bg-panel: #FBFBF9;--bg-sunken: #F7F6F0;--bg-raised: #F4F4F5;--bg-extra: rgb(247, 248, 249);--bg-input: #f8f9fa;--bg-button: #CED8D3;--text-primary: #262627;--text-secondary: #777777;--text-muted: #a3a4a7;--text-inverse: #ffffff;--state-surface: #F2EFE9;--state-hover: #ECE7DF;--state-selected: #E4DFD5;--border: #d8d8d8;--border-subtle: #eceaea;--border-strong: #cfcfcf;--theme-color: #ff4400;--theme-color-alt: #be2f00;--theme-color-sub: #feb18a;--success: #10B981;--success-hover: #059669;--warning: #F59E0B;--warning-hover: #D97706;--danger: #bf2a2a;--danger-hover: #DC2626;--info: #3B82F6;--info-hover: #2563EB;--ring: rgba(0, 127, 78, 0.35);--shadow-color: 15 13 42;--shadow-rim: transparent;--shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14);--shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06);--shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06);--shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06);--shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06);--shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06);--shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06);--shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06)}:root{--font-sans: "Timeless Sans", sans-serif;--timeless-sans: "Timeless Sans", sans-serif;--timeless-grotesk: "Timeless Grotesk", sans-serif;--text-scaling: 1.25;--text-xs: 0.67rem;--text-sm: 0.75rem;--text-md: 0.875rem;--text-bs: 1rem;--text-lg: calc(var(--text-bs) * var(--text-scaling));--text-xl: calc(var(--text-lg) * var(--text-scaling));--text-2xl: calc(var(--text-xl) * var(--text-scaling));--text-3xl: calc(var(--text-2xl) * var(--text-scaling));--text-4xl: calc(var(--text-3xl) * var(--text-scaling));--text-5xl: calc(var(--text-4xl) * var(--text-scaling));--unit-space: 0.25rem;--space-xs: var(--unit-space);--space-sm: calc(var(--unit-space) * 2);--space-md: calc(var(--unit-space) * 3);--space-bs: calc(var(--unit-space) * 4);--space-lg: calc(var(--unit-space) * 6);--space-xl: calc(var(--unit-space) * 8);--space-2xl: calc(var(--unit-space) * 12);--space-3xl: calc(var(--unit-space) * 16);--radius-xs: 2px;--radius-sm: 4px;--radius-md: 8px;--radius-bs: 16px;--radius-lg: 32px;--radius-full: 9999px;--control-h-sm: 21px;--control-h-bs: 32px;--control-h-lg: 38px;--avatar-size: 32px;--switch-w: 40px;--switch-h: 22px;--switch-thumb: 16px;--transin1: cubic-bezier(0.470, 0.000, 0.745, 0.715);--transin2: cubic-bezier(0.550, 0.055, 0.675, 0.190);--transin3: cubic-bezier(0.755, 0.050, 0.855, 0.060);--transout1: cubic-bezier(0.390, 0.575, 0.565, 1.000);--transout2: cubic-bezier(0.215, 0.610, 0.355, 1.000);--transout3: cubic-bezier(0.230, 1.000, 0.320, 1.000);--speed0: 50ms;--speed1: 90ms;--speed2: 140ms;--speed3: 220ms;--motionin1: var(--speed0) var(--transin1);--motionout1: var(--speed1) var(--transout1);--motionin2: var(--speed2) var(--transin2);--motionout2: var(--speed2) var(--transout2);--motionin3: var(--speed3) var(--transin3);--motionout3: var(--speed3) var(--transout3);--header-height: 64px;--footer-height: 32px;--fit-height: calc(var(--header-height) + var(--footer-height));--prose-clamp: 65ch;--content-clamp: 1600px;--app-inline: var(--space-lg);--card-min: 240px;--height-sm: 16px;--height-md: 20px;--height-bs: 27px;--height-lg: 32px;--sidebar-width: 280px;--sidebar-width-left: 280px;--sidebar-width-right: 280px;--z-sticky: 100;--z-raised: 200;--z-modal: 300;--z-toast: 500;--greenpop1: #70e000;--greenpop2: #00df89;--greenpop3: #69ff97;--greenpop4: #00e676;--orangepop1: #ff7700;--orangepop2: #ff4400;--orangepop3: #ff0055;--orangepop4: #ff5e36;--orangepop5: #ff9966;--orangepop6: #ff9f1c}@font-face{font-family:"Google Sans Flex";src:url("/fonts/GoogleSansFlex.woff2") format("woff2");font-weight:300 800;font-style:normal;font-optical-sizing:auto}@font-face{font-family:"Google Sans Flex";src:url("/fonts/GoogleSansFlex.woff2") format("woff2");font-weight:300 800;font-style:italic;font-optical-sizing:auto}@font-face{font-family:"Google Sans";src:url("/fonts/GoogleSans.woff2") format("woff2");font-weight:400 700;font-style:normal;font-optical-sizing:auto}@font-face{font-family:"Google Sans";src:url("/fonts/GoogleSans-Italic.woff2") format("woff2");font-weight:400 700;font-style:italic;font-optical-sizing:auto}@font-face{font-family:"Google Sans Code";src:url("/fonts/googlesanscode.woff2") format("woff2");font-weight:300 800;font-style:normal;font-optical-sizing:auto}@font-face{font-family:"Timeless Sans";src:url("/fonts/TimelessSansVF.woff2") format("woff2");font-weight:300 800;font-style:normal}@font-face{font-family:"Timeless Sans";src:url("/fonts/TimelessSansVF.woff2") format("woff2");font-weight:300 800;font-style:italic}@font-face{font-family:"Timeless Grotesk";src:url("/fonts/TimelessSansVF.woff2") format("woff2");font-weight:300 800;font-style:normal}@font-face{font-family:"Timeless Grotesk";src:url("/fonts/TimelessSansVF.woff2") format("woff2");font-weight:300 800;font-style:italic}*,*::before,*::after{box-sizing:border-box}*{margin:0}body,html{color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-bs);background:var(--bg-surface);box-sizing:border-box;margin:0;padding:0}img,video,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}p,li,h6,h5,h4,h3,h2,h1{margin:0}p,li{text-wrap:pretty}h1,h2,h3,h4,h5{text-wrap:balance}a{color:inherit;text-decoration:none}.bdr{border:1px solid red}ul,ol{list-style-type:none}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}html.mode-wipe::view-transition-old(root),html.mode-wipe::view-transition-new(root){animation:none}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-bs{gap:var(--space-bs)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.gap-2xl{gap:var(--space-2xl)}.gap-3xl{gap:var(--space-3xl)}.rgap-xs{row-gap:var(--space-xs)}.rgap-sm{row-gap:var(--space-sm)}.rgap-md{row-gap:var(--space-md)}.rgap-bs{row-gap:var(--space-bs)}.rgap-lg{row-gap:var(--space-lg)}.rgap-xl{row-gap:var(--space-xl)}.rgap-2xl{row-gap:var(--space-2xl)}.rgap-3xl{row-gap:var(--space-3xl)}.cgap-xs{column-gap:var(--space-xs)}.cgap-sm{column-gap:var(--space-sm)}.cgap-md{column-gap:var(--space-md)}.cgap-bs{column-gap:var(--space-bs)}.cgap-lg{column-gap:var(--space-lg)}.cgap-xl{column-gap:var(--space-xl)}.cgap-2xl{column-gap:var(--space-2xl)}.cgap-3xl{column-gap:var(--space-3xl)}.pad-xs{padding:var(--space-xs)}.pad-sm{padding:var(--space-sm)}.pad-md{padding:var(--space-md)}.pad-bs{padding:var(--space-bs)}.pad-lg{padding:var(--space-lg)}.pad-xl{padding:var(--space-xl)}.pad-2xl{padding:var(--space-2xl)}.pad-3xl{padding:var(--space-3xl)}.px-xs{padding-inline:var(--space-xs)}.px-sm{padding-inline:var(--space-sm)}.px-md{padding-inline:var(--space-md)}.px-bs{padding-inline:var(--space-bs)}.px-lg{padding-inline:var(--space-lg)}.px-xl{padding-inline:var(--space-xl)}.px-2xl{padding-inline:var(--space-2xl)}.px-3xl{padding-inline:var(--space-3xl)}.py-xs{padding-block:var(--space-xs)}.py-sm{padding-block:var(--space-sm)}.py-md{padding-block:var(--space-md)}.py-bs{padding-block:var(--space-bs)}.py-lg{padding-block:var(--space-lg)}.py-xl{padding-block:var(--space-xl)}.py-2xl{padding-block:var(--space-2xl)}.py-3xl{padding-block:var(--space-3xl)}.pt-xs{padding-top:var(--space-xs)}.pt-sm{padding-top:var(--space-sm)}.pt-md{padding-top:var(--space-md)}.pt-bs{padding-top:var(--space-bs)}.pt-lg{padding-top:var(--space-lg)}.pt-xl{padding-top:var(--space-xl)}.pt-2xl{padding-top:var(--space-2xl)}.pt-3xl{padding-top:var(--space-3xl)}.pr-xs{padding-right:var(--space-xs)}.pr-sm{padding-right:var(--space-sm)}.pr-md{padding-right:var(--space-md)}.pr-bs{padding-right:var(--space-bs)}.pr-lg{padding-right:var(--space-lg)}.pr-xl{padding-right:var(--space-xl)}.pr-2xl{padding-right:var(--space-2xl)}.pr-3xl{padding-right:var(--space-3xl)}.pb-xs{padding-bottom:var(--space-xs)}.pb-sm{padding-bottom:var(--space-sm)}.pb-md{padding-bottom:var(--space-md)}.pb-bs{padding-bottom:var(--space-bs)}.pb-lg{padding-bottom:var(--space-lg)}.pb-xl{padding-bottom:var(--space-xl)}.pb-2xl{padding-bottom:var(--space-2xl)}.pb-3xl{padding-bottom:var(--space-3xl)}.pl-xs{padding-left:var(--space-xs)}.pl-sm{padding-left:var(--space-sm)}.pl-md{padding-left:var(--space-md)}.pl-bs{padding-left:var(--space-bs)}.pl-lg{padding-left:var(--space-lg)}.pl-xl{padding-left:var(--space-xl)}.pl-2xl{padding-left:var(--space-2xl)}.pl-3xl{padding-left:var(--space-3xl)}.mar-xs{margin:var(--space-xs)}.mar-sm{margin:var(--space-sm)}.mar-md{margin:var(--space-md)}.mar-bs{margin:var(--space-bs)}.mar-lg{margin:var(--space-lg)}.mar-xl{margin:var(--space-xl)}.mar-2xl{margin:var(--space-2xl)}.mar-3xl{margin:var(--space-3xl)}.mx-xs{margin-inline:var(--space-xs)}.mx-sm{margin-inline:var(--space-sm)}.mx-md{margin-inline:var(--space-md)}.mx-bs{margin-inline:var(--space-bs)}.mx-lg{margin-inline:var(--space-lg)}.mx-xl{margin-inline:var(--space-xl)}.mx-2xl{margin-inline:var(--space-2xl)}.mx-3xl{margin-inline:var(--space-3xl)}.my-xs{margin-block:var(--space-xs)}.my-sm{margin-block:var(--space-sm)}.my-md{margin-block:var(--space-md)}.my-bs{margin-block:var(--space-bs)}.my-lg{margin-block:var(--space-lg)}.my-xl{margin-block:var(--space-xl)}.my-2xl{margin-block:var(--space-2xl)}.my-3xl{margin-block:var(--space-3xl)}.mt-xs{margin-top:var(--space-xs)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-bs{margin-top:var(--space-bs)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mt-2xl{margin-top:var(--space-2xl)}.mt-3xl{margin-top:var(--space-3xl)}.mr-xs{margin-right:var(--space-xs)}.mr-sm{margin-right:var(--space-sm)}.mr-md{margin-right:var(--space-md)}.mr-bs{margin-right:var(--space-bs)}.mr-lg{margin-right:var(--space-lg)}.mr-xl{margin-right:var(--space-xl)}.mr-2xl{margin-right:var(--space-2xl)}.mr-3xl{margin-right:var(--space-3xl)}.mb-xs{margin-bottom:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-bs{margin-bottom:var(--space-bs)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.mb-2xl{margin-bottom:var(--space-2xl)}.mb-3xl{margin-bottom:var(--space-3xl)}.ml-xs{margin-left:var(--space-xs)}.ml-sm{margin-left:var(--space-sm)}.ml-md{margin-left:var(--space-md)}.ml-bs{margin-left:var(--space-bs)}.ml-lg{margin-left:var(--space-lg)}.ml-xl{margin-left:var(--space-xl)}.ml-2xl{margin-left:var(--space-2xl)}.ml-3xl{margin-left:var(--space-3xl)}.radius-xs{border-radius:var(--radius-xs)}.radius-sm{border-radius:var(--radius-sm)}.radius-md{border-radius:var(--radius-md)}.radius-bs{border-radius:var(--radius-bs)}.radius-lg{border-radius:var(--radius-lg)}.radius-full{border-radius:var(--radius-full)}.wfull{width:100%}.hfull{height:100%}.full{width:100%;height:100%}.minw0{min-width:0}.minh0{min-height:0}.min0{min-width:0;min-height:0}.h-sm{height:var(--height-sm)}.h-md{height:var(--height-md)}.h-bs{height:var(--height-bs)}.h-lg{height:var(--height-lg)}.hfull-vh{min-height:100vh}.hfull-vh-fitted{min-height:var(--fit-height)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-md{font-size:var(--text-md)}.text-bs{font-size:var(--text-bs)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.text-3xl{font-size:var(--text-3xl)}.text-4xl{font-size:var(--text-4xl)}.text-5xl{font-size:var(--text-5xl)}.text-body{font-size:var(--text-bs);line-height:1.5}.text-body-lg{font-size:var(--text-lg);line-height:1.5}.text-body-sm{font-size:var(--text-sm);line-height:1.5}.page-title{font-size:var(--text-3xl);line-height:1.1;font-weight:700;letter-spacing:-0.02rem}.page-desc{font-size:var(--text-lg);line-height:1.2}.page-heading-xl{font-size:var(--text-xl);line-height:1.1;font-weight:600;letter-spacing:-0.03rem}.page-heading-lg{font-size:var(--text-lg);line-height:1.1;font-weight:600;letter-spacing:-0.03rem}.page-heading-bs{font-size:var(--text-bs);line-height:1.1;font-weight:600;letter-spacing:-0.02rem}.card-title{font-size:var(--text-lg);font-weight:600;line-height:1.2}.card-desc{font-size:var(--text-md);line-height:1.2}.breadcrumb-link,.breadcrumb-spacer{color:var(--text-muted);font-size:var(--text-xs);text-transform:uppercase}.breadcrumb-link:hover{color:var(--theme-color)}.breadcrumb{display:flex;justify-content:flex-start;margin-left:-0.5rem}.nav-link{font-size:var(--text-md);line-height:1.2}.nav-link-sm{font-size:var(--text-sm);line-height:1.2}.nav-header{font-size:var(--text-sm);line-height:1.1;font-weight:500;padding:var(--space-sm)}.header-nav a{text-transform:uppercase;font-size:var(--text-md);font-weight:500}.header-nav a:hover{color:var(--theme-color)}.lh11{line-height:1.1}.lh12{line-height:1.2}.lh13{line-height:1.3}.lh14{line-height:1.4}.lh15{line-height:1.5}.lh16{line-height:1.6}.ls-tight-bs{letter-spacing:-0.01rem}.ls-tight-lg{letter-spacing:-0.02rem}.ls-tight-xl{letter-spacing:-0.03rem}.ls-wide-bs{letter-spacing:.01rem}.ls-wide-lg{letter-spacing:.02rem}.ls-wide-xl{letter-spacing:.03rem}.weight-300{font-weight:300}.weight-400{font-weight:400}.weight-500{font-weight:500}.weight-600{font-weight:600}.weight-700{font-weight:700}.weight-800{font-weight:800}.tt-u{text-transform:uppercase}.tt-c{text-transform:capitalize}.ta-c{text-align:center}@media(max-width: 1024px){.ta-c.mleft{text-align:left}}.ta-l{text-align:left}.ta-r{text-align:right}@media(max-width: 1024px){.ta-r.mleft{text-align:left}}.mono{font-family:var(--font-mono)}.sans{font-family:var(--font-sans)}.truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.box{display:flex;flex-direction:column}.box.xcenter{align-items:center;text-align:center}.box.xleft{align-items:flex-start;text-align:left}.box.xright{align-items:flex-end;text-align:right}.box.ycenter{justify-content:center}.box.ytop{justify-content:flex-start}.box.ybot{justify-content:flex-end}.box.ybetween{justify-content:space-between}.box.yevenly{justify-content:space-evenly}.box.yaround{justify-content:space-around}.row{display:flex;flex-direction:row}.row.xleft{justify-content:flex-start}.row.xcenter{justify-content:center}.row.xright{justify-content:flex-end}.row.xbetween{justify-content:space-between}.row.xevenly{justify-content:space-evenly}.row.xaround{justify-content:space-around}.row.ycenter{align-items:center}.row.ytop{align-items:flex-start}.row.ybot{align-items:flex-end}.grid{display:grid}.grid.center{place-items:center}.grid.xcenter{justify-items:center;text-align:center}.grid.xleft{justify-items:start;text-align:left}.grid.xright{justify-items:end;text-align:right}.grid.xstretch{justify-items:stretch}.grid.ycenter{align-items:center}.grid.ytop{align-items:start}.grid.ybot{align-items:end}.grid.ystretch{align-items:stretch}.grid.xbetween{justify-content:space-between}.grid.xevenly{justify-content:space-evenly}.grid.xaround{justify-content:space-around}.grid.ybetween{align-content:space-between}.grid.yevenly{align-content:space-evenly}.grid.yaround{align-content:space-around}.wrap{flex-wrap:wrap}.grow{flex:1 1 0%}.shrink-0{flex-shrink:0}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.scroll-y{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.scroll-x{overflow-x:auto;overflow-y:hidden;overscroll-behavior:contain}.card{padding:var(--space-bs);border:1px solid var(--border);background:var(--bg-panel)}.card svg.arrow{color:var(--theme-color);transition:transform var(--speed1) var(--transout1)}.card footer{margin-top:auto}.card[data-shape=modern]{border-radius:var(--radius-sm)}.card:hover svg{transform:translateX(2rem)}.chip{font-size:var(--text-xs);font-weight:500;letter-spacing:.01rem;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md)}.prose-section{display:flex;flex-direction:column;gap:var(--space-lg)}.nav-section{display:flex;flex-direction:column;gap:var(--space-xs)}.page-header{display:flex;flex-direction:column;padding-bottom:var(--space-2xl);gap:var(--space-sm)}.inputs-wrapper{display:flex;gap:var(--space-xs)}.inputs-wrapper label{font-size:var(--text-sm);color:var(--text-muted)}.checkbox-wrapper{display:flex;align-items:center;gap:var(--space-xs)}.checkbox-wrapper span{font-size:var(--text-sm);font-weight:500}.grid-1{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr))}.grid-2{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr))}@media(min-width: 1025px){.grid-2{grid-template-columns:repeat(2, minmax(0, 1fr))}}.grid-3{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr))}@media(min-width: 1025px){.grid-3{grid-template-columns:repeat(3, minmax(0, 1fr))}}.grid-4{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr))}@media(min-width: 1025px){.grid-4{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media(min-width: 1281px){.grid-4{grid-template-columns:repeat(4, minmax(0, 1fr))}}.grid-6{display:grid;grid-template-columns:repeat(1, minmax(0, 1fr))}@media(min-width: 1025px){.grid-6{grid-template-columns:repeat(3, minmax(0, 1fr))}}@media(min-width: 1281px){.grid-6{grid-template-columns:repeat(6, minmax(0, 1fr))}}.cspan-1{grid-column:span 1}.cspan-2{grid-column:span 2}.cspan-3{grid-column:span 3}.cspan-4{grid-column:span 4}.cspan-5{grid-column:span 5}.cspan-6{grid-column:span 6}.cspan-7{grid-column:span 7}.cspan-8{grid-column:span 8}.card-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(min(var(--card-min), 100%), 1fr))}.prose{max-width:var(--prose-clamp);margin-inline:auto;display:flex;flex-direction:column;gap:var(--space-sm)}.prose h1:first-child,.prose h2:first-child,.prose h3:first-child,.prose h4:first-child{margin-top:0}.frame-16-9{aspect-ratio:16 / 9;overflow:hidden;position:relative}.frame-16-9 img,.frame-16-9 video,.frame-16-9 iframe,.frame-16-9 svg{width:100%;height:100%;object-fit:cover}.frame-9-16{aspect-ratio:9 / 16;overflow:hidden;position:relative}.frame-9-16 img,.frame-9-16 video,.frame-9-16 iframe,.frame-9-16 svg{width:100%;height:100%;object-fit:cover}.frame-4-3{aspect-ratio:4 / 3;overflow:hidden;position:relative}.frame-4-3 img,.frame-4-3 video,.frame-4-3 iframe,.frame-4-3 svg{width:100%;height:100%;object-fit:cover}.frame-3-4{aspect-ratio:3 / 4;overflow:hidden;position:relative}.frame-3-4 img,.frame-3-4 video,.frame-3-4 iframe,.frame-3-4 svg{width:100%;height:100%;object-fit:cover}.frame-3-2{aspect-ratio:3 / 2;overflow:hidden;position:relative}.frame-3-2 img,.frame-3-2 video,.frame-3-2 iframe,.frame-3-2 svg{width:100%;height:100%;object-fit:cover}.frame-2-3{aspect-ratio:2 / 3;overflow:hidden;position:relative}.frame-2-3 img,.frame-2-3 video,.frame-2-3 iframe,.frame-2-3 svg{width:100%;height:100%;object-fit:cover}.frame-1-1{aspect-ratio:1 / 1;overflow:hidden;position:relative}.frame-1-1 img,.frame-1-1 video,.frame-1-1 iframe,.frame-1-1 svg{width:100%;height:100%;object-fit:cover}.reel{display:flex;flex-direction:row;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:inline mandatory}.reel>*{flex:0 0 auto;scroll-snap-align:start}.app-shell{display:flex;flex-direction:column;position:relative;min-height:100vh}.app-header{display:flex;flex-direction:row;align-items:center;position:sticky;top:0;z-index:var(--z-sticky);height:var(--header-height);padding-inline:var(--app-inline);background:var(--bg-surface)}.app-header.clamped{width:var(--content-clamp);margin-inline:auto}.app-main{flex:1 1 0%;min-width:0;min-height:calc(100dvh - var(--fit-height));display:flex;flex-direction:row;padding-inline:var(--app-inline)}.app-main.clamped{width:var(--content-clamp);margin-inline:auto}.main-section{flex:1 1 0%;min-width:0}.sidebar-left,.sidebar-right{display:none;flex-shrink:0;position:sticky;top:var(--header-height);height:calc(100dvh - var(--fit-height));overflow-y:auto;padding-block:var(--space-2xl)}.sidebar-left ul,.sidebar-left ol,.sidebar-right ul,.sidebar-right ol{margin-left:0;padding-left:0}.sidebar-left{width:var(--sidebar-width-left)}.sidebar-right{width:var(--sidebar-width-right)}@media(max-width: 1024px){.app-shell.open .sidebar-left{display:block;position:fixed;left:0;z-index:var(--z-modal);height:var(--fit-height)}}@media(min-width: 1025px){.sidebar-left{display:block}}@media(min-width: 1281px){.sidebar-right{display:block}}.app-footer{display:flex;flex-direction:row;align-items:center;padding-inline:var(--app-inline);min-height:var(--footer-height)}.content-section{width:100%;padding:var(--space-2xl) 0}.content-section.null{padding:0 var(--space-bs)}@media(min-width: 769px){.content-section{padding:var(--space-2xl) var(--space-bs)}.content-section.narrow-half{padding:var(--space-2xl) 0;width:640px;margin-inline:auto}.content-section.narrow-wide{padding:var(--space-2xl) 0;width:720px;margin-inline:auto}}@media(min-width: 1025px){.content-section{padding:var(--space-2xl) var(--space-bs)}.content-section.narrow-full{width:640px;margin-inline:auto}.content-section.narrow-half{width:750px;padding-right:25px}.content-section.narrow-wide{width:750px}}@media(min-width: 1281px){.content-section.narrow-full{width:680px}.content-section.narrow-half{width:800px;padding-right:120px}.content-section.narrow-wide{width:1024px}}@media(min-width: 1441px){.content-section.narrow-wide{width:1280px}}.input{display:block;width:100%;height:var(--height-lg);padding-inline:var(--space-bs);font-size:var(--text-md);background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm)}.input:focus-visible{outline:none;border-color:var(--theme-color);box-shadow:0 0 0 2px var(--ring)}.input.small{height:var(--height-bs);font-size:var(--text-sm)}.select{display:block;width:100%;height:var(--height-lg);padding-inline:var(--space-bs);font-size:var(--text-md);background-color:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23697080' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;cursor:pointer}.select:focus-visible{outline:none;border-color:var(--theme-color);box-shadow:0 0 0 2px var(--ring)}.select.small{height:var(--height-bs);font-size:var(--text-sm)}.link{color:var(--theme-color);text-decoration:none;transition:color var(--motionin1)}.link:hover{color:var(--theme-color-alt)}.link-plain{color:var(--text-primary);text-decoration:none;transition:color var(--motionin1)}.link-plain:hover{color:var(--theme-color)}.link-parent{color:var(--text-primary);text-decoration:none}.link-parent .link-title{transition:color var(--motionin1)}.link-parent:hover .link-title{color:var(--theme-color)}a.nav-link{padding:var(--space-sm);border-radius:var(--radius-sm)}a.nav-link:hover{background:var(--state-hover)}button{display:flex;align-items:center;justify-content:center;height:var(--height-bs);font-size:var(--text-md);color:var(--text-primary);text-decoration:none;cursor:pointer;user-select:none;transition:background var(--motionin1),border-color var(--motionin1),color var(--motionin1);padding-inline:var(--space-md)}button:focus-visible{outline:2px solid var(--ring);outline-offset:1px}button:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}button.icon{height:24px;width:24px;border:1px solid rgba(0,0,0,0);background:rgba(0,0,0,0);padding:0}button.icon:hover{background:var(--state-hover)}button.modern{border-radius:var(--space-xs)}button.primary{background:var(--theme-color)}button[data-variant=primary]{background:var(--theme-color);color:var(--white-fixed);border:1px solid var(--theme-color)}button[data-variant=primary]:hover{background:var(--theme-color-alt);border:1px solid var(--theme-color-alt)}button[data-variant=secondary]{background:var(--state-surface);color:var(--text-primary);border:1px solid var(--border-strong)}button[data-variant=secondary]:hover{background:var(--state-hover)}button[data-variant=soft]{background:var(--theme-color-sub);color:var(--white-fixed);border:1px solid var(--theme-color-sub)}button[data-variant=soft]:hover{border:1px solid var(--text-primary);color:var(--text-primary)}button[data-variant=outline]{background:var(--bg);color:var(--text-primary);border:1px solid var(--text-primary)}button[data-variant=outline]:hover{background:var(--state-hover)}button[data-variant=ghost]{background:rgba(0,0,0,0);color:var(--text-primary);border:none}button[data-variant=ghost]:hover{background:var(--state-hover)}button[data-variant=link]{background:rgba(0,0,0,0);color:var(--theme-color);border:none}button[data-variant=link]:hover{text-decoration:underline}button[data-variant=destructive]{background:var(--danger);color:var(--white-fixed);border:1px solid var(--danger)}button[data-variant=destructive]:hover{animation:vibrating 60ms infinite forwards}button[data-shape=modern]{border-radius:var(--radius-sm)}button[data-shape=curved]{border-radius:var(--radius-md)}button[data-shape=round]{border-radius:var(--radius-full)}button[data-size=sm]{height:var(--height-sm);font-size:var(--text-sm)}button[data-size=md]{height:var(--height-md);font-size:var(--text-md)}button[data-size=bs]{height:var(--height-bs);font-size:var(--text-bs)}button[data-size=lg]{height:var(--height-lg);font-size:var(--text-bs)}@keyframes vibrating{0%{transform:scale(0)}50%{transform:scale(1.03)}100%{transform:scale(0)}}a.primary{background:var(--theme-color);font-size:var(--text-lg);color:var(--white-fixed);height:40px;align-items:center;justify-content:center;display:flex;min-width:6rem;box-shadow:var(--shadow-sm);transition:box-shadow var(--motionin1)}a.primary.modern{border-radius:var(--space-xs)}a.primary:hover{box-shadow:var(--shadow-bs)}a.outline{background:rgba(0,0,0,0);font-size:var(--text-lg);color:var(--text-primary);align-items:center;justify-content:center;display:flex;min-width:6rem;height:40px;box-shadow:var(--shadow-sm);border:1px solid var(--text-primary);transition:box-shadow var(--motionin1)}a.outline.modern{border-radius:var(--space-xs)}a.outline:hover{box-shadow:var(--shadow-bs)}.bg{background:var(--bg)}.surface{background:var(--bg-surface)}.panel{background:var(--bg-panel)}.sunken{background:var(--bg-sunken)}.raised{background:var(--bg-raised)}.extra{background:var(--bg-extra)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.text-inverse{color:var(--text-inverse)}.text-white{color:var(--white-fixed)}.text-black{color:var(--black-fixed)}.text-theme{color:var(--theme-color)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-info{color:var(--info)}.bg-success{background:var(--success)}.bg-warning{background:var(--warning)}.bg-danger{background:var(--danger)}.bg-info{background:var(--info)}.border{border:1px solid var(--border)}.border-subtle{border:1px solid var(--border-subtle)}.border-strong{border:1px solid var(--border-strong)}.bt{border-top:1px solid var(--border)}.br{border-right:1px solid var(--border)}.bb{border-bottom:1px solid var(--border)}.bl{border-left:1px solid var(--border)}.bt-str{border-top:1px solid var(--border-strong)}.br-str{border-right:1px solid var(--border-strong)}.bb-str{border-bottom:1px solid var(--border-strong)}.bl-str{border-left:1px solid var(--border-strong)}.bt-sub{border-top:1px solid var(--border-subtle)}.br-sub{border-right:1px solid var(--border-subtle)}.bb-sub{border-bottom:1px solid var(--border-subtle)}.bl-sub{border-left:1px solid var(--border-subtle)}.shadow-xs{box-shadow:var(--shadow-xs)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-bs{box-shadow:var(--shadow-bs)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.shadow-2xl{box-shadow:var(--shadow-2xl)}.shadow-3xl{box-shadow:var(--shadow-3xl)}@media(max-width: 1024px){.hide-mobile{display:none}}@media(min-width: 1025px){.hide-desktop{display:none}}.orange1{color:var(--orangepop1)}.orange2{color:var(--orangepop2)}.orange3{color:var(--orangepop3)}.orange4{color:var(--orangepop4)}.orange5{color:var(--orangepop5)}.orange6{color:var(--orangepop6)}.site-logomotif{height:48px;transform-origin:center center;transition:transform 210ms var(--transin2)}.site-logomotif:hover{transform:scale(1.2)}.logotype{height:28px}.project-circle{border-radius:24px;width:16px;height:16px}.mascot{display:inline-block;position:relative;flex:none;line-height:0;perspective:var(--mascot-persp, 400px)}.mascot-bob,.mascot-tilt{display:block}.mascot-bobs .mascot-bob{animation:mascot-bob 3.6s ease-in-out infinite alternate}.mascot-tilt{position:relative;transform:rotateX(var(--mascot-rx, 0deg)) rotateY(var(--mascot-ry, 0deg));will-change:transform}.mascot-base{display:block;user-select:none;-webkit-user-drag:none}.mascot-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.mascot-mask{mask-type:alpha}.mascot-pupil-l{transform:translate(calc(var(--mascot-plx, 0) * 1px), calc(var(--mascot-ply, 0) * 1px))}.mascot-pupil-r{transform:translate(calc(var(--mascot-prx, 0) * 1px), calc(var(--mascot-pry, 0) * 1px))}.mascot-gloss{opacity:.42;transform:translate(calc(var(--mascot-gx, 400) * 1px), calc(var(--mascot-gy, 400) * 1px))}.mascot-shade{opacity:.55;transform:translate(calc((1024 - var(--mascot-gx, 400)) * 1px), calc((1120 - var(--mascot-gy, 400)) * 1px))}.mascot-blinks .mascot-lid{animation:mascot-blink 5.2s ease-in-out infinite}@keyframes mascot-blink{0%,93%,100%{transform:translateY(0)}96%{transform:translateY(232px)}}@keyframes mascot-bob{from{transform:translateY(0)}to{transform:translateY(-3%)}}@media(prefers-reduced-motion: reduce){.mascot-bobs .mascot-bob,.mascot-blinks .mascot-lid{animation:none}.mascot-tilt{transform:none}}.mascotgl{display:inline-block;position:relative;flex:none;line-height:0}.mascotgl-spacer{display:block}.mascotgl-canvas{position:absolute;left:50%;top:50%;width:160%;height:160%;transform:translate(-50%, -50%);pointer-events:none;opacity:0}.mascotgl-ready{opacity:1}.mascotgl-compact .mascotgl-canvas{width:130%;height:130%}h3,h2,h1{font-weight:600}.hero-name{font-weight:800;font-size:calc(var(--text-5xl)*2);letter-spacing:-0.2rem}.accordion{display:flex;flex-direction:column;gap:var(--space-xs)}.accordion-item{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface)}.accordion-item .accordion-content{display:grid;grid-template-rows:0fr;padding:0;transition:grid-template-rows var(--speed2) var(--transout1)}.accordion-item .accordion-panel{overflow:hidden;min-height:0}.accordion-item.open .accordion-content{grid-template-rows:1fr;padding:var(--space-xs)}.accordion-trigger{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;min-height:var(--control-h-md);padding:var(--space-xs);font-weight:500;font-size:var(--text-sm);text-align:left;background:rgba(0,0,0,0);border:0;cursor:pointer;user-select:none}.accordion-trigger:hover{background:var(--bg-raised)}.accordion-trigger:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
@use 'sass:map'
|
|
2
|
+
|
|
3
|
+
$steps: ('xs' 'sm' 'md' 'bs' 'lg' 'xl' '2xl' '3xl')
|
|
4
|
+
$gap-families: (gap: gap, rgap: row-gap, cgap: column-gap)
|
|
5
|
+
$pad-families: (pad: padding, px: padding-inline, py: padding-block, pt: padding-top, pr: padding-right, pb: padding-bottom, pl: padding-left)
|
|
6
|
+
$mar-families: (mar: margin, mx: margin-inline, my: margin-block, mt: margin-top, mr: margin-right, mb: margin-bottom, ml: margin-left)
|
|
7
|
+
$frame-ratios: ('16-9': '16 / 9', '9-16': '9 / 16', '4-3': '4 / 3', '3-4': '3 / 4', '3-2': '3 / 2', '2-3': '2 / 3', '1-1': '1 / 1')
|
|
8
|
+
$breakpoints: (md: 768px, bs: 1024px, lg: 1280px)
|
|
9
|
+
|
|
10
|
+
// Step index: xs sm md bs lg xl 2xl 3xl
|
|
11
|
+
// Key Alpha (tight): 0.14 0.12 0.09 0.06 0.04 0.03 0.02 0.02
|
|
12
|
+
// Ambient Alpha (wide): 0.00 0.02 0.04 0.06 0.08 0.09 0.09 0.08
|
|
13
|
+
// Key Blur (px): 1 2 4 4 8 12 16 24
|
|
14
|
+
// Ambient Blur (px): 0 3 6 16 24 36 48 64
|
|
15
|
+
|
|
16
|
+
$shadow-specs: (
|
|
17
|
+
'xs': (y1: 1px, b1: 1px, a1: 0.14, y2: 0px, b2: 0px, a2: 0.00),
|
|
18
|
+
'sm': (y1: 1px, b1: 2px, a1: 0.12, y2: 1px, b2: 3px, a2: 0.02),
|
|
19
|
+
'md': (y1: 2px, b1: 4px, a1: 0.09, y2: 3px, b2: 6px, a2: 0.04),
|
|
20
|
+
'bs': (y1: 2px, b1: 4px, a1: 0.06, y2: 6px, b2: 14px, a2: 0.06),
|
|
21
|
+
'lg': (y1: 4px, b1: 8px, a1: 0.04, y2: 12px, b2: 24px, a2: 0.08),
|
|
22
|
+
'xl': (y1: 6px, b1: 12px, a1: 0.03, y2: 20px, b2: 36px, a2: 0.09),
|
|
23
|
+
'2xl': (y1: 8px, b1: 16px, a1: 0.02, y2: 28px, b2: 48px, a2: 0.09),
|
|
24
|
+
'3xl': (y1: 12px, b1: 24px, a1: 0.02, y2: 36px, b2: 64px, a2: 0.08)
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
:root
|
|
28
|
+
@each $step, $val in $shadow-specs
|
|
29
|
+
--shade-#{$step}: var(--shadow-rim), 0 #{map.get($val, y1)} #{map.get($val, b1)} rgb(var(--shadow-color) / #{map.get($val, a1)}), 0 #{map.get($val, y2)} #{map.get($val, b2)} rgb(var(--shadow-color) / #{map.get($val, a2)})
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
@font-face
|
|
2
|
+
font-family: 'Google Sans Flex'
|
|
3
|
+
src: url('/fonts/GoogleSansFlex.woff2') format('woff2')
|
|
4
|
+
font-weight: 300 800
|
|
5
|
+
font-style: normal
|
|
6
|
+
font-optical-sizing: auto
|
|
7
|
+
|
|
8
|
+
@font-face
|
|
9
|
+
font-family: 'Google Sans Flex'
|
|
10
|
+
src: url('/fonts/GoogleSansFlex.woff2') format('woff2')
|
|
11
|
+
font-weight: 300 800
|
|
12
|
+
font-style: italic
|
|
13
|
+
font-optical-sizing: auto
|
|
14
|
+
|
|
15
|
+
@font-face
|
|
16
|
+
font-family: 'Google Sans'
|
|
17
|
+
src: url('/fonts/GoogleSans.woff2') format('woff2')
|
|
18
|
+
font-weight: 400 700
|
|
19
|
+
font-style: normal
|
|
20
|
+
font-optical-sizing: auto
|
|
21
|
+
|
|
22
|
+
@font-face
|
|
23
|
+
font-family: 'Google Sans'
|
|
24
|
+
src: url('/fonts/GoogleSans-Italic.woff2') format('woff2')
|
|
25
|
+
font-weight: 400 700
|
|
26
|
+
font-style: italic
|
|
27
|
+
font-optical-sizing: auto
|
|
28
|
+
|
|
29
|
+
@font-face
|
|
30
|
+
font-family: 'Google Sans Code'
|
|
31
|
+
src: url('/fonts/googlesanscode.woff2') format('woff2')
|
|
32
|
+
font-weight: 300 800
|
|
33
|
+
font-style: normal
|
|
34
|
+
font-optical-sizing: auto
|
|
35
|
+
|
|
36
|
+
@font-face
|
|
37
|
+
font-family: 'Timeless Sans'
|
|
38
|
+
src: url('/fonts/TimelessSansVF.woff2') format('woff2')
|
|
39
|
+
font-weight: 300 800
|
|
40
|
+
font-style: normal
|
|
41
|
+
|
|
42
|
+
@font-face
|
|
43
|
+
font-family: 'Timeless Sans'
|
|
44
|
+
src: url('/fonts/TimelessSansVF.woff2') format('woff2')
|
|
45
|
+
font-weight: 300 800
|
|
46
|
+
font-style: italic
|
|
47
|
+
|
|
48
|
+
@font-face
|
|
49
|
+
font-family: 'Timeless Grotesk'
|
|
50
|
+
src: url('/fonts/TimelessSansVF.woff2') format('woff2')
|
|
51
|
+
font-weight: 300 800
|
|
52
|
+
font-style: normal
|
|
53
|
+
|
|
54
|
+
@font-face
|
|
55
|
+
font-family: 'Timeless Grotesk'
|
|
56
|
+
src: url('/fonts/TimelessSansVF.woff2') format('woff2')
|
|
57
|
+
font-weight: 300 800
|
|
58
|
+
font-style: italic
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
@font-face
|
|
2
|
+
font-family: 'General Sans'
|
|
3
|
+
src: url('/fonts/generalsans.woff2') format('woff2')
|
|
4
|
+
font-weight: 300 700
|
|
5
|
+
font-style: normal
|
|
6
|
+
font-optical-sizing: auto
|
|
7
|
+
|
|
8
|
+
@font-face
|
|
9
|
+
font-family: 'Satoshi'
|
|
10
|
+
src: url('/fonts/satoshi.woff2') format('woff2')
|
|
11
|
+
font-weight: 300 800
|
|
12
|
+
font-style: normal
|
|
13
|
+
font-optical-sizing: auto
|
|
14
|
+
|
|
15
|
+
@font-face
|
|
16
|
+
font-family: 'Stack Sans'
|
|
17
|
+
src: url('/fonts/stacksans.woff2') format('woff2')
|
|
18
|
+
font-weight: 300 800
|
|
19
|
+
font-style: normal
|
|
20
|
+
font-optical-sizing: auto
|
|
21
|
+
|
|
22
|
+
=light-theme-tokens
|
|
23
|
+
color-scheme: light
|
|
24
|
+
--white-fixed: #FFFFFF
|
|
25
|
+
--black-fixed: #171717
|
|
26
|
+
--bg: #ffffff
|
|
27
|
+
--bg-surface: #FBFBF9
|
|
28
|
+
--bg-panel: #FBFBF9
|
|
29
|
+
--bg-sunken: #F7F6F0
|
|
30
|
+
--bg-raised: #F4F4F5
|
|
31
|
+
--bg-extra: rgb(247, 248, 249)
|
|
32
|
+
--bg-input: #f8f9fa
|
|
33
|
+
--bg-button: #CED8D3
|
|
34
|
+
--text-primary: #262627
|
|
35
|
+
--text-secondary: #777777
|
|
36
|
+
--text-muted: #a3a4a7
|
|
37
|
+
--text-inverse: #ffffff
|
|
38
|
+
--state-surface: #F2EFE9
|
|
39
|
+
--state-hover: #ECE7DF
|
|
40
|
+
--state-selected: #E4DFD5
|
|
41
|
+
--border: #d8d8d8
|
|
42
|
+
--border-subtle: #eceaea
|
|
43
|
+
--border-strong: #cfcfcf
|
|
44
|
+
--theme-color: #ff4400
|
|
45
|
+
--theme-color-alt: #be2f00
|
|
46
|
+
--theme-color-sub: #feb18a
|
|
47
|
+
--success: #10B981
|
|
48
|
+
--success-hover: #059669
|
|
49
|
+
--warning: #F59E0B
|
|
50
|
+
--warning-hover: #D97706
|
|
51
|
+
--danger: #bf2a2a
|
|
52
|
+
--danger-hover: #DC2626
|
|
53
|
+
--info: #3B82F6
|
|
54
|
+
--info-hover: #2563EB
|
|
55
|
+
--ring: rgba(0, 127, 78, 0.35)
|
|
56
|
+
--shadow-color: 15 13 42
|
|
57
|
+
--shadow-rim: transparent
|
|
58
|
+
--shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14)
|
|
59
|
+
--shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06)
|
|
60
|
+
--shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06)
|
|
61
|
+
--shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06)
|
|
62
|
+
--shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06)
|
|
63
|
+
--shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06)
|
|
64
|
+
--shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06)
|
|
65
|
+
--shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06)
|
|
66
|
+
|
|
67
|
+
=dark-theme-tokens
|
|
68
|
+
color-scheme: dark
|
|
69
|
+
--white-fixed: #FFFFFF
|
|
70
|
+
--black-fixed: #171717
|
|
71
|
+
--bg: #101010
|
|
72
|
+
--bg-surface: #202021
|
|
73
|
+
--bg-panel: #1f1f20
|
|
74
|
+
--bg-sunken: #1f1f20
|
|
75
|
+
--bg-raised: #3a3a3a
|
|
76
|
+
--bg-extra: #111111
|
|
77
|
+
--bg-input: #1c1c1d
|
|
78
|
+
--bg-button: #171818
|
|
79
|
+
--text-primary: #EDF2F7
|
|
80
|
+
--text-secondary: #c7c7c7
|
|
81
|
+
--text-muted: #7c7c7c
|
|
82
|
+
--text-inverse: #7c7c7c
|
|
83
|
+
--state-surface:#7c7c7c
|
|
84
|
+
--state-hover: #4a4a4b
|
|
85
|
+
--state-selected: #666668
|
|
86
|
+
--border: #2f2f2f
|
|
87
|
+
--border-subtle: #1e1e1f
|
|
88
|
+
--border-strong: #7c7c7c
|
|
89
|
+
--theme-color: #2F9E44
|
|
90
|
+
--theme-color-alt: #36731d
|
|
91
|
+
--success: #34D399
|
|
92
|
+
--success-hover: #6EE7B7
|
|
93
|
+
--warning: #FBBF24
|
|
94
|
+
--warning-hover: #FCD34D
|
|
95
|
+
--danger: #b21a1a
|
|
96
|
+
--danger-hover: #FCA5A5
|
|
97
|
+
--info: #60A5FA
|
|
98
|
+
--info-hover: #93C5FD
|
|
99
|
+
--ring: rgba(16, 185, 129, 0.4)
|
|
100
|
+
--shadow-color: 0 0 0
|
|
101
|
+
--shadow-umbra: rgb(0 0 0 / 0.50)
|
|
102
|
+
--shadow-rim: inset 0 1px 0 rgba(255, 255, 255, 0.09)
|
|
103
|
+
--shadow-xs: 0 1px 2px rgb(var(--shadow-color) / 0.14)
|
|
104
|
+
--shadow-sm: 0 1px 2px rgb(var(--shadow-color) / 0.10), 0 2px 4px rgb(var(--shadow-color) / 0.06)
|
|
105
|
+
--shadow-md: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 8px 16px rgb(var(--shadow-color) / 0.06)
|
|
106
|
+
--shadow-bs: 0 2px 4px rgb(var(--shadow-color) / 0.06), 0 6px 14px rgb(var(--shadow-color) / 0.06)
|
|
107
|
+
--shadow-lg: 0 4px 8px rgb(var(--shadow-color) / 0.06), 0 12px 24px rgb(var(--shadow-color) / 0.06)
|
|
108
|
+
--shadow-xl: 0 8px 16px rgb(var(--shadow-color) / 0.06), 0 20px 36px rgb(var(--shadow-color) / 0.06)
|
|
109
|
+
--shadow-2xl: 0 12px 24px rgb(var(--shadow-color) / 0.06), 0 28px 48px rgb(var(--shadow-color) / 0.06)
|
|
110
|
+
--shadow-3xl: 0 16px 32px rgb(var(--shadow-color) / 0.06), 0 36px 64px rgb(var(--shadow-color) / 0.06)
|
|
111
|
+
|
|
112
|
+
[data-mode='dark']
|
|
113
|
+
+dark-theme-tokens
|
|
114
|
+
|
|
115
|
+
[data-mode='light']
|
|
116
|
+
+light-theme-tokens
|
|
117
|
+
|
|
118
|
+
:root
|
|
119
|
+
--font-sans: "Timeless Sans", sans-serif
|
|
120
|
+
--timeless-sans: "Timeless Sans", sans-serif
|
|
121
|
+
--timeless-grotesk: "Timeless Grotesk", sans-serif
|
|
122
|
+
--text-scaling: 1.25
|
|
123
|
+
--text-xs: 0.67rem
|
|
124
|
+
--text-sm: 0.75rem
|
|
125
|
+
--text-md: 0.875rem
|
|
126
|
+
--text-bs: 1rem
|
|
127
|
+
--text-lg: calc(var(--text-bs) * var(--text-scaling))
|
|
128
|
+
--text-xl: calc(var(--text-lg) * var(--text-scaling))
|
|
129
|
+
--text-2xl: calc(var(--text-xl) * var(--text-scaling))
|
|
130
|
+
--text-3xl: calc(var(--text-2xl) * var(--text-scaling))
|
|
131
|
+
--text-4xl: calc(var(--text-3xl) * var(--text-scaling))
|
|
132
|
+
--text-5xl: calc(var(--text-4xl) * var(--text-scaling))
|
|
133
|
+
|
|
134
|
+
--unit-space: 0.25rem
|
|
135
|
+
--space-xs: var(--unit-space)
|
|
136
|
+
--space-sm: calc(var(--unit-space) * 2)
|
|
137
|
+
--space-md: calc(var(--unit-space) * 3)
|
|
138
|
+
--space-bs: calc(var(--unit-space) * 4)
|
|
139
|
+
--space-lg: calc(var(--unit-space) * 6)
|
|
140
|
+
--space-xl: calc(var(--unit-space) * 8)
|
|
141
|
+
--space-2xl: calc(var(--unit-space) * 12)
|
|
142
|
+
--space-3xl: calc(var(--unit-space) * 16)
|
|
143
|
+
|
|
144
|
+
--radius-xs: 2px
|
|
145
|
+
--radius-sm: 4px
|
|
146
|
+
--radius-md: 8px
|
|
147
|
+
--radius-bs: 16px
|
|
148
|
+
--radius-lg: 32px
|
|
149
|
+
--radius-full: 9999px
|
|
150
|
+
|
|
151
|
+
--control-h-sm: 21px
|
|
152
|
+
--control-h-bs: 32px
|
|
153
|
+
--control-h-lg: 38px
|
|
154
|
+
|
|
155
|
+
// Avatar and switch channels. The switch numbers are load-bearing: the thumb
|
|
156
|
+
// must travel exactly the 18px hard-coded on .switch-track.checked, and the
|
|
157
|
+
// track is border-box (1px border + 2px padding), so w = 16 + 18 + 4 + 2.
|
|
158
|
+
--avatar-size: 32px
|
|
159
|
+
--switch-w: 40px
|
|
160
|
+
--switch-h: 22px
|
|
161
|
+
--switch-thumb: 16px
|
|
162
|
+
|
|
163
|
+
// Motion language (registry v1) — durations and easings all compositions read.
|
|
164
|
+
--transin1: cubic-bezier(0.470, 0.000, 0.745, 0.715)
|
|
165
|
+
--transin2: cubic-bezier(0.550, 0.055, 0.675, 0.190)
|
|
166
|
+
--transin3: cubic-bezier(0.755, 0.050, 0.855, 0.060)
|
|
167
|
+
--transout1: cubic-bezier(0.390, 0.575, 0.565, 1.000)
|
|
168
|
+
--transout2: cubic-bezier(0.215, 0.610, 0.355, 1.000)
|
|
169
|
+
--transout3: cubic-bezier(0.230, 1.000, 0.320, 1.000)
|
|
170
|
+
--speed0: 50ms
|
|
171
|
+
--speed1: 90ms
|
|
172
|
+
--speed2: 140ms
|
|
173
|
+
--speed3: 220ms
|
|
174
|
+
--motionin1: var(--speed0) var(--transin1)
|
|
175
|
+
--motionout1: var(--speed1) var(--transout1)
|
|
176
|
+
--motionin2: var(--speed2) var(--transin2)
|
|
177
|
+
--motionout2: var(--speed2) var(--transout2)
|
|
178
|
+
--motionin3: var(--speed3) var(--transin3)
|
|
179
|
+
--motionout3: var(--speed3) var(--transout3)
|
|
180
|
+
|
|
181
|
+
--header-height: 64px
|
|
182
|
+
--footer-height: 32px
|
|
183
|
+
--fit-height: calc(var(--header-height) + var(--footer-height))
|
|
184
|
+
--prose-clamp: 65ch
|
|
185
|
+
--content-clamp: 1600px
|
|
186
|
+
--app-inline: var(--space-lg)
|
|
187
|
+
--card-min: 240px
|
|
188
|
+
--height-sm: 16px
|
|
189
|
+
--height-md: 20px
|
|
190
|
+
--height-bs: 27px
|
|
191
|
+
--height-lg: 32px
|
|
192
|
+
|
|
193
|
+
--sidebar-width: 280px
|
|
194
|
+
--sidebar-width-left: 280px
|
|
195
|
+
--sidebar-width-right: 280px
|
|
196
|
+
--z-sticky: 100
|
|
197
|
+
--z-raised: 200
|
|
198
|
+
--z-modal: 300
|
|
199
|
+
--z-toast: 500
|
|
200
|
+
|
|
201
|
+
--greenpop1: #70e000
|
|
202
|
+
--greenpop2: #00df89
|
|
203
|
+
--greenpop3: #69ff97
|
|
204
|
+
--greenpop4: #00e676
|
|
205
|
+
|
|
206
|
+
--orangepop1: #ff7700
|
|
207
|
+
--orangepop2: #ff4400
|
|
208
|
+
--orangepop3: #ff0055
|
|
209
|
+
--orangepop4: #ff5e36
|
|
210
|
+
--orangepop5: #ff9966
|
|
211
|
+
--orangepop6: #ff9f1c
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
*,
|
|
2
|
+
*::before,
|
|
3
|
+
*::after
|
|
4
|
+
box-sizing: border-box
|
|
5
|
+
|
|
6
|
+
*
|
|
7
|
+
margin: 0
|
|
8
|
+
|
|
9
|
+
body, html
|
|
10
|
+
color: var(--text-primary)
|
|
11
|
+
font-family: var(--font-sans)
|
|
12
|
+
font-size: var(--text-bs)
|
|
13
|
+
background: var(--bg-surface)
|
|
14
|
+
box-sizing: border-box
|
|
15
|
+
margin: 0
|
|
16
|
+
padding: 0
|
|
17
|
+
|
|
18
|
+
img,
|
|
19
|
+
video,
|
|
20
|
+
svg
|
|
21
|
+
display: block
|
|
22
|
+
max-width: 100%
|
|
23
|
+
|
|
24
|
+
button,
|
|
25
|
+
input,
|
|
26
|
+
select,
|
|
27
|
+
textarea
|
|
28
|
+
font: inherit
|
|
29
|
+
color: inherit
|
|
30
|
+
|
|
31
|
+
p, li, h6, h5, h4, h3, h2, h1
|
|
32
|
+
margin: 0
|
|
33
|
+
|
|
34
|
+
p, li
|
|
35
|
+
text-wrap: pretty
|
|
36
|
+
|
|
37
|
+
h1, h2, h3, h4, h5
|
|
38
|
+
text-wrap: balance
|
|
39
|
+
|
|
40
|
+
a
|
|
41
|
+
color: inherit
|
|
42
|
+
text-decoration: none
|
|
43
|
+
|
|
44
|
+
//debug class
|
|
45
|
+
.bdr
|
|
46
|
+
border: 1px solid red
|
|
47
|
+
|
|
48
|
+
ul, ol
|
|
49
|
+
list-style-type: none
|
|
50
|
+
|
|
51
|
+
::view-transition-old(root),
|
|
52
|
+
::view-transition-new(root)
|
|
53
|
+
animation: none
|
|
54
|
+
mix-blend-mode: normal
|
|
55
|
+
|
|
56
|
+
html.mode-wipe::view-transition-old(root),
|
|
57
|
+
html.mode-wipe::view-transition-new(root)
|
|
58
|
+
animation: none
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// dimensions — L1. The loop-generated half of the registry: 17 space families,
|
|
3
|
+
// radius, size, viewport heights, shadows — each class in three bands (base,
|
|
4
|
+
// -mob, -desk) per Contract 7. Presets are token-routed; literals are px.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
|
|
7
|
+
@use 'sass:string'
|
|
8
|
+
@use 'sass:list'
|
|
9
|
+
@use 'sass:math'
|
|
10
|
+
@use '00_config' as *
|
|
11
|
+
@use '00_tokens' as *
|
|
12
|
+
|
|
13
|
+
// --- Base band ---------------------------------------------------------------
|
|
14
|
+
@each $name, $prop in $gap-families
|
|
15
|
+
@each $step in $steps
|
|
16
|
+
.#{$name}-#{$step}
|
|
17
|
+
#{$prop}: var(--space-#{$step})
|
|
18
|
+
|
|
19
|
+
@each $name, $prop in $pad-families
|
|
20
|
+
@each $step in $steps
|
|
21
|
+
.#{$name}-#{$step}
|
|
22
|
+
#{$prop}: var(--space-#{$step})
|
|
23
|
+
|
|
24
|
+
@each $name, $prop in $mar-families
|
|
25
|
+
@each $step in $steps
|
|
26
|
+
.#{$name}-#{$step}
|
|
27
|
+
#{$prop}: var(--space-#{$step})
|
|
28
|
+
|
|
29
|
+
.radius-xs
|
|
30
|
+
border-radius: var(--radius-xs)
|
|
31
|
+
.radius-sm
|
|
32
|
+
border-radius: var(--radius-sm)
|
|
33
|
+
.radius-md
|
|
34
|
+
border-radius: var(--radius-md)
|
|
35
|
+
.radius-bs
|
|
36
|
+
border-radius: var(--radius-bs)
|
|
37
|
+
.radius-lg
|
|
38
|
+
border-radius: var(--radius-lg)
|
|
39
|
+
.radius-full
|
|
40
|
+
border-radius: var(--radius-full)
|
|
41
|
+
|
|
42
|
+
.wfull
|
|
43
|
+
width: 100%
|
|
44
|
+
.hfull
|
|
45
|
+
height: 100%
|
|
46
|
+
.full
|
|
47
|
+
width: 100%
|
|
48
|
+
height: 100%
|
|
49
|
+
.minw0
|
|
50
|
+
min-width: 0
|
|
51
|
+
.minh0
|
|
52
|
+
min-height: 0
|
|
53
|
+
.min0
|
|
54
|
+
min-width: 0
|
|
55
|
+
min-height: 0
|
|
56
|
+
|
|
57
|
+
.h-sm
|
|
58
|
+
height: var(--height-sm)
|
|
59
|
+
.h-md
|
|
60
|
+
height: var(--height-md)
|
|
61
|
+
.h-bs
|
|
62
|
+
height: var(--height-bs)
|
|
63
|
+
.h-lg
|
|
64
|
+
height: var(--height-lg)
|
|
65
|
+
|
|
66
|
+
// Viewport heights
|
|
67
|
+
.hfull-vh
|
|
68
|
+
min-height: 100vh
|
|
69
|
+
.hfull-vh-fitted
|
|
70
|
+
min-height: var(--fit-height)
|