*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: var(--wk-focus-ring-offset);
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(147 197 253 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: var(--wk-focus-ring-offset);
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(147 197 253 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box;
  /* 1 */
  border-width: 0;
  /* 2 */
  border-style: solid;
  /* 2 */
  border-color: #e5e7eb;
  /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -moz-tab-size: 4;
  /* 3 */
  -o-tab-size: 4;
     tab-size: 4;
  /* 3 */
  font-family: var(--wk-font-family-sans);
  /* 4 */
  font-feature-settings: normal;
  /* 5 */
  font-variation-settings: normal;
  /* 6 */
  -webkit-tap-highlight-color: transparent;
  /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0;
  /* 1 */
  line-height: inherit;
  /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0;
  /* 1 */
  color: inherit;
  /* 2 */
  border-top-width: 1px;
  /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: var(--wk-font-family-mono);
  /* 1 */
  font-feature-settings: normal;
  /* 2 */
  font-variation-settings: normal;
  /* 3 */
  font-size: 1em;
  /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0;
  /* 1 */
  border-color: inherit;
  /* 2 */
  border-collapse: collapse;
  /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-feature-settings: inherit;
  /* 1 */
  font-variation-settings: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  font-weight: inherit;
  /* 1 */
  line-height: inherit;
  /* 1 */
  letter-spacing: inherit;
  /* 1 */
  color: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
  padding: 0;
  /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button;
  /* 1 */
  background-color: transparent;
  /* 2 */
  background-image: none;
  /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  /* 1 */
  vertical-align: middle;
  /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

/**
 * werserk design tokens — DO NOT EDIT.
 * Generated from tokens/src/*.json. Edit those, then `npm run build`.
 */

:root {
  /* background */
  --wk-background: #171717;
  /* layer */
  --wk-layer-01: #1e1e1e;
  --wk-layer-02: #262626;
  --wk-layer-inverse: #0f0f0f;
  /* border */
  --wk-border-subtle: rgba(255, 255, 255, 0.2);
  --wk-border-strong: rgba(255, 255, 255, 0.2);
  --wk-border-width: 1px;
  /* text */
  --wk-text-primary: #fafafa;
  --wk-text-secondary: #e5e5e5;
  --wk-text-muted: rgba(229, 229, 229, 0.65);
  --wk-text-faint: rgba(229, 229, 229, 0.42);
  /* action */
  --wk-action-primary: #ff7518;
  --wk-action-hover: #e56612;
  --wk-action-soft: #ffa366;
  --wk-action-surface: rgba(255, 117, 24, 0.14);
  --wk-action-border: rgba(255, 117, 24, 0.32);
  /* state */
  --wk-state-hover: rgba(255, 255, 255, 0.035);
  --wk-state-selected: rgba(255, 255, 255, 0.055);
  --wk-state-pressed: rgba(255, 255, 255, 0.075);
  /* focus */
  --wk-focus: rgba(250, 250, 250, 0.72);
  /* focus-accent */
  --wk-focus-accent: rgba(255, 117, 24, 0.55);
  /* intent-marker */
  --wk-intent-marker: var(--wk-action-primary);
  /* feedback */
  --wk-feedback-danger-base: #ff6b6b;
  --wk-feedback-danger-surface: rgba(255, 107, 107, 0.14);
  --wk-feedback-danger-border: rgba(255, 107, 107, 0.32);
  --wk-feedback-warning-base: #f2c14e;
  --wk-feedback-warning-surface: rgba(242, 193, 78, 0.14);
  --wk-feedback-warning-border: rgba(242, 193, 78, 0.32);
  --wk-feedback-success-base: #5ec894;
  --wk-feedback-success-surface: rgba(94, 200, 148, 0.14);
  --wk-feedback-success-border: rgba(94, 200, 148, 0.32);
  /* dataviz */
  --wk-dataviz-series: var(--wk-action-primary);
  --wk-dataviz-series-soft: var(--wk-action-soft);
  --wk-dataviz-track: rgba(255, 255, 255, 0.08);
  --wk-dataviz-grid: rgba(255, 255, 255, 0.04);
  /* shadow */
  --wk-shadow-raised: 0 2px 8px rgba(0, 0, 0, 0.35);
  --wk-shadow-overlay: 0 12px 32px rgba(0, 0, 0, 0.55);
  /* transition */
  --wk-transition-fast: 120ms;
  --wk-transition-base: 200ms;
  --wk-transition-slow: 320ms;
  /* easing */
  --wk-easing-standard: cubic-bezier(0.22, 1, 0.36, 1);
  --wk-easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
  --wk-easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
  /* icon */
  --wk-icon-sm: 1rem;
  --wk-icon-md: 1.25rem;
  --wk-icon-lg: 1.5rem;
  /* focus-ring */
  --wk-focus-ring-width: 2px;
  --wk-focus-ring-offset: 2px;
  /* marker */
  --wk-marker: 2px;
  /* grid */
  --wk-grid-cell: 4rem;
  --wk-grid-major-cell: 16rem;
  --wk-grid-minor: rgba(255, 255, 255, 0.024);
  --wk-grid-major: rgba(255, 255, 255, 0.052);
  /* cell */
  --wk-cell: var(--wk-grid-cell);
  /* cell-half */
  --wk-cell-half: calc(var(--wk-cell) / 2);
  /* cell-quarter */
  --wk-cell-quarter: calc(var(--wk-cell) / 4);
  /* cell-eighth */
  --wk-cell-eighth: calc(var(--wk-cell) / 8);
  /* touch-target */
  --wk-touch-target: 2.75rem;
  /* instrument */
  --wk-instrument-faint: rgba(255, 255, 255, 0.1);
  --wk-instrument-neutral: rgba(255, 255, 255, 0.18);
  --wk-instrument-strong: rgba(255, 255, 255, 0.28);
  --wk-instrument-active: var(--wk-instrument-strong);
  --wk-instrument-active-soft: rgba(255, 255, 255, 0.12);
  --wk-instrument-intent: rgba(255, 117, 24, 0.42);
  /* motion */
  --wk-motion-duration-scan: 9600ms;
  --wk-motion-duration-signal: 2200ms;
  --wk-motion-duration-pulse: 1800ms;
  --wk-motion-duration-caret: 720ms;
  --wk-motion-duration-row: 520ms;
  /* radius */
  --wk-radius-none: 0;
  --wk-radius-control: var(--wk-radius-none);
  --wk-radius-container: var(--wk-radius-none);
  --wk-radius-full: 9999px;
  /* space */
  --wk-space-10: 4rem;
  --wk-space-11: 5rem;
  --wk-space-12: 6rem;
  --wk-space-01: 0.125rem;
  --wk-space-02: 0.25rem;
  --wk-space-03: 0.5rem;
  --wk-space-04: 0.75rem;
  --wk-space-05: 1rem;
  --wk-space-06: 1.5rem;
  --wk-space-07: 2rem;
  --wk-space-08: 2.5rem;
  --wk-space-09: 3rem;
  /* font-family */
  --wk-font-family-sans: 'IBM Plex Sans', Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --wk-font-family-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  /* font-weight */
  --wk-font-weight-normal: 400;
  --wk-font-weight-medium: 500;
  --wk-font-weight-semibold: 600;
  --wk-font-weight-bold: 700;
  /* font-size */
  --wk-font-size-2xs: 0.6875rem;
  --wk-font-size-xs: 0.75rem;
  --wk-font-size-sm: 0.8125rem;
  --wk-font-size-base: 0.9375rem;
  --wk-font-size-md: 1rem;
  --wk-font-size-lg: 1.25rem;
  --wk-font-size-xl: 1.75rem;
  --wk-font-size-2xl: 2.25rem;
  --wk-font-size-3xl: 2.75rem;
  --wk-font-size-4xl: 3.45rem;
  /* line-height */
  --wk-line-height-tight: 1.08;
  --wk-line-height-snug: 1.25;
  --wk-line-height-normal: 1.55;
  /* letter-spacing */
  --wk-letter-spacing-normal: 0em;
  --wk-letter-spacing-tight: -0.01em;
  /* z */
  --wk-z-base: 0;
  --wk-z-raised: 10;
  --wk-z-sticky: 20;
  --wk-z-overlay: 30;
  --wk-z-modal: 40;
  --wk-z-toast: 50;
}

/**
 * werserk named text styles — DO NOT EDIT.
 * Generated from tokens/src/typography.json. `.wk-text-<name>` sets the whole
 * type recipe (family + size + weight + leading + tracking) in one class.
 */

.wk-text-display {
  font-family: var(--wk-font-family-sans);
  font-size: 2.75rem;
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: -0.01em;
}

.wk-text-heading {
  font-family: var(--wk-font-family-sans);
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: 0em;
}

.wk-text-title {
  font-family: var(--wk-font-family-sans);
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: 0em;
}

.wk-text-body {
  font-family: var(--wk-font-family-sans);
  font-size: 0.9375rem;
  font-weight: 400;
  line-height: 1.55;
  letter-spacing: 0em;
}

.wk-text-label {
  font-family: var(--wk-font-family-mono);
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0em;
}

.wk-text-caption {
  font-family: var(--wk-font-family-mono);
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0em;
}

.wk-text-eyebrow {
  font-family: var(--wk-font-family-mono);
  font-size: 0.6875rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0em;
}

/**
 * werserk instrument primitives — component styles.
 * Requires the --wk-* token layer (@werserk/tokens/css) to be present.
 * Extracted verbatim from werserk.com; the source of truth for these marks.
 */

.instrument-grid,
.instrument-corner-marks,
.instrument-crosses,
.instrument-dot-cluster,
.instrument-calibration-frame,
.instrument-guide-line {
  pointer-events: none;
}

.instrument-tone--faint {
  --instrument-color: var(--wk-instrument-faint);
}

.instrument-tone--neutral {
  --instrument-color: var(--wk-instrument-neutral);
}

.instrument-tone--active {
  --instrument-color: var(--wk-instrument-active);
}

.instrument-grid {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(var(--wk-grid-minor) 1px, transparent 1px),
    linear-gradient(90deg, var(--wk-grid-minor) 1px, transparent 1px),
    linear-gradient(var(--wk-grid-major) 1px, transparent 1px),
    linear-gradient(90deg, var(--wk-grid-major) 1px, transparent 1px);
  background-size:
    var(--wk-grid-cell) var(--wk-grid-cell),
    var(--wk-grid-cell) var(--wk-grid-cell),
    var(--wk-grid-major-cell) var(--wk-grid-major-cell),
    var(--wk-grid-major-cell) var(--wk-grid-major-cell);
  background-position: top left;
}

.instrument-grid--fixed {
  position: fixed;
}

.instrument-grid--quiet {
  opacity: 0.72;
}

.instrument-grid--normal {
  opacity: 0.9;
}

.instrument-grid--rich {
  opacity: 1;
}

.instrument-corner-marks {
  position: absolute;
  inset: var(--instrument-corner-inset, 0);
  z-index: 2;
  color: var(--instrument-color, var(--wk-instrument-neutral));
}

.instrument-corner-marks--viewport {
  position: fixed;
  z-index: 25;
}

.instrument-corner-mark {
  position: absolute;
  width: var(--instrument-corner-size, 2rem);
  height: var(--instrument-corner-size, 2rem);
  color: currentColor;
}

.instrument-corner-mark--top-left {
  top: 0;
  left: 0;
  border-top: 1px solid currentColor;
  border-left: 1px solid currentColor;
}

.instrument-corner-mark--top-right {
  top: 0;
  right: 0;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
}

.instrument-corner-mark--bottom-left {
  bottom: 0;
  left: 0;
  border-bottom: 1px solid currentColor;
  border-left: 1px solid currentColor;
}

.instrument-corner-mark--bottom-right {
  right: 0;
  bottom: 0;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
}

.instrument-crosses {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.instrument-cross {
  position: absolute;
  top: var(--instrument-y);
  left: var(--instrument-x);
  width: var(--instrument-cross-size, 1rem);
  height: var(--instrument-cross-size, 1rem);
  color: var(--instrument-color, var(--wk-instrument-neutral));
  transform: translate(-50%, -50%);
}

.instrument-cross::before,
.instrument-cross::after {
  position: absolute;
  content: '';
  background: currentColor;
}

.instrument-cross::before {
  top: 50%;
  left: 0;
  width: 100%;
  height: 1px;
  transform: translateY(-50%);
}

.instrument-cross::after {
  top: 0;
  left: 50%;
  width: 1px;
  height: 100%;
  transform: translateX(-50%);
}

.instrument-dot-cluster {
  position: absolute;
  top: var(--instrument-y);
  left: var(--instrument-x);
  z-index: 3;
  display: grid;
  gap: 0.55rem;
  color: var(--instrument-color, var(--wk-instrument-faint));
  --instrument-dot-step: 0.1875rem;
}

.instrument-dot-cluster span {
  width: var(--instrument-dot-step);
  height: var(--instrument-dot-step);
  background: currentColor;
}

.instrument-calibration-frame {
  position: absolute;
  inset: var(--instrument-frame-inset, 0);
  z-index: 3;
  border: 1px solid currentColor;
  color: var(--instrument-color, var(--wk-instrument-neutral));
}

.instrument-calibration-frame__handle {
  position: absolute;
  width: 0.5rem;
  height: 0.5rem;
  border: 1px solid currentColor;
  background: rgba(15, 15, 15, 0.56);
}

.instrument-calibration-frame__handle--top-left {
  top: 0;
  left: 0;
  transform: translate(-50%, -50%);
}

.instrument-calibration-frame__handle--top-right {
  top: 0;
  right: 0;
  transform: translate(50%, -50%);
}

.instrument-calibration-frame__handle--bottom-left {
  bottom: 0;
  left: 0;
  transform: translate(-50%, 50%);
}

.instrument-calibration-frame__handle--bottom-right {
  right: 0;
  bottom: 0;
  transform: translate(50%, 50%);
}

.instrument-calibration-frame__guide {
  position: absolute;
  background: currentColor;
  opacity: 0.36;
}

.instrument-calibration-frame__guide--horizontal {
  top: 50%;
  right: 0;
  left: 0;
  height: 1px;
}

.instrument-calibration-frame__guide--vertical {
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
}

.instrument-guide-line {
  position: absolute;
  top: var(--instrument-y);
  left: var(--instrument-x);
  z-index: 2;
  color: var(--instrument-color, var(--wk-instrument-faint));
}

.instrument-guide-line--horizontal {
  width: var(--instrument-line-length);
  border-top: 1px solid currentColor;
}

.instrument-guide-line--vertical {
  height: var(--instrument-line-length);
  border-left: 1px solid currentColor;
}

.instrument-guide-line--dashed {
  border-style: dashed;
}

/* Responsive hide utilities (Tailwind-standard breakpoints). */

@media (max-width: 767.98px) {
  .instrument-hide-below-md {
    display: none;
  }
}

@media (max-width: 1023.98px) {
  .instrument-hide-below-lg {
    display: none;
  }
}

/**
 * werserk signature motion + media — component styles.
 * Requires the --wk-* token layer (@werserk/tokens/css). Ambient motion is
 * LIVENESS, not decoration (traveling scanlines, status pulse, typing caret);
 * every animation yields to prefers-reduced-motion. Durations come from the
 * --wk-motion-duration-* tokens harvested from werserk.com.
 */

/* --- MediaFrame: hairline frame over a recessed surface --- */

.wk-media-frame {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
}

.wk-media-frame > img,
.wk-media-frame > video {
  display: block;
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/* Registration corner marks (opt-in) */

.wk-media-frame__corner {
  position: absolute;
  z-index: 2;
  width: 1.25rem;
  height: 1.25rem;
  pointer-events: none;
}

.wk-media-frame__corner--top-left {
  top: 0.5rem;
  left: 0.5rem;
  border-top: 1px solid var(--wk-instrument-neutral);
  border-left: 1px solid var(--wk-instrument-neutral);
}

.wk-media-frame__corner--bottom-right {
  right: 0.5rem;
  bottom: 0.5rem;
  border-right: 1px solid var(--wk-instrument-neutral);
  border-bottom: 1px solid var(--wk-instrument-neutral);
}

/* Traveling scanline sweep (opt-in via .wk-media-frame--scan) */

.wk-media-frame--scan::after {
  --wk-scan-distance: calc(100% - 1px);
  position: absolute;
  inset: 0;
  z-index: 3;
  content: '';
  background: linear-gradient(180deg, rgba(250, 250, 250, 0.54) 0 1px, transparent 1px 100%);
  opacity: 0.36;
  transform: translateY(0);
  will-change: opacity, transform;
  pointer-events: none;
  animation: wk-media-scan var(--wk-motion-duration-scan, 9600ms) linear infinite;
}

@keyframes wk-media-scan {
  0%,
  4% {
    opacity: 0;
    transform: translateY(0);
  }

  5%,
  8%,
  38%,
  41%,
  74%,
  77% {
    opacity: 0.36;
    transform: translateY(0);
  }

  20%,
  23%,
  56%,
  59% {
    opacity: 0.42;
    transform: translateY(var(--wk-scan-distance));
  }

  78%,
  100% {
    opacity: 0;
    transform: translateY(0);
  }
}

/* --- Status pulse (live/online dot) --- */

.wk-pulse {
  animation: wk-pulse var(--wk-motion-duration-pulse, 1800ms) ease-in-out infinite;
}

@keyframes wk-pulse {
  0%,
  100% {
    opacity: 0.52;
    box-shadow: 0 0 0 0 rgba(255, 117, 24, 0);
  }

  48% {
    opacity: 1;
    box-shadow: 0 0 0 3px rgba(255, 117, 24, 0.14);
  }
}

/* --- Typing caret (append to a live text line) --- */

.wk-caret::after {
  content: '';
  display: inline-block;
  width: 0.5ch;
  height: 1em;
  margin-left: 0.15ch;
  background: currentColor;
  vertical-align: text-bottom;
  animation: wk-caret var(--wk-motion-duration-caret, 720ms) steps(2, end) infinite;
}

@keyframes wk-caret {
  0%,
  45% {
    opacity: 1;
  }

  46%,
  100% {
    opacity: 0;
  }
}

/* --- ModuleMap connector mesh (KiraOperatingMesh idiom) --- */

/* An SVG layer of orthogonal connectors from the core node to each system node,
   with a signal packet that travels the wire. Paths are drawn at runtime from the
   measured node geometry; these rules only style/animate them. */

.wk-mesh__links {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.wk-mesh__link {
  fill: none;
  stroke: var(--wk-instrument-neutral);
  stroke-linecap: square;
  stroke-width: 1;
  transition:
    opacity 160ms ease,
    stroke 160ms ease,
    stroke-width 160ms ease;
}

.wk-mesh__link[data-preview='true'] {
  stroke: rgba(250, 250, 250, 0.34);
  stroke-width: 1.4;
}

.wk-mesh__link[data-active='true'] {
  stroke: rgba(255, 117, 24, 0.68);
  stroke-width: 1.5;
}

.wk-mesh__signal {
  fill: none;
  opacity: 0;
  stroke: rgba(255, 117, 24, 0.88);
  stroke-dasharray: 0.04 0.96;
  stroke-dashoffset: 1;
  stroke-linecap: round;
  stroke-width: 2.4;
  animation: wk-mesh-signal var(--wk-motion-duration-signal, 2200ms) linear infinite;
  animation-delay: calc(var(--wk-signal-index, 0) * 180ms);
}

.wk-mesh__signal[data-active='true'] {
  opacity: 0.82;
}

.wk-mesh__signal[data-preview='true'] {
  opacity: 0.78;
  stroke: rgba(250, 250, 250, 0.72);
}

@keyframes wk-mesh-signal {
  from {
    stroke-dashoffset: 1;
  }

  to {
    stroke-dashoffset: 0;
  }
}

/* --- StepFlow connector rail + dashed feedback loop (KiraExplainer idiom) --- */

.wk-flow__edges {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.wk-flow__edge {
  fill: none;
  stroke: var(--wk-instrument-neutral);
  stroke-width: 1;
  transition:
    opacity 160ms ease,
    stroke 160ms ease;
}

.wk-flow__edge[data-active='true'] {
  stroke: rgba(255, 117, 24, 0.6);
}

.wk-flow__edge--loop {
  stroke: var(--wk-instrument-strong);
  stroke-dasharray: 3 3;
}

.wk-flow__edge--loop[data-active='true'] {
  stroke: rgba(255, 117, 24, 0.6);
}

.wk-flow__signal {
  fill: none;
  opacity: 0;
  stroke: rgba(255, 117, 24, 0.88);
  stroke-dasharray: 0.06 0.94;
  stroke-dashoffset: 1;
  stroke-linecap: round;
  stroke-width: 2;
  animation: wk-mesh-signal var(--wk-motion-duration-signal, 2200ms) linear infinite;
}

.wk-flow__signal[data-active='true'] {
  opacity: 0.8;
}

@media (prefers-reduced-motion: reduce) {
  .wk-media-frame--scan::after,
  .wk-pulse,
  .wk-caret::after,
  .wk-mesh__signal,
  .wk-flow__signal {
    animation: none;
  }
}

/* Generated by scripts/build-preview.mjs — canon typefaces, self-hosted.
   Both subsets, the same four weights the landing ships. */

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 400;

  src: url('./fonts/ibm-plex-sans-cyrillic-400-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 500;

  src: url('./fonts/ibm-plex-sans-cyrillic-500-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 600;

  src: url('./fonts/ibm-plex-sans-cyrillic-600-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 700;

  src: url('./fonts/ibm-plex-sans-cyrillic-700-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 400;

  src: url('./fonts/ibm-plex-sans-latin-400-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 500;

  src: url('./fonts/ibm-plex-sans-latin-500-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 600;

  src: url('./fonts/ibm-plex-sans-latin-600-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Sans';

  font-style: normal;

  font-display: swap;

  font-weight: 700;

  src: url('./fonts/ibm-plex-sans-latin-700-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 400;

  src: url('./fonts/ibm-plex-mono-cyrillic-400-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 500;

  src: url('./fonts/ibm-plex-mono-cyrillic-500-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 600;

  src: url('./fonts/ibm-plex-mono-cyrillic-600-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 700;

  src: url('./fonts/ibm-plex-mono-cyrillic-700-normal.woff2') format('woff2');

  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 400;

  src: url('./fonts/ibm-plex-mono-latin-400-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 500;

  src: url('./fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 600;

  src: url('./fonts/ibm-plex-mono-latin-600-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'IBM Plex Mono';

  font-style: normal;

  font-display: swap;

  font-weight: 700;

  src: url('./fonts/ibm-plex-mono-latin-700-normal.woff2') format('woff2');

  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/**
 * foundation-preview — component layer.
 *
 * Two vocabularies on one canon:
 *   [A] werserk.com landing idioms — hand-written classes, cell-derived geometry,
 *       the left-edge intent marker, instrument marks. Prefixed `.a-`.
 *   [B] the UI kit's Tailwind recipes — utilities from @werserk/tokens/tailwind
 *       (used inline in index.html). Marked in comments where compared.
 *
 * RULE: every value here is a --wk-* token or a structural number (1px hairline,
 * 100%, calc on tokens). No raw colour, no raw spacing scale.
 */

/* ------------------------------------------------------------------ shell [A] */

.fp-body {
  margin: 0;
  min-height: 100vh;
  background-color: var(--wk-background);
  color: var(--wk-text-secondary);
  font-family: var(--wk-font-family-sans);
  -webkit-font-smoothing: antialiased;
}

/* the blueprint grid — the landing's `.instrument-grid`, fixed behind content */

.fp-grid-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  background-image:
    linear-gradient(var(--wk-grid-minor) 1px, transparent 1px),
    linear-gradient(90deg, var(--wk-grid-minor) 1px, transparent 1px),
    linear-gradient(var(--wk-grid-major) 1px, transparent 1px),
    linear-gradient(90deg, var(--wk-grid-major) 1px, transparent 1px);
  background-size:
    var(--wk-grid-cell) var(--wk-grid-cell),
    var(--wk-grid-cell) var(--wk-grid-cell),
    var(--wk-grid-major-cell) var(--wk-grid-major-cell),
    var(--wk-grid-major-cell) var(--wk-grid-major-cell);
  pointer-events: none;
}

.fp-appbar {
  position: sticky;
  top: env(safe-area-inset-top);
  z-index: var(--wk-z-sticky);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--wk-space-04);
  align-items: center;
  min-height: var(--wk-cell);
  border-bottom: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-background);
  padding: 0 max(var(--wk-space-05), env(safe-area-inset-right)) 0 max(var(--wk-space-05), env(safe-area-inset-left));
  font-family: var(--wk-font-family-mono);
}

.fp-appbar__brand {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-03);
  min-height: var(--wk-touch-target);
  color: var(--wk-text-primary);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-semibold);
  text-decoration: none;
}

.fp-appbar__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-04);
  justify-content: flex-end;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-main {
  position: relative;
  z-index: 1;
  width: min(calc(var(--wk-cell) * 24), calc(100% - var(--wk-cell-half)));
  margin-inline: auto;
  padding: var(--wk-space-08) 0 var(--wk-space-12);
}

.fp-intro {
  display: grid;
  gap: var(--wk-space-04);
  padding-bottom: var(--wk-space-08);
  border-bottom: var(--wk-border-width) solid var(--wk-border-subtle);
}

.fp-intro__title {
  margin: 0;
}

.fp-intro__lead {
  max-width: calc(var(--wk-cell) * 12);
  margin: 0;
  color: var(--wk-text-muted);
}

.fp-eyebrow {
  margin: 0;
  color: var(--wk-action-primary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  font-weight: var(--wk-font-weight-semibold);
  line-height: var(--wk-line-height-normal);
  text-transform: uppercase;
}

.fp-rule {
  border: 0;
  border-top: var(--wk-border-width) solid var(--wk-border-subtle);
  margin: 0;
}

/* ------------------------------------------------------- screen frame [A+B] */

.fp-screens {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--wk-space-08);
  align-items: start;
  padding-top: var(--wk-space-08);
}

@media (min-width: 1280px) {
  .fp-screens {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--wk-space-06);
  }
}

/* B: Card / MediaFrame recipe — hairline on a recessed surface, zero radius. */

.fp-screen {
  position: relative;
  container-type: inline-size;
  display: grid;
  align-content: start;
  gap: var(--wk-space-06);
  min-width: 0;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
  padding: var(--wk-space-06) var(--wk-space-05) var(--wk-space-08);
}

.fp-screen__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: var(--wk-space-04);
}

.fp-screen__index {
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-screen__title {
  margin: var(--wk-space-02) 0 0;
  color: var(--wk-text-primary);
}

.fp-screen__count {
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
  white-space: nowrap;
}

/* Narrow panel: the count drops under the title instead of pressing against it.
   `ПУБЛИКАЦИЯ` at display size left the counter about 4 px of air at 390 px. */

@container (max-width: 34rem) {
  .fp-screen__head {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
  }

  .fp-screen__count {
    order: 2;
  }
}

/* corner registration marks (A: .instrument-corner-marks) */

.fp-corner {
  position: absolute;
  width: calc(var(--wk-cell-quarter) + var(--wk-space-02));
  height: calc(var(--wk-cell-quarter) + var(--wk-space-02));
  color: var(--wk-instrument-neutral);
  pointer-events: none;
}

.fp-corner--tl {
  top: -1px;
  left: -1px;
  border-top: var(--wk-border-width) solid currentColor;
  border-left: var(--wk-border-width) solid currentColor;
}

.fp-corner--br {
  right: -1px;
  bottom: -1px;
  border-right: var(--wk-border-width) solid currentColor;
  border-bottom: var(--wk-border-width) solid currentColor;
}

/* ------------------------------------------------- control surface [B] */

/* state switcher — the kit's Tabs idiom, drawn as a segmented control */

.fp-switch {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-02);
}

.fp-switch__label {
  width: 100%;
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-switch button {
  min-height: var(--wk-touch-target);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: transparent;
  padding: var(--wk-space-02) var(--wk-space-04);
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color var(--wk-transition-fast) var(--wk-easing-standard);
}

.fp-switch button:hover {
  background: var(--wk-state-hover);
  color: var(--wk-text-primary);
}

.fp-switch button[aria-pressed='true'] {
  border-color: var(--wk-border-strong);
  background: var(--wk-state-selected);
  color: var(--wk-text-primary);
  box-shadow: inset var(--wk-marker) 0 0 var(--wk-intent-marker);
}

/* filter tabs — same recipe, larger, sans (the catalog's primary filter) */

.fp-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-02);
}

.fp-tab {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-03);
  min-height: var(--wk-touch-target);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: transparent;
  padding: 0 var(--wk-space-05);
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-medium);
  cursor: pointer;
}

.fp-tab:hover {
  background: var(--wk-state-hover);
  color: var(--wk-text-primary);
}

.fp-tab[aria-selected='true'] {
  border-color: var(--wk-text-primary);
  background: var(--wk-text-primary);
  color: var(--wk-layer-inverse);
}

.fp-tab__count {
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  opacity: 0.72;
}

/* search field — hairline underline, mono value, icon in the label row */

.fp-search {
  display: grid;
  gap: var(--wk-space-02);
  min-width: 0;
}

.fp-search__field {
  display: flex;
  align-items: center;
  gap: var(--wk-space-03);
  min-height: var(--wk-touch-target);
  border-bottom: var(--wk-border-width) solid var(--wk-border-strong);
}

.fp-search__field:focus-within {
  border-bottom-color: var(--wk-action-primary);
  /* focus must not be carried by colour alone: the accent edge appears */
  box-shadow: inset 2px 0 0 var(--wk-action-primary);
}

.fp-search input {
  width: 100%;
  min-width: 0;
  min-height: var(--wk-touch-target);
  border: 0;
  background: transparent;
  color: var(--wk-text-primary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-sm);
}

.fp-search input::-moz-placeholder {
  color: var(--wk-text-muted);
}

.fp-search input::placeholder {
  color: var(--wk-text-muted);
}

.fp-search input:focus-visible {
  outline: none;
}

.fp-search__icon {
  flex: 0 0 auto;
  width: var(--wk-icon-md);
  height: var(--wk-icon-md);
  color: var(--wk-text-muted);
}

/* toolbar: tabs left, search right */

.fp-toolbar {
  display: grid;
  gap: var(--wk-space-05);
}

@container (min-width: 40rem) {
  .fp-toolbar {
    grid-template-columns: minmax(0, 1fr) minmax(calc(var(--wk-cell) * 5), auto);
    align-items: end;
  }
}

/* ---------------------------------------------------------------- buttons */

/* B: kit Button recipe (border + intent marker on secondary, sizes sm/md/lg). */

.b-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--wk-space-03);
  border: var(--wk-border-width) solid transparent;
  border-radius: var(--wk-radius-control);
  font-family: var(--wk-font-family-sans);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-semibold);
  line-height: var(--wk-line-height-snug);
  cursor: pointer;
  transition: background-color var(--wk-transition-fast) var(--wk-easing-standard);
}

.b-btn--md {
  min-height: var(--wk-touch-target);
  padding: 0 var(--wk-space-05);
}

.b-btn--sm {
  min-height: calc(var(--wk-touch-target) - var(--wk-space-03));
  padding: 0 var(--wk-space-04);
  font-size: var(--wk-font-size-xs);
}

.b-btn--primary {
  border-color: var(--wk-action-primary);
  background: var(--wk-action-primary);
  color: var(--wk-layer-inverse);
}

.b-btn--primary:hover {
  border-color: var(--wk-action-hover);
  background: var(--wk-action-hover);
}

.b-btn--secondary {
  border-color: var(--wk-border-strong);
  background: transparent;
  color: var(--wk-text-primary);
}

.b-btn--secondary::before {
  position: absolute;
  top: -1px;
  bottom: -1px;
  left: -1px;
  width: var(--wk-marker);
  background: var(--wk-intent-marker);
  opacity: 0;
  content: '';
  transition: opacity var(--wk-transition-fast) var(--wk-easing-standard);
}

.b-btn--secondary:hover,
.b-btn--secondary:focus-visible {
  background: var(--wk-state-hover);
}

.b-btn--secondary:hover::before,
.b-btn--secondary:focus-visible::before {
  opacity: 1;
}

.b-btn--quiet {
  border-color: transparent;
  background: transparent;
  color: var(--wk-text-muted);
}

.b-btn--quiet:hover {
  background: var(--wk-state-hover);
  color: var(--wk-text-primary);
}

.b-btn:focus-visible {
  outline: var(--wk-focus-ring-width) solid var(--wk-focus-accent);
  outline-offset: var(--wk-focus-ring-offset);
}

.b-btn[disabled],
.b-btn[aria-disabled='true'] {
  opacity: 0.5;
  pointer-events: none;
}

/* A: landing-action — the same role, landing vocabulary (no radius metaphor,
   border-first, marker always drawn on the edge rather than on hover only). */

.a-action {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--wk-touch-target);
  border: var(--wk-border-width) solid var(--wk-border-strong);
  border-radius: var(--wk-radius-control);
  padding: var(--wk-space-03) var(--wk-space-05);
  color: var(--wk-text-primary);
  font-family: var(--wk-font-family-sans);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-semibold);
  line-height: var(--wk-line-height-snug);
  text-decoration: none;
  cursor: pointer;
}

.a-action--primary {
  border-color: var(--wk-action-primary);
  background: var(--wk-action-primary);
  color: var(--wk-layer-inverse);
}

.a-action--quiet {
  border-color: transparent;
  color: var(--wk-text-muted);
}

.a-action--quiet:hover {
  background: var(--wk-state-hover);
  color: var(--wk-text-primary);
}

.a-action:focus-visible {
  outline: var(--wk-focus-ring-width) solid var(--wk-focus-accent);
  outline-offset: var(--wk-focus-ring-offset);
}

/* --------------------------------------------------------------- badges */

/* B: kit Badge — pill, translucent tint, colored text, optional status dot. */

.b-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-02);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  border-radius: var(--wk-radius-full);
  padding: var(--wk-space-01) var(--wk-space-03);
  font-family: var(--wk-font-family-sans);
  font-size: var(--wk-font-size-xs);
  font-weight: var(--wk-font-weight-medium);
  line-height: var(--wk-line-height-snug);
  white-space: nowrap;
}

.b-badge--neutral {
  border-color: var(--wk-border-subtle);
  background: var(--wk-state-hover);
  color: var(--wk-text-secondary);
}

.b-badge--accent {
  border-color: var(--wk-action-border);
  background: var(--wk-action-surface);
  color: var(--wk-action-soft);
}

.b-badge--success {
  border-color: var(--wk-feedback-success-border);
  background: var(--wk-feedback-success-surface);
  color: var(--wk-feedback-success-base);
}

.b-badge--warning {
  border-color: var(--wk-feedback-warning-border);
  background: var(--wk-feedback-warning-surface);
  color: var(--wk-feedback-warning-base);
}

.b-badge--danger {
  border-color: var(--wk-feedback-danger-border);
  background: var(--wk-feedback-danger-surface);
  color: var(--wk-feedback-danger-base);
}

.b-badge__dot {
  width: var(--wk-space-02);
  height: var(--wk-space-02);
  border-radius: var(--wk-radius-full);
  background: currentColor;
}

/* B: kit TagChip — mono, hairline, square. Classification, not status. */

.b-chip {
  display: inline-flex;
  align-items: center;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: transparent;
  padding: var(--wk-space-01) var(--wk-space-02);
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
  white-space: nowrap;
}

/* A: same role, landing vocabulary — mono, but prefix-marked and cell-aligned. */

.a-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-02);
  padding: var(--wk-space-01) 0;
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.a-chip::before {
  color: var(--wk-action-primary);
  content: '›';
}

/* ---------------------------------------------------------------- cards */

.fp-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--wk-space-05);
}

