@conuti-das/prince-ui-tokens 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/package.json +23 -0
- package/src/tokens.css +520 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 conuti
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# prince-ui-tokens
|
|
2
|
+
|
|
3
|
+
Die Prince-Designsprache als CSS-Custom-Properties — eine Quelle für alle Apps.
|
|
4
|
+
Konsolidiert aus finops (`--prn-*`) und roadmap (Typo-/Motion-Skala).
|
|
5
|
+
|
|
6
|
+
## Nutzung
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import "prince-ui-tokens/tokens.css";
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Light ist Default. Dark via System (`prefers-color-scheme`) oder erzwungen am
|
|
13
|
+
`<html>`:
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<html data-theme="dark"> <!-- oder data-theme="light" -->
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Token-Gruppen
|
|
20
|
+
|
|
21
|
+
- **Typografie:** `--prn-font`, `--prn-font-mono`, `--prn-font-rounded`, `--prn-text-*`
|
|
22
|
+
- **Flächen:** `--prn-bg`, `--prn-bg-elevated`, `--prn-bg-head`, `--prn-bg-bar`, `--prn-fill*`
|
|
23
|
+
- **Text:** `--prn-label`, `--prn-label-2/3/4`
|
|
24
|
+
- **Linien:** `--prn-separator`, `--prn-hairline`, `--prn-border`
|
|
25
|
+
- **Akzent (Lime):** `--prn-accent`, `--prn-accent-strong/hover/pressed/soft`, `--prn-on-accent`
|
|
26
|
+
- **Semantik:** `--prn-green/red/orange/yellow/blue/teal/neutral`, `--prn-tint-*`
|
|
27
|
+
- **Charts:** `--prn-chart-1..8`
|
|
28
|
+
- **Radien:** `--prn-radius-xs..xl`, `--prn-radius-card/pill`
|
|
29
|
+
- **Schatten/Glas:** `--prn-shadow*`, `--prn-blur*`, `--prn-card-*`
|
|
30
|
+
- **Bewegung:** `--prn-ease-*`, `--prn-dur-*`
|
|
31
|
+
- **Maße:** `--prn-space`, `--prn-hit`
|
|
32
|
+
|
|
33
|
+
## Helfer-Klassen
|
|
34
|
+
|
|
35
|
+
`.prn-tnum` (tabular-nums), `.prn-skeleton` (Shimmer). Plus globaler
|
|
36
|
+
`:focus-visible`-Ring und `prefers-reduced-motion`-Abschaltung.
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@conuti-das/prince-ui-tokens",
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "Prince-Designsprache als CSS-Custom-Properties (Single Source of Truth).",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"private": false,
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": [
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
"./tokens.css": "./src/tokens.css",
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"registry": "https://registry.npmjs.org"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/conuti-das/prince-ui.git",
|
|
21
|
+
"directory": "packages/tokens"
|
|
22
|
+
}
|
|
23
|
+
}
|
package/src/tokens.css
ADDED
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* prince-ui-tokens — Single Source of Truth für die Prince-Designsprache.
|
|
3
|
+
*
|
|
4
|
+
* Drei Modes (Namespace: --prn-*):
|
|
5
|
+
* - Apple Dark → :root (Default + Fallback) und :root[data-theme="dark"]
|
|
6
|
+
* - Apple Light → @media (prefers-color-scheme: light) ohne data-theme,
|
|
7
|
+
* sowie :root[data-theme="light"]
|
|
8
|
+
* - CU → :root[data-theme="cu"] — das CONUTI-Community-Styling
|
|
9
|
+
* (CI-Grün #A0D22B, Inter-Font, grünes Bento-Mesh)
|
|
10
|
+
*
|
|
11
|
+
* Theme-Logik:
|
|
12
|
+
* 1. Ohne data-theme folgt es dem OS, fällt aber auf DARK zurück
|
|
13
|
+
* (System-Light → Apple Light, sonst Apple Dark).
|
|
14
|
+
* 2. data-theme="light" | "dark" | "cu" erzwingt den jeweiligen Mode.
|
|
15
|
+
*
|
|
16
|
+
* Light/Dark sind „original Apple" (SF-Fonts, Apple-System-Farben, Apple-Grün
|
|
17
|
+
* als Akzent). CU ist die frühere Community-Optik, 1:1 erhalten.
|
|
18
|
+
*
|
|
19
|
+
* Regel: niemals rohe Hex/RGB in Komponenten — immer diese Tokens.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
:root {
|
|
23
|
+
/* ============================================================
|
|
24
|
+
* Typografie (mode-unabhängig — Apple SF-Stack)
|
|
25
|
+
* ============================================================ */
|
|
26
|
+
--prn-font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", system-ui, sans-serif;
|
|
27
|
+
--prn-font-mono: ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;
|
|
28
|
+
--prn-font-rounded: "SF Pro Rounded", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
|
|
29
|
+
|
|
30
|
+
/* Typo-Skala (Large Title → Body → Caption) */
|
|
31
|
+
--prn-text-metric: 700 2.75rem/1 var(--prn-font); /* Hero-KPI (Apple-Bold) */
|
|
32
|
+
--prn-text-large-title: 700 2.125rem/1.1 var(--prn-font);
|
|
33
|
+
--prn-text-title: 700 1.375rem/1.2 var(--prn-font);
|
|
34
|
+
--prn-text-title-3: 600 1.1875rem/1.25 var(--prn-font);
|
|
35
|
+
--prn-text-headline: 600 1rem/1.3 var(--prn-font);
|
|
36
|
+
--prn-text-body: 400 1.0625rem/1.47 var(--prn-font); /* 17px — Apple-Body */
|
|
37
|
+
--prn-text-callout: 400 0.9375rem/1.4 var(--prn-font);
|
|
38
|
+
--prn-text-subhead: 400 0.875rem/1.4 var(--prn-font);
|
|
39
|
+
--prn-text-footnote: 400 0.8125rem/1.4 var(--prn-font);
|
|
40
|
+
--prn-text-caption: 400 0.75rem/1.35 var(--prn-font);
|
|
41
|
+
|
|
42
|
+
/* ============================================================
|
|
43
|
+
* Radien (mode-unabhängig)
|
|
44
|
+
* ============================================================ */
|
|
45
|
+
--prn-radius-xs: 6px;
|
|
46
|
+
--prn-radius-sm: 8px;
|
|
47
|
+
--prn-radius-md: 10px;
|
|
48
|
+
--prn-radius: 12px;
|
|
49
|
+
--prn-radius-lg: 16px;
|
|
50
|
+
--prn-radius-xl: 22px;
|
|
51
|
+
--prn-radius-card: 20px;
|
|
52
|
+
--prn-radius-pill: 999px;
|
|
53
|
+
|
|
54
|
+
/* ============================================================
|
|
55
|
+
* Vibrancy / Blur (mode-unabhängig)
|
|
56
|
+
* ============================================================ */
|
|
57
|
+
--prn-blur: saturate(180%) blur(20px);
|
|
58
|
+
--prn-blur-sheet: saturate(180%) blur(30px);
|
|
59
|
+
|
|
60
|
+
/* ============================================================
|
|
61
|
+
* Liquid Glass — leitet sich aus den mode-spezifischen Flächen ab,
|
|
62
|
+
* wirkt damit automatisch in Light/Dark/CU (keine Duplikation).
|
|
63
|
+
* Genutzt von der .prn-glass-Stilschicht (packages/ui glass.css).
|
|
64
|
+
* ============================================================ */
|
|
65
|
+
--prn-glass-blur: var(--prn-blur);
|
|
66
|
+
--prn-glass-bg: var(--prn-bg-bar); /* transluzent, per-mode */
|
|
67
|
+
--prn-glass-bg-opaque: var(--prn-bg-elevated); /* opaker Fallback (kein „durchsichtiges Nichts") */
|
|
68
|
+
--prn-glass-border: var(--prn-border);
|
|
69
|
+
--prn-glass-shadow: var(--prn-shadow-raised);
|
|
70
|
+
|
|
71
|
+
/* ============================================================
|
|
72
|
+
* Bewegung (mode-unabhängig)
|
|
73
|
+
* ============================================================ */
|
|
74
|
+
--prn-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
|
|
75
|
+
--prn-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
76
|
+
--prn-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
77
|
+
--prn-dur-fast: 140ms;
|
|
78
|
+
--prn-dur: 240ms;
|
|
79
|
+
--prn-dur-slow: 360ms;
|
|
80
|
+
|
|
81
|
+
/* ============================================================
|
|
82
|
+
* Maße (mode-unabhängig)
|
|
83
|
+
* ============================================================ */
|
|
84
|
+
--prn-space: 8px;
|
|
85
|
+
--prn-hit: 44px; /* Mindest-Trefferfläche */
|
|
86
|
+
|
|
87
|
+
/* ============================================================
|
|
88
|
+
* APPLE DARK (Default + Fallback)
|
|
89
|
+
* ============================================================ */
|
|
90
|
+
|
|
91
|
+
/* ---- Flächen ---- */
|
|
92
|
+
--prn-bg: #1c1c1e;
|
|
93
|
+
--prn-app-bg: linear-gradient(180deg, #1f1f21 0%, #161618 100%);
|
|
94
|
+
--prn-bg-elevated: #2c2c2e;
|
|
95
|
+
--prn-bg-elevated-2: #3a3a3c;
|
|
96
|
+
--prn-bg-elevated-translucent: rgba(44, 44, 46, 0.72);
|
|
97
|
+
--prn-bg-head: #1c1c1e;
|
|
98
|
+
--prn-bg-bar: rgba(30, 30, 32, 0.72);
|
|
99
|
+
--prn-bg-sidebar: rgba(30, 30, 32, 0.78);
|
|
100
|
+
--prn-fill: rgba(120, 120, 128, 0.36);
|
|
101
|
+
--prn-fill-strong: rgba(120, 120, 128, 0.48);
|
|
102
|
+
--prn-hover: rgba(255, 255, 255, 0.06);
|
|
103
|
+
--prn-pressed: rgba(255, 255, 255, 0.12);
|
|
104
|
+
|
|
105
|
+
/* ---- Text (label-Hierarchie) ---- */
|
|
106
|
+
--prn-label: #ffffff;
|
|
107
|
+
--prn-label-2: rgba(235, 235, 245, 0.6);
|
|
108
|
+
--prn-label-3: rgba(235, 235, 245, 0.3);
|
|
109
|
+
--prn-label-4: rgba(235, 235, 245, 0.18);
|
|
110
|
+
|
|
111
|
+
/* ---- Linien ---- */
|
|
112
|
+
--prn-separator: rgba(84, 84, 88, 0.6);
|
|
113
|
+
--prn-separator-opaque: #38383a;
|
|
114
|
+
--prn-hairline: rgba(255, 255, 255, 0.06);
|
|
115
|
+
--prn-border: rgba(255, 255, 255, 0.1);
|
|
116
|
+
|
|
117
|
+
/* ---- Akzent (Apple-Grün, Dark) ---- */
|
|
118
|
+
--prn-accent: #30d158;
|
|
119
|
+
--prn-accent-strong: #28b14a;
|
|
120
|
+
--prn-accent-hover: #3ee066;
|
|
121
|
+
--prn-accent-pressed: #28b14a;
|
|
122
|
+
--prn-accent-soft: rgba(48, 209, 88, 0.18);
|
|
123
|
+
--prn-on-accent: #ffffff;
|
|
124
|
+
|
|
125
|
+
/* ---- Semantik (Apple System Colors, Dark) ---- */
|
|
126
|
+
--prn-green: #30d158;
|
|
127
|
+
--prn-red: #ff453a;
|
|
128
|
+
--prn-orange: #ff9f0a;
|
|
129
|
+
--prn-yellow: #ffd60a;
|
|
130
|
+
--prn-blue: #0a84ff;
|
|
131
|
+
--prn-teal: #40c8e0;
|
|
132
|
+
--prn-neutral: #8e8e93;
|
|
133
|
+
--prn-on-status-fill: #ffffff;
|
|
134
|
+
|
|
135
|
+
/* getönte Hintergründe (Notices, Zeilen-Tönung) */
|
|
136
|
+
--prn-tint-positive: rgba(48, 209, 88, 0.18);
|
|
137
|
+
--prn-tint-critical: rgba(255, 159, 10, 0.18);
|
|
138
|
+
--prn-tint-negative: rgba(255, 69, 58, 0.18);
|
|
139
|
+
--prn-tint-info: rgba(10, 132, 255, 0.2);
|
|
140
|
+
--prn-warn-soft: rgba(255, 159, 10, 0.16);
|
|
141
|
+
|
|
142
|
+
/* ---- Chart-Palette (Apple System, Dark) ---- */
|
|
143
|
+
--prn-chart-1: #0a84ff;
|
|
144
|
+
--prn-chart-2: #30d158;
|
|
145
|
+
--prn-chart-3: #ff9f0a;
|
|
146
|
+
--prn-chart-4: #bf5af2;
|
|
147
|
+
--prn-chart-5: #40c8e0;
|
|
148
|
+
--prn-chart-6: #ff453a;
|
|
149
|
+
--prn-chart-7: #ffd60a;
|
|
150
|
+
--prn-chart-8: #5e5ce6;
|
|
151
|
+
|
|
152
|
+
/* ---- Overlays ---- */
|
|
153
|
+
--prn-scrim: rgba(0, 0, 0, 0.48);
|
|
154
|
+
--prn-backdrop: rgba(0, 0, 0, 0.48);
|
|
155
|
+
--prn-focus: 0 0 0 3px rgba(48, 209, 88, 0.5);
|
|
156
|
+
|
|
157
|
+
/* ---- Schatten / Tiefe ---- */
|
|
158
|
+
--prn-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), 0 10px 30px rgba(0, 0, 0, 0.35);
|
|
159
|
+
--prn-shadow-pop: 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
160
|
+
--prn-shadow-raised: 0 4px 12px rgba(0, 0, 0, 0.5), 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
161
|
+
--prn-shadow-bar: 0 1px 0 var(--prn-separator);
|
|
162
|
+
|
|
163
|
+
/* ---- Glas (mode-spezifischer Border/Blur) ---- */
|
|
164
|
+
--prn-card-border: 1px solid rgba(255, 255, 255, 0.08);
|
|
165
|
+
--prn-card-blur: saturate(160%) blur(22px);
|
|
166
|
+
|
|
167
|
+
/* ---- Bento-Ambient (neutral, Dark) ---- */
|
|
168
|
+
--prn-bento-bg: linear-gradient(135deg, #232325 0%, #1a1a1c 55%, #161618 100%);
|
|
169
|
+
|
|
170
|
+
color-scheme: dark;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/* ---------- Apple Light (System-Light, nichts erzwungen) ---------- */
|
|
174
|
+
@media (prefers-color-scheme: light) {
|
|
175
|
+
:root:not([data-theme]) {
|
|
176
|
+
--prn-bg: #f2f2f7;
|
|
177
|
+
--prn-app-bg: #f2f2f7;
|
|
178
|
+
--prn-bg-elevated: #ffffff;
|
|
179
|
+
--prn-bg-elevated-2: #ffffff;
|
|
180
|
+
--prn-bg-elevated-translucent: rgba(255, 255, 255, 0.72);
|
|
181
|
+
--prn-bg-head: #ffffff;
|
|
182
|
+
--prn-bg-bar: rgba(255, 255, 255, 0.72);
|
|
183
|
+
--prn-bg-sidebar: rgba(246, 246, 248, 0.8);
|
|
184
|
+
--prn-fill: rgba(120, 120, 128, 0.12);
|
|
185
|
+
--prn-fill-strong: rgba(120, 120, 128, 0.2);
|
|
186
|
+
--prn-hover: rgba(0, 0, 0, 0.04);
|
|
187
|
+
--prn-pressed: rgba(0, 0, 0, 0.08);
|
|
188
|
+
|
|
189
|
+
--prn-label: #000000;
|
|
190
|
+
/* 0.75 statt 0.6: Sekundärtext erreicht WCAG-AA (≈4.5) auf hellem Grund. */
|
|
191
|
+
--prn-label-2: rgba(60, 60, 67, 0.75);
|
|
192
|
+
--prn-label-3: rgba(60, 60, 67, 0.3);
|
|
193
|
+
--prn-label-4: rgba(60, 60, 67, 0.18);
|
|
194
|
+
|
|
195
|
+
--prn-separator: rgba(60, 60, 67, 0.29);
|
|
196
|
+
--prn-separator-opaque: #c6c6c8;
|
|
197
|
+
--prn-hairline: rgba(60, 60, 67, 0.1);
|
|
198
|
+
--prn-border: rgba(60, 60, 67, 0.12);
|
|
199
|
+
|
|
200
|
+
--prn-accent: #34c759;
|
|
201
|
+
--prn-accent-strong: #248a3d;
|
|
202
|
+
--prn-accent-hover: #30d158;
|
|
203
|
+
--prn-accent-pressed: #248a3d;
|
|
204
|
+
--prn-accent-soft: rgba(52, 199, 89, 0.16);
|
|
205
|
+
--prn-on-accent: #ffffff;
|
|
206
|
+
|
|
207
|
+
--prn-green: #34c759;
|
|
208
|
+
--prn-red: #ff3b30;
|
|
209
|
+
--prn-orange: #ff9500;
|
|
210
|
+
--prn-yellow: #ffcc00;
|
|
211
|
+
--prn-blue: #007aff;
|
|
212
|
+
--prn-teal: #30b0c7;
|
|
213
|
+
--prn-neutral: #8e8e93;
|
|
214
|
+
--prn-on-status-fill: #ffffff;
|
|
215
|
+
|
|
216
|
+
--prn-tint-positive: rgba(52, 199, 89, 0.16);
|
|
217
|
+
--prn-tint-critical: rgba(255, 149, 0, 0.16);
|
|
218
|
+
--prn-tint-negative: rgba(255, 59, 48, 0.12);
|
|
219
|
+
--prn-tint-info: rgba(0, 122, 255, 0.12);
|
|
220
|
+
--prn-warn-soft: rgba(255, 149, 0, 0.16);
|
|
221
|
+
|
|
222
|
+
--prn-chart-1: #007aff;
|
|
223
|
+
--prn-chart-2: #34c759;
|
|
224
|
+
--prn-chart-3: #ff9500;
|
|
225
|
+
--prn-chart-4: #af52de;
|
|
226
|
+
--prn-chart-5: #30b0c7;
|
|
227
|
+
--prn-chart-6: #ff3b30;
|
|
228
|
+
--prn-chart-7: #ffcc00;
|
|
229
|
+
--prn-chart-8: #5856d6;
|
|
230
|
+
|
|
231
|
+
--prn-scrim: rgba(0, 0, 0, 0.32);
|
|
232
|
+
--prn-backdrop: rgba(0, 0, 0, 0.32);
|
|
233
|
+
--prn-focus: 0 0 0 3px rgba(52, 199, 89, 0.45);
|
|
234
|
+
|
|
235
|
+
--prn-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
236
|
+
--prn-shadow-pop: 0 12px 40px rgba(0, 0, 0, 0.18);
|
|
237
|
+
--prn-shadow-raised: 0 2px 6px rgba(0, 0, 0, 0.08), 0 12px 32px rgba(0, 0, 0, 0.12);
|
|
238
|
+
--prn-shadow-bar: 0 1px 0 var(--prn-separator);
|
|
239
|
+
|
|
240
|
+
--prn-card-border: 1px solid rgba(60, 60, 67, 0.08);
|
|
241
|
+
--prn-card-blur: saturate(160%) blur(22px);
|
|
242
|
+
|
|
243
|
+
--prn-bento-bg: linear-gradient(135deg, #f5f5f7 0%, #ececef 55%, #e6e6ea 100%);
|
|
244
|
+
|
|
245
|
+
color-scheme: light;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* ---------- Apple Light (erzwungen) ---------- */
|
|
250
|
+
:root[data-theme="light"] {
|
|
251
|
+
--prn-bg: #f2f2f7;
|
|
252
|
+
--prn-app-bg: #f2f2f7;
|
|
253
|
+
--prn-bg-elevated: #ffffff;
|
|
254
|
+
--prn-bg-elevated-2: #ffffff;
|
|
255
|
+
--prn-bg-elevated-translucent: rgba(255, 255, 255, 0.72);
|
|
256
|
+
--prn-bg-head: #ffffff;
|
|
257
|
+
--prn-bg-bar: rgba(255, 255, 255, 0.72);
|
|
258
|
+
--prn-bg-sidebar: rgba(246, 246, 248, 0.8);
|
|
259
|
+
--prn-fill: rgba(120, 120, 128, 0.12);
|
|
260
|
+
--prn-fill-strong: rgba(120, 120, 128, 0.2);
|
|
261
|
+
--prn-hover: rgba(0, 0, 0, 0.04);
|
|
262
|
+
--prn-pressed: rgba(0, 0, 0, 0.08);
|
|
263
|
+
|
|
264
|
+
--prn-label: #000000;
|
|
265
|
+
/* 0.75 statt 0.6: Sekundärtext erreicht WCAG-AA (≈4.5) auf hellem Grund. */
|
|
266
|
+
--prn-label-2: rgba(60, 60, 67, 0.75);
|
|
267
|
+
--prn-label-3: rgba(60, 60, 67, 0.3);
|
|
268
|
+
--prn-label-4: rgba(60, 60, 67, 0.18);
|
|
269
|
+
|
|
270
|
+
--prn-separator: rgba(60, 60, 67, 0.29);
|
|
271
|
+
--prn-separator-opaque: #c6c6c8;
|
|
272
|
+
--prn-hairline: rgba(60, 60, 67, 0.1);
|
|
273
|
+
--prn-border: rgba(60, 60, 67, 0.12);
|
|
274
|
+
|
|
275
|
+
--prn-accent: #34c759;
|
|
276
|
+
--prn-accent-strong: #248a3d;
|
|
277
|
+
--prn-accent-hover: #30d158;
|
|
278
|
+
--prn-accent-pressed: #248a3d;
|
|
279
|
+
--prn-accent-soft: rgba(52, 199, 89, 0.16);
|
|
280
|
+
--prn-on-accent: #ffffff;
|
|
281
|
+
|
|
282
|
+
--prn-green: #34c759;
|
|
283
|
+
--prn-red: #ff3b30;
|
|
284
|
+
--prn-orange: #ff9500;
|
|
285
|
+
--prn-yellow: #ffcc00;
|
|
286
|
+
--prn-blue: #007aff;
|
|
287
|
+
--prn-teal: #30b0c7;
|
|
288
|
+
--prn-neutral: #8e8e93;
|
|
289
|
+
--prn-on-status-fill: #ffffff;
|
|
290
|
+
|
|
291
|
+
--prn-tint-positive: rgba(52, 199, 89, 0.16);
|
|
292
|
+
--prn-tint-critical: rgba(255, 149, 0, 0.16);
|
|
293
|
+
--prn-tint-negative: rgba(255, 59, 48, 0.12);
|
|
294
|
+
--prn-tint-info: rgba(0, 122, 255, 0.12);
|
|
295
|
+
--prn-warn-soft: rgba(255, 149, 0, 0.16);
|
|
296
|
+
|
|
297
|
+
--prn-chart-1: #007aff;
|
|
298
|
+
--prn-chart-2: #34c759;
|
|
299
|
+
--prn-chart-3: #ff9500;
|
|
300
|
+
--prn-chart-4: #af52de;
|
|
301
|
+
--prn-chart-5: #30b0c7;
|
|
302
|
+
--prn-chart-6: #ff3b30;
|
|
303
|
+
--prn-chart-7: #ffcc00;
|
|
304
|
+
--prn-chart-8: #5856d6;
|
|
305
|
+
|
|
306
|
+
--prn-scrim: rgba(0, 0, 0, 0.32);
|
|
307
|
+
--prn-backdrop: rgba(0, 0, 0, 0.32);
|
|
308
|
+
--prn-focus: 0 0 0 3px rgba(52, 199, 89, 0.45);
|
|
309
|
+
|
|
310
|
+
--prn-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
311
|
+
--prn-shadow-pop: 0 12px 40px rgba(0, 0, 0, 0.18);
|
|
312
|
+
--prn-shadow-raised: 0 2px 6px rgba(0, 0, 0, 0.08), 0 12px 32px rgba(0, 0, 0, 0.12);
|
|
313
|
+
--prn-shadow-bar: 0 1px 0 var(--prn-separator);
|
|
314
|
+
|
|
315
|
+
--prn-card-border: 1px solid rgba(60, 60, 67, 0.08);
|
|
316
|
+
--prn-card-blur: saturate(160%) blur(22px);
|
|
317
|
+
|
|
318
|
+
--prn-bento-bg: linear-gradient(135deg, #f5f5f7 0%, #ececef 55%, #e6e6ea 100%);
|
|
319
|
+
|
|
320
|
+
color-scheme: light;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/* ---------- Apple Dark (erzwungen — entspricht :root) ---------- */
|
|
324
|
+
:root[data-theme="dark"] {
|
|
325
|
+
--prn-bg: #1c1c1e;
|
|
326
|
+
--prn-app-bg: linear-gradient(180deg, #1f1f21 0%, #161618 100%);
|
|
327
|
+
--prn-bg-elevated: #2c2c2e;
|
|
328
|
+
--prn-bg-elevated-2: #3a3a3c;
|
|
329
|
+
--prn-bg-elevated-translucent: rgba(44, 44, 46, 0.72);
|
|
330
|
+
--prn-bg-head: #1c1c1e;
|
|
331
|
+
--prn-bg-bar: rgba(30, 30, 32, 0.72);
|
|
332
|
+
--prn-bg-sidebar: rgba(30, 30, 32, 0.78);
|
|
333
|
+
--prn-fill: rgba(120, 120, 128, 0.36);
|
|
334
|
+
--prn-fill-strong: rgba(120, 120, 128, 0.48);
|
|
335
|
+
--prn-hover: rgba(255, 255, 255, 0.06);
|
|
336
|
+
--prn-pressed: rgba(255, 255, 255, 0.12);
|
|
337
|
+
|
|
338
|
+
--prn-label: #ffffff;
|
|
339
|
+
--prn-label-2: rgba(235, 235, 245, 0.6);
|
|
340
|
+
--prn-label-3: rgba(235, 235, 245, 0.3);
|
|
341
|
+
--prn-label-4: rgba(235, 235, 245, 0.18);
|
|
342
|
+
|
|
343
|
+
--prn-separator: rgba(84, 84, 88, 0.6);
|
|
344
|
+
--prn-separator-opaque: #38383a;
|
|
345
|
+
--prn-hairline: rgba(255, 255, 255, 0.06);
|
|
346
|
+
--prn-border: rgba(255, 255, 255, 0.1);
|
|
347
|
+
|
|
348
|
+
--prn-accent: #30d158;
|
|
349
|
+
--prn-accent-strong: #28b14a;
|
|
350
|
+
--prn-accent-hover: #3ee066;
|
|
351
|
+
--prn-accent-pressed: #28b14a;
|
|
352
|
+
--prn-accent-soft: rgba(48, 209, 88, 0.18);
|
|
353
|
+
--prn-on-accent: #ffffff;
|
|
354
|
+
|
|
355
|
+
--prn-green: #30d158;
|
|
356
|
+
--prn-red: #ff453a;
|
|
357
|
+
--prn-orange: #ff9f0a;
|
|
358
|
+
--prn-yellow: #ffd60a;
|
|
359
|
+
--prn-blue: #0a84ff;
|
|
360
|
+
--prn-teal: #40c8e0;
|
|
361
|
+
--prn-neutral: #8e8e93;
|
|
362
|
+
--prn-on-status-fill: #ffffff;
|
|
363
|
+
|
|
364
|
+
--prn-tint-positive: rgba(48, 209, 88, 0.18);
|
|
365
|
+
--prn-tint-critical: rgba(255, 159, 10, 0.18);
|
|
366
|
+
--prn-tint-negative: rgba(255, 69, 58, 0.18);
|
|
367
|
+
--prn-tint-info: rgba(10, 132, 255, 0.2);
|
|
368
|
+
--prn-warn-soft: rgba(255, 159, 10, 0.16);
|
|
369
|
+
|
|
370
|
+
--prn-chart-1: #0a84ff;
|
|
371
|
+
--prn-chart-2: #30d158;
|
|
372
|
+
--prn-chart-3: #ff9f0a;
|
|
373
|
+
--prn-chart-4: #bf5af2;
|
|
374
|
+
--prn-chart-5: #40c8e0;
|
|
375
|
+
--prn-chart-6: #ff453a;
|
|
376
|
+
--prn-chart-7: #ffd60a;
|
|
377
|
+
--prn-chart-8: #5e5ce6;
|
|
378
|
+
|
|
379
|
+
--prn-scrim: rgba(0, 0, 0, 0.48);
|
|
380
|
+
--prn-backdrop: rgba(0, 0, 0, 0.48);
|
|
381
|
+
--prn-focus: 0 0 0 3px rgba(48, 209, 88, 0.5);
|
|
382
|
+
|
|
383
|
+
--prn-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), 0 10px 30px rgba(0, 0, 0, 0.35);
|
|
384
|
+
--prn-shadow-pop: 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
385
|
+
--prn-shadow-raised: 0 4px 12px rgba(0, 0, 0, 0.5), 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
386
|
+
--prn-shadow-bar: 0 1px 0 var(--prn-separator);
|
|
387
|
+
|
|
388
|
+
--prn-card-border: 1px solid rgba(255, 255, 255, 0.08);
|
|
389
|
+
--prn-card-blur: saturate(160%) blur(22px);
|
|
390
|
+
|
|
391
|
+
--prn-bento-bg: linear-gradient(135deg, #232325 0%, #1a1a1c 55%, #161618 100%);
|
|
392
|
+
|
|
393
|
+
color-scheme: dark;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/* ============================================================
|
|
397
|
+
* CU — CONUTI Community-Styling (CI-Grün #A0D22B)
|
|
398
|
+
* Frühere Dark-Optik, 1:1 erhalten: Inter-Font + grünes Bento-Mesh.
|
|
399
|
+
* ============================================================ */
|
|
400
|
+
:root[data-theme="cu"] {
|
|
401
|
+
/* Community-Font (Inter-geführt statt SF) */
|
|
402
|
+
--prn-font: system-ui, "Inter", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
403
|
+
--prn-font-rounded: var(--prn-font);
|
|
404
|
+
|
|
405
|
+
--prn-bg: #222a31;
|
|
406
|
+
--prn-app-bg: radial-gradient(130% 130% at 12% 0%, #2b343d 0%, #222a31 48%, #1b2229 100%);
|
|
407
|
+
--prn-bg-elevated: #2a333b;
|
|
408
|
+
--prn-bg-elevated-2: #333e48;
|
|
409
|
+
--prn-bg-elevated-translucent: rgba(34, 42, 49, 0.52); /* Glas-Card (Bento), Blur-tauglich */
|
|
410
|
+
--prn-bg-head: #1e252b;
|
|
411
|
+
--prn-bg-bar: rgba(34, 42, 49, 0.55);
|
|
412
|
+
--prn-bg-sidebar: rgba(34, 42, 49, 0.6);
|
|
413
|
+
--prn-fill: rgba(255, 255, 255, 0.08);
|
|
414
|
+
--prn-fill-strong: rgba(255, 255, 255, 0.14);
|
|
415
|
+
--prn-hover: rgba(255, 255, 255, 0.06);
|
|
416
|
+
--prn-pressed: rgba(255, 255, 255, 0.12);
|
|
417
|
+
|
|
418
|
+
--prn-label: #f3f4f2;
|
|
419
|
+
--prn-label-2: rgba(236, 238, 233, 0.78);
|
|
420
|
+
--prn-label-3: rgba(235, 238, 233, 0.46);
|
|
421
|
+
--prn-label-4: rgba(235, 235, 245, 0.18);
|
|
422
|
+
|
|
423
|
+
--prn-separator: rgba(255, 255, 255, 0.08);
|
|
424
|
+
--prn-separator-opaque: #38383a;
|
|
425
|
+
--prn-hairline: rgba(255, 255, 255, 0.06);
|
|
426
|
+
--prn-border: rgba(255, 255, 255, 0.1);
|
|
427
|
+
|
|
428
|
+
--prn-accent: #a0d22b;
|
|
429
|
+
--prn-accent-strong: #b4de5a;
|
|
430
|
+
--prn-accent-hover: #aedd44;
|
|
431
|
+
--prn-accent-pressed: #8cba20;
|
|
432
|
+
--prn-accent-soft: rgba(160, 210, 43, 0.16);
|
|
433
|
+
--prn-on-accent: #1b2410;
|
|
434
|
+
|
|
435
|
+
--prn-green: #a0d22b;
|
|
436
|
+
--prn-red: #ff5a52;
|
|
437
|
+
--prn-orange: #ff9f62;
|
|
438
|
+
--prn-yellow: #ffe665;
|
|
439
|
+
--prn-blue: #5ec8fa;
|
|
440
|
+
--prn-teal: #b5dec2;
|
|
441
|
+
--prn-neutral: #9b9f9a;
|
|
442
|
+
--prn-on-status-fill: #14150f;
|
|
443
|
+
|
|
444
|
+
--prn-tint-positive: rgba(160, 210, 43, 0.18);
|
|
445
|
+
--prn-tint-critical: rgba(255, 159, 98, 0.18);
|
|
446
|
+
--prn-tint-negative: rgba(255, 90, 82, 0.18);
|
|
447
|
+
--prn-tint-info: rgba(94, 200, 250, 0.2);
|
|
448
|
+
--prn-warn-soft: rgba(255, 159, 98, 0.16);
|
|
449
|
+
|
|
450
|
+
--prn-chart-1: #a0d22b;
|
|
451
|
+
--prn-chart-2: #b5dec2;
|
|
452
|
+
--prn-chart-3: #ff9f62;
|
|
453
|
+
--prn-chart-4: #ffe665;
|
|
454
|
+
--prn-chart-5: #6aa6bd;
|
|
455
|
+
--prn-chart-6: #c6cd83;
|
|
456
|
+
--prn-chart-7: #9b9f9a;
|
|
457
|
+
--prn-chart-8: #5ec8c0;
|
|
458
|
+
|
|
459
|
+
--prn-scrim: rgba(0, 0, 0, 0.5);
|
|
460
|
+
--prn-backdrop: rgba(0, 0, 0, 0.5);
|
|
461
|
+
--prn-focus: 0 0 0 3px rgba(160, 210, 43, 0.42);
|
|
462
|
+
|
|
463
|
+
--prn-shadow: 0 1px 2px rgba(0, 0, 0, 0.5), 0 10px 30px rgba(0, 0, 0, 0.35);
|
|
464
|
+
--prn-shadow-pop: 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
465
|
+
--prn-shadow-raised: 0 4px 12px rgba(0, 0, 0, 0.5), 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
466
|
+
--prn-shadow-bar: 0 1px 0 var(--prn-separator);
|
|
467
|
+
|
|
468
|
+
--prn-card-border: 1px solid rgba(255, 255, 255, 0.07);
|
|
469
|
+
--prn-card-blur: saturate(160%) blur(22px);
|
|
470
|
+
|
|
471
|
+
--prn-bento-bg:
|
|
472
|
+
radial-gradient(1000px 760px at 10% 92%, rgba(96, 132, 64, 0.55) 0%, rgba(96, 132, 64, 0) 58%),
|
|
473
|
+
radial-gradient(1100px 720px at 92% 8%, rgba(150, 120, 72, 0.5) 0%, rgba(150, 120, 72, 0) 55%),
|
|
474
|
+
radial-gradient(900px 720px at 78% 96%, rgba(86, 70, 50, 0.45) 0%, rgba(86, 70, 50, 0) 52%),
|
|
475
|
+
radial-gradient(760px 760px at 36% 16%, rgba(70, 86, 96, 0.4) 0%, rgba(70, 86, 96, 0) 52%),
|
|
476
|
+
linear-gradient(135deg, #191b18 0%, #232318 45%, #14160f 100%);
|
|
477
|
+
|
|
478
|
+
color-scheme: dark;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/* ---------- Globale Basis-Helfer ---------- */
|
|
482
|
+
|
|
483
|
+
/* Sichtbarer Fokus-Ring (A11y) statt outline:none */
|
|
484
|
+
:where(:focus-visible) {
|
|
485
|
+
outline: none;
|
|
486
|
+
box-shadow: var(--prn-focus);
|
|
487
|
+
border-radius: var(--prn-radius-sm);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/* Tabellenzahlen: gleichmäßige Ziffernbreite */
|
|
491
|
+
.prn-tnum {
|
|
492
|
+
font-variant-numeric: tabular-nums;
|
|
493
|
+
font-feature-settings: "tnum" 1;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
/* Loading-Skeleton-Shimmer */
|
|
497
|
+
@keyframes prn-shimmer {
|
|
498
|
+
0% { background-position: -400px 0; }
|
|
499
|
+
100% { background-position: 400px 0; }
|
|
500
|
+
}
|
|
501
|
+
.prn-skeleton {
|
|
502
|
+
border-radius: 6px;
|
|
503
|
+
background: linear-gradient(90deg, var(--prn-fill) 25%, var(--prn-fill-strong) 37%, var(--prn-fill) 63%);
|
|
504
|
+
background-size: 800px 100%;
|
|
505
|
+
animation: prn-shimmer 1.4s ease-in-out infinite;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
@keyframes prn-spin {
|
|
509
|
+
to { transform: rotate(360deg); }
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/* A11y: Animationen bei prefers-reduced-motion quasi anhalten */
|
|
513
|
+
@media (prefers-reduced-motion: reduce) {
|
|
514
|
+
*,
|
|
515
|
+
*::before,
|
|
516
|
+
*::after {
|
|
517
|
+
animation-duration: 0.001ms !important;
|
|
518
|
+
transition-duration: 0.001ms !important;
|
|
519
|
+
}
|
|
520
|
+
}
|