@mosaic-media/sdui-react 0.1.0 → 0.1.5

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.
Files changed (52) hide show
  1. package/README.md +75 -1
  2. package/dist/components/controls.d.ts +13 -0
  3. package/dist/components/controls.d.ts.map +1 -1
  4. package/dist/components/controls.js +73 -4
  5. package/dist/components/controls.js.map +1 -1
  6. package/dist/components/definitions.d.ts.map +1 -1
  7. package/dist/components/definitions.js +60 -18
  8. package/dist/components/definitions.js.map +1 -1
  9. package/dist/components/definitions.layout.d.ts.map +1 -1
  10. package/dist/components/definitions.layout.js +8 -6
  11. package/dist/components/definitions.layout.js.map +1 -1
  12. package/dist/components/index.d.ts.map +1 -1
  13. package/dist/components/index.js +7 -1
  14. package/dist/components/index.js.map +1 -1
  15. package/dist/components/media.d.ts.map +1 -1
  16. package/dist/components/media.js +3 -1
  17. package/dist/components/media.js.map +1 -1
  18. package/dist/components/primitives.d.ts +7 -1
  19. package/dist/components/primitives.d.ts.map +1 -1
  20. package/dist/components/primitives.js +98 -4
  21. package/dist/components/primitives.js.map +1 -1
  22. package/dist/components/shared.d.ts +1 -1
  23. package/dist/components/shared.d.ts.map +1 -1
  24. package/dist/components/shared.js +5 -0
  25. package/dist/components/shared.js.map +1 -1
  26. package/dist/components/shell.d.ts +12 -0
  27. package/dist/components/shell.d.ts.map +1 -0
  28. package/dist/components/shell.js +34 -0
  29. package/dist/components/shell.js.map +1 -0
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/sdui/ShellProvider.d.ts +6 -1
  35. package/dist/sdui/ShellProvider.d.ts.map +1 -1
  36. package/dist/sdui/ShellProvider.js +24 -9
  37. package/dist/sdui/ShellProvider.js.map +1 -1
  38. package/dist/sdui/artlight.d.ts +18 -0
  39. package/dist/sdui/artlight.d.ts.map +1 -0
  40. package/dist/sdui/artlight.js +196 -0
  41. package/dist/sdui/artlight.js.map +1 -0
  42. package/dist/sdui/context.d.ts +4 -0
  43. package/dist/sdui/context.d.ts.map +1 -1
  44. package/dist/sdui/context.js.map +1 -1
  45. package/dist/sdui/style.d.ts +3 -0
  46. package/dist/sdui/style.d.ts.map +1 -1
  47. package/dist/sdui/style.js +4 -0
  48. package/dist/sdui/style.js.map +1 -1
  49. package/dist/styles/components.css +168 -30
  50. package/dist/styles/global.css +7 -1
  51. package/dist/styles/tokens.css +135 -45
  52. package/package.json +7 -3