@container (min-width: 40rem) {
  .fp-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@container (min-width: 64rem) {
  .fp-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.fp-card {
  position: relative;
  display: grid;
  align-content: start;
  gap: var(--wk-space-04);
  min-width: 0;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-01);
  padding: var(--wk-space-04);
}

.fp-card[data-visibility='private'] {
  background: var(--wk-layer-inverse);
}

.fp-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--wk-space-03);
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-card__media {
  position: relative;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
}

.fp-card__media svg {
  display: block;
  width: 100%;
  height: 100%;
}

.fp-card__badges {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--wk-space-03);
  min-width: 0;
}

.fp-card__title {
  margin: 0;
  color: var(--wk-text-primary);
}

.fp-card__title a {
  color: inherit;
  text-decoration: none;
}

.fp-card__title a:hover {
  color: var(--wk-action-soft);
}

.fp-card__summary {
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  line-height: var(--wk-line-height-normal);
}

/* the reference's progress row, re-read as a project readiness ledger row */

.fp-card__ledger {
  display: grid;
  gap: var(--wk-space-02);
  padding-top: var(--wk-space-03);
  border-top: var(--wk-border-width) solid var(--wk-border-subtle);
}

.fp-card__ledger-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--wk-space-03);
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
}

.fp-card__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--wk-space-03);
  min-height: var(--wk-touch-target);
}

