diff --git a/SLASHED-for-WP/admin-app/src/AppOverlay.svelte b/SLASHED-for-WP/admin-app/src/AppOverlay.svelte
index 6dafe662..a8101a3e 100644
--- a/SLASHED-for-WP/admin-app/src/AppOverlay.svelte
+++ b/SLASHED-for-WP/admin-app/src/AppOverlay.svelte
@@ -81,6 +81,7 @@
host.style.position = 'fixed';
host.style.right = '0';
host.style.zIndex = '100000';
+ host.style.pointerEvents = 'auto';
if (isOpen) {
host.style.top = adminBarHeight;
@@ -287,6 +288,7 @@
class="fixed right-0 z-[100000] pointer-events-auto flex flex-col bg-[#0a0a0f] text-slate-200 font-sans shadow-2xl shadow-black/60 border-l border-white/8 transition-transform duration-200 ease-in-out"
class:translate-x-full={!isOpen}
class:translate-x-0={isOpen}
+ style:visibility={isOpen ? undefined : 'hidden'}
style="top: var(--wp-admin--admin-bar--height, 32px); width: {isMobile ? '100vw' : '420px'}; height: calc(100vh - var(--wp-admin--admin-bar--height, 32px));"
aria-hidden={!isOpen}
inert={!isOpen || undefined}
diff --git a/SLASHED-for-WP/assets/admin-app/app.js b/SLASHED-for-WP/assets/admin-app/app.js
index d7081339..d5d1199f 100644
--- a/SLASHED-for-WP/assets/admin-app/app.js
+++ b/SLASHED-for-WP/assets/admin-app/app.js
@@ -1,195 +1,195 @@
-var Kr=Array.isArray,Ni=Array.prototype.indexOf,Ws=Array.prototype.includes,tr=Array.from,Fi=Object.defineProperty,mo=Object.getOwnPropertyDescriptor,ol=Object.getOwnPropertyDescriptors,ji=Object.prototype,Gi=Array.prototype,Wr=Object.getPrototypeOf,fn=Object.isExtensible;function is(a){return typeof a=="function"}const Hi=()=>{};function qi(a){return a()}function Lr(a){for(var e=0;e Configure every SLASHED design token visually. Changes appear live in the preview. Configure every SLASHED design token visually. Changes appear live in the preview. OKLCH source values — all 200+ derived color steps are computed automatically. Pins brand colors (primary, secondary, tertiary, action) to a fixed OKLCH
+ */function Fn(a,e,o){const n=o*Math.PI/180,l=a,i=e*Math.cos(n),c=e*Math.sin(n),d=l+.3963377774*i+.2158037573*c,p=l-.1055613458*i-.0638541728*c,m=l-.0894841775*i-1.291485548*c,h=d*d*d,v=p*p*p,y=m*m*m,k=4.0767416621*h-3.3077115913*v+.2309699292*y,w=-1.2684380046*h+2.6097574011*v-.3413193965*y,E=-.0041960863*h-.7034186147*v+1.707614701*y,B=_=>_<=.0031308?12.92*_:1.055*Math.pow(_,1/2.4)-.055,U=Math.max(0,Math.min(255,Math.round(B(k)*255))),P=Math.max(0,Math.min(255,Math.round(B(w)*255))),S=Math.max(0,Math.min(255,Math.round(B(E)*255)));return[U,P,S]}function Bo(a,e,o){const n=l=>{const i=l/255;return i<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)};return .2126*n(a)+.7152*n(e)+.0722*n(o)}function qs(a,e){const o=Math.max(a,e),n=Math.min(a,e);return(o+.05)/(n+.05)}function Vs(a){const e=a.match(/oklch\(\s*([\d.%]+)\s+([\d.]+)\s+([\d.]+)/i);if(e){const o=e[1],n=o.endsWith("%")?parseFloat(o)/100:parseFloat(o),l=parseFloat(e[2]),i=parseFloat(e[3]);return{l:n,c:l,h:i,valid:!0}}return{l:.5,c:.15,h:200,valid:!1}}function Ks(a,e,o){return`oklch(${a.toFixed(3)} ${e.toFixed(3)} ${Math.round(o)})`}var vu=g(' '),hu=g(' OKLCH source values — all 200+ derived color steps are computed automatically. Pins brand colors (primary, secondary, tertiary, action) to a fixed OKLCH
lightness — useful for always-stable sections. Enable on canvas to preview. Controls whether text on brand-coloured surfaces is light or dark. Controls how much color is mixed into each palette step. Step 500 is always the source color. Bar height = mix amount · fill = the resolved primary palette swatch at each step Auto-derived from your brand colors. Use the angle/direction and stop
- controls, or edit the raw value for full control. --sf-color-scheme — sets the CSS color-scheme property on the root, controlling browser UI (scrollbars, inputs) and default background. Direct color overrides for tokens the framework auto-derives. Use for edge cases. All tokens tab — override individual color steps (50–950), semantic aliases, or surface tokens directly. Named weight tokens. Override if your font uses non-standard axis values. Utopia-style fluid scale. Each endpoint has three values — viewport width,
- base size, and modular ratio. Sizes interpolate fluidly between mobile and desktop. Overriding these propagates to heading sizes that reference them. Per-text-size max-width caps on .sf-text-* elements. Set to none to remove the constraint; use ch units for character-based measures. Advanced OpenType and variable-font axes. Leave as normal unless your font supports these features. The two most-referenced spacing tokens. Referenced by every layout primitive (cluster, grid, stack, bento…). Utopia-style fluid scale — viewport width, base unit and ratio per endpoint.
- The viewport range is shared with the type scale. Offsets position:sticky elements below a fixed header. Defaults to header heights. --sf-frame-ratio — aspect ratio for .sf-frame --sf-reel-item-width — width of each item in a horizontal .sf-reel Override the built-in named aspect ratios used by .sf-ratio-* utilities. Default values for the .sf-bg full-bleed background utility. Drives --sf-color-border--strong, --subtle, --translucent automatically. Warm, cool or brand-tinted shadows. Default uses neutral hue. Which brand color radiates the glow. Defaults to primary. Motion is disabled — duration sliders have no effect while scale is 0. Set absolute ms values to override the fluid scale calculation. One slider sets all five stagger delays (delay-1 through delay-5 are multiples of this base). Customize the named easing tokens used throughout the design system. Default animation-range for scroll-driven animations using the .sf-scroll-timeline utility. Gradient overlay for hero images and media content. Used by the Controls text legibility over images. Applied via SLASHED is a token-first CSS framework. This sample paragraph repeats so you
+ controls, or edit the raw value for full control. --sf-color-scheme — sets the CSS color-scheme property on the root, controlling browser UI (scrollbars, inputs) and default background. Direct color overrides for tokens the framework auto-derives. Use for edge cases. All tokens tab — override individual color steps (50–950), semantic aliases, or surface tokens directly. Named weight tokens. Override if your font uses non-standard axis values. Utopia-style fluid scale. Each endpoint has three values — viewport width,
+ base size, and modular ratio. Sizes interpolate fluidly between mobile and desktop. Overriding these propagates to heading sizes that reference them. Per-text-size max-width caps on .sf-text-* elements. Set to none to remove the constraint; use ch units for character-based measures. Advanced OpenType and variable-font axes. Leave as normal unless your font supports these features. The two most-referenced spacing tokens. Referenced by every layout primitive (cluster, grid, stack, bento…). Utopia-style fluid scale — viewport width, base unit and ratio per endpoint.
+ The viewport range is shared with the type scale. Offsets position:sticky elements below a fixed header. Defaults to header heights. --sf-frame-ratio — aspect ratio for .sf-frame --sf-reel-item-width — width of each item in a horizontal .sf-reel Override the built-in named aspect ratios used by .sf-ratio-* utilities. Default values for the .sf-bg full-bleed background utility. Drives --sf-color-border--strong, --subtle, --translucent automatically. Warm, cool or brand-tinted shadows. Default uses neutral hue. Which brand color radiates the glow. Defaults to primary. Motion is disabled — duration sliders have no effect while scale is 0. Set absolute ms values to override the fluid scale calculation. One slider sets all five stagger delays (delay-1 through delay-5 are multiples of this base). Customize the named easing tokens used throughout the design system. Default animation-range for scroll-driven animations using the .sf-scroll-timeline utility. Gradient overlay for hero images and media content. Used by the Controls text legibility over images. Applied via SLASHED is a token-first CSS framework. This sample paragraph repeats so you
can see exactly how many lines survive the clamp before the ellipsis kicks in.
Drag the slider above and watch the visible line count change in real time.
- Extra filler text keeps the block taller than the clamp at every setting. --sf-aspect — default ratio for .sf-aspect / .sf-frame --sf-scrim-color / --sf-scrim-direction — darkening gradient for .sf-scrim Spacing tokens for .sf-prose. Defaults track the space scale; sliders write rem overrides. --sf-content-intrinsic-size — placeholder size used with content-visibility: auto to improve scroll performance on tall pages. Tokens for the framework's utility macros — .sf-prose, .sf-flow, .sf-line-clamp, .sf-aspect, .sf-scroll-shadow and .sf-scrim. All tokens tab — edit every prose, scrim and surface token directly. Minimum interactive area — ensures accessibility on touch devices. Override individual z-index tokens in the "All tokens" tab. Select this text to preview the selection color. Controls the height / tap-target of all sized components (buttons, inputs, badges). A sample link with the current underline settings. Icon scale tokens used by .sf-icon-* utilities. Values are in em units relative to surrounding text. Default values for .sf-media images and replaced elements. Default to the device's env(safe-area-inset-*). Override only if you need fixed padding regardless of notch/home-indicator. Applied inside @media print via optional/print.css. Boolean CSS custom property flags (0 = off, 1 = on). Components toggle these to activate state-specific styles.
+ Extra filler text keeps the block taller than the clamp at every setting. --sf-aspect — default ratio for .sf-aspect / .sf-frame --sf-scrim-color / --sf-scrim-direction — darkening gradient for .sf-scrim Spacing tokens for .sf-prose. Defaults track the space scale; sliders write rem overrides. --sf-content-intrinsic-size — placeholder size used with content-visibility: auto to improve scroll performance on tall pages. Tokens for the framework's utility macros — .sf-prose, .sf-flow, .sf-line-clamp, .sf-aspect, .sf-scroll-shadow and .sf-scrim. All tokens tab — edit every prose, scrim and surface token directly. Minimum interactive area — ensures accessibility on touch devices. Override individual z-index tokens in the "All tokens" tab. Select this text to preview the selection color. Controls the height / tap-target of all sized components (buttons, inputs, badges). A sample link with the current underline settings. Icon scale tokens used by .sf-icon-* utilities. Values are in em units relative to surrounding text. Default values for .sf-media images and replaced elements. Default to the device's env(safe-area-inset-*). Override only if you need fixed padding regardless of notch/home-indicator. Applied inside @media print via optional/print.css. Boolean CSS custom property flags (0 = off, 1 = on). Components toggle these to activate state-specific styles.
Overriding globally forces all matching elements into that state — useful for testing and demos. Selection colors, caret, links, focus ring, borders and sizes all render in the
live preview (try the Components template). Scroll behavior applies to the page
- itself and can't be shown in the static canvas. Apply a curated set of overrides with one click. Existing overrides outside the theme's scope are preserved. No tokens found Pick an editable brand/status (base) color as the foreground to enable auto-fix. Foreground (rows) × background (cols). Click a cell to load it above. Live WCAG ratios computed from the actual rendered preview colors — including derived steps and your overrides. i(c)):(h=La(()=>i(kn??=Xa())),h.f|=Za)),S>_.size&&Zi(),!w)if(k.set(z,_),L){for(const[N,$]of d)_.has(N)||z.skip_effect($.e);z.oncommit(E),z.ondiscard(B)}else E(z);t(v)}),P={effect:U,items:d,pending:k,outrogroups:null,fallback:h};w=!1}function cs(a){for(;a!==null&&(a.f&Va)===0;)a=a.next;return a}function fd(a,e,o,n,l){var i=(n&lc)!==0,c=e.length,d=a.items,p=cs(a.effect.first),m,h=null,v,y=[],k=[],w,E,B,U;if(i)for(U=0;Ui(c)):(h=La(()=>i(kn??=Xa())),h.f|=Za)),S>_.size&&Zi(),!w)if(k.set(z,_),L){for(const[N,$]of d)_.has(N)||z.skip_effect($.e);z.oncommit(E),z.ondiscard(B)}else E(z);t(v)}),P={effect:U,items:d,pending:k,outrogroups:null,fallback:h};w=!1}function cs(a){for(;a!==null&&(a.f&Va)===0;)a=a.next;return a}function fd(a,e,o,n,l){var i=(n&lc)!==0,c=e.length,d=a.items,p=cs(a.effect.first),m,h=null,v,y=[],k=[],w,E,B,U;if(i)for(U=0;U.sf-scrim macro.text-shadow: var(--sf-text-shadow-m)..sf-scrim macro.text-shadow: var(--sf-text-shadow-m).
or as a wrapper with a nested > img / > video / > picture.","optional":false,"layer":"slashed.layout"},{"name":"sf-box","selector":".sf-box","kind":"layout","category":"Layout primitives","group":"Box","description":"Minimal padding container that applies --sf-component-pad on all sides. The simplest layout primitive for adding breathing room.","optional":false,"layer":"slashed.layout"},{"name":"sf-breakout","selector":".sf-breakout","kind":"layout","category":"Layout primitives","group":"Content grid (breakout pattern)","description":"Breaks a child element out of a parent sf-content-grid, spanning full bleed (or a named grid area) regardless of the parent column. Useful for full-width sections inside constrained prose.","optional":false,"layer":"slashed.layout"},{"name":"sf-center","selector":".sf-center","kind":"layout","category":"Layout primitives","group":"Center","description":"Centers children both horizontally and vertically using flexbox. Optionally add sf-center--intrinsic to size the container to its content.","optional":false,"layer":"slashed.layout"},{"name":"sf-center--intrinsic","selector":".sf-center--intrinsic","kind":"layout","category":"Layout primitives","group":"Center","description":"Modifier for sf-center: constrains the container to the natural width of its children (no stretching to fill available space).","optional":false,"layer":"slashed.layout"},{"name":"sf-clickable-parent","selector":".sf-clickable-parent","kind":"accessibility","category":"Accessibility","group":"Clickable-parent","description":"Makes the entire card or list-item clickable via an absolutely-positioned child overlay link. Apply to the container; place sf-clickable-parent__overlay on the .","optional":false,"layer":"slashed.accessibility"},{"name":"sf-clickable-parent__overlay","selector":".sf-clickable-parent__overlay","kind":"accessibility","category":"Accessibility","group":"Clickable-parent","description":"The full-bleed overlay link inside an sf-clickable-parent. Stretches to cover the parent and uses pointer-events to let interactive children keep their own clicks.","optional":false,"layer":"slashed.accessibility"},{"name":"sf-cluster","selector":".sf-cluster","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Flex-wrap row of variable-width items with automatic gap. Children wrap when the container is too narrow. Use for tag lists, button groups, and icon rows.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--2xl","selector":".sf-cluster--2xl","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with 2xl gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--between","selector":".sf-cluster--between","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant that distributes items with space-between alignment.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--center","selector":".sf-cluster--center","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant that centers the item row horizontally.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--end","selector":".sf-cluster--end","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant that aligns items to the inline end (right in LTR).","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--l","selector":".sf-cluster--l","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with large (l) gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--m","selector":".sf-cluster--m","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with medium (m) gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--no-wrap","selector":".sf-cluster--no-wrap","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant that prevents item wrapping (single-line row).","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--s","selector":".sf-cluster--s","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with small (s) gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--xl","selector":".sf-cluster--xl","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with xl gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-cluster--xs","selector":".sf-cluster--xs","kind":"layout","category":"Layout primitives","group":"Cluster","description":"Cluster variant with xs gap between items.","optional":false,"layer":"slashed.layout"},{"name":"sf-color-pulse","selector":".sf-color-pulse","kind":"motion","category":"Motion / animation","group":"@property color animation","description":"Applies a gentle color-pulse animation to draw attention to a dynamic value change (e.g. a counter updating). Scoped to users who have not requested reduced motion.","optional":false,"layer":"slashed.motion"},{"name":"sf-container","selector":".sf-container","kind":"layout","category":"Layout primitives","group":"Section","description":"Max-width page container, centered with auto side gutters. Establishes a named inline-size container (cq-container) for container queries. Default width is --sf-container-m.","optional":false,"layer":"slashed.layout"},{"name":"sf-container--full","selector":".sf-container--full","kind":"layout","category":"Layout primitives","group":"Container","description":"Container variant that spans the full viewport width (no max-width cap).","optional":false,"layer":"slashed.layout"},{"name":"sf-container--narrow","selector":".sf-container--narrow","kind":"layout","category":"Layout primitives","group":"Container","description":"Container variant with a narrower max-width (--sf-container-s). Use for single-column prose and forms.","optional":false,"layer":"slashed.layout"},{"name":"sf-container--prose","selector":".sf-container--prose","kind":"layout","category":"Layout primitives","group":"Container","description":"Container variant with a prose-optimised max-width (--sf-container-prose). Ideal for long-form reading content.","optional":false,"layer":"slashed.layout"},{"name":"sf-container--wide","selector":".sf-container--wide","kind":"layout","category":"Layout primitives","group":"Container","description":"Container variant with a wider max-width (--sf-container-l). Use for dashboards and wide media.","optional":false,"layer":"slashed.layout"},{"name":"sf-content-auto","selector":".sf-content-auto","kind":"macro","category":"Macro classes","group":"Content visibility","description":"Sets content-visibility: auto on the element. The browser skips rendering off-screen content, improving LCP for long pages.","optional":false,"layer":"slashed.macros"},{"name":"sf-content-grid","selector":".sf-content-grid","kind":"layout","category":"Layout primitives","group":"Content grid (breakout pattern)","description":"Holy-grail content grid with named areas: full-bleed, popout, and content columns. Use sf-breakout on children to escape the content column.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover","selector":".sf-cover","kind":"layout","category":"Layout primitives","group":"Cover","description":"Vertically stretches to at least a viewport height with a centered element (sf-cover__center). Typical use: hero sections.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover__center","selector":".sf-cover__center","kind":"layout","category":"Layout primitives","group":"Cover","description":"The centered focal element inside an sf-cover. Stays vertically centered even when the cover content is shorter than the viewport.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover--max","selector":".sf-cover--max","kind":"layout","category":"Layout primitives","group":"Cover","description":"Cover variant that uses a max-height instead of min-height for the viewport constraint.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover--min","selector":".sf-cover--min","kind":"layout","category":"Layout primitives","group":"Cover","description":"Cover variant that reduces the minimum height to half a viewport.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover--padding-l","selector":".sf-cover--padding-l","kind":"layout","category":"Layout primitives","group":"Cover","description":"Cover variant with large vertical padding above and below the centered content.","optional":false,"layer":"slashed.layout"},{"name":"sf-cover--padding-s","selector":".sf-cover--padding-s","kind":"layout","category":"Layout primitives","group":"Cover","description":"Cover variant with small vertical padding above and below the centered content.","optional":false,"layer":"slashed.layout"},{"name":"sf-cq","selector":".sf-cq","kind":"layout","category":"Layout primitives","group":"Container query context","description":"Assigns an inline-size container context to any element. Children can then use @container rules or container-query-aware tokens.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider","selector":".sf-divider","kind":"layout","category":"Layout primitives","group":"Divider","description":"Horizontal rule (divider line). Uses --sf-divider-* tokens for color, width, and style. Modifiers change dash style or orientation.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--dashed","selector":".sf-divider--dashed","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant with a dashed stroke.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--dotted","selector":".sf-divider--dotted","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant with a dotted stroke.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--gradient","selector":".sf-divider--gradient","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant rendered as a gradient that fades to transparent at both ends.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--soft","selector":".sf-divider--soft","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant with reduced opacity (subtle separator).","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--strong","selector":".sf-divider--strong","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant with stronger/darker color for a more prominent separator.","optional":false,"layer":"slashed.layout"},{"name":"sf-divider--vertical","selector":".sf-divider--vertical","kind":"layout","category":"Layout primitives","group":"Divider","description":"Divider variant rendered as a vertical line. Use inside flex or grid containers.","optional":false,"layer":"slashed.layout"},{"name":"sf-entrance--fade","selector":".sf-entrance--fade","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in as it enters the viewport. Animation tied to scroll progress via animation-timeline.","optional":false,"layer":"slashed.motion"},{"name":"sf-entrance--fade-down","selector":".sf-entrance--fade-down","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in while moving downward into position.","optional":false,"layer":"slashed.motion"},{"name":"sf-entrance--fade-left","selector":".sf-entrance--fade-left","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in while moving from the right toward the left.","optional":false,"layer":"slashed.motion"},{"name":"sf-entrance--fade-right","selector":".sf-entrance--fade-right","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in while moving from the left toward the right.","optional":false,"layer":"slashed.motion"},{"name":"sf-entrance--fade-up","selector":".sf-entrance--fade-up","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in while moving upward into position.","optional":false,"layer":"slashed.motion"},{"name":"sf-entrance--scale-up","selector":".sf-entrance--scale-up","kind":"motion","category":"Motion / animation","group":"Scroll-driven entrances","description":"Scroll-driven entrance: element fades in while scaling up from a slightly smaller size.","optional":false,"layer":"slashed.motion"},{"name":"sf-equal","selector":".sf-equal","kind":"layout","category":"Layout primitives","group":"Equal columns (intrinsically responsive)","description":"Auto-fill equal-columns grid. Columns fill the row and wrap when they hit --sf-equal-min-col. No breakpoints needed.","optional":false,"layer":"slashed.layout"},{"name":"sf-equal--2","selector":".sf-equal--2","kind":"layout","category":"Layout primitives","group":"Equal columns (intrinsically responsive)","description":"Equal-columns variant locked to 2 columns using --sf-equal-min-col-2.","optional":false,"layer":"slashed.layout"},{"name":"sf-equal--3","selector":".sf-equal--3","kind":"layout","category":"Layout primitives","group":"Equal columns (intrinsically responsive)","description":"Equal-columns variant locked to 3 columns using --sf-equal-min-col-3.","optional":false,"layer":"slashed.layout"},{"name":"sf-equal--4","selector":".sf-equal--4","kind":"layout","category":"Layout primitives","group":"Equal columns (intrinsically responsive)","description":"Equal-columns variant locked to 4 columns using --sf-equal-min-col-4.","optional":false,"layer":"slashed.layout"},{"name":"sf-equal--6","selector":".sf-equal--6","kind":"layout","category":"Layout primitives","group":"Equal columns (intrinsically responsive)","description":"Equal-columns variant locked to 6 columns using --sf-equal-min-col-6.","optional":false,"layer":"slashed.layout"},{"name":"sf-equal-height","selector":".sf-equal-height","kind":"macro","category":"Macro classes","group":"Equal height","description":"Forces all flex children to equal height (align-items: stretch). Use on a flex row to make cards in a grid share the tallest card's height.","optional":false,"layer":"slashed.macros"},{"name":"sf-fade-in","selector":".sf-fade-in","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot fade-in animation (opacity 0 → 1). Scoped to no-preference so it stops automatically for reduced-motion users.","optional":false,"layer":"slashed.motion"},{"name":"sf-fade-out","selector":".sf-fade-out","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot fade-out animation (opacity 1 → 0). Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-flow","selector":".sf-flow","kind":"macro","category":"Macro classes","group":"Flow","description":"Applies --sf-flow-space as margin-block-start to all direct children except the first. Establishes consistent vertical rhythm in prose-like containers.","optional":false,"layer":"slashed.macros"},{"name":"sf-focus-parent","selector":".sf-focus-parent","kind":"accessibility","category":"Accessibility","group":"Focus-parent","description":"Forwards focus-visible styling to this container when any descendant is keyboard-focused. Useful for custom controls that wrap a visually-hidden .","optional":false,"layer":"slashed.accessibility"},{"name":"sf-focus-shadow","selector":".sf-focus-shadow","kind":"accessibility","category":"Accessibility","group":"Focus-shadow opt-in","description":"Applies the standard focus ring as a box-shadow to any element. Use on custom controls where the native :focus-visible ring doesn't render correctly.","optional":false,"layer":"slashed.accessibility"},{"name":"sf-frame","selector":".sf-frame","kind":"layout","category":"Layout primitives","group":"Frame","description":"Aspect-ratio container for media (images, video, maps). Children fill and cover the fixed-ratio box. Default ratio is 16:9.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--3-2","selector":".sf-frame--3-2","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to a 3:2 aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--4-3","selector":".sf-frame--4-3","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to a 4:3 aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--cinema","selector":".sf-frame--cinema","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to a cinematic 21:9 aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--golden","selector":".sf-frame--golden","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to the golden ratio (1.618:1).","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--portrait","selector":".sf-frame--portrait","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to a portrait 2:3 aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--square","selector":".sf-frame--square","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to a square 1:1 aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-frame--video","selector":".sf-frame--video","kind":"layout","category":"Layout primitives","group":"Frame","description":"Frame variant locked to the standard 16:9 video aspect ratio.","optional":false,"layer":"slashed.layout"},{"name":"sf-full-bleed","selector":".sf-full-bleed","kind":"layout","category":"Layout primitives","group":"Content grid (breakout pattern)","description":"Forces an element to span the full viewport width, breaking out of any centered container. Use for full-bleed images and section backgrounds.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap","selector":".sf-gap","kind":"layout","category":"Layout primitives","group":"Gap","description":"Injects the default --sf-gap into an existing flex or grid container without imposing display:flex itself. Use when the parent is already a flex or grid.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--2xl","selector":".sf-gap--2xl","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with 2xl gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--l","selector":".sf-gap--l","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with large (l) gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--m","selector":".sf-gap--m","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with medium (m) gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--s","selector":".sf-gap--s","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with small (s) gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--xl","selector":".sf-gap--xl","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with xl gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-gap--xs","selector":".sf-gap--xs","kind":"layout","category":"Layout primitives","group":"Gap","description":"Gap injection variant with xs gap value.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid","selector":".sf-grid","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Auto-fill CSS grid. Columns are sized with RAM pattern (Repeat, Auto-fill, Minmax) and wrap automatically. Default column min-width is --sf-grid-min-col.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--2xl","selector":".sf-grid--2xl","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with a 2xl minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--dense","selector":".sf-grid--dense","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with grid-auto-flow: dense, allowing the grid to fill holes created by span modifiers.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--fit","selector":".sf-grid--fit","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant that switches from auto-fill to auto-fit, collapsing empty columns.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--l","selector":".sf-grid--l","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with a large (l) minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--m","selector":".sf-grid--m","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with a medium (m) minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--s","selector":".sf-grid--s","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with a small (s) minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--xl","selector":".sf-grid--xl","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with an xl minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid--xs","selector":".sf-grid--xs","kind":"layout","category":"Layout primitives","group":"Grid (auto)","description":"Grid variant with an xs minimum column width.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-1","selector":".sf-grid-cols-1","kind":"layout","category":"Layout primitives","group":"Single-column grid","description":"Single-column layout (forces all children to one column).","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-1-2","selector":".sf-grid-cols-1-2","kind":"layout","category":"Layout primitives","group":"Ratio grids","description":"Two-column ratio grid: first child takes 1fr, second takes 2fr. Container-query responsive.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-1-3","selector":".sf-grid-cols-1-3","kind":"layout","category":"Layout primitives","group":"Ratio grids","description":"Two-column ratio grid: first child takes 1fr, second takes 3fr. Container-query responsive.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-2","selector":".sf-grid-cols-2","kind":"layout","category":"Layout primitives","group":"Fixed column grids (container-query responsive)","description":"Responsive 2-column fixed grid. Uses container queries to collapse to one column on narrow containers.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-2-1","selector":".sf-grid-cols-2-1","kind":"layout","category":"Layout primitives","group":"Ratio grids","description":"Two-column ratio grid: first child takes 2fr, second takes 1fr. Container-query responsive.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-3","selector":".sf-grid-cols-3","kind":"layout","category":"Layout primitives","group":"Fixed column grids (container-query responsive)","description":"Responsive 3-column fixed grid. Collapses progressively on narrow containers.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-3-1","selector":".sf-grid-cols-3-1","kind":"layout","category":"Layout primitives","group":"Ratio grids","description":"Two-column ratio grid: first child takes 3fr, second takes 1fr. Container-query responsive.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-4","selector":".sf-grid-cols-4","kind":"layout","category":"Layout primitives","group":"Fixed column grids (container-query responsive)","description":"Responsive 4-column fixed grid. Collapses progressively on narrow containers.","optional":false,"layer":"slashed.layout"},{"name":"sf-grid-cols-6","selector":".sf-grid-cols-6","kind":"layout","category":"Layout primitives","group":"Fixed column grids (container-query responsive)","description":"Responsive 6-column fixed grid. Collapses progressively on narrow containers.","optional":false,"layer":"slashed.layout"},{"name":"sf-icon","selector":".sf-icon","kind":"layout","category":"Layout primitives","group":"Icon","description":"Inline icon sizing primitive. Sets width and height to --sf-icon-m via em-based tokens so the icon scales with the surrounding text.","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--2xl","selector":".sf-icon--2xl","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-2xl (extra-extra-large).","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--boxed","selector":".sf-icon--boxed","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant with a square bordered box background. Useful for standalone icon buttons and feature icons.","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--l","selector":".sf-icon--l","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-l (large).","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--m","selector":".sf-icon--m","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-m (medium, same as base sf-icon).","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--s","selector":".sf-icon--s","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-s (small).","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--xl","selector":".sf-icon--xl","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-xl (extra-large).","optional":false,"layer":"slashed.layout"},{"name":"sf-icon--xs","selector":".sf-icon--xs","kind":"layout","category":"Layout primitives","group":"Icon","description":"Icon variant sized to --sf-icon-xs (extra-small).","optional":false,"layer":"slashed.layout"},{"name":"sf-imposter","selector":".sf-imposter","kind":"layout","category":"Layout primitives","group":"Imposter","description":"Absolutely positions an element at the center of its nearest positioned ancestor. Use for overlays, badges, and floating labels.","optional":false,"layer":"slashed.layout"},{"name":"sf-imposter--contain","selector":".sf-imposter--contain","kind":"layout","category":"Layout primitives","group":"Imposter","description":"Imposter variant that clamps the element within the bounds of its parent using overflow:hidden on the parent.","optional":false,"layer":"slashed.layout"},{"name":"sf-imposter--fixed","selector":".sf-imposter--fixed","kind":"layout","category":"Layout primitives","group":"Imposter","description":"Imposter variant that uses position:fixed instead of absolute. Use for viewport-level overlays and modals.","optional":false,"layer":"slashed.layout"},{"name":"sf-line-clamp-2","selector":".sf-line-clamp-2","kind":"macro","category":"Macro classes","group":"Truncate / line-clamp","description":"Clamps text to 2 lines with an ellipsis. Applies -webkit-line-clamp: 2.","optional":false,"layer":"slashed.macros"},{"name":"sf-line-clamp-3","selector":".sf-line-clamp-3","kind":"macro","category":"Macro classes","group":"Truncate / line-clamp","description":"Clamps text to 3 lines with an ellipsis. Applies -webkit-line-clamp: 3.","optional":false,"layer":"slashed.macros"},{"name":"sf-line-clamp-N","selector":".sf-line-clamp-N","kind":"macro","category":"Macro classes","group":"Truncate / line-clamp","description":"Clamps text to a custom N lines. Set --sf-line-clamp on the element to control the number of visible lines.","optional":false,"layer":"slashed.macros"},{"name":"sf-link--reverse","selector":".sf-link--reverse","kind":"macro","category":"Macro classes","group":"Link variants","description":"Link color modifier: reverses the default link color to work on dark/inverted backgrounds. Sets color to --sf-color-text--inverse.","optional":false,"layer":"slashed.macros"},{"name":"sf-link--subtle","selector":".sf-link--subtle","kind":"macro","category":"Macro classes","group":"Link variants","description":"Link color modifier: renders the link in the body text color instead of the default action color. Underline still indicates the link on hover.","optional":false,"layer":"slashed.macros"},{"name":"sf-link-external","selector":".sf-link-external","kind":"macro","category":"Macro classes","group":"External link indication","description":"Automatically appends an external-link icon (via ::after content) to indicate the link opens in a new tab or goes to an external domain.","optional":false,"layer":"slashed.macros"},{"name":"sf-no-tap-highlight","selector":".sf-no-tap-highlight","kind":"macro","category":"Macro classes","group":"No tap highlight","description":"Removes the mobile tap highlight color (-webkit-tap-highlight-color: transparent). Use on interactive elements with a custom active state.","optional":false,"layer":"slashed.macros"},{"name":"sf-not-prose","selector":".sf-not-prose","kind":"macro","category":"Macro classes","group":"Prose","description":"Opt-out of sf-prose typography styles within a prose block. Apply to an element that should keep default browser or component styles.","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade","selector":".sf-overflow-fade","kind":"macro","category":"Macro classes","group":"Overflow fade","description":"Adds a gradient fade at the inline-end of an overflowing element to hint at hidden content. Use inside sf-reel or any scroll container.","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--block","selector":".sf-overflow-fade--block","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades both the top and bottom edges simultaneously (block axis).","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--bottom","selector":".sf-overflow-fade--bottom","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades the bottom (block-end) edge.","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--inline","selector":".sf-overflow-fade--inline","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades both the left and right edges simultaneously (inline axis).","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--left","selector":".sf-overflow-fade--left","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades the left (inline-start) edge.","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--right","selector":".sf-overflow-fade--right","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades the right (inline-end) edge. Explicit alias for the default sf-overflow-fade behaviour.","optional":false,"layer":"slashed.macros"},{"name":"sf-overflow-fade--top","selector":".sf-overflow-fade--top","kind":"macro","category":"Macro classes","group":"","description":"Overflow fade variant: fades the top (block-start) edge.","optional":false,"layer":"slashed.macros"},{"name":"sf-pancake","selector":".sf-pancake","kind":"layout","category":"Layout primitives","group":"Pancake (sticky footer)","description":"Three-row layout (header, main, footer) where main takes all remaining vertical space via flex-grow. The footer always sticks to the bottom on tall viewports.","optional":false,"layer":"slashed.layout"},{"name":"sf-prose","selector":".sf-prose","kind":"macro","category":"Macro classes","group":"Prose","description":"Opinionated typographic defaults for long-form content: heading hierarchy, paragraph spacing, blockquote, code, and list styling. Override with sf-not-prose.","optional":false,"layer":"slashed.macros"},{"name":"sf-reel","selector":".sf-reel","kind":"layout","category":"Layout primitives","group":"Reel","description":"Horizontally scrollable row of fixed-height items with snap scrolling. Children don't shrink below their intrinsic width, creating a card carousel effect.","optional":false,"layer":"slashed.layout"},{"name":"sf-scale-down","selector":".sf-scale-down","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot scale-down animation (element shrinks from full size). Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-scale-up","selector":".sf-scale-up","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot scale-up animation (element grows from smaller size). Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-scrim","selector":".sf-scrim","kind":"macro","category":"Macro classes","group":"Scrim","description":"Overlay container with a gradient darkening scrim behind text placed on an image or colored background.","optional":false,"layer":"slashed.macros"},{"name":"sf-scrim__content","selector":".sf-scrim__content","kind":"macro","category":"Macro classes","group":"Scrim","description":"Content area inside an sf-scrim. Positioned above the gradient overlay layer.","optional":false,"layer":"slashed.macros"},{"name":"sf-scrim--bottom","selector":".sf-scrim--bottom","kind":"macro","category":"Macro classes","group":"Scrim","description":"Scrim variant with the gradient emanating from the bottom edge (bottom-to-top fade).","optional":false,"layer":"slashed.macros"},{"name":"sf-scrim--full","selector":".sf-scrim--full","kind":"macro","category":"Macro classes","group":"Scrim","description":"Scrim variant that covers the entire surface with a uniform translucent overlay.","optional":false,"layer":"slashed.macros"},{"name":"sf-scrim--top","selector":".sf-scrim--top","kind":"macro","category":"Macro classes","group":"Scrim","description":"Scrim variant with the gradient emanating from the top edge (top-to-bottom fade).","optional":false,"layer":"slashed.macros"},{"name":"sf-scroll-shadow","selector":".sf-scroll-shadow","kind":"macro","category":"Macro classes","group":"Scroll shadow","description":"Adds inset box-shadows at the top and bottom of a scrollable container to indicate hidden overflow above or below.","optional":false,"layer":"slashed.macros"},{"name":"sf-scroll-snap","selector":".sf-scroll-snap","kind":"macro","category":"Macro classes","group":"Scroll snap","description":"Enables CSS scroll-snap-type: x mandatory on a horizontal scroll container. Children should have scroll-snap-align.","optional":false,"layer":"slashed.macros"},{"name":"sf-section","selector":".sf-section","kind":"layout","category":"Layout primitives","group":"Section","description":"Full-width page section with vertical padding (--sf-section-pad-default). Use to create visually distinct content bands.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--2xl","selector":".sf-section--2xl","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with 2xl vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--collapse","selector":".sf-section--collapse","kind":"layout","category":"Layout primitives","group":"Collapse modifier","description":"Section variant that removes vertical padding (zero-padding section for adjacent same-color blocks).","optional":false,"layer":"slashed.layout"},{"name":"sf-section--guttered","selector":".sf-section--guttered","kind":"layout","category":"Layout primitives","group":"Section","description":"Adds horizontal page gutters directly to a section — use when you want to skip a separate .sf-container wrapper (gutterless layout inside section). Neutralises container gutter to prevent double padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--l","selector":".sf-section--l","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with large (l) vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--m","selector":".sf-section--m","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with medium (m) vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--s","selector":".sf-section--s","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with small (s) vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--xl","selector":".sf-section--xl","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with xl vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section--xs","selector":".sf-section--xs","kind":"layout","category":"Layout primitives","group":"Section","description":"Section variant with xs vertical padding.","optional":false,"layer":"slashed.layout"},{"name":"sf-section-group","selector":".sf-section-group","kind":"layout","category":"Layout primitives","group":"Section","description":"Groups adjacent sf-section elements so their combined padding collapses correctly at the top and bottom edges.","optional":false,"layer":"slashed.layout"},{"name":"sf-sidebar","selector":".sf-sidebar","kind":"layout","category":"Layout primitives","group":"Sidebar","description":"Two-column sidebar layout: first child is the sidebar, second child is main content. The sidebar collapses below the breakpoint (--sf-sidebar-min-width). Default sidebar on the left.","optional":false,"layer":"slashed.layout"},{"name":"sf-sidebar--narrow","selector":".sf-sidebar--narrow","kind":"layout","category":"Layout primitives","group":"Sidebar","description":"Sidebar variant with a narrower sidebar column.","optional":false,"layer":"slashed.layout"},{"name":"sf-sidebar--right","selector":".sf-sidebar--right","kind":"layout","category":"Layout primitives","group":"Sidebar","description":"Sidebar variant with the sidebar on the right (second child becomes the sidebar).","optional":false,"layer":"slashed.layout"},{"name":"sf-sidebar--wide","selector":".sf-sidebar--wide","kind":"layout","category":"Layout primitives","group":"Sidebar","description":"Sidebar variant with a wider sidebar column.","optional":false,"layer":"slashed.layout"},{"name":"sf-slide-in-down","selector":".sf-slide-in-down","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot slide-in-from-above animation. Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-slide-in-left","selector":".sf-slide-in-left","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot slide-in-from-right animation (slides to the left). Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-slide-in-right","selector":".sf-slide-in-right","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot slide-in-from-left animation (slides to the right). Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-slide-in-up","selector":".sf-slide-in-up","kind":"motion","category":"Motion / animation","group":"Animation presets","description":"One-shot slide-in-from-below animation. Scoped to no-preference.","optional":false,"layer":"slashed.motion"},{"name":"sf-stack","selector":".sf-stack","kind":"layout","category":"Layout primitives","group":"Stack","description":"Flex column with even vertical spacing between children (--sf-stack-gap). Stacking context for vertical rhythm.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--2xl","selector":".sf-stack--2xl","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with 2xl gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--center","selector":".sf-stack--center","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant that centers children on the cross axis.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--end","selector":".sf-stack--end","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant that aligns children to the cross-axis end (right in LTR).","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--l","selector":".sf-stack--l","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with large (l) gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--m","selector":".sf-stack--m","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with medium (m) gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--s","selector":".sf-stack--s","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with small (s) gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--stretch","selector":".sf-stack--stretch","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant that stretches children to fill the full available width.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--xl","selector":".sf-stack--xl","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with xl gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-stack--xs","selector":".sf-stack--xs","kind":"layout","category":"Layout primitives","group":"Stack","description":"Stack variant with xs gap between children.","optional":false,"layer":"slashed.layout"},{"name":"sf-subgrid","selector":".sf-subgrid","kind":"layout","category":"Layout primitives","group":"Subgrid","description":"Passes the parent grid columns through to children via subgrid. Place on a grid item that should align its own children to the outer grid columns.","optional":false,"layer":"slashed.layout"},{"name":"sf-subgrid-rows","selector":".sf-subgrid-rows","kind":"layout","category":"Layout primitives","group":"Subgrid","description":"Passes the parent grid rows through to children via subgrid. Place on a grid item that should align its own children to the outer grid rows.","optional":false,"layer":"slashed.layout"},{"name":"sf-surface","selector":".sf-surface","kind":"macro","category":"Macro classes","group":"Surface","description":"Generic semantic surface: applies --sf-surface-color as the background and automatically sets a contrasting text color. Tone variants (--primary, --action, etc.) activate preset palettes.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--action","selector":".sf-surface--action","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the action color palette (button/CTA primary color).","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--danger","selector":".sf-surface--danger","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the danger status palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--info","selector":".sf-surface--info","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the info status palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--inverse","selector":".sf-surface--inverse","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant that inverts light/dark, creating an always-dark surface in light mode and always-light in dark mode.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--neutral","selector":".sf-surface--neutral","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the neutral palette (muted/gray).","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--primary","selector":".sf-surface--primary","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the primary brand color palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--secondary","selector":".sf-surface--secondary","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the secondary brand color palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--success","selector":".sf-surface--success","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the success status palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--tertiary","selector":".sf-surface--tertiary","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the tertiary brand color palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-surface--warning","selector":".sf-surface--warning","kind":"macro","category":"Macro classes","group":"Surface","description":"Surface variant using the warning status palette.","optional":false,"layer":"slashed.macros"},{"name":"sf-switcher","selector":".sf-switcher","kind":"layout","category":"Layout primitives","group":"Switcher","description":"Flex layout that switches from a horizontal row to a vertical column when the container is narrower than --sf-switcher-threshold.","optional":false,"layer":"slashed.layout"},{"name":"sf-switcher--no-wrap","selector":".sf-switcher--no-wrap","kind":"layout","category":"Layout primitives","group":"Switcher","description":"Switcher variant that stays horizontal and never wraps (single-line regardless of container width).","optional":false,"layer":"slashed.layout"},{"name":"sf-switcher--vertical","selector":".sf-switcher--vertical","kind":"layout","category":"Layout primitives","group":"Switcher","description":"Switcher variant that starts in the vertical (stacked) direction on all sizes.","optional":false,"layer":"slashed.layout"},{"name":"sf-tabular-nums","selector":".sf-tabular-nums","kind":"macro","category":"Macro classes","group":"Tabular figures","description":"Forces tabular (monospaced) number rendering. Use on price tables, counters, and anywhere numbers need to align vertically across rows.","optional":false,"layer":"slashed.macros"},{"name":"sf-text-gradient","selector":".sf-text-gradient","kind":"macro","category":"Macro classes","group":"Text gradient","description":"Applies a brand gradient to inline text. Sets the background to the gradient, clips it to the text, and makes the text color transparent.","optional":false,"layer":"slashed.macros"},{"name":"sf-text-protect","selector":".sf-text-protect","kind":"macro","category":"Macro classes","group":"Text protect","description":"Wraps text in a translucent dark gradient overlay to ensure legibility when placed over a light or variable background image.","optional":false,"layer":"slashed.macros"},{"name":"sf-theme-transition","selector":".sf-theme-transition","kind":"theme","category":"Theme utilities","group":"OPT-IN THEME CROSS-FADE","description":"Opt-in animated light/dark theme crossfade. Apply to (or a subtree) so color tokens transition smoothly when [data-theme] changes. Duration controlled by --sf-theme-transition-duration.","optional":false,"layer":"slashed.themes"},{"name":"sf-truncate","selector":".sf-truncate","kind":"macro","category":"Macro classes","group":"Truncate / line-clamp","description":"Single-line text overflow with ellipsis. Equivalent to the classic text-overflow: ellipsis trio (white-space nowrap, overflow hidden, text-overflow ellipsis).","optional":false,"layer":"slashed.macros"},{"name":"skip-link","selector":".skip-link","kind":"accessibility","category":"Accessibility","group":"Skip link","description":"Accessible skip-navigation link. Hidden until focused; jumps keyboard users past repeated navigation blocks. Place as the very first element in .","optional":false,"layer":"slashed.accessibility"},{"name":"sr-only","selector":".sr-only","kind":"accessibility","category":"Accessibility","group":"Screen-reader-only. Atomic contract: a partial override","description":"Visually hides content while keeping it accessible to screen readers. Use for labels, descriptions, and off-screen text that assistive technology needs.","optional":false,"layer":"slashed.accessibility"},{"name":"sr-only-focusable","selector":".sr-only-focusable","kind":"accessibility","category":"Accessibility","group":"Screen-reader-only. Atomic contract: a partial override","description":"Extends sr-only — also reveals the element when it receives keyboard focus. Typical use: skip links and visually-hidden focus targets.","optional":false,"layer":"slashed.accessibility"},{"name":"theme-transition","selector":".theme-transition","kind":"theme","category":"Theme example","group":"5. SMOOTH THEME-TRANSITION HELPER","description":"Internal helper class used by the sf-theme-transition macro. Applies per-property transitions to registered color tokens during light/dark mode switches.","optional":true,"layer":"slashed.themes"}]`),uh={classes:fh},ph={generatedBy:"configurator/scripts/sync-api.mjs",source:"docs/api-index.json",tokensHash:"99d86a47c17a",bundles:["full","optimal","optimal-components","optimal-utilities"],counts:{tokens:691,byTier:{PUBLIC:635,"PUBLIC-ADVANCED":55,INTERNAL:1},byCategory:{"Layout tokens":54,"Core tokens":608,"Macro tokens":23,"Component tokens":6}}},mh=JSON.parse(`[{"name":"--sf-alternate-gap","tier":"PUBLIC","role":"consumption","namespace":"alternate","category":"Layout tokens","group":"Alternate (zigzag)","description":"Gap tokens for the alternating content/media (zigzag) layout.","note":"Gap between items in the alternating zigzag layout.","value":"var(--sf-content-gap)","aliasOf":"--sf-content-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-alternate-inner-gap","tier":"PUBLIC","role":"consumption","namespace":"alternate","category":"Layout tokens","group":"Alternate (zigzag)","description":"Gap tokens for the alternating content/media (zigzag) layout.","note":"Gap between content and media within each zigzag item.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-blink","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Blinking visibility loop. Use for cursor indicators or critical attention cues. Respect prefers-reduced-motion.","value":"sf-blink calc(1s * var(--sf-motion-scale)) steps(1, end) infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-color-pulse","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Pulsing color loop. Use for live-status badges (recording, live). Respect prefers-reduced-motion.","value":"sf-color-pulse var(--sf-duration-slow) var(--sf-ease-in-out) infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-delay-1","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Shortest stagger delay. Apply to the first element in a sequentially animated group.","value":"calc(75ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-delay-2","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Second stagger delay step.","value":"calc(150ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-delay-3","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Third stagger delay step.","value":"calc(225ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-delay-4","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Fourth stagger delay step.","value":"calc(300ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-delay-5","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Longest stagger delay. Apply to the last element in a sequentially animated group.","value":"calc(375ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-fade-in","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Fade-in entrance animation shorthand. Use directly as animation property value.","value":"sf-fade-in var(--sf-duration-normal) var(--sf-ease-out) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-fade-out","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Fade-out exit animation shorthand.","value":"sf-fade-out var(--sf-duration-normal) var(--sf-ease-in) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-float","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Gentle floating / levitating loop. Use for hero illustrations or floating UI elements. Decorative — disable for prefers-reduced-motion.","value":"sf-float calc(3s * var(--sf-motion-scale)) var(--sf-ease-in-out) infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-ping","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Expanding ping / ripple loop. Use for notification badges and live-indicator dots.","value":"sf-ping var(--sf-duration-slow) var(--sf-ease-out) infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-scale-down","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Scale-down exit animation. Pairs with --sf-animation-scale-up for enter/leave transitions.","value":"sf-scale-down var(--sf-duration-normal) var(--sf-ease-in) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-scale-up","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Scale-up entrance animation. Use for modals, popovers, and tooltips appearing.","value":"sf-scale-up var(--sf-duration-normal) var(--sf-ease-overshoot) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-shimmer","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Shimmer / skeleton-loading sweep. Apply on placeholder elements while content loads.","value":"sf-shimmer calc(1.5s * var(--sf-motion-scale)) var(--sf-ease-in-out) infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-slide-in-down","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Slide-in from above. Use for dropdown menus and top-attached sheets.","value":"sf-slide-in-down var(--sf-duration-normal) var(--sf-ease-out) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-slide-in-left","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Slide-in from the left. Use for left-side drawers and navigation panels.","value":"sf-slide-in-left var(--sf-duration-normal) var(--sf-ease-out) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-slide-in-right","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Slide-in from the right. Use for right-side drawers and detail panels.","value":"sf-slide-in-right var(--sf-duration-normal) var(--sf-ease-out) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-slide-in-up","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Slide-in from below. Use for bottom sheets, toasts, and floating action buttons.","value":"sf-slide-in-up var(--sf-duration-normal) var(--sf-ease-out) both","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-animation-spin","tier":"PUBLIC","role":"consumption","namespace":"animation","category":"Core tokens","group":"Animation presets","description":"Complete animation shorthand values — pair named @keyframes with duration and easing. Use directly as animation property values.","note":"Continuous rotation loop. Use for loading spinners and progress indicators.","value":"sf-spin var(--sf-duration-slower) linear infinite","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-aspect","tier":"PUBLIC","role":"knob","namespace":"aspect","category":"Macro tokens","group":"Aspect ratio","description":"Aspect-ratio value for the .aspect-ratio macro.","note":"Aspect ratio value for the .aspect-ratio macro.","value":"16 / 9","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bento-cols-default","tier":"PUBLIC","role":"knob","namespace":"bento","category":"Layout tokens","group":"Bento grid","description":"Configuration tokens for the bento-grid layout primitive.","note":"Default column count for the bento grid.","value":"4","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bento-gap","tier":"PUBLIC","role":"consumption","namespace":"bento","category":"Layout tokens","group":"Bento grid","description":"Configuration tokens for the bento-grid layout primitive.","note":"Gap between bento grid cells.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bento-row-compact","tier":"PUBLIC","role":"knob","namespace":"bento","category":"Layout tokens","group":"Bento grid","description":"Configuration tokens for the bento-grid layout primitive.","note":"Row height for compact-variant bento items.","value":"6rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bento-row-default","tier":"PUBLIC","role":"knob","namespace":"bento","category":"Layout tokens","group":"Bento grid","description":"Configuration tokens for the bento-grid layout primitive.","note":"Default row height for standard bento grid cells.","value":"10rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bento-row-tall","tier":"PUBLIC","role":"knob","namespace":"bento","category":"Layout tokens","group":"Bento grid","description":"Configuration tokens for the bento-grid layout primitive.","note":"Tall row height for visually prominent or hero bento cells.","value":"16rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bg-fit","tier":"PUBLIC","role":"knob","namespace":"bg","category":"Layout tokens","group":"Background layer (.sf-bg)","description":"object-fit applied to .sf-bg when used as a bare media element, and to .sf-bg > img / video / picture children. Defaults to cover.","note":"object-fit applied to .sf-bg when used as a bare media element, and to .sf-bg > img / video / picture children. Defaults to cover.","value":"cover","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bg-inset","tier":"PUBLIC","role":"knob","namespace":"bg","category":"Layout tokens","group":"Background layer (.sf-bg)","description":"Inset from every edge of the parent. A single length applied uniformly; the layer size is derived from it so a non-zero inset still fills correctly.","note":"Inset from every edge of the parent. A single length applied uniformly; the layer size is derived from it so a non-zero inset still fills correctly.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bg-position","tier":"PUBLIC","role":"knob","namespace":"bg","category":"Layout tokens","group":"Background layer (.sf-bg)","description":"object-position controlling where the media is anchored within the layer. Defaults to center (50% 50%).","note":"object-position controlling where the media is anchored within the layer. Defaults to center (50% 50%).","value":"50% 50%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bg-radius","tier":"PUBLIC","role":"knob","namespace":"bg","category":"Layout tokens","group":"Background layer (.sf-bg)","description":"border-radius applied to the .sf-bg layer and its img/video/picture children. Defaults to 0; set to match the parent's radius when clipping is needed.","note":"border-radius applied to the .sf-bg layer and its img/video/picture children. Defaults to 0; set to match the parent's radius when clipping is needed.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-bg-z","tier":"PUBLIC","role":"knob","namespace":"bg","category":"Layout tokens","group":"Background layer (.sf-bg)","description":"z-index of the background layer. Defaults to -2 so it sits behind sibling content but above the parent's own background.","note":"z-index of the background layer. Defaults to -2 so it sits behind sibling content but above the parent's own background.","value":"-2","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-blur","tier":"PUBLIC","role":"knob","namespace":"blur","category":"Core tokens","group":"Blur & opacity","description":"Backdrop-filter blur scale and background-opacity tokens.","note":"Backdrop-filter blur amount for frosted-glass surfaces (navbars, overlays, dialogs). Default 12px. Pair with a semi-transparent background.","value":"12px","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-color","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Text color for body copy. Alias of --sf-color-text. Override here to deviate body text from the global text color.","value":"var(--sf-color-text)","aliasOf":"--sf-color-text","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-em-style","tier":"PUBLIC","role":"knob","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"font-style for inside body text (italic by default). Override to suppress italics if your typeface has no italic variant.","value":"italic","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-font-family","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font family for body text. Alias of --sf-font-body.","value":"var(--sf-font-body)","aliasOf":"--sf-font-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-font-size","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Base font size for body paragraphs. Alias of --sf-text-m.","value":"var(--sf-text-m)","aliasOf":"--sf-text-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-font-weight","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for body text. Alias of --sf-font-weight-body.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-line-height","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for body paragraphs. Alias of --sf-leading-normal.","value":"var(--sf-leading-normal)","aliasOf":"--sf-leading-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-strong-weight","tier":"PUBLIC","role":"consumption","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for inside body text. Override to choose a specific weight instead of inheriting bold.","value":"var(--sf-font-weight-strong)","aliasOf":"--sf-font-weight-strong","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-body-text-wrap","tier":"PUBLIC","role":"knob","namespace":"body","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"text-wrap mode for body paragraphs. 'pretty' prevents orphaned last words; 'balance' equalises line lengths.","value":"pretty","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border shorthands","description":"Ready-to-use border shorthand values (width + style + color) for the three most common border weights.","note":"Default border shorthand (width + solid + color). Apply directly to border property.","value":"var(--sf-border-width-1) var(--sf-border-style) var(--sf-color-border)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-scale","tier":"PUBLIC","role":"knob","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"Global border-width multiplier. Set to 0 for borderless UI; 0.5 for hairline-only; 2 to double all border widths across the system.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-strong","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border shorthands","description":"Ready-to-use border shorthand values (width + style + color) for the three most common border weights.","note":"Strong-emphasis border shorthand.","value":"var(--sf-border-width-1) var(--sf-border-style) var(--sf-color-border--strong)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-style","tier":"PUBLIC","role":"knob","namespace":"border","category":"Core tokens","group":"Border style","description":"Global border-style default (solid, dashed, etc.).","note":"Global border-style default applied across all border tokens.","value":"solid","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-subtle","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border shorthands","description":"Ready-to-use border shorthand values (width + style + color) for the three most common border weights.","note":"Low-contrast subtle border shorthand.","value":"var(--sf-border-width-1) var(--sf-border-style) var(--sf-color-border--subtle)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-width-1","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"Standard 1px border width.","value":"calc(1px * var(--sf-border-scale, 1))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-width-2","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"Medium 2px border width. Common for focus outlines.","value":"calc(2px * var(--sf-border-scale, 1))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-width-3","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"Thick 3px border width.","value":"calc(3px * var(--sf-border-scale, 1))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-width-4","tier":"PUBLIC","role":"consumption","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"Extra-thick 4px border width for decorative borders.","value":"calc(4px * var(--sf-border-scale, 1))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-border-width-hairline","tier":"PUBLIC","role":"knob","namespace":"border","category":"Core tokens","group":"Border widths","description":"Raw border-width values. Use the shorthands above unless you need to override just the width.","note":"1px border width (hairline).","value":"0.5px","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-box-border-color","tier":"PUBLIC","role":"consumption","namespace":"box","category":"Layout tokens","group":"Box","description":"Border, background, and padding tokens for the box layout primitive.","note":"Border color for the box layout primitive.","value":"var(--sf-color-border)","aliasOf":"--sf-color-border","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-box-border-width","tier":"PUBLIC","role":"knob","namespace":"box","category":"Layout tokens","group":"Box","description":"Border, background, and padding tokens for the box layout primitive.","note":"Border width for the box layout primitive.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-box-padding","tier":"PUBLIC","role":"consumption","namespace":"box","category":"Layout tokens","group":"Box","description":"Border, background, and padding tokens for the box layout primitive.","note":"Inner padding for the box layout primitive.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-breakout-width","tier":"PUBLIC","role":"consumption","namespace":"breakout","category":"Layout tokens","group":"Content grid (breakout pattern)","description":"Breakout width and content width for the content-grid pattern (full-bleed breakouts inside a constrained column).","note":"Width of full-bleed breakout elements inside a content grid.","value":"var(--sf-container-wide)","aliasOf":"--sf-container-wide","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-btn-padding-block","tier":"PUBLIC","role":"consumption","namespace":"btn","category":"Component tokens","group":"BUTTON TOKENS","description":"Padding and radius tokens that control button geometry. Override these to give buttons a distinct visual language from form fields.","note":"","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-btn-padding-inline","tier":"PUBLIC","role":"consumption","namespace":"btn","category":"Component tokens","group":"BUTTON TOKENS","description":"Padding and radius tokens that control button geometry. Override these to give buttons a distinct visual language from form fields.","note":"","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-btn-radius","tier":"PUBLIC","role":"consumption","namespace":"btn","category":"Component tokens","group":"BUTTON TOKENS","description":"Padding and radius tokens that control button geometry. Override these to give buttons a distinct visual language from form fields.","note":"","value":"var(--sf-radius-m)","aliasOf":"--sf-radius-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-caret-color","tier":"PUBLIC","role":"consumption","namespace":"caret","category":"Core tokens","group":"Focus / form colors","description":"Focus ring and form caret colors. Centralised here so keyboard navigation is consistently styled.","note":"Cursor caret color inside text inputs and contenteditable elements.","value":"var(--sf-color-action)","aliasOf":"--sf-color-action","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-center-gutter","tier":"PUBLIC","role":"consumption","namespace":"center","category":"Layout tokens","group":"Center","description":"Max-width and gutter for the center layout primitive.","note":"Minimum side gutter for the center layout.","value":"var(--sf-gutter)","aliasOf":"--sf-gutter","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-center-max","tier":"PUBLIC","role":"consumption","namespace":"center","category":"Layout tokens","group":"Center","description":"Max-width and gutter for the center layout primitive.","note":"Maximum width for the center layout.","value":"var(--sf-container-default)","aliasOf":"--sf-container-default","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-cluster-align","tier":"PUBLIC","role":"knob","namespace":"cluster","category":"Layout tokens","group":"Cluster","description":"Configuration tokens for the cluster layout (inline wrapped items).","note":"Vertical alignment of cluster items (align-items value).","value":"center","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-cluster-gap","tier":"PUBLIC","role":"consumption","namespace":"cluster","category":"Layout tokens","group":"Cluster","description":"Configuration tokens for the cluster layout (inline wrapped items).","note":"Gap between wrapped inline items in the cluster layout.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-cluster-justify","tier":"PUBLIC","role":"knob","namespace":"cluster","category":"Layout tokens","group":"Cluster","description":"Configuration tokens for the cluster layout (inline wrapped items).","note":"Horizontal justification of the cluster (justify-content value).","value":"flex-start","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-code-font-size","tier":"PUBLIC","role":"knob","namespace":"code","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for inline
and . Usually slightly smaller than body text so monospace doesn't feel oversized.","value":"0.875em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed elements. Usually a subtle tint of the inset surface.","value":"var(--sf-color-inset)","aliasOf":"--sf-color-inset","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-code-text","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Text color for inline code and monospace preformatted text.","value":"oklch(from var(--sf-color-code-bg) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
. Typically slightly negative at large sizes.","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-line-height","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
. Tighter than body to avoid excessive whitespace at large sizes.","value":"var(--sf-leading-tight)","aliasOf":"--sf-leading-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-max-width","tier":"PUBLIC","role":"knob","namespace":"h1","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none (unconstrained). Set to a ch value (e.g. 20ch) to prevent wide headings from spanning the full column on large screens.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-size","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-4xl)","aliasOf":"--sf-text-4xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for
.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
.","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-line-height","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
.","value":"var(--sf-leading-tight)","aliasOf":"--sf-leading-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-max-width","tier":"PUBLIC","role":"knob","namespace":"h2","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-size","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-3xl)","aliasOf":"--sf-text-3xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for
.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-line-height","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
.","value":"var(--sf-leading-snug)","aliasOf":"--sf-leading-snug","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-max-width","tier":"PUBLIC","role":"knob","namespace":"h3","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-size","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-2xl)","aliasOf":"--sf-text-2xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for
.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-line-height","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
.","value":"var(--sf-leading-snug)","aliasOf":"--sf-leading-snug","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-max-width","tier":"PUBLIC","role":"knob","namespace":"h4","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-size","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-xl)","aliasOf":"--sf-text-xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for
.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-line-height","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
.","value":"var(--sf-leading-normal)","aliasOf":"--sf-leading-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-max-width","tier":"PUBLIC","role":"knob","namespace":"h5","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-size","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-l)","aliasOf":"--sf-text-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for
.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for
.","value":"var(--sf-tracking-wide)","aliasOf":"--sf-tracking-wide","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-line-height","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for
.","value":"var(--sf-leading-normal)","aliasOf":"--sf-leading-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-max-width","tier":"PUBLIC","role":"knob","namespace":"h6","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for
. Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-size","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for
.","value":"var(--sf-text-m)","aliasOf":"--sf-text-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height","tier":"PUBLIC","role":"consumption","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Total height of the sticky page header. Used by --sf-sticky-offset to prevent content from hiding under it.","value":"clamp( var(--sf-header-height-mobile), calc((var(--sf-header-height-desktop) - var(--sf-header-height-mobile)) / ((var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * 1rem) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-header-height-mobile)), var(--sf-header-height-desktop))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height-desktop","tier":"PUBLIC","role":"knob","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Header height at desktop breakpoints.","value":"5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height-mobile","tier":"PUBLIC","role":"knob","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Header height at mobile breakpoints.","value":"3.5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-color","tier":"PUBLIC","role":"consumption","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Text color for all headings (h1–h6). Alias of --sf-color-heading.","value":"var(--sf-color-heading)","aliasOf":"--sf-color-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-font-family","tier":"PUBLIC","role":"consumption","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font family for all headings. Alias of --sf-font-heading.","value":"var(--sf-font-heading)","aliasOf":"--sf-font-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-text-wrap","tier":"PUBLIC","role":"knob","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"text-wrap for headings. 'balance' prevents orphaned short last lines in multi-line headings.","value":"balance","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-2xl","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"2× large icon size (~40px+). Hero or onboarding icons.","value":"4em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-bg","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Background color for boxed icon containers.","value":"var(--sf-color-inset)","aliasOf":"--sf-color-inset","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-border","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Border for boxed icon containers.","value":"var(--sf-border-width-1) solid var(--sf-color-border)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-pad","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Padding inside boxed icon containers.","value":"0.5em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-radius","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Border radius for boxed icon containers.","value":"var(--sf-radius-s)","aliasOf":"--sf-radius-s","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-l","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Large icon size (~24px). Standalone icon buttons.","value":"2em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-m","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Medium icon size (~20px). Default for inline and button icons.","value":"1.5em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-s","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Small icon size (~16px). Dense UI chrome.","value":"1em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-xl","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Extra-large icon size (~32px). Feature icons.","value":"3em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-xs","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Extra-small icon size (~12px). Inline indicators.","value":"0.875em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-imposter-margin","tier":"PUBLIC","role":"consumption","namespace":"imposter","category":"Layout tokens","group":"Imposter (centered absolute/fixed overlay)","description":"Margin for the imposter layout (centered fixed/absolute overlay).","note":"Margin between the imposter overlay and the viewport edges.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-active","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"is","category":"Core tokens","group":"INTERACTION STATE FLAGS","description":"Integer flags toggled by JS or CSS :has() to drive numeric branching in calc() expressions. Set to 1 to activate the state; 0 is the default off state.","note":"Integer state flag for the active state. Set to 1 (via JS or .is-active) to drive branching calc() expressions. 0 = default (inactive).","value":"0","aliasOf":null,"registered":true,"syntax":"
rules inside .prose.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-list-gap","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Gap between list items inside .prose.","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-marker-color","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Color of list bullets and ordered-list numbers inside .prose.","value":"var(--sf-color-primary)","aliasOf":"--sf-color-primary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-media-margin","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Block margin around images, video, and figures inside .prose.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-media-radius","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Border radius applied to images and media inside .prose.","value":"var(--sf-radius-m)","aliasOf":"--sf-radius-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-nested-list-gap","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Gap between items in nested lists inside .prose.","value":"var(--sf-space-2xs)","aliasOf":"--sf-space-2xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-paragraph","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Layout tokens","group":"Prose","description":"Max-width for the prose layout primitive (long-form reading column).","note":"Max width of prose paragraphs (layout token for the prose layout).","value":"var(--sf-content-gap)","aliasOf":"--sf-content-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-table-pad","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Cell padding for tables inside .prose.","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-2xl","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"2× large radius (~20px). Rounded card variants.","note":"2× large radius (~20px). Rounded card variants.","value":"calc(24px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":" '),tg=g(''),ag=g(' · '),og=g(' '),sg=g(' Reset all overrides?
Apply a curated set of overrides with one click. Existing overrides outside the theme's scope are preserved.
and . Usually slightly smaller than body text so monospace doesn't feel oversized.","value":"0.875em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Primary interactive color. Applied to filled buttons, active indicators, and brand accent surfaces.","value":"light-dark(var(--sf-color-action-source-light), var(--sf-color-action-source-dark, oklch(from var(--sf-color-action-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Action color at pressed/active brightness.","value":"var(--sf-color-action-xdark)","aliasOf":"--sf-color-action-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Action color at hover brightness.","value":"var(--sf-color-action-darker)","aliasOf":"--sf-color-action-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Very light action shade. Hover fills on white surfaces, badge backgrounds.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-100), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Light action shade. Subtle fills and outlined badge backgrounds.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-200), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Light-mid action shade. Borders on light backgrounds, low-emphasis fills.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-300), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Mid-light action shade. Disabled state fills, decorative accents.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-400), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Lightest action tint. Background fill for subtle action-tinted surfaces.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-50), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Mid action shade — the 'pure' hue. Accessible on both light and dark backgrounds.","value":"var(--sf-color-action)","aliasOf":"--sf-color-action","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Mid-dark action shade. Text on light surfaces, icon fills.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Dark action shade. Strong text and icon fills on light backgrounds.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Very dark action shade. High-contrast text on white.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Near-black action shade. Extreme contrast on white surfaces.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Darkest action tint. Near-black for dark-theme surface accents.","value":"color-mix(in oklab, var(--sf-color-action) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"10% opacity action tint. Subtle hover or selected-row background.","value":"oklch(from var(--sf-color-action) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"30% opacity action tint.","value":"oklch(from var(--sf-color-action) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"5% opacity action tint. Barely-there hover highlight.","value":"oklch(from var(--sf-color-action) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"50% opacity action tint. Mid-transparency badge or overlay.","value":"oklch(from var(--sf-color-action) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"80% opacity action tint.","value":"oklch(from var(--sf-color-action) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Deep action shade for high-contrast contexts.","value":"var(--sf-color-action-600)","aliasOf":"--sf-color-action-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Near-transparent action tint for ghost-button hover backgrounds.","value":"var(--sf-color-action-a5)","aliasOf":"--sf-color-action-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Light action shade for soft accents.","value":"var(--sf-color-action-400)","aliasOf":"--sf-color-action-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Medium action fill — outlined button hover backgrounds.","value":"var(--sf-color-action-a30)","aliasOf":"--sf-color-action-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-action. Enables smooth CSS transitions when toggling between light and dark mode; without registration the browser cannot interpolate and transitions snap at 50%.","value":"oklch(0.70 0.198 235)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the action color. Animate this to smoothly transition between light and dark brand themes.","note":"OKLCH lightness source for the action color. Animate this to smoothly transition between light and dark brand themes.","value":"oklch(0.50 0.22 235)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Lightest action tint — selected rows, active nav, chips.","value":"var(--sf-color-action-a10)","aliasOf":"--sf-color-action-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Near-black action shade for maximum contrast on light surfaces.","value":"var(--sf-color-action-950)","aliasOf":"--sf-color-action-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Near-white action shade for maximum contrast on dark surfaces.","value":"var(--sf-color-action-50)","aliasOf":"--sf-color-action-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Extra-dark action shade.","value":"var(--sf-color-action-800)","aliasOf":"--sf-color-action-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-action-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"action","description":"Semantic action-color scale derived from --sf-color-action. Covers fills, hover/active states, and ghost variants for primary interactive elements.","note":"Extra-light action shade.","value":"var(--sf-color-action-200)","aliasOf":"--sf-color-action-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Secondary interactive color for supporting actions and secondary buttons.","value":"light-dark(var(--sf-color-base-source-light), var(--sf-color-base-source-dark, oklch(from var(--sf-color-base-source-light) clamp(0.16, calc(1.18 - l), 0.24) calc(c * 0.5) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Base color at pressed/active brightness.","value":"var(--sf-color-base-xdark)","aliasOf":"--sf-color-base-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Base color at hover brightness.","value":"var(--sf-color-base-darker)","aliasOf":"--sf-color-base-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Very light base shade. Hover fills, badge backgrounds.","value":"color-mix(in oklab, var(--sf-color-text) var(--sf-palette-mix-100), var(--sf-color-base))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Light base shade.","value":"color-mix(in oklab, var(--sf-color-text) var(--sf-palette-mix-200), var(--sf-color-base))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Light-mid base shade. Borders on light backgrounds.","value":"color-mix(in oklab, var(--sf-color-text) var(--sf-palette-mix-300), var(--sf-color-base))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Mid-light base shade. Disabled fills.","value":"color-mix(in oklab, var(--sf-color-text) var(--sf-palette-mix-400), var(--sf-color-base))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Lightest base tint.","value":"color-mix(in oklab, var(--sf-color-text) var(--sf-palette-mix-50), var(--sf-color-base))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Mid base shade — the 'pure' hue.","value":"var(--sf-color-base)","aliasOf":"--sf-color-base","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Mid-dark base shade. Text on light surfaces.","value":"color-mix(in oklab, var(--sf-color-base) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Dark base shade.","value":"color-mix(in oklab, var(--sf-color-base) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Very dark base shade.","value":"color-mix(in oklab, var(--sf-color-base) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Near-black base shade.","value":"color-mix(in oklab, var(--sf-color-base) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Darkest base tint.","value":"color-mix(in oklab, var(--sf-color-base) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"10% opacity base tint.","value":"oklch(from var(--sf-color-base) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"30% opacity base tint.","value":"oklch(from var(--sf-color-base) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"5% opacity base tint.","value":"oklch(from var(--sf-color-base) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"50% opacity base tint.","value":"oklch(from var(--sf-color-base) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"80% opacity base tint.","value":"oklch(from var(--sf-color-base) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Deep base shade.","value":"var(--sf-color-base-600)","aliasOf":"--sf-color-base-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Near-transparent base tint for ghost-button hover backgrounds.","value":"var(--sf-color-base-a5)","aliasOf":"--sf-color-base-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Light base shade.","value":"var(--sf-color-base-400)","aliasOf":"--sf-color-base-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Medium base fill.","value":"var(--sf-color-base-a30)","aliasOf":"--sf-color-base-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-base.","value":"oklch(0.22 0.003 250)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the base color.","note":"OKLCH lightness source for the base color.","value":"oklch(0.96 0.006 250)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Lightest base tint.","value":"var(--sf-color-base-a10)","aliasOf":"--sf-color-base-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Near-black base shade.","value":"var(--sf-color-base-950)","aliasOf":"--sf-color-base-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Near-white base shade.","value":"var(--sf-color-base-50)","aliasOf":"--sf-color-base-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Extra-dark base shade.","value":"var(--sf-color-base-800)","aliasOf":"--sf-color-base-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-base-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"base","description":"Semantic base-color scale derived from --sf-color-base. Covers fills, hover/active states, and ghost variants for secondary interactive elements.","note":"Extra-light base shade.","value":"var(--sf-color-base-200)","aliasOf":"--sf-color-base-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Surfaces","description":"Background surface tokens from page-level to raised cards. Layer these to communicate visual depth.","note":"Base page / component background. The canvas all other surfaces layer on top of.","value":"oklch(from var(--sf-color-base) calc(l + 0.02) c h)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background tint for pressed/active interactive elements.","value":"oklch(from var(--sf-color-neutral) l c h / 0.12)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg--disabled","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background for disabled interactive elements.","value":"var(--sf-color-inset)","aliasOf":"--sf-color-inset","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg--focus","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background tint for focused interactive elements.","value":"oklch(from var(--sf-color-action) l c h / 0.06)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background tint for hovered interactive elements (rows, list items, etc.).","value":"oklch(from var(--sf-color-neutral) l c h / 0.08)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-bg--selected","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background for selected items (checked rows, active nav links).","value":"oklch(from var(--sf-color-action) l c h / 0.1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-black","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Selection & backdrop","description":"Absolute reference colors and overlay tints for selections, marks, and backdrops.","note":"Absolute black reference value.","value":"oklch(0% 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Borders","description":"Semantic border colors for dividers, component edges, and focus indicators.","note":"Default border for dividers and component edges.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.70, calc(l + 0.35), 0.95) 0.005 h), oklch(from var(--sf-color-neutral) clamp(0.25, calc(l - 0.3), 0.55) 0.005 h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border--disabled","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Border alpha tokens","description":"Semi-transparent border variants for overlays and glass-morphism effects.","note":"Semi-transparent border for disabled element edges.","value":"oklch(from var(--sf-color-border--subtle) l 0 h / 0.5)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border--focus","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Borders","description":"Semantic border colors for dividers, component edges, and focus indicators.","note":"Focus indicator border, used alongside --sf-focus-ring-color.","value":"var(--sf-color-action)","aliasOf":"--sf-color-action","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border--strong","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Borders","description":"Semantic border colors for dividers, component edges, and focus indicators.","note":"Stronger border for visually prominent edges and active outlines.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.55, calc(l + 0.1), 0.85) 0.02 h), oklch(from var(--sf-color-neutral) clamp(0.38, calc(l - 0.1), 0.65) 0.02 h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border--subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Borders","description":"Semantic border colors for dividers, component edges, and focus indicators.","note":"Low-contrast border for subtle separation without strong visual weight.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.75, calc(l + 0.4), 0.97) 0.005 h), oklch(from var(--sf-color-neutral) clamp(0.20, calc(l - 0.38), 0.45) 0.005 h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-border--translucent","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Border alpha tokens","description":"Semi-transparent border variants for overlays and glass-morphism effects.","note":"Translucent border for glass-morphism and frosted surfaces.","value":"oklch(from var(--sf-color-neutral) l c h / 0.15)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-code-bg","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Interactive states","description":"Background fills for generic interactive states (hover, focus, active, selected, disabled). Apply to any element that needs state feedback.","note":"Background for inline elements. Usually a subtle tint of the inset surface.","value":"var(--sf-color-inset)","aliasOf":"--sf-color-inset","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-code-text","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Text color for inline code and monospace preformatted text.","value":"oklch(from var(--sf-color-code-bg) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Destructive / danger state color. Used for delete actions, error alerts, and critical warnings.","value":"light-dark(var(--sf-color-danger-source-light), var(--sf-color-danger-source-dark, oklch(from var(--sf-color-danger-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Medium danger fill for icon backgrounds and badge fills.","value":"oklch(from var(--sf-color-danger) l c h / 0.3)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-danger.","value":"oklch(0.71 0.198 12)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"STATUS COLORS (-source-light source tokens)","description":"OKLCH lightness source for the danger status color (covers destructive actions and form validation errors).","note":"OKLCH lightness source for the danger status color (covers destructive actions and form validation errors).","value":"oklch(0.48 0.22 12)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger-strong","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"High-contrast danger color for alert body text and icons.","value":"light-dark( oklch(from var(--sf-color-danger-source-light) calc(l - 0.1) c h), oklch(from var(--sf-color-danger) clamp(0.70, calc(l + 0.15), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-danger-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Light danger tint for error row backgrounds and alert container fills.","value":"oklch(from var(--sf-color-danger) l c h / 0.1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-dim","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Selection & backdrop","description":"Absolute reference colors and overlay tints for selections, marks, and backdrops.","note":"Backdrop overlay color for modals, drawers, and lightboxes.","value":"oklch(0 0 0 / 0.5)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-heading","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Heading text color. Slightly stronger contrast than body text for visual hierarchy.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.05, calc(l - 0.4 - var(--sf-contrast-bias)), 0.35) c h), oklch(from var(--sf-color-neutral) clamp(0.70, calc(l + 0.25 + var(--sf-contrast-bias)), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Informational color for neutral tips, hints, and non-urgent notices.","value":"light-dark(var(--sf-color-info-source-light), var(--sf-color-info-source-dark, oklch(from var(--sf-color-info-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Medium info fill for info icons and hint chips.","value":"oklch(from var(--sf-color-info) l c h / 0.3)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-info.","value":"oklch(0.71 0.162 235)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"STATUS COLORS (-source-light source tokens)","description":"OKLCH lightness source for the info status color.","note":"OKLCH lightness source for the info status color.","value":"oklch(0.48 0.18 235)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info-strong","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"High-contrast info color for hint body text.","value":"light-dark( oklch(from var(--sf-color-info-source-light) calc(l - 0.1) c h), oklch(from var(--sf-color-info) clamp(0.70, calc(l + 0.15), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-info-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Light info tint for informational note backgrounds.","value":"oklch(from var(--sf-color-info) l c h / 0.1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-inset","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Surfaces","description":"Background surface tokens from page-level to raised cards. Layer these to communicate visual depth.","note":"Slightly inset surface for nested areas — inputs, code blocks, sidebar panels.","value":"oklch(from var(--sf-color-base) calc(l - 0.02) c h)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-inverse","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Surfaces","description":"Background surface tokens from page-level to raised cards. Layer these to communicate visual depth.","note":"Inverted (dark-on-light / light-on-dark) surface for high-contrast banners or tooltips.","value":"oklch(from var(--sf-color-base) calc(1 - l) c h)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Default hyperlink color.","value":"light-dark( oklch(from var(--sf-color-action) clamp(0, min(l - 0.07, 0.48), 1) c h), oklch(from var(--sf-color-action) clamp(0.68, l, 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Link color when actively pressed.","value":"light-dark( oklch(from var(--sf-color-action) clamp(0, min(l - 0.21, 0.34), 1) c h), oklch(from var(--sf-color-action) clamp(0, max(l + 0.15, 0.74), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link--disabled","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Disabled link color (low contrast, no interaction).","value":"var(--sf-color-text--disabled)","aliasOf":"--sf-color-text--disabled","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Link color on hover.","value":"light-dark( oklch(from var(--sf-color-action) clamp(0, min(l - 0.15, 0.40), 1) c h), oklch(from var(--sf-color-action) clamp(0, max(l + 0.10, 0.68), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link--underline","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Link alpha token","description":"Semi-transparent underline color token used to tint the link underline independently from the link text color.","note":"Color of the link underline decoration. Defaults to a semi-transparent variant of the link color.","value":"oklch(from var(--sf-color-action) l c h / 0.3)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-link--visited","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Visited link color.","value":"light-dark( oklch(from var(--sf-color-action) clamp(0, min(l - 0.07, 0.48), 1) c calc(h + 60)), oklch(from var(--sf-color-action) clamp(0.68, l, 1) c calc(h + 60)) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-mark-bg","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Selection & mark","description":"Background and text colors for browser text selections and highlights. Adapts automatically in dark mode.","note":"Background color for highlighted elements.","value":"oklch(from var(--sf-color-warning) l c h / 0.25)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-mark-text","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Selection & backdrop","description":"Absolute reference colors and overlay tints for selections, marks, and backdrops.","note":"Text color inside highlighted elements.","value":"inherit","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Neutral interactive color for low-emphasis actions and tertiary buttons.","value":"light-dark(var(--sf-color-neutral-source-light), var(--sf-color-neutral-source-dark, oklch(from var(--sf-color-neutral-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Neutral color at pressed/active brightness.","value":"var(--sf-color-neutral-xdark)","aliasOf":"--sf-color-neutral-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Neutral color at hover brightness.","value":"var(--sf-color-neutral-darker)","aliasOf":"--sf-color-neutral-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Very light neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-100), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Light neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-200), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Light-mid neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-300), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Mid-light neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-400), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Lightest neutral tint.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-50), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Mid neutral shade — the 'pure' hue.","value":"var(--sf-color-neutral)","aliasOf":"--sf-color-neutral","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Mid-dark neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Dark neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Very dark neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Near-black neutral shade.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Darkest neutral tint.","value":"color-mix(in oklab, var(--sf-color-neutral) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"10% opacity neutral tint.","value":"oklch(from var(--sf-color-neutral) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"30% opacity neutral tint.","value":"oklch(from var(--sf-color-neutral) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"5% opacity neutral tint.","value":"oklch(from var(--sf-color-neutral) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"50% opacity neutral tint.","value":"oklch(from var(--sf-color-neutral) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"80% opacity neutral tint.","value":"oklch(from var(--sf-color-neutral) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Deep neutral shade for high-contrast contexts.","value":"var(--sf-color-neutral-600)","aliasOf":"--sf-color-neutral-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Near-transparent neutral tint for ghost-button hover backgrounds.","value":"var(--sf-color-neutral-a5)","aliasOf":"--sf-color-neutral-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Light neutral shade.","value":"var(--sf-color-neutral-400)","aliasOf":"--sf-color-neutral-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Muted neutral fill for low-emphasis contexts.","value":"var(--sf-color-neutral-a30)","aliasOf":"--sf-color-neutral-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-neutral.","value":"oklch(0.69 0.0225 260)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the neutral color.","note":"OKLCH lightness source for the neutral color.","value":"oklch(0.52 0.025 260)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Lightest neutral semantic tint.","value":"var(--sf-color-neutral-a10)","aliasOf":"--sf-color-neutral-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Near-black neutral shade.","value":"var(--sf-color-neutral-950)","aliasOf":"--sf-color-neutral-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Near-white neutral shade.","value":"var(--sf-color-neutral-50)","aliasOf":"--sf-color-neutral-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Extra-dark neutral shade.","value":"var(--sf-color-neutral-800)","aliasOf":"--sf-color-neutral-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-neutral-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"neutral","description":"Semantic neutral-color scale derived from --sf-color-neutral. Useful for muted UI chrome.","note":"Extra-light neutral shade.","value":"var(--sf-color-neutral-200)","aliasOf":"--sf-color-neutral-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-overlay","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Surfaces","description":"Background surface tokens from page-level to raised cards. Layer these to communicate visual depth.","note":"Overlay surface for floating panels, sheets, and modals.","value":"oklch(from var(--sf-color-base) l c h / 0.9)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Raw primary palette token aliased from the action role by default. Override to decouple primary from action.","value":"light-dark(var(--sf-color-primary-source-light), var(--sf-color-primary-source-dark, oklch(from var(--sf-color-primary-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Primary color at pressed/active brightness.","value":"var(--sf-color-primary-xdark)","aliasOf":"--sf-color-primary-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Primary color at hover brightness.","value":"var(--sf-color-primary-darker)","aliasOf":"--sf-color-primary-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Very light primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-100), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Light primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-200), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Light-mid primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-300), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Mid-light primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-400), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Lightest primary tint.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-50), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Mid primary shade — the 'pure' hue.","value":"var(--sf-color-primary)","aliasOf":"--sf-color-primary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Mid-dark primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Dark primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Very dark primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Near-black primary shade.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Darkest primary tint.","value":"color-mix(in oklab, var(--sf-color-primary) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"10% opacity primary tint.","value":"oklch(from var(--sf-color-primary) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"30% opacity primary tint.","value":"oklch(from var(--sf-color-primary) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"5% opacity primary tint.","value":"oklch(from var(--sf-color-primary) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"50% opacity primary tint.","value":"oklch(from var(--sf-color-primary) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"80% opacity primary tint.","value":"oklch(from var(--sf-color-primary) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Deep primary shade.","value":"var(--sf-color-primary-600)","aliasOf":"--sf-color-primary-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Near-transparent primary tint for ghost-button hover backgrounds.","value":"var(--sf-color-primary-a5)","aliasOf":"--sf-color-primary-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Light primary shade.","value":"var(--sf-color-primary-400)","aliasOf":"--sf-color-primary-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Muted primary fill.","value":"var(--sf-color-primary-a30)","aliasOf":"--sf-color-primary-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-primary.","value":"oklch(0.715 0.243 264)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the primary color.","note":"OKLCH lightness source for the primary color.","value":"oklch(0.47 0.27 264)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Lightest primary semantic tint.","value":"var(--sf-color-primary-a10)","aliasOf":"--sf-color-primary-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Near-black primary shade.","value":"var(--sf-color-primary-950)","aliasOf":"--sf-color-primary-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Near-white primary shade.","value":"var(--sf-color-primary-50)","aliasOf":"--sf-color-primary-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Extra-dark primary shade.","value":"var(--sf-color-primary-800)","aliasOf":"--sf-color-primary-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-primary-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"primary","description":"Semantic primary-color scale derived from --sf-color-primary. Covers fills, hover/active states, and ghost variants for the primary palette role.","note":"Extra-light primary shade.","value":"var(--sf-color-primary-200)","aliasOf":"--sf-color-primary-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-raised","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Surfaces","description":"Background surface tokens from page-level to raised cards. Layer these to communicate visual depth.","note":"Elevated card surface that floats above the page background.","value":"oklch(from var(--sf-color-base) calc(l + 0.04) c h)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-scheme","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Color scheme","description":"Preferred color-scheme hint sent to the browser (light / dark / normal).","note":"Preferred color scheme hint (light / dark / normal). Sent to the browser to influence UA chrome styling.","value":"light dark","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Raw secondary palette token for the secondary brand color.","value":"light-dark(var(--sf-color-secondary-source-light), var(--sf-color-secondary-source-dark, oklch(from var(--sf-color-secondary-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Secondary color at pressed/active brightness.","value":"var(--sf-color-secondary-xdark)","aliasOf":"--sf-color-secondary-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Secondary color at hover brightness.","value":"var(--sf-color-secondary-darker)","aliasOf":"--sf-color-secondary-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Very light secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-100), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Light secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-200), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Light-mid secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-300), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Mid-light secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-400), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Lightest secondary tint.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-50), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Mid secondary shade — the 'pure' hue.","value":"var(--sf-color-secondary)","aliasOf":"--sf-color-secondary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Mid-dark secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Dark secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Very dark secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Near-black secondary shade.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Darkest secondary tint.","value":"color-mix(in oklab, var(--sf-color-secondary) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"10% opacity secondary tint.","value":"oklch(from var(--sf-color-secondary) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"30% opacity secondary tint.","value":"oklch(from var(--sf-color-secondary) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"5% opacity secondary tint.","value":"oklch(from var(--sf-color-secondary) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"50% opacity secondary tint.","value":"oklch(from var(--sf-color-secondary) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"80% opacity secondary tint.","value":"oklch(from var(--sf-color-secondary) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Deep secondary shade.","value":"var(--sf-color-secondary-600)","aliasOf":"--sf-color-secondary-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Near-transparent secondary tint for ghost-button hover backgrounds.","value":"var(--sf-color-secondary-a5)","aliasOf":"--sf-color-secondary-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Light secondary shade.","value":"var(--sf-color-secondary-400)","aliasOf":"--sf-color-secondary-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Muted secondary fill.","value":"var(--sf-color-secondary-a30)","aliasOf":"--sf-color-secondary-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-secondary.","value":"oklch(0.84 0.036 264)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the secondary color.","note":"OKLCH lightness source for the secondary color.","value":"oklch(0.22 0.04 264)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Lightest secondary semantic tint.","value":"var(--sf-color-secondary-a10)","aliasOf":"--sf-color-secondary-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Near-black secondary shade.","value":"var(--sf-color-secondary-950)","aliasOf":"--sf-color-secondary-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Near-white secondary shade.","value":"var(--sf-color-secondary-50)","aliasOf":"--sf-color-secondary-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Extra-dark secondary shade.","value":"var(--sf-color-secondary-800)","aliasOf":"--sf-color-secondary-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-secondary-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"secondary","description":"Semantic secondary-color scale derived from --sf-color-secondary.","note":"Extra-light secondary shade.","value":"var(--sf-color-secondary-200)","aliasOf":"--sf-color-secondary-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-selection-bg","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Selection","description":"Text-selection background color.","note":"Background color applied to browser text selections.","value":"light-dark( oklch(from var(--sf-color-action-source-light) l c h / 0.28), oklch(from var(--sf-color-action-source-dark) clamp(0.62, calc(0.93 - l * 0.4), 0.78) c h / 0.55) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-selection-text","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Selection & backdrop","description":"Absolute reference colors and overlay tints for selections, marks, and backdrops.","note":"Text color inside browser text selections.","value":"inherit","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Positive / success color for confirmation messages and completed-state indicators.","value":"light-dark(var(--sf-color-success-source-light), var(--sf-color-success-source-dark, oklch(from var(--sf-color-success-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Medium success fill for success icons and status chips.","value":"oklch(from var(--sf-color-success) l c h / 0.3)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-success.","value":"oklch(0.70 0.144 145)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"STATUS COLORS (-source-light source tokens)","description":"OKLCH lightness source for the success status color.","note":"OKLCH lightness source for the success status color.","value":"oklch(0.50 0.16 145)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success-strong","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"High-contrast success color for confirmation message text.","value":"light-dark( oklch(from var(--sf-color-success-source-light) calc(l - 0.15) c h), oklch(from var(--sf-color-success) clamp(0.70, calc(l + 0.15), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-success-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Light success tint for confirmation backgrounds.","value":"oklch(from var(--sf-color-success) l c h / 0.12)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-surface","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Resolved color tokens","description":"High-level semantic color aliases. Each resolves to the matching palette source token and adapts automatically between light and dark mode. Start here when applying your brand palette.","note":"Elevated surface color (e.g. card background one step above page background).","value":"var(--sf-color-base)","aliasOf":"--sf-color-base","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Raw tertiary palette token for the third brand color.","value":"light-dark(var(--sf-color-tertiary-source-light), var(--sf-color-tertiary-source-dark, oklch(from var(--sf-color-tertiary-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary--active","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Tertiary color at pressed/active brightness.","value":"var(--sf-color-tertiary-xdark)","aliasOf":"--sf-color-tertiary-xdark","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary--hover","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Tertiary color at hover brightness.","value":"var(--sf-color-tertiary-darker)","aliasOf":"--sf-color-tertiary-darker","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-100","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Very light tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-100), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-200","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Light tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-200), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-300","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Light-mid tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-300), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-400","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Mid-light tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-400), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Lightest tertiary tint.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-50), var(--sf-color-surface))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-500","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Mid tertiary shade — the 'pure' hue.","value":"var(--sf-color-tertiary)","aliasOf":"--sf-color-tertiary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-600","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Mid-dark tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-600), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-700","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Dark tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-700), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-800","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Very dark tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-800), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-900","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Near-black tertiary shade.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-900), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-950","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Darkest tertiary tint.","value":"color-mix(in oklab, var(--sf-color-tertiary) var(--sf-palette-mix-950), var(--sf-color-text))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-a10","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"10% opacity tertiary tint.","value":"oklch(from var(--sf-color-tertiary) l c h / 0.10)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-a30","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"30% opacity tertiary tint.","value":"oklch(from var(--sf-color-tertiary) l c h / 0.30)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-a5","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"5% opacity tertiary tint.","value":"oklch(from var(--sf-color-tertiary) l c h / 0.05)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-a50","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"50% opacity tertiary tint.","value":"oklch(from var(--sf-color-tertiary) l c h / 0.50)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-a80","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"80% opacity tertiary tint.","value":"oklch(from var(--sf-color-tertiary) l c h / 0.80)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-darker","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Deep tertiary shade.","value":"var(--sf-color-tertiary-600)","aliasOf":"--sf-color-tertiary-600","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-ghost","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Near-transparent tertiary tint for ghost-button hover backgrounds.","value":"var(--sf-color-tertiary-a5)","aliasOf":"--sf-color-tertiary-a5","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-lighter","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Light tertiary shade.","value":"var(--sf-color-tertiary-400)","aliasOf":"--sf-color-tertiary-400","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Muted tertiary fill.","value":"var(--sf-color-tertiary-a30)","aliasOf":"--sf-color-tertiary-a30","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-tertiary.","value":"oklch(0.74 0.198 295)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"BRAND COLORS (-source-light source tokens, animatable)","description":"OKLCH lightness source for the tertiary color.","note":"OKLCH lightness source for the tertiary color.","value":"oklch(0.42 0.22 295)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Lightest tertiary semantic tint.","value":"var(--sf-color-tertiary-a10)","aliasOf":"--sf-color-tertiary-a10","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-superdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Near-black tertiary shade.","value":"var(--sf-color-tertiary-950)","aliasOf":"--sf-color-tertiary-950","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-superlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Near-white tertiary shade.","value":"var(--sf-color-tertiary-50)","aliasOf":"--sf-color-tertiary-50","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-xdark","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Extra-dark tertiary shade.","value":"var(--sf-color-tertiary-800)","aliasOf":"--sf-color-tertiary-800","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-tertiary-xlight","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"tertiary","description":"Semantic tertiary-color scale derived from --sf-color-tertiary.","note":"Extra-light tertiary shade.","value":"var(--sf-color-tertiary-200)","aliasOf":"--sf-color-tertiary-200","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Primary text color. Contrasts against --sf-color-bg for body copy.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.05, calc(l - 0.4 - var(--sf-contrast-bias)), 0.35) c h), oklch(from var(--sf-color-neutral) clamp(0.70, calc(l + 0.25 + var(--sf-contrast-bias)), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--disabled","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Text color for disabled UI elements. Intentionally low contrast.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.55, calc(l + 0.25), 0.82) c h), oklch(from var(--sf-color-neutral) clamp(0.25, calc(l - 0.2), 0.55) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--inverse","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Text color for use on dark/inverted backgrounds.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.85, calc(l + 0.4), 0.98) c h), oklch(from var(--sf-color-neutral) clamp(0.05, calc(l - 0.4), 0.35) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Muted text for metadata, timestamps, and low-priority annotations.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.35, calc(l - var(--sf-contrast-bias)), 0.62) c h), oklch(from var(--sf-color-neutral) clamp(0.48, calc(l + var(--sf-contrast-bias)), 0.74) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-action","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground color for text on action-colored backgrounds.","value":"oklch(from var(--sf-color-action) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-base","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on base-colored backgrounds.","value":"var(--sf-color-text)","aliasOf":"--sf-color-text","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-danger","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on danger-colored backgrounds.","value":"oklch(from var(--sf-color-danger) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-info","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on info-colored backgrounds.","value":"oklch(from var(--sf-color-info) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-inverse","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on inverted (dark-on-light / light-on-dark) backgrounds.","value":"oklch(from var(--sf-color-inverse) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-neutral","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text placed on neutral-colored backgrounds.","value":"oklch(from var(--sf-color-neutral) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-primary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text placed on primary-colored backgrounds.","value":"oklch(from var(--sf-color-primary) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-secondary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text placed on secondary-colored backgrounds.","value":"oklch(from var(--sf-color-secondary) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-success","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on success-colored backgrounds.","value":"oklch(from var(--sf-color-success) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-tertiary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text placed on tertiary-colored backgrounds.","value":"oklch(from var(--sf-color-tertiary) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--on-warning","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text-on-color","description":"Accessible foreground colors guaranteed to pass WCAG contrast on each colored background surface.","note":"Accessible foreground for text on warning-colored backgrounds.","value":"oklch(from var(--sf-color-warning) clamp(0.1, sign(var(--sf-contrast-threshold) - l) * 999, 0.95) 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--placeholder","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"Placeholder text color for inputs and textareas.","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.45, calc(l + 0.15), 0.75) c h), oklch(from var(--sf-color-neutral) clamp(0.35, calc(l - 0.1), 0.65) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-text--secondary","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Text","description":"Semantic text colors for every content role. All tokens adapt to light and dark mode automatically.","note":"De-emphasised secondary text (captions, labels, supporting copy).","value":"light-dark( oklch(from var(--sf-color-neutral-source-light) clamp(0.15, calc(l - 0.25 - var(--sf-contrast-bias)), 0.45) c h), oklch(from var(--sf-color-neutral) clamp(0.55, calc(l + 0.1 + var(--sf-contrast-bias)), 0.90) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Warning / caution color for non-critical alerts and degraded-state indicators.","value":"light-dark(var(--sf-color-warning-source-light), var(--sf-color-warning-source-dark, oklch(from var(--sf-color-warning-source-light) clamp(0.65, calc(0.95 - l * 0.5), 0.88) calc(c * 0.9) h)))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning-muted","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Medium warning fill for icons and caution chips.","value":"oklch(from var(--sf-color-warning) l c h / 0.3)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning-source-dark","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Registered dark counterpart of --sf-color-warning.","value":"oklch(0.65 0.153 80)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning-source-light","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"STATUS COLORS (-source-light source tokens)","description":"OKLCH lightness source for the warning status color.","note":"OKLCH lightness source for the warning status color.","value":"oklch(0.75 0.17 80)","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning-strong","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"High-contrast warning color for caution text.","value":"light-dark( oklch(from var(--sf-color-warning-source-light) calc(l - 0.25) c h), oklch(from var(--sf-color-warning) clamp(0.70, calc(l + 0.05), 1) c h) )","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-warning-subtle","tier":"PUBLIC","role":"consumption","namespace":"color","category":"Core tokens","group":"Status triplets","description":"Three-shade status triplets (subtle / muted / strong) for each status role. Use subtle for backgrounds, muted for fills, strong for text on light surfaces.","note":"Light warning tint for warning notification backgrounds.","value":"oklch(from var(--sf-color-warning) l c h / 0.12)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-color-white","tier":"PUBLIC","role":"knob","namespace":"color","category":"Core tokens","group":"Selection & backdrop","description":"Absolute reference colors and overlay tints for selections, marks, and backdrops.","note":"Absolute white reference value.","value":"oklch(100% 0 0)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-component-pad","tier":"PUBLIC","role":"consumption","namespace":"component","category":"Core tokens","group":"Output token @property registrations","description":"Standard inner padding for interactive components (buttons, form inputs, chips).","note":"Standard inner padding for interactive components (buttons, form inputs, chips).","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-container-default","tier":"PUBLIC","role":"knob","namespace":"container","category":"Core tokens","group":"Containers","description":"Max-width container tokens for page-level layout.","note":"Default content container max-width (~1200px).","value":"75rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-container-full","tier":"PUBLIC","role":"knob","namespace":"container","category":"Core tokens","group":"Containers","description":"Max-width container tokens for page-level layout.","note":"Full-width container — removes the max-width constraint.","value":"100%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-container-narrow","tier":"PUBLIC","role":"knob","namespace":"container","category":"Core tokens","group":"Containers","description":"Max-width container tokens for page-level layout.","note":"Narrow content max-width — ideal for article body and blog posts (~65ch).","value":"38rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-container-prose","tier":"PUBLIC","role":"knob","namespace":"container","category":"Core tokens","group":"Containers","description":"Max-width container tokens for page-level layout.","note":"Prose max-width — optimised for readability (~75ch).","value":"65ch","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-container-wide","tier":"PUBLIC","role":"knob","namespace":"container","category":"Core tokens","group":"Containers","description":"Max-width container tokens for page-level layout.","note":"Wide container for marketing / dashboard layouts (~1440px).","value":"90rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-content-gap","tier":"PUBLIC","role":"consumption","namespace":"content","category":"Core tokens","group":"Output token @property registrations","description":"Tight gap within related content (stack, flow, prose). Override globally to retune all tight primitives at once.","note":"Tight gap within related content (stack, flow, prose). Override globally to retune all tight primitives at once.","value":"var(--sf-space-s)","aliasOf":"--sf-space-s","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-content-intrinsic-size","tier":"PUBLIC","role":"knob","namespace":"content","category":"Macro tokens","group":"Content visibility","description":"intrinsic-size hint for content-visibility: auto (lazy off-screen rendering).","note":"Intrinsic-size hint for content-visibility: auto (prevents layout shift on first reveal).","value":"500px","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-content-width","tier":"PUBLIC","role":"consumption","namespace":"content","category":"Layout tokens","group":"Content grid (breakout pattern)","description":"Breakout width and content width for the content-grid pattern (full-bleed breakouts inside a constrained column).","note":"Max-width of the main content column in a content grid.","value":"var(--sf-container-default)","aliasOf":"--sf-container-default","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-contrast-bias","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"contrast","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Global text-contrast nudge. Positive values push derived reading-text colors toward the extremes (darker in light mode, lighter in dark). Default 0 (neutral).","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-contrast-threshold","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"contrast","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"OKLCH lightness crossover for auto-contrast on colored surfaces. Colors with L above this get dark text; below get light text. Default 0.6.","value":"0.6","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-cover-min-height","tier":"PUBLIC","role":"knob","namespace":"cover","category":"Layout tokens","group":"Cover","description":"Min-height and padding for the full-viewport cover layout.","note":"Minimum height of the cover layout (typically 100svh).","value":"100dvh","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-cover-padding","tier":"PUBLIC","role":"consumption","namespace":"cover","category":"Layout tokens","group":"Cover","description":"Min-height and padding for the full-viewport cover layout.","note":"Inner padding for the cover layout.","value":"var(--sf-section-pad)","aliasOf":"--sf-section-pad","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-current-font-weight","tier":"PUBLIC","role":"consumption","namespace":"current","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Inherits the current font-weight from context. Useful as a reset.","value":"var(--sf-font-weight-bold)","aliasOf":"--sf-font-weight-bold","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-display-l-line-height","tier":"PUBLIC","role":"knob","namespace":"display","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Line height for large display text (--sf-text-display-l). Very tight to avoid excessive gaps at oversized sizes.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-display-m-line-height","tier":"PUBLIC","role":"knob","namespace":"display","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Line height for medium display text (--sf-text-display-m).","value":"1.05","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-display-s-line-height","tier":"PUBLIC","role":"consumption","namespace":"display","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Line height for small display text (--sf-text-display-s).","value":"var(--sf-leading-tight)","aliasOf":"--sf-leading-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-divider-color","tier":"PUBLIC","role":"consumption","namespace":"divider","category":"Core tokens","group":"Divider","description":"Horizontal/vertical rule (divider) properties.","note":"Color of horizontal/vertical divider rules.","value":"var(--sf-color-border)","aliasOf":"--sf-color-border","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-divider-gap","tier":"PUBLIC","role":"consumption","namespace":"divider","category":"Core tokens","group":"Divider","description":"Horizontal/vertical rule (divider) properties.","note":"Spacing (margin) around divider elements.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-divider-style","tier":"PUBLIC","role":"knob","namespace":"divider","category":"Core tokens","group":"Divider","description":"Horizontal/vertical rule (divider) properties.","note":"Border style of dividers.","value":"solid","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-divider-width","tier":"PUBLIC","role":"consumption","namespace":"divider","category":"Core tokens","group":"Divider","description":"Horizontal/vertical rule (divider) properties.","note":"Stroke width of horizontal and vertical divider rules.","value":"var(--sf-border-width-1)","aliasOf":"--sf-border-width-1","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-drop-shadow-l","tier":"PUBLIC","role":"consumption","namespace":"drop","category":"Core tokens","group":"Output token @property registrations","description":"Large CSS filter: drop-shadow for prominent illustrated or cut-out elements.","note":"Large CSS filter: drop-shadow for prominent illustrated or cut-out elements.","value":"drop-shadow(0 8px 16px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2.5), 0.7)))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-drop-shadow-m","tier":"PUBLIC","role":"consumption","namespace":"drop","category":"Core tokens","group":"Output token @property registrations","description":"Medium CSS filter: drop-shadow for elevated icons and card thumbnails.","note":"Medium CSS filter: drop-shadow for elevated icons and card thumbnails.","value":"drop-shadow(0 4px 6px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7)))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-drop-shadow-s","tier":"PUBLIC","role":"consumption","namespace":"drop","category":"Core tokens","group":"Output token @property registrations","description":"Small CSS filter: drop-shadow. Use filter (not box-shadow) for elements with transparent areas — SVGs, PNGs, cutout images.","note":"Small CSS filter: drop-shadow. Use filter (not box-shadow) for elements with transparent areas — SVGs, PNGs, cutout images.","value":"drop-shadow(0 1px 2px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 1.5), 0.7)))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-fast","tier":"PUBLIC","role":"consumption","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Fast duration (~100ms). Hover transitions, tooltip appear.","value":"calc(150ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-instant","tier":"PUBLIC","role":"consumption","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Near-instant duration (~50ms). Micro-interactions and cursor-follow effects.","value":"calc(100ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-none","tier":"PUBLIC","role":"knob","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"0ms duration. Disables transitions (respects prefers-reduced-motion).","value":"0ms","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-normal","tier":"PUBLIC","role":"consumption","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Normal duration (~200ms). Default for most transitions.","value":"calc(250ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-slow","tier":"PUBLIC","role":"consumption","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Slow duration (~350ms). Emphasis transitions, drawers.","value":"calc(400ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-duration-slower","tier":"PUBLIC","role":"consumption","namespace":"duration","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Extra-slow duration (~600ms). Page-level enter/exit transitions.","value":"calc(600ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-bounce","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Bounce easing. Playful overshooting effect.","value":"linear(0, 0.35 18%, 1 32%, 0.86 42%, 1.02 56%, 0.98 72%, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-elastic","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Elastic easing. Spring-like overshooting effect.","value":"linear(0, 0.3, 1.2, 0.9, 1.05, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-in","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Accelerating easing. Use for elements leaving the viewport.","value":"cubic-bezier(0.5, 0, 0.75, 0.25)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-in-out","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Symmetric easing. Use for elements that move within the viewport.","value":"cubic-bezier(0.4, 0, 0.2, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-linear","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Linear easing. Use for progress indicators and spinner rotations.","value":"linear","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-out","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Decelerating easing. Use for elements entering the viewport.","value":"cubic-bezier(0.25, 0, 0.15, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-overshoot","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Subtle overshoot easing. Softer spring effect.","value":"linear(0, 0.6 30%, 1.08 55%, 0.98 75%, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ease-spring","tier":"PUBLIC","role":"knob","namespace":"ease","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Spring easing. Natural physics-based motion.","value":"linear(0, 0.5, 1.1, 0.95, 1.02, 1)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-gap","tier":"PUBLIC","role":"consumption","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Gap between equal columns.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-min-col","tier":"PUBLIC","role":"knob","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Minimum column width for the default auto-fill equal-columns layout. Columns fill the row until this width is reached, then wrap to the next line.","value":"16rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-min-col-2","tier":"PUBLIC","role":"knob","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Minimum column width for the 2-column equal preset.","value":"28rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-min-col-3","tier":"PUBLIC","role":"knob","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Minimum column width for the 3-column equal preset.","value":"15rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-min-col-4","tier":"PUBLIC","role":"knob","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Minimum column width for the 4-column equal preset.","value":"16rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-equal-min-col-6","tier":"PUBLIC","role":"knob","namespace":"equal","category":"Layout tokens","group":"Equal columns (intrinsically responsive RAM)","description":"Minimum column-width tokens for the equal-columns layout. The RAM pattern (repeat(auto-fill, minmax(min, 1fr))) auto-fills columns; the actual count emerges from the minimum width and available space.","note":"Minimum column width for the 6-column equal preset.","value":"10rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-field-block","tier":"PUBLIC","role":"consumption","namespace":"field","category":"Core tokens","group":"Output token @property registrations","description":"Vertical (block) padding inside form fields.","note":"Vertical (block) padding inside form fields.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-field-padding-block","tier":"PUBLIC","role":"consumption","namespace":"field","category":"Component tokens","group":"FIELD TOKENS","description":"Padding and radius tokens that control form field geometry. Override these to give inputs a distinct visual language from buttons.","note":"Vertical (block) inner padding for form field inputs.","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-field-padding-inline","tier":"PUBLIC","role":"consumption","namespace":"field","category":"Component tokens","group":"FIELD TOKENS","description":"Padding and radius tokens that control form field geometry. Override these to give inputs a distinct visual language from buttons.","note":"Horizontal (inline) inner padding for form field inputs.","value":"var(--sf-space-s)","aliasOf":"--sf-space-s","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-field-radius","tier":"PUBLIC","role":"consumption","namespace":"field","category":"Component tokens","group":"FIELD TOKENS","description":"Padding and radius tokens that control form field geometry. Override these to give inputs a distinct visual language from buttons.","note":"Border radius for form field inputs. Defaults to --sf-radius-m; override to reshape all inputs at once.","value":"var(--sf-radius-m)","aliasOf":"--sf-radius-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":true,"layer":"slashed.tokens","bundles":["full","optimal-components"]},{"name":"--sf-field-required-marker","tier":"PUBLIC","role":"knob","namespace":"field","category":"Core tokens","group":"Semantic gap tokens","description":"CSS content value for required-field markers (e.g. \\" *\\"). Used by pseudo-elements in the .required utility pattern.","note":"CSS content value for required-field markers (e.g. \\" *\\"). Used by pseudo-elements in the .required utility pattern.","value":"\\" *\\"","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-flow-space","tier":"PUBLIC","role":"consumption","namespace":"flow","category":"Macro tokens","group":"Flow","description":"Vertical rhythm gap between flow children (margin-block-start on all but the first child).","note":"Margin-block-start applied to all flow children except the first.","value":"var(--sf-content-gap)","aliasOf":"--sf-content-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-fluid-max-vw","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"fluid","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Maximum viewport width (in rem) at which the fluid scale clamps to its largest values. Default 90rem (~1440px). Part of the fluid scale engine.","value":"90","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-fluid-min-vw","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"fluid","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Minimum viewport width (in rem) at which the fluid scale clamps to its smallest values. Default 22.5rem (~360px). Part of the fluid scale engine.","value":"22.5","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-focus-ring-color","tier":"PUBLIC","role":"consumption","namespace":"focus","category":"Core tokens","group":"Focus / form colors","description":"Focus ring and form caret colors. Centralised here so keyboard navigation is consistently styled.","note":"Color of the keyboard focus ring. Ensure sufficient contrast against all background surfaces.","value":"var(--sf-color-action)","aliasOf":"--sf-color-action","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-focus-ring-offset","tier":"PUBLIC","role":"knob","namespace":"focus","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Gap between the element edge and the focus ring.","value":"2px","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-focus-ring-shadow","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"focus","category":"Core tokens","group":"Focus / form colors","description":"Focus ring and form caret colors. Centralised here so keyboard navigation is consistently styled.","note":"Computed box-shadow value for the focus ring — two-layer technique: offset shadow in bg color, then ring shadow in focus-ring color. Tune via --sf-focus-ring-width and --sf-focus-ring-color instead of overriding this directly.","value":"0 0 0 var(--sf-focus-ring-offset) var(--sf-color-bg, var(--sf-color-base-source-light, #fff)), 0 0 0 calc(var(--sf-focus-ring-offset) + var(--sf-focus-ring-width)) var(--sf-focus-ring-color)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-focus-ring-style","tier":"PUBLIC","role":"knob","namespace":"focus","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Border style of the focus ring (solid, dashed, dotted).","value":"solid","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-focus-ring-width","tier":"PUBLIC","role":"knob","namespace":"focus","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Stroke width of the focus ring outline.","value":"2px","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-body","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Font family stack for body text. Override to set your primary typeface.","value":"system-ui, -apple-system, sans-serif","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-display","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Font family for display/marketing text. Override for large headline typefaces.","value":"var(--sf-font-heading)","aliasOf":"--sf-font-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-features","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"OpenType feature-settings string for body text (e.g. 'ss01', 'cv11'). Default 'normal'. Override on :root or a subtree to enable ligatures, alternate glyphs, etc.","value":"normal","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-geometric","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Geometric sans-serif slot — circular letterforms for brand alternates.","value":"\\"Avenir\\", \\"Montserrat\\", \\"Corbel\\", \\"URW Gothic\\", source-sans-pro, sans-serif","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-heading","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Font family for headings. Defaults to display if not overridden separately.","value":"var(--sf-font-body)","aliasOf":"--sf-font-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-humanist","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Humanist sans-serif slot — warm, readable alternate typeface.","value":"\\"Seravek\\", \\"Gill Sans Nova\\", \\"Ubuntu\\", \\"Calibri\\", \\"DejaVu Sans\\", source-sans-pro, sans-serif","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-mono","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Monospace font family for code, pre, and kbd elements.","value":"ui-monospace, monospace","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-numeric","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"font-variant-numeric shorthand (e.g. tabular-nums) for aligned numeric data.","value":"tabular-nums","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-slab","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Slab-serif slot for editorial or display headings.","value":"\\"Rockwell\\", \\"Rockwell Nova\\", \\"Roboto Slab\\", \\"DejaVu Serif\\", \\"Sitka Small\\", serif","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-variation","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"font","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"Variable-font axis settings for body text (e.g. \\"wght\\" 450). Default 'normal'. Override on :root or a subtree to activate variable-font axes.","value":"normal","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-body","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Font weight for body text (typically 400 / normal).","value":"var(--sf-font-weight-normal)","aliasOf":"--sf-font-weight-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-bold","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Strong emphasis weight (700).","value":"700","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-display","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Font weight for display-size text.","value":"var(--sf-font-weight-bold)","aliasOf":"--sf-font-weight-bold","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-heading","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Font weight for headings (typically 600–700).","value":"var(--sf-font-weight-semibold)","aliasOf":"--sf-font-weight-semibold","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-interactive","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Font weight for interactive role text — buttons, badges, and navigation labels. Defaults to semibold.","value":"var(--sf-font-weight-semibold)","aliasOf":"--sf-font-weight-semibold","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-light","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Light weight (300). Use sparingly — check contrast at small sizes.","value":"300","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-medium","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Medium weight (500). Subtle emphasis without full bold.","value":"500","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-normal","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Normal / regular weight (400).","value":"400","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-semibold","tier":"PUBLIC","role":"knob","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Semibold weight (600). Common for labels and subheadings.","value":"600","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-font-weight-strong","tier":"PUBLIC","role":"consumption","namespace":"font","category":"Core tokens","group":"Font weights","description":"Numeric font-weight scale plus named aliases for common roles.","note":"Font weight for strong/emphasis inline role. Defaults to bold.","value":"var(--sf-font-weight-bold)","aliasOf":"--sf-font-weight-bold","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-frame-ratio","tier":"PUBLIC","role":"knob","namespace":"frame","category":"Layout tokens","group":"Frame","description":"Aspect ratio for the frame layout primitive (media container).","note":"Aspect ratio for the frame (media container) layout.","value":"16 / 9","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gap","tier":"PUBLIC","role":"consumption","namespace":"gap","category":"Core tokens","group":"Output token @property registrations","description":"Default gap between components (the loose rhythm). Layout primitives like cluster/grid/sidebar default to it. Override globally to retune them all at once, or set a primitive token (e.g. --sf-cluster-gap) for one element.","note":"Default gap between components (the loose rhythm). Layout primitives like cluster/grid/sidebar default to it. Override globally to retune them all at once, or set a primitive token (e.g. --sf-cluster-gap) for one element.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-brand","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Multi-stop brand gradient spanning primary and secondary palette colors. Use for hero backgrounds and brand accents.","value":"linear-gradient(in oklch 135deg, var(--sf-color-primary), oklch(from var(--sf-color-primary) l c calc(h + 30)))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-fade--b","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Fade-to-bottom gradient (transparent → surface). Use to fade content into a background below (infinite scroll fade, content cutoff).","value":"linear-gradient(in oklch to bottom, transparent, var(--sf-color-bg))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-fade--l","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Fade-to-left gradient. Use to indicate left-side scrollable overflow.","value":"linear-gradient(in oklch to left, transparent, var(--sf-color-bg))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-fade--r","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Fade-to-right gradient. Use to indicate right-side scrollable overflow.","value":"linear-gradient(in oklch to right, transparent, var(--sf-color-bg))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-fade--t","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Fade-to-top gradient (transparent → surface). Use to fade content into a background above.","value":"linear-gradient(in oklch to top, transparent, var(--sf-color-bg))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-primary","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Gradient using primary palette colors (light to saturated).","value":"linear-gradient(in oklch 135deg, var(--sf-color-primary), oklch(from var(--sf-color-primary) calc(l - 0.08) c h))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-secondary","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Gradient using secondary palette colors.","value":"linear-gradient(in oklch 135deg, var(--sf-color-secondary), oklch(from var(--sf-color-secondary) calc(l - 0.08) c h))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-surface","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Subtle surface-color gradient for depth layering and glass effects.","value":"linear-gradient(in oklab 180deg, var(--sf-color-surface), var(--sf-color-bg))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gradient-tertiary","tier":"PUBLIC","role":"consumption","namespace":"gradient","category":"Core tokens","group":"Gradients","description":"Pre-built gradient shorthands for brand fills and directional fade effects.","note":"Gradient using tertiary palette colors.","value":"linear-gradient(in oklch 135deg, var(--sf-color-tertiary), oklch(from var(--sf-color-tertiary) calc(l - 0.08) c h))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-gap","tier":"PUBLIC","role":"consumption","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Gap between auto-fill grid cells.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Minimum column width for the auto-fill grid.","value":"16rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-2xl","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Minimum column width at the 2× breakpoint.","value":"28rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-l","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Large minimum column width for the auto-fill grid.","value":"20rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-m","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Medium minimum column width for the auto-fill grid.","value":"16rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-s","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Small minimum column width for the auto-fill grid.","value":"13rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-xl","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Extra-large minimum column width for the auto-fill grid. Use for wide content cards.","value":"24rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-grid-min-xs","tier":"PUBLIC","role":"knob","namespace":"grid","category":"Layout tokens","group":"Grid (auto-fill, breakpoint-free)","description":"Configuration tokens for the responsive auto-fill grid. Set --sf-grid-min to control the minimum column width.","note":"Extra-small minimum column width for the auto-fill grid. Use for very compact tile layouts (icon grids).","value":"10rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-gutter","tier":"PUBLIC","role":"consumption","namespace":"gutter","category":"Core tokens","group":"Output token @property registrations","description":"Wide page/section-edge gutter (used by center/container). Override to set the page-edge breathing room across breakpoints.","note":"Wide page/section-edge gutter (used by center/container). Override to set the page-edge breathing room across breakpoints.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for . Typically slightly negative at large sizes.","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-line-height","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for . Tighter than body to avoid excessive whitespace at large sizes.","value":"var(--sf-leading-tight)","aliasOf":"--sf-leading-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-max-width","tier":"PUBLIC","role":"knob","namespace":"h1","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none (unconstrained). Set to a ch value (e.g. 20ch) to prevent wide headings from spanning the full column on large screens.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h1-size","tier":"PUBLIC","role":"consumption","namespace":"h1","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-4xl)","aliasOf":"--sf-text-4xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for .","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-line-height","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for .","value":"var(--sf-leading-tight)","aliasOf":"--sf-leading-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-max-width","tier":"PUBLIC","role":"knob","namespace":"h2","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h2-size","tier":"PUBLIC","role":"consumption","namespace":"h2","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-3xl)","aliasOf":"--sf-text-3xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for .","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-line-height","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for .","value":"var(--sf-leading-snug)","aliasOf":"--sf-leading-snug","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-max-width","tier":"PUBLIC","role":"knob","namespace":"h3","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h3-size","tier":"PUBLIC","role":"consumption","namespace":"h3","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-2xl)","aliasOf":"--sf-text-2xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for .","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-line-height","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for .","value":"var(--sf-leading-snug)","aliasOf":"--sf-leading-snug","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-max-width","tier":"PUBLIC","role":"knob","namespace":"h4","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h4-size","tier":"PUBLIC","role":"consumption","namespace":"h4","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-xl)","aliasOf":"--sf-text-xl","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for .","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-line-height","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for .","value":"var(--sf-leading-normal)","aliasOf":"--sf-leading-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-max-width","tier":"PUBLIC","role":"knob","namespace":"h5","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h5-size","tier":"PUBLIC","role":"consumption","namespace":"h5","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-l)","aliasOf":"--sf-text-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-font-weight","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font weight for .","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Letter-spacing for .","value":"var(--sf-tracking-wide)","aliasOf":"--sf-tracking-wide","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-line-height","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Line height for .","value":"var(--sf-leading-normal)","aliasOf":"--sf-leading-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-max-width","tier":"PUBLIC","role":"knob","namespace":"h6","category":"Core tokens","group":"Heading line-length constraints","description":"Per-heading max-inline-size caps. Default none (unconstrained). Set to a ch value to cap a heading level's line length for readability on wide screens.","note":"Max-inline-size cap for . Default none.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-h6-size","tier":"PUBLIC","role":"consumption","namespace":"h6","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font size for .","value":"var(--sf-text-m)","aliasOf":"--sf-text-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height","tier":"PUBLIC","role":"consumption","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Total height of the sticky page header. Used by --sf-sticky-offset to prevent content from hiding under it.","value":"clamp( var(--sf-header-height-mobile), calc((var(--sf-header-height-desktop) - var(--sf-header-height-mobile)) / ((var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * 1rem) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-header-height-mobile)), var(--sf-header-height-desktop))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height-desktop","tier":"PUBLIC","role":"knob","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Header height at desktop breakpoints.","value":"5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-header-height-mobile","tier":"PUBLIC","role":"knob","namespace":"header","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Header height at mobile breakpoints.","value":"3.5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-color","tier":"PUBLIC","role":"consumption","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Text color for all headings (h1–h6). Alias of --sf-color-heading.","value":"var(--sf-color-heading)","aliasOf":"--sf-color-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-font-family","tier":"PUBLIC","role":"consumption","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"Font family for all headings. Alias of --sf-font-heading.","value":"var(--sf-font-heading)","aliasOf":"--sf-font-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-heading-text-wrap","tier":"PUBLIC","role":"knob","namespace":"heading","category":"Core tokens","group":"TYPOGRAPHY ALIASES","description":"Part of the per-style typography bundle for a named text role (body, code, heading, h1–h6, display). The full bundle spans font-family, size, weight, line-height, and letter-spacing across related tokens.","note":"text-wrap for headings. 'balance' prevents orphaned short last lines in multi-line headings.","value":"balance","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-2xl","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"2× large icon size (~40px+). Hero or onboarding icons.","value":"4em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-bg","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Background color for boxed icon containers.","value":"var(--sf-color-inset)","aliasOf":"--sf-color-inset","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-border","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Border for boxed icon containers.","value":"var(--sf-border-width-1) solid var(--sf-color-border)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-pad","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Padding inside boxed icon containers.","value":"0.5em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-box-radius","tier":"PUBLIC","role":"consumption","namespace":"icon","category":"Layout tokens","group":"Icon (boxed variant)","description":"Background, border, and padding for boxed icon containers.","note":"Border radius for boxed icon containers.","value":"var(--sf-radius-s)","aliasOf":"--sf-radius-s","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-l","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Large icon size (~24px). Standalone icon buttons.","value":"2em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-m","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Medium icon size (~20px). Default for inline and button icons.","value":"1.5em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-s","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Small icon size (~16px). Dense UI chrome.","value":"1em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-xl","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Extra-large icon size (~32px). Feature icons.","value":"3em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-icon-xs","tier":"PUBLIC","role":"knob","namespace":"icon","category":"Core tokens","group":"Icon sizes","description":"Standard icon sizes tied to the type scale.","note":"Extra-small icon size (~12px). Inline indicators.","value":"0.875em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-imposter-margin","tier":"PUBLIC","role":"consumption","namespace":"imposter","category":"Layout tokens","group":"Imposter (centered absolute/fixed overlay)","description":"Margin for the imposter layout (centered fixed/absolute overlay).","note":"Margin between the imposter overlay and the viewport edges.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-active","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"is","category":"Core tokens","group":"INTERACTION STATE FLAGS","description":"Integer flags toggled by JS or CSS :has() to drive numeric branching in calc() expressions. Set to 1 to activate the state; 0 is the default off state.","note":"Integer state flag for the active state. Set to 1 (via JS or .is-active) to drive branching calc() expressions. 0 = default (inactive).","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-current","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"is","category":"Core tokens","group":"INTERACTION STATE FLAGS","description":"Integer flags toggled by JS or CSS :has() to drive numeric branching in calc() expressions. Set to 1 to activate the state; 0 is the default off state.","note":"Integer state flag for the current/selected state. Set to 1 (via .is-current) to drive branching calc() expressions. 0 = default.","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-dark","tier":"INTERNAL","role":"knob","namespace":"is","category":"Core tokens","group":"DARK SOURCE TOKENS (-dark, animatable)","description":"OKLCH dark source tokens for brand and status colors. Registered as typed so scoped [data-theme=\\"dark\\"] sections inherit correct absolute values rather than an unresolved var() text string.","note":"Mode flag — 0 in light mode, 1 in dark mode. Set automatically by [data-theme='dark'] and prefers-color-scheme. Drives dark-mode formula branches in calc().","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-open","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"is","category":"Core tokens","group":"INTERACTION STATE FLAGS","description":"Integer flags toggled by JS or CSS :has() to drive numeric branching in calc() expressions. Set to 1 to activate the state; 0 is the default off state.","note":"Integer state flag for the open/expanded state. Set to 1 (via .is-open) to drive branching calc() expressions. 0 = default (closed).","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-is-pressed","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"is","category":"Core tokens","group":"INTERACTION STATE FLAGS","description":"Integer flags toggled by JS or CSS :has() to drive numeric branching in calc() expressions. Set to 1 to activate the state; 0 is the default off state.","note":"Integer state flag for the pressed state. Set to 1 (via .is-pressed) to drive branching calc() expressions. 0 = default.","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-leading-normal","tier":"PUBLIC","role":"knob","namespace":"leading","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Normal line height (~1.5). Default for body text.","value":"1.5","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-leading-relaxed","tier":"PUBLIC","role":"knob","namespace":"leading","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Relaxed line height (~1.65). Long-form reading text.","value":"1.625","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-leading-snug","tier":"PUBLIC","role":"knob","namespace":"leading","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Snug line height (~1.35). Use for sub-headings.","value":"1.3","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-leading-taper","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"leading","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Progressive leading tightener: each step up the type scale subtracts step-index × taper from its per-size line-height token. Default 0 keeps the curated defaults.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-leading-tight","tier":"PUBLIC","role":"knob","namespace":"leading","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Tight line height (~1.2). Use for large display headings.","value":"1.1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-line-clamp","tier":"PUBLIC","role":"knob","namespace":"line","category":"Macro tokens","group":"Line clamp","description":"Number of lines before text truncates with an ellipsis.","note":"Number of visible lines before text is clipped with an ellipsis.","value":"3","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-link-external-marker","tier":"PUBLIC","role":"knob","namespace":"link","category":"Core tokens","group":"Semantic gap tokens","description":"CSS content value appended to external links (e.g. \\" ↗\\"). Used by the .external-link pseudo-element pattern.","note":"CSS content value appended to external links (e.g. \\" ↗\\"). Used by the .external-link pseudo-element pattern.","value":"\\" \\\\2197\\"","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-link-underline-offset","tier":"PUBLIC","role":"knob","namespace":"link","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Vertical offset of the link underline from the text baseline.","value":"0.15em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-link-underline-thickness","tier":"PUBLIC","role":"knob","namespace":"link","category":"Core tokens","group":"Links","description":"Colors and text-decoration properties for hyperlinks in every interactive state.","note":"Stroke width of the link underline.","value":"auto","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-lumlocker","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"lumlocker","category":"Core tokens","group":"LumLocker","description":"OKLCH lightness lock for the data-lumlocker attribute. Pins surface brightness to a fixed L value — useful for always-dark or always-light sections that must stay stable while the rest of the page switches color-scheme.","note":"OKLCH lightness lock value. When :root has [data-lumlocker], brand colors (primary, secondary, action, base) are remapped to this L so their contrast remains constant as hues shift.","value":"0.65","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-mask-scrim-end","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"mask","category":"Core tokens","group":"Mask scrim","description":"Edge-fade stop positions for the scroll-shadow mask effect on overflowing containers. Expressed as percentages or lengths; consumed by mask-image gradients.","note":"End stop for edge-fade mask gradients. Mirrors --sf-mask-scrim-start for the trailing edge of a scroll container.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-mask-scrim-start","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"mask","category":"Core tokens","group":"Mask scrim","description":"Edge-fade stop positions for the scroll-shadow mask effect on overflowing containers. Expressed as percentages or lengths; consumed by mask-image gradients.","note":"Start stop for edge-fade mask gradients on scroll reels / overflow containers. Use in mask-image: linear-gradient(..., transparent var(--sf-mask-scrim-start)) to fade content near the leading edge.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-motion-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"motion","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Global motion multiplier. All transition and animation durations multiply by this factor. Set to 0 to disable all motion; reduce below 1 for snappier feel.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-object-fit","tier":"PUBLIC","role":"knob","namespace":"object","category":"Core tokens","group":"Object fit / position","description":"Defaults for object-fit and object-position on replaced elements (img, video).","note":"Default object-fit value for replaced elements (img, video).","value":"cover","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-object-position","tier":"PUBLIC","role":"knob","namespace":"object","category":"Core tokens","group":"Object fit / position","description":"Defaults for object-fit and object-position on replaced elements (img, video).","note":"Default object-position for replaced elements.","value":"50% 50%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-opacity-disabled","tier":"PUBLIC","role":"knob","namespace":"opacity","category":"Core tokens","group":"Opacity","description":"Opacity tokens for specific UI states: --sf-opacity-disabled dims non-interactive elements; --sf-state-pending-opacity dims elements in an async/loading state.","note":"Opacity for disabled UI elements (typically 0.4–0.5).","value":"0.45","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-opacity-muted","tier":"PUBLIC","role":"knob","namespace":"opacity","category":"Core tokens","group":"Blur & opacity","description":"Backdrop-filter blur scale and background-opacity tokens.","note":"General de-emphasis opacity for secondary content, ghost elements, or non-primary layers. Default 0.5.","value":"0.5","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-optical-sizing","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"optical","category":"Core tokens","group":"Font families","description":"Font family stacks for every typographic role. Override these to swap typefaces without touching individual text styles.","note":"CSS font-optical-sizing value. 'auto' lets the browser optimize letterforms for the rendered size. Set 'none' to disable optical sizing.","value":"auto","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-100","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 100. Controls blend depth toward the surface. Default 8%.","note":"Color-mix percentage for palette step 100. Controls blend depth toward the surface. Default 8%.","value":"8%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-200","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 200. Controls blend depth toward the surface. Default 20%.","note":"Color-mix percentage for palette step 200. Controls blend depth toward the surface. Default 20%.","value":"20%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-300","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 300. Controls blend depth toward the surface. Default 40%.","note":"Color-mix percentage for palette step 300. Controls blend depth toward the surface. Default 40%.","value":"40%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-400","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 400 (near-mid tint). Controls blend depth. Default 65%.","note":"Color-mix percentage for palette step 400 (near-mid tint). Controls blend depth. Default 65%.","value":"65%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-50","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for the lightest palette step (50). Controls how far step 50 blends toward the surface. Default 4%.","note":"Color-mix percentage for the lightest palette step (50). Controls how far step 50 blends toward the surface. Default 4%.","value":"4%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-600","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 600 (near-mid shade). Controls blend depth toward the text color. Default 82%.","note":"Color-mix percentage for palette step 600 (near-mid shade). Controls blend depth toward the text color. Default 82%.","value":"82%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-700","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 700. Controls blend depth toward the text color. Default 62%.","note":"Color-mix percentage for palette step 700. Controls blend depth toward the text color. Default 62%.","value":"62%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-800","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 800 (dark shade). Controls blend depth toward text. Default 38%.","note":"Color-mix percentage for palette step 800 (dark shade). Controls blend depth toward text. Default 38%.","value":"38%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-900","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for palette step 900 (very dark shade). Controls blend depth toward text. Default 18%.","note":"Color-mix percentage for palette step 900 (very dark shade). Controls blend depth toward text. Default 18%.","value":"18%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-palette-mix-950","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"palette","category":"Core tokens","group":"Palette shade mix percentages","description":"Color-mix percentage for the darkest palette step (950). Controls how far step 950 blends toward the text color. Default 8%.","note":"Color-mix percentage for the darkest palette step (950). Controls how far step 950 blends toward the text color. Default 8%.","value":"8%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-print-base-size","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"print","category":"Core tokens","group":"Print","description":"Page-layout tokens for printed output: paper size, margins, and base font size. These correspond to the @page values in core/print.css.","note":"Base font size for @media print stylesheets. Default 11pt. Override on :root to adjust printed body text size.","value":"11pt","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-print-page-margin","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"print","category":"Core tokens","group":"Print","description":"Page-layout tokens for printed output: paper size, margins, and base font size. These correspond to the @page values in core/print.css.","note":"Page margin for printed output. Default 2cm. Maps to @page margin.","value":"2cm","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-print-page-size","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"print","category":"Core tokens","group":"Print","description":"Page-layout tokens for printed output: paper size, margins, and base font size. These correspond to the @page values in core/print.css.","note":"Target paper size for printing. Default 'a4'. Maps to @page size. Common values: a4, letter, legal.","value":"a4","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-block-margin","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Block margin between prose elements (h2, p, ul, etc.).","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-blockquote-border","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Left border style for blockquotes inside prose.","value":"var(--sf-border-width-2) solid var(--sf-color-border--subtle)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-blockquote-padding","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Inner padding for blockquotes inside prose.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-figcaption-size","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Font size for figure captions inside .prose. Typically smaller than body text.","value":"var(--sf-text-s)","aliasOf":"--sf-text-s","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-figure-margin","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Block margin around elements inside .prose.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-heading-gap","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Space between a heading and the content that follows it inside .prose.","value":"var(--sf-space-s)","aliasOf":"--sf-space-s","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-hr-margin","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Block margin around
rules inside .prose.","value":"var(--sf-space-l)","aliasOf":"--sf-space-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-list-gap","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Gap between list items inside .prose.","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-marker-color","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Color of list bullets and ordered-list numbers inside .prose.","value":"var(--sf-color-primary)","aliasOf":"--sf-color-primary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-media-margin","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Block margin around images, video, and figures inside .prose.","value":"var(--sf-space-m)","aliasOf":"--sf-space-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-media-radius","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Border radius applied to images and media inside .prose.","value":"var(--sf-radius-m)","aliasOf":"--sf-radius-m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-nested-list-gap","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Gap between items in nested lists inside .prose.","value":"var(--sf-space-2xs)","aliasOf":"--sf-space-2xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-paragraph","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Layout tokens","group":"Prose","description":"Max-width for the prose layout primitive (long-form reading column).","note":"Max width of prose paragraphs (layout token for the prose layout).","value":"var(--sf-content-gap)","aliasOf":"--sf-content-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-prose-table-pad","tier":"PUBLIC","role":"consumption","namespace":"prose","category":"Macro tokens","group":"Prose","description":"Fine-grained typography controls for the .prose macro (margins, blockquote style, link decoration, etc.).","note":"Cell padding for tables inside .prose.","value":"var(--sf-space-xs)","aliasOf":"--sf-space-xs","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-2xl","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"2× large radius (~20px). Rounded card variants.","note":"2× large radius (~20px). Rounded card variants.","value":"calc(24px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-2xs","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Extra-extra-small radius (~1px). Minimal rounding for very tight UI elements.","note":"Extra-extra-small radius (~1px). Minimal rounding for very tight UI elements.","value":"calc(1px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-3xl","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"3× large radius (~24px). Large rounded surfaces.","note":"3× large radius (~24px). Large rounded surfaces.","value":"calc(32px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-4xl","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"4× large radius (~32px). Near-pill rounding.","note":"4× large radius (~32px). Near-pill rounding.","value":"calc(48px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-full","tier":"PUBLIC","role":"knob","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Full rounding (50%). For circular elements like avatars.","note":"Full rounding (50%). For circular elements like avatars.","value":"9999px","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-l","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Large radius (~12px). Modals, popovers, panels.","note":"Large radius (~12px). Modals, popovers, panels.","value":"calc(12px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-m","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Medium radius (~6–8px). Default — inputs, standard buttons, cards.","note":"Medium radius (~6–8px). Default — inputs, standard buttons, cards.","value":"calc(8px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-none","tier":"PUBLIC","role":"knob","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Zero border radius — square corners.","note":"Zero border radius — square corners.","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-outer","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Concentric corner helper: outer radius for a container that wraps content with inner radius of --sf-radius-m. Computed as --sf-radius-m + --sf-component-pad so corners align visually.","note":"Concentric corner helper: outer radius for a container that wraps content with inner radius of --sf-radius-m. Computed as --sf-radius-m + --sf-component-pad so corners align visually.","value":"calc(var(--sf-radius-m) + var(--sf-component-pad))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-pill","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Pill rounding (9999px). Tags, toggle pills, status badges.","note":"Pill rounding (9999px). Tags, toggle pills, status badges.","value":"var(--sf-radius-full)","aliasOf":"--sf-radius-full","registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-s","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Small radius (~4px). Badges, chips, small buttons.","note":"Small radius (~4px). Badges, chips, small buttons.","value":"calc(4px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"radius","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Global border-radius multiplier. Scales the entire radius ramp up (>1) or down (<1) from one knob. Set to 0 for sharp corners everywhere.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-xl","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Extra-large radius (~16px). Prominent cards and feature blocks.","note":"Extra-large radius (~16px). Prominent cards and feature blocks.","value":"calc(16px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-radius-xs","tier":"PUBLIC","role":"consumption","namespace":"radius","category":"Core tokens","group":"Output token @property registrations","description":"Hairline radius (~2px). Subtle rounding for tight components.","note":"Hairline radius (~2px). Subtle rounding for tight components.","value":"calc(2px * var(--sf-radius-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-3-2","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"3:2 aspect ratio. Common for landscape photography.","value":"3 / 2","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-4-3","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"4:3 aspect ratio. Classic screen ratio.","value":"4 / 3","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-cinema","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"2.39:1 cinematic widescreen aspect ratio.","value":"21 / 9","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-golden","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"1.618:1 golden ratio. Harmonious proportions.","value":"1.618 / 1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-portrait","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"2:3 portrait aspect ratio.","value":"3 / 4","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-square","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"1:1 square aspect ratio. Use for avatars, icon containers, and square thumbnails.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-ratio-video","tier":"PUBLIC","role":"knob","namespace":"ratio","category":"Core tokens","group":"Aspect ratios","description":"Named aspect-ratio values for images, video embeds, and card thumbnails.","note":"16:9 widescreen video aspect ratio. Use for video embeds and video-thumbnail containers.","value":"16 / 9","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-reel-gap","tier":"PUBLIC","role":"consumption","namespace":"reel","category":"Layout tokens","group":"Reel","description":"Configuration tokens for the reel layout (horizontal scroll container).","note":"Gap between items in the horizontal reel.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-reel-height","tier":"PUBLIC","role":"knob","namespace":"reel","category":"Layout tokens","group":"Reel","description":"Configuration tokens for the reel layout (horizontal scroll container).","note":"Fixed height of the reel container.","value":"auto","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-reel-item-width","tier":"PUBLIC","role":"knob","namespace":"reel","category":"Layout tokens","group":"Reel","description":"Configuration tokens for the reel layout (horizontal scroll container).","note":"Width of each item in the reel.","value":"max-content","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-safe-bottom","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"safe","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Device safe-area inset at the bottom edge (home indicator, gesture bar). Resolves to env(safe-area-inset-bottom, 0px). Use for fixed footers.","value":"env(safe-area-inset-bottom, 0px)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-safe-left","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"safe","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Device safe-area inset at the left edge. Resolves to env(safe-area-inset-left, 0px).","value":"env(safe-area-inset-left, 0px)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-safe-right","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"safe","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Device safe-area inset at the right edge (rounded corners, home indicator). Resolves to env(safe-area-inset-right, 0px).","value":"env(safe-area-inset-right, 0px)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-safe-top","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"safe","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Device safe-area inset at the top edge (notch, Dynamic Island). Resolves to env(safe-area-inset-top, 0px). Use for fixed headers on notched devices.","value":"env(safe-area-inset-top, 0px)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrim-color","tier":"PUBLIC","role":"knob","namespace":"scrim","category":"Macro tokens","group":"Scrim","description":"Gradient scrim configuration (direction, size, color) for overlaying images with readable text.","note":"Base color of the gradient scrim overlay.","value":"oklch(0 0 0 / 0.55)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrim-direction","tier":"PUBLIC","role":"knob","namespace":"scrim","category":"Macro tokens","group":"Scrim","description":"Gradient scrim configuration (direction, size, color) for overlaying images with readable text.","note":"Direction of the scrim gradient (to bottom, to top, etc.).","value":"to top","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrim-gradient","tier":"PUBLIC","role":"consumption","namespace":"scrim","category":"Macro tokens","group":"Scrim","description":"Gradient scrim configuration (direction, size, color) for overlaying images with readable text.","note":"Full gradient shorthand for the scrim. Override to customise the fade.","value":"linear-gradient(var(--sf-scrim-direction), var(--sf-scrim-color), transparent)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrim-text-shadow","tier":"PUBLIC","role":"knob","namespace":"scrim","category":"Macro tokens","group":"Scrim","description":"Gradient scrim configuration (direction, size, color) for overlaying images with readable text.","note":"Text-shadow layered over the scrim gradient to ensure legibility for text placed directly on image backgrounds.","value":"0 1px 3px oklch(0 0 0 / 0.6)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scroll-shadow-size","tier":"PUBLIC","role":"knob","namespace":"scroll","category":"Macro tokens","group":"Scroll shadow / overflow fade","description":"Size of the scroll-shadow fade effect on overflowing containers.","note":"Size of the scroll-shadow fade effect on overflowing containers.","value":"2rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scroll-timeline-range-end","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"scroll","category":"Core tokens","group":"Scroll-driven animation range","description":"animation-range start and end positions for scroll-driven entrance effects (animation-timeline: view()). Controls how far into the viewport an element must scroll before its entrance animation starts and ends.","note":"animation-range end value for scroll-driven entrance effects. Default 'cover 30%'. Override on an element to control when its entrance animation finishes.","value":"cover 30%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scroll-timeline-range-start","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"scroll","category":"Core tokens","group":"Scroll-driven animation range","description":"animation-range start and end positions for scroll-driven entrance effects (animation-timeline: view()). Controls how far into the viewport an element must scroll before its entrance animation starts and ends.","note":"animation-range start value for scroll-driven entrance effects. Default 'entry 0%'. Override on an element to control when its entrance animation begins.","value":"entry 0%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrollbar-thumb","tier":"PUBLIC","role":"consumption","namespace":"scrollbar","category":"Core tokens","group":"Scrollbar","description":"Custom scrollbar thumb and track colors.","note":"Color of the custom scrollbar thumb.","value":"var(--sf-color-neutral)","aliasOf":"--sf-color-neutral","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-scrollbar-track","tier":"PUBLIC","role":"knob","namespace":"scrollbar","category":"Core tokens","group":"Scrollbar","description":"Custom scrollbar thumb and track colors.","note":"Color of the custom scrollbar track.","value":"transparent","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Section padding","description":"Vertical padding for full-width page sections at each responsive tier.","note":"Default vertical padding for full-width page sections.","value":"var(--sf-section-pad--m)","aliasOf":"--sf-section-pad--m","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--2xl","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"2× large section vertical padding for hero areas.","note":"2× large section vertical padding for hero areas.","value":"calc(var(--sf-space-4xl) * 2 * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--l","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"Large section vertical padding.","note":"Large section vertical padding.","value":"calc(var(--sf-space-4xl) * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--m","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"Medium section vertical padding.","note":"Medium section vertical padding.","value":"calc(var(--sf-space-3xl) * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--s","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"Small section vertical padding.","note":"Small section vertical padding.","value":"calc(var(--sf-space-2xl) * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--xl","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"Extra-large vertical section padding for hero and feature sections.","note":"Extra-large vertical section padding for hero and feature sections.","value":"calc(var(--sf-space-4xl) * 1.5 * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-pad--xs","tier":"PUBLIC","role":"consumption","namespace":"section","category":"Core tokens","group":"Output token @property registrations","description":"Extra-small vertical section padding for compact in-page modules.","note":"Extra-small vertical section padding for compact in-page modules.","value":"calc(var(--sf-space-xl) * var(--sf-section-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-section-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"section","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Global multiplier applied to every --sf-section-pad--* size — one dial re-rhythms all section padding (default 1).","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-2xl","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Largest shadow for hero cards, feature highlights, and marketing surfaces.","note":"Largest shadow for hero cards, feature highlights, and marketing surfaces.","value":"0 4px 12px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.6), 0.7)), 0 20px 60px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 4), 0.7)), 0 40px 100px -8px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 5), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-color","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Shadow ramp (box-shadow, text-shadow, drop-shadow)","description":"Elevation box-shadow ramp from xs to 2xl plus inner, text-shadow, and drop-shadow presets. All opacity values scale with --sf-shadow-strength so dark-mode contrast boost is automatic.","note":"Near-black shadow tint derived from the neutral palette. Inherits the neutral's chroma and hue so colorless neutrals produce colorless shadows.","value":"oklch(from var(--sf-color-neutral) var(--sf-shadow-lightness) c h)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-glow","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Glow box-shadow shorthand for decorative glow effects.","note":"Glow box-shadow shorthand for decorative glow effects.","value":"0 0 15px 2px oklch(from var(--sf-shadow-glow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-glow-color","tier":"PUBLIC-ADVANCED","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Shadow glow color","description":"Tint color used by --sf-shadow-glow. Override to retint glows; opacity and dark-mode adaptation are handled automatically.","note":"Ambient glow tint used by --sf-shadow-glow. Override to retint all glow shadows; opacity and dark-mode boost are controlled by --sf-shadow-strength.","value":"var(--sf-color-primary)","aliasOf":"--sf-color-primary","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-inner","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Inset shadow for pressed states, inset inputs, and recessed surfaces.","note":"Inset shadow for pressed states, inset inputs, and recessed surfaces.","value":"inset 0 2px 4px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-l","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Large shadow for drawers, sidebars, and prominent elevated surfaces.","note":"Large shadow for drawers, sidebars, and prominent elevated surfaces.","value":"0 2px 4px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.5), 0.7)), 0 8px 24px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 3), 0.7)), 0 16px 48px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-lightness","tier":"PUBLIC","role":"knob","namespace":"shadow","category":"Core tokens","group":"Shadow strength","description":"Base opacity for the shadow ramp. --sf-shadow-lightness controls tonal density; --sf-shadow-strength is auto-boosted in dark mode so elevation reads on dark surfaces.","note":"OKLCH lightness component of the shadow color. Lower = denser-looking shadows. Tune this independently of --sf-shadow-strength to control tonal weight without affecting opacity.","value":"0.15","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-m","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Medium shadow for cards and content panels.","note":"Medium shadow for cards and content panels.","value":"0 1px 3px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.5), 0.7)), 0 4px 12px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-none","tier":"PUBLIC","role":"knob","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"No box-shadow (resets inherited shadows). Use to explicitly remove elevation.","note":"No box-shadow (resets inherited shadows). Use to explicitly remove elevation.","value":"none","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-s","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Small shadow for chips, tags, and inline elevated surfaces.","note":"Small shadow for chips, tags, and inline elevated surfaces.","value":"0 1px 2px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.5), 0.7)), 0 2px 6px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, var(--sf-shadow-strength), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-strength","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"shadow","category":"Core tokens","group":"Shadow strength","description":"Base opacity for the shadow ramp. --sf-shadow-lightness controls tonal density; --sf-shadow-strength is auto-boosted in dark mode so elevation reads on dark surfaces.","note":"Base opacity for the entire shadow ramp. Auto-boosted in dark mode via --sf-is-dark. Override with calc() to preserve the adaptation: e.g. calc(0.12 + var(--sf-is-dark) * 0.17).","value":"calc(0.08 + var(--sf-is-dark) * 0.17)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-xl","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Extra-large shadow for modals, dialogs, and high-elevation sheets.","note":"Extra-large shadow for modals, dialogs, and high-elevation sheets.","value":"0 2px 8px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.5), 0.7)), 0 12px 36px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 3.5), 0.7)), 0 24px 72px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2.5), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-shadow-xs","tier":"PUBLIC","role":"consumption","namespace":"shadow","category":"Core tokens","group":"Output token @property registrations","description":"Extra-small shadow for barely-elevated elements (focused inputs, small chips).","note":"Extra-small shadow for barely-elevated elements (focused inputs, small chips).","value":"0 1px 2px 0 oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 0.5), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sidebar-gap","tier":"PUBLIC","role":"consumption","namespace":"sidebar","category":"Layout tokens","group":"Sidebar","description":"Configuration tokens for the sidebar layout pattern (main content + fixed-width aside).","note":"Gap between sidebar and main content column.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sidebar-min-width","tier":"PUBLIC","role":"knob","namespace":"sidebar","category":"Layout tokens","group":"Sidebar","description":"Configuration tokens for the sidebar layout pattern (main content + fixed-width aside).","note":"Minimum sidebar width before the layout collapses to stacking.","value":"50%","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sidebar-width","tier":"PUBLIC","role":"knob","namespace":"sidebar","category":"Layout tokens","group":"Sidebar","description":"Configuration tokens for the sidebar layout pattern (main content + fixed-width aside).","note":"Preferred width of the sidebar column.","value":"18rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-size-l","tier":"PUBLIC","role":"knob","namespace":"size","category":"Core tokens","group":"UI sizes","description":"Fixed sizes for interactive components (buttons, inputs, chips) at S / M / L.","note":"Large UI component height (~44px). Touch-friendly interactive elements.","value":"2.75rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-size-m","tier":"PUBLIC","role":"knob","namespace":"size","category":"Core tokens","group":"UI sizes","description":"Fixed sizes for interactive components (buttons, inputs, chips) at S / M / L.","note":"Medium UI component height (~36px). Default size for buttons and inputs.","value":"2.5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-size-s","tier":"PUBLIC","role":"knob","namespace":"size","category":"Core tokens","group":"UI sizes","description":"Fixed sizes for interactive components (buttons, inputs, chips) at S / M / L.","note":"Small UI component height (~28px). Compact buttons and input variants.","value":"2rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-size-xl","tier":"PUBLIC","role":"knob","namespace":"size","category":"Core tokens","group":"UI sizes","description":"Fixed sizes for interactive components (buttons, inputs, chips) at S / M / L.","note":"Extra-large interactive component height (~52px). For oversized or prominently touch-friendly controls.","value":"3.5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-size-xs","tier":"PUBLIC","role":"knob","namespace":"size","category":"Core tokens","group":"UI sizes","description":"Fixed sizes for interactive components (buttons, inputs, chips) at S / M / L.","note":"Extra-small interactive component height (~24px). For very compact inline elements and micro-controls.","value":"1.5rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-2xl","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"48px-equivalent spacing. Large section spacing.","note":"48px-equivalent spacing. Large section spacing.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 3) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 3) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 3)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 3) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 3) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-2xs","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"4px-equivalent spacing. Tight inline gaps, icon-to-text padding.","note":"4px-equivalent spacing. Tight inline gaps, icon-to-text padding.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -3) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -3) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -3)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -3) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -3) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-3xl","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"64px-equivalent spacing. Extra-large layout gaps.","note":"64px-equivalent spacing. Extra-large layout gaps.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 4) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 4) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 4)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 4) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 4) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-4xl","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"96px-equivalent spacing. Hero / page-level section padding.","note":"96px-equivalent spacing. Hero / page-level section padding.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 5) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 5) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 5)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 5) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 5) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-base-max","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"space","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Maximum base spacing unit (rem) at the widest viewport. Drives the top of the fluid spacing ramp. Part of the fluid scale engine.","value":"2","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-base-min","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"space","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Minimum base spacing unit (rem) at the narrowest viewport. Drives the bottom of the fluid spacing ramp. Part of the fluid scale engine.","value":"1","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-l","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"24px-equivalent spacing. Card padding, section dividers.","note":"24px-equivalent spacing. Card padding, section dividers.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 1) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 1) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 1)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 1) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 1) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-m","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"16px-equivalent spacing. Default unit, widely applicable.","note":"16px-equivalent spacing. Default unit, widely applicable.","value":"calc(clamp(calc(var(--sf-space-base-min) * 1rem), calc((var(--sf-space-base-max) - var(--sf-space-base-min)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * 1rem), calc(var(--sf-space-base-max) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-none","tier":"PUBLIC","role":"knob","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"Zero spacing. Explicit alias for clarity in utility classes.","note":"Zero spacing. Explicit alias for clarity in utility classes.","value":"0","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-px","tier":"PUBLIC","role":"knob","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"1px spacing. Hairline offset for fine adjustments.","note":"1px spacing. Hairline offset for fine adjustments.","value":"1px","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-ratio-max","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"space","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Modular spacing ratio at the widest viewport. Controls step-to-step growth in the spacing ramp. Default 1.333 (perfect fourth). Part of the fluid scale engine.","value":"1.333","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-ratio-min","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"space","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Modular spacing ratio at the narrowest viewport. Controls step-to-step growth in the spacing ramp. Default 1.25 (major third). Part of the fluid scale engine.","value":"1.25","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-s","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"12px-equivalent spacing. Form field inner padding, narrow gaps.","note":"12px-equivalent spacing. Form field inner padding, narrow gaps.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -1) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -1) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -1)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -1) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -1) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"space","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Global spacing multiplier. Scales the fluid spacing ramp. Increase above 1 for airier layouts; reduce below 1 for compact UIs.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-xl","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"32px-equivalent spacing. Feature row gaps, generous section padding.","note":"32px-equivalent spacing. Feature row gaps, generous section padding.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 2) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 2) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 2)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), 2) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), 2) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-space-xs","tier":"PUBLIC","role":"consumption","namespace":"space","category":"Core tokens","group":"Output token @property registrations","description":"8px-equivalent spacing. Compact list rows, tab padding.","note":"8px-equivalent spacing. Compact list rows, tab padding.","value":"calc(clamp(calc(var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -2) * 1rem), calc((var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -2) - var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -2)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-space-base-min) * pow(var(--sf-space-ratio-min), -2) * 1rem), calc(var(--sf-space-base-max) * pow(var(--sf-space-ratio-max), -2) * 1rem)) * var(--sf-space-scale))","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-stack-gap","tier":"PUBLIC","role":"consumption","namespace":"stack","category":"Layout tokens","group":"Stack","description":"Gap for the stack layout primitive (vertically stacked blocks).","note":"Vertical gap between stacked block-level elements in the stack layout.","value":"var(--sf-content-gap)","aliasOf":"--sf-content-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-state-pending-opacity","tier":"PUBLIC","role":"knob","namespace":"state","category":"Core tokens","group":"Opacity","description":"Opacity tokens for specific UI states: --sf-opacity-disabled dims non-interactive elements; --sf-state-pending-opacity dims elements in an async/loading state.","note":"Opacity for pending / loading state elements.","value":"0.7","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sticky-offset","tier":"PUBLIC","role":"consumption","namespace":"sticky","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"top offset for position: sticky elements, accounting for the header height.","value":"clamp( var(--sf-sticky-offset-mobile), calc((var(--sf-sticky-offset-desktop) - var(--sf-sticky-offset-mobile)) / ((var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * 1rem) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-sticky-offset-mobile)), var(--sf-sticky-offset-desktop))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sticky-offset-desktop","tier":"PUBLIC","role":"consumption","namespace":"sticky","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Sticky offset at desktop breakpoints.","value":"var(--sf-header-height-desktop)","aliasOf":"--sf-header-height-desktop","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-sticky-offset-mobile","tier":"PUBLIC","role":"consumption","namespace":"sticky","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Sticky offset at mobile breakpoints.","value":"var(--sf-header-height-mobile)","aliasOf":"--sf-header-height-mobile","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-surface-color","tier":"PUBLIC","role":"consumption","namespace":"surface","category":"Macro tokens","group":"Surface color","description":"Input color for the generic .sf-surface macro. Set any color value; the macro derives the background, auto-contrast foreground, and contextual token set from it.","note":"Input for the generic .sf-surface macro. Set any color (including palette shades); the macro derives background, auto-contrast foreground, and the contextual token set from it.","value":"var(--sf-color-base)","aliasOf":"--sf-color-base","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-switcher-gap","tier":"PUBLIC","role":"consumption","namespace":"switcher","category":"Layout tokens","group":"Switcher","description":"Configuration tokens for the switcher layout (horizontal → vertical breakpoint).","note":"Gap between switcher columns / rows.","value":"var(--sf-gap)","aliasOf":"--sf-gap","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-switcher-threshold","tier":"PUBLIC","role":"knob","namespace":"switcher","category":"Layout tokens","group":"Switcher","description":"Configuration tokens for the switcher layout (horizontal → vertical breakpoint).","note":"Inline-size threshold below which the switcher flips from horizontal to vertical.","value":"30rem","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xl","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"2× large font size (~24px). Section headings.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 3) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 3) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 3)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 3) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 3) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xl-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for 2×-large text.","note":"Font weight for 2×-large text.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xl-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for 2×-large text.","note":"Letter-spacing for 2×-large text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xl-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for 2×-large text.","note":"Line height for 2×-large text.","value":"calc(var(--sf-leading-snug) - 6 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xl-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for 2×-large text.","note":"Optimal line length for 2×-large text.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xs","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Extra-extra-small font size (~11px). Fine print, badges.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -3) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -3) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -3)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -3) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -3) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xs-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for 2×-extra-small text. Override to deviate from the global weight at this size.","note":"Font weight for 2×-extra-small text. Override to deviate from the global weight at this size.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xs-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for 2×-extra-small text.","note":"Letter-spacing for 2×-extra-small text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xs-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for 2×-extra-small text.","note":"Line height for 2×-extra-small text.","value":"var(--sf-leading-relaxed)","aliasOf":"--sf-leading-relaxed","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-2xs-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length (max-width in ch) for 2×-extra-small text.","note":"Optimal line length (max-width in ch) for 2×-extra-small text.","value":"55ch","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-3xl","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"3× large font size (~30px). Major headings.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 4) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 4) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 4)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 4) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 4) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-3xl-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for 3×-large text.","note":"Font weight for 3×-large text.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-3xl-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for 3×-large text. Typically negative to tighten large headings.","note":"Letter-spacing for 3×-large text. Typically negative to tighten large headings.","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-3xl-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for 3×-large text.","note":"Line height for 3×-large text.","value":"calc(var(--sf-leading-tight) - 7 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-3xl-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for 3×-large text.","note":"Optimal line length for 3×-large text.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-4xl","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"4× large font size (~36px). Display-level headings.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 5) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 5) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 5)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 5) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 5) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-4xl-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for 4×-large text.","note":"Font weight for 4×-large text.","value":"var(--sf-font-weight-heading)","aliasOf":"--sf-font-weight-heading","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-4xl-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for 4×-large text.","note":"Letter-spacing for 4×-large text.","value":"var(--sf-tracking-tight)","aliasOf":"--sf-tracking-tight","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-4xl-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for 4×-large text.","note":"Line height for 4×-large text.","value":"calc(var(--sf-leading-tight) - 8 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-4xl-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for 4×-large text.","note":"Optimal line length for 4×-large text.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-base-max","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Maximum base font size (rem) at the widest viewport. End point for the fluid type scale at wide screens. Part of the fluid scale engine.","value":"1.25","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-base-min","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Minimum base font size (rem) at the narrowest viewport. Starting point for the fluid type scale at narrow screens. Part of the fluid scale engine.","value":"1","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-base-max","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Maximum display/hero font size (rem) at the widest viewport. Drives the ceiling of the fluid display type scale. Part of the fluid scale engine.","value":"3","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-base-min","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Minimum display/hero font size (rem) at the narrowest viewport. Drives the floor of the fluid display type scale. Part of the fluid scale engine.","value":"2.4","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-l","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Large display font size (~68px+). Oversized hero text.","value":"calc(clamp(calc(var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 2) * 1rem), calc((var(--sf-text-display-base-max) * pow(var(--sf-text-ratio-max), 2) - var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 2)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 2) * 1rem), calc(var(--sf-text-display-base-max) * pow(var(--sf-text-ratio-max), 2) * 1rem)) * var(--sf-text-display-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-m","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Medium display font size (~54px). Hero headings.","value":"calc(clamp(calc(var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 1) * 1rem), calc((var(--sf-text-display-base-max) * pow(var(--sf-text-ratio-max), 1) - var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 1)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-display-base-min) * pow(var(--sf-text-ratio-min), 1) * 1rem), calc(var(--sf-text-display-base-max) * pow(var(--sf-text-ratio-max), 1) * 1rem)) * var(--sf-text-display-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-s","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Small display font size (~42px). Hero sub-headings.","value":"calc(clamp(calc(var(--sf-text-display-base-min) * 1rem), calc((var(--sf-text-display-base-max) - var(--sf-text-display-base-min)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-display-base-min) * 1rem), calc(var(--sf-text-display-base-max) * 1rem)) * var(--sf-text-display-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-display-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Multiplier applied only to the display/hero type scale (--sf-text-display-*). Tune headline impact independently of body text.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-l","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Large font size (~18px). Lead paragraphs, prominent labels.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 1) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 1) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 1)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 1) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 1) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-l-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for large text.","note":"Font weight for large text.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-l-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for large text.","note":"Letter-spacing for large text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-l-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for large text.","note":"Line height for large text.","value":"calc(var(--sf-leading-normal) - 4 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-l-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for large text.","note":"Optimal line length for large text.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-m","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Medium / base font size (~16px). Typical body text.","value":"calc(clamp(calc(var(--sf-text-base-min) * 1rem), calc((var(--sf-text-base-max) - var(--sf-text-base-min)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * 1rem), calc(var(--sf-text-base-max) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-m-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for medium (body) text.","note":"Font weight for medium (body) text.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-m-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for medium text.","note":"Letter-spacing for medium text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-m-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for medium text.","note":"Line height for medium text.","value":"calc(var(--sf-leading-normal) - 3 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-m-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal reading line length for medium text (~65–75ch).","note":"Optimal reading line length for medium text (~65–75ch).","value":"65ch","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-ratio-max","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Modular type scale ratio at the widest viewport. Controls step-to-step size growth. Default 1.333. Part of the fluid scale engine.","value":"1.333","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-ratio-min","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"FLUID SCALE ENGINE","description":"Generative inputs that drive all fluid clamp() type and spacing scales at runtime. Override the base, ratio, and viewport range tokens to globally rescale the entire system without touching individual step tokens.","note":"Modular type scale ratio at the narrowest viewport. Controls step-to-step size growth in the fluid type ramp. Default 1.25. Part of the fluid scale engine.","value":"1.25","aliasOf":null,"registered":true,"syntax":"","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-s","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Small font size (~14px). Secondary content, UI annotations.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -1) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -1) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -1)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -1) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -1) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-s-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for small text.","note":"Font weight for small text.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-s-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for small text.","note":"Letter-spacing for small text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-s-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for small text.","note":"Line height for small text.","value":"calc(var(--sf-leading-relaxed) - 2 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-s-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for small text.","note":"Optimal line length for small text.","value":"65ch","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-scale","tier":"PUBLIC-ADVANCED","role":"knob","namespace":"text","category":"Core tokens","group":"Scale multipliers","description":"Global proportional multipliers for the four main design axes (type, space, radius, motion). Adjusting one multiplier uniformly scales every clamp() value in that dimension.","note":"Global type-size multiplier. Scales the entire fluid type scale. 1.08 gives noticeably larger body text without breaking layout.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-shadow-l","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Output token @property registrations","description":"Large text-shadow for high-contrast text over busy or dark image backgrounds.","note":"Large text-shadow for high-contrast text over busy or dark image backgrounds.","value":"0 4px 8px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2.5), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-shadow-m","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Output token @property registrations","description":"Medium text-shadow. Use for text overlaid on images to improve legibility.","note":"Medium text-shadow. Use for text overlaid on images to improve legibility.","value":"0 2px 4px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 2), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-shadow-none","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Output token @property registrations","description":"Removes text-shadow (use to explicitly reset inherited shadows).","note":"Removes text-shadow (use to explicitly reset inherited shadows).","value":"none","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-shadow-s","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Output token @property registrations","description":"Small text-shadow for subtle depth on display headings.","note":"Small text-shadow for subtle depth on display headings.","value":"0 1px 2px oklch(from var(--sf-shadow-color) l c h / clamp(0, calc(var(--sf-shadow-strength) * 1.5), 0.7))","aliasOf":null,"registered":true,"syntax":"*","fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xl","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Extra-large font size (~20px). Sub-headings, callout text.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 2) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 2) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 2)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), 2) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), 2) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xl-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for extra-large text.","note":"Font weight for extra-large text.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xl-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for extra-large text.","note":"Letter-spacing for extra-large text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xl-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for extra-large text.","note":"Line height for extra-large text.","value":"calc(var(--sf-leading-snug) - 5 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xl-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for extra-large text.","note":"Optimal line length for extra-large text.","value":"none","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xs","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Font sizes","description":"Fluid font-size scale. Values interpolate between mobile and desktop sizes, so prefer these over fixed rem values.","note":"Extra-small font size (~12px). Labels, captions, metadata.","value":"calc(clamp(calc(var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -2) * 1rem), calc((var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -2) - var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -2)) / (var(--sf-fluid-max-vw) - var(--sf-fluid-min-vw)) * (100vw - var(--sf-fluid-min-vw) * 1rem) + var(--sf-text-base-min) * pow(var(--sf-text-ratio-min), -2) * 1rem), calc(var(--sf-text-base-max) * pow(var(--sf-text-ratio-max), -2) * 1rem)) * var(--sf-text-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xs-font-weight","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Font weight for extra-small text.","note":"Font weight for extra-small text.","value":"var(--sf-font-weight-body)","aliasOf":"--sf-font-weight-body","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xs-letter-spacing","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Letter-spacing for extra-small text.","note":"Letter-spacing for extra-small text.","value":"var(--sf-tracking-normal)","aliasOf":"--sf-tracking-normal","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xs-line-height","tier":"PUBLIC","role":"consumption","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Line height for extra-small text.","note":"Line height for extra-small text.","value":"calc(var(--sf-leading-relaxed) - 1 * var(--sf-leading-taper))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-text-xs-max-width","tier":"PUBLIC","role":"knob","namespace":"text","category":"Core tokens","group":"Per-size typography sub-properties","description":"Optimal line length for extra-small text.","note":"Optimal line length for extra-small text.","value":"60ch","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-theme-transition-duration","tier":"PUBLIC","role":"consumption","namespace":"theme","category":"Core tokens","group":"Motion & easing","description":"Duration and easing tokens. Build all transitions and animations from these to ensure consistent motion across the system.","note":"Duration of the .sf-theme-transition animated color-scheme crossfade. Scales with --sf-motion-scale so reduced-motion preferences are respected. Default 300ms.","value":"calc(300ms * var(--sf-motion-scale))","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-touch-target","tier":"PUBLIC","role":"consumption","namespace":"touch","category":"Core tokens","group":"Layout & a11y","description":"Focus ring, header height, sticky offset, touch-target, text-contrast knobs, and device safe-area insets. These govern keyboard accessibility, scroll behaviour, and adaptive contrast globally.","note":"Minimum touch-target size for interactive elements per WCAG 2.5.5.","value":"var(--sf-size-l)","aliasOf":"--sf-size-l","registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-tracking-normal","tier":"PUBLIC","role":"knob","namespace":"tracking","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Normal letter-spacing (0). Default for body text.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-tracking-tight","tier":"PUBLIC","role":"knob","namespace":"tracking","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Tight letter-spacing (slightly negative). Suitable for large headings.","value":"-0.025em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-tracking-wide","tier":"PUBLIC","role":"knob","namespace":"tracking","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Wide letter-spacing. Use for small-caps labels.","value":"0.025em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-tracking-wider","tier":"PUBLIC","role":"knob","namespace":"tracking","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Wider letter-spacing for strongly spaced labels.","value":"0.05em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-tracking-widest","tier":"PUBLIC","role":"knob","namespace":"tracking","category":"Core tokens","group":"Line heights & letter spacing","description":"Typographic fine-tuning tokens: leading (line-height) and tracking (letter-spacing) for every weight class.","note":"Widest letter-spacing for all-caps microcopy.","value":"0.1em","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-colors","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand for color-related properties (color, background, border-color).","value":"color var(--sf-duration-normal) var(--sf-ease-out), background-color var(--sf-duration-normal) var(--sf-ease-out), border-color var(--sf-duration-normal) var(--sf-ease-out), text-decoration-color var(--sf-duration-normal) var(--sf-ease-out), fill var(--sf-duration-normal) var(--sf-ease-out), stroke var(--sf-duration-normal) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-enter","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Enter-phase transition (ease-out). Use on elements appearing in the viewport.","value":"color var(--sf-duration-normal) var(--sf-ease-out), background-color var(--sf-duration-normal) var(--sf-ease-out), border-color var(--sf-duration-normal) var(--sf-ease-out), box-shadow var(--sf-duration-normal) var(--sf-ease-out), opacity var(--sf-duration-normal) var(--sf-ease-out), transform var(--sf-duration-normal) var(--sf-ease-out), filter var(--sf-duration-normal) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-exit","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Exit-phase transition (ease-in). Use on elements leaving the viewport.","value":"color var(--sf-duration-fast) var(--sf-ease-in), background-color var(--sf-duration-fast) var(--sf-ease-in), border-color var(--sf-duration-fast) var(--sf-ease-in), box-shadow var(--sf-duration-fast) var(--sf-ease-in), opacity var(--sf-duration-fast) var(--sf-ease-in), transform var(--sf-duration-fast) var(--sf-ease-in), filter var(--sf-duration-fast) var(--sf-ease-in)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-fast","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Fast-duration transition shorthand.","value":"color var(--sf-duration-fast) var(--sf-ease-out), background-color var(--sf-duration-fast) var(--sf-ease-out), border-color var(--sf-duration-fast) var(--sf-ease-out), box-shadow var(--sf-duration-fast) var(--sf-ease-out), opacity var(--sf-duration-fast) var(--sf-ease-out), transform var(--sf-duration-fast) var(--sf-ease-out), filter var(--sf-duration-fast) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-form-field","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand optimised for form fields: color and background at normal pace so label color shifts feel natural; border, shadow, and opacity at fast pace so focus rings appear crisply.","value":"color var(--sf-duration-normal) var(--sf-ease-out), background-color var(--sf-duration-normal) var(--sf-ease-out), text-decoration-color var(--sf-duration-normal) var(--sf-ease-out), fill var(--sf-duration-normal) var(--sf-ease-out), stroke var(--sf-duration-normal) var(--sf-ease-out), border-color var(--sf-duration-fast) var(--sf-ease-out), box-shadow var(--sf-duration-fast) var(--sf-ease-out), opacity var(--sf-duration-fast) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-opacity","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand for opacity.","value":"opacity var(--sf-duration-normal) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-overlay","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand for overlay fades (opacity + visibility).","value":"overlay var(--sf-duration-normal) allow-discrete, display var(--sf-duration-normal) allow-discrete","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-shadow","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand for box-shadow.","value":"box-shadow var(--sf-duration-normal) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-slow","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Slow-duration transition shorthand.","value":"color var(--sf-duration-slow) var(--sf-ease-in-out), background-color var(--sf-duration-slow) var(--sf-ease-in-out), border-color var(--sf-duration-slow) var(--sf-ease-in-out), box-shadow var(--sf-duration-slow) var(--sf-ease-in-out), opacity var(--sf-duration-slow) var(--sf-ease-in-out), transform var(--sf-duration-slow) var(--sf-ease-in-out), filter var(--sf-duration-slow) var(--sf-ease-in-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-transition-transform","tier":"PUBLIC","role":"consumption","namespace":"transition","category":"Core tokens","group":"Transition shorthands","description":"Pre-built transition shorthand values for the most common animated properties.","note":"Transition shorthand for transform.","value":"transform var(--sf-duration-normal) var(--sf-ease-out)","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-base","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Base stacking level (1). Establishes a stacking context without elevation.","value":"0","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-below","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index below stacking context base. For decorative pseudo-elements.","value":"-1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-dropdown","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for dropdown menus and select popups.","value":"1020","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-fixed","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for position: fixed elements.","value":"1010","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-modal","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for modal dialogs and their non-top-layer backdrop scrims. Sits above overlays and dropdowns. Default 1040.","value":"1040","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-overlay","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for modal / dialog backdrops.","value":"1030","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-raised","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Raised elevation (50). Cards, sticky headers.","value":"1","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-sticky","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for position: sticky elements (navbars, table headers).","value":"1000","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-toast","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for toast / snackbar notifications.","value":"1050","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]},{"name":"--sf-z-tooltip","tier":"PUBLIC","role":"knob","namespace":"z","category":"Core tokens","group":"Z-index","description":"Z-index scale using named layers. Never use raw numbers — always reference a token from this scale.","note":"Z-index for tooltips and transient floating notifications. Highest named layer in the z-index stack. Default 1060.","value":"1060","aliasOf":null,"registered":false,"syntax":null,"fallbackOnly":false,"optional":false,"layer":"slashed.tokens","bundles":["full","optimal","optimal-components","optimal-utilities"]}]`),Bs={_sync:ph,tokens:mh};var Zn=g(' '),Jn=g(' '),vh=g(" "),hh=g('optional'),Xn=g(' '),gh=g(' '),Qn=g(' ',1),$n=g(' ',1),bh=g('knob'),yh=g('advanced'),xh=g(' '),kh=g(' '),wh=g('Classes & Variables ');function _h(a,e){Qt(e,!0);const o=uh.classes,n=Bs.tokens.filter(N=>N.tier==="PUBLIC"||N.tier==="PUBLIC-ADVANCED");let l=G(""),i=G("classes"),c=G(""),d=u(()=>()=>{const N=t(l).trim().toLowerCase();return N?o.filter($=>$.name.toLowerCase().includes(N)||$.selector?.toLowerCase().includes(N)||$.description?.toLowerCase().includes(N)||$.group?.toLowerCase().includes(N)):o}),p=u(()=>()=>{const N=t(l).trim().toLowerCase();return N?n.filter($=>$.name.toLowerCase().includes(N)||$.description?.toLowerCase().includes(N)||$.group?.toLowerCase().includes(N)||$.value?.toLowerCase().includes(N)):n});function m(N){const $=new Map;for(const Ge of N){const te=Ge.category||"Other",ge=Ge.group||"";$.has(te)||$.set(te,new Map);const Pe=$.get(te);Pe.has(ge)||Pe.set(ge,[]),Pe.get(ge).push(Ge)}return $}let h=u(()=>m(t(d)())),v=u(()=>m(t(p)())),y=null;async function k(N){try{await navigator.clipboard.writeText(N),O(c,N,!0),y&&clearTimeout(y),y=setTimeout(()=>{t(c)===N&&O(c,""),y=null},1500)}catch{}}const w={layout:"text-violet-400",macro:"text-sky-400",state:"text-amber-400",accessibility:"text-emerald-400",motion:"text-pink-400",print:"text-slate-400",form:"text-orange-400",component:"text-indigo-400",theme:"text-teal-400"};var E=wh(),B=s(E),U=r(s(B),2),P=r(U,2),S=s(P),_=s(S),z=r(S,2),L=s(z),R=r(B,2),D=s(R);{var A=N=>{var $=Bt(),Ge=de($);{var te=ve=>{var me=Zn(),je=s(me);C(()=>b(je,`No classes match "${t(l)??""}"`)),f(ve,me)},ge=u(()=>t(d)().length===0),Pe=ve=>{var me=Bt(),je=de(me);re(je,17,()=>[...t(h).entries()],([$e,tt])=>$e,($e,tt)=>{var M=u(()=>Pa(t(tt),2));let J=()=>t(M)[0],be=()=>t(M)[1];var ye=$n(),W=de(ye),ke=s(W),He=s(ke),st=r(W,2);re(st,17,()=>[...be().entries()],([Se,Be])=>Se,(Se,Be)=>{var ae=u(()=>Pa(t(Be),2));let q=()=>t(ae)[0],we=()=>t(ae)[1];var fe=Qn(),ce=de(fe);{var xe=De=>{var Ae=Jn(),Ie=s(Ae);C(()=>b(Ie,q())),f(De,Ae)};I(ce,De=>{q()&&De(xe)})}var ze=r(ce,2);re(ze,21,we,De=>De.name,(De,Ae)=>{var Ie=gh(),Ve=s(Ie),nt=s(Ve),ct=s(nt),dt=s(ct),Ot=r(ct,2);{var mt=St=>{var Et=vh(),it=s(Et);C(()=>{Ye(Et,1,`text-[8px] font-bold uppercase ${w[t(Ae).kind]??"text-slate-500"}`),b(it,t(Ae).kind)}),f(St,Et)};I(Ot,St=>{t(Ae).kind&&St(mt)})}var Q=r(Ot,2);{var Oe=St=>{var Et=hh();f(St,Et)};I(Q,St=>{t(Ae).optional&&St(Oe)})}var Me=r(nt,2);{var at=St=>{var Et=Xn(),it=s(Et);C(()=>b(it,t(Ae).description)),f(St,Et)};I(Me,St=>{t(Ae).description&&St(at)})}var ft=r(Ve,2),_t=s(ft);{var xt=St=>{Mo(St,{class:"w-3 h-3 text-emerald-400"})},Nt=St=>{Fr(St,{class:"w-3 h-3 text-slate-500"})};I(_t,St=>{t(c)===t(Ae).selector?St(xt):St(Nt,-1)})}C(()=>b(dt,t(Ae).selector)),x("click",ft,()=>k(t(Ae).selector)),f(De,Ie)}),f(Se,fe)}),C(()=>b(He,J())),f($e,ye)}),f(ve,me)};I(Ge,ve=>{t(ge)?ve(te):ve(Pe,-1)})}f(N,$)},T=N=>{var $=Bt(),Ge=de($);{var te=ve=>{var me=Zn(),je=s(me);C(()=>b(je,`No tokens match "${t(l)??""}"`)),f(ve,me)},ge=u(()=>t(p)().length===0),Pe=ve=>{var me=Bt(),je=de(me);re(je,17,()=>[...t(v).entries()],([$e,tt])=>$e,($e,tt)=>{var M=u(()=>Pa(t(tt),2));let J=()=>t(M)[0],be=()=>t(M)[1];var ye=$n(),W=de(ye),ke=s(W),He=s(ke),st=r(W,2);re(st,17,()=>[...be().entries()],([Se,Be])=>Se,(Se,Be)=>{var ae=u(()=>Pa(t(Be),2));let q=()=>t(ae)[0],we=()=>t(ae)[1];var fe=Qn(),ce=de(fe);{var xe=De=>{var Ae=Jn(),Ie=s(Ae);C(()=>b(Ie,q())),f(De,Ae)};I(ce,De=>{q()&&De(xe)})}var ze=r(ce,2);re(ze,21,we,De=>De.name,(De,Ae)=>{var Ie=kh(),Ve=s(Ie),nt=s(Ve),ct=s(nt),dt=s(ct),Ot=r(ct,2);{var mt=it=>{var Gt=bh();f(it,Gt)};I(Ot,it=>{t(Ae).role==="knob"&&it(mt)})}var Q=r(Ot,2);{var Oe=it=>{var Gt=yh();f(it,Gt)};I(Q,it=>{t(Ae).tier==="PUBLIC-ADVANCED"&&it(Oe)})}var Me=r(nt,2);{var at=it=>{var Gt=xh(),ea=s(Gt);C(()=>b(ea,t(Ae).value)),f(it,Gt)};I(Me,it=>{t(Ae).value&&it(at)})}var ft=r(Me,2);{var _t=it=>{var Gt=Xn(),ea=s(Gt);C(()=>b(ea,t(Ae).description)),f(it,Gt)};I(ft,it=>{t(Ae).description&&it(_t)})}var xt=r(Ve,2),Nt=s(xt);{var St=it=>{Mo(it,{class:"w-3 h-3 text-emerald-400"})},Et=it=>{Fr(it,{class:"w-3 h-3 text-slate-500"})};I(Nt,it=>{t(c)===`var(${t(Ae).name})`?it(St):it(Et,-1)})}C(()=>b(dt,t(Ae).name)),x("click",xt,()=>k(`var(${t(Ae).name})`)),f(De,Ie)}),f(Se,fe)}),C(()=>b(He,J())),f($e,ye)}),f(ve,me)};I(Ge,ve=>{t(ge)?ve(te):ve(Pe,-1)})}f(N,$)};I(D,N=>{t(i)==="classes"?N(A):N(T,-1)})}C((N,$)=>{Ye(S,1,`flex-1 py-1.5 rounded text-[10px] font-bold transition-all cursor-pointer ${t(i)==="classes"?"bg-indigo-600/30 text-indigo-200 border border-indigo-500/30":"text-slate-500 hover:text-slate-300"}`),b(_,`CSS classes (${N??""})`),Ye(z,1,`flex-1 py-1.5 rounded text-[10px] font-bold transition-all cursor-pointer ${t(i)==="tokens"?"bg-indigo-600/30 text-indigo-200 border border-indigo-500/30":"text-slate-500 hover:text-slate-300"}`),b(L,`CSS vars (${$??""})`)},[()=>t(d)().length,()=>t(p)().length]),ai(U,()=>t(l),N=>O(l,N)),x("click",S,()=>{O(i,"classes")}),x("click",z,()=>{O(i,"tokens")}),f(a,E),$t()}aa(["click"]);var Ch=g(''),Oh=g(''),Sh=g(' '),Lh=g(''),Ph=g(' '),Ih=g(''),Bh=g(''),Uh=g(' ');function Ui(a,e){Qt(e,!0);let o=G(!1);function n(A){const T=A.name;if(T.includes("color")||T.includes("source")||T.includes("-bg")||T.includes("-border"))return"color";if(T.includes("font")||T.includes("family"))return"font";const N=A.syntax?.toLowerCase()??"";return N.includes("number")||N.includes("length")||N.includes("integer")?"number":"text"}let l=u(()=>e.overrideValue??e.token.value),i=u(()=>e.overrideValue!==void 0),c=u(()=>n(e.token)),d=u(()=>e.token.name.replace("--sf-",""));function p(A){return Fa.value,ho(A)||ho(`var(${e.token.name})`)||A}let m=u(()=>t(c)==="color"?p(t(l)):"");var h=Uh(),v=s(h),y=r(v,2);{var k=A=>{var T=Ch();C(()=>lt(T,`background: ${t(m)}`)),f(A,T)},w=A=>{var T=Oh();f(A,T)};I(y,A=>{t(c)==="color"?A(k):A(w,-1)})}var E=r(y,2),B=s(E),U=s(B),P=r(B,2);{var S=A=>{var T=Sh(),N=s(T);C(()=>b(N,e.token.description)),f(A,T)};I(P,A=>{e.token.description&&A(S)})}var _=r(E,2);{var z=A=>{var T=Lh();C(()=>Xt(T,t(l))),lo("blur",T,N=>{const $=N.target.value.trim();$&&$!==e.token.value?e.onSet($):(!$||$===e.token.value)&&e.onReset(),O(o,!1)}),x("keydown",T,N=>{N.key==="Enter"&&N.currentTarget.blur(),N.key==="Escape"&&O(o,!1)}),f(A,T)},L=A=>{var T=Ih(),N=s(T);{var $=te=>{var ge=Ph(),Pe=s(ge);C(()=>b(Pe,t(l))),f(te,ge)},Ge=te=>{var ge=lr();C(()=>b(ge,t(l))),f(te,ge)};I(N,te=>{t(i)?te($):te(Ge,-1)})}C(()=>Y(T,"title",t(l))),x("click",T,()=>{O(o,!0)}),f(A,T)};I(_,A=>{t(o)?A(z):A(L,-1)})}var R=r(_,2);{var D=A=>{var T=Bh();x("click",T,function(...N){e.onReset?.apply(this,N)}),f(A,T)};I(R,A=>{t(i)&&A(D)})}C(()=>{Ye(h,1,`flex items-center gap-2 px-3 py-1.5 rounded-lg transition-colors group ${t(i)?"bg-indigo-500/8 border border-indigo-500/15":"hover:bg-white/4"}`),Ye(v,1,`w-1.5 h-1.5 rounded-full shrink-0 ${t(i)?"bg-indigo-500":"bg-transparent"}`),Y(B,"title",e.token.name),b(U,t(d))}),f(a,h),$t()}aa(["keydown","click"]);var zh=g(' '),Ah=g('No tokens found
'),Eh=g('
'),Rh=g(' '),Th=g(' ');function Dh(a,e){Qt(e,!0);let o=G(""),n=u(()=>()=>{const U=e.patterns??[e.domain];return e.tokens.filter(P=>U.some(S=>P.name.includes(S))&&P.tier!=="INTERNAL")}),l=u(()=>()=>{if(!t(o))return t(n)();const U=t(o).toLowerCase();return t(n)().filter(P=>P.name.toLowerCase().includes(U)||P.description?.toLowerCase().includes(U))}),i=u(()=>t(l)().filter(U=>U.name in e.overrides).length);var c=Th(),d=s(c),p=s(d),m=s(p),h=r(p,2);{var v=U=>{var P=zh(),S=s(P);C(()=>b(S,`${t(i)??""} modified`)),f(U,P)};I(h,U=>{t(i)>0&&U(v)})}var y=r(d,2),k=r(y,2);{var w=U=>{var P=Ah();f(U,P)},E=u(()=>t(l)().length===0),B=U=>{var P=Rh(),S=s(P);re(S,17,()=>t(l)().slice(0,60),R=>R.name,(R,D)=>{Ui(R,{get token(){return t(D)},get overrideValue(){return e.overrides[t(D).name]},onSet:A=>e.onSet(t(D).name,A),onReset:()=>e.onReset(t(D).name)})});var _=r(S,2);{var z=R=>{var D=Eh(),A=s(D);C(T=>b(A,`${T??""} more — refine your search`),[()=>t(l)().length-60]),f(R,D)},L=u(()=>t(l)().length>60);I(_,R=>{t(L)&&R(z)})}f(U,P)};I(k,U=>{t(E)?U(w):U(B,-1)})}C(()=>{b(m,`${e.domain??""} tokens`),Y(y,"placeholder",`Search ${e.domain} tokens…`),Xt(y,t(o))}),x("input",y,U=>{O(o,U.target.value,!0)}),f(a,c),$t()}aa(["input"]);var el=g(''),Mh=g(' '),Nh=g(' '),Fh=g(''),jh=g(''),Gh=g(' '),Hh=g(''),qh=g(' ');function Vh(a,e){Qt(e,!0);const o={PUBLIC:0,"PUBLIC-ADVANCED":1,INTERNAL:2};let n=G(""),l=G(!1),i=G(!1),c=u(()=>e.tokens.filter(W=>e.patterns.some(ke=>W.name.includes(ke))).sort((W,ke)=>{const He=o[W.tier??"INTERNAL"]??2,st=o[ke.tier??"INTERNAL"]??2;return He!==st?He-st:W.name.localeCompare(ke.name)})),d=u(()=>()=>{let W=t(c);if(t(l)||(W=W.filter(ke=>ke.tier!=="INTERNAL")),t(i)&&(W=W.filter(ke=>ke.name in e.overrides)),t(n)){const ke=t(n).toLowerCase();W=W.filter(He=>He.name.toLowerCase().includes(ke)||He.description?.toLowerCase().includes(ke))}return W}),p=u(()=>t(c).filter(W=>W.name in e.overrides).length),m=u(()=>t(c).filter(W=>W.tier==="PUBLIC").length),h=u(()=>t(c).filter(W=>W.tier==="PUBLIC-ADVANCED").length),v=u(()=>t(c).filter(W=>W.tier==="INTERNAL").length);var y=qh(),k=s(y),w=s(k),E=r(w,2),B=s(E),U=s(B),P=s(U);{var S=W=>{var ke=el();f(W,ke)};I(P,W=>{t(i)&&W(S)})}var _=r(U),z=r(B,2),L=s(z),R=s(L);{var D=W=>{var ke=el();f(W,ke)};I(R,W=>{t(l)&&W(D)})}var A=r(L),T=r(z,2),N=s(T),$=r(E,2),Ge=s($),te=r(s(Ge),2),ge=s(te),Pe=r(Ge,2),ve=r(s(Pe),2),me=s(ve),je=r(Pe,2);{var $e=W=>{var ke=Mh(),He=r(s(ke),2),st=s(He);C(()=>b(st,`Internal (${t(v)??""})`)),f(W,ke)};I(je,W=>{t(l)&&W($e)})}var tt=r(k,4),M=s(tt);{var J=W=>{var ke=Nh(),He=s(ke);C(()=>b(He,t(i)?"No modified tokens in this domain":"No tokens found")),f(W,ke)},be=u(()=>t(d)().length===0),ye=W=>{var ke=Hh();re(ke,21,()=>t(d)(),He=>He.name,(He,st)=>{var Se=Gh(),Be=s(Se);{var ae=ce=>{var xe=Fh();f(ce,xe)};I(Be,ce=>{t(st).tier==="PUBLIC-ADVANCED"&&ce(ae)})}var q=r(Be,2);{var we=ce=>{var xe=jh();f(ce,xe)};I(q,ce=>{t(st).tier==="INTERNAL"&&ce(we)})}var fe=r(q,2);Ui(fe,{get token(){return t(st)},get overrideValue(){return e.overrides[t(st).name]},onSet:ce=>e.onSet(t(st).name,ce),onReset:()=>e.onReset(t(st).name)}),f(He,Se)}),f(W,ke)};I(M,W=>{t(be)?W(J):W(ye,-1)})}C(W=>{Xt(w,t(n)),Ye(B,1,`flex items-center gap-1 text-[9px] font-bold transition-colors cursor-pointer ${t(i)?"text-indigo-400":"text-slate-600 hover:text-slate-400"}`),Ye(U,1,`w-2.5 h-2.5 rounded border flex items-center justify-center transition-colors ${t(i)?"bg-indigo-600 border-indigo-500":"border-white/20"}`),b(_,` Modified only ${t(p)>0?`(${t(p)})`:""}`),Y(z,"aria-expanded",t(l)),Ye(z,1,`flex items-center gap-1 text-[9px] font-bold transition-colors cursor-pointer ${t(l)?"text-amber-400":"text-slate-600 hover:text-slate-400"}`),Ye(L,1,`w-2.5 h-2.5 rounded border flex items-center justify-center transition-colors ${t(l)?"bg-amber-600 border-amber-500":"border-white/20"}`),b(A,` Internal (${t(v)??""})`),b(N,`${W??""}/${t(c).length??""}`),b(ge,`Public (${t(m)??""})`),b(me,`Advanced (${t(h)??""})`)},[()=>t(d)().length]),x("input",w,W=>{O(n,W.target.value,!0)}),x("click",B,()=>{O(i,!t(i))}),x("click",z,()=>{O(l,!t(l))}),f(a,y),$t()}aa(["input","click"]);var tl=g(''),Kh=g(' '),Wh=g('Waiting for live preview…'),Yh=g(""),Zh=g('Pick an editable brand/status (base) color as the foreground to enable auto-fix.
'),Jh=g('
'),Xh=g(' '),Qh=g('
'),$h=g('Foreground Background Aa Bb Cc Auto-fix to pass ',1),eg=g(' '),tg=g(' '),ag=g('· '),og=g(' '),sg=g('Foreground (rows) × background (cols). Click a cell to load it above.
',1),rg=g('Contrast checker Live WCAG ratios computed from the actual rendered preview colors — including derived steps and your overrides.
');function ng(a,e){Qt(e,!0);const o=[{label:"Text",expr:"var(--sf-color-text)"},{label:"Text secondary",expr:"var(--sf-color-text--secondary)"},{label:"Text muted",expr:"var(--sf-color-text--muted)"},{label:"White",expr:"#ffffff"},{label:"Black",expr:"#000000"}],n=[{label:"Surface",expr:"var(--sf-color-surface)"},{label:"Bg",expr:"var(--sf-color-bg)"},{label:"Border",expr:"var(--sf-color-border)"}],l=[{key:"primary",srcLight:"--sf-color-primary-source-light",defLight:"oklch(0.47 0.27 264)",srcDark:"--sf-color-primary-source-dark",defDark:"oklch(0.715 0.243 264)"},{key:"secondary",srcLight:"--sf-color-secondary-source-light",defLight:"oklch(0.22 0.04 264)",srcDark:"--sf-color-secondary-source-dark",defDark:"oklch(0.84 0.036 264)"},{key:"tertiary",srcLight:"--sf-color-tertiary-source-light",defLight:"oklch(0.42 0.22 295)",srcDark:"--sf-color-tertiary-source-dark",defDark:"oklch(0.74 0.198 295)"},{key:"action",srcLight:"--sf-color-action-source-light",defLight:"oklch(0.50 0.22 235)",srcDark:"--sf-color-action-source-dark",defDark:"oklch(0.70 0.198 235)"},{key:"neutral",srcLight:"--sf-color-neutral-source-light",defLight:"oklch(0.52 0.025 260)",srcDark:"--sf-color-neutral-source-dark",defDark:"oklch(0.69 0.0225 260)"},{key:"success",srcLight:"--sf-color-success-source-light",defLight:"oklch(0.50 0.16 145)",srcDark:"--sf-color-success-source-dark",defDark:"oklch(0.70 0.144 145)"},{key:"warning",srcLight:"--sf-color-warning-source-light",defLight:"oklch(0.75 0.17 80)",srcDark:"--sf-color-warning-source-dark",defDark:"oklch(0.65 0.153 80)"},{key:"danger",srcLight:"--sf-color-danger-source-light",defLight:"oklch(0.48 0.22 12)",srcDark:"--sf-color-danger-source-dark",defDark:"oklch(0.71 0.198 12)"},{key:"info",srcLight:"--sf-color-info-source-light",defLight:"oklch(0.48 0.18 235)",srcDark:"--sf-color-info-source-dark",defDark:"oklch(0.71 0.162 235)"}],i=l.flatMap(J=>[{label:`${J.key} (base)`,expr:`var(--sf-color-${J.key})`,editKey:J.key},{label:`${J.key}-100`,expr:`var(--sf-color-${J.key}-100)`},{label:`${J.key}-600`,expr:`var(--sf-color-${J.key}-600)`},{label:`${J.key}-900`,expr:`var(--sf-color-${J.key}-900)`}]),c=[...o,...n,...i],d=Object.fromEntries(l.map(J=>[J.key,J])),p=[{label:"text",expr:"var(--sf-color-text)"},{label:"white",expr:"#ffffff"},{label:"black",expr:"#000000"},{label:"primary",expr:"var(--sf-color-primary)",editKey:"primary"}],m=[{label:"surface",expr:"var(--sf-color-surface)"},{label:"primary",expr:"var(--sf-color-primary)"},{label:"neutral-100",expr:"var(--sf-color-neutral-100)"},{label:"success",expr:"var(--sf-color-success)"},{label:"warning",expr:"var(--sf-color-warning)"},{label:"danger",expr:"var(--sf-color-danger)"}];let h=G("White"),v=G("primary (base)"),y=G("AA"),k=u(()=>c.find(J=>J.label===t(h))??c[0]),w=u(()=>c.find(J=>J.label===t(v))??c[0]);function E(J,be){Fa.value;const ye=Cs(J),W=Cs(be);return!ye||!W?null:qs(Bo(...ye),Bo(...W))}function B(J){return J>=7?{tag:"AAA",cls:"bg-emerald-500/25 text-emerald-200"}:J>=4.5?{tag:"AA",cls:"bg-emerald-500/15 text-emerald-300"}:J>=3?{tag:"AA-L",cls:"bg-amber-500/20 text-amber-300"}:{tag:"Fail",cls:"bg-rose-500/20 text-rose-300"}}let U=u(()=>E(t(k).expr,t(w).expr));function P(){const J=t(h);O(h,t(v),!0),O(v,J,!0)}function S(J,be){const ye=c.find(ke=>ke.expr===J),W=c.find(ke=>ke.expr===be);ye&&O(h,ye.label,!0),W&&O(v,W.label,!0)}function _(J){return Fa.value,ho(J)||J}let z=G(!1),L=G(!1),R=G(null);function D(){O(R,null);const J=t(k).editKey?d[t(k).editKey]:null;if(!J)return;const be=Nn()==="dark",ye=be?J.srcDark:J.srcLight,W=be?J.defDark:J.defLight,ke=e.overrides[ye]??W,{c:He,h:st,l:Se,valid:Be}=Vs(ke);if(!Be)return;const ae=Cs(t(w).expr);if(!ae)return;const q=Bo(...ae),we=t(y)==="AAA"?7:4.5;let fe=null;for(let Ae=0;Ae<=1.0001;Ae+=.005){const[Ie,Ve,nt]=Fn(Ae,He,st);qs(Bo(Ie,Ve,nt),q)>=we&&(fe===null||Math.abs(Ae-Se){if(!t(z)){O(R,null);return}Fa.value,t(h),t(v),t(y),t(k).editKey&&t(U)!==null&&t(U)<(t(y)==="AAA"?7:4.5)?D():O(R,null)});var T=rg(),N=r(s(T),2),$=s(N),Ge=r(s($),2),te=s(Ge),ge=r($,2);{var Pe=J=>{var be=$h(),ye=de(be),W=s(ye),ke=r(s(W),2);re(ke,21,()=>c,Q=>Q.label,(Q,Oe)=>{var Me=tl(),at=s(Me),ft={};C(()=>{b(at,t(Oe).label),ft!==(ft=t(Oe).label)&&(Me.value=(Me.__value=t(Oe).label)??"")}),f(Q,Me)});var He=r(W,2),st=r(He,2),Se=r(s(st),2);re(Se,21,()=>c,Q=>Q.label,(Q,Oe)=>{var Me=tl(),at=s(Me),ft={};C(()=>{b(at,t(Oe).label),ft!==(ft=t(Oe).label)&&(Me.value=(Me.__value=t(Oe).label)??"")}),f(Q,Me)});var Be=r(ye,2),ae=s(Be),q=s(ae),we=r(ae,2);{var fe=Q=>{const Oe=u(()=>B(t(U)));var Me=Kh(),at=s(Me),ft=s(at),_t=r(at,2),xt=s(_t),Nt=r(_t,4),St=s(Nt),Et=s(St),it=r(St,2),Gt=s(it),ea=r(it,2),ia=s(ea),Je=r(ea,2),ut=s(Je);C(Lt=>{b(ft,`${Lt??""}:1`),Ye(_t,1,`text-[10px] font-bold px-2 py-0.5 rounded ${t(Oe).cls}`),b(xt,t(Oe).tag),Ye(St,1,ro(t(U)>=4.5?"text-emerald-300":"text-rose-300")),b(Et,`${t(U)>=4.5?"✓":"✗"} AA normal`),Ye(it,1,ro(t(U)>=3?"text-emerald-300":"text-rose-300")),b(Gt,`${t(U)>=3?"✓":"✗"} AA large`),Ye(ea,1,ro(t(U)>=7?"text-emerald-300":"text-rose-300")),b(ia,`${t(U)>=7?"✓":"✗"} AAA normal`),Ye(Je,1,ro(t(U)>=4.5?"text-emerald-300":"text-rose-300")),b(ut,`${t(U)>=4.5?"✓":"✗"} AAA large`)},[()=>t(U).toFixed(2)]),f(Q,Me)},ce=Q=>{var Oe=Wh();f(Q,Oe)};I(we,Q=>{t(U)!==null?Q(fe):Q(ce,-1)})}var xe=r(Be,2),ze=s(xe),De=s(ze),Ae=r(s(De)),Ie=s(Ae),Ve=r(De,2);re(Ve,20,()=>["AA","AAA"],Q=>Q,(Q,Oe)=>{var Me=Yh(),at=s(Me);C(()=>{Ye(Me,1,`px-2 py-0.5 rounded-md text-[10px] font-bold cursor-pointer ${t(y)===Oe?"bg-white/12 text-white":"text-slate-500 hover:text-slate-300"}`),b(at,Oe)}),x("click",Me,()=>{O(y,Oe,!0)}),f(Q,Me)});var nt=r(ze,2);{var ct=Q=>{var Oe=Zh();f(Q,Oe)},dt=Q=>{var Oe=Jh(),Me=s(Oe);C(()=>b(Me,`Already passes ${t(y)??""}. 🎉`)),f(Q,Oe)},Ot=Q=>{var Oe=Xh(),Me=s(Oe),at=r(Me,2),ft=s(at),_t=s(ft),xt=r(ft,2),Nt=s(xt),St=r(at,2);C((Et,it)=>{lt(Me,Et),b(_t,t(R).value),b(Nt,`→ ${it??""}:1 (${t(y)??""} ✓)`)},[()=>`background:${_(t(R).value)}`,()=>t(R).ratio.toFixed(2)]),x("click",St,A),f(Q,Oe)},mt=Q=>{var Oe=Qh(),Me=s(Oe);C(()=>b(Me,`No lightness of this hue reaches ${t(y)??""} on this background — try a different background or hue.`)),f(Q,Oe)};I(nt,Q=>{t(k).editKey?t(U)!==null&&t(U)>=(t(y)==="AAA"?7:4.5)?Q(dt,1):t(R)?Q(Ot,2):Q(mt,-1):Q(ct)})}C((Q,Oe,Me)=>{lt(ae,Q),lt(q,Oe),b(Ie,`(for ${Me??""} mode)`)},[()=>`background:${_(t(w).expr)}`,()=>`color:${_(t(k).expr)}`,()=>Nn()]),Cn(ke,()=>t(h),Q=>O(h,Q)),x("click",He,P),Cn(Se,()=>t(v),Q=>O(v,Q)),f(J,be)};I(ge,J=>{t(z)&&J(Pe)})}var ve=r(N,4),me=s(ve),je=r(s(me),2),$e=s(je),tt=r(me,2);{var M=J=>{var be=sg(),ye=r(de(be),2),W=s(ye),ke=s(W),He=s(ke),st=r(s(He));re(st,17,()=>m,Be=>Be.label,(Be,ae)=>{var q=eg(),we=s(q);C(()=>b(we,t(ae).label)),f(Be,q)});var Se=r(ke);re(Se,21,()=>p,Be=>Be.label,(Be,ae)=>{var q=og(),we=s(q),fe=s(we),ce=r(we);re(ce,17,()=>m,xe=>xe.label,(xe,ze)=>{const De=u(()=>E(t(ae).expr,t(ze).expr));var Ae=Bt(),Ie=de(Ae);{var Ve=ct=>{const dt=u(()=>B(t(De)));var Ot=tg(),mt=s(Ot),Q=s(mt);C((Oe,Me)=>{Y(mt,"title",Oe),Ye(mt,1,`w-full px-1.5 py-1 rounded font-mono font-bold cursor-pointer ${t(dt).cls}`),b(Q,Me)},[()=>`${t(ae).label} on ${t(ze).label} — ${t(De).toFixed(2)}:1`,()=>t(De).toFixed(1)]),x("click",mt,()=>S(t(ae).expr,t(ze).expr)),f(ct,Ot)},nt=ct=>{var dt=ag();f(ct,dt)};I(Ie,ct=>{t(De)!==null?ct(Ve):ct(nt,-1)})}f(xe,Ae)}),C(()=>b(fe,t(ae).label)),f(Be,q)}),f(J,be)};I(tt,J=>{t(L)&&J(M)})}C(()=>{Y($,"aria-expanded",t(z)),b(te,t(z)?"▲":"▼"),Y(me,"aria-expanded",t(L)),b($e,t(L)?"▲":"▼")}),x("click",$,()=>{O(z,!t(z))}),x("click",me,()=>{O(L,!t(L))}),f(a,T),$t()}aa(["click"]);var lg=g(''),ig=g(' '),cg=g(' ');function zi(a,e){Qt(e,!0);const o=new Set(["home","themes","wcag","setup","cheatsheet"]);let n=G("controls");ha(()=>{e.domain,O(n,"controls")});let l=u(()=>Pi[e.domain]??[e.domain]),i=u(()=>e.tokens.filter(v=>t(l).some(y=>v.name.includes(y))&&v.name in e.overrides).length);var c=Bt(),d=de(c);{var p=v=>{var y=Bt(),k=de(y);{var w=S=>{mu(S,{get overrides(){return e.overrides},get onSelect(){return e.onSelectDomain},get onApplyTheme(){return e.onApplyTheme},get onResetAll(){return e.onResetAll}})},E=S=>{nh(S,{get overrides(){return e.overrides},get onApplyTheme(){return e.onApplyTheme},get onResetAll(){return e.onResetAll}})},B=S=>{ng(S,{get tokens(){return e.tokens},get overrides(){return e.overrides},get onSet(){return e.onSet},get onBulkChange(){return e.onBulkChange}})},U=S=>{dh(S,{get overrides(){return e.overrides}})},P=S=>{_h(S,{})};I(k,S=>{e.domain==="home"?S(w):e.domain==="themes"?S(E,1):e.domain==="wcag"?S(B,2):e.domain==="setup"?S(U,3):e.domain==="cheatsheet"&&S(P,4)})}f(v,y)},m=u(()=>o.has(e.domain)),h=v=>{var y=cg(),k=s(y),w=s(k);{var E=D=>{var A=lg(),T=s(A);{var N=M=>{hp(M,{get tokens(){return e.tokens},get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange},get onSelectDomain(){return e.onSelectDomain}})},$=M=>{Zp(M,{get tokens(){return e.tokens},get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},Ge=M=>{om(M,{get tokens(){return e.tokens},get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},te=M=>{ym(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},ge=M=>{Mm(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},Pe=M=>{Km(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},ve=M=>{dv(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},me=M=>{xv(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset}})},je=M=>{Bv(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset}})},$e=M=>{Xv(M,{get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset},get onBulkChange(){return e.onBulkChange}})},tt=M=>{Dh(M,{get domain(){return e.domain},get tokens(){return e.tokens},get overrides(){return e.overrides},get onSet(){return e.onSet},get onReset(){return e.onReset}})};I(T,M=>{e.domain==="colors"?M(N):e.domain==="typography"?M($,1):e.domain==="spacing"?M(Ge,2):e.domain==="layout"?M(te,3):e.domain==="borders"?M(ge,4):e.domain==="shadows"?M(Pe,5):e.domain==="motion"?M(ve,6):e.domain==="effects"?M(me,7):e.domain==="macros"?M(je,8):e.domain==="misc"?M($e,9):M(tt,-1)})}f(D,A)},B=D=>{Vh(D,{get tokens(){return e.tokens},get overrides(){return e.overrides},get patterns(){return t(l)},get onSet(){return e.onSet},get onReset(){return e.onReset}})};I(w,D=>{t(n)==="controls"?D(E):D(B,-1)})}var U=r(k,2),P=s(U),S=s(P);Vd(S,{class:"w-3 h-3"});var _=r(P,4),z=s(_);Dd(z,{class:"w-3 h-3"});var L=r(z,2);{var R=D=>{var A=ig(),T=s(A);C(()=>b(T,t(i))),f(D,A)};I(L,D=>{t(i)>0&&D(R)})}C(()=>{Ye(P,1,`flex-1 flex items-center justify-center gap-1.5 py-2 text-[10px] font-bold transition-all cursor-pointer ${t(n)==="controls"?"text-indigo-300 bg-indigo-600/10 border-t-2 border-t-indigo-500 -mt-px":"text-slate-500 hover:text-slate-300"}`),Ye(_,1,`flex-1 flex items-center justify-center gap-1.5 py-2 text-[10px] font-bold transition-all cursor-pointer ${t(n)==="tokens"?"text-indigo-300 bg-indigo-600/10 border-t-2 border-t-indigo-500 -mt-px":"text-slate-500 hover:text-slate-300"}`)}),x("click",P,()=>{O(n,"controls")}),x("click",_,()=>{O(n,"tokens")}),f(v,y)};I(d,v=>{t(m)?v(p):v(h,-1)})}f(a,c),$t()}aa(["click"]);const Ai="slashed-studio/overrides/v2",dg=new Set(["--sf-text-base-min","--sf-text-base-max","--sf-text-ratio-min","--sf-text-ratio-max","--sf-text-scale","--sf-text-display-base-min","--sf-text-display-base-max","--sf-text-display-scale","--sf-fluid-min-vw","--sf-fluid-max-vw"]),fg=new Set(["--sf-space-base-min","--sf-space-base-max","--sf-space-ratio-min","--sf-space-ratio-max","--sf-space-scale","--sf-fluid-min-vw","--sf-fluid-max-vw"]),ug=[["2xs",-3],["xs",-2],["s",-1],["m",0],["l",1],["xl",2],["2xl",3],["3xl",4],["4xl",5]],pg=[["display-s",0],["display-m",1],["display-l",2]],mg=[["2xs",-3],["xs",-2],["s",-1],["m",0],["l",1],["xl",2],["2xl",3],["3xl",4],["4xl",5]];function Ca(a,e,o){const n=a[e];if(n===void 0)return o;const l=parseFloat(n);return isNaN(l)?o:l}function Go(a){const o=a.toFixed(6).replace(/\.?0+$/,"");return o===""||o==="-"?"0":o}function Or(a,e,o,n,l,i,c,d){const p=a*Math.pow(o,c)*d,m=e*Math.pow(n,c)*d;if(i<=l||Math.abs(p-m)<1e-9)return`${Go(p)}rem`;const h=(m-p)/(i-l);return`clamp(${Go(p)}rem, calc(${Go(h)} * (100vw - ${Go(l)}rem) + ${Go(p)}rem), ${Go(m)}rem)`}function vg(a){const e={},o=Object.keys(a),n=o.some(d=>dg.has(d)),l=o.some(d=>fg.has(d));if(!n&&!l)return e;const i=Ca(a,"--sf-fluid-min-vw",22.5),c=Ca(a,"--sf-fluid-max-vw",90);if(n){const d=Ca(a,"--sf-text-base-min",1),p=Ca(a,"--sf-text-base-max",1.25),m=Ca(a,"--sf-text-ratio-min",1.25),h=Ca(a,"--sf-text-ratio-max",1.333),v=Ca(a,"--sf-text-scale",1);for(const[E,B]of ug)e[`--sf-text-${E}`]=Or(d,p,m,h,i,c,B,v);const y=Ca(a,"--sf-text-display-base-min",2.4),k=Ca(a,"--sf-text-display-base-max",3),w=Ca(a,"--sf-text-display-scale",1);for(const[E,B]of pg)e[`--sf-text-${E}`]=Or(y,k,m,h,i,c,B,w)}if(l){const d=Ca(a,"--sf-space-base-min",1),p=Ca(a,"--sf-space-base-max",2),m=Ca(a,"--sf-space-ratio-min",1.25),h=Ca(a,"--sf-space-ratio-max",1.333),v=Ca(a,"--sf-space-scale",1);for(const[y,k]of mg)e[`--sf-space-${y}`]=Or(d,p,m,h,i,c,k,v)}return e}function Ei(){return typeof window>"u"?null:window.slashedApp??null}function Ri(){if(typeof window>"u")return{};const a=Ei();if(a)return a.overrides&&typeof a.overrides=="object"&&!Array.isArray(a.overrides)?{...a.overrides}:{};const e=window.location.hash;if(e?.includes("c="))try{return Df(e)}catch{}const o=localStorage.getItem(Ai);if(o)try{return JSON.parse(o)}catch{}return{}}function Ti(a){if(typeof document>"u")return;let e=document.getElementById("sf-parent-overrides");e||(e=document.createElement("style"),e.id="sf-parent-overrides",document.head.appendChild(e));const o=vg(a),n=Object.keys(o).length>0?{...o,...a}:a;e.textContent=To(n,{mode:"root",banner:!1})}async function hg(a,e){const o=(a.url??"").replace(/\/$/,""),n=new URL(o+"/tokens/overrides",window.location.href);if(n.origin!==window.location.origin)throw new Error("slashed: REST URL must be same-origin");const l=n.href,i=await fetch(l,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","X-WP-Nonce":a.nonce??""},body:JSON.stringify({overrides:e})});if(!i.ok)throw new Error(`slashed: save failed ${i.status} ${i.statusText}`)}function gg(a){try{localStorage.setItem(Ai,JSON.stringify(a))}catch{}const e=Si(a),o=e?`c=${e}`:"";window.location.hash.replace("#","")!==o&&(window.location.hash=o)}async function Di(a){if(typeof window>"u")return;const e=Ei();if(e?.rest?.url){await hg(e.rest,{...a});return}gg(a)}var bg=g(' '),yg=g('Type to search tokens by name or description'),xg=g('overridden'),kg=g(' '),wg=g(''),_g=g('↑↓ navigate ↵ open panel Esc close'),Cg=g(' Esc ');function Mi(a,e){Qt(e,!0);let o=G(""),n=G(0),l=G(null);const i={colors:"Colors",typography:"Typography",spacing:"Spacing",layout:"Layout",borders:"Borders",shadows:"Shadows",motion:"Motion",effects:"Effects",macros:"Macros",misc:"Misc"};let c=u(()=>(()=>{const L=t(o).trim().toLowerCase();if(!L)return[];const R=[];for(const D of e.tokens){if(D.tier==="INTERNAL")continue;const A=D.name.toLowerCase().includes(L),T=D.description?.toLowerCase().includes(L)??!1;if((A||T)&&(R.push({token:D,domain:cn(D.name),overridden:D.name in e.overrides}),R.length>=40))break}return R})());ha(()=>{t(o),O(n,0)}),ha(()=>{t(l)&&t(l).focus()});function d(L){e.onNavigate(L),e.onClose()}function p(L){if(L.key==="Escape"){L.preventDefault(),e.onClose();return}if(t(c).length===0&&(L.key==="ArrowDown"||L.key==="ArrowUp")){L.preventDefault(),O(n,0);return}if(L.key==="ArrowDown"){L.preventDefault(),O(n,Math.min(t(n)+1,t(c).length-1),!0);return}if(L.key==="ArrowUp"){L.preventDefault(),O(n,Math.max(t(n)-1,0),!0);return}L.key==="Enter"&&t(c)[t(n)]&&(L.preventDefault(),d(t(c)[t(n)].domain))}var m=Cg(),h=s(m),v=s(h),y=r(s(v),2);Yo(y,L=>O(l,L),()=>t(l));var k=r(v,2),w=s(k);{var E=L=>{var R=bg(),D=s(R);C(()=>b(D,`No tokens matching "${t(o)??""}"`)),f(L,R)},B=u(()=>t(o).trim()&&t(c).length===0),U=L=>{var R=yg();f(L,R)},P=u(()=>!t(o).trim()),S=L=>{var R=Bt(),D=de(R);re(D,19,()=>t(c),A=>A.token.name,(A,T,N)=>{var $=wg(),Ge=s($),te=s(Ge),ge=s(te),Pe=s(ge),ve=r(ge,2);{var me=W=>{var ke=xg();f(W,ke)};I(ve,W=>{t(T).overridden&&W(me)})}var je=r(te,2);{var $e=W=>{var ke=kg(),He=s(ke);C(()=>b(He,t(T).token.description)),f(W,ke)};I(je,W=>{t(T).token.description&&W($e)})}var tt=r(Ge,2),M=s(tt),J=s(M),be=r(M,2),ye=s(be);C(()=>{Ye($,1,`w-full flex items-center gap-3 px-4 py-2.5 text-left transition-colors cursor-pointer ${t(n)===t(N)?"bg-indigo-500/15":"hover:bg-white/4"}`),b(Pe,t(T).token.name),b(J,t(T).overridden?e.overrides[t(T).token.name]:t(T).token.value),b(ye,i[t(T).domain]??t(T).domain)}),lo("mouseenter",$,()=>{O(n,t(N),!0)}),x("click",$,()=>d(t(T).domain)),f(A,$)}),f(L,R)};I(w,L=>{t(B)?L(E):t(P)?L(U,1):L(S,-1)})}var _=r(k,2);{var z=L=>{var R=_g();f(L,R)};I(_,L=>{t(c).length>0&&L(z)})}x("mousedown",m,L=>{L.target===L.currentTarget&&e.onClose()}),x("keydown",y,p),ai(y,()=>t(o),L=>O(o,L)),f(a,m),$t()}aa(["mousedown","keydown","click"]);var Og=g(' ');function Sg(a,e){Qt(e,!0);const o=Bs.tokens??Bs,n={home:"Home",colors:"Colors",typography:"Typography",spacing:"Spacing",layout:"Layout",borders:"Borders",shadows:"Shadows",motion:"Motion",effects:"Effects",macros:"Macros",misc:"Misc",themes:"Themes",wcag:"WCAG",setup:"Install",cheatsheet:"Classes"};function l(ae){const q={};for(const we of Object.keys(ae)){const fe=cn(we);q[fe]=(q[fe]??0)+1}return q}let i=G(da(Ri())),c=G(da([])),d=G(da([])),p=G("home"),m=G(!1),h=G("light"),v=G("fluid"),y=G("normal"),k=G("marketing"),w=u(()=>Object.keys(t(i)).length),E=u(()=>l(t(i))),B=u(()=>t(c).length>0),U=u(()=>t(d).length>0),P=G(da(JSON.stringify(t(i)))),S=G("idle"),_=u(()=>JSON.stringify(t(i))!==t(P)),z=null;ha(()=>{Ti(t(i))});function L(ae){const q=t(i),we=typeof ae=="function"?ae(q):ae;JSON.stringify(q)!==JSON.stringify(we)&&(O(c,[...t(c).slice(-49),q],!0),O(d,[],!0),t(S)==="saved"&&O(S,"idle")),O(i,we,!0)}async function R(){if(!t(_)||t(S)==="saving")return;const ae=JSON.stringify(t(i));O(S,"saving");try{await Di(t(i)),JSON.stringify(t(i))===ae?(O(P,ae,!0),O(S,"saved"),z&&clearTimeout(z),z=setTimeout(()=>{t(S)==="saved"&&O(S,"idle"),z=null},2e3)):O(S,"idle")}catch(q){console.warn("slashed: save failed",q),O(S,"idle")}}function D(ae,q){L(we=>({...we,[ae]:q}))}function A(ae){L(q=>{const we={...q};return delete we[ae],we})}function T(ae){L(q=>{const we={...q};for(const[fe,ce]of Object.entries(ae))ce===null?delete we[fe]:we[fe]=ce;return we})}function N(ae){ae.id==="default"?L({}):T(ae.overrides)}function $(){L({})}function Ge(){if(t(c).length===0)return;const ae=t(c)[t(c).length-1],q=t(i);O(c,t(c).slice(0,-1),!0),O(d,[q,...t(d)],!0),O(i,ae,!0)}function te(){if(t(d).length===0)return;const ae=t(d)[0],q=t(i);O(d,t(d).slice(1),!0),O(c,[...t(c),q],!0),O(i,ae,!0)}function ge(){const ae=document.createElement("input");ae.type="file",ae.accept=".css,.json",ae.onchange=q=>{const we=q.target.files?.[0];if(!we)return;const fe=new FileReader;fe.onload=ce=>{const xe=ce.target?.result;if(xe)if(we.name.endsWith(".json"))try{const ze=JSON.parse(xe);if(ze!==null&&typeof ze=="object"&&!Array.isArray(ze)){const De=Object.fromEntries(Object.entries(ze).filter(([,Ae])=>typeof Ae=="string"));L(De)}}catch{}else{const ze={},De=/(--sf-[\w-]+)\s*:\s*([^;]+);/g;let Ae;for(;(Ae=De.exec(xe))!==null;)ze[Ae[1].trim()]=Ae[2].trim();Object.keys(ze).length>0&&L(Ie=>({...Ie,...ze}))}},fe.readAsText(we)},ae.click()}function Pe(){const ae=To(t(i),{mode:"layer",banner:!0}),q=new Blob([ae],{type:"text/css"}),we=URL.createObjectURL(q),fe=document.createElement("a");fe.href=we,fe.download="slashed-overrides.css",fe.click(),URL.revokeObjectURL(we)}oi(()=>{const ae=q=>{(q.ctrlKey||q.metaKey)&&!q.shiftKey&&q.key==="z"&&(q.preventDefault(),Ge()),(q.ctrlKey||q.metaKey)&&(q.shiftKey&&q.key==="z"||q.key==="y")&&(q.preventDefault(),te()),(q.ctrlKey||q.metaKey)&&!q.shiftKey&&q.key.toLowerCase()==="s"&&(q.preventDefault(),R()),(q.ctrlKey||q.metaKey)&&!q.repeat&&q.key.toLowerCase()==="k"&&(q.preventDefault(),O(m,!t(m)))};return window.addEventListener("keydown",ae),()=>{window.removeEventListener("keydown",ae),z&&clearTimeout(z)}});var ve=Og(),me=s(ve);ef(me,{get overridesCount(){return t(w)},get canUndo(){return t(B)},get canRedo(){return t(U)},get hasPendingChanges(){return t(_)},get saveState(){return t(S)},onUndo:Ge,onRedo:te,onResetAll:$,onImport:ge,onExport:Pe,onSave:R});var je=r(me,2),$e=s(je);gi($e,{get activeId(){return t(p)},onSelect:ae=>{O(p,ae,!0)},get overridesByDomain(){return t(E)}});var tt=r($e,2),M=s(tt),J=s(M),be=s(J),ye=r(M,2),W=s(ye);zi(W,{get domain(){return t(p)},get tokens(){return o},get overrides(){return t(i)},onSet:D,onReset:A,onBulkChange:T,onApplyTheme:N,onSelectDomain:ae=>{O(p,ae,!0)},onResetAll:$});var ke=r(tt,2),He=s(ke);Jf(He,{get overrides(){return t(i)},get previewTheme(){return t(h)},get previewWidth(){return t(v)},get previewMotion(){return t(y)},get previewTemplate(){return t(k)},onThemeChange:ae=>{O(h,ae,!0)},onWidthChange:ae=>{O(v,ae,!0)},onMotionChange:ae=>{O(y,ae,!0)},onTemplateChange:ae=>{O(k,ae,!0)}});var st=r(je,2);{let ae=u(()=>n[t(p)]??t(p));sf(st,{get overridesCount(){return t(w)},get domain(){return t(ae)}})}var Se=r(st,2);{var Be=ae=>{Mi(ae,{get tokens(){return o},get overrides(){return t(i)},onNavigate:q=>{O(p,q,!0)},onClose:()=>{O(m,!1)}})};I(Se,ae=>{t(m)&&ae(Be)})}C(()=>b(be,n[t(p)]??t(p))),f(a,ve),$t()}const Sr=document.getElementById("app")??document.getElementById("slashed-admin-app");Sr&&(Sr.innerHTML="",Xl(Sg,{target:Sr}));var Lg=g(''),Pg=g(' '),Ig=g('Reset all overrides?
'),Bg=g(' / SLASHED ',1);function Ug(a,e){Qt(e,!0);const o=Bs.tokens??Bs,n="slashed-overlay/open",l="slashed-overlay/domain",i={home:"Home",colors:"Colors",typography:"Typography",spacing:"Spacing",layout:"Layout",borders:"Borders",shadows:"Shadows",motion:"Motion",effects:"Effects",macros:"Macros",misc:"Misc",themes:"Themes",wcag:"WCAG",setup:"Install",cheatsheet:"Classes"};function c(pe){const Ze={};for(const vt of Object.keys(pe)){const Ut=cn(vt);Ze[Ut]=(Ze[Ut]??0)+1}return Ze}function d(pe,Ze){try{const vt=localStorage.getItem(pe);return vt===null?Ze:vt!=="false"}catch{return Ze}}function p(pe,Ze){try{return localStorage.getItem(pe)??Ze}catch{return Ze}}let m=G(da(d(n,!0))),h=G(da(typeof window<"u"?window.matchMedia("(max-width: 768px)").matches:!1)),v=G(da(Ri())),y=G(da([])),k=G(da([])),w=G(da(p(l,"home"))),E=G(!1),B=G(!1),U=G(null),P=G(null);ha(()=>{t(B)&&Vl().then(()=>t(U)?.focus())});let S=u(()=>Object.keys(t(v)).length),_=u(()=>c(t(v))),z=u(()=>t(y).length>0),L=u(()=>t(k).length>0);function R(pe,Ze){const vt=Object.keys(pe);return vt.length!==Object.keys(Ze).length?!1:vt.every(Ut=>pe[Ut]===Ze[Ut])}let D=G(da({...t(v)})),A=G("idle"),T=u(()=>!R(t(v),t(D))),N=null;function $(){const pe=document.getElementById("slashed-frontend-overlay");if(!pe)return;const Ze="var(--wp-admin--admin-bar--height, 32px)";pe.style.position="fixed",pe.style.right="0",pe.style.zIndex="100000",pe.style.pointerEvents="auto",t(m)?(pe.style.top=Ze,pe.style.width=t(h)?"100vw":"420px",pe.style.height=`calc(100vh - ${Ze})`):(pe.style.top=`calc(${Ze} + 16px)`,pe.style.width="40px",pe.style.height="64px")}ha(()=>{Ti(t(v))}),ha(()=>{!t(h)&&t(m)?document.documentElement.classList.add("sf-panel-active"):document.documentElement.classList.remove("sf-panel-active")}),ha(()=>{$()}),ha(()=>{try{localStorage.setItem(n,String(t(m)))}catch{}}),ha(()=>{try{localStorage.setItem(l,t(w))}catch{}});function Ge(){O(m,!t(m))}function te(pe){const Ze=t(v),vt=typeof pe=="function"?pe(Ze):pe;R(Ze,vt)||(O(y,[...t(y).slice(-49),Ze],!0),O(k,[],!0),t(A)==="saved"&&O(A,"idle")),O(v,vt,!0)}async function ge(){if(!t(T)||t(A)==="saving")return;const pe={...t(v)};O(A,"saving");try{await Di(t(v)),R(t(v),pe)?(O(D,pe,!0),O(A,"saved"),N&&clearTimeout(N),N=setTimeout(()=>{t(A)==="saved"&&O(A,"idle"),N=null},2e3)):O(A,"idle")}catch(Ze){console.warn("slashed: save failed",Ze),O(A,"idle")}}function Pe(pe,Ze){te(vt=>({...vt,[pe]:Ze}))}function ve(pe){te(Ze=>{const vt={...Ze};return delete vt[pe],vt})}function me(pe){te(Ze=>{const vt={...Ze};for(const[Ut,Ue]of Object.entries(pe))Ue===null?delete vt[Ut]:vt[Ut]=Ue;return vt})}function je(pe){pe.id==="default"?te({}):me(pe.overrides)}function $e(){O(B,!0)}function tt(){O(B,!1),te({})}function M(){O(B,!1)}function J(){if(!t(y).length)return;const pe=t(y)[t(y).length-1];O(k,[t(v),...t(k)],!0),O(y,t(y).slice(0,-1),!0),O(v,pe,!0)}function be(){if(!t(k).length)return;const pe=t(k)[0];O(y,[...t(y),t(v)],!0),O(k,t(k).slice(1),!0),O(v,pe,!0)}function ye(){const pe=To(t(v),{mode:"layer",banner:!0}),Ze=new Blob([pe],{type:"text/css"}),vt=URL.createObjectURL(Ze),Ut=document.createElement("a");Ut.href=vt,Ut.download="slashed-overrides.css",Ut.click(),URL.revokeObjectURL(vt)}function W(){const pe=document.createElement("input");pe.type="file",pe.accept=".css,.json",pe.onchange=Ze=>{const vt=Ze.target.files?.[0];if(!vt)return;const Ut=new FileReader;Ut.onload=Ue=>{const Ee=Ue.target?.result;if(Ee)if(vt.name.endsWith(".json"))try{const qe=JSON.parse(Ee);if(qe!==null&&typeof qe=="object"&&!Array.isArray(qe)){const et=Object.fromEntries(Object.entries(qe).filter(([,Ct])=>typeof Ct=="string"));te(et)}}catch{}else{const qe={},et=/(--sf-[\w-]+)\s*:\s*([^;]+);/g;let Ct;for(;(Ct=et.exec(Ee))!==null;)qe[Ct[1].trim()]=Ct[2].trim();Object.keys(qe).length&&te(ta=>({...ta,...qe}))}},Ut.readAsText(vt)},pe.click()}oi(()=>{const pe=document.createElement("style");pe.id="sf-panel-push",pe.textContent=["html { transition: padding-right 200ms ease-in-out; }","html.sf-panel-active { padding-right: 420px !important; overflow-x: clip; }"].join(`
+`),document.head.appendChild(pe);const Ze=window.matchMedia("(max-width: 768px)"),vt=Ee=>{O(h,Ee.matches,!0)};Ze.addEventListener("change",vt);const Ut=Ee=>{const qe=Ee.key.toLowerCase();t(m)&&((Ee.ctrlKey||Ee.metaKey)&&!Ee.shiftKey&&qe==="z"&&(Ee.preventDefault(),J()),(Ee.ctrlKey||Ee.metaKey)&&(Ee.shiftKey&&qe==="z"||qe==="y")&&(Ee.preventDefault(),be()),(Ee.ctrlKey||Ee.metaKey)&&!Ee.repeat&&qe==="k"&&(Ee.preventDefault(),O(E,!t(E))),(Ee.ctrlKey||Ee.metaKey)&&!Ee.shiftKey&&qe==="s"&&(Ee.preventDefault(),ge()))},Ue=()=>Ge();return window.addEventListener("keydown",Ut),document.addEventListener("slashed:toggle-overlay",Ue),()=>{pe.remove(),document.documentElement.classList.remove("sf-panel-active"),Ze.removeEventListener("change",vt),window.removeEventListener("keydown",Ut),document.removeEventListener("slashed:toggle-overlay",Ue),N&&clearTimeout(N)}});var ke=Bg(),He=de(ke);{var st=pe=>{var Ze=Lg(),vt=r(s(Ze),2);Pn(vt,{class:"w-3 h-3 opacity-70 rotate-180"}),x("click",Ze,Ge),f(pe,Ze)};I(He,pe=>{t(m)||pe(st)})}var Se=r(He,2);let Be,ae;var q=s(Se),we=r(s(q),4),fe=s(we),ce=r(we,2);{var xe=pe=>{var Ze=Pg(),vt=s(Ze);C(()=>b(vt,t(S))),f(pe,Ze)};I(ce,pe=>{t(S)>0&&pe(xe)})}var ze=r(ce,4),De=s(ze);{var Ae=pe=>{ni(pe,{class:"w-3 h-3 animate-spin"})},Ie=pe=>{Mo(pe,{class:"w-3 h-3"})},Ve=pe=>{di(pe,{class:"w-3 h-3"})};I(De,pe=>{t(A)==="saving"?pe(Ae):t(A)==="saved"?pe(Ie,1):pe(Ve,-1)})}var nt=r(ze,2),ct=s(nt);vi(ct,{class:"w-3 h-3"});var dt=r(nt,2),Ot=s(dt);ii(Ot,{class:"w-3 h-3"});var mt=r(dt,4),Q=s(mt);si(Q,{class:"w-3 h-3"});var Oe=r(mt,2),Me=s(Oe);jr(Me,{class:"w-3 h-3"});var at=r(Oe,2),ft=s(at);pi(ft,{class:"w-3 h-3"});var _t=r(at,4),xt=s(_t);Pn(xt,{class:"w-3 h-3"});var Nt=r(q,2),St=s(Nt);gi(St,{get activeId(){return t(w)},onSelect:pe=>{O(w,pe,!0)},get overridesByDomain(){return t(_)}});var Et=r(St,2),it=s(Et),Gt=s(it),ea=s(Gt),ia=r(it,2),Je=s(ia);zi(Je,{get domain(){return t(w)},get tokens(){return o},get overrides(){return t(v)},onSet:Pe,onReset:ve,onBulkChange:me,onApplyTheme:je,onSelectDomain:pe=>{O(w,pe,!0)},onResetAll:$e});var ut=r(Nt,2);{var Lt=pe=>{Mi(pe,{get tokens(){return o},get overrides(){return t(v)},onNavigate:Ze=>{O(w,Ze,!0)},onClose:()=>{O(E,!1)}})};I(ut,pe=>{t(E)&&pe(Lt)})}var Dt=r(ut,2);{var Rt=pe=>{var Ze=Ig(),vt=s(Ze),Ut=r(s(vt),2),Ue=s(Ut),Ee=r(Ut,2),qe=s(Ee);Yo(qe,Ct=>O(U,Ct),()=>t(U));var et=r(qe,2);Yo(et,Ct=>O(P,Ct),()=>t(P)),C(()=>b(Ue,`This will clear all ${t(S)??""} customisation${t(S)!==1?"s":""}.
+ You can still undo this before saving.`)),x("keydown",Ze,Ct=>{Ct.key==="Escape"&&(Ct.stopPropagation(),M()),Ct.key==="Tab"&&(Ct.preventDefault(),document.activeElement===t(U)?t(P)?.focus():t(U)?.focus())}),x("click",qe,M),x("click",et,tt),f(pe,Ze)};I(Dt,pe=>{t(B)&&pe(Rt)})}C(pe=>{Be=Ye(Se,1,"fixed right-0 z-[100000] pointer-events-auto flex flex-col bg-[#0a0a0f] text-slate-200 font-sans shadow-2xl shadow-black/60 border-l border-white/8 transition-transform duration-200 ease-in-out",null,Be,{"translate-x-full":!t(m),"translate-x-0":t(m),"pointer-events-none":!t(m)}),ae=lt(Se,`top: var(--wp-admin--admin-bar--height, 32px); width: ${t(h)?"100vw":"420px"}; height: calc(100vh - var(--wp-admin--admin-bar--height, 32px));`,ae,{visibility:t(m)?void 0:"hidden"}),Y(Se,"aria-hidden",!t(m)),Se.inert=!t(m)||void 0,b(fe,i[t(w)]??t(w)),ze.disabled=!t(T)||t(A)==="saving",Y(ze,"title",t(T)?"Save changes (Ctrl+S)":"No unsaved changes"),Y(ze,"aria-label",t(A)==="saving"?"Saving changes":t(T)?"Save changes":"No unsaved changes"),Ye(ze,1,pe),nt.disabled=!t(z),dt.disabled=!t(L),Oe.disabled=t(S)===0,at.disabled=t(S)===0,b(ea,i[t(w)]??t(w))},[()=>ro(["p-1 rounded transition-colors cursor-pointer shrink-0 disabled:pointer-events-none",t(A)==="saved"?"text-emerald-300":t(T)?"text-emerald-400 hover:text-emerald-300 hover:bg-emerald-500/10":"text-slate-500 opacity-40"].join(" "))]),x("click",ze,ge),x("click",nt,J),x("click",dt,be),x("click",mt,W),x("click",Oe,ye),x("click",at,$e),x("click",_t,Ge),f(a,ke),$t()}aa(["click","keydown"]);function al(){const a=document.getElementById("slashed-frontend-overlay");if(!a||a.shadowRoot)return;const e=a.attachShadow({mode:"open"}),o=document.createElement("div");e.appendChild(o);let n=!1;const l=()=>{n||(Xl(Ug,{target:o}),n=!0,a.setAttribute("data-slashed-ready",""))},i=window.slashedApp?.cssUrl;if(i){const c=document.createElement("link");c.rel="stylesheet",c.href=i;const d=setTimeout(l,5e3),p=()=>{clearTimeout(d),l()};c.addEventListener("load",p),c.addEventListener("error",p),e.appendChild(c)}else l()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",al):al();
//# sourceMappingURL=app.js.map