@@ -0,0 +1,196 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // SPDX-FileCopyrightText: 2026 the Mosaic authors
3
+ const GLOW_VARS = ["--art-glow-1", "--art-glow-2", "--art-glow-3"];
4
+ const ACCENT_VARS = ["--accent-rgb", "--accent-2-rgb"];
5
+ /* Per-theme alpha for each ambient (background) glow layer — mirrors the token
6
+ defaults so a sampled palette sits at the same intensity as the fallback duo. */
7
+ const ALPHA_DARK = [0.24, 0.16, 0.11];
8
+ const ALPHA_LIGHT = [0.5, 0.42, 0.34];
9
+ /* Target saturation/lightness the sampled hue is re-toned to before it becomes
10
+ the UI accent. Fixing S/L keeps buttons, nav and focus rings legible whatever
11
+ the artwork looks like — only the HUE travels. */
12
+ const TONE_DARK = { s: 0.9, l: 0.7 };
13
+ const TONE_LIGHT = { s: 0.85, l: 0.6 };
14
+ /** The standing ambient source (typically the hero art of the current screen). */
15
+ let ambient = null;
16
+ const root = () => (typeof document === "undefined" ? null : document.documentElement);
17
+ function isLight() {
18
+ return root()?.dataset.theme === "light";
19
+ }
20
+ function alphas() {
21
+ return isLight() ? ALPHA_LIGHT : ALPHA_DARK;
22
+ }
23
+ /**
24
+ * Write (or, with null, clear) the art-light vars:
25
+ * - --art-glow-1/2/3 : the raw vibrant palette, at the ambient background alpha
26
+ * - --accent-rgb / --accent-2-rgb : the two lead hues re-toned to a legible
27
+ * accent, which retints every accent-derived surface (buttons, nav, glows…)
28
+ * Clearing removes all of them so the tokens fall back to the brand duo.
29
+ */
30
+ function paint(colors) {
31
+ const el = root();
32
+ if (!el)
33
+ return;
34
+ if (!colors || colors.length === 0) {
35
+ [...GLOW_VARS, ...ACCENT_VARS].forEach((v) => el.style.removeProperty(v));
36
+ return;
37
+ }
38
+ const a = alphas();
39
+ GLOW_VARS.forEach((v, i) => {
40
+ const c = colors[Math.min(i, colors.length - 1)];
41
+ el.style.setProperty(v, `rgba(${c[0]}, ${c[1]}, ${c[2]}, ${a[i]})`);
42
+ });
43
+ const tone = isLight() ? TONE_LIGHT : TONE_DARK;
44
+ const h1 = rgbToHsl(...colors[0])[0];
45
+ const h2 = colors[1] ? rgbToHsl(...colors[1])[0] : (h1 + 35) % 360;
46
+ el.style.setProperty("--accent-rgb", hslToRgb(h1, tone.s, tone.l).join(", "));
47
+ el.style.setProperty("--accent-2-rgb", hslToRgb(h2, tone.s, tone.l).join(", "));
48
+ }
49
+ // ── colour maths ──────────────────────────────────────────────────────────
50
+ function rgbToHsv(r, g, b) {
51
+ r /= 255;
52
+ g /= 255;
53
+ b /= 255;
54
+ const max = Math.max(r, g, b);
55
+ const min = Math.min(r, g, b);
56
+ const d = max - min;
57
+ let h = 0;
58
+ if (d !== 0) {
59
+ if (max === r)
60
+ h = ((g - b) / d) % 6;
61
+ else if (max === g)
62
+ h = (b - r) / d + 2;
63
+ else
64
+ h = (r - g) / d + 4;
65
+ h *= 60;
66
+ if (h < 0)
67
+ h += 360;
68
+ }
69
+ return [h, max === 0 ? 0 : d / max, max];
70
+ }
71
+ function rgbToHsl(r, g, b) {
72
+ r /= 255;
73
+ g /= 255;
74
+ b /= 255;
75
+ const max = Math.max(r, g, b);
76
+ const min = Math.min(r, g, b);
77
+ const d = max - min;
78
+ const l = (max + min) / 2;
79
+ let h = 0;
80
+ let s = 0;
81
+ if (d !== 0) {
82
+ s = d / (1 - Math.abs(2 * l - 1));
83
+ if (max === r)
84
+ h = ((g - b) / d) % 6;
85
+ else if (max === g)
86
+ h = (b - r) / d + 2;
87
+ else
88
+ h = (r - g) / d + 4;
89
+ h *= 60;
90
+ if (h < 0)
91
+ h += 360;
92
+ }
93
+ return [h, s, l];
94
+ }
95
+ function hslToRgb(h, s, l) {
96
+ const c = (1 - Math.abs(2 * l - 1)) * s;
97
+ const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
98
+ const m = l - c / 2;
99
+ let r = 0;
100
+ let g = 0;
101
+ let b = 0;
102
+ if (h < 60)
103
+ [r, g, b] = [c, x, 0];
104
+ else if (h < 120)
105
+ [r, g, b] = [x, c, 0];
106
+ else if (h < 180)
107
+ [r, g, b] = [0, c, x];
108
+ else if (h < 240)
109
+ [r, g, b] = [0, x, c];
110
+ else if (h < 300)
111
+ [r, g, b] = [x, 0, c];
112
+ else
113
+ [r, g, b] = [c, 0, x];
114
+ return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)];
115
+ }
116
+ /**
117
+ * Sample up to `max` vibrant, hue-distinct colours from a loaded, origin-clean
118
+ * image. Returns null if the canvas is unreadable (tainted / not ready) or the
119
+ * image has no colour worth reflecting — the caller then keeps the duo.
120
+ */
121
+ export function sampleArtColors(img, max = 3) {
122
+ const W = 24;
123
+ const H = 36;
124
+ try {
125
+ const canvas = document.createElement("canvas");
126
+ canvas.width = W;
127
+ canvas.height = H;
128
+ const ctx = canvas.getContext("2d", { willReadFrequently: true });
129
+ if (!ctx)
130
+ return null;
131
+ ctx.drawImage(img, 0, 0, W, H);
132
+ const { data } = ctx.getImageData(0, 0, W, H);
133
+ const buckets = new Map();
134
+ for (let i = 0; i < data.length; i += 4) {
135
+ const [r, g, b, a] = [data[i], data[i + 1], data[i + 2], data[i + 3]];
136
+ if (a < 128)
137
+ continue;
138
+ const [h, s, v] = rgbToHsv(r, g, b);
139
+ if (v < 0.16 || s < 0.12)
140
+ continue; // skip near-black and near-grey
141
+ const w = s * s * v; // favour saturated, lit pixels
142
+ const key = Math.round(h / 30) % 12;
143
+ const acc = buckets.get(key) ?? { r: 0, g: 0, b: 0, w: 0 };
144
+ acc.r += r * w;
145
+ acc.g += g * w;
146
+ acc.b += b * w;
147
+ acc.w += w;
148
+ buckets.set(key, acc);
149
+ }
150
+ if (buckets.size === 0)
151
+ return null;
152
+ const ranked = [...buckets.values()]
153
+ .sort((p, q) => q.w - p.w)
154
+ .slice(0, max)
155
+ .map((bkt) => vivify(bkt.r / bkt.w, bkt.g / bkt.w, bkt.b / bkt.w));
156
+ return ranked.length ? ranked : null;
157
+ }
158
+ catch {
159
+ return null;
160
+ }
161
+ }
162
+ /** Nudge a sampled mean toward the vivid edge so the glow reads clearly. */
163
+ function vivify(r, g, b) {
164
+ const max = Math.max(r, g, b) || 1;
165
+ const boost = Math.min(1.35, 255 / max); // lift toward full value, capped
166
+ return [
167
+ Math.round(Math.min(255, r * boost)),
168
+ Math.round(Math.min(255, g * boost)),
169
+ Math.round(Math.min(255, b * boost)),
170
+ ];
171
+ }
172
+ // ── public controls ─────────────────────────────────────────────────────────
173
+ /** Make `colors` the standing ambient light (the screen's focused artwork). */
174
+ export function setAmbientArt(colors) {
175
+ ambient = colors && colors.length ? colors : null;
176
+ paint(ambient);
177
+ }
178
+ /** Temporarily override the wash — e.g. while a poster is hovered. */
179
+ export function focusArt(colors) {
180
+ if (colors.length)
181
+ paint(colors);
182
+ }
183
+ /** Release a transient focus, falling back to the standing ambient (or duo). */
184
+ export function releaseArt() {
185
+ paint(ambient);
186
+ }
187
+ /** Drop the standing ambient entirely (e.g. leaving a screen) → back to the duo. */
188
+ export function clearAmbientArt() {
189
+ ambient = null;
190
+ paint(null);
191
+ }
192
+ /** Repaint the standing ambient — call after a theme change so alpha follows. */
193
+ export function refreshArtLight() {
194
+ paint(ambient);
195
+ }
196
+ //# sourceMappingURL=artlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artlight.js","sourceRoot":"","sources":["../../src/sdui/artlight.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export interface ShellRuntime {
11
11
  emit: (action?: Action) => void;