.fp-card__link {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-03);
  min-height: var(--wk-touch-target);
  color: var(--wk-text-primary);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-medium);
  text-decoration: none;
}

.fp-card__link:hover {
  color: var(--wk-action-soft);
}

.fp-card__arrow {
  width: var(--wk-icon-md);
  height: var(--wk-icon-md);
  color: var(--wk-text-muted);
}

.fp-card__link:hover .fp-card__arrow {
  color: var(--wk-action-primary);
}

/* gate — a record that needs a session (private/shared without access) */

.fp-gate {
  display: grid;
  gap: var(--wk-space-03);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
  padding: var(--wk-space-04);
}

.fp-gate__title {
  display: flex;
  align-items: center;
  gap: var(--wk-space-03);
  color: var(--wk-text-secondary);
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-medium);
}

.fp-gate__hint {
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-xs);
  line-height: var(--wk-line-height-normal);
}

/* ------------------------------------------------------- media + graphics */

.fp-media {
  position: relative;
  overflow: hidden;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
}

.fp-media--scan::after {
  position: absolute;
  inset: 0;
  content: '';
  background: linear-gradient(180deg, var(--wk-focus) 0 1px, transparent 1px 100%);
  opacity: 0.36;
  animation: fp-scan var(--wk-motion-duration-scan) linear infinite;
  pointer-events: none;
}

