@qpmtx/tokens 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -0
- package/dist/css-var.d.ts +28 -0
- package/dist/css-var.d.ts.map +1 -0
- package/dist/css-var.js +17 -0
- package/dist/groups/colors-and-gradients.d.ts +646 -0
- package/dist/groups/colors-and-gradients.d.ts.map +1 -0
- package/dist/groups/colors-and-gradients.js +644 -0
- package/dist/groups/elevation-and-glow-shadows.d.ts +107 -0
- package/dist/groups/elevation-and-glow-shadows.d.ts.map +1 -0
- package/dist/groups/elevation-and-glow-shadows.js +105 -0
- package/dist/groups/motion-and-zindex.d.ts +137 -0
- package/dist/groups/motion-and-zindex.d.ts.map +1 -0
- package/dist/groups/motion-and-zindex.js +135 -0
- package/dist/groups/radius.d.ts +47 -0
- package/dist/groups/radius.d.ts.map +1 -0
- package/dist/groups/radius.js +45 -0
- package/dist/groups/spacing-and-layout.d.ts +157 -0
- package/dist/groups/spacing-and-layout.d.ts.map +1 -0
- package/dist/groups/spacing-and-layout.js +155 -0
- package/dist/groups/typography.d.ts +402 -0
- package/dist/groups/typography.d.ts.map +1 -0
- package/dist/groups/typography.js +400 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/package.json +34 -0
- package/tokens.css +248 -0
package/tokens.css
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
@qpmtx/tokens — QPMatrix Design System CSS tokens
|
|
3
|
+
Verbatim transcription of the owner's design source:
|
|
4
|
+
six :root{} blocks (dark = default) + [data-theme="light"]
|
|
5
|
+
override block + qp-* keyframes/utility classes + the
|
|
6
|
+
prefers-reduced-motion guard.
|
|
7
|
+
Do not hand-edit — regenerate from the live design source per
|
|
8
|
+
packages/.agents/skills/tokens/SKILL.md. Values must stay
|
|
9
|
+
byte-exact with the owner's export. This file is excluded from
|
|
10
|
+
Prettier (see .prettierignore) so formatting never rewrites it.
|
|
11
|
+
============================================================ */
|
|
12
|
+
|
|
13
|
+
/* ---- Block 1 — Raw color ramps, gradients, glow palette, semantic tokens (DARK MODE / default :root) (byte offset 2044460) ---- */
|
|
14
|
+
:root{
|
|
15
|
+
/* Exactly the ramp from the brand prompt. 700/600/500 are the prompt's border + text greys. */
|
|
16
|
+
--graphite-0:#FFFFFF;--graphite-50:#F8FAFC;--graphite-100:#F1F5F9;--graphite-200:#E2E8F0;
|
|
17
|
+
--graphite-300:#CBD5E1;--graphite-400:#94A3B8;--graphite-500:#64748B;--graphite-600:#46536A;
|
|
18
|
+
--graphite-700:#2B3442;--graphite-800:#222A36;--graphite-850:#1A202B;
|
|
19
|
+
--graphite-900:#121722;--graphite-950:#0D1117;--graphite-1000:#070A0F;
|
|
20
|
+
|
|
21
|
+
--violet-300:#C4B5FD;--violet-400:#A78BFA;--violet-500:#8B5CF6;--violet-600:#7C3AED;
|
|
22
|
+
--violet-700:#6426C7;--violet-800:#4C1D95;--violet-900:#32106D;--violet-950:#210B4B;
|
|
23
|
+
|
|
24
|
+
--cyan-300:#67E8F9;--cyan-400:#22D3EE;--cyan-500:#06B6D4;--cyan-600:#0891B2;
|
|
25
|
+
--cyan-700:#0E7490;--cyan-800:#155E75;--cyan-900:#083344;
|
|
26
|
+
|
|
27
|
+
--blue-400:#60A5FA;--blue-500:#3B82F6;--blue-600:#2563EB;--blue-700:#1D4ED8;
|
|
28
|
+
|
|
29
|
+
--green-400:#4ADE94;--green-500:#2FBF71;--green-600:#1F9C58;
|
|
30
|
+
--amber-400:#FFC24D;--amber-500:#F5A623;--amber-600:#CC8412;
|
|
31
|
+
--red-400:#FF7285;--red-500:#F0475B;--red-600:#C8283C;
|
|
32
|
+
|
|
33
|
+
/* ===== Approved gradients (the ONLY gradients — from the brand prompt) ===== */
|
|
34
|
+
--gradient-brand:linear-gradient(135deg,#7C3AED 0%,#8B5CF6 38%,#22D3EE 100%); /* @kind color */
|
|
35
|
+
--gradient-surface:linear-gradient(145deg,#1A202B 0%,#0D1117 55%,#070A0F 100%); /* @kind color */
|
|
36
|
+
--gradient-violet:linear-gradient(135deg,#32106D 0%,#6426C7 50%,#A78BFA 100%); /* @kind color */
|
|
37
|
+
--gradient-hero-glow:radial-gradient(60% 60% at 50% 0%,rgba(124,58,237,0.30) 0%,rgba(34,211,238,0.10) 45%,rgba(7,10,15,0) 80%); /* @kind color */
|
|
38
|
+
--gradient-card-selected:linear-gradient(180deg,rgba(139,92,246,0.16) 0%,rgba(139,92,246,0.02) 100%); /* @kind color */
|
|
39
|
+
|
|
40
|
+
/* ===== Glow palette (from the brand prompt) ===== */
|
|
41
|
+
--glow-violet:rgba(124,58,237,0.45); /* @kind color */
|
|
42
|
+
--glow-violet-strong:rgba(139,92,246,0.65); /* @kind color */
|
|
43
|
+
--glow-cyan:rgba(34,211,238,0.40); /* @kind color */
|
|
44
|
+
--glow-blue:rgba(59,130,246,0.30); /* @kind color */
|
|
45
|
+
--glow-white:rgba(248,250,252,0.12); /* @kind color */
|
|
46
|
+
|
|
47
|
+
/* ===== Semantic tokens — DARK MODE (primary brand expression, default) ===== */
|
|
48
|
+
--bg-canvas:var(--graphite-1000);--bg-subtle:var(--graphite-950);--bg-elevated:var(--graphite-900);
|
|
49
|
+
--bg-overlay:rgba(7,10,15,0.75);--bg-inverse:var(--graphite-50);
|
|
50
|
+
|
|
51
|
+
--surface-primary:var(--graphite-900);--surface-secondary:var(--graphite-850);--surface-tertiary:var(--graphite-800);
|
|
52
|
+
--surface-interactive:var(--graphite-800);--surface-selected:rgba(139,92,246,0.14);--surface-disabled:var(--graphite-850);
|
|
53
|
+
|
|
54
|
+
--fg-primary:var(--graphite-50);--fg-secondary:var(--graphite-300);--fg-muted:var(--graphite-400);
|
|
55
|
+
--fg-subtle:var(--graphite-500);/* 3.4:1 — placeholders & decorative ONLY, never readable text */--fg-inverse:var(--graphite-950);--fg-disabled:var(--graphite-600);
|
|
56
|
+
|
|
57
|
+
--border-subtle:var(--graphite-700);--border-default:var(--graphite-700);--border-strong:var(--graphite-600);
|
|
58
|
+
--border-interactive:var(--violet-600);--border-selected:var(--violet-500);--border-focus:var(--violet-400);
|
|
59
|
+
|
|
60
|
+
--brand-primary:var(--violet-500);--brand-strong:var(--violet-600);--brand-subtle:rgba(139,92,246,0.12);
|
|
61
|
+
--brand-foreground:var(--graphite-50);--brand-glow:var(--glow-violet);
|
|
62
|
+
|
|
63
|
+
--signal-live:var(--cyan-400);--signal-processing:var(--violet-400);--signal-connected:var(--cyan-500);
|
|
64
|
+
|
|
65
|
+
--status-success:var(--green-500);--status-warning:var(--amber-500);--status-error:var(--red-500);
|
|
66
|
+
--status-info:var(--blue-500);--status-offline:var(--graphite-500);
|
|
67
|
+
|
|
68
|
+
--status-success-bg:rgba(47,191,113,0.12);--status-warning-bg:rgba(245,166,35,0.12);
|
|
69
|
+
--status-error-bg:rgba(240,71,91,0.12);--status-info-bg:rgba(59,130,246,0.12);--status-offline-bg:rgba(100,116,139,0.14);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ---- Block 2 — Typography (font families, weights, full type scale, script adjustments) (byte offset 2050288) ---- */
|
|
73
|
+
:root{
|
|
74
|
+
--font-display:"Space Grotesk",ui-sans-serif,system-ui,sans-serif;
|
|
75
|
+
--font-sans:"IBM Plex Sans","IBM Plex Sans Arabic","IBM Plex Sans Hebrew",ui-sans-serif,system-ui,-apple-system,sans-serif;
|
|
76
|
+
--font-arabic:"IBM Plex Sans Arabic","IBM Plex Sans",ui-sans-serif,system-ui,sans-serif;
|
|
77
|
+
--font-hebrew:"IBM Plex Sans Hebrew","IBM Plex Sans",ui-sans-serif,system-ui,sans-serif;
|
|
78
|
+
--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
|
|
79
|
+
|
|
80
|
+
/* weights */
|
|
81
|
+
--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;
|
|
82
|
+
|
|
83
|
+
/* ---------- TYPE SCALE ---------- size / line-height / weight / tracking ---------- */
|
|
84
|
+
--text-display-lg-size:64px;--text-display-lg-lh:1.05;--text-display-lg-weight:600;--text-display-lg-tracking:-0.02em;
|
|
85
|
+
--text-display-md-size:44px;--text-display-md-lh:1.10;--text-display-md-weight:600;--text-display-md-tracking:-0.015em;
|
|
86
|
+
|
|
87
|
+
--text-h1-size:34px;--text-h1-lh:1.18;--text-h1-weight:600;--text-h1-tracking:-0.01em;
|
|
88
|
+
--text-h2-size:27px;--text-h2-lh:1.22;--text-h2-weight:600;--text-h2-tracking:-0.01em;
|
|
89
|
+
--text-h3-size:22px;--text-h3-lh:1.28;--text-h3-weight:600;--text-h3-tracking:0em;
|
|
90
|
+
--text-h4-size:18px;--text-h4-lh:1.32;--text-h4-weight:600;--text-h4-tracking:0em;
|
|
91
|
+
|
|
92
|
+
--text-body-lg-size:17px;--text-body-lg-lh:1.60;--text-body-lg-weight:400;--text-body-lg-tracking:0em;
|
|
93
|
+
--text-body-size:15px;--text-body-lh:1.60;--text-body-weight:400;--text-body-tracking:0em;
|
|
94
|
+
--text-body-sm-size:13px;--text-body-sm-lh:1.55;--text-body-sm-weight:400;--text-body-sm-tracking:0em;
|
|
95
|
+
|
|
96
|
+
--text-label-lg-size:15px;--text-label-lg-lh:1.30;--text-label-lg-weight:500;--text-label-lg-tracking:0em;
|
|
97
|
+
--text-label-size:13px;--text-label-lh:1.30;--text-label-weight:500;--text-label-tracking:0.005em;
|
|
98
|
+
--text-label-sm-size:12px;--text-label-sm-lh:1.30;--text-label-sm-weight:500;--text-label-sm-tracking:0.01em;
|
|
99
|
+
|
|
100
|
+
--text-caption-size:12px;--text-caption-lh:1.40;--text-caption-weight:400;--text-caption-tracking:0.01em;
|
|
101
|
+
--text-code-size:13px;--text-code-lh:1.60;--text-code-weight:400;--text-code-tracking:0em;
|
|
102
|
+
|
|
103
|
+
--text-metric-lg-size:40px;--text-metric-lg-lh:1.00;--text-metric-lg-weight:600;--text-metric-lg-tracking:-0.01em;
|
|
104
|
+
--text-metric-compact-size:22px;--text-metric-compact-lh:1.10;--text-metric-compact-weight:600;--text-metric-compact-tracking:-0.005em;
|
|
105
|
+
|
|
106
|
+
/* ---------- SCRIPT ADJUSTMENTS ----------
|
|
107
|
+
Arabic and Hebrew have taller x-height and no capital forms: they read smaller
|
|
108
|
+
at the same px, and Arabic needs more leading for its descenders/diacritics. */
|
|
109
|
+
--script-arabic-size-adjust:1.06; /* multiply Latin px by this for Arabic */
|
|
110
|
+
--script-arabic-lh-adjust:1.12; /* @kind other */
|
|
111
|
+
--script-hebrew-size-adjust:1.02;
|
|
112
|
+
--script-hebrew-lh-adjust:1.06; /* @kind other */
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/* ---- Block 3 — Spacing scale + layout tokens (page gutter, section spacing, card padding, nav, content widths) (byte offset 2054096) ---- */
|
|
116
|
+
:root{
|
|
117
|
+
--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;
|
|
118
|
+
--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;
|
|
119
|
+
|
|
120
|
+
/* comfortable = marketing/docs, compact = operational dashboards — never reuse comfortable inside dense tables */
|
|
121
|
+
--page-gutter-comfortable:var(--space-8);--page-gutter-compact:var(--space-5);
|
|
122
|
+
--section-spacing-comfortable:var(--space-24);--section-spacing-compact:var(--space-10);
|
|
123
|
+
--card-padding-comfortable:var(--space-6);--card-padding-compact:var(--space-4);
|
|
124
|
+
--form-field-spacing:var(--space-4);--table-row-height-comfortable:52px;--table-row-height-compact:36px;
|
|
125
|
+
--nav-height:60px;--nav-rail-width:240px;--nav-rail-width-collapsed:64px;
|
|
126
|
+
|
|
127
|
+
--content-width-marketing:1200px;--content-width-docs:840px;--content-width-dashboard:1440px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* ---- Block 4 — Border radius scale (byte offset 2054976) ---- */
|
|
131
|
+
:root{
|
|
132
|
+
--radius-none:0px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:20px;--radius-full:999px;
|
|
133
|
+
/* usage: sm = tags/small inputs/code chips · md = buttons/inputs/compact cards · lg = primary cards/dialogs/panels
|
|
134
|
+
xl = marketing sections/hero artwork · full = avatars/status dots. Infra/technical components skew toward sm/md. */
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* ---- Block 5 — Elevation (box-shadow) presets + glow/shadow effects (byte offset 2055338) ---- */
|
|
138
|
+
:root{
|
|
139
|
+
/* depth = surface contrast + hairline border + restrained ambient light */
|
|
140
|
+
--elevation-flat:none;
|
|
141
|
+
--elevation-interactive:0 1px 2px rgba(0,0,0,0.35);
|
|
142
|
+
--elevation-raised:0 4px 14px rgba(0,0,0,0.40);
|
|
143
|
+
--elevation-sticky-nav:0 1px 0 var(--border-subtle);
|
|
144
|
+
--elevation-menu:0 10px 30px rgba(0,0,0,0.50),0 0 0 1px var(--border-subtle);
|
|
145
|
+
--elevation-popover:0 10px 30px rgba(0,0,0,0.50),0 0 0 1px var(--border-subtle);
|
|
146
|
+
--elevation-drawer:-10px 0 40px rgba(0,0,0,0.55);
|
|
147
|
+
--elevation-dialog:0 24px 64px rgba(0,0,0,0.62),0 0 0 1px var(--border-subtle);
|
|
148
|
+
--elevation-critical:0 24px 64px rgba(0,0,0,0.66),0 0 0 1px var(--status-error);
|
|
149
|
+
|
|
150
|
+
/* glow — logos, hero artwork, active nodes, live indicators, AI processing, focus. NOT every button. */
|
|
151
|
+
--glow-brand-subtle:0 0 0 1px var(--border-interactive),0 0 18px var(--glow-violet);
|
|
152
|
+
--glow-brand-medium:0 0 0 1px var(--border-selected),0 0 32px var(--glow-violet-strong);
|
|
153
|
+
--glow-brand-hero:0 0 60px var(--glow-violet-strong),0 0 120px var(--glow-violet);
|
|
154
|
+
--glow-signal:0 0 14px var(--glow-cyan);
|
|
155
|
+
--glow-signal-strong:0 0 26px var(--glow-cyan),0 0 60px rgba(34,211,238,0.18);
|
|
156
|
+
--glow-focus:0 0 0 2px var(--bg-canvas),0 0 0 4px var(--border-focus),0 0 18px var(--glow-violet);
|
|
157
|
+
--glow-success:0 0 14px rgba(47,191,113,0.34);
|
|
158
|
+
--glow-error:0 0 14px rgba(240,71,91,0.34);
|
|
159
|
+
--glow-white-edge:inset 0 1px 0 var(--glow-white);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* ---- Block 6 — Motion (durations, easings, framer-motion spring mirror), breakpoints, z-index scale (byte offset 2056758) ---- */
|
|
163
|
+
:root{
|
|
164
|
+
/* durations — slow, precise, professional (never playful) */
|
|
165
|
+
--duration-instant:80ms; /* @kind other */
|
|
166
|
+
--duration-fast:160ms; /* @kind other */
|
|
167
|
+
--duration-standard:280ms; /* @kind other */
|
|
168
|
+
--duration-slow:450ms; /* @kind other */
|
|
169
|
+
--duration-ambient:2400ms; /* @kind other */
|
|
170
|
+
--duration-flow:3600ms; /* @kind other */
|
|
171
|
+
|
|
172
|
+
/* easings — architectural, no overshoot, no bounce */
|
|
173
|
+
--ease-standard:cubic-bezier(0.22,1,0.36,1); /* @kind other */
|
|
174
|
+
--ease-out:cubic-bezier(0.16,1,0.3,1); /* @kind other */
|
|
175
|
+
--ease-in:cubic-bezier(0.4,0,1,1); /* @kind other */
|
|
176
|
+
--ease-inout:cubic-bezier(0.65,0,0.35,1); /* @kind other */
|
|
177
|
+
|
|
178
|
+
/* framer-motion mirror values — keep JS and CSS in sync */
|
|
179
|
+
--spring-stiffness:260; /* @kind other */
|
|
180
|
+
--spring-damping:30; /* @kind other */
|
|
181
|
+
|
|
182
|
+
--breakpoint-mobile:480px;--breakpoint-tablet:768px;--breakpoint-laptop:1024px;--breakpoint-desktop:1440px;--breakpoint-wide:1920px;
|
|
183
|
+
|
|
184
|
+
--z-nav:100; /* @kind other */
|
|
185
|
+
--z-dropdown:200; /* @kind other */
|
|
186
|
+
--z-drawer:300; /* @kind other */
|
|
187
|
+
--z-overlay:400; /* @kind other */
|
|
188
|
+
--z-dialog:500; /* @kind other */
|
|
189
|
+
--z-toast:600; /* @kind other */
|
|
190
|
+
--z-critical:700; /* @kind other */
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/* ---- LIGHT MODE semantic token overrides (byte offset 2048248) ---- */
|
|
194
|
+
[data-theme="light"]{
|
|
195
|
+
--bg-canvas:var(--graphite-100);--bg-subtle:var(--graphite-50);--bg-elevated:var(--graphite-0);
|
|
196
|
+
--bg-overlay:rgba(13,17,23,0.40);--bg-inverse:var(--graphite-950);
|
|
197
|
+
|
|
198
|
+
--surface-primary:var(--graphite-0);--surface-secondary:var(--graphite-100);--surface-tertiary:var(--graphite-200);
|
|
199
|
+
--surface-interactive:var(--graphite-200);--surface-selected:rgba(124,58,237,0.08);--surface-disabled:var(--graphite-200);
|
|
200
|
+
|
|
201
|
+
--fg-primary:var(--graphite-950);--fg-secondary:var(--graphite-800);--fg-muted:var(--graphite-600);
|
|
202
|
+
--fg-subtle:var(--graphite-500);--fg-inverse:var(--graphite-50);--fg-disabled:var(--graphite-400);
|
|
203
|
+
|
|
204
|
+
--border-subtle:var(--graphite-200);--border-default:var(--graphite-300);--border-strong:var(--graphite-400);
|
|
205
|
+
--border-interactive:var(--violet-600);--border-selected:var(--violet-600);--border-focus:var(--violet-600);
|
|
206
|
+
|
|
207
|
+
--brand-primary:var(--violet-600);--brand-strong:var(--violet-700);--brand-subtle:rgba(124,58,237,0.08);
|
|
208
|
+
--brand-foreground:var(--graphite-0);--brand-glow:rgba(124,58,237,0.20);
|
|
209
|
+
|
|
210
|
+
--signal-live:var(--cyan-600);--signal-processing:var(--violet-600);--signal-connected:var(--cyan-700);
|
|
211
|
+
|
|
212
|
+
--status-success:var(--green-600);--status-warning:var(--amber-600);--status-error:var(--red-600);
|
|
213
|
+
--status-info:var(--blue-600);--status-offline:var(--graphite-500);
|
|
214
|
+
|
|
215
|
+
--status-success-bg:rgba(31,156,88,0.10);--status-warning-bg:rgba(204,132,18,0.10);
|
|
216
|
+
--status-error-bg:rgba(200,40,60,0.10);--status-info-bg:rgba(37,99,235,0.10);--status-offline-bg:rgba(100,116,139,0.10);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* ---- Keyframes + motion utility classes + reduced-motion guard (byte offset 2057964) ---- */
|
|
220
|
+
/* ===== Signature QPMatrix keyframes — the system's living layer ===== */
|
|
221
|
+
/* status pulse: live workers, active pipelines */
|
|
222
|
+
@keyframes qp-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.88)}}
|
|
223
|
+
/* halo: expanding ring behind a live indicator */
|
|
224
|
+
@keyframes qp-halo{0%{transform:scale(.6);opacity:.65}100%{transform:scale(2.4);opacity:0}}
|
|
225
|
+
/* data flow: a light travelling along a connection path or border */
|
|
226
|
+
@keyframes qp-flow{0%{background-position:-200% 0}100%{background-position:200% 0}}
|
|
227
|
+
/* edge sweep: thin illuminated edge crossing a surface on hover/mount */
|
|
228
|
+
@keyframes qp-sweep{0%{transform:translateX(-110%)}100%{transform:translateX(210%)}}
|
|
229
|
+
/* breathe: ambient glow intensity on brand marks and hero artwork */
|
|
230
|
+
@keyframes qp-breathe{0%,100%{opacity:.45;filter:blur(24px)}50%{opacity:.9;filter:blur(30px)}}
|
|
231
|
+
/* orbit: slow rotation for node/topology motifs (matches the logo's orbit ring) */
|
|
232
|
+
@keyframes qp-orbit{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
|
|
233
|
+
/* rise: mount entrance — small lift + fade, never a slide-across */
|
|
234
|
+
@keyframes qp-rise{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}
|
|
235
|
+
/* shimmer: skeleton loading */
|
|
236
|
+
@keyframes qp-shimmer{0%{background-position:-320px 0}100%{background-position:320px 0}}
|
|
237
|
+
/* processing scan: a bar sweeping a panel while a job runs */
|
|
238
|
+
@keyframes qp-scan{0%{transform:translateY(-100%)}100%{transform:translateY(400%)}}
|
|
239
|
+
|
|
240
|
+
.qp-anim-rise{animation:qp-rise var(--duration-standard) var(--ease-standard) both}
|
|
241
|
+
.qp-anim-pulse{animation:qp-pulse var(--duration-ambient) var(--ease-inout) infinite}
|
|
242
|
+
.qp-anim-breathe{animation:qp-breathe var(--duration-flow) var(--ease-inout) infinite}
|
|
243
|
+
.qp-anim-orbit{animation:qp-orbit 14s linear infinite}
|
|
244
|
+
.qp-anim-flow{background-size:200% 100%;animation:qp-flow var(--duration-flow) linear infinite}
|
|
245
|
+
|
|
246
|
+
@media (prefers-reduced-motion:reduce){
|
|
247
|
+
*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
|
|
248
|
+
}
|