12
12
  /** Current screen name, for highlighting nav. */
13
13
  screen: string;
14
+ /** Stream a field value up as it changes (search-as-you-type). Present only
15
+ * in a live session (ADR 0032); absent otherwise, so a component falls back
16
+ * to submit-on-enter. */
17
+ input?: (value: string) => void;
14
18
  }
15
19
  export declare const ShellRuntimeContext: import("react").Context<ShellRuntime | null>;
16
20
  export declare function useRuntime(): ShellRuntime;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/sdui/context.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,oDAAoD;IACpD,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,mBAAmB,8CAA2C,CAAC;AAE5E,wBAAgB,UAAU,IAAI,YAAY,CAMzC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/sdui/context.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,oDAAoD;IACpD,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf;;8BAE0B;IAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,eAAO,MAAM,mBAAmB,8CAA2C,CAAC;AAE5E,wBAAgB,UAAU,IAAI,YAAY,CAMzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sdui/context.tsx"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,kDAAkD;AAElD;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAkBlD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAsB,IAAI,CAAC,CAAC;AAE5E,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sdui/context.tsx"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,kDAAkD;AAElD;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAsBlD,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAsB,IAAI,CAAC,CAAC;AAE5E,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -42,6 +42,9 @@ export interface BoxStyle {
42
42
  to: GradientStop;
43
43
  angle?: number;
44
44
  };