@keyframes fp-scan {
  0%,
  100% {
    transform: translateY(0);
    opacity: 0.16;
  }

  50% {
    transform: translateY(calc(100% - 1px));
    opacity: 0.36;
  }
}

/* ------------------------------------------------------------- feedback */

.b-alert {
  display: grid;
  gap: var(--wk-space-03);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  padding: var(--wk-space-04);
  background: var(--wk-layer-01);
}

.b-alert--danger {
  border-color: var(--wk-feedback-danger-border);
  background: var(--wk-feedback-danger-surface);
}

.b-alert--warning {
  border-color: var(--wk-feedback-warning-border);
  background: var(--wk-feedback-warning-surface);
}

.b-alert__title {
  margin: 0;
  font-size: var(--wk-font-size-sm);
  font-weight: var(--wk-font-weight-semibold);
}

.b-alert--danger .b-alert__title {
  color: var(--wk-feedback-danger-base);
}

.b-alert--warning .b-alert__title {
  color: var(--wk-feedback-warning-base);
}

.b-alert__body {
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  line-height: var(--wk-line-height-normal);
}

.b-alert__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-03);
}

/* ------------------------------------------------------------- skeleton */

.b-skeleton {
  position: relative;
  overflow: hidden;
  background: var(--wk-state-hover);
}

