/* GENERATED from tokens/tokens.json — do not edit. motion-catalog tokens v3 */
:root {
  --dur-0: 0ms;
  --dur-100: 100ms;
  --dur-125: 125ms;
  --dur-150: 150ms;
  --dur-200: 200ms;
  --dur-250: 250ms;
  --dur-300: 300ms;
  --dur-400: 400ms;
  --dur-500: 500ms;
  --dur-600: 600ms;
  --dur-800: 800ms;
  --exit-ratio: 0.6;
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --ease-sheet: cubic-bezier(0.32, 0.72, 0, 1);
  --ease-slam: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-shunt: cubic-bezier(0.83, 0, 0.17, 1);
  --ease-hover: ease; --ease-linear: linear;
  --spring-default: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1);
  --spring-default-dur: 480ms;
  --spring-smooth: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1);
  --spring-smooth-dur: 800ms;
  --spring-snappy: linear(0.0000, 0.0692, 0.2183, 0.3881, 0.5471, 0.6812, 0.7864, 0.8644, 0.9195, 0.9564, 0.9800, 0.9940, 1.0016, 1.0052, 1.0063, 1.0060, 1.0052, 1.0041, 1.0031, 1.0022, 1.0015, 1.0010, 1.0006, 1.0003, 1);
  --spring-snappy-dur: 800ms;
  --spring-gesture: linear(0.0000, 0.0700, 0.2231, 0.3993, 0.5651, 0.7048, 0.8134, 0.8925, 0.9465, 0.9809, 1.0009, 1.0110, 1.0148, 1.0149, 1.0130, 1.0105, 1.0078, 1.0055, 1.0036, 1.0022, 1.0012, 1.0005, 1.0001, 0.9999, 1);
  --spring-gesture-dur: 800ms;
  --spring-playful: linear(0.0000, 0.0718, 0.2332, 0.4233, 0.6045, 0.7571, 0.8737, 0.9551, 1.0063, 1.0339, 1.0449, 1.0451, 1.0393, 1.0309, 1.0222, 1.0145, 1.0083, 1.0038, 1.0007, 0.9990, 0.9981, 0.9979, 0.9980, 0.9984, 1);
  --spring-playful-dur: 800ms;
  --spring-sheet: linear(0.0000, 0.0680, 0.2118, 0.3734, 0.5237, 0.6507, 0.7515, 0.8281, 0.8843, 0.9242, 0.9519, 0.9704, 0.9826, 0.9903, 0.9951, 0.9979, 0.9994, 1.0002, 1.0005, 1.0006, 1.0006, 1.0005, 1.0004, 1.0003, 1);
  --spring-sheet-dur: 832ms;
  --spring-morph: linear(0.0000, 0.0690, 0.2173, 0.3859, 0.5437, 0.6766, 0.7812, 0.8590, 0.9143, 0.9517, 0.9759, 0.9906, 0.9989, 1.0031, 1.0048, 1.0050, 1.0045, 1.0037, 1.0028, 1.0021, 1.0014, 1.0010, 1.0006, 1.0004, 1);
  --spring-morph-dur: 720ms;
  --spring-press: linear(0.0000, 0.0715, 0.2311, 0.4183, 0.5962, 0.7460, 0.8609, 0.9418, 0.9937, 1.0228, 1.0358, 1.0383, 1.0347, 1.0282, 1.0210, 1.0143, 1.0088, 1.0046, 1.0018, 1.0000, 0.9990, 0.9986, 0.9985, 0.9987, 1);
  --spring-press-dur: 400ms;
  --scale-press: 0.97;
  --scale-enter: 0.95;
  --scale-icon-from: 0.25;
  --scale-stack-step: 0.05;
  --scale-card-back: 0.9;
  --travel-enter: 12px;
  --travel-lift: 2px;
  --travel-stack: 14px;
  --travel-page: 24px;
  --travel-swipe: 45px;
  --blur-crossfade: 4px;
  --blur-text-in: 10px;
  --blur-depth-cap: 6px;
  --stagger-item: 50ms;
  --stagger-group: 100ms;
  --stagger-word: 80ms;
  --stagger-line: 100ms;
  --stagger-char: 30ms;
  --stagger-cap: 600ms;
  --loading-delay: 200ms;
  --loading-min: 400ms;
  --loop-slow: 6s;
  --loop-shimmer: 2s;
  --loop-autoplay-max: 5s;
  --gesture-swipe-velocity: 0.11;
  --gesture-fling-velocity: 400;
  --gesture-rubber-band: 0.55;
  --gesture-magnet-strength: 0.3;
  --gesture-magnet-radius: 72px;
  --gesture-tilt-cap: 8;
  --gesture-prox-radius: 50px;
  --gesture-tab-stretch-lag: 0.14;
  --gesture-slop: 10px;
  --gesture-longpress: 480ms;
  --gesture-projection-rate: 0.998;
  --gesture-decel-fast: 0.995;
  --depth-layer-gap: 84px;
  --depth-perspective: 1200px;
  --snd-tick: 30ms;
  --snd-tap: 50ms;
  --snd-toggle-on: 88ms;
  --snd-toggle-off: 88ms;
  --snd-select: 60ms;
  --snd-confirm: 150ms;
  --snd-error: 143ms;
  --snd-notify: 413ms;
  --snd-celebrate: 472ms;
  --snd-whoosh: 140ms;
  --snd-detent: 32ms;
  --snd-flap: 40ms;
  --snd-volume: 0.5;
  --snd-jitter-cents: 30;
  --snd-jitter-db: 1;
  --snd-product-cap: 80ms;
  --snd-root: 880;
  --hap-tick: 6;
  --hap-tap: 12;
  --hap-toggle-on: 10 40 16;
  --hap-toggle-off: 16 40 10;
  --hap-select: 10;
  --hap-confirm: 14 60 24;
  --hap-error: 30 50 30 50 30;
  --hap-notify: 20 80 20;
  --hap-celebrate: 16 40 16 40 30;
  --hap-whoosh: 18;
  --hap-detent: 8;
  --hap-flap: 6 20 6;
  --hap-min-gap: 60ms;
  --mech-detent-strength: 0.5;
  --mech-friction: 0.998;
  --mech-settle-max: 1200ms;
  --mech-restitution: 0.3;
  --mech-flap-step: 70ms;
  --mech-flap-jitter: 25ms;
  --mech-needle-overshoot: 0.015;
  --mech-needle-settle: 300ms;
  --mech-commit-hold: 1200ms;
  --mech-commit-resistance: 2.5;
  --mech-commit-decay: 450ms;
  --mech-stop-motion-fps: 12;
  --mech-haptic-gap: 40ms;
  --mech-sound-gap: 25ms;
  --mech-gravity: 2000;
  --mech-fold-response: 420ms;
  --mech-curl-response: 500ms;
  --spring-m3-spatial-fast: linear(0.0000, 0.0737, 0.2441, 0.4500, 0.6492, 0.8175, 0.9440, 1.0282, 1.0753, 1.0935, 1.0919, 1.0784, 1.0596, 1.0401, 1.0228, 1.0093, 0.9999, 0.9942, 0.9915, 0.9911, 0.9920, 0.9937, 0.9955, 0.9973, 1); --spring-m3-spatial-fast-dur: 355ms; --spring-m3-spatial-fast-stiffness: 800; --spring-m3-spatial-fast-damping: 0.6;
  --spring-m3-spatial-default: linear(0.0000, 0.0700, 0.2231, 0.3993, 0.5651, 0.7048, 0.8134, 0.8925, 0.9465, 0.9809, 1.0009, 1.0110, 1.0148, 1.0149, 1.0130, 1.0105, 1.0078, 1.0055, 1.0036, 1.0022, 1.0012, 1.0005, 1.0001, 0.9999, 1); --spring-m3-spatial-default-dur: 516ms; --spring-m3-spatial-default-stiffness: 380; --spring-m3-spatial-default-damping: 0.8;
  --spring-m3-spatial-slow: linear(0.0000, 0.0700, 0.2231, 0.3993, 0.5651, 0.7048, 0.8134, 0.8925, 0.9465, 0.9809, 1.0009, 1.0110, 1.0148, 1.0149, 1.0130, 1.0105, 1.0078, 1.0055, 1.0036, 1.0022, 1.0012, 1.0005, 1.0001, 0.9999, 1); --spring-m3-spatial-slow-dur: 711ms; --spring-m3-spatial-slow-stiffness: 200; --spring-m3-spatial-slow-damping: 0.8;
  --spring-m3-effects-fast: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1); --spring-m3-effects-fast-dur: 163ms; --spring-m3-effects-fast-stiffness: 3800; --spring-m3-effects-fast-damping: 1.0;
  --spring-m3-effects-default: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1); --spring-m3-effects-default-dur: 251ms; --spring-m3-effects-default-stiffness: 1600; --spring-m3-effects-default-damping: 1.0;
  --spring-m3-effects-slow: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1); --spring-m3-effects-slow-dur: 355ms; --spring-m3-effects-slow-stiffness: 800; --spring-m3-effects-slow-damping: 1.0;
  --scrim: 0.5;
  /* v0 aliases (kept so older entries resolve) */
  --dur-xs: var(--dur-100); --dur-sm: var(--dur-150); --dur-md: var(--dur-250); --dur-lg: var(--dur-300); --dur-xl: var(--dur-500);
  --dur-exit-sm: var(--dur-100); --dur-exit-md: var(--dur-150); --dur-exit-lg: var(--dur-200);
  --dur-exit-ratio: var(--exit-ratio); --ease-in: var(--ease-out); --spring-dur: var(--spring-smooth-dur);
  --press-scale: var(--scale-press); --enter-scale: var(--scale-enter); --enter-y: var(--travel-enter);
}
/* v3 theme tier: light defaults, [data-theme=dark], prefers-color-scheme when data-theme is unset */
:root, :root[data-theme="light"] {
  --mc-brand: #6e6af6;
  --mc-radius: 10px;
  --mc-radius-lg: 16px;
  --mc-density: 1;
  --mc-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  color-scheme: light;
  --mc-bg: #fafafb;
  --mc-fg: #141418;
  --mc-muted: #5c5c6b;
  --mc-surface: #ffffff;
  --mc-surface-2: #f1f1f4;
  --mc-border: #1414181f;
  --mc-danger: #d1293d;
  --mc-success: #1a8a4a;
  --mc-warning: #b45309;
  --mc-shadow: 0 1px 2px #14141810, 0 8px 24px #14141814;
  --mc-glow: 0.35;
  --mc-accent: #6059e3; /* brand at L 0.55, accent-fg contrast 5.2:1 */
  --mc-accent-fg: #ffffff;
  --mc-accent-l: 0.55;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --mc-bg: #0b0b0d;
  --mc-fg: #f1f0f4;
  --mc-muted: #a3a2b0;
  --mc-surface: #151519;
  --mc-surface-2: #1d1d23;
  --mc-border: #f1f0f41f;
  --mc-danger: #ff6b7a;
  --mc-success: #4fd18b;
  --mc-warning: #f5b041;
  --mc-shadow: 0 1px 2px #00000066, 0 12px 32px #00000080;
  --mc-glow: 1;
  --mc-accent: #9aa0fd; /* brand at L 0.74, accent-fg contrast 7.7:1 */
  --mc-accent-fg: #141418;
  --mc-accent-l: 0.74;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --mc-bg: #0b0b0d;
    --mc-fg: #f1f0f4;
    --mc-muted: #a3a2b0;
    --mc-surface: #151519;
    --mc-surface-2: #1d1d23;
    --mc-border: #f1f0f41f;
    --mc-danger: #ff6b7a;
    --mc-success: #4fd18b;
    --mc-warning: #f5b041;
    --mc-shadow: 0 1px 2px #00000066, 0 12px 32px #00000080;
    --mc-glow: 1;
    --mc-accent: #9aa0fd; /* brand at L 0.74, accent-fg contrast 7.7:1 */
    --mc-accent-fg: #141418;
    --mc-accent-l: 0.74;
  }
}
/* modern engines: re-derive accent + accent-fg from --mc-brand, so `--mc-brand: #e5484d` on :root re-skins everything */
@supports (color: oklch(from red l c h)) {
  :root, :root[data-theme], :root:not([data-theme="light"]) { --mc-accent: oklch(from var(--mc-brand) var(--mc-accent-l) min(c, 0.2) h); --mc-accent-fg: oklch(from var(--mc-accent) clamp(0.16, (0.62 - l) * 1000, 1) 0 0); }
}
/* v3 personality: <html data-mc-personality=calm|product|showcase|playful>; reduced motion (below) always wins */
:root { --mc-tempo: 1; --mc-energy: 1; --mc-bounce-cap: 0; }
:root { --spring-default-base: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1); --spring-smooth-base: linear(0.0000, 0.0667, 0.2048, 0.3577, 0.4991, 0.6189, 0.7154, 0.7905, 0.8475, 0.8900, 0.9213, 0.9441, 0.9605, 0.9722, 0.9805, 0.9864, 0.9905, 0.9934, 0.9955, 0.9969, 0.9978, 0.9985, 0.9990, 0.9993, 1); --spring-snappy-base: linear(0.0000, 0.0692, 0.2183, 0.3881, 0.5471, 0.6812, 0.7864, 0.8644, 0.9195, 0.9564, 0.9800, 0.9940, 1.0016, 1.0052, 1.0063, 1.0060, 1.0052, 1.0041, 1.0031, 1.0022, 1.0015, 1.0010, 1.0006, 1.0003, 1); --spring-gesture-base: linear(0.0000, 0.0700, 0.2231, 0.3993, 0.5651, 0.7048, 0.8134, 0.8925, 0.9465, 0.9809, 1.0009, 1.0110, 1.0148, 1.0149, 1.0130, 1.0105, 1.0078, 1.0055, 1.0036, 1.0022, 1.0012, 1.0005, 1.0001, 0.9999, 1); --spring-playful-base: linear(0.0000, 0.0718, 0.2332, 0.4233, 0.6045, 0.7571, 0.8737, 0.9551, 1.0063, 1.0339, 1.0449, 1.0451, 1.0393, 1.0309, 1.0222, 1.0145, 1.0083, 1.0038, 1.0007, 0.9990, 0.9981, 0.9979, 0.9980, 0.9984, 1); --spring-sheet-base: linear(0.0000, 0.0680, 0.2118, 0.3734, 0.5237, 0.6507, 0.7515, 0.8281, 0.8843, 0.9242, 0.9519, 0.9704, 0.9826, 0.9903, 0.9951, 0.9979, 0.9994, 1.0002, 1.0005, 1.0006, 1.0006, 1.0005, 1.0004, 1.0003, 1); --spring-morph-base: linear(0.0000, 0.0690, 0.2173, 0.3859, 0.5437, 0.6766, 0.7812, 0.8590, 0.9143, 0.9517, 0.9759, 0.9906, 0.9989, 1.0031, 1.0048, 1.0050, 1.0045, 1.0037, 1.0028, 1.0021, 1.0014, 1.0010, 1.0006, 1.0004, 1); --spring-press-base: linear(0.0000, 0.0715, 0.2311, 0.4183, 0.5962, 0.7460, 0.8609, 0.9418, 0.9937, 1.0228, 1.0358, 1.0383, 1.0347, 1.0282, 1.0210, 1.0143, 1.0088, 1.0046, 1.0018, 1.0000, 0.9990, 0.9986, 0.9985, 0.9987, 1); }
:root[data-mc-personality="calm"] {
  --mc-tempo: 0.7; --mc-energy: 0.6; --mc-bounce-cap: 0;
  --dur-0: 0ms; --dur-100: 70ms; --dur-125: 88ms; --dur-150: 105ms; --dur-200: 140ms; --dur-250: 175ms; --dur-300: 210ms; --dur-400: 280ms; --dur-500: 350ms; --dur-600: 420ms; --dur-800: 560ms; --stagger-item: 35ms; --stagger-group: 70ms; --stagger-word: 56ms; --stagger-line: 70ms; --stagger-char: 21ms; --stagger-cap: 420ms; --spring-default-dur: 336ms; --spring-smooth-dur: 560ms; --spring-snappy-dur: 560ms; --spring-gesture-dur: 560ms; --spring-playful-dur: 560ms; --spring-sheet-dur: 582ms; --spring-morph-dur: 504ms; --spring-press-dur: 280ms;
  --spring-default: var(--spring-smooth-base); --spring-default-dur: 560ms;
  --spring-snappy: var(--spring-default-base); --spring-snappy-dur: 336ms;
  --spring-playful: var(--spring-smooth-base); --spring-playful-dur: 560ms;
  --spring-gesture: var(--spring-default-base); --spring-gesture-dur: 336ms;
}
:root[data-mc-personality="product"] {
  --mc-tempo: 1; --mc-energy: 1; --mc-bounce-cap: 0;
}
:root[data-mc-personality="showcase"] {
  --mc-tempo: 1.25; --mc-energy: 1.15; --mc-bounce-cap: 0.15;
  --dur-0: 0ms; --dur-100: 125ms; --dur-125: 156ms; --dur-150: 188ms; --dur-200: 250ms; --dur-250: 312ms; --dur-300: 375ms; --dur-400: 500ms; --dur-500: 625ms; --dur-600: 750ms; --dur-800: 1000ms; --stagger-item: 62ms; --stagger-group: 125ms; --stagger-word: 100ms; --stagger-line: 125ms; --stagger-char: 38ms; --stagger-cap: 750ms; --spring-default-dur: 600ms; --spring-smooth-dur: 1000ms; --spring-snappy-dur: 1000ms; --spring-gesture-dur: 1000ms; --spring-playful-dur: 1000ms; --spring-sheet-dur: 1040ms; --spring-morph-dur: 900ms; --spring-press-dur: 500ms;
  --spring-default: var(--spring-snappy-base); --spring-default-dur: 1000ms;
}
:root[data-mc-personality="playful"] {
  --mc-tempo: 1.4; --mc-energy: 1.3; --mc-bounce-cap: 0.3;
  --dur-0: 0ms; --dur-100: 140ms; --dur-125: 175ms; --dur-150: 210ms; --dur-200: 280ms; --dur-250: 350ms; --dur-300: 420ms; --dur-400: 560ms; --dur-500: 700ms; --dur-600: 840ms; --dur-800: 1120ms; --stagger-item: 70ms; --stagger-group: 140ms; --stagger-word: 112ms; --stagger-line: 140ms; --stagger-char: 42ms; --stagger-cap: 840ms; --spring-default-dur: 672ms; --spring-smooth-dur: 1120ms; --spring-snappy-dur: 1120ms; --spring-gesture-dur: 1120ms; --spring-playful-dur: 1120ms; --spring-sheet-dur: 1165ms; --spring-morph-dur: 1008ms; --spring-press-dur: 560ms;
  --spring-default: var(--spring-snappy-base); --spring-default-dur: 1120ms;
  --spring-snappy: var(--spring-playful-base); --spring-snappy-dur: 1120ms;
}
/* product ruleset entries put data-mc-ruleset="product" on their root: personality can shorten them, never lengthen past 300 ms or add overshoot */
[data-mc-ruleset="product"] {
  --dur-0: min(calc(0ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-100: min(calc(100ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-125: min(calc(125ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-150: min(calc(150ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-200: min(calc(200ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-250: min(calc(250ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-300: min(calc(300ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 300ms);
  --dur-400: min(calc(400ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 400ms);
  --dur-500: min(calc(500ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 500ms);
  --dur-600: min(calc(600ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 600ms);
  --dur-800: min(calc(800ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 800ms);
  --stagger-item: min(calc(50ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 50ms);
  --stagger-group: min(calc(100ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 100ms);
  --stagger-word: min(calc(80ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 80ms);
  --stagger-line: min(calc(100ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 100ms);
  --stagger-char: min(calc(30ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 30ms);
  --stagger-cap: min(calc(600ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 600ms);
  --spring-default-dur: min(calc(480ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 480ms);
  --spring-smooth-dur: min(calc(800ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 800ms);
  --spring-snappy-dur: min(calc(800ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 800ms);
  --spring-gesture-dur: min(calc(800ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 800ms);
  --spring-playful-dur: min(calc(800ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 800ms);
  --spring-sheet-dur: min(calc(832ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 832ms);
  --spring-morph-dur: min(calc(720ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 720ms);
  --spring-press-dur: min(calc(400ms * var(--mc-tempo) / max(var(--mc-speed, 1), 0.25)), 400ms);
  --spring-default: var(--spring-default-base); --spring-smooth: var(--spring-smooth-base); --spring-snappy: var(--spring-snappy-base); --spring-gesture: var(--spring-gesture-base); --spring-playful: var(--spring-playful-base); --spring-sheet: var(--spring-sheet-base); --spring-morph: var(--spring-morph-base); --spring-press: var(--spring-press-base);
}
/* v4 motion settings: --mc-speed (duration ÷ speed, 0.25–1+) and --mc-intensity (× travel), applied once written on <html> */
:root { --mc-speed: 1; --mc-intensity: 1; }
@media not (prefers-reduced-motion: reduce) {
  :root:is([style*="--mc-speed"], [style*="--mc-intensity"], [data-mc-speed]):not([data-mc-motion="reduce"]):not([data-mc-motion="none"]) {
    --dur-0: calc(0ms / max(var(--mc-speed, 1), 0.25)); --dur-100: calc(100ms / max(var(--mc-speed, 1), 0.25)); --dur-125: calc(125ms / max(var(--mc-speed, 1), 0.25)); --dur-150: calc(150ms / max(var(--mc-speed, 1), 0.25)); --dur-200: calc(200ms / max(var(--mc-speed, 1), 0.25)); --dur-250: calc(250ms / max(var(--mc-speed, 1), 0.25)); --dur-300: calc(300ms / max(var(--mc-speed, 1), 0.25)); --dur-400: calc(400ms / max(var(--mc-speed, 1), 0.25)); --dur-500: calc(500ms / max(var(--mc-speed, 1), 0.25)); --dur-600: calc(600ms / max(var(--mc-speed, 1), 0.25)); --dur-800: calc(800ms / max(var(--mc-speed, 1), 0.25)); --stagger-item: calc(50ms / max(var(--mc-speed, 1), 0.25)); --stagger-group: calc(100ms / max(var(--mc-speed, 1), 0.25)); --stagger-word: calc(80ms / max(var(--mc-speed, 1), 0.25)); --stagger-line: calc(100ms / max(var(--mc-speed, 1), 0.25)); --stagger-char: calc(30ms / max(var(--mc-speed, 1), 0.25)); --stagger-cap: calc(600ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(480ms / max(var(--mc-speed, 1), 0.25)); --spring-smooth-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-sheet-dur: calc(832ms / max(var(--mc-speed, 1), 0.25)); --spring-morph-dur: calc(720ms / max(var(--mc-speed, 1), 0.25)); --spring-press-dur: calc(400ms / max(var(--mc-speed, 1), 0.25));
    --travel-enter: calc(12px * var(--mc-intensity)); --travel-lift: calc(2px * var(--mc-intensity)); --travel-stack: calc(14px * var(--mc-intensity)); --travel-page: calc(24px * var(--mc-intensity));
  }
  :root[data-mc-personality="calm"]:is([style*="--mc-speed"], [style*="--mc-intensity"], [data-mc-speed]):not([data-mc-motion="reduce"]):not([data-mc-motion="none"]) {
    --dur-0: calc(0ms / max(var(--mc-speed, 1), 0.25)); --dur-100: calc(70ms / max(var(--mc-speed, 1), 0.25)); --dur-125: calc(88ms / max(var(--mc-speed, 1), 0.25)); --dur-150: calc(105ms / max(var(--mc-speed, 1), 0.25)); --dur-200: calc(140ms / max(var(--mc-speed, 1), 0.25)); --dur-250: calc(175ms / max(var(--mc-speed, 1), 0.25)); --dur-300: calc(210ms / max(var(--mc-speed, 1), 0.25)); --dur-400: calc(280ms / max(var(--mc-speed, 1), 0.25)); --dur-500: calc(350ms / max(var(--mc-speed, 1), 0.25)); --dur-600: calc(420ms / max(var(--mc-speed, 1), 0.25)); --dur-800: calc(560ms / max(var(--mc-speed, 1), 0.25)); --stagger-item: calc(35ms / max(var(--mc-speed, 1), 0.25)); --stagger-group: calc(70ms / max(var(--mc-speed, 1), 0.25)); --stagger-word: calc(56ms / max(var(--mc-speed, 1), 0.25)); --stagger-line: calc(70ms / max(var(--mc-speed, 1), 0.25)); --stagger-char: calc(21ms / max(var(--mc-speed, 1), 0.25)); --stagger-cap: calc(420ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(336ms / max(var(--mc-speed, 1), 0.25)); --spring-smooth-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-sheet-dur: calc(582ms / max(var(--mc-speed, 1), 0.25)); --spring-morph-dur: calc(504ms / max(var(--mc-speed, 1), 0.25)); --spring-press-dur: calc(280ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(336ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(336ms / max(var(--mc-speed, 1), 0.25));
  }
  :root[data-mc-personality="product"]:is([style*="--mc-speed"], [style*="--mc-intensity"], [data-mc-speed]):not([data-mc-motion="reduce"]):not([data-mc-motion="none"]) {
    --dur-0: calc(0ms / max(var(--mc-speed, 1), 0.25)); --dur-100: calc(100ms / max(var(--mc-speed, 1), 0.25)); --dur-125: calc(125ms / max(var(--mc-speed, 1), 0.25)); --dur-150: calc(150ms / max(var(--mc-speed, 1), 0.25)); --dur-200: calc(200ms / max(var(--mc-speed, 1), 0.25)); --dur-250: calc(250ms / max(var(--mc-speed, 1), 0.25)); --dur-300: calc(300ms / max(var(--mc-speed, 1), 0.25)); --dur-400: calc(400ms / max(var(--mc-speed, 1), 0.25)); --dur-500: calc(500ms / max(var(--mc-speed, 1), 0.25)); --dur-600: calc(600ms / max(var(--mc-speed, 1), 0.25)); --dur-800: calc(800ms / max(var(--mc-speed, 1), 0.25)); --stagger-item: calc(50ms / max(var(--mc-speed, 1), 0.25)); --stagger-group: calc(100ms / max(var(--mc-speed, 1), 0.25)); --stagger-word: calc(80ms / max(var(--mc-speed, 1), 0.25)); --stagger-line: calc(100ms / max(var(--mc-speed, 1), 0.25)); --stagger-char: calc(30ms / max(var(--mc-speed, 1), 0.25)); --stagger-cap: calc(600ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(480ms / max(var(--mc-speed, 1), 0.25)); --spring-smooth-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(800ms / max(var(--mc-speed, 1), 0.25)); --spring-sheet-dur: calc(832ms / max(var(--mc-speed, 1), 0.25)); --spring-morph-dur: calc(720ms / max(var(--mc-speed, 1), 0.25)); --spring-press-dur: calc(400ms / max(var(--mc-speed, 1), 0.25));
  }
  :root[data-mc-personality="showcase"]:is([style*="--mc-speed"], [style*="--mc-intensity"], [data-mc-speed]):not([data-mc-motion="reduce"]):not([data-mc-motion="none"]) {
    --dur-0: calc(0ms / max(var(--mc-speed, 1), 0.25)); --dur-100: calc(125ms / max(var(--mc-speed, 1), 0.25)); --dur-125: calc(156ms / max(var(--mc-speed, 1), 0.25)); --dur-150: calc(188ms / max(var(--mc-speed, 1), 0.25)); --dur-200: calc(250ms / max(var(--mc-speed, 1), 0.25)); --dur-250: calc(312ms / max(var(--mc-speed, 1), 0.25)); --dur-300: calc(375ms / max(var(--mc-speed, 1), 0.25)); --dur-400: calc(500ms / max(var(--mc-speed, 1), 0.25)); --dur-500: calc(625ms / max(var(--mc-speed, 1), 0.25)); --dur-600: calc(750ms / max(var(--mc-speed, 1), 0.25)); --dur-800: calc(1000ms / max(var(--mc-speed, 1), 0.25)); --stagger-item: calc(62ms / max(var(--mc-speed, 1), 0.25)); --stagger-group: calc(125ms / max(var(--mc-speed, 1), 0.25)); --stagger-word: calc(100ms / max(var(--mc-speed, 1), 0.25)); --stagger-line: calc(125ms / max(var(--mc-speed, 1), 0.25)); --stagger-char: calc(38ms / max(var(--mc-speed, 1), 0.25)); --stagger-cap: calc(750ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(600ms / max(var(--mc-speed, 1), 0.25)); --spring-smooth-dur: calc(1000ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(1000ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(1000ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(1000ms / max(var(--mc-speed, 1), 0.25)); --spring-sheet-dur: calc(1040ms / max(var(--mc-speed, 1), 0.25)); --spring-morph-dur: calc(900ms / max(var(--mc-speed, 1), 0.25)); --spring-press-dur: calc(500ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(1000ms / max(var(--mc-speed, 1), 0.25));
  }
  :root[data-mc-personality="playful"]:is([style*="--mc-speed"], [style*="--mc-intensity"], [data-mc-speed]):not([data-mc-motion="reduce"]):not([data-mc-motion="none"]) {
    --dur-0: calc(0ms / max(var(--mc-speed, 1), 0.25)); --dur-100: calc(140ms / max(var(--mc-speed, 1), 0.25)); --dur-125: calc(175ms / max(var(--mc-speed, 1), 0.25)); --dur-150: calc(210ms / max(var(--mc-speed, 1), 0.25)); --dur-200: calc(280ms / max(var(--mc-speed, 1), 0.25)); --dur-250: calc(350ms / max(var(--mc-speed, 1), 0.25)); --dur-300: calc(420ms / max(var(--mc-speed, 1), 0.25)); --dur-400: calc(560ms / max(var(--mc-speed, 1), 0.25)); --dur-500: calc(700ms / max(var(--mc-speed, 1), 0.25)); --dur-600: calc(840ms / max(var(--mc-speed, 1), 0.25)); --dur-800: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --stagger-item: calc(70ms / max(var(--mc-speed, 1), 0.25)); --stagger-group: calc(140ms / max(var(--mc-speed, 1), 0.25)); --stagger-word: calc(112ms / max(var(--mc-speed, 1), 0.25)); --stagger-line: calc(140ms / max(var(--mc-speed, 1), 0.25)); --stagger-char: calc(42ms / max(var(--mc-speed, 1), 0.25)); --stagger-cap: calc(840ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(672ms / max(var(--mc-speed, 1), 0.25)); --spring-smooth-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --spring-gesture-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --spring-playful-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --spring-sheet-dur: calc(1165ms / max(var(--mc-speed, 1), 0.25)); --spring-morph-dur: calc(1008ms / max(var(--mc-speed, 1), 0.25)); --spring-press-dur: calc(560ms / max(var(--mc-speed, 1), 0.25)); --spring-default-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25)); --spring-snappy-dur: calc(1120ms / max(var(--mc-speed, 1), 0.25));
  }
}
@media (prefers-reduced-motion: reduce) {
  :root, :root[data-mc-personality], [data-mc-ruleset] {
    /* motion becomes a short crossfade (≤ 200 ms); entries must also drop transforms */
    --dur-100: 0ms; --dur-125: 0ms; --dur-150: 120ms; --dur-200: 150ms; --dur-250: 150ms; --dur-300: 180ms; --dur-400: 200ms; --dur-500: 200ms; --dur-600: 200ms; --dur-800: 200ms;
    --spring-default: ease-out; --spring-smooth: ease-out; --spring-snappy: ease-out; --spring-gesture: ease-out; --spring-playful: ease-out; --spring-sheet: ease-out;
    --spring-default-dur: 150ms; --spring-smooth-dur: 180ms; --spring-snappy-dur: 180ms; --spring-gesture-dur: 180ms; --spring-playful-dur: 180ms; --spring-sheet-dur: 180ms;
    --scale-press: 1; --scale-enter: 1; --scale-icon-from: 1; --scale-stack-step: 0; --scale-card-back: 1;
    --travel-enter: 0px; --travel-lift: 0px; --travel-stack: 0px; --travel-page: 0px;
    --blur-crossfade: 0px; --blur-text-in: 0px; /* --blur-depth-cap stays: depth blur is static, not motion */
    --stagger-item: 0ms; --stagger-group: 0ms; --stagger-word: 0ms; --stagger-line: 0ms; --stagger-char: 0ms;
    --gesture-magnet-strength: 0; --gesture-tilt-cap: 0;
  }
}
/* forced reduced motion: <html data-mc-motion="reduce"> (kinetic.prefs() reports it too) */
:root[data-mc-motion="reduce"], :root[data-mc-motion="reduce"] [data-mc-ruleset] {
    /* motion becomes a short crossfade (≤ 200 ms); entries must also drop transforms */
    --dur-100: 0ms; --dur-125: 0ms; --dur-150: 120ms; --dur-200: 150ms; --dur-250: 150ms; --dur-300: 180ms; --dur-400: 200ms; --dur-500: 200ms; --dur-600: 200ms; --dur-800: 200ms;
    --spring-default: ease-out; --spring-smooth: ease-out; --spring-snappy: ease-out; --spring-gesture: ease-out; --spring-playful: ease-out; --spring-sheet: ease-out;
    --spring-default-dur: 150ms; --spring-smooth-dur: 180ms; --spring-snappy-dur: 180ms; --spring-gesture-dur: 180ms; --spring-playful-dur: 180ms; --spring-sheet-dur: 180ms;
    --scale-press: 1; --scale-enter: 1; --scale-icon-from: 1; --scale-stack-step: 0; --scale-card-back: 1;
    --travel-enter: 0px; --travel-lift: 0px; --travel-stack: 0px; --travel-page: 0px;
    --blur-crossfade: 0px; --blur-text-in: 0px; /* --blur-depth-cap stays: depth blur is static, not motion */
    --stagger-item: 0ms; --stagger-group: 0ms; --stagger-word: 0ms; --stagger-line: 0ms; --stagger-char: 0ms;
    --gesture-magnet-strength: 0; --gesture-tilt-cap: 0;
}
/* motion "none" (explicit choice only, never inferred): every duration, stagger, travel and blur is zero; state lands in one frame */
:root[data-mc-motion="none"], :root[data-mc-motion="none"] [data-mc-ruleset] {
  --dur-0: 0ms; --dur-100: 0ms; --dur-125: 0ms; --dur-150: 0ms; --dur-200: 0ms; --dur-250: 0ms; --dur-300: 0ms; --dur-400: 0ms; --dur-500: 0ms; --dur-600: 0ms; --dur-800: 0ms; --stagger-item: 0ms; --stagger-group: 0ms; --stagger-word: 0ms; --stagger-line: 0ms; --stagger-char: 0ms; --stagger-cap: 0ms; --spring-default-dur: 0ms; --spring-smooth-dur: 0ms; --spring-snappy-dur: 0ms; --spring-gesture-dur: 0ms; --spring-playful-dur: 0ms; --spring-sheet-dur: 0ms; --spring-morph-dur: 0ms; --spring-press-dur: 0ms; --spring-m3-spatial-fast-dur: 0ms; --spring-m3-spatial-default-dur: 0ms; --spring-m3-spatial-slow-dur: 0ms; --spring-m3-effects-fast-dur: 0ms; --spring-m3-effects-default-dur: 0ms; --spring-m3-effects-slow-dur: 0ms; --travel-enter: 0px; --travel-lift: 0px; --travel-stack: 0px; --travel-page: 0px; --blur-crossfade: 0px; --blur-text-in: 0px; --blur-depth-cap: 0px;
  --mc-tempo: 0;
}