45
+ /** Frosted-glass backdrop blur (web: backdrop-filter; Flutter: BackdropFilter).
46
+ * Pair with a translucent `bg` so what's behind shows through the frost. */
47
+ glass?: boolean;
45
48
  color?: ColorToken;
46
49
  radius?: RadiusToken;
47
50
  border?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/sdui/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../src/sdui/style.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,10 @@ export function boxToCss(s) {
79
79
  const stop = (c) => (c === "transparent" ? "transparent" : `var(--color-${c})`);
80
80
  css.background = `linear-gradient(${s.bgGradient.angle ?? 180}deg, ${stop(s.bgGradient.from)}, ${stop(s.bgGradient.to)})`;
81
81
  }
82
+ if (s.glass) {
83
+ css.backdropFilter = "blur(var(--glass-blur))";
84
+ css.WebkitBackdropFilter = "blur(var(--glass-blur))";
85
+ }
82
86
  if (s.color)
83
87
  css.color = color(s.color);
84
88
  if (s.radius)
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/sdui/style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/sdui/style.ts"],"names":[],"mappings":"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"}
@@ -34,10 +34,14 @@
34
34
  cursor: not-allowed;
35
35
  }
36
36
  .msc-pressable--lift {
37
- transition: transform var(--dur-med) var(--ease), box-shadow var(--dur-med) var(--ease);
37
+ transition: transform var(--dur-med) var(--ease), box-shadow var(--dur-med) var(--ease),
38
+ filter var(--dur-med) var(--ease);
38
39
  }
39
40
  .msc-pressable--lift:hover:not(:disabled) {
40
41
  transform: translateY(-4px);
42
+ /* Lift toward the light: closer surfaces catch a stronger accent glow. */
43
+ box-shadow: var(--glow-accent);
44
+ filter: saturate(1.05);
41
45
  }
42
46
  .msc-prim-placeholder {
43
47
  color: var(--color-text-faint);
@@ -48,22 +52,34 @@
48
52
  }
49
53
 
50
54
  /* ─────────────────────── app chrome ─────────────────────── */
55
+ /* Concept layout: the sidebar is a floating rounded glass panel beside the
56
+ content, not a full-bleed column — everything sits on the ambient wash. */
51
57
  .msc-app {
52
58
  display: grid;
53
59
  grid-template-columns: 248px 1fr;
60
+ gap: var(--space-5);
54
61
  min-height: 100vh;
62
+ padding: 0 var(--space-4) var(--space-4);
55
63
  }
56
64
 
57
65
  .msc-sidebar {
58
66
  display: flex;
59
67
  flex-direction: column;
60
- gap: var(--space-5);
68
+ gap: var(--space-4);
61
69
  padding: var(--space-5) var(--space-4);
62
- background: var(--color-surface);
63
- border-right: 1px solid var(--color-border);
70
+ /* Frosted glass that catches the artwork's colour along its top edge (the
71
+ accent tint is art-driven), fading into the neutral surface below. */
72
+ background: linear-gradient(178deg, var(--color-accent-quiet), transparent 40%), var(--color-surface);
73
+ backdrop-filter: blur(var(--glass-blur));
74
+ -webkit-backdrop-filter: blur(var(--glass-blur));
75
+ border: 1px solid var(--color-border);
76
+ border-radius: var(--radius-xl);
77
+ box-shadow: var(--shadow-2);
64
78
  position: sticky;
65
- top: 0;
66
- height: 100vh;
79
+ top: var(--space-4);
80
+ margin-top: var(--space-4);
81
+ height: calc(100vh - 2 * var(--space-4));
82
+ overflow-y: auto;
67
83
  }