.b-skeleton::after {
  position: absolute;
  inset: 0;
  content: '';
  background: linear-gradient(90deg, transparent, var(--wk-state-selected), transparent);
  transform: translateX(-100%);
  animation: b-skeleton-sweep var(--wk-motion-duration-pulse) ease-in-out infinite;
}

@keyframes b-skeleton-sweep {
  to {
    transform: translateX(100%);
  }
}

/* ------------------------------------------------------------ empty state */

.b-empty {
  display: grid;
  min-height: calc(var(--wk-cell) * 6);
  align-content: center;
  justify-items: center;
  gap: var(--wk-space-04);
  border: var(--wk-border-width) dashed var(--wk-border-subtle);
  padding: var(--wk-space-08) var(--wk-space-05);
  background: var(--wk-layer-inverse);
  text-align: center;
}

.b-empty__title {
  margin: 0;
  color: var(--wk-text-primary);
}

.b-empty__body {
  max-width: calc(var(--wk-cell) * 9);
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  line-height: var(--wk-line-height-normal);
}

/* ---------------------------------------------------------- stat ledger */

.b-ledger {
  display: grid;
  border-top: var(--wk-border-width) solid var(--wk-border-subtle);
}

.b-ledger__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--wk-space-03);
  align-items: baseline;
  padding: var(--wk-space-03) 0;
  border-bottom: var(--wk-border-width) solid var(--wk-border-subtle);
}

