54639d466a
The SvelteKit app under /frontend has fully superseded the legacy
vanilla-JS/CSS frontend in /static, which was only ever served by a
debug `cargo run` / `PROFILE=dev` and never shipped to production.
Remove it together with the whole subsystem that existed only to
support it (~54k lines).
Frontend & assets:
- Delete /static (js/, css/, *.html, sw.js, basemaps/, locales symlink).
- Relocate the brand/PWA assets (logo/, favicon.ico, manifest.webmanifest)
to frontend/static/ so they ship with the SPA. This also fixes the
favicon, which app.html referenced but was missing from the prod bundle.
- Migrate the Nextcloud login-flow redirects from /nextcloud-error.html
to the SvelteKit /nextcloud/error route.
Web layer:
- Simplify resolve_static_path: drop the PROFILE=dev branch; always prefer
the Vite static-dist/ build, fall back to the configured path.
- Resolve i18n locales from the served SPA dir with a frontend/static
fallback so `just dev` works without a prior build.
Build:
- Prune build.rs from 1262 to ~70 lines (git metadata only); the Rust asset
pipeline and the OXICLOUD_RUST_ASSETS rollback flag are gone.
- Drop the now-unused build-dependencies (oxc_*, lightningcss).
- Remove the COPY static lines from the Dockerfile (cacher + builder).
Tooling & docs:
- Delete biome.json, jsconfig.json, tools/check-*.py, identifier.sh.
- Remove the legacy front-* justfile recipes; repoint the design-system
scripts (locales, dead-tokens, brand-drift, token-docs) at the frontend,
and drop check-contrast/check-headings (coupled to the old token
taxonomy / multi-page HTML).
- Repoint docs/DESIGN-SYSTEM.md links; remove 5 superseded docs/plan/*.
Backend dead code:
- Remove the dead `folder_repo` field from FileBlobWriteRepository.
- Remove the deprecated GET /api/folders/{id}/listing endpoint
(superseded by /resources).
Verified: cargo clippy (all-features/all-targets) clean, cargo test
--workspace 448 passed, cargo fmt clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
23 KiB
23 KiB
Design tokens
Auto-generated from
frontend/src/lib/styles/base/variables.cssbyscripts/gen-token-docs.mjs. Do not edit by hand — re-run the generator after changing tokens.
447 tokens across 21 groups.
Spacing (4px grid)
| Token | Value |
|---|---|
--space-0 |
0 |
--space-px |
1px |
--space-0-5 |
2px |
--space-1 |
4px |
--space-1-5 |
6px |
--space-2 |
8px |
--space-2-5 |
10px |
--space-3 |
12px |
--space-3-5 |
14px |
--space-4 |
16px |
--space-5 |
20px |
--space-6 |
24px |
--space-7 |
28px |
--space-8 |
32px |
--space-9 |
36px |
--space-10 |
40px |
--space-11 |
44px |
--space-12 |
48px |
--space-14 |
56px |
--space-16 |
64px |
--space-20 |
80px |
--space-24 |
96px |
Radius
| Token | Value |
|---|---|
--radius-none |
0 |
--radius-xs |
2px |
--radius-sm |
4px |
--radius-md |
6px |
--radius-lg |
8px |
--radius-xl |
10px |
--radius-2xl |
12px |
--radius-3xl |
16px |
--radius-4xl |
20px |
--radius-full |
9999px |
--radius |
var(--radius-2xl) |
Typography
| Token | Value |
|---|---|
--font-sans |
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif |
--font-mono |
ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace |
--text-2xs |
0.6875rem |
--text-xs |
0.75rem |
--text-sm |
0.8125rem |
--text-base |
0.875rem |
--text-md |
1rem |
--text-lg |
1.125rem |
--text-xl |
1.25rem |
--text-2xl |
1.5rem |
--text-3xl |
1.75rem |
--text-4xl |
2rem |
--text-5xl |
2.5rem |
--text-6xl |
3rem |
--leading-none |
1 |
--leading-tight |
1.25 |
--leading-snug |
1.375 |
--leading-normal |
1.5 |
--leading-relaxed |
1.625 |
--leading-loose |
1.8 |
--weight-normal |
400 |
--weight-medium |
500 |
--weight-semibold |
600 |
--weight-bold |
700 |
--weight-extrabold |
800 |
--tracking-tighter |
-0.02em |
--tracking-tight |
-0.01em |
--tracking-normal |
0 |
--tracking-wide |
0.02em |
--tracking-wider |
0.04em |
--tracking-widest |
0.08em |
--measure-prose |
65ch |
--icon-xs |
12px |
--icon-sm |
14px |
--icon-md |
16px |
--icon-lg |
20px |
--icon-xl |
24px |
Z-index layers
| Token | Value |
|---|---|
--z-below |
-1 |
--z-base |
0 |
--z-raised |
10 |
--z-sticky |
100 |
--z-dropdown |
1000 |
--z-overlay |
2000 |
--z-drawer |
2500 |
--z-modal |
3000 |
--z-popover |
3500 |
--z-toast |
4000 |
--z-tooltip |
5000 |
--z-notification |
6000 |
--z-max |
9999 |
Motion (durations + easing)
| Token | Value |
|---|---|
--motion-instant |
0ms |
--motion-fast |
120ms |
--motion-base |
160ms |
--motion-moderate |
200ms |
--motion-slow |
300ms |
--motion-slower |
500ms |
--motion-spinner |
1s |
--spin-duration |
var(--motion-spinner) |
--ease-standard |
cubic-bezier(0.2, 0, 0, 1) |
--ease-emphasized |
cubic-bezier(0.3, 0, 0, 1) |
--ease-in |
cubic-bezier(0.4, 0, 1, 1) |
--ease-out |
cubic-bezier(0, 0, 0.2, 1) |
--ease-in-out |
cubic-bezier(0.4, 0, 0.2, 1) |
Elevation (composed shadows)
| Token | Value |
|---|---|
--shadow-xs |
0 1px 2px var(--color-shadow-xs) |
--shadow-sm |
0 1px 3px var(--color-shadow-sm), 0 1px 2px var(--color-shadow-xs) |
--shadow-md |
0 4px 6px var(--color-shadow-sm), 0 2px 4px var(--color-shadow-xs) |
--shadow-lg |
0 10px 15px var(--color-shadow-md), 0 4px 6px var(--color-shadow-sm) |
--shadow-xl |
0 20px 25px var(--color-shadow-md), 0 8px 10px var(--color-shadow-sm) |
--shadow-2xl |
0 25px 50px var(--color-shadow-lg) |
Breakpoints (reference)
| Token | Value |
|---|---|
--bp-xs |
480px |
--bp-sm |
640px |
--bp-md |
768px |
--bp-lg |
1024px |
--bp-xl |
1280px |
Density
| Token | Value |
|---|---|
--density-row-py |
var(--space-3) |
--density-row-px |
var(--space-3-5) |
--density-gap |
var(--space-3) |
--density-control-h |
40px |
Layout shell
| Token | Value |
|---|---|
--sidebar-width |
clamp(220px, 18vw, 280px) |
--sidebar-width-min |
200px |
--sidebar-width-max |
320px |
--sidebar-width-collapsed |
72px |
--gutter |
var(--space-6) |
--grid-card-min |
200px |
Color — text
| Token | Value |
|---|---|
--color-text |
light-dark(#2d3748, #e2e8f0) |
--color-text-heading |
light-dark(#1e293b, #f1f5f9) |
--color-text-secondary |
light-dark(#475569, #cbd5e1) |
--color-text-muted |
light-dark(#586472, #b2c0d0) |
--color-text-subtle |
light-dark(#5e6a78, #a6b4c6) |
--color-text-faint |
light-dark(#647082, #9fadbe) |
--color-text-dark |
var(--color-text-secondary) |
--color-text-dim |
var(--color-text-secondary) |
--color-text-black |
var(--color-text) |
--color-text-gray |
var(--color-text-muted) |
--color-text-medium |
var(--color-text-muted) |
--color-text-faint2 |
var(--color-text-faint) |
--color-text-light |
var(--color-on-accent) |
--color-text-placeholder |
var(--color-text-faint) |
--color-text-navy |
#1a1a2e |
Color — background
| Token | Value |
|---|---|
--color-bg-page |
light-dark(#f5f7fa, #0f172a) |
--color-bg-surface |
light-dark(#ffffff, #1e293b) |
--color-bg-input |
light-dark(#f9fafb, #0f172a) |
--color-bg-hover |
light-dark(#f8fafc, #334155) |
--color-bg-muted |
light-dark(#f0f3f7, #1a2540) |
--color-bg-subtle |
light-dark(#f8f9fa, #162032) |
--color-bg-alt |
light-dark(#f7fafc, #0f172a) |
--color-bg-input-alt |
light-dark(#edf2f7, #253045) |
--color-bg-empty |
light-dark(#f0f0f0, #253045) |
--color-bg-off-white |
#fafbfd |
Color — border
| Token | Value |
|---|---|
--color-border |
light-dark(#e2e8f0, #334155) |
--color-border-light |
light-dark(#f1f5f9, #334155) |
--color-border-medium |
light-dark(#cbd5e0, #475569) |
--color-border-faint |
light-dark(#e0e6ed, #2a3650) |
--color-border-subtle |
light-dark(#e0e5e8, #2a3650) |
--color-border-xfaint |
light-dark(#f0f0f0, #1e293b) |
--color-border-ddd |
light-dark(#ddd, #334155) |
--color-border-dark-faint |
rgba(255, 255, 255, 0.03) |
Color — accent / brand
| Token | Value |
|---|---|
--color-accent |
#ff5e3a |
--color-accent-hover |
light-dark(#e04520, #ff7a5c) |
--color-accent-text |
light-dark(#cc3a16, #ff8a5c) |
--color-on-accent |
#ffffff |
--color-focus-ring |
#ff5e3a |
--color-logo-gradient |
linear-gradient(135deg, #ff5e3a 0%, #ff8a5c 100%) |
--color-accent-gradient |
linear-gradient(135deg, #ff5e3a 0%, #ff2d55 100%) |
--color-accent-shadow |
rgba(255, 94, 58, 0.3) |
--color-accent-ring |
light-dark(rgba(255, 94, 58, 0.1), rgba(255, 94, 58, 0.15)) |
--color-accent-tint |
light-dark(#fff5f3, #2a1a15) |
--color-accent-mid |
#ff8a5c |
--color-accent-shadow-lg |
rgba(255, 94, 58, 0.4) |
--color-accent-bg |
rgba(255, 94, 58, 0.06) |
--color-accent-bg-sm |
rgba(255, 94, 58, 0.08) |
--color-accent-ring-dark |
rgba(255, 94, 58, 0.15) |
--color-accent-ring-strong |
rgba(255, 94, 58, 0.2) |
--color-accent-ring-xl |
rgba(255, 94, 58, 0.4) |
--color-accent-ring-xs |
rgba(255, 94, 58, 0.05) |
--color-accent-glow |
rgba(255, 94, 58, 0.2) |
--color-accent-glow-soft |
rgba(255, 94, 58, 0.1) |
--color-primary |
var(--color-accent) |
--color-primary-hover |
var(--color-accent-hover) |
--color-accent-second |
#ff2d55 |
--color-accent-shadow-sm |
rgba(255, 94, 58, 0.25) |
Color — semantic (success/warn/danger/info)
| Token | Value |
|---|---|
--color-error-bg |
light-dark(#fee2e2, #3b1111) |
--color-error-text |
light-dark(#b91c1c, #fca5a5) |
--color-success-bg |
light-dark(#dcfce7, #052e16) |
--color-success-text |
light-dark(#15803d, #86efac) |
--color-success-border |
#16a34a |
--color-success-alt |
#16a34a |
--color-success-bg-alt |
var(--color-success-bg) |
--color-success-text-alt |
var(--color-success-text) |
--color-success-bg-green |
var(--color-success-bg) |
--color-success-text-green |
var(--color-success-text) |
--color-danger-bg |
#ef4444 |
--color-danger-text |
#ffffff |
--color-danger-bg-hover |
#dc2626 |
--color-danger-alt |
#ef4444 |
--color-danger-ring |
rgba(239, 68, 68, 0.3) |
--color-danger-ring-lg |
rgba(239, 68, 68, 0.4) |
--color-danger-light-bg |
light-dark(#fef2f2, #2a0c0c) |
--color-danger-lighter |
light-dark(#fef2f2, #2a0c0c) |
--color-danger-text-alt |
var(--color-error-text) |
--color-danger-gradient |
linear-gradient(135deg, #ef4444 0%, #dc2626 100%) |
--color-warning-bg |
light-dark(#fef3c7, #2a2410) |
--color-warning-text |
light-dark(#b45309, #fbbf24) |
--color-warning-border |
#f59e0b |
--color-warning-bg-dark |
light-dark(#fde68a, #3d2e00) |
--color-warning-ring |
rgba(245, 158, 11, 0.12) |
--color-warning-shadow |
rgba(245, 158, 11, 0.4) |
--color-warning-orange-bg |
var(--color-warning-bg) |
--color-warning-orange-border |
var(--color-warning-border) |
--color-warning-orange-text |
var(--color-warning-text) |
--color-warning-bg-light |
var(--color-warning-bg) |
--color-warning-text-amber |
var(--color-warning-text) |
--color-warning-bg-orange |
var(--color-warning-bg) |
--color-warning-text-orange |
var(--color-warning-text) |
--color-info-bg |
light-dark(#eff6ff, #0c2d48) |
--color-info-text |
light-dark(#1d4ed8, #93c5fd) |
--color-info-border |
#3b82f6 |
--color-info-blue |
#3b82f6 |
--color-info-bg-alt |
var(--color-info-bg) |
--color-info-text-alt |
var(--color-info-text) |
--color-info-surface |
var(--color-info-bg) |
--color-danger-hover-bg |
rgba(239, 68, 68, 0.1) |
--color-success-ring |
rgba(72, 187, 120, 0.1) |
--color-success-ring-dark |
rgba(72, 187, 120, 0.15) |
--color-success-text-strong |
#2f855a |
--color-success-ring-vivid |
rgba(74, 222, 128, 0.1) |
--color-success-text-vivid |
#86efac |
--color-success-ring-vivid-lg |
rgba(74, 222, 128, 0.15) |
--color-success-icon-vivid |
#4ade80 |
--color-info-border-light |
#90cdf4 |
--color-warning-ring-xs |
rgba(255, 193, 7, 0.05) |
--color-warning-bg-faint |
#fffbeb |
--color-error-text-dark |
light-dark(#991b1b, #f87171) |
--color-danger-shadow |
rgba(220, 38, 38, 0.2) |
--color-danger-shadow-lg |
rgba(220, 38, 38, 0.3) |
Color — shadow alphas / overlays
| Token | Value |
|---|---|
--color-shadow |
light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.3)) |
--color-shadow-lg |
light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.38)) |
--color-shadow-xs |
rgba(0, 0, 0, 0.05) |
--color-shadow-sm |
rgba(0, 0, 0, 0.08) |
--color-shadow-md |
light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.34)) |
--color-shadow-xl |
rgba(0, 0, 0, 0.2) |
--color-shadow-2xl |
rgba(0, 0, 0, 0.25) |
--color-shadow-3xl |
rgba(0, 0, 0, 0.3) |
--color-shadow-4xl |
rgba(0, 0, 0, 0.4) |
--color-overlay |
rgba(0, 0, 0, 0.5) |
--color-overlay-light |
rgba(0, 0, 0, 0.45) |
--color-overlay-heavy |
rgba(0, 0, 0, 0.85) |
--color-overlay-darkest |
rgba(0, 0, 0, 0.92) |
--color-overlay-shadow |
rgba(0, 0, 0, 0.6) |
--color-on-overlay |
rgba(255, 255, 255, 0.95) |
--color-on-overlay-muted |
rgba(255, 255, 255, 0.9) |
--color-overlay-button |
rgba(255, 255, 255, 0.12) |
--color-overlay-button-hover |
rgba(255, 255, 255, 0.22) |
--color-overlay-mid |
rgba(0, 0, 0, 0.6) |
--color-overlay-video |
rgba(0, 0, 0, 0.55) |
Color — sidebar
| Token | Value |
|---|---|
--color-sidebar-bg-from |
light-dark(#2a3042, #0f172a) |
--color-sidebar-bg-to |
light-dark(#232838, #0c1322) |
--color-sidebar-text |
rgba(255, 255, 255, 0.65) |
--color-sidebar-text-hover |
rgba(255, 255, 255, 0.9) |
--color-sidebar-text-active |
#ffffff |
--color-sidebar-active-bg |
rgba(255, 94, 58, 0.12) |
--color-sidebar-hover-bg |
rgba(255, 255, 255, 0.06) |
--color-sidebar-separator |
rgba(255, 255, 255, 0.07) |
--color-sidebar-overlay |
rgba(0, 0, 0, 0.5) |
--color-sidebar-storage-bg |
rgba(255, 255, 255, 0.05) |
--color-sidebar-storage-border |
rgba(255, 255, 255, 0.07) |
--color-sidebar-storage-text |
rgba(255, 255, 255, 0.8) |
--color-sidebar-storage-bar |
rgba(255, 255, 255, 0.1) |
--color-sidebar-storage-faint |
rgba(255, 255, 255, 0.5) |
--color-sidebar-logo-gradient |
linear-gradient(135deg, #ff5e3a 0%, #ff8a5c 100%) |
--color-sidebar-progress |
linear-gradient(90deg, #ff5e3a 0%, #ff8a5c 100%) |
--color-sidebar-shadow |
rgba(255, 94, 58, 0.35) |
--color-sidebar-shadow-lg |
rgba(255, 94, 58, 0.45) |
Color — file types
| Token | Value |
|---|---|
--color-ft-html |
#e34c26 |
--color-ft-js |
#2965f1 |
--color-ft-python |
#3776ab |
--color-ft-typescript |
#3178c6 |
--color-ft-rust |
#dea584 |
--color-ft-go |
#00add8 |
--color-ft-java |
#e76f00 |
--color-ft-shell |
#555555 |
--color-ft-csharp |
#68217a |
--color-ft-php |
#8892be |
--color-ft-ruby |
#cc342d |
--color-ft-swift |
#fa7343 |
--color-ft-kotlin |
#7f52ff |
--color-ft-scala |
#e38c00 |
--color-ft-angular |
#cb171e |
--color-ft-cpp |
#9c4221 |
--color-ft-docker |
#083fa1 |
--color-ft-generic-blue |
#556ee6 |
--color-ft-generic-green |
#4eaa25 |
--color-ft-generic-gray |
#a0aec0 |
--color-ft-orange-light |
#ffb86c |
--color-ft-yellow |
#ffd43b |
--color-ft-orange-alt |
#e34c26 |
--color-ft-coffeescript |
#9c4221 |
--color-ft-folder-bg |
#ffeaa7 |
--color-ft-folder-tab |
#fdcb6e |
--color-ft-doc-bg |
#e0ecff |
--color-ft-doc-text |
#3171d8 |
--color-ft-pdf-bg |
#fee2e2 |
--color-ft-pdf-text |
#e53e3e |
--color-ft-image-bg |
#e0f2fe |
--color-ft-image-text |
#3b82f6 |
--color-ft-video-bg-from |
#ede9fe |
--color-ft-video-bg-to |
#fce7f3 |
--color-ft-video-text |
#8b5cf6 |
--color-ft-audio-bg |
#fef3c7 |
--color-ft-audio-text |
#f59e0b |
--color-ft-audio-alt-bg |
#fff3e0 |
--color-ft-spreadsheet-bg |
#e6f4ea |
--color-ft-spreadsheet-text |
#0d904f |
--color-ft-presentation-bg |
#fef3e2 |
--color-ft-presentation-text |
#d04423 |
--color-ft-archive-bg |
#f5f0eb |
--color-ft-archive-text |
#8d6e63 |
--color-ft-installer-bg |
#f3e8ff |
--color-ft-installer-text |
#7c3aed |
--color-ft-script-bg |
#e8f5e9 |
--color-ft-script-text |
#4eaa25 |
--color-ft-config-bg |
#f1f3f5 |
--color-ft-config-text |
#718096 |
Color — calendar dots
| Token | Value |
|---|---|
--color-cal-1 |
#d36868 |
--color-cal-2 |
#d3a268 |
--color-cal-3 |
#c9d368 |
--color-cal-4 |
#8fd368 |
--color-cal-5 |
#68d37c |
--color-cal-6 |
#68d3b6 |
--color-cal-7 |
#68b6d3 |
--color-cal-8 |
#687cd3 |
--color-cal-9 |
#8f68d3 |
--color-cal-10 |
#c968d3 |
--color-cal-11 |
#d368a2 |
Color — badges
| Token | Value |
|---|---|
--color-badge-success-bg |
#ecfdf5 |
--color-badge-success-bg-medium |
#d1fae5 |
--color-badge-success-text |
#065f46 |
--color-badge-success-border |
#a7f3d0 |
--color-badge-success-fill |
#047857 |
--color-badge-success-fill-dark |
#064e27 |
--color-badge-success-fill-faint |
#f0fdf4 |
--color-badge-green-bg |
#ecfdf5 |
--color-badge-green-text |
#065f46 |
--color-badge-orange-bg |
light-dark(#fff5f3, #2a1814) |
--color-badge-orange-text |
light-dark(#ff5e3a, #ff8a65) |
--color-badge-error-border |
#fecaca |
--color-badge-warning-text |
#92400e |
--color-badge-warning-border |
#fde68a |
--color-badge-amber-bg |
#fef3c7 |
--color-badge-amber-text |
#f59e0b |
--color-badge-indigo-bg |
#ede9fe |
--color-badge-indigo-text |
#6d28d9 |
--color-badge-blue-bg |
light-dark(#eff6ff, #0c2d48) |
--color-badge-blue-text |
light-dark(#1e40af, #93c5fd) |
--color-badge-blue-border |
#bfdbfe |
--color-badge-gray |
#d1d5db |
Color — other
| Token | Value |
|---|---|
--color-scrim-control |
light-dark(rgba(255, 255, 255, 0.92), rgba(15, 23, 42, 0.82)) |
--color-item |
var(--color-bg-surface) |
--color-item-hover |
var(--color-bg-hover) |
--color-item-active |
light-dark(#f8d2ae, #5a5047) |
--color-item-selected |
light-dark(#fff8f6, #39281a) |
--color-item-hover-accent |
light-dark(#fff0ec, #3d342c) |
--color-item-hover-blue |
light-dark(#f0f8ff, #18293f) |
--color-item-hover-sky |
light-dark(#e0f2fe, #103048) |
--color-multiselect-bg |
#1e293b |
--color-multiselect-border |
#334155 |
--color-multiselect-text |
#ffffff |
--color-multiselect-text-faint |
rgba(255, 255, 255, 0.7) |
--color-multiselect-hover-bg |
rgba(255, 255, 255, 0.1) |
--color-multiselect-action-text |
#ffffff |
--color-multiselect-action-hover |
rgba(255, 255, 255, 0.2) |
--color-multiselect-danger-bg |
rgba(239, 68, 68, 0.25) |
--color-multiselect-danger-text |
#fca5a5 |
--color-multiselect-danger-active |
rgba(239, 68, 68, 0.4) |
--color-multiselect-danger-text-active |
#ffffff |
--color-notification-bg |
light-dark(#ffffff, #1e293b) |
--color-notification-badge |
#ff3b30 |
--color-notification-success |
#34c759 |
--color-notification-error |
#ff3b30 |
--color-lightbox-overlay |
rgba(0, 0, 0, 0.92) |
--color-lightbox-btn-bg |
rgba(255, 255, 255, 0.12) |
--color-lightbox-btn-text |
#ffffff |
--color-lightbox-btn-hover |
rgba(255, 255, 255, 0.25) |
--color-lightbox-gradient-top |
linear-gradient(to bottom, rgba(0, 0, 0, 0.6), transparent) |
--color-lightbox-gradient-bottom |
linear-gradient(to top, rgba(0, 0, 0, 0.6), transparent) |
--color-lightbox-text-faint |
rgba(255, 255, 255, 0.5) |
--color-lightbox-text-muted |
rgba(255, 255, 255, 0.7) |
--color-oidc-bg |
var(--color-info-blue) |
--color-oidc-shadow |
rgba(79, 70, 229, 0.3) |
--color-oidc-shadow-lg |
rgba(79, 70, 229, 0.4) |
--color-device-verify-text |
#ffc107 |
--color-device-verify-shadow |
rgba(255, 193, 7, 0.5) |
--color-device-verify-drop-shadow |
rgba(255, 193, 7, 0.4) |
--color-device-verify-border |
#ffc107 |
--color-device-verify-muted |
#6c757d |
--color-device-verify-dim |
#ccc |
--color-content-muted |
#888 |
--color-content-bg-warn |
light-dark(#ffeaa7, #3d2e00) |
--color-content-bg-warn-dark |
light-dark(#fdcb6e, #5a4200) |
--color-user-menu-header-bg |
light-dark(linear-gradient(135deg, #fef5f3 0%, #fdf2f8 100%), linear-gradient(135deg, #1a2332 0%, #1e2940 100%)) |
--color-user-menu-header-border |
light-dark(#fce7e1, #3a2520) |
--color-share-link-text |
var(--color-info-text) |
--color-share-link-hover |
var(--color-info-text) |
--color-share-remove-text |
#b71c1c |
--color-share-owner-text |
#757575 |
--color-recent-muted |
#6c757d |
--color-recent-border |
#6c757d |
--color-star-text |
#fbbf24 |
--color-star-text-hover |
#f59e0b |
--color-star-active |
#d97706 |
--color-card-drop-tint |
rgba(230, 126, 34, 0.08) |
--color-card-drop-border |
#e67e22 |
--color-neutral-warm-bg |
#f5f0eb |
--color-neutral-warm-text |
#8d6e63 |
--color-neutral-bg |
#f1f3f5 |
--color-admin-blue |
#60a5fa |
--color-admin-blue-bg |
rgba(59, 130, 246, 0.1) |
--color-admin-blue-bg-sm |
rgba(59, 130, 246, 0.15) |
--color-secret-green |
#059669 |
--color-progress-overlay |
rgba(255, 255, 255, 0.95) |
--color-progress-overlay-dark |
rgba(30, 41, 59, 0.95) |
--color-black |
#000000 |
--color-notification-error-ring |
rgba(255, 59, 48, 0.1) |
--color-avatar-gradient |
linear-gradient(135deg, #3b82f6, #6366f1) |
--color-role-admin-bg |
#dbeafe |
--color-role-admin-text |
#1d4ed8 |
--color-dark-mid |
#475569 |
--color-role-admin-dark-bg |
#1e3a5f |
--color-photo-check-border |
rgba(255, 255, 255, 0.8) |
--color-storage-fill-green |
linear-gradient(90deg, #059669, #10b981) |
--color-storage-fill-orange |
linear-gradient(90deg, #d97706, #f59e0b) |
--color-storage-fill-red |
linear-gradient(90deg, #dc2626, #ef4444) |
--color-stat-warn-border |
#fbbf24 |
--color-dark-footer |
#162032 |
--color-scrollbar-dark |
rgba(255, 255, 255, 0.15) |
--color-music-gradient |
linear-gradient(135deg, #667eea 0%, #764ba2 100%) |
--color-music-background |
var(--color-bg-surface) |
--color-music-public-bg |
rgba(74, 144, 217, 0.12) |
--color-video-play |
#ffffff |
--color-video-play-shadow |
#000000 |
Other
| Token | Value |
|---|---|
--brand-ambient |
radial-gradient(55% 50% at 8% 4%, var(--color-accent-glow), transparent 60%), radial-gradient(55% 55% at 95% 98%, var(--color-accent-glow), transparent 58%), radial-gradient(48% 48% at 88% 12%, var(--color-accent-glow-soft), transparent 55%), radial-gradient(50% 45% at 6% 92%, var(--color-accent-glow-soft), transparent 55%), radial-gradient(78% 64% at 50% 33%, var(--color-bg-surface), transparent 70%), var(--color-bg-page) |
--brand-grain |
url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='180' height='180' filter='url(%23g)'/></svg>") |
--file-kind-folder |
light-dark(#3b82f6, #60a5fa) |
--file-kind-pdf |
light-dark(#ef4444, #f87171) |
--file-kind-doc |
light-dark(#2563eb, #60a5fa) |
--file-kind-sheet |
light-dark(#16a34a, #4ade80) |
--file-kind-slides |
light-dark(#ea580c, #fb923c) |
--file-kind-archive |
light-dark(#d97706, #fbbf24) |
--file-kind-code |
light-dark(#7c3aed, #a78bfa) |
--file-kind-image |
light-dark(#0891b2, #22d3ee) |
--file-kind-video |
light-dark(#c026d3, #e879f9) |
--file-kind-audio |
light-dark(#db2777, #f472b6) |
--file-kind-text |
light-dark(#475569, #94a3b8) |
--file-kind-generic |
light-dark(#64748b, #94a3b8) |