@neptune.fintech/web-ui 1.0.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/LICENSE +104 -0
- package/README.md +62 -0
- package/dist/components/base.d.ts +18 -0
- package/dist/components/base.d.ts.map +1 -0
- package/dist/components/base.js +57 -0
- package/dist/components/base.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +70 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.d.ts +13 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +46 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/financial.d.ts +23 -0
- package/dist/components/financial.d.ts.map +1 -0
- package/dist/components/financial.js +164 -0
- package/dist/components/financial.js.map +1 -0
- package/dist/components/inputs.d.ts +27 -0
- package/dist/components/inputs.d.ts.map +1 -0
- package/dist/components/inputs.js +167 -0
- package/dist/components/inputs.js.map +1 -0
- package/dist/components/nav.d.ts +24 -0
- package/dist/components/nav.d.ts.map +1 -0
- package/dist/components/nav.js +131 -0
- package/dist/components/nav.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/register.d.ts +3 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +24 -0
- package/dist/register.js.map +1 -0
- package/dist/theme/applyTheme.d.ts +27 -0
- package/dist/theme/applyTheme.d.ts.map +1 -0
- package/dist/theme/applyTheme.js +118 -0
- package/dist/theme/applyTheme.js.map +1 -0
- package/package.json +58 -0
- package/styles/neptune-odyssey.css +6 -0
- package/styles/system.css +74 -0
- package/styles/themes.css +246 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* ════════════════════════════════════════════════════════════════════════
|
|
2
|
+
NEPTUNE ODYSSEY — system token layer · by Neptune.Fintech
|
|
3
|
+
Brand-agnostic semantic tokens: motion, elevation, spacing, type scale,
|
|
4
|
+
state layers, focus, z-index, density.
|
|
5
|
+
|
|
6
|
+
themes.css owns what changes PER BRAND (color, shape, type family, motif).
|
|
7
|
+
system.css owns what stays CONSTANT across every brand — the physics of the
|
|
8
|
+
system. Together they make the platform's "everything is a token" promise
|
|
9
|
+
literally true: no component should hardcode a shadow, duration, easing,
|
|
10
|
+
spacing step, focus ring, or type size again.
|
|
11
|
+
|
|
12
|
+
Load order: themes.css → system.css (system reads scrim from the theme)
|
|
13
|
+
════════════════════════════════════════════════════════════════════════ */
|
|
14
|
+
|
|
15
|
+
:root{
|
|
16
|
+
/* ── Spacing · 4px base grid ─────────────────────────────────────────── */
|
|
17
|
+
--npt-space-0:0; --npt-space-1:4px; --npt-space-2:8px; --npt-space-3:12px;
|
|
18
|
+
--npt-space-4:16px; --npt-space-5:20px; --npt-space-6:24px; --npt-space-8:32px;
|
|
19
|
+
--npt-space-10:40px; --npt-space-12:48px; --npt-space-16:64px; --npt-space-20:80px;
|
|
20
|
+
|
|
21
|
+
/* ── Type scale · M3 roles (pair size + leading + weight) ────────────── */
|
|
22
|
+
--npt-text-display-lg: 57px; --npt-leading-display-lg: 64px;
|
|
23
|
+
--npt-text-display-md: 45px; --npt-leading-display-md: 52px;
|
|
24
|
+
--npt-text-headline: 28px; --npt-leading-headline: 36px;
|
|
25
|
+
--npt-text-title-lg: 22px; --npt-leading-title-lg: 28px;
|
|
26
|
+
--npt-text-title: 18px; --npt-leading-title: 24px;
|
|
27
|
+
--npt-text-body-lg: 16px; --npt-leading-body-lg: 24px;
|
|
28
|
+
--npt-text-body: 14px; --npt-leading-body: 20px;
|
|
29
|
+
--npt-text-label: 14px; --npt-leading-label: 20px;
|
|
30
|
+
--npt-text-caption: 12px; --npt-leading-caption: 16px;
|
|
31
|
+
--npt-weight-regular:400; --npt-weight-medium:500; --npt-weight-semibold:600; --npt-weight-bold:700;
|
|
32
|
+
|
|
33
|
+
/* ── Motion · durations + M3 Expressive easings ──────────────────────── */
|
|
34
|
+
--npt-dur-1:100ms; --npt-dur-2:180ms; --npt-dur-3:280ms; --npt-dur-4:400ms; --npt-dur-5:520ms;
|
|
35
|
+
--npt-ease-standard: cubic-bezier(.2,0,0,1);
|
|
36
|
+
--npt-ease-emphasized: cubic-bezier(.2,0,0,1);
|
|
37
|
+
--npt-ease-decelerate: cubic-bezier(0,0,0,1);
|
|
38
|
+
--npt-ease-accelerate: cubic-bezier(.3,0,1,1);
|
|
39
|
+
--npt-ease-spring: cubic-bezier(.34,1.56,.64,1);
|
|
40
|
+
/* composed motions — use these on transitions */
|
|
41
|
+
--npt-motion-enter: var(--npt-dur-4) var(--npt-ease-emphasized);
|
|
42
|
+
--npt-motion-exit: var(--npt-dur-2) var(--npt-ease-accelerate);
|
|
43
|
+
--npt-motion-spring: var(--npt-dur-4) var(--npt-ease-spring);
|
|
44
|
+
--npt-motion-press: var(--npt-dur-1) var(--npt-ease-standard);
|
|
45
|
+
|
|
46
|
+
/* ── Elevation · tinted by the theme's scrim (so shadows match the brand) ─ */
|
|
47
|
+
--npt-elev-0: none;
|
|
48
|
+
--npt-elev-1: 0 1px 2px -1px color-mix(in oklab, var(--md-sys-color-scrim) 16%, transparent);
|
|
49
|
+
--npt-elev-2: 0 2px 6px -2px color-mix(in oklab, var(--md-sys-color-scrim) 20%, transparent);
|
|
50
|
+
--npt-elev-3: 0 8px 20px -10px color-mix(in oklab, var(--md-sys-color-scrim) 28%, transparent);
|
|
51
|
+
--npt-elev-4: 0 16px 36px -16px color-mix(in oklab, var(--md-sys-color-scrim) 32%, transparent);
|
|
52
|
+
--npt-elev-5: 0 28px 60px -24px color-mix(in oklab, var(--md-sys-color-scrim) 40%, transparent);
|
|
53
|
+
/* branded key-light glow for primary heroes/buttons */
|
|
54
|
+
--npt-glow-primary: 0 10px 26px -12px color-mix(in oklab, var(--md-sys-color-primary) 70%, transparent);
|
|
55
|
+
|
|
56
|
+
/* ── State layers · M3 overlay opacities ─────────────────────────────── */
|
|
57
|
+
--npt-state-hover:0.08; --npt-state-focus:0.10; --npt-state-pressed:0.12; --npt-state-drag:0.16;
|
|
58
|
+
|
|
59
|
+
/* ── Focus · the single source of the keyboard ring (a11y) ───────────── */
|
|
60
|
+
--npt-focus-ring-width:3px;
|
|
61
|
+
--npt-focus-ring-offset:2px;
|
|
62
|
+
--npt-focus-ring-color: var(--md-sys-color-primary);
|
|
63
|
+
|
|
64
|
+
/* ── Z-index scale ───────────────────────────────────────────────────── */
|
|
65
|
+
--npt-z-base:0; --npt-z-sticky:10; --npt-z-nav:20; --npt-z-overlay:60;
|
|
66
|
+
--npt-z-modal:70; --npt-z-toast:80; --npt-z-max:9999;
|
|
67
|
+
|
|
68
|
+
/* ── Density · product-layer hook (comfortable ⇄ compact) ────────────── */
|
|
69
|
+
--npt-row-comfortable:56px; --npt-row-standard:48px; --npt-row-compact:40px;
|
|
70
|
+
--npt-touch-min:48px; /* never smaller on touch surfaces */
|
|
71
|
+
|
|
72
|
+
/* native form controls inherit the brand */
|
|
73
|
+
accent-color: var(--md-sys-color-primary);
|
|
74
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/* Neptune Odyssey — theme token layer · © Neptune.Fintech · v1.0.0
|
|
2
|
+
M3 + M3 Expressive · 4 brands (neptune/andalus/nuran/fglb) · light+dark · LTR/RTL
|
|
3
|
+
Apply on a wrapper: <body data-theme="andalus" data-mode="dark" dir="rtl"> */
|
|
4
|
+
|
|
5
|
+
/* ====== NEPTUNE DESIGN SYSTEM — token layer ====== */
|
|
6
|
+
:root,[data-theme="neptune"]{
|
|
7
|
+
--md-sys-color-primary: oklch(0.48 0.15 258); --md-sys-color-on-primary: oklch(0.99 0.02 258);
|
|
8
|
+
--md-sys-color-primary-container: oklch(0.91 0.07 258); --md-sys-color-on-primary-container: oklch(0.22 0.13 258);
|
|
9
|
+
--md-sys-color-secondary: oklch(0.5 0.06 258); --md-sys-color-on-secondary: oklch(0.99 0.02 258);
|
|
10
|
+
--md-sys-color-secondary-container: oklch(0.92 0.035 258); --md-sys-color-on-secondary-container: oklch(0.25 0.05 258);
|
|
11
|
+
--md-sys-color-tertiary: oklch(0.55 0.1 200); --md-sys-color-on-tertiary: oklch(0.99 0.02 200);
|
|
12
|
+
--md-sys-color-tertiary-container: oklch(0.9 0.06 200); --md-sys-color-on-tertiary-container: oklch(0.24 0.08 200);
|
|
13
|
+
--md-sys-color-error: oklch(0.52 0.2 27); --md-sys-color-on-error: oklch(0.99 0.02 27);
|
|
14
|
+
--md-sys-color-error-container: oklch(0.92 0.07 27); --md-sys-color-on-error-container: oklch(0.28 0.16 27);
|
|
15
|
+
--md-sys-color-success: oklch(0.58 0.13 152); --md-sys-color-on-success: oklch(0.99 0.02 152);
|
|
16
|
+
--md-sys-color-success-container: oklch(0.9 0.07 152); --md-sys-color-on-success-container: oklch(0.26 0.1 152);
|
|
17
|
+
--md-sys-color-background: oklch(0.985 0.006 258); --md-sys-color-on-background: oklch(0.16 0.02 258);
|
|
18
|
+
--md-sys-color-surface: oklch(0.985 0.006 258); --md-sys-color-on-surface: oklch(0.16 0.02 258);
|
|
19
|
+
--md-sys-color-surface-variant: oklch(0.9 0.018 258); --md-sys-color-on-surface-variant: oklch(0.4 0.025 258);
|
|
20
|
+
--md-sys-color-outline: oklch(0.62 0.02 258); --md-sys-color-outline-variant: oklch(0.86 0.015 258);
|
|
21
|
+
--md-sys-color-surface-container-lowest: oklch(1 0 0); --md-sys-color-surface-container-low: oklch(0.965 0.006 258);
|
|
22
|
+
--md-sys-color-surface-container: oklch(0.945 0.008 258); --md-sys-color-surface-container-high: oklch(0.925 0.01 258);
|
|
23
|
+
--md-sys-color-surface-container-highest: oklch(0.905 0.012 258);
|
|
24
|
+
--md-sys-color-inverse-surface: oklch(0.24 0.02 258); --md-sys-color-inverse-on-surface: oklch(0.96 0.006 258);
|
|
25
|
+
--md-sys-color-inverse-primary: oklch(0.82 0.12 258); --md-sys-color-scrim: oklch(0.08 0.02 258);
|
|
26
|
+
--npt-font-display:'Hanken Grotesk'; --npt-font-text:'Hanken Grotesk'; --npt-font-num:'Hanken Grotesk';
|
|
27
|
+
--npt-font-display-ar:'IBM Plex Sans Arabic'; --npt-font-text-ar:'IBM Plex Sans Arabic';
|
|
28
|
+
--npt-corner-xs-base:8px; --npt-corner-sm-base:12px; --npt-corner-md-base:16px; --npt-corner-lg-base:24px; --npt-corner-xl-base:32px; --npt-corner-2xl-base:44px; --npt-corner-full:999px;
|
|
29
|
+
--npt-display-tracking:-0.02em; --npt-display-weight:700;
|
|
30
|
+
--npt-shape-scale:1; --npt-spring:cubic-bezier(.34,1.56,.64,1); --npt-spring-dur:.4s;
|
|
31
|
+
/* lever · motion feel (Neptune: smooth-fluid) */
|
|
32
|
+
--npt-ease-standard:cubic-bezier(.2,0,0,1); --npt-ease-emphasized:cubic-bezier(.2,0,0,1); --npt-ease-spring:cubic-bezier(.34,1.56,.64,1);
|
|
33
|
+
--npt-dur-fast:240ms; --npt-dur-standard:300ms; --npt-dur-slow:500ms;
|
|
34
|
+
/* lever · glass tint (Neptune: oceanic) */
|
|
35
|
+
--npt-glass-tint:color-mix(in oklab, var(--md-sys-color-primary) 8%, color-mix(in oklab, var(--md-sys-color-surface) 70%, transparent)); --npt-glass-blur:18px;
|
|
36
|
+
/* lever · named treatments (login shell / dashboard hero / content tone) */
|
|
37
|
+
--npt-login-shell:depth-emblem; --npt-dashboard-hero:balance-cards; --npt-content-tone:clear-calm;
|
|
38
|
+
/* brand expression — signature motif (Neptune: sonar tide-rings) */
|
|
39
|
+
--npt-motif: repeating-radial-gradient(circle at 86% 6%, color-mix(in oklab,currentColor 11%,transparent) 0 1.5px, transparent 1.5px 27px);
|
|
40
|
+
--npt-motif-size: auto; --npt-motif-strength: .9;
|
|
41
|
+
--npt-hero-emblem: radial-gradient(circle at 50% 50%, color-mix(in oklab,currentColor 14%,transparent) 0 1px, transparent 1px 9px, color-mix(in oklab,currentColor 12%,transparent) 9px 10px, transparent 10px 20px, color-mix(in oklab,currentColor 10%,transparent) 20px 21px, transparent 21px);
|
|
42
|
+
}
|
|
43
|
+
/* client customization: corner family scales with --npt-shape-scale (full stays a pill) */
|
|
44
|
+
[data-theme]{
|
|
45
|
+
--npt-corner-xs: calc(var(--npt-corner-xs-base,8px) * var(--npt-shape-scale,1));
|
|
46
|
+
--npt-corner-sm: calc(var(--npt-corner-sm-base,12px) * var(--npt-shape-scale,1));
|
|
47
|
+
--npt-corner-md: calc(var(--npt-corner-md-base,16px) * var(--npt-shape-scale,1));
|
|
48
|
+
--npt-corner-lg: calc(var(--npt-corner-lg-base,24px) * var(--npt-shape-scale,1));
|
|
49
|
+
--npt-corner-xl: calc(var(--npt-corner-xl-base,32px) * var(--npt-shape-scale,1));
|
|
50
|
+
--npt-corner-2xl: calc(var(--npt-corner-2xl-base,44px) * var(--npt-shape-scale,1));
|
|
51
|
+
}
|
|
52
|
+
[data-theme="neptune"][data-mode="dark"]{
|
|
53
|
+
--md-sys-color-primary: oklch(0.8 0.12 258); --md-sys-color-on-primary: oklch(0.2 0.1 258);
|
|
54
|
+
--md-sys-color-primary-container: oklch(0.36 0.12 258); --md-sys-color-on-primary-container: oklch(0.9 0.07 258);
|
|
55
|
+
--md-sys-color-secondary: oklch(0.82 0.04 258); --md-sys-color-on-secondary: oklch(0.22 0.04 258);
|
|
56
|
+
--md-sys-color-secondary-container: oklch(0.34 0.04 258); --md-sys-color-on-secondary-container: oklch(0.9 0.035 258);
|
|
57
|
+
--md-sys-color-tertiary: oklch(0.82 0.08 200); --md-sys-color-on-tertiary: oklch(0.22 0.06 200);
|
|
58
|
+
--md-sys-color-tertiary-container: oklch(0.34 0.07 200); --md-sys-color-on-tertiary-container: oklch(0.9 0.06 200);
|
|
59
|
+
--md-sys-color-error: oklch(0.78 0.13 27); --md-sys-color-on-error: oklch(0.24 0.1 27);
|
|
60
|
+
--md-sys-color-error-container: oklch(0.36 0.14 27); --md-sys-color-on-error-container: oklch(0.92 0.06 27);
|
|
61
|
+
--md-sys-color-success: oklch(0.78 0.12 152); --md-sys-color-on-success: oklch(0.22 0.08 152);
|
|
62
|
+
--md-sys-color-success-container: oklch(0.34 0.1 152); --md-sys-color-on-success-container: oklch(0.9 0.07 152);
|
|
63
|
+
--md-sys-color-background: oklch(0.13 0.012 258); --md-sys-color-on-background: oklch(0.92 0.01 258);
|
|
64
|
+
--md-sys-color-surface: oklch(0.13 0.012 258); --md-sys-color-on-surface: oklch(0.92 0.01 258);
|
|
65
|
+
--md-sys-color-surface-variant: oklch(0.34 0.02 258); --md-sys-color-on-surface-variant: oklch(0.78 0.02 258);
|
|
66
|
+
--md-sys-color-outline: oklch(0.58 0.02 258); --md-sys-color-outline-variant: oklch(0.32 0.02 258);
|
|
67
|
+
--md-sys-color-surface-container-lowest: oklch(0.09 0.012 258); --md-sys-color-surface-container-low: oklch(0.16 0.014 258);
|
|
68
|
+
--md-sys-color-surface-container: oklch(0.18 0.016 258); --md-sys-color-surface-container-high: oklch(0.22 0.018 258);
|
|
69
|
+
--md-sys-color-surface-container-highest: oklch(0.27 0.02 258);
|
|
70
|
+
--md-sys-color-inverse-surface: oklch(0.92 0.01 258); --md-sys-color-inverse-on-surface: oklch(0.2 0.02 258);
|
|
71
|
+
--md-sys-color-inverse-primary: oklch(0.48 0.15 258); --md-sys-color-scrim: oklch(0 0 0);
|
|
72
|
+
}
|
|
73
|
+
[data-theme="andalus"]{
|
|
74
|
+
--md-sys-color-primary: oklch(0.5 0.12 162); --md-sys-color-on-primary: oklch(0.99 0.02 162);
|
|
75
|
+
--md-sys-color-primary-container: oklch(0.9 0.08 162); --md-sys-color-on-primary-container: oklch(0.24 0.1 162);
|
|
76
|
+
--md-sys-color-secondary: oklch(0.52 0.05 162); --md-sys-color-on-secondary: oklch(0.99 0.02 162);
|
|
77
|
+
--md-sys-color-secondary-container: oklch(0.91 0.04 162); --md-sys-color-on-secondary-container: oklch(0.26 0.05 162);
|
|
78
|
+
--md-sys-color-tertiary: oklch(0.62 0.12 86); --md-sys-color-on-tertiary: oklch(0.99 0.02 86);
|
|
79
|
+
--md-sys-color-tertiary-container: oklch(0.9 0.09 86); --md-sys-color-on-tertiary-container: oklch(0.3 0.09 86);
|
|
80
|
+
--md-sys-color-error: oklch(0.52 0.2 27); --md-sys-color-on-error: oklch(0.99 0.02 27);
|
|
81
|
+
--md-sys-color-error-container: oklch(0.92 0.07 27); --md-sys-color-on-error-container: oklch(0.28 0.16 27);
|
|
82
|
+
--md-sys-color-success: oklch(0.56 0.13 150); --md-sys-color-on-success: oklch(0.99 0.02 150);
|
|
83
|
+
--md-sys-color-success-container: oklch(0.9 0.07 150); --md-sys-color-on-success-container: oklch(0.26 0.1 150);
|
|
84
|
+
--md-sys-color-background: oklch(0.985 0.01 150); --md-sys-color-on-background: oklch(0.18 0.02 150);
|
|
85
|
+
--md-sys-color-surface: oklch(0.985 0.01 150); --md-sys-color-on-surface: oklch(0.18 0.02 150);
|
|
86
|
+
--md-sys-color-surface-variant: oklch(0.9 0.025 150); --md-sys-color-on-surface-variant: oklch(0.4 0.03 150);
|
|
87
|
+
--md-sys-color-outline: oklch(0.62 0.025 150); --md-sys-color-outline-variant: oklch(0.86 0.02 150);
|
|
88
|
+
--md-sys-color-surface-container-lowest: oklch(1 0 0); --md-sys-color-surface-container-low: oklch(0.965 0.012 150);
|
|
89
|
+
--md-sys-color-surface-container: oklch(0.945 0.016 150); --md-sys-color-surface-container-high: oklch(0.925 0.02 150);
|
|
90
|
+
--md-sys-color-surface-container-highest: oklch(0.905 0.024 150);
|
|
91
|
+
--md-sys-color-inverse-surface: oklch(0.26 0.02 150); --md-sys-color-inverse-on-surface: oklch(0.96 0.01 150);
|
|
92
|
+
--md-sys-color-inverse-primary: oklch(0.82 0.1 162); --md-sys-color-scrim: oklch(0.08 0.02 150);
|
|
93
|
+
--npt-font-display:'Bricolage Grotesque'; --npt-font-text:'Hanken Grotesk'; --npt-font-num:'Hanken Grotesk';
|
|
94
|
+
--npt-font-display-ar:'Reem Kufi'; --npt-font-text-ar:'Tajawal';
|
|
95
|
+
--npt-corner-xs-base:12px; --npt-corner-sm-base:18px; --npt-corner-md-base:26px; --npt-corner-lg-base:34px; --npt-corner-xl-base:44px; --npt-corner-2xl-base:56px; --npt-corner-full:999px;
|
|
96
|
+
--npt-display-tracking:-0.01em; --npt-display-weight:700;
|
|
97
|
+
/* lever · motion feel (Andalus: calm-graceful) */
|
|
98
|
+
--npt-ease-standard:cubic-bezier(.25,0,.2,1); --npt-ease-emphasized:cubic-bezier(.2,0,.1,1); --npt-ease-spring:cubic-bezier(.3,1.3,.5,1);
|
|
99
|
+
--npt-dur-fast:280ms; --npt-dur-standard:340ms; --npt-dur-slow:560ms;
|
|
100
|
+
/* lever · glass tint (Andalus: warm-amber) */
|
|
101
|
+
--npt-glass-tint:color-mix(in oklab, var(--md-sys-color-tertiary) 9%, color-mix(in oklab, var(--md-sys-color-surface) 72%, transparent)); --npt-glass-blur:16px;
|
|
102
|
+
/* lever · named treatments */
|
|
103
|
+
--npt-login-shell:arcade-arches; --npt-dashboard-hero:warm-balance-cards; --npt-content-tone:warm-hospitable;
|
|
104
|
+
/* brand expression — signature motif (Andalus: heritage arcade of arches) */
|
|
105
|
+
--npt-motif: radial-gradient(circle at 50% 100%, transparent 0 12px, color-mix(in oklab,currentColor 13%,transparent) 12px 13.5px, transparent 14.5px);
|
|
106
|
+
--npt-motif-size: 40px 32px; --npt-motif-strength: 1;
|
|
107
|
+
--npt-hero-emblem: radial-gradient(circle at 50% 118%, transparent 0 34px, color-mix(in oklab,currentColor 16%,transparent) 34px 36px, transparent 37px 52px, color-mix(in oklab,currentColor 12%,transparent) 52px 54px, transparent 55px);
|
|
108
|
+
}
|
|
109
|
+
[data-theme="andalus"][data-mode="dark"]{
|
|
110
|
+
--md-sys-color-primary: oklch(0.82 0.11 162); --md-sys-color-on-primary: oklch(0.22 0.08 162);
|
|
111
|
+
--md-sys-color-primary-container: oklch(0.36 0.1 162); --md-sys-color-on-primary-container: oklch(0.9 0.08 162);
|
|
112
|
+
--md-sys-color-secondary: oklch(0.82 0.045 162); --md-sys-color-on-secondary: oklch(0.24 0.04 162);
|
|
113
|
+
--md-sys-color-secondary-container: oklch(0.34 0.045 162); --md-sys-color-on-secondary-container: oklch(0.9 0.04 162);
|
|
114
|
+
--md-sys-color-tertiary: oklch(0.82 0.1 86); --md-sys-color-on-tertiary: oklch(0.26 0.08 86);
|
|
115
|
+
--md-sys-color-tertiary-container: oklch(0.4 0.09 86); --md-sys-color-on-tertiary-container: oklch(0.92 0.08 86);
|
|
116
|
+
--md-sys-color-error: oklch(0.78 0.13 27); --md-sys-color-on-error: oklch(0.24 0.1 27);
|
|
117
|
+
--md-sys-color-error-container: oklch(0.36 0.14 27); --md-sys-color-on-error-container: oklch(0.92 0.06 27);
|
|
118
|
+
--md-sys-color-success: oklch(0.78 0.12 150); --md-sys-color-on-success: oklch(0.22 0.08 150);
|
|
119
|
+
--md-sys-color-success-container: oklch(0.34 0.1 150); --md-sys-color-on-success-container: oklch(0.9 0.07 150);
|
|
120
|
+
--md-sys-color-background: oklch(0.14 0.014 150); --md-sys-color-on-background: oklch(0.92 0.012 150);
|
|
121
|
+
--md-sys-color-surface: oklch(0.14 0.014 150); --md-sys-color-on-surface: oklch(0.92 0.012 150);
|
|
122
|
+
--md-sys-color-surface-variant: oklch(0.34 0.022 150); --md-sys-color-on-surface-variant: oklch(0.78 0.022 150);
|
|
123
|
+
--md-sys-color-outline: oklch(0.58 0.022 150); --md-sys-color-outline-variant: oklch(0.32 0.022 150);
|
|
124
|
+
--md-sys-color-surface-container-lowest: oklch(0.1 0.014 150); --md-sys-color-surface-container-low: oklch(0.17 0.016 150);
|
|
125
|
+
--md-sys-color-surface-container: oklch(0.19 0.018 150); --md-sys-color-surface-container-high: oklch(0.23 0.02 150);
|
|
126
|
+
--md-sys-color-surface-container-highest: oklch(0.28 0.022 150);
|
|
127
|
+
--md-sys-color-inverse-surface: oklch(0.92 0.012 150); --md-sys-color-inverse-on-surface: oklch(0.22 0.02 150);
|
|
128
|
+
--md-sys-color-inverse-primary: oklch(0.5 0.12 162); --md-sys-color-scrim: oklch(0 0 0);
|
|
129
|
+
}
|
|
130
|
+
[data-theme="nuran"]{
|
|
131
|
+
--md-sys-color-primary: oklch(0.52 0.18 292); --md-sys-color-on-primary: oklch(0.99 0.02 292);
|
|
132
|
+
--md-sys-color-primary-container: oklch(0.91 0.08 292); --md-sys-color-on-primary-container: oklch(0.26 0.16 292);
|
|
133
|
+
--md-sys-color-secondary: oklch(0.54 0.06 292); --md-sys-color-on-secondary: oklch(0.99 0.02 292);
|
|
134
|
+
--md-sys-color-secondary-container: oklch(0.92 0.04 292); --md-sys-color-on-secondary-container: oklch(0.28 0.06 292);
|
|
135
|
+
--md-sys-color-tertiary: oklch(0.6 0.16 350); --md-sys-color-on-tertiary: oklch(0.99 0.02 350);
|
|
136
|
+
--md-sys-color-tertiary-container: oklch(0.91 0.08 350); --md-sys-color-on-tertiary-container: oklch(0.3 0.13 350);
|
|
137
|
+
--md-sys-color-error: oklch(0.52 0.2 27); --md-sys-color-on-error: oklch(0.99 0.02 27);
|
|
138
|
+
--md-sys-color-error-container: oklch(0.92 0.07 27); --md-sys-color-on-error-container: oklch(0.28 0.16 27);
|
|
139
|
+
--md-sys-color-success: oklch(0.58 0.13 152); --md-sys-color-on-success: oklch(0.99 0.02 152);
|
|
140
|
+
--md-sys-color-success-container: oklch(0.9 0.07 152); --md-sys-color-on-success-container: oklch(0.26 0.1 152);
|
|
141
|
+
--md-sys-color-background: oklch(0.985 0.008 300); --md-sys-color-on-background: oklch(0.16 0.02 300);
|
|
142
|
+
--md-sys-color-surface: oklch(0.985 0.008 300); --md-sys-color-on-surface: oklch(0.16 0.02 300);
|
|
143
|
+
--md-sys-color-surface-variant: oklch(0.9 0.022 300); --md-sys-color-on-surface-variant: oklch(0.4 0.03 300);
|
|
144
|
+
--md-sys-color-outline: oklch(0.62 0.025 300); --md-sys-color-outline-variant: oklch(0.86 0.018 300);
|
|
145
|
+
--md-sys-color-surface-container-lowest: oklch(1 0 0); --md-sys-color-surface-container-low: oklch(0.965 0.008 300);
|
|
146
|
+
--md-sys-color-surface-container: oklch(0.945 0.012 300); --md-sys-color-surface-container-high: oklch(0.925 0.016 300);
|
|
147
|
+
--md-sys-color-surface-container-highest: oklch(0.905 0.02 300);
|
|
148
|
+
--md-sys-color-inverse-surface: oklch(0.24 0.02 300); --md-sys-color-inverse-on-surface: oklch(0.96 0.008 300);
|
|
149
|
+
--md-sys-color-inverse-primary: oklch(0.82 0.14 292); --md-sys-color-scrim: oklch(0.08 0.02 300);
|
|
150
|
+
--npt-font-display:'Space Grotesk'; --npt-font-text:'Hanken Grotesk'; --npt-font-num:'Space Grotesk';
|
|
151
|
+
--npt-font-display-ar:'Readex Pro'; --npt-font-text-ar:'Readex Pro';
|
|
152
|
+
--npt-corner-xs-base:4px; --npt-corner-sm-base:8px; --npt-corner-md-base:12px; --npt-corner-lg-base:18px; --npt-corner-xl-base:26px; --npt-corner-2xl-base:36px; --npt-corner-full:999px;
|
|
153
|
+
--npt-display-tracking:-0.03em; --npt-display-weight:600;
|
|
154
|
+
/* lever · motion feel (Nuran: light-quick-crisp) */
|
|
155
|
+
--npt-ease-standard:cubic-bezier(.2,0,0,1); --npt-ease-emphasized:cubic-bezier(.2,0,0,1); --npt-ease-spring:cubic-bezier(.34,1.56,.64,1);
|
|
156
|
+
--npt-dur-fast:200ms; --npt-dur-standard:240ms; --npt-dur-slow:400ms;
|
|
157
|
+
/* lever · glass tint (Nuran: violet-luminous) */
|
|
158
|
+
--npt-glass-tint:color-mix(in oklab, var(--md-sys-color-primary) 12%, color-mix(in oklab, var(--md-sys-color-surface) 62%, transparent)); --npt-glass-blur:22px;
|
|
159
|
+
/* lever · named treatments */
|
|
160
|
+
--npt-login-shell:light-grid-spark; --npt-dashboard-hero:wallet-hero; --npt-content-tone:light-instant;
|
|
161
|
+
/* brand expression — signature motif (Nuran: crisp digital light-grid) */
|
|
162
|
+
--npt-motif: linear-gradient(color-mix(in oklab,currentColor 8%,transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklab,currentColor 8%,transparent) 1px, transparent 1px);
|
|
163
|
+
--npt-motif-size: 23px 23px; --npt-motif-strength: 1;
|
|
164
|
+
--npt-hero-emblem: linear-gradient(125deg, transparent 38%, color-mix(in oklab,currentColor 16%,transparent) 49%, color-mix(in oklab,currentColor 4%,transparent) 50%, transparent 62%);
|
|
165
|
+
}
|
|
166
|
+
[data-theme="nuran"][data-mode="dark"]{
|
|
167
|
+
--md-sys-color-primary: oklch(0.8 0.15 292); --md-sys-color-on-primary: oklch(0.22 0.12 292);
|
|
168
|
+
--md-sys-color-primary-container: oklch(0.38 0.14 292); --md-sys-color-on-primary-container: oklch(0.9 0.08 292);
|
|
169
|
+
--md-sys-color-secondary: oklch(0.82 0.05 292); --md-sys-color-on-secondary: oklch(0.24 0.05 292);
|
|
170
|
+
--md-sys-color-secondary-container: oklch(0.36 0.05 292); --md-sys-color-on-secondary-container: oklch(0.9 0.04 292);
|
|
171
|
+
--md-sys-color-tertiary: oklch(0.8 0.13 350); --md-sys-color-on-tertiary: oklch(0.24 0.1 350);
|
|
172
|
+
--md-sys-color-tertiary-container: oklch(0.4 0.13 350); --md-sys-color-on-tertiary-container: oklch(0.92 0.08 350);
|
|
173
|
+
--md-sys-color-error: oklch(0.78 0.13 27); --md-sys-color-on-error: oklch(0.24 0.1 27);
|
|
174
|
+
--md-sys-color-error-container: oklch(0.36 0.14 27); --md-sys-color-on-error-container: oklch(0.92 0.06 27);
|
|
175
|
+
--md-sys-color-success: oklch(0.78 0.12 152); --md-sys-color-on-success: oklch(0.22 0.08 152);
|
|
176
|
+
--md-sys-color-success-container: oklch(0.34 0.1 152); --md-sys-color-on-success-container: oklch(0.9 0.07 152);
|
|
177
|
+
--md-sys-color-background: oklch(0.13 0.014 300); --md-sys-color-on-background: oklch(0.92 0.012 300);
|
|
178
|
+
--md-sys-color-surface: oklch(0.13 0.014 300); --md-sys-color-on-surface: oklch(0.92 0.012 300);
|
|
179
|
+
--md-sys-color-surface-variant: oklch(0.34 0.024 300); --md-sys-color-on-surface-variant: oklch(0.78 0.024 300);
|
|
180
|
+
--md-sys-color-outline: oklch(0.58 0.024 300); --md-sys-color-outline-variant: oklch(0.32 0.024 300);
|
|
181
|
+
--md-sys-color-surface-container-lowest: oklch(0.09 0.014 300); --md-sys-color-surface-container-low: oklch(0.16 0.016 300);
|
|
182
|
+
--md-sys-color-surface-container: oklch(0.18 0.018 300); --md-sys-color-surface-container-high: oklch(0.22 0.02 300);
|
|
183
|
+
--md-sys-color-surface-container-highest: oklch(0.27 0.022 300);
|
|
184
|
+
--md-sys-color-inverse-surface: oklch(0.92 0.012 300); --md-sys-color-inverse-on-surface: oklch(0.2 0.02 300);
|
|
185
|
+
--md-sys-color-inverse-primary: oklch(0.52 0.18 292); --md-sys-color-scrim: oklch(0 0 0);
|
|
186
|
+
}
|
|
187
|
+
[data-theme="fglb"]{
|
|
188
|
+
--md-sys-color-primary: oklch(0.42 0.13 248); --md-sys-color-on-primary: oklch(0.99 0.02 248);
|
|
189
|
+
--md-sys-color-primary-container: oklch(0.89 0.07 248); --md-sys-color-on-primary-container: oklch(0.2 0.12 248);
|
|
190
|
+
--md-sys-color-secondary: oklch(0.5 0.05 248); --md-sys-color-on-secondary: oklch(0.99 0.02 248);
|
|
191
|
+
--md-sys-color-secondary-container: oklch(0.91 0.035 250); --md-sys-color-on-secondary-container: oklch(0.24 0.05 248);
|
|
192
|
+
--md-sys-color-tertiary: oklch(0.66 0.12 85); --md-sys-color-on-tertiary: oklch(0.99 0.02 85);
|
|
193
|
+
--md-sys-color-tertiary-container: oklch(0.9 0.09 85); --md-sys-color-on-tertiary-container: oklch(0.32 0.09 85);
|
|
194
|
+
--md-sys-color-error: oklch(0.52 0.2 27); --md-sys-color-on-error: oklch(0.99 0.02 27);
|
|
195
|
+
--md-sys-color-error-container: oklch(0.92 0.07 27); --md-sys-color-on-error-container: oklch(0.28 0.16 27);
|
|
196
|
+
--md-sys-color-success: oklch(0.58 0.13 152); --md-sys-color-on-success: oklch(0.99 0.02 152);
|
|
197
|
+
--md-sys-color-success-container: oklch(0.9 0.07 152); --md-sys-color-on-success-container: oklch(0.26 0.1 152);
|
|
198
|
+
--md-sys-color-background: oklch(0.985 0.005 245); --md-sys-color-on-background: oklch(0.15 0.02 248);
|
|
199
|
+
--md-sys-color-surface: oklch(0.985 0.005 245); --md-sys-color-on-surface: oklch(0.15 0.02 248);
|
|
200
|
+
--md-sys-color-surface-variant: oklch(0.9 0.016 245); --md-sys-color-on-surface-variant: oklch(0.4 0.025 248);
|
|
201
|
+
--md-sys-color-outline: oklch(0.62 0.02 245); --md-sys-color-outline-variant: oklch(0.86 0.014 245);
|
|
202
|
+
--md-sys-color-surface-container-lowest: oklch(1 0 0); --md-sys-color-surface-container-low: oklch(0.965 0.005 245);
|
|
203
|
+
--md-sys-color-surface-container: oklch(0.945 0.007 245); --md-sys-color-surface-container-high: oklch(0.925 0.009 245);
|
|
204
|
+
--md-sys-color-surface-container-highest: oklch(0.905 0.011 245);
|
|
205
|
+
--md-sys-color-inverse-surface: oklch(0.22 0.02 248); --md-sys-color-inverse-on-surface: oklch(0.96 0.005 245);
|
|
206
|
+
--md-sys-color-inverse-primary: oklch(0.78 0.11 248); --md-sys-color-scrim: oklch(0.06 0.02 248);
|
|
207
|
+
--npt-font-display:'Sora'; --npt-font-text:'Hanken Grotesk'; --npt-font-num:'Sora';
|
|
208
|
+
--npt-font-display-ar:'Noto Kufi Arabic'; --npt-font-text-ar:'IBM Plex Sans Arabic';
|
|
209
|
+
--npt-corner-xs-base:6px; --npt-corner-sm-base:10px; --npt-corner-md-base:14px; --npt-corner-lg-base:20px; --npt-corner-xl-base:28px; --npt-corner-2xl-base:38px; --npt-corner-full:999px;
|
|
210
|
+
--npt-display-tracking:-0.02em; --npt-display-weight:700;
|
|
211
|
+
/* lever · motion feel (FGLB: stable-minimal-authoritative) */
|
|
212
|
+
--npt-ease-standard:cubic-bezier(.3,0,.2,1); --npt-ease-emphasized:cubic-bezier(.25,0,.15,1); --npt-ease-spring:cubic-bezier(.2,.9,.3,1);
|
|
213
|
+
--npt-dur-fast:240ms; --npt-dur-standard:280ms; --npt-dur-slow:460ms;
|
|
214
|
+
/* lever · glass tint (FGLB: navy-steel) */
|
|
215
|
+
--npt-glass-tint:color-mix(in oklab, var(--md-sys-color-primary) 7%, color-mix(in oklab, var(--md-sys-color-surface) 76%, transparent)); --npt-glass-blur:14px;
|
|
216
|
+
/* lever · named treatments */
|
|
217
|
+
--npt-login-shell:shield-guilloche; --npt-dashboard-hero:restrained-balance; --npt-content-tone:formal-authoritative;
|
|
218
|
+
/* brand expression — signature motif (FGLB: secure guilloché / shield) */
|
|
219
|
+
--npt-motif: repeating-linear-gradient(45deg, color-mix(in oklab,currentColor 7%,transparent) 0 1px, transparent 1px 12px), repeating-linear-gradient(-45deg, color-mix(in oklab,currentColor 7%,transparent) 0 1px, transparent 1px 12px);
|
|
220
|
+
--npt-motif-size: auto; --npt-motif-strength: .85;
|
|
221
|
+
--npt-hero-emblem: linear-gradient(135deg, transparent 45%, color-mix(in oklab,currentColor 15%,transparent) 47% 49%, transparent 51%), linear-gradient(-135deg, transparent 45%, color-mix(in oklab,currentColor 15%,transparent) 47% 49%, transparent 51%), linear-gradient(135deg, transparent 62%, color-mix(in oklab,currentColor 9%,transparent) 64% 66%, transparent 68%);
|
|
222
|
+
}
|
|
223
|
+
[data-theme="fglb"][data-mode="dark"]{
|
|
224
|
+
--md-sys-color-primary: oklch(0.78 0.11 248); --md-sys-color-on-primary: oklch(0.18 0.09 248);
|
|
225
|
+
--md-sys-color-primary-container: oklch(0.34 0.11 248); --md-sys-color-on-primary-container: oklch(0.88 0.07 248);
|
|
226
|
+
--md-sys-color-secondary: oklch(0.82 0.04 248); --md-sys-color-on-secondary: oklch(0.22 0.04 248);
|
|
227
|
+
--md-sys-color-secondary-container: oklch(0.33 0.04 248); --md-sys-color-on-secondary-container: oklch(0.9 0.035 248);
|
|
228
|
+
--md-sys-color-tertiary: oklch(0.82 0.11 85); --md-sys-color-on-tertiary: oklch(0.24 0.08 85);
|
|
229
|
+
--md-sys-color-tertiary-container: oklch(0.4 0.1 85); --md-sys-color-on-tertiary-container: oklch(0.92 0.08 85);
|
|
230
|
+
--md-sys-color-error: oklch(0.78 0.13 27); --md-sys-color-on-error: oklch(0.24 0.1 27);
|
|
231
|
+
--md-sys-color-error-container: oklch(0.36 0.14 27); --md-sys-color-on-error-container: oklch(0.92 0.06 27);
|
|
232
|
+
--md-sys-color-success: oklch(0.78 0.12 152); --md-sys-color-on-success: oklch(0.22 0.08 152);
|
|
233
|
+
--md-sys-color-success-container: oklch(0.34 0.1 152); --md-sys-color-on-success-container: oklch(0.9 0.07 152);
|
|
234
|
+
--md-sys-color-background: oklch(0.12 0.012 248); --md-sys-color-on-background: oklch(0.92 0.01 245);
|
|
235
|
+
--md-sys-color-surface: oklch(0.12 0.012 248); --md-sys-color-on-surface: oklch(0.92 0.01 245);
|
|
236
|
+
--md-sys-color-surface-variant: oklch(0.33 0.02 248); --md-sys-color-on-surface-variant: oklch(0.78 0.02 245);
|
|
237
|
+
--md-sys-color-outline: oklch(0.58 0.02 245); --md-sys-color-outline-variant: oklch(0.31 0.02 245);
|
|
238
|
+
--md-sys-color-surface-container-lowest: oklch(0.08 0.012 248); --md-sys-color-surface-container-low: oklch(0.15 0.014 248);
|
|
239
|
+
--md-sys-color-surface-container: oklch(0.17 0.016 248); --md-sys-color-surface-container-high: oklch(0.21 0.018 248);
|
|
240
|
+
--md-sys-color-surface-container-highest: oklch(0.26 0.02 248);
|
|
241
|
+
--md-sys-color-inverse-surface: oklch(0.92 0.01 245); --md-sys-color-inverse-on-surface: oklch(0.2 0.02 248);
|
|
242
|
+
--md-sys-color-inverse-primary: oklch(0.42 0.13 248); --md-sys-color-scrim: oklch(0 0 0);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* RTL font swap */
|
|
246
|
+
[data-theme][dir="rtl"]{ --npt-font-display:var(--npt-font-display-ar); --npt-font-text:var(--npt-font-text-ar); --npt-font-num:var(--npt-font-text-ar); }
|