.b-ledger__value {
  color: var(--wk-text-primary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-sm);
  text-align: right;
}

.b-ledger__label {
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
}

.b-ledger__context {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
}

/* ------------------------------------------------------------- progress */

.b-meter {
  display: grid;
  gap: var(--wk-space-02);
}

.b-meter__track {
  height: var(--wk-space-02);
  background: var(--wk-dataviz-track);
}

.b-meter__fill {
  height: 100%;
  background: var(--wk-dataviz-series);
}

.b-meter__readout {
  display: flex;
  justify-content: space-between;
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
}

/* ----------------------------------------------------------- file ledger */

.fp-files {
  display: grid;
  border-top: var(--wk-border-width) solid var(--wk-border-subtle);
}

.fp-file {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: var(--wk-space-03);
  align-items: center;
  padding: var(--wk-space-04) 0;
  border-bottom: var(--wk-border-width) solid var(--wk-border-subtle);
}

.fp-file__index {
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
}

.fp-file__name {
  display: block;
  overflow-wrap: anywhere;
  color: var(--wk-text-primary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-xs);
}

.fp-file__meta {
  display: block;
  margin-top: var(--wk-space-01);
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
}

.fp-file__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-02);
}

/* Narrow panel: the file name keeps the full row, the actions drop below it.
   A two-column row here squeezed the name to a few characters per line. */