68
84
  .msc-sidebar__brand {
69
85
  display: flex;
@@ -74,9 +90,9 @@
74
90
  .msc-sidebar__logo {
75
91
  width: 30px;
76
92
  height: 30px;
77
- border-radius: 8px;
78
- background: conic-gradient(from 210deg, var(--color-accent), #8b5cf6, #22d3ee, var(--color-accent));
79
- box-shadow: var(--shadow-1);
93
+ border-radius: 9px;
94
+ background: var(--gradient-brand);
95
+ box-shadow: var(--glow-accent);
80
96
  }
81
97
  .msc-sidebar__name {
82
98
  font-size: var(--text-lg);
@@ -118,14 +134,86 @@
118
134
  .msc-navitem.is-active {
119
135
  background: var(--color-accent-quiet);
120
136
  color: var(--color-accent);
137
+ box-shadow: inset 0 0 0 1px var(--color-accent-quiet), var(--glow-accent);
138
+ }
139
+ .msc-sidebar__label {
140
+ font-size: var(--text-xs);
141
+ font-weight: var(--weight-medium);
142
+ text-transform: uppercase;
143
+ letter-spacing: 0.1em;
144
+ color: var(--color-text-faint);
145
+ padding: var(--space-2) var(--space-2) 0;
146
+ }
147
+ .msc-sidebar__recent {
148
+ display: flex;
149
+ gap: var(--space-2);
150
+ padding: 0 var(--space-2);
151
+ }
152
+ .msc-sidebar__thumb {
153
+ width: 44px;
154
+ aspect-ratio: 2 / 3;
155
+ padding: 0;
156
+ border-radius: var(--radius-sm);
157
+ border: 1px solid var(--color-border);
158
+ background: var(--color-surface-raised);
159
+ overflow: hidden;
160
+ cursor: pointer;
161
+ transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
162
+ }
163
+ .msc-sidebar__thumb:hover {
164
+ transform: translateY(-2px);
165
+ box-shadow: var(--glow-accent);
166
+ }
167
+ .msc-sidebar__thumb img {
168
+ width: 100%;
169
+ height: 100%;
170
+ object-fit: cover;
121
171
  }
122
172
  .msc-sidebar__foot {
123
173
  margin-top: auto;
124
- padding: 0 var(--space-2);
174
+ display: flex;
175
+ flex-direction: column;
176
+ gap: var(--space-2);
177
+ }
178
+ .msc-usercard {
179
+ display: flex;
180
+ align-items: center;
181
+ gap: var(--space-3);
182
+ width: 100%;
183
+ padding: var(--space-3);
184
+ border: 1px solid var(--color-border);
185
+ border-radius: var(--radius-lg);
186
+ background: var(--color-surface-raised);
187
+ color: inherit;
188
+ font: inherit;
189
+ text-align: left;
190
+ cursor: pointer;
191
+ transition: border-color var(--dur-fast) var(--ease);
192
+ }
193
+ .msc-usercard:hover {
194
+ border-color: var(--color-border-strong);
195
+ }
196
+ .msc-usercard__info {
197
+ display: flex;
198
+ flex-direction: column;
199
+ min-width: 0;
200
+ flex: 1;
201
+ }
202
+ .msc-usercard__name {
203
+ font-size: var(--text-sm);
204
+ font-weight: var(--weight-medium);
205
+ }
206
+ .msc-usercard__role {
207
+ font-size: var(--text-xs);
208
+ color: var(--color-text-faint);
209
+ }
210
+ .msc-usercard .msc-icon {
211
+ color: var(--color-text-faint);
125
212
  }
126
213
  .msc-sidebar__version {
127
214
  font-size: var(--text-xs);
128
215
  color: var(--color-text-faint);
216
+ padding: 0 var(--space-2);
129
217
  }
130
218
 
131
219
  .msc-main {
@@ -133,18 +221,15 @@
133
221
  display: flex;
134
222
  flex-direction: column;
135
223
  }
224
+ /* The header floats directly on the ambient wash like every other panel — no
225
+ full-bleed band, no border. The search field is its own glass element. */
136
226
  .msc-topbar {
137
- position: sticky;
138
- top: 0;
139
- z-index: 10;
140
- display: flex;
227
+ display: grid;
228
+ grid-template-columns: 1fr minmax(0, 560px) 1fr;
141
229
  align-items: center;
142
- justify-content: space-between;
143
230
  gap: var(--space-4);
144
- padding: var(--space-3) var(--shell-gutter);
145
- background: color-mix(in srgb, var(--color-bg) 82%, transparent);
146
- backdrop-filter: blur(12px);
147
- border-bottom: 1px solid var(--color-border);
231
+ /* Match the content gutter so the crumb/search align with the cards below. */
232
+ padding: var(--space-4) var(--shell-gutter) var(--space-2);
148
233
  }
149
234
  .msc-topbar__left,
150
235
  .msc-topbar__right {
@@ -152,6 +237,13 @@
152
237
  align-items: center;
153
238
  gap: var(--space-3);
154
239
  }
240
+ .msc-topbar__right {
241
+ justify-content: flex-end;
242
+ }
243
+ .msc-topbar__search {
244
+ width: 100%;
245
+ max-width: none;
246
+ }
155
247
  .msc-topbar__crumb {
156
248
  font-weight: var(--weight-medium);
157
249
  color: var(--color-text-muted);
@@ -236,6 +328,8 @@
236
328
  top: calc(100% + var(--space-1));
237
329
  min-width: 180px;
238
330
  background: var(--color-surface-overlay);
331
+ backdrop-filter: blur(var(--glass-blur));
332
+ -webkit-backdrop-filter: blur(var(--glass-blur));
239
333
  border: 1px solid var(--color-border);
240
334
  border-radius: var(--radius-md);
241
335
  box-shadow: var(--shadow-2);
@@ -269,6 +363,8 @@
269
363
  align-items: center;
270
364
  gap: var(--space-3);
271
365
  background: var(--color-surface-raised);
366
+ backdrop-filter: blur(var(--glass-blur));
367
+ -webkit-backdrop-filter: blur(var(--glass-blur));
272
368
  border: 1px solid var(--color-border);
273
369
  border-radius: var(--radius-pill);
274
370
  padding: var(--space-3) var(--space-4);
@@ -276,6 +372,7 @@
276
372
  }
277
373
  .msc-search:focus-within {
278
374
  border-color: var(--color-accent);
375
+ box-shadow: var(--glow-accent);
279
376
  }
280
377
  .msc-search__icon {
281
378
  color: var(--color-text-faint);
@@ -348,7 +445,7 @@
348
445
  flex: none;
349
446
  }
350
447
  .msc-toggle__track.is-on {
351
- background: var(--color-accent);
448
+ background: var(--gradient-accent);
352
449
  }
353
450
  .msc-toggle__thumb {
354
451
  position: absolute;
@@ -426,7 +523,7 @@
426
523
  .msc-progress__fill {
427
524
  height: 100%;
428
525
  border-radius: inherit;
429
- background: var(--color-accent);
526
+ background: var(--gradient-accent);
430
527
  transition: width var(--dur-med) var(--ease);
431
528
  }
432
529
  .msc-progress__fill--success {
@@ -439,6 +536,32 @@
439
536
  background: var(--color-danger);
440
537
  }
441
538
 
539
+ .msc-ring {
540
+ position: relative;
541
+ display: inline-grid;
542
+ place-items: center;
543
+ flex: none;
544
+ }
545
+ .msc-ring svg {
546
+ position: absolute;
547
+ inset: 0;
548
+ }
549
+ .msc-ring__track {
550
+ fill: none;
551
+ stroke: var(--color-progress-track);
552
+ }
553
+ .msc-ring__fill {
554
+ fill: none;
555
+ stroke: var(--color-accent);
556
+ stroke-linecap: round;
557
+ transition: stroke-dashoffset var(--dur-med) var(--ease), stroke var(--dur-slow) var(--ease);
558
+ }
559
+ .msc-ring__value {
560
+ font-size: var(--text-lg);
561
+ font-weight: var(--weight-bold);
562
+ font-variant-numeric: tabular-nums;
563
+ }
564
+
442
565
  .msc-seasons {
443
566
  display: flex;
444
567
  gap: var(--space-2);
@@ -455,9 +578,10 @@
455
578
  font-weight: var(--weight-medium);
456
579
  }
457
580
  .msc-seasons__pill.is-active {
458
- background: var(--color-accent);
581
+ background: var(--gradient-accent);
459
582
  color: var(--color-text-on-accent);
460
583
  border-color: transparent;
584
+ box-shadow: var(--glow-accent);
461
585
  }
462
586
 
463
587
  /* ──────────── computed / animated primitives ──────────── */
@@ -542,11 +666,15 @@
542
666
  position: absolute;
543
667
  inset: 0;
544
668
  background: var(--color-scrim);
545
- backdrop-filter: blur(2px);
669
+ backdrop-filter: blur(4px);
670
+ -webkit-backdrop-filter: blur(4px);
546
671
  }
547
672
  .msc-overlay__panel {
548
673
  position: relative;
549
- background: var(--color-surface);
674
+ background: var(--color-surface-overlay);
675
+ backdrop-filter: blur(var(--glass-blur));
676
+ -webkit-backdrop-filter: blur(var(--glass-blur));
677
+ border: 1px solid var(--color-border);
550
678
  box-shadow: var(--shadow-3);
551
679
  overflow: auto;
552
680
  animation: msc-pop var(--dur-med) var(--ease);
@@ -624,6 +752,8 @@
624
752
  padding: var(--space-3) var(--space-4);
625
753
  border-radius: var(--radius-md);
626
754
  background: var(--color-surface-overlay);
755
+ backdrop-filter: blur(var(--glass-blur));
756
+ -webkit-backdrop-filter: blur(var(--glass-blur));
627
757
  border: 1px solid var(--color-border-strong);
628
758
  box-shadow: var(--shadow-2);
629
759
  animation: msc-pop var(--dur-med) var(--ease);
@@ -739,23 +869,31 @@
739
869
  }
740
870
  .msc-sidebar {
741
871
  position: fixed;
742
- bottom: 0;
872
+ bottom: var(--space-2);
743
873
  top: auto;
744
- left: 0;
745
- right: 0;
874
+ left: var(--space-2);
875
+ right: var(--space-2);
746
876
  height: auto;
877
+ margin-top: 0;
747
878
  flex-direction: row;
748
879
  align-items: center;
749
880
  gap: var(--space-2);
750
- border-right: none;
751
- border-top: 1px solid var(--color-border);
881
+ border-radius: var(--radius-lg);
752
882
  padding: var(--space-2);
753
883
  z-index: 50;
754
884
  overflow-x: auto;
755
885
  }
756
886
  .msc-sidebar__brand,
757
887
  .msc-sidebar__foot,
758
- .msc-sidebar__sep {
888
+ .msc-sidebar__sep,
889
+ .msc-sidebar__label,
890
+ .msc-sidebar__recent {
891
+ display: none;
892
+ }
893
+ .msc-topbar {
894
+ grid-template-columns: auto minmax(0, 1fr) auto;
895
+ }
896
+ .msc-topbar__crumb {
759
897
  display: none;
760
898
  }
761
899
  .msc-sidebar__nav {
@@ -22,7 +22,13 @@ body {
22
22
  font-size: var(--text-md);
23
23
  line-height: var(--leading-normal);
24
24
  color: var(--color-text);
25
- background: var(--color-bg);
25
+ /* The artwork is the light source: an ambient wash sits behind everything,
26
+ fixed so the whole surface feels lit from one direction as content scrolls. */
27
+ background-color: var(--color-bg);
28
+ background-image: var(--ambient);
29
+ background-repeat: no-repeat;
30
+ background-attachment: fixed;
31
+ background-size: cover;
26
32
  -webkit-font-smoothing: antialiased;
27
33
  text-rendering: optimizeLegibility;
28
34
  min-height: 100vh;