@container (max-width: 40rem) {
  .fp-file {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .fp-file__actions {
    grid-column: 1 / -1;
  }
}

/* ------------------------------------------------------------- preview */

.fp-preview {
  display: grid;
  gap: var(--wk-space-05);
}

.fp-preview__head {
  display: grid;
  gap: var(--wk-space-03);
}

.fp-preview__status {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-03);
  align-items: center;
}

.fp-preview__body {
  display: grid;
  gap: var(--wk-space-05);
}

@container (min-width: 46rem) {
  .fp-preview__body {
    grid-template-columns: minmax(0, 1fr) minmax(calc(var(--wk-cell) * 6), auto);
    align-items: start;
  }
}

.fp-panel {
  display: grid;
  gap: var(--wk-space-04);
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-01);
  padding: var(--wk-space-05);
}

.fp-panel__title {
  margin: 0;
  color: var(--wk-text-primary);
}

.fp-field {
  display: grid;
  gap: var(--wk-space-02);
}

.fp-field__label {
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-field input {
  min-height: var(--wk-touch-target);
  border: var(--wk-border-width) solid var(--wk-border-strong);
  background: transparent;
  padding: 0 var(--wk-space-04);
  color: var(--wk-text-primary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-sm);
}

.fp-field input:focus-visible {
  outline: none;
  border-color: var(--wk-action-primary);
}

.fp-field__hint {
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-2xs);
  line-height: var(--wk-line-height-normal);
}

.fp-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wk-space-03);
  align-items: center;
}

/* --------------------------------------------------------------- matrix */

.fp-matrix {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--wk-font-size-sm);
}

.fp-matrix caption {
  padding-bottom: var(--wk-space-04);
  color: var(--wk-text-muted);
  text-align: left;
}

.fp-matrix th,
.fp-matrix td {
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  padding: var(--wk-space-04);
  text-align: left;
  vertical-align: top;
}

.fp-matrix thead th {
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  font-weight: var(--wk-font-weight-normal);
  text-transform: uppercase;
}

.fp-matrix td:first-child {
  color: var(--wk-text-primary);
  font-weight: var(--wk-font-weight-medium);
}

.fp-matrix td {
  color: var(--wk-text-muted);
}

.fp-matrix code {
  color: var(--wk-text-secondary);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  overflow-wrap: anywhere;
}

.fp-matrix__verdict {
  display: inline-flex;
  align-items: center;
  gap: var(--wk-space-02);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  text-transform: uppercase;
}

.fp-matrix__verdict--proof {
  color: var(--wk-feedback-success-base);
}

.fp-matrix__verdict--open {
  color: var(--wk-feedback-warning-base);
}

.fp-scroll {
  overflow-x: auto;
}

/* ------------------------------------------------------ section blocks */

.fp-block {
  display: grid;
  gap: var(--wk-space-06);
  padding-top: var(--wk-space-08);
  margin-top: var(--wk-space-08);
  border-top: var(--wk-border-width) solid var(--wk-border-subtle);
}

.fp-block__head {
  display: grid;
  gap: var(--wk-space-03);
}

.fp-block__title {
  margin: 0;
  color: var(--wk-text-primary);
}

.fp-block__lead {
  max-width: calc(var(--wk-cell) * 14);
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  line-height: var(--wk-line-height-normal);
}

.fp-compare {
  display: grid;
  gap: var(--wk-space-05);
}

@media (min-width: 768px) {
  .fp-compare {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.fp-compare__cell {
  display: grid;
  gap: var(--wk-space-04);
  align-content: start;
  border: var(--wk-border-width) solid var(--wk-border-subtle);
  background: var(--wk-layer-inverse);
  padding: var(--wk-space-05);
}

.fp-compare__cell h3 {
  margin: 0;
  color: var(--wk-text-primary);
}

.fp-compare__cell p {
  margin: 0;
  color: var(--wk-text-muted);
  font-family: var(--wk-font-family-mono);
  font-size: var(--wk-font-size-2xs);
  line-height: var(--wk-line-height-normal);
}

.fp-note {
  margin: 0;
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-xs);
  line-height: var(--wk-line-height-normal);
}

.fp-list {
  display: grid;
  gap: var(--wk-space-03);
  margin: 0;
  padding: 0;
  list-style: none;
}

.fp-list li {
  display: grid;
  gap: var(--wk-space-02);
  padding-left: var(--wk-space-05);
  border-left: var(--wk-border-width) solid var(--wk-border-subtle);
  color: var(--wk-text-muted);
  font-size: var(--wk-font-size-sm);
  line-height: var(--wk-line-height-normal);
}

.fp-list strong {
  color: var(--wk-text-primary);
  font-weight: var(--wk-font-weight-medium);
}

.fp-visually-hidden {
  position: absolute;
  width: var(--wk-border-width);
  height: var(--wk-border-width);
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .fp-media--scan::after,
  .b-skeleton::after {
    animation: none;
  }
}

.visible {
  visibility: visible;
}

.collapse {
  visibility: collapse;
}

.static {
  position: static;
}

.fixed {
  position: fixed;
}

.absolute {
  position: absolute;
}

.relative {
  position: relative;
}

.sticky {
  position: sticky;
}

.block {
  display: block;
}

.inline {
  display: inline;
}

.flex {
  display: flex;
}

.table {
  display: table;
}

.grid {
  display: grid;
}

.contents {
  display: contents;
}

.hidden {
  display: none;
}

.border-collapse {
  border-collapse: collapse;
}

.transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.resize {
  resize: both;
}

.flex-wrap {
  flex-wrap: wrap;
}

.border {
  border-width: var(--wk-border-width);
}

.uppercase {
  text-transform: uppercase;
}

.underline {
  text-decoration-line: underline;
}

.antialiased {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.outline {
  outline-style: solid;
}

.grayscale {
  --tw-grayscale: grayscale(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: var(--wk-easing-standard);
  transition-duration: var(--wk-transition-fast);
}

